mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2025-02-03 22:31:42 +00:00
convert more files to typescript
This commit is contained in:
parent
a66c889412
commit
1c9817d155
28
index.html
28
index.html
@ -211,14 +211,6 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
|
||||
<script src="codemirror/addon/selection/active-line.js"></script>
|
||||
<link rel="stylesheet" href="codemirror/addon/dialog/dialog.css">
|
||||
|
||||
<script>
|
||||
var exports = {};
|
||||
function require(modname) {
|
||||
if (modname == 'jquery') return $;
|
||||
else console.log("Unknown require()", modname);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="javatari.js/release/javatari/javatari.js"></script>
|
||||
<script src="src/cpu/z80fast.js"></script>
|
||||
<!--<script src="src/cpu/6809.js"></script>-->
|
||||
@ -226,10 +218,6 @@ function require(modname) {
|
||||
<script src="jsnes/build/jsnes.min.js"></script>
|
||||
<script src="jsnes/lib/dynamicaudio-min.js" type="text/javascript" charset="utf-8"></script>
|
||||
-->
|
||||
<script src="tss/js/tss/PsgDeviceChannel.js"></script>
|
||||
<script src="tss/js/tss/MasterChannel.js"></script>
|
||||
<script src="tss/js/tss/AudioLooper.js"></script>
|
||||
<script src="tss/js/Log.js"></script>
|
||||
<!--
|
||||
<script src="local/williams/defender.js"></script>
|
||||
<script src="local/williams/robotron.js"></script>
|
||||
@ -240,6 +228,20 @@ function require(modname) {
|
||||
<script src="gif.js/dist/gif.js"></script>
|
||||
<script src="localForage/dist/localforage.nopromises.js"></script>
|
||||
|
||||
<script>
|
||||
var exports = {};
|
||||
function require(modname) {
|
||||
if (modname == 'jquery') return $;
|
||||
else if (modname.startsWith('.')) return exports;
|
||||
else { console.log("Unknown require()", modname); return exports; }
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="tss/js/tss/PsgDeviceChannel.js"></script>
|
||||
<script src="tss/js/tss/MasterChannel.js"></script>
|
||||
<script src="tss/js/tss/AudioLooper.js"></script>
|
||||
<script src="tss/js/Log.js"></script>
|
||||
|
||||
<script src="src/store.js"></script>
|
||||
<script src="src/vlist.js"></script>
|
||||
<script src="src/emu.js"></script>
|
||||
@ -249,7 +251,7 @@ function require(modname) {
|
||||
<script src="gen/project.js"></script>
|
||||
<script src="gen/windows.js"></script>
|
||||
<script src="gen/views.js"></script>
|
||||
<script src="src/ui.js"></script>
|
||||
<script src="gen/ui.js"></script>
|
||||
<!-- <script src="src/audio/votrax.js"></script> -->
|
||||
|
||||
<script>
|
||||
|
421
package-lock.json
generated
421
package-lock.json
generated
@ -4,18 +4,76 @@
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/bootstrap": {
|
||||
"version": "3.3.39",
|
||||
"resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-3.3.39.tgz",
|
||||
"integrity": "sha512-UGvzSQFkv0Oh2vjj30AfZructi7XvY0aRa1Y/vrgFq+tfrTMxtqQ9+s5liCYLJnrISc9LinEtOY5N8Ibrhj2Tg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/jquery": "2.0.49"
|
||||
}
|
||||
},
|
||||
"@types/jquery": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.4.tgz",
|
||||
"integrity": "sha512-KqgLNDh8oTl43/2B78S7tjwPnOxPtP9wQsLptbuQCmMwqH5QuPZOk36RsNgbs3mnq/3SCyG1l/GJmhKk5Dg68g==",
|
||||
"version": "2.0.49",
|
||||
"resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.49.tgz",
|
||||
"integrity": "sha512-/9xLnYmohN/vD2gDnLS4cym8TUmrJu7DvZa/LELKzZjdPsvWVJiedsdu2SXNtb/DA7FGimqL2g0IoyhbNKLl8g==",
|
||||
"dev": true
|
||||
},
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"adm-zip": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.2.1.tgz",
|
||||
"integrity": "sha1-6AHO3rW9mk6Y1pnFwPQjnicx3L8=",
|
||||
"dev": true
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.1.11",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
|
||||
"integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
|
||||
"integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"async": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
|
||||
"integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"boom": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz",
|
||||
"integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"hoek": "0.9.1"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@ -32,6 +90,16 @@
|
||||
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
|
||||
"dev": true
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
|
||||
"integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"delayed-stream": "0.0.5"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
@ -47,6 +115,41 @@
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"config-chain": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz",
|
||||
"integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ini": "1.3.5",
|
||||
"proto-list": "1.2.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz",
|
||||
"integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"boom": "0.4.2"
|
||||
}
|
||||
},
|
||||
"ctype": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
|
||||
"integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.8",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
|
||||
@ -56,6 +159,13 @@
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
|
||||
"integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"diff": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
|
||||
@ -68,6 +178,24 @@
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz",
|
||||
"integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=",
|
||||
"dev": true
|
||||
},
|
||||
"form-data": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz",
|
||||
"integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"async": "0.9.2",
|
||||
"combined-stream": "0.0.7",
|
||||
"mime": "1.2.11"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
@ -106,12 +234,43 @@
|
||||
"integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
|
||||
"dev": true
|
||||
},
|
||||
"hawk": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz",
|
||||
"integrity": "sha1-uQuxaYByhUEdp//LjdJZhQLTtS0=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"boom": "0.4.2",
|
||||
"cryptiles": "0.2.2",
|
||||
"hoek": "0.9.1",
|
||||
"sntp": "0.2.4"
|
||||
}
|
||||
},
|
||||
"he": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
|
||||
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
|
||||
"dev": true
|
||||
},
|
||||
"hoek": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz",
|
||||
"integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=",
|
||||
"dev": true
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "0.10.1",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
|
||||
"integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"asn1": "0.1.11",
|
||||
"assert-plus": "0.1.5",
|
||||
"ctype": "0.5.3"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
@ -128,12 +287,30 @@
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz",
|
||||
"integrity": "sha1-ToCMLOFExsF4iRjgNNZ5e8bPYoE=",
|
||||
"dev": true
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
|
||||
"dev": true
|
||||
},
|
||||
"json3": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
|
||||
"integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
|
||||
"dev": true
|
||||
},
|
||||
"kew": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/kew/-/kew-0.1.7.tgz",
|
||||
"integrity": "sha1-CjKoF/8amzsSuMm6z0vE1nmvjnI=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash._baseassign": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
|
||||
@ -202,6 +379,12 @@
|
||||
"lodash.isarray": "3.0.4"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.2.11",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
|
||||
"integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
|
||||
"dev": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
@ -246,12 +429,93 @@
|
||||
"supports-color": "3.1.2"
|
||||
}
|
||||
},
|
||||
"mocha-phantomjs": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mocha-phantomjs/-/mocha-phantomjs-4.1.0.tgz",
|
||||
"integrity": "sha1-x14WYS4aavCtjSgeOi/vSdVeUFs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "2.9.0",
|
||||
"mocha-phantomjs-core": "1.3.1",
|
||||
"phantomjs": "1.9.7-15"
|
||||
}
|
||||
},
|
||||
"mocha-phantomjs-core": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/mocha-phantomjs-core/-/mocha-phantomjs-core-1.3.1.tgz",
|
||||
"integrity": "sha1-WGU4yNcfqN6QxBpGrMBIHB+4Phg=",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"ncp": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
|
||||
"integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=",
|
||||
"dev": true
|
||||
},
|
||||
"node-uuid": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
|
||||
"integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
|
||||
"dev": true
|
||||
},
|
||||
"nopt": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz",
|
||||
"integrity": "sha1-KqCbfRdoSHs7ianFqlIzW/8Lrqc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"abbrev": "1.1.1"
|
||||
}
|
||||
},
|
||||
"npmconf": {
|
||||
"version": "0.0.24",
|
||||
"resolved": "https://registry.npmjs.org/npmconf/-/npmconf-0.0.24.tgz",
|
||||
"integrity": "sha1-t4h1sIjMw8Cvo+zrPOMkSxtSOQw=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"config-chain": "1.1.11",
|
||||
"inherits": "1.0.2",
|
||||
"ini": "1.1.0",
|
||||
"mkdirp": "0.3.5",
|
||||
"nopt": "2.2.1",
|
||||
"once": "1.1.1",
|
||||
"osenv": "0.0.3",
|
||||
"semver": "1.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"inherits": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
|
||||
"integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.3.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
|
||||
"integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
|
||||
"dev": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz",
|
||||
"integrity": "sha1-nbV0kzzLCMOnYU0VQDLAnqbzOec=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz",
|
||||
"integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
@ -261,12 +525,127 @@
|
||||
"wrappy": "1.0.2"
|
||||
}
|
||||
},
|
||||
"osenv": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz",
|
||||
"integrity": "sha1-zWrY3bKQkVrZ4idlV2Al1BHynLY=",
|
||||
"dev": true
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
},
|
||||
"phantomjs": {
|
||||
"version": "1.9.7-15",
|
||||
"resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.7-15.tgz",
|
||||
"integrity": "sha1-Czp85jBIaoO+kf9Ogy7uIOlxEVs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"adm-zip": "0.2.1",
|
||||
"kew": "0.1.7",
|
||||
"mkdirp": "0.3.5",
|
||||
"ncp": "0.4.2",
|
||||
"npmconf": "0.0.24",
|
||||
"progress": "1.1.8",
|
||||
"request": "2.36.0",
|
||||
"request-progress": "0.3.1",
|
||||
"rimraf": "2.2.8",
|
||||
"which": "1.0.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": {
|
||||
"version": "0.3.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
|
||||
"integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"progress": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
|
||||
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
|
||||
"dev": true
|
||||
},
|
||||
"proto-list": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
|
||||
"dev": true
|
||||
},
|
||||
"psl": {
|
||||
"version": "1.1.28",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz",
|
||||
"integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "0.6.6",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz",
|
||||
"integrity": "sha1-bgFQmP9RlouKPIGQAdXyyJvEsQc=",
|
||||
"dev": true
|
||||
},
|
||||
"request": {
|
||||
"version": "2.36.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.36.0.tgz",
|
||||
"integrity": "sha1-KMbAQmLHuf/dIbklU3RRfubZQ/U=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aws-sign2": "0.5.0",
|
||||
"forever-agent": "0.5.2",
|
||||
"form-data": "0.1.4",
|
||||
"hawk": "1.0.0",
|
||||
"http-signature": "0.10.1",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"mime": "1.2.11",
|
||||
"node-uuid": "1.4.8",
|
||||
"oauth-sign": "0.3.0",
|
||||
"qs": "0.6.6",
|
||||
"tough-cookie": "2.4.3",
|
||||
"tunnel-agent": "0.4.3"
|
||||
}
|
||||
},
|
||||
"request-progress": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz",
|
||||
"integrity": "sha1-ByHBBdipasayzossia4tXs/Pazo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"throttleit": "0.0.2"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.2.8",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
|
||||
"integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-1.1.4.tgz",
|
||||
"integrity": "sha1-LlpOcrqwNHLMl/cnU7RQiRLvVUA=",
|
||||
"dev": true
|
||||
},
|
||||
"sntp": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz",
|
||||
"integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"hoek": "0.9.1"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
|
||||
@ -276,12 +655,48 @@
|
||||
"has-flag": "1.0.0"
|
||||
}
|
||||
},
|
||||
"throttleit": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
|
||||
"integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
|
||||
"dev": true
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"psl": "1.1.28",
|
||||
"punycode": "1.4.1"
|
||||
}
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
|
||||
"integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true
|
||||
},
|
||||
"wavedrom-cli": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/wavedrom-cli/-/wavedrom-cli-0.5.0.tgz",
|
||||
"integrity": "sha1-h+lb+naRpbaTmPJzL13QycKkiCE=",
|
||||
"dev": true
|
||||
},
|
||||
"which": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
|
||||
"integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
|
||||
"dev": true
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
|
@ -5,7 +5,8 @@
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"typescript": "^2.9.2",
|
||||
"@types/jquery": "^3.3.4",
|
||||
"@types/jquery": "^2.x",
|
||||
"@types/bootstrap": "^3.x",
|
||||
"mocha": "^3.2.0",
|
||||
"mocha-phantomjs": "^4.1.0",
|
||||
"wavedrom-cli": "^0.5.0"
|
||||
|
@ -2,18 +2,68 @@
|
||||
|
||||
// 8bitworkshop IDE user interface
|
||||
|
||||
// make sure VCS doesn't start
|
||||
if (window.Javatari) Javatari.AUTO_START = false;
|
||||
import $ = require("jquery");
|
||||
import * as bootstrap from "bootstrap";
|
||||
import { SourceFile, CodeProject } from "./project";
|
||||
import { ProjectWindows } from "./windows";
|
||||
import * as Views from "./views";
|
||||
|
||||
var PRESETS; // presets array
|
||||
var platform_id; // platform ID string
|
||||
var platform; // platform object
|
||||
// external libs (TODO)
|
||||
declare var Octokat, ga, Tour, GIF, saveAs;
|
||||
declare function createNewPersistentStore(platform_id : string);
|
||||
declare function showLoopTimingForPC(pc:number, sourcefile:SourceFile, wnd:Views.ProjectView);
|
||||
// loaded by platform js file
|
||||
declare var PLATFORMS;
|
||||
|
||||
// make sure VCS doesn't start
|
||||
if (window['Javatari']) window['Javatari'].AUTO_START = false;
|
||||
|
||||
interface Preset {
|
||||
id : string;
|
||||
name : string;
|
||||
chapter? : number;
|
||||
title? : string;
|
||||
}
|
||||
|
||||
interface Platform {
|
||||
start() : void;
|
||||
reset() : void;
|
||||
isRunning() : boolean;
|
||||
getToolForFilename(s:string) : string;
|
||||
getDefaultExtension() : string;
|
||||
getPresets() : Preset[];
|
||||
pause() : void;
|
||||
resume() : void;
|
||||
loadROM(title:string, rom:Uint8Array);
|
||||
|
||||
inspect?(ident:string) : void;
|
||||
disassemble?(addr:number, readfn:(addr:number)=>number) : any; // TODO
|
||||
readAddress?(addr:number) : number;
|
||||
setFrameRate?(fps:number) : void;
|
||||
getFrameRate?() : number;
|
||||
cpuStateToLongString?(state) : string;
|
||||
ramStateToLongString?(state) : string;
|
||||
getRasterPosition() : {x:number, y:number};
|
||||
setupDebug?(debugfn : (state)=>void) : void;
|
||||
clearDebug?() : void;
|
||||
step?() : void;
|
||||
runToVsync?() : void;
|
||||
runToPC?(pc:number) : void;
|
||||
runUntilReturn?() : void;
|
||||
stepBack?() : void;
|
||||
//TODO runEval?(evalfn : (cpustate) => boolean) : void;
|
||||
runEval?(evalfn : Function) : void;
|
||||
}
|
||||
|
||||
var PRESETS : Preset[]; // presets array
|
||||
var platform_id : string; // platform ID string
|
||||
var platform : Platform; // platform object
|
||||
|
||||
var toolbar = $("#controls_top");
|
||||
|
||||
var current_project; // current CodeProject object
|
||||
var current_project : CodeProject; // current CodeProject object
|
||||
|
||||
var projectWindows; // window manager
|
||||
var projectWindows : ProjectWindows; // window manager
|
||||
|
||||
|
||||
// TODO: codemirror multiplex support?
|
||||
@ -33,11 +83,11 @@ function newWorker() {
|
||||
return new Worker("./src/worker/workermain.js");
|
||||
}
|
||||
|
||||
var userPaused; // did user explicitly pause?
|
||||
var userPaused : boolean; // did user explicitly pause?
|
||||
|
||||
var current_output; // current ROM
|
||||
var current_preset_entry; // current preset object (if selected)
|
||||
var main_file_id; // main file ID
|
||||
var current_preset_entry : Preset; // current preset object (if selected)
|
||||
var main_file_id : string; // main file ID
|
||||
var symbolmap; // symbol map
|
||||
var addr2symbol; // address to symbol name map
|
||||
var compparams; // received build params from worker
|
||||
@ -114,7 +164,7 @@ function refreshWindowList() {
|
||||
function loadEditor(path) {
|
||||
var tool = platform.getToolForFilename(path);
|
||||
var mode = tool && TOOL_TO_SOURCE_STYLE[tool];
|
||||
return new SourceEditor(path, mode, current_project.getFile(path));
|
||||
return new Views.SourceEditor(path, mode);
|
||||
}
|
||||
|
||||
// add main file editor
|
||||
@ -135,7 +185,7 @@ function refreshWindowList() {
|
||||
var lst = listings[lstfn];
|
||||
if (lst.assemblyfile) {
|
||||
addWindowItem(lstfn, getFilenameForPath(lstfn), function(path) {
|
||||
return new ListingView(lst.assemblyfile);
|
||||
return new Views.ListingView(lst.assemblyfile);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -145,12 +195,12 @@ function refreshWindowList() {
|
||||
separate = true;
|
||||
if (platform.disassemble) {
|
||||
addWindowItem("#disasm", "Disassembly", function() {
|
||||
return new DisassemblerView();
|
||||
return new Views.DisassemblerView();
|
||||
});
|
||||
}
|
||||
if (platform.readAddress && platform_id != 'vcs') {
|
||||
addWindowItem("#memory", "Memory Browser", function() {
|
||||
return new MemoryView();
|
||||
return new Views.MemoryView();
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -314,17 +364,17 @@ function _downloadSourceFile(e) {
|
||||
function populateExamples(sel) {
|
||||
// make sure to use callback so it follows other sections
|
||||
store.length(function(err, len) {
|
||||
sel.append($("<option />").text("--------- Examples ---------").attr('disabled',true));
|
||||
sel.append($("<option />").text("--------- Examples ---------").attr('disabled','true'));
|
||||
for (var i=0; i<PRESETS.length; i++) {
|
||||
var preset = PRESETS[i];
|
||||
var name = preset.chapter ? (preset.chapter + ". " + preset.name) : preset.name;
|
||||
sel.append($("<option />").val(preset.id).text(name).attr('selected',preset.id==main_file_id));
|
||||
sel.append($("<option />").val(preset.id).text(name).attr('selected',(preset.id==main_file_id)?'selected':null));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function populateFiles(sel, category, prefix) {
|
||||
store.keys(function(err, keys) {
|
||||
store.keys(function(err, keys : string[]) {
|
||||
var foundSelected = false;
|
||||
var numFound = 0;
|
||||
if (!keys) keys = [];
|
||||
@ -332,16 +382,16 @@ function populateFiles(sel, category, prefix) {
|
||||
var key = keys[i];
|
||||
if (key.startsWith(prefix)) {
|
||||
if (numFound++ == 0)
|
||||
sel.append($("<option />").text("------- " + category + " -------").attr('disabled',true));
|
||||
sel.append($("<option />").text("------- " + category + " -------").attr('disabled','true'));
|
||||
var name = key.substring(prefix.length);
|
||||
sel.append($("<option />").val(key).text(name).attr('selected',key==main_file_id));
|
||||
sel.append($("<option />").val(key).text(name).attr('selected',(key==main_file_id)?'selected':null));
|
||||
if (key == main_file_id) foundSelected = true;
|
||||
}
|
||||
}
|
||||
if (!foundSelected && main_file_id && main_file_id.startsWith(prefix)) {
|
||||
var name = main_file_id.slice(prefix.length);
|
||||
var name = main_file_id.substring(prefix.length);
|
||||
var key = prefix + name;
|
||||
sel.append($("<option />").val(key).text(name).attr('selected',true));
|
||||
sel.append($("<option />").val(key).text(name).attr('selected','true'));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -394,7 +444,7 @@ function setCompileOutput(data) {
|
||||
}
|
||||
}
|
||||
|
||||
function showMemory(state) {
|
||||
function showMemory(state?) {
|
||||
var s = state && platform.cpuStateToLongString && platform.cpuStateToLongString(state.c);
|
||||
if (s) {
|
||||
if (platform.getRasterPosition) {
|
||||
@ -418,7 +468,7 @@ function setDebugButtonState(btnid, btnstate) {
|
||||
$("#dbg_"+btnid).addClass("btn_"+btnstate);
|
||||
}
|
||||
|
||||
function setupBreakpoint(btnid) {
|
||||
function setupBreakpoint(btnid? : string) {
|
||||
platform.setupDebug(function(state) {
|
||||
lastDebugState = state;
|
||||
showMemory(state);
|
||||
@ -662,7 +712,7 @@ function setupDebugControls(){
|
||||
else
|
||||
$("#dbg_stepback").hide();
|
||||
|
||||
if (window.showLoopTimingForPC) { // VCS-only (TODO: put in platform)
|
||||
if (window['showLoopTimingForPC']) { // VCS-only (TODO: put in platform)
|
||||
$("#dbg_timing").click(traceTiming).show();
|
||||
}
|
||||
$("#disassembly").hide();
|
||||
@ -747,8 +797,8 @@ function showWelcomeMessage() {
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
var qs = (function (a) {
|
||||
if (!a || a == "")
|
||||
var qs = (function (a : string[]) {
|
||||
if (!a || a.length == 0)
|
||||
return {};
|
||||
var b = {};
|
||||
for (var i = 0; i < a.length; ++i) {
|
||||
@ -782,7 +832,7 @@ function uninstallErrorHandler() {
|
||||
|
||||
function gotoNewLocation() {
|
||||
uninstallErrorHandler();
|
||||
window.location = "?" + $.param(qs);
|
||||
window.location.href = "?" + $.param(qs);
|
||||
}
|
||||
|
||||
function initPlatform() {
|
21
src/views.ts
21
src/views.ts
@ -4,13 +4,16 @@ import $ = require("jquery");
|
||||
import { SourceFile, WorkerError, CodeProject } from "./project";
|
||||
|
||||
export interface ProjectView {
|
||||
createDiv(parent:HTMLElement, text:string);
|
||||
refresh();
|
||||
createDiv(parent:HTMLElement, text:string) : HTMLElement;
|
||||
refresh() : void;
|
||||
tick?() : void;
|
||||
getValue?() : string;
|
||||
getCursorPC?() : number;
|
||||
getSourceFile?() : SourceFile;
|
||||
setGutterBytes?(line:number, s:string);
|
||||
openBitmapEditorAtCursor?();
|
||||
// TODO
|
||||
setGutterBytes?(line:number, s:string) : void;
|
||||
openBitmapEditorAtCursor?() : void;
|
||||
markErrors?(errors:WorkerError[]) : void;
|
||||
clearErrors?() : void;
|
||||
};
|
||||
|
||||
// TODO: move to different namespace
|
||||
@ -39,7 +42,7 @@ function getVisibleEditorLineHeight() : number{
|
||||
|
||||
/////
|
||||
|
||||
class SourceEditor implements ProjectView {
|
||||
export class SourceEditor implements ProjectView {
|
||||
constructor(path:string, mode:string) {
|
||||
this.path = path;
|
||||
this.mode = mode;
|
||||
@ -323,7 +326,7 @@ class SourceEditor implements ProjectView {
|
||||
|
||||
///
|
||||
|
||||
class DisassemblerView implements ProjectView {
|
||||
export class DisassemblerView implements ProjectView {
|
||||
disasmview;
|
||||
|
||||
getDisasmView() { return this.disasmview; }
|
||||
@ -405,7 +408,7 @@ class DisassemblerView implements ProjectView {
|
||||
|
||||
///
|
||||
|
||||
class ListingView extends DisassemblerView implements ProjectView {
|
||||
export class ListingView extends DisassemblerView implements ProjectView {
|
||||
assemblyfile : SourceFile;
|
||||
|
||||
constructor(assemblyfile : SourceFile) {
|
||||
@ -438,7 +441,7 @@ class ListingView extends DisassemblerView implements ProjectView {
|
||||
|
||||
///
|
||||
|
||||
class MemoryView implements ProjectView {
|
||||
export class MemoryView implements ProjectView {
|
||||
memorylist;
|
||||
dumplines;
|
||||
maindiv : HTMLElement;
|
||||
|
@ -6,34 +6,42 @@ import { ProjectView } from "./views";
|
||||
|
||||
type WindowCreateFunction = (id:string) => ProjectView;
|
||||
|
||||
function ProjectWindows(containerdiv:HTMLElement, project:CodeProject) {
|
||||
var self = this;
|
||||
var id2window = {};
|
||||
var id2createfn = {};
|
||||
var id2div = {};
|
||||
var activewnd;
|
||||
var activediv;
|
||||
var lasterrors;
|
||||
export class ProjectWindows {
|
||||
containerdiv:HTMLElement;
|
||||
project:CodeProject;
|
||||
|
||||
id2window : {[id:string]:ProjectView} = {};
|
||||
id2createfn : {[id:string]:WindowCreateFunction} = {};
|
||||
id2div : {[id:string]:HTMLElement} = {};
|
||||
activewnd : ProjectView;
|
||||
activediv : HTMLElement;
|
||||
lasterrors : WorkerError[];
|
||||
|
||||
constructor(containerdiv:HTMLElement, project:CodeProject) {
|
||||
this.containerdiv = containerdiv;
|
||||
this.project = project;
|
||||
}
|
||||
// TODO: delete windows ever?
|
||||
|
||||
this.setCreateFunc = function(id:string, createfn:WindowCreateFunction) {
|
||||
id2createfn[id] = createfn;
|
||||
setCreateFunc(id:string, createfn:WindowCreateFunction) {
|
||||
this.id2createfn[id] = createfn;
|
||||
}
|
||||
|
||||
this.createOrShow = function(id:string) {
|
||||
var wnd = id2window[id];
|
||||
createOrShow(id:string) {
|
||||
var wnd = this.id2window[id];
|
||||
if (!wnd) {
|
||||
wnd = id2window[id] = id2createfn[id](id);
|
||||
wnd = this.id2window[id] = this.id2createfn[id](id);
|
||||
}
|
||||
var div = id2div[id];
|
||||
var div = this.id2div[id];
|
||||
if (!div) {
|
||||
div = id2div[id] = wnd.createDiv(containerdiv, project.getFile(id));
|
||||
var data = this.project.getFile(id)+""; // TODO: binary files
|
||||
div = this.id2div[id] = wnd.createDiv(this.containerdiv, data);
|
||||
}
|
||||
if (activewnd != wnd) {
|
||||
if (activediv)
|
||||
$(activediv).hide();
|
||||
activediv = div;
|
||||
activewnd = wnd;
|
||||
if (this.activewnd != wnd) {
|
||||
if (this.activediv)
|
||||
$(this.activediv).hide();
|
||||
this.activediv = div;
|
||||
this.activewnd = wnd;
|
||||
$(div).show();
|
||||
this.refresh();
|
||||
this.refreshErrors();
|
||||
@ -41,39 +49,39 @@ function ProjectWindows(containerdiv:HTMLElement, project:CodeProject) {
|
||||
return wnd;
|
||||
}
|
||||
|
||||
this.put = function(id:string, window:ProjectView) {
|
||||
id2window[id] = window;
|
||||
put(id:string, window:ProjectView) {
|
||||
this.id2window[id] = window;
|
||||
}
|
||||
|
||||
this.refresh = function() {
|
||||
if (activewnd && activewnd.refresh)
|
||||
activewnd.refresh();
|
||||
refresh() {
|
||||
if (this.activewnd && this.activewnd.refresh)
|
||||
this.activewnd.refresh();
|
||||
}
|
||||
|
||||
this.tick = function() {
|
||||
if (activewnd && activewnd.tick)
|
||||
activewnd.tick();
|
||||
tick() {
|
||||
if (this.activewnd && this.activewnd.tick)
|
||||
this.activewnd.tick();
|
||||
}
|
||||
|
||||
this.setErrors = function(errors:WorkerError[]) {
|
||||
lasterrors = errors;
|
||||
setErrors(errors:WorkerError[]) {
|
||||
this.lasterrors = errors;
|
||||
this.refreshErrors();
|
||||
}
|
||||
|
||||
this.refreshErrors = function() {
|
||||
if (activewnd && activewnd.markErrors) {
|
||||
if (lasterrors && lasterrors.length)
|
||||
activewnd.markErrors(lasterrors);
|
||||
refreshErrors() {
|
||||
if (this.activewnd && this.activewnd.markErrors) {
|
||||
if (this.lasterrors && this.lasterrors.length)
|
||||
this.activewnd.markErrors(this.lasterrors);
|
||||
else
|
||||
activewnd.clearErrors();
|
||||
this.activewnd.clearErrors();
|
||||
}
|
||||
}
|
||||
|
||||
this.getActive = function() : ProjectView { return activewnd; }
|
||||
getActive() : ProjectView { return this.activewnd; }
|
||||
|
||||
this.getCurrentText = function() : string {
|
||||
if (activewnd && activewnd.getValue)
|
||||
return activewnd.getValue();
|
||||
getCurrentText() : string {
|
||||
if (this.activewnd && this.activewnd.getValue)
|
||||
return this.activewnd.getValue();
|
||||
else
|
||||
alert("Please switch to an editor window.");
|
||||
}
|
||||
|
@ -7,7 +7,9 @@
|
||||
"lib": [
|
||||
"es2016",
|
||||
"dom"
|
||||
]
|
||||
],
|
||||
"noImplicitThis": false,
|
||||
"noImplicitAny": false
|
||||
},
|
||||
"include": [
|
||||
"./src/*.ts",
|
||||
|
Loading…
x
Reference in New Issue
Block a user