From cc595ea9174f4048ff31cdfd4322ab64546629ac Mon Sep 17 00:00:00 2001 From: sehugg Date: Sat, 12 Sep 2026 17:26:01 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sehugg/8?= =?UTF-8?q?bitworkshop@87a0d5c400eb7a700d46207abbab8af33284010c=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE.txt | 110 ---------- README.md | 191 ++++++++++++++---- gen/{basic-67PVWCOJ.js => basic-NBGB7TDS.js} | 4 +- ...-67PVWCOJ.js.map => basic-NBGB7TDS.js.map} | 0 gen/chunk-GVFUL2SH.js.map | 7 - gen/{chunk-MDQJSZ5D.js => chunk-IWTE4TLV.js} | 4 +- ...-MDQJSZ5D.js.map => chunk-IWTE4TLV.js.map} | 0 gen/{chunk-GVFUL2SH.js => chunk-NYBZF35S.js} | 22 +- gen/chunk-NYBZF35S.js.map | 7 + gen/common/toolmeta.js | 9 +- gen/common/toolmeta.js.map | 2 +- gen/{devel-2I7AFPAU.js => devel-ZAOVCGHK.js} | 4 +- ...-2I7AFPAU.js.map => devel-ZAOVCGHK.js.map} | 0 gen/embedui.js | 2 +- gen/src/common/toolmeta.js | 9 +- gen/src/common/toolmeta.js.map | 2 +- gen/ui.js | 2 +- gen/worker/bundle.js | 9 +- gen/worker/bundle.js.map | 4 +- mame/roms/README.md | 65 ++++++ src/common/toolmeta.ts | 9 +- 21 files changed, 279 insertions(+), 183 deletions(-) delete mode 100644 LICENSE.txt rename gen/{basic-67PVWCOJ.js => basic-NBGB7TDS.js} (99%) rename gen/{basic-67PVWCOJ.js.map => basic-NBGB7TDS.js.map} (100%) delete mode 100644 gen/chunk-GVFUL2SH.js.map rename gen/{chunk-MDQJSZ5D.js => chunk-IWTE4TLV.js} (97%) rename gen/{chunk-MDQJSZ5D.js.map => chunk-IWTE4TLV.js.map} (100%) rename gen/{chunk-GVFUL2SH.js => chunk-NYBZF35S.js} (97%) create mode 100644 gen/chunk-NYBZF35S.js.map rename gen/{devel-2I7AFPAU.js => devel-ZAOVCGHK.js} (95%) rename gen/{devel-2I7AFPAU.js.map => devel-ZAOVCGHK.js.map} (100%) create mode 100644 mame/roms/README.md diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index cad5a8fd..00000000 --- a/LICENSE.txt +++ /dev/null @@ -1,110 +0,0 @@ - -https://github.com/sehugg/dasm -http://sdcc.sourceforge.net/ - -GPLv2 - ---- - -https://github.com/gasman/jsspeccy2 -Z80 emulator -GPLv3 - ---- - -https://github.com/sehugg/javatari.js - -GNU Affero General Public License v3.0 - ---- - -https://www.veripool.org/wiki/verilator - -GNU Lesser Public License Version 3 - ---- - -http://mcpp.sourceforge.net/ - -/*- - * Copyright (c) 1998, 2002-2008 Kiyoshi Matsui - * All rights reserved. - * - * This software including the files in this directory is provided under - * the following license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - ---- - -https://github.com/sehugg/cc65 - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from -the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software in -a product, an acknowledgment in the product documentation would be -appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not -be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. - ---- - -https://github.com/datajerk/c2t/blob/master/LICENSE - -Copyright 2017 Egan Ford - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from this -software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index fafb9340..68b36b85 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,47 @@ ![Build Status](https://github.com/sehugg/8bitworkshop/actions/workflows/node.js.yml/badge.svg) +8bitworkshop is a browser-based IDE for micro computers and consoles. +It compiles or assembles your code as you type, +then runs the result in a built-in emulator — all locally in your +browser, with no server round-trip. + +It bundles toolchains and emulators for dozens of platforms, including the +Atari 2600/7800/8-bit, Commodore 64/VIC-20, NES, Game Boy, ColecoVision, +MSX, ZX Spectrum, Amstrad CPC, PC Engine, Vectrex, Apple II, and a +number of arcade boards. See +[Toolchains & Platforms](src/docs/toolchains.md) for the complete list. + +![8bitworkshop IDE](https://8bitworkshop.com/images/ide_screenshot1.png) ## Use Online Latest release: -- https://8bitworkshop.com/latest/ or -- https://sehugg.github.io/8bitworkshop/ +- https://8bitworkshop.com/latest/ (bleeding edge, built from main branch) + +## Features + +* In-browser compilers and assemblers (cc65, SDCC, Z80/6502/6809 + assemblers, and more) — see [Tools](src/docs/toolchains.md) +* Built-in emulators with keyboard and gamepad input +* Debugger with breakpoints, stepping, memory browser, disassembly, + call stack, memory probes, and time-travel replay +* Hardware simulation with Verilog +* Asset editor for bitmaps and palettes +* Export ROMs, save screenshots/videos, share playable links, and sync + projects to GitHub + +Read the [IDE documentation](src/docs/index.md) for a guided tour. ## Install Locally +Requirements: + +* [Node.js](https://nodejs.org/) 24.x +* [npm](https://www.npmjs.com/) +* `make` and `git` +* Python 3 (for the local dev server) + To clone just the main branch: ```sh @@ -25,11 +57,16 @@ To build the 8bitworkshop IDE: make ``` -To use GitHub integration locally, download the Firebase config file, e.g. https://8bitworkshop.com/v[version]/config.js +`make` initializes git submodules, installs npm dependencies, builds the +TypeScript and lezer grammars, and runs esbuild. + +To use GitHub integration locally, download the Firebase config file, +e.g. https://8bitworkshop.com/v[version]/config.js ### Start Local Web Server -Start a web server on http://localhost:8000/ while TypeScript compiles in the background: +Start a web server on http://localhost:8000/ while TypeScript compiles +in the background: ```sh make tsweb @@ -45,21 +82,39 @@ export TEST8BIT_GITHUB_TOKEN="" npm test ``` -## License +## Command-Line Tool -Copyright © 2016-2026 [Steven E. Hugg](https://github.com/sehugg). +The `8bws` CLI builds and runs projects headlessly, without a browser. +It is useful for scripting, CI, and regression tests. +```sh +# Build a source file to a ROM +npm run cli -- build --platform c64 hello.c -o hello.prg --symbols -This project, unless specifically noted, is multi-licensed. -You may choose to adhere to the terms of either the [GPL-3.0](https://github.com/sehugg/8bitworkshop/blob/master/LICENSE) License for the entire project or respect the individual licenses of its dependencies and included code samples, as applicable. +# Run a ROM for 200 frames and take a screenshot +npm run cli -- run --platform nes --frames 200 --png shot.png game.nes -This project includes various dependencies, modules, and components that retain their original licenses. -For detailed licensing information for each dependency, please refer to the respective files and documentation. +# Run with a debugger script (symbolic addresses come from the build) +npm run cli -- run --platform gb hello.c -e "break _main; pc 4" -All included code samples located in the `presets/` directory are licensed under -[CC0](https://creativecommons.org/publicdomain/zero/1.0/) -unless a different license is explicitly stated within the specific code sample. +npm run cli -- list-platforms +npm run cli -- list-tools +``` +Run scripts (`-e` or `--script `) can `run`, `break`, `step`, +`trace`, `hist`, `key`, `mem`, `screen`, `pc`, `info`, `reset`, and +`echo`. Run `npm run cli -- help` for the full list. + +## Documentation + +The IDE manual lives in [`src/docs/`](src/docs/index.md): + +* [IDE Overview](src/docs/index.md) +* [Managing Files](src/docs/managing-files.md) — export, share, GitHub sync +* [Build Directives](src/docs/build-directives.md) — multi-file projects +* [Toolchains & Platforms](src/docs/toolchains.md) — tools and file extensions +* [Debugger](src/docs/breakpoints.md) — breakpoints and stepping +* [Embedding the IDE](src/docs/embedding-ide.md) — iframe embeds ## Contributing @@ -76,67 +131,125 @@ It likes: The code samples in `presets/` are intended to be studied by humans. LLM usage for generating code samples is discouraged, as they tend to hide subtle errors in code and in comments, and it diminishes the human achievement and human-to-human communication aspects of the project. +Please thoroughly review and edit such code. Adapting third party sample code with permissive licenses and giving credit to the original author(s) is encouraged. +## Credits + +8bitworkshop is created and maintained by +[Steven E. Hugg](https://github.com/sehugg). + +Major contributors: +* [Fred Sauer](https://github.com/fredsa) - CodeMirror 6 editor migration, Apple II enhancements, and general IDE work. +* [Mike DX](https://github.com/MikeDX) - PC Engine / Game Boy / Williams 6809 enhancements, library code, and examples. +* [Micah Cowan](https://github.com/micahcowan) - Apple II enhancements. + +The emulators, compilers, assemblers, and libraries that this project +builds on are credited in [Dependencies](#dependencies) and retain their +own licenses (see [License](#license)). + +For the complete list of contributors, see the +[GitHub contributors graph](https://github.com/sehugg/8bitworkshop/graphs/contributors). + +## License + +The original source code in this repository is Copyright © 2016-2026 +[Steven E. Hugg](https://github.com/sehugg) and is licensed under the +[GPL-3.0](https://github.com/sehugg/8bitworkshop/blob/master/LICENSE). + +This project also bundles and links against third-party components, +including emulators, compilers, and libraries. These components are +**not** covered by the GPL-3.0 license above; they remain under their +own licenses, and you must comply with those terms when redistributing +this project or a modified version of it. +See the individual dependencies' own license files for details. + +All included code samples located in the `presets/` directory are licensed under +[CC0](https://creativecommons.org/publicdomain/zero/1.0/) +unless a different license is explicitly stated within the specific code sample. ## Dependencies ### Emulators -* https://javatari.org/ -* https://jsnes.org/ -* https://www.mamedev.org/ -* https://github.com/floooh/chips -* https://github.com/DrGoldfire/Z80.js +* https://javatari.org/ (AGPL-3.0) +* https://jsnes.org/ (Apache 2.0) +* https://www.mamedev.org/ (BSD-3-Clause) +* https://github.com/floooh/chips (Zlib) +* https://github.com/DrGoldfire/Z80.js (MIT) * http://www.twitchasylum.com/jsvecx/ -* https://github.com/curiousdannii/ifvms.js/ -* https://6502ts.github.io/typedoc/stellerator-embedded/ -* https://github.com/yhzmr442/jspce +* https://github.com/curiousdannii/ifvms.js/ (MIT) +* https://github.com/6502ts/6502.ts (MIT) +* https://github.com/yhzmr442/jspce (MIT) +* https://github.com/gasman/jsspeccy2 (GPL-3) ### Compilers -* https://cc65.github.io/ -* http://sdcc.sourceforge.net/ -* http://perso.b2b2c.ca/~sarrazip/dev/cmoc.html +* https://cc65.github.io/ (zlib) +* http://sdcc.sourceforge.net/ (GPL-2) +* https://github.com/stahta01/cmoc/ (GPL-3.0) * https://github.com/batari-Basic/batari-Basic -* https://www.veripool.org/wiki/verilator -* http://mcpp.sourceforge.net/ -* http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6.html -* https://github.com/dmsc/fastbasic -* https://github.com/wiz-lang/wiz -* https://github.com/sylefeb/Silice -* https://github.com/steux/cc7800 +* https://www.veripool.org/wiki/verilator (GNU Lesser Public License Version 3) +* http://mcpp.sourceforge.net/ (BSD-2) +* https://github.com/DavidKinder/Inform6 +* https://github.com/dmsc/fastbasic (GPL-2.0) +* https://github.com/wiz-lang/wiz (MIT) +* https://github.com/sylefeb/Silice (GPL-3.0) +* https://github.com/steux/cc7800 (GPL-3.0) * https://bellard.org/tcc/ +* https://github.com/Dialog-IF/dialog +* https://github.com/alexfru/SmallerC (BSD-2-Clause) +* https://github.com/drmortalwombat/oscar64/ (GPL-3.0) ### Assemblers/Linkers -* https://dasm-assembler.github.io/ +* https://dasm-assembler.github.io/ (GPL-2) * http://atjs.mbnet.fi/mc6809/Assembler/xasm-990104.tar.gz -* http://48k.ca/zmac.html +* http://48k.ca/zmac.html (public domain) * https://github.com/apple2accumulator/merlin32 * https://github.com/camsaul/nesasm +* https://www.floodgap.com/retrotech/xa/ +* https://github.com/mikeakohn/naken_asm (GPL-3) +* https://github.com/yasm/yasm +* https://github.com/mbitsnbites/vasm-mirror +* https://github.com/sehugg/acme (GPL-2.0) ### Dev Kits / Libraries * https://shiru.untergrund.net/code.shtml * http://www.colecovision.eu/ColecoVision/development/libcv.shtml -* https://github.com/toyoshim/tss -* https://github.com/lronaldo/cpctelera +* https://github.com/toyoshim/tss (BSD-3-Clause) +* https://github.com/lronaldo/cpctelera (LGPL-3.0) +* https://github.com/datajerk/c2t (BSD-3) +* https://github.com/sehugg/6809tools +* https://github.com/mbitsnbites/liblzg (Zlib) +* https://github.com/sehugg/makewav +* https://github.com/Kingcom/armips (MIT) +* https://github.com/dmsc/mkatr (GPL-2.0) ### Firmware +The emulator cores need system firmware to boot. Only freely +distributable replacement images are included — see +[`mame/roms/README.md`](mame/roms/README.md) for their provenance and +licenses. + +To use your own firmware, add it to the project as a binary file named +`.rom` (for example `c64.rom`); the IDE loads it as the +BIOS at startup. Only freely distributable firmware should be shared. + * http://www.virtualdub.org/altirra.html -* https://github.com/MEGA65/open-roms +* https://github.com/MEGA65/open-roms (LGPL-3.0) * https://sourceforge.net/projects/cbios/ * https://www.pledgebank.com/opense ### Related Projects * https://github.com/sehugg/8bitworkshop-compilers -* https://github.com/sehugg/8bit-tools -* https://github.com/sehugg/awesome-8bitgamedev -* https://github.com/sehugg?tab=repositories +* https://github.com/sehugg/8bit-tools (CC0-1.0) +* https://github.com/sehugg/awesome-8bitgamedev (Public Domain) +* https://github.com/sehugg?tab=repositories (CC0-1.0) ## Tool Server (experimental) diff --git a/gen/basic-67PVWCOJ.js b/gen/basic-NBGB7TDS.js similarity index 99% rename from gen/basic-67PVWCOJ.js rename to gen/basic-NBGB7TDS.js index 7116ae3d..05ad2acc 100644 --- a/gen/basic-67PVWCOJ.js +++ b/gen/basic-NBGB7TDS.js @@ -1,4 +1,4 @@ -import{b as S}from"./chunk-3FIVEUG2.js";import{w as E}from"./chunk-GVFUL2SH.js";import"./chunk-CZNGOAGP.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-MDQJSZ5D.js";import"./chunk-NTNDQ2RA.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` +import{b as S}from"./chunk-3FIVEUG2.js";import{w as E}from"./chunk-NYBZF35S.js";import"./chunk-CZNGOAGP.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-IWTE4TLV.js";import"./chunk-NTNDQ2RA.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFromGosub(){this.returnStack.length==0&&this.runtimeError("I tried to RETURN, but there wasn't a corresponding GOSUB.");var t=this.returnStack.pop();this.curpc=t,this.popLocalScope()}popReturnStack(){this.returnStack.length==0&&this.runtimeError("I tried to POP, but there wasn't a corresponding GOSUB."),this.returnStack.pop()}valueToString(t,r){var e;if(typeof t=="number"){var i=this.float2str(t,this.opts.printZoneLength-4);return r?i.startsWith("-")?`${i} `:` ${i} `:i}else if(t==` `)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=` `):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),k(t))return JSON.stringify(t.value);if(y(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let h=t.args?t.args.map(o=>this.expr2js(o,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${h})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${h})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${h})`:e+=`this.arrayGet(${i}, ${h})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(O(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(N(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var h=()=>i>=0?this.vars[t]>e:this.vars[t]o==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:o=>{o&&t!=o&&this.runtimeError(`I executed NEXT "${o}", but the last FOR was for "${t}".`),this.vars[t]+=i;var b=h();b?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${b}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s=i.length&&this.runtimeError(`I tried to lookup ${t}(${r}) but it exceeded the dimensions of the array.`),i=i[r[n]]}return c(i)&&this.runtimeError(`I tried to lookup ${t}(${r}) but used too few dimensions.`),i}modifyStringSlice(t,r,e,i){return t=t||"",this.checkString(t),this.checkString(r),i||(i=e),e=this.ROUND(e),i=this.ROUND(i),e<1&&this.dialectError("accept a string slice index less than 1"),ir.length)&&this.runtimeError(`I needed a number between 1 and ${r.length}, but I got ${t}.`),t<1||t>r.length?0:t}onGotoLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gotoLabel(r[t-1])}onGosubLabel(t,...r){t=this.checkOnGoto(t,r),t&&this.gosubLabel(r[t-1])}nextDatum(){return this.dataptr>=this.datums.length&&this.runtimeError("I tried to READ, but ran out of data."),this.datums[this.dataptr++].value}do__PRINT(t){var r="";for(var e of t.args){var i=this.expr2js(e),n=i.name;r+=`this.printExpr(this.checkValue(${i}, ${JSON.stringify(n)}));`}return r}preInput(){this.running=!1,this.curpc--}postInput(t){t&&this.curpc++,this.running=!0,this.resume()}do__INPUT(t){var r=t.prompt!=null?this.expr2js(t.prompt):'""',e=t.elapsed!=null?this.assign2js(t.elapsed):"let ___",i="";return t.args.forEach((n,s)=>{var a=this.assign2js(n);i+=` var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]); @@ -34,4 +34,4 @@ import{b as S}from"./chunk-3FIVEUG2.js";import{w as E}from"./chunk-GVFUL2SH.js"; `),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtensions(){return[".bas"]}getToolForFilename(){return"basic"}getPresets(){return L}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){if(t==="Variables")return this.varsToLongString()}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=g(e,3)+" = "+n+` `}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}hasCustomStepOver(){return!0}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function (Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record,\n array: readonly unknown[],\n transformCaseFunc: ReturnType> = stringToLowerCase\n): Record {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n if (!arrayIsArray(array)) {\n return set;\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as unknown[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element as string] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array: T[]): Array {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (arrayIsArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n switch (typeof value) {\n case 'string': {\n return value;\n }\n\n case 'number': {\n return numberToString(value);\n }\n\n case 'boolean': {\n return booleanToString(value);\n }\n\n case 'bigint': {\n return bigintToString ? bigintToString(value) : '0';\n }\n\n case 'symbol': {\n return symbolToString ? symbolToString(value) : 'Symbol()';\n }\n\n case 'undefined': {\n return objectToString(value);\n }\n\n case 'function':\n case 'object': {\n if (value === null) {\n return objectToString(value);\n }\n\n const valueAsRecord = value as Record;\n const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n if (typeof valueToString === 'function') {\n const stringified = valueToString(valueAsRecord);\n\n return typeof stringified === 'string'\n ? stringified\n : objectToString(stringified);\n }\n\n return objectToString(value);\n }\n\n default: {\n return objectToString(value);\n }\n }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter>(\n object: T,\n prop: string\n): ReturnType> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n try {\n regExpTest(value as RegExp, '');\n return true;\n } catch {\n return false;\n }\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n objectToString,\n // RegExp\n regExpTest,\n isRegex,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Other conversion\n stringifyValue,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'command',\n 'commandfor',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dominant-baseline',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'mask-type',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'pointer-events',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-orientation',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'vector-effect',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnalign',\n 'columnlines',\n 'columnspacing',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lquote',\n 'lspace',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nexport const ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nexport const COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nexport const FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nexport const SELF_CLOSING_TAG = seal(/\\/>/i);\n", "import type { Config, UseProfilesConfig } from './config';\nimport type { DOMPurify, HooksMap, HookFunction, WindowLike } from './types';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n seal,\n arrayForEach,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n isRegex,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\nexport type {\n DOMPurify,\n RemovedElement,\n RemovedAttribute,\n HookName,\n NodeHook,\n ElementHook,\n DocumentFragmentHook,\n UponSanitizeElementHook,\n UponSanitizeAttributeHook,\n UponSanitizeElementHookEvent,\n UponSanitizeAttributeHookEvent,\n WindowLike,\n} from './types';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n processingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\n/* HTML-namespace elements whose child text nodes are serialized *literally*\n (unescaped) by the HTML fragment-serialization algorithm. Two reparse-mXSS\n shapes ride on that literal serialization:\n (a) an element child - a tree the HTML parser can never build, but the DOM\n API and an XML/XHTML parse can - after which a ``-bearing text\n sibling breaks the element open on reparse; and\n (b) text-only content that already carries the element's OWN end tag, e.g.\n `` built as a node, which the literal\n serializer emits verbatim for the HTML parser to re-open.\n Shape (a) is handled by the firstElementChild branch in _isUnsafeNode; shape\n (b) by the LITERAL_TEXT_CLOSE probe. Both read textContent (the raw-serialized\n form for these elements) rather than innerHTML, because an XML/XHTML working\n document serializes innerHTML with `<` escaped, which silently blinds the\n innerHTML-based probes (rule 1's second probe and FALLBACK_TAG_CLOSE) there.\n `script` is never allow-listed, but is kept here so the guard matches the\n serializer's own literal-text list exactly. */\nconst LITERAL_TEXT_ELEMENT_NAMES = [\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript',\n];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\n\n/* Per-element end-tag matcher. On an HTML reparse the ONLY token that\n terminates a literal-text element's raw content is its own end tag; a foreign\n literal-text close (e.g. `` sitting inside `` built as a node, which the literal\n serializer emits verbatim for the HTML parser to re-open.\n Shape (a) is handled by the firstElementChild branch in _isUnsafeNode; shape\n (b) by the LITERAL_TEXT_CLOSE probe. Both read textContent (the raw-serialized\n form for these elements) rather than innerHTML, because an XML/XHTML working\n document serializes innerHTML with `<` escaped, which silently blinds the\n innerHTML-based probes (rule 1's second probe and FALLBACK_TAG_CLOSE) there.\n `script` is never allow-listed, but is kept here so the guard matches the\n serializer's own literal-text list exactly. */\nconst LITERAL_TEXT_ELEMENT_NAMES = [\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript',\n];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\n\n/* Per-element end-tag matcher. On an HTML reparse the ONLY token that\n terminates a literal-text element's raw content is its own end tag; a foreign\n literal-text close (e.g. `` sitting inside ``;\n for (let bin of this.bins) {\n let be = bin.extents;\n s += ''\n s += ``;\n let textx = be.right+1;\n let texty = 0;\n for (let box of this.boxes) {\n let b = box.box;\n if (b) {\n if (b.bin == bin) s += ``;\n if (b.top == texty) textx += 10; else textx = be.right+1;\n texty = b.top;\n if (box.label) s += `${box.label}`;\n }\n }\n /*\n for (let b of bin.free) {\n s += ``;\n }\n */\n s += ''\n }\n s += ``;\n return s;\n }\n toSVGUrl() {\n return `data:image/svg+xml;base64,${btoa(this.toSVG())}`;\n }\n}\n", "\nimport { Token } from \"../tokenizer\";\nimport { SourceLocated, SourceLocation } from \"../workertypes\";\nimport { Bin, Packer } from \"./binpack\";\n\nexport class ECSError extends Error implements SourceLocated {\n $loc: SourceLocation;\n $sources: SourceLocated[] = [];\n\n constructor(msg: string, obj?: SourceLocation | SourceLocated) {\n super(msg);\n Object.setPrototypeOf(this, ECSError.prototype);\n if (obj) this.$loc = (obj as SourceLocated).$loc || (obj as SourceLocation);\n }\n}\n\nfunction mksymbol(c: ComponentType, fieldName: string) {\n return c.name + '_' + fieldName;\n}\nfunction mkscopesymbol(s: EntityScope, c: ComponentType, fieldName: string) {\n return s.name + '_' + c.name + '_' + fieldName;\n}\n\nexport interface Entity extends SourceLocated {\n id: number;\n name?: string;\n etype: EntityArchetype;\n consts: { [component_field: string]: DataValue };\n // TODO: need scope scoping?\n inits: { [scope_component_field: string]: DataValue };\n}\n\nexport interface EntityConst {\n component: ComponentType;\n name: string;\n value: DataValue;\n}\n\nexport interface EntityArchetype {\n components: ComponentType[];\n}\n\nexport interface ComponentType extends SourceLocated {\n name: string;\n fields: DataField[];\n optional?: boolean;\n}\n\nexport interface Query extends SourceLocated {\n include: ComponentType[];\n exclude?: ComponentType[];\n entities?: Entity[];\n limit?: number;\n}\n\nexport class SystemStats {\n tempstartseq: number | undefined;\n tempendseq: number | undefined;\n}\n\nexport interface System extends SourceLocated {\n name: string;\n actions: Action[];\n tempbytes?: number;\n}\n\nexport interface SystemInstanceParameters {\n query?: Query;\n refEntity?: Entity;\n refField?: ComponentFieldPair;\n}\n\nexport interface SystemInstance extends SourceLocated {\n system: System;\n params: SystemInstanceParameters;\n id: number;\n}\n\nexport const SELECT_TYPE = ['once', 'foreach', 'join', 'with', 'if', 'select', 'unroll'] as const;\n\nexport type SelectType = typeof SELECT_TYPE[number];\n\n// TODO?\nexport interface ActionContext {\n system: System\n scope: EntityScope | null\n}\n\nexport class ActionNode implements SourceLocated {\n constructor(\n public readonly owner: ActionContext,\n public readonly $loc: SourceLocation\n ) { }\n\n children?: ActionNode[];\n}\n\nexport class CodeLiteralNode extends ActionNode {\n constructor(\n owner: ActionContext,\n $loc: SourceLocation,\n public readonly text: string\n ) {\n super(owner, $loc);\n }\n}\n\nexport class CodePlaceholderNode extends ActionNode {\n constructor(\n owner: ActionContext,\n $loc: SourceLocation,\n public readonly args: string[]\n ) {\n super(owner, $loc);\n }\n}\n\nexport interface Action extends SourceLocated {\n event: string;\n expr: Statement;\n critical?: boolean;\n fitbytes?: number;\n}\n\nexport type DataValue = number | boolean | Uint8Array | Uint16Array | Uint32Array;\n\nexport type DataField = { name: string; $loc: SourceLocation } & DataType;\n\nexport type DataType = IntType | ArrayType | RefType;\n\nexport interface IntType {\n dtype: 'int'\n lo: number\n hi: number\n defvalue?: number\n enums?: { [name: string] : number }\n}\n\nexport interface ArrayType {\n dtype: 'array'\n elem: DataType\n index?: DataType\n baseoffset?: number\n}\n\nexport interface RefType {\n dtype: 'ref'\n query: Query\n}\n\ninterface FieldArray {\n component: ComponentType;\n field: DataField;\n elo: number;\n ehi: number;\n access?: FieldAccess[];\n}\n\ninterface FieldAccess {\n symbol: string;\n bit: number;\n width: number;\n}\n\ninterface ConstByte {\n symbol: string;\n bitofs: number;\n}\n\nexport interface ComponentFieldPair {\n c: ComponentType;\n f: DataField;\n}\n\n// Expressions\n\nexport interface ForwardRef extends SourceLocated {\n reftype: RefType | undefined\n token: Token\n}\n\nexport type LExpr = IndOp | EntityFieldOp;\nexport type Statement = InlineCode | BlockExpr | QueryExpr;\nexport type Expr = BinOp | UnOp | Literal | ForwardRef | LExpr | Statement;\nexport type Opcode = string;\n\nexport interface ExprBase extends SourceLocated {\n valtype: DataType;\n}\n\nexport interface Literal extends ExprBase {\n value: DataValue;\n}\n\nexport interface LiteralInt extends Literal {\n value: number;\n valtype: IntType;\n}\n\nexport interface BinOp extends ExprBase {\n op: Opcode;\n left: Expr;\n right: Expr;\n}\n\nexport interface UnOp extends ExprBase {\n op: 'neg' | 'lnot' | 'bnot';\n expr: Expr;\n}\n\nexport interface IndOp extends ExprBase {\n name: string;\n args: Expr[];\n}\n\nexport interface CondOp extends ExprBase {\n cond: Expr;\n iftrue?: Expr;\n iffalse?: Expr;\n}\n\nexport interface BranchOp extends ExprBase {\n branch: BlockExpr;\n}\n\nexport interface EntityFieldOp extends ExprBase {\n entities: Entity[];\n field: DataField;\n}\n\nexport interface EntityContextOp extends ExprBase {\n entities: Entity[];\n}\n\nexport interface InlineCode extends ExprBase {\n code: string;\n}\n\nexport interface BlockExpr extends ExprBase {\n loop?: boolean;\n stmts: Expr[];\n}\n\nexport interface QueryExpr extends BlockExpr {\n select: SelectType\n query: Query\n direction?: 'asc' | 'desc'\n join?: Query\n all?: boolean\n}\n\n\nexport function isLiteral(arg: Expr): arg is Literal {\n return (arg as any).value != null;\n}\nexport function isLiteralInt(arg: Expr): arg is LiteralInt {\n return isLiteral(arg) && arg.valtype.dtype == 'int';\n}\nexport function isLookup(arg: Expr): arg is IndOp {\n return (arg as any).name != null;\n}\nexport function isBinOp(arg: Expr): arg is BinOp {\n return (arg as any).op != null && (arg as any).left != null && (arg as any).right != null;\n}\nexport function isUnOp(arg: Expr): arg is UnOp {\n return (arg as any).op != null && (arg as any).expr != null;\n}\nexport function isBlockStmt(arg: Expr): arg is BlockExpr {\n return (arg as any).stmts != null;\n}\nexport function isInlineCode(arg: Expr): arg is InlineCode {\n return (arg as any).code != null;\n}\nexport function isQueryExpr(arg: Expr): arg is QueryExpr {\n return (arg as any).query != null;\n}\n\n\n/// DIALECT\n\nexport class Dialect_CA65 {\n\n ASM_ITERATE_EACH_ASC = `\n ldx #0\n@__each:\n {{%code}}\n inx\n cpx #{{%ecount}}\n jne @__each\n@__exit:\n`;\n\n ASM_ITERATE_EACH_DESC = `\n ldx #{{%ecount}}-1\n@__each:\n {{%code}}\n dex\n jpl @__each\n@__exit:\n`;\n\n ASM_ITERATE_JOIN_ASC = `\n ldy #0\n@__each:\n ldx {{%joinfield}},y\n {{%code}}\n iny\n cpy #{{%ecount}}\n jne @__each\n@__exit:\n`;\n\n ASM_ITERATE_JOIN_DESC = `\n ldy #{{%ecount}}-1\n@__each:\n ldx {{%joinfield}},y\n {{%code}}\n dey\n jpl @__each\n@__exit:\n`;\n\n ASM_FILTER_RANGE_LO_X = `\n cpx #{{%xofs}}\n jcc @__skipxlo\n {{%code}}\n@__skipxlo:\n`\n\n ASM_FILTER_RANGE_HI_X = `\n cpx #{{%xofs}}+{{%ecount}}\n jcs @__skipxhi\n {{%code}}\n@__skipxhi:\n`\n\n ASM_LOOKUP_REF_X = `\n ldx {{%reffield}}\n {{%code}}\n`\n\n INIT_FROM_ARRAY = `\n ldy #{{%nbytes}}\n: lda {{%src}}-1,y\n sta {{%dest}}-1,y\n dey\n bne :-\n`\n\n comment(s: string) {\n return `\\n;;; ${s}\\n`;\n }\n absolute(ident: string, offset?: number) {\n return this.addOffset(ident, offset || 0);\n }\n addOffset(ident: string, offset: number) {\n if (offset > 0) return `${ident}+${offset}`;\n if (offset < 0) return `${ident}-${-offset}`;\n return ident;\n }\n indexed_x(ident: string, offset: number) {\n return this.addOffset(ident, offset) + ',x';\n }\n indexed_y(ident: string, offset: number) {\n return this.addOffset(ident, offset) + ',y';\n }\n fieldsymbol(component: ComponentType, field: DataField, bitofs: number) {\n return `${component.name}_${field.name}_b${bitofs}`;\n }\n datasymbol(component: ComponentType, field: DataField, eid: number, bitofs: number) {\n return `${component.name}_${field.name}_e${eid}_b${bitofs}`;\n }\n debug_file(path: string) {\n return `.dbg file, \"${path}\", 0, 0`\n }\n debug_line(path: string, line: number) {\n return `.dbg line, \"${path}\", ${line}`\n }\n startScope(name: string) {\n return `.scope ${name}`\n }\n endScope(name: string) {\n return `.endscope\\n${this.scopeSymbol(name)} = ${name}::__Start`\n }\n scopeSymbol(name: string) {\n return `${name}__Start`;\n }\n align(value: number) {\n return value > 0 ? `.align ${value}` : '';\n }\n warningIfPageCrossed(startlabel: string) {\n return `\n.assert >(${startlabel}) = >(*), warning, \"${startlabel} crosses a page boundary!\"`\n }\n warningIfMoreThan(bytes: number, startlabel: string) {\n return `\n.assert (* - ${startlabel}) <= ${bytes}, warning, .sprintf(\"${startlabel} does not fit in ${bytes} bytes, it took %d!\", (* - ${startlabel}))`\n }\n segment(segtype: 'rodata' | 'bss' | 'code') {\n if (segtype == 'bss') {\n return `.zeropage`;\n } else if (segtype == 'rodata') {\n return '.rodata';\n } else {\n return `.code`;\n }\n }\n label(sym: string) {\n return `${sym}:`;\n }\n export(sym: string) {\n return `.export _${sym} = ${sym}`;\n }\n byte(b: number | ConstByte | undefined) {\n if (b === undefined) {\n return `.res 1`\n } else if (typeof b === 'number') {\n if (b < 0 || b > 255) throw new ECSError(`out of range byte ${b}`);\n return `.byte ${b}`\n } else {\n if (b.bitofs == 0) return `.byte <${b.symbol}`\n else if (b.bitofs == 8) return `.byte >${b.symbol}`\n else return `.byte ((${b.symbol} >> ${b.bitofs})&255)`\n }\n }\n tempLabel(inst: SystemInstance) {\n return `${inst.system.name}__${inst.id}__tmp`;\n }\n equate(symbol: string, value: string): string {\n return `${symbol} = ${value}`;\n }\n define(symbol: string, value?: string): string {\n if (value) return `.define ${symbol} ${value}`;\n else return `.define ${symbol}`;\n }\n call(symbol: string) {\n return ` jsr ${symbol}`;\n }\n jump(symbol: string) {\n return ` jmp ${symbol}`;\n }\n return() {\n return ' rts';\n }\n}\n\n// TODO: merge with Dialect?\nexport class SourceFileExport {\n lines: string[] = [];\n\n line(s: string) {\n this.text(s);\n }\n text(s: string) {\n for (let l of s.split('\\n'))\n this.lines.push(l);\n }\n toString() {\n return this.lines.join('\\n');\n }\n}\n\nclass CodeSegment {\n codefrags: string[] = [];\n\n addCodeFragment(code: string) {\n this.codefrags.push(code);\n }\n dump(file: SourceFileExport) {\n for (let code of this.codefrags) {\n file.text(code);\n }\n }\n}\n\nclass DataSegment {\n symbols: { [sym: string]: number } = {};\n equates: { [sym: string]: string } = {};\n ofs2sym = new Map();\n fieldranges: { [cfname: string]: FieldArray } = {};\n size: number = 0;\n initdata: (number | ConstByte | undefined)[] = [];\n\n allocateBytes(name: string, bytes: number) {\n let ofs = this.symbols[name];\n if (ofs == null) {\n ofs = this.size;\n this.declareSymbol(name, ofs);\n this.size += bytes;\n }\n return ofs;\n }\n declareSymbol(name: string, ofs: number) {\n this.symbols[name] = ofs;\n if (!this.ofs2sym.has(ofs))\n this.ofs2sym.set(ofs, []);\n this.ofs2sym.get(ofs)?.push(name);\n }\n // TODO: ordering should not matter, but it does\n findExistingInitData(bytes: Uint8Array) {\n for (let i=0; i= 0) {\n this.declareSymbol(name, ofs);\n } else {\n ofs = this.allocateBytes(name, bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n this.initdata[ofs + i] = bytes[i];\n }\n }\n }\n dump(file: SourceFileExport, dialect: Dialect_CA65, doExport: boolean) {\n // TODO: fewer lines\n for (let i = 0; i < this.size; i++) {\n let syms = this.ofs2sym.get(i);\n if (syms) {\n for (let sym of syms) {\n if (doExport) file.line(dialect.export(sym)); // TODO: this is a hack for C export\n file.line(dialect.label(sym));\n }\n }\n file.line(dialect.byte(this.initdata[i]));\n }\n for (let [symbol,value] of Object.entries(this.equates)) {\n file.line(dialect.equate(symbol, value));\n }\n }\n // TODO: move cfname functions in here too\n getFieldRange(component: ComponentType, fieldName: string) {\n return this.fieldranges[mksymbol(component, fieldName)];\n }\n getByteOffset(range: FieldArray, access: FieldAccess, entityID: number) {\n if (entityID < range.elo) throw new ECSError(`entity ID ${entityID} too low for ${access.symbol}`);\n if (entityID > range.ehi) throw new ECSError(`entity ID ${entityID} too high for ${access.symbol}`);\n let ofs = this.symbols[access.symbol];\n if (ofs !== undefined) {\n return ofs + entityID - range.elo;\n }\n throw new ECSError(`cannot find field access for ${access.symbol}`);\n }\n getOriginSymbol() {\n let a = this.ofs2sym.get(0);\n if (!a) throw new ECSError('getOriginSymbol(): no symbol at offset 0'); // TODO\n return a[0];\n }\n}\n\nclass UninitDataSegment extends DataSegment {\n}\n\nclass ConstDataSegment extends DataSegment {\n}\n\n// TODO: none of this makes sense\nfunction getFieldBits(f: IntType) {\n //let n = Math.abs(f.lo) + f.hi + 1;\n let n = f.hi - f.lo + 1;\n return Math.ceil(Math.log2(n));\n}\n\nfunction getFieldLength(f: DataType) {\n if (f.dtype == 'int') {\n return f.hi - f.lo + 1;\n } else {\n return 1; //TODO?\n }\n}\n\nfunction getPackedFieldSize(f: DataType, constValue?: DataValue): number {\n if (f.dtype == 'int') {\n return getFieldBits(f);\n } if (f.dtype == 'array' && f.index) {\n return 0; // TODO? getFieldLength(f.index) * getPackedFieldSize(f.elem);\n } if (f.dtype == 'array' && constValue != null && Array.isArray(constValue)) {\n return constValue.length * getPackedFieldSize(f.elem);\n } if (f.dtype == 'ref') {\n return 8; // TODO: > 256 entities?\n }\n return 0;\n}\n\nclass EntitySet {\n atypes: EntityArchetype[];\n entities: Entity[];\n scope;\n\n constructor(scope: EntityScope, query?: Query, e?: Entity[]) {\n this.scope = scope;\n if (query) {\n if (query.entities) {\n this.entities = query.entities.slice(0);\n } else {\n this.atypes = scope.em.archetypesMatching(query);\n this.entities = scope.entitiesMatching(this.atypes);\n }\n // TODO: desc?\n if (query.limit) {\n this.entities = this.entities.slice(0, query.limit);\n }\n } else if (e) {\n this.entities = e;\n } else {\n throw new ECSError('invalid EntitySet constructor')\n }\n if (!this.atypes) {\n let at = new Set();\n for (let e of this.entities) at.add(e.etype);\n this.atypes = Array.from(at.values());\n }\n }\n contains(c: ComponentType, f: DataField, where: SourceLocated) {\n // TODO: action for error msg\n return this.scope.em.singleComponentWithFieldName(this.atypes, f.name, where);\n }\n intersection(qr: EntitySet) {\n let ents = this.entities.filter(e => qr.entities.includes(e));\n return new EntitySet(this.scope, undefined, ents);\n }\n union(qr: EntitySet) {\n // TODO: remove dups\n let ents = this.entities.concat(qr.entities);\n let atypes = this.atypes.concat(qr.atypes);\n return new EntitySet(this.scope, undefined, ents);\n }\n isContiguous() {\n if (this.entities.length == 0) return true;\n let id = this.entities[0].id;\n for (let i = 1; i < this.entities.length; i++) {\n if (this.entities[i].id != ++id) return false;\n }\n return true;\n }\n}\n\nclass IndexRegister {\n lo: number | null;\n hi: number | null;\n elo: number;\n ehi: number;\n eset: EntitySet | undefined;\n\n constructor(\n public readonly scope: EntityScope,\n eset?: EntitySet\n ) {\n this.elo = 0;\n this.ehi = scope.entities.length - 1;\n this.lo = null;\n this.hi = null;\n if (eset) { this.narrowInPlace(eset); }\n }\n entityCount() {\n return this.ehi - this.elo + 1;\n }\n clone() {\n return Object.assign(new IndexRegister(this.scope), this);\n }\n narrow(eset: EntitySet, action?: SourceLocated) {\n let i = this.clone();\n return i.narrowInPlace(eset, action) ? i : null;\n }\n narrowInPlace(eset: EntitySet, action?: SourceLocated): boolean {\n if (this.scope != eset.scope) throw new ECSError(`scope mismatch`, action);\n if (!eset.isContiguous()) throw new ECSError(`entities are not contiguous`, action);\n if (this.eset) {\n this.eset = this.eset.intersection(eset);\n } else {\n this.eset = eset;\n }\n if (this.eset.entities.length == 0) {\n return false;\n }\n let newelo = this.eset.entities[0].id;\n let newehi = this.eset.entities[this.eset.entities.length - 1].id;\n if (this.lo === null || this.hi === null) {\n this.lo = 0;\n this.hi = newehi - newelo;\n this.elo = newelo;\n this.ehi = newehi;\n } else {\n //if (action) console.log((action as any).event, this.elo, '-', this.ehi, '->', newelo, '..', newehi);\n this.lo += newelo - this.elo;\n this.hi += newehi - this.ehi;\n }\n return true;\n }\n // TODO: removegi\n offset() {\n return this.lo || 0;\n }\n}\n\n// todo: generalize\nclass ActionCPUState {\n working: EntitySet;\n props: {[key: string] : string};\n xreg: IndexRegister | null = null;\n yreg: IndexRegister | null = null;\n}\n\nclass ActionEval {\n em : EntityManager;\n dialect : Dialect_CA65;\n tmplabel = '';\n label : string;\n seq : number;\n //used = new Set(); // TODO\n\n constructor(\n readonly scope: EntityScope,\n readonly instance: SystemInstance,\n readonly action: Action,\n readonly eventargs: string[])\n {\n this.em = scope.em;\n this.dialect = scope.em.dialect;\n this.tmplabel = this.dialect.tempLabel(this.instance);\n //let query = (this.action as ActionWithQuery).query;\n //TODO? if (query && this.entities.length == 0)\n //throw new ECSError(`query doesn't match any entities`, query); // TODO \n this.seq = this.em.seq++;\n this.label = `${this.instance.system.name}__${action.event}__${this.seq}`;\n }\n begin() {\n }\n end() {\n }\n codeToString(): string {\n let code = this.exprToCode(this.action.expr);\n return code;\n }\n private replaceTags(code: string, action: Action, props: { [name: string]: string; }) {\n const tag_re = /\\{\\{(.+?)\\}\\}/g;\n code = code.replace(tag_re, (entire, group: string) => {\n let toks = group.split(/\\s+/);\n if (toks.length == 0)\n throw new ECSError(`empty command`, action);\n let cmd = group.charAt(0);\n let arg0 = toks[0].substring(1).trim();\n let args = [arg0].concat(toks.slice(1));\n switch (cmd) {\n case '!': return this.__emit(args);\n case '$': return this.__local(args);\n case '^': return this.__use(args);\n case '#': return this.__arg(args);\n case '&': return this.__eid(args);\n case '<': return this.__get([arg0, '0']);\n case '>': return this.__get([arg0, '8']);\n default:\n let value = props[toks[0]];\n if (value)\n return value;\n let fn = (this as any)['__' + toks[0]];\n if (fn)\n return fn.bind(this)(toks.slice(1));\n throw new ECSError(`unrecognized command {{${toks[0]}}}`, action);\n }\n });\n return code;\n }\n private replaceLabels(code: string) {\n const label_re = /@(\\w+)\\b/g;\n let seq = this.em.seq++;\n let label = `${this.instance.system.name}__${this.action.event}__${seq}`;\n code = code.replace(label_re, (s: string, a: string) => `${label}__${a}`);\n return code;\n }\n\n __get(args: string[]) {\n return this.getset(args, false);\n }\n __set(args: string[]) {\n return this.getset(args, true);\n }\n getset(args: string[], canwrite: boolean) {\n let fieldName = args[0];\n let bitofs = parseInt(args[1] || '0');\n return this.generateCodeForField(fieldName, bitofs, canwrite);\n }\n parseFieldArgs(args: string[]) {\n let fieldName = args[0];\n let bitofs = parseInt(args[1] || '0');\n let component = this.em.singleComponentWithFieldName(this.scope.state.working.atypes, fieldName, this.action);\n let field = component.fields.find(f => f.name == fieldName);\n if (field == null) throw new ECSError(`no field named \"${fieldName}\" in component`, this.action);\n return { component, field, bitofs };\n }\n __base(args: string[]) {\n let { component, field, bitofs } = this.parseFieldArgs(args);\n return this.dialect.fieldsymbol(component, field, bitofs);\n }\n __data(args: string[]) {\n let { component, field, bitofs } = this.parseFieldArgs(args);\n let entities = this.scope.state.working.entities;\n if (entities.length != 1) throw new ECSError(`data operates on exactly one entity`, this.action); // TODO?\n let eid = entities[0].id; // TODO?\n return this.dialect.datasymbol(component, field, eid, bitofs);\n }\n __const(args: string[]) {\n let { component, field, bitofs } = this.parseFieldArgs(args);\n let entities = this.scope.state.working.entities;\n if (entities.length != 1) throw new ECSError(`const operates on exactly one entity`, this.action); // TODO?\n let constVal = entities[0].consts[mksymbol(component, field.name)];\n if (constVal === undefined) throw new ECSError(`field is not constant`, this.action); // TODO?\n if (typeof constVal !== 'number') throw new ECSError(`field is not numeric`, this.action); // TODO?\n return constVal << bitofs;\n }\n __index(args: string[]) {\n // TODO: check select type and if we actually have an index...\n let ident = args[0];\n let index = parseInt(args[1] || '0');\n let entities = this.scope.state.working.entities;\n if (entities.length == 1) {\n return this.dialect.absolute(ident);\n } else {\n return this.dialect.indexed_x(ident, index); //TODO?\n }\n }\n __eid(args: string[]) {\n let e = this.scope.getEntityByName(args[0] || '?');\n if (!e) throw new ECSError(`can't find entity named \"${args[0]}\"`, this.action);\n return e.id.toString();\n }\n __use(args: string[]) {\n return this.scope.includeResource(args[0]);\n }\n __emit(args: string[]) {\n let event = args[0];\n let eventargs = args.slice(1);\n try {\n return this.scope.generateCodeForEvent(event, eventargs);\n } catch (e) {\n if (e.$sources) e.$sources.push(this.action);\n throw e;\n }\n }\n __local(args: string[]) {\n let tempinc = parseInt(args[0]);\n let tempbytes = this.instance.system.tempbytes;\n if (isNaN(tempinc)) throw new ECSError(`bad temporary offset`, this.action);\n if (!tempbytes) throw new ECSError(`this system has no locals`, this.action);\n if (tempinc < 0 || tempinc >= tempbytes) throw new ECSError(`this system only has ${tempbytes} locals`, this.action);\n this.scope.updateTempLiveness(this.instance);\n return `${this.tmplabel}+${tempinc}`;\n }\n __arg(args: string[]) {\n let argindex = parseInt(args[0] || '0');\n let argvalue = this.eventargs[argindex] || '';\n //this.used.add(`arg_${argindex}_${argvalue}`);\n return argvalue;\n }\n __start(args: string[]) {\n let startSymbol = this.dialect.scopeSymbol(args[0]);\n return this.dialect.jump(startSymbol);\n }\n generateCodeForField(fieldName: string, bitofs: number, canWrite: boolean): string {\n const action = this.action;\n const qr = this.scope.state.working;\n\n var component: ComponentType;\n var baseLookup = false;\n var entityLookup = false;\n let entities: Entity[];\n // is qualified field?\n if (fieldName.indexOf('.') > 0) {\n let [entname, fname] = fieldName.split('.');\n let ent = this.scope.getEntityByName(entname);\n if (ent == null) throw new ECSError(`no entity named \"${entname}\" in this scope`, action);\n component = this.em.singleComponentWithFieldName([ent.etype], fname, action);\n fieldName = fname;\n entities = [ent];\n entityLookup = true;\n } else if (fieldName.indexOf(':') > 0) {\n let [cname, fname] = fieldName.split(':');\n component = this.em.getComponentByName(cname);\n if (component == null) throw new ECSError(`no component named \"${cname}\"`, action)\n entities = this.scope.state.working.entities;\n fieldName = fname;\n baseLookup = true;\n } else {\n component = this.em.singleComponentWithFieldName(qr.atypes, fieldName, action);\n entities = this.scope.state.working.entities;\n }\n // find archetypes\n let field = component.fields.find(f => f.name == fieldName);\n if (field == null) throw new ECSError(`no field named \"${fieldName}\" in component`, action);\n let ident = this.dialect.fieldsymbol(component, field, bitofs);\n // see if all entities have the same constant value\n // TODO: should be done somewhere else?\n let constValues = new Set();\n let isConst = false;\n for (let e of entities) {\n let constVal = e.consts[mksymbol(component, fieldName)];\n if (constVal !== undefined) isConst = true;\n constValues.add(constVal); // constVal === undefined is allowed\n }\n // can't write to constant\n if (isConst && canWrite)\n throw new ECSError(`can't write to constant field ${fieldName}`, action);\n // is it a constant?\n if (constValues.size == 1) {\n let value = constValues.values().next().value as DataValue;\n // TODO: what about symbols?\n // TODO: use dialect\n if (typeof value === 'number') {\n return `#${(value >> bitofs) & 0xff}`;\n }\n }\n // TODO: offset > 0?\n // TODO: don't mix const and init data\n let range = this.scope.getFieldRange(component, field.name);\n if (!range) throw new ECSError(`couldn't find field for ${component.name}:${fieldName}, maybe no entities?`); // TODO\n // TODO: dialect\n // TODO: doesnt work for entity.field\n // TODO: array field baseoffset?\n if (baseLookup) {\n return this.dialect.absolute(ident);\n } else if (entities.length == 1) {\n // TODO: qr or this.entites?\n let eidofs = entities[0].id - range.elo; // TODO: negative?\n return this.dialect.absolute(ident, eidofs);\n } else {\n let ir;\n let int;\n let eidofs;\n let xreg = this.scope.state.xreg;\n let yreg = this.scope.state.yreg;\n if (xreg && (int = xreg.eset?.intersection(qr))) {\n //console.log(eidofs,'x',qr.entities[0].id,xreg.elo,int.entities[0].id,xreg.offset(),range.elo);\n ir = xreg.eset;\n //eidofs -= xreg.offset();\n //eidofs -= int.entities[0].id - xreg.elo;\n eidofs = xreg.elo - range.elo;\n // TODO? if (xreg.ehi > range.ehi) throw new ECSError(`field \"${field.name}\" could overflow`, action);\n } else if (yreg && (int = yreg.eset?.intersection(qr))) {\n ir = yreg.eset;\n //eidofs -= yreg.offset();\n eidofs = yreg.elo - range.elo;\n } else {\n ir = null;\n eidofs = 0;\n }\n if (!ir) {\n throw new ECSError(`no intersection for index register`, action);\n }\n if (ir.entities.length == 0) throw new ECSError(`no common entities for index register`, action);\n if (!ir.isContiguous()) throw new ECSError(`entities in query are not contiguous`, action);\n if (ir == this.scope.state.xreg?.eset)\n return this.dialect.indexed_x(ident, eidofs);\n if (ir == this.scope.state.yreg?.eset)\n return this.dialect.indexed_y(ident, eidofs);\n throw new ECSError(`cannot find \"${component.name}:${field.name}\" in state`, action);\n }\n }\n getJoinField(action: Action, atypes: EntityArchetype[], jtypes: EntityArchetype[]): ComponentFieldPair {\n let refs = Array.from(this.scope.iterateArchetypeFields(atypes, (c, f) => f.dtype == 'ref'));\n // TODO: better error message\n if (refs.length == 0) throw new ECSError(`cannot find join fields`, action);\n if (refs.length > 1) throw new ECSError(`cannot join multiple fields (${refs.map(r => r.f.name).join(' ')})`, action);\n // TODO: check to make sure join works\n return refs[0]; // TODO\n /* TODO\n let match = refs.map(ref => this.em.archetypesMatching((ref.f as RefType).query));\n for (let ref of refs) {\n let m = this.em.archetypesMatching((ref.f as RefType).query);\n for (let a of m) {\n if (jtypes.includes(a.etype)) {\n console.log(a,m);\n }\n }\n }\n */\n }\n isSubroutineSized(code: string) {\n // TODO?\n if (code.length > 20000) return false;\n if (code.split('\\n ').length >= 4) return true; // TODO: :^/\n return false;\n }\n exprToCode(expr: Expr) : string {\n if (isQueryExpr(expr)) {\n return this.queryExprToCode(expr);\n }\n if (isBlockStmt(expr)) {\n return this.blockStmtToCode(expr);\n }\n if (isInlineCode(expr)) {\n return this.evalInlineCode(expr.code);\n }\n throw new ECSError(`cannot convert expression to code`, expr);\n }\n evalInlineCode(code: string) {\n let props = this.scope.state.props || {};\n // replace @labels\n code = this.replaceLabels(code);\n // replace {{...}} tags\n // TODO: use nodes instead\n code = this.replaceTags(code, this.action, props);\n return code;\n }\n blockStmtToCode(expr: BlockExpr) {\n return expr.stmts.map(node => this.exprToCode(node)).join('\\n');\n }\n queryExprToCode(qexpr: QueryExpr) : string {\n //console.log('query', this.action.event, qexpr.select, qexpr.query.include);\n let q = this.startQuery(qexpr);\n // TODO: move elsewhere? is \"foreach\" and \"join\" part of the empty set?\n const allowEmpty = ['if','foreach','join'];\n if (q.working.entities.length == 0 && allowEmpty.includes(qexpr.select)) {\n //console.log('empty', this.action.event);\n this.endQuery(q);\n return '';\n } else {\n this.scope.state.working = q.working;\n this.scope.state.props = q.props;\n //console.log('begin', this.action.event, this.scope.state);\n q.code = this.evalInlineCode(q.code);\n let body = this.blockStmtToCode(qexpr);\n this.endQuery(q);\n //console.log('end', this.action.event, this.scope.state);\n body = q.code.replace('%%CODE%%', body);\n return body;\n }\n }\n queryWorkingSet(qexpr: QueryExpr) {\n const scope = this.scope;\n const instance = this.instance;\n let select = qexpr.select;\n let q = qexpr.query;\n let qr = new EntitySet(scope, q);\n // narrow query w/ working set?\n if (!(qexpr.all || q.entities)) {\n let ir = qr.intersection(scope.state.working);\n // if intersection is empty, take the global set\n // if doing otherwise would generate an error (execpt for \"if\")\n // TODO: ambiguous?\n if (ir.entities.length || select == 'if') {\n qr = ir;\n }\n }\n // TODO? error if none?\n if (instance.params.refEntity && instance.params.refField) {\n let rf = instance.params.refField;\n if (rf.f.dtype == 'ref') {\n let rq = rf.f.query;\n qr = qr.intersection(new EntitySet(scope, rq));\n //console.log('with', instance.params, rq, this.qr);\n }\n } else if (instance.params.query) {\n qr = qr.intersection(new EntitySet(scope, instance.params.query));\n }\n return qr;\n }\n updateIndexRegisters(qr: EntitySet, jr: EntitySet | null, select: SelectType) {\n const action = this.action;\n const scope = this.scope;\n const instance = this.instance;\n const state = this.scope.state;\n // TODO: generalize to other cpus/langs\n if (qr.entities.length > 1) {\n switch (select) {\n case 'once':\n break;\n case 'foreach':\n case 'unroll':\n if (state.xreg && state.yreg) throw new ECSError('no more index registers', action);\n if (state.xreg) state.yreg = new IndexRegister(scope, qr);\n else state.xreg = new IndexRegister(scope, qr);\n break;\n case 'join':\n // TODO: Joins don't work in superman (arrays offset?)\n // ignore the join query, use the ref\n if (state.xreg || state.yreg) throw new ECSError('no free index registers for join', action);\n if (jr) state.xreg = new IndexRegister(scope, jr);\n state.yreg = new IndexRegister(scope, qr);\n break;\n case 'if':\n case 'with':\n // TODO: what if not in X because 1 element?\n if (state.xreg && state.xreg.eset) {\n state.xreg = state.xreg.narrow(qr, action);\n } else if (select == 'with') {\n if (instance.params.refEntity && instance.params.refField) {\n if (state.xreg)\n state.xreg.eset = qr;\n else\n state.xreg = new IndexRegister(scope, qr);\n // ???\n }\n }\n break;\n }\n }\n }\n getCodeAndProps(qexpr: QueryExpr, qr: EntitySet, jr: EntitySet|null, \n oldState: ActionCPUState)\n {\n // get properties and code\n const entities = qr.entities;\n const select = qexpr.select;\n let code = '%%CODE%%';\n let props: { [name: string]: string } = {};\n // TODO: detect cycles\n // TODO: \"source\"?\n // TODO: what if only 1 item?\n // TODO: what if join is subset of items?\n if (select == 'join' && jr) {\n //let jentities = this.jr.entities;\n // TODO? \n // TODO? throw new ECSError(`join query doesn't match any entities`, (action as ActionWithJoin).join); // TODO \n //console.log('join', qr, jr);\n if (qr.entities.length) {\n let joinfield = this.getJoinField(this.action, qr.atypes, jr.atypes);\n // TODO: what if only 1 item?\n // TODO: should be able to access fields via Y reg\n code = this.wrapCodeInLoop(code, qexpr, qr.entities, joinfield);\n props['%joinfield'] = this.dialect.fieldsymbol(joinfield.c, joinfield.f, 0); //TODO?\n }\n }\n // select subset of entities\n let fullEntityCount = qr.entities.length; //entities.length.toString();\n // TODO: let loopreduce = !loopents || entities.length < loopents.length;\n //console.log(action.event, entities.length, loopents.length);\n // filter entities from loop?\n // TODO: when to ignore if entities.length == 1 and not in for loop?\n if (select == 'with') {\n // TODO? when to load x?\n if (this.instance.params.refEntity && this.instance.params.refField) {\n let re = this.instance.params.refEntity;\n let rf = this.instance.params.refField;\n code = this.wrapCodeInRefLookup(code);\n // TODO: only fetches 1st entity in list, need offset\n let range = this.scope.getFieldRange(rf.c, rf.f.name);\n let eidofs = re.id - range.elo;\n props['%reffield'] = `${this.dialect.fieldsymbol(rf.c, rf.f, 0)}+${eidofs}`;\n } else {\n code = this.wrapCodeInFilter(code, qr, oldState, props);\n }\n }\n if (select == 'if') {\n code = this.wrapCodeInFilter(code, qr, oldState, props);\n }\n if (select == 'foreach' && entities.length > 1) {\n code = this.wrapCodeInLoop(code, qexpr, qr.entities);\n }\n if (select == 'unroll' && entities.length > 1) {\n throw new ECSError('unroll is not yet implemented');\n }\n // define properties\n if (entities.length) {\n props['%elo'] = entities[0].id.toString();\n props['%ehi'] = entities[entities.length - 1].id.toString();\n }\n props['%ecount'] = entities.length.toString();\n props['%efullcount'] = fullEntityCount.toString();\n //console.log('working', action.event, working.entities.length, entities.length);\n return { code, props };\n }\n startQuery(qexpr: QueryExpr) {\n const scope = this.scope;\n const action = this.action;\n const select = qexpr.select;\n\n // save old state and make clone\n const oldState = this.scope.state;\n this.scope.state = Object.assign(new ActionCPUState(), oldState);\n\n // get working set for this query\n const qr = this.queryWorkingSet(qexpr);\n \n // is it a join? query that too\n const jr = qexpr.join && qr.entities.length ? new EntitySet(scope, qexpr.join) : null;\n\n // update x, y state\n this.updateIndexRegisters(qr, jr, select);\n\n const { code, props } = this.getCodeAndProps(qexpr, qr, jr, oldState);\n\n // if join, working set is union of both parts\n let working = jr ? qr.union(jr) : qr;\n \n return { working, oldState, props, code };\n }\n endQuery(q : { oldState: ActionCPUState }) {\n this.scope.state = q.oldState;\n }\n wrapCodeInLoop(code: string, qexpr: QueryExpr, ents: Entity[], joinfield?: ComponentFieldPair): string {\n // TODO: check ents\n // TODO: check segment bounds\n // TODO: what if 0 or 1 entitites?\n // TODO: check > 127 or > 255\n let dir = qexpr.direction;\n let s = dir == 'desc' ? this.dialect.ASM_ITERATE_EACH_DESC : this.dialect.ASM_ITERATE_EACH_ASC;\n if (joinfield) s = dir == 'desc' ? this.dialect.ASM_ITERATE_JOIN_DESC : this.dialect.ASM_ITERATE_JOIN_ASC;\n s = s.replace('{{%code}}', code);\n return s;\n }\n wrapCodeInFilter(code: string, qr: EntitySet, oldState: ActionCPUState, props: any) {\n // TODO: :-p filters too often?\n const ents = qr.entities;\n const ents2 = oldState.xreg?.eset?.entities;\n if (ents && ents.length && ents2) {\n let lo = ents[0].id;\n let hi = ents[ents.length - 1].id;\n let lo2 = ents2[0].id;\n let hi2 = ents2[ents2.length - 1].id;\n if (lo != lo2) {\n code = this.dialect.ASM_FILTER_RANGE_LO_X.replace('{{%code}}', code);\n props['%xofs'] = lo - lo2;\n }\n if (hi != hi2) {\n code = this.dialect.ASM_FILTER_RANGE_HI_X.replace('{{%code}}', code);\n }\n }\n return code;\n }\n wrapCodeInRefLookup(code: string) {\n code = this.dialect.ASM_LOOKUP_REF_X.replace('{{%code}}', code);\n return code;\n }\n}\n\nclass EventCodeStats {\n constructor(\n public readonly inst: SystemInstance,\n public readonly action: Action,\n public readonly eventcode: string\n ) { }\n labels : string[] = [];\n count : number = 0;\n}\n\nexport class EntityScope implements SourceLocated {\n $loc: SourceLocation;\n childScopes: EntityScope[] = [];\n instances: SystemInstance[] = [];\n entities: Entity[] = [];\n fieldtypes: { [name: string]: 'init' | 'const' } = {};\n sysstats = new Map();\n bss = new UninitDataSegment();\n rodata = new ConstDataSegment();\n code = new CodeSegment();\n componentsInScope = new Set();\n resources = new Set();\n state;\n isDemo = false;\n filePath = '';\n\n eventSeq : number;\n eventCodeStats : { [code:string] : EventCodeStats };\n inCritical = 0;\n\n constructor(\n public readonly em: EntityManager,\n public readonly dialect: Dialect_CA65,\n public readonly name: string,\n public readonly parent: EntityScope | undefined\n ) {\n parent?.childScopes.push(this);\n this.state = new ActionCPUState();\n // TODO: parent scope entities too?\n this.state.working = new EntitySet(this, undefined, this.entities); // working set = all entities\n }\n newEntity(etype: EntityArchetype, name: string): Entity {\n // TODO: add parent ID? lock parent scope?\n // TODO: name identical check?\n if (name && this.getEntityByName(name))\n throw new ECSError(`already an entity named \"${name}\"`);\n let id = this.entities.length;\n etype = this.em.addArchetype(etype);\n let entity: Entity = { id, etype, consts: {}, inits: {} };\n for (let c of etype.components) {\n this.componentsInScope.add(c.name);\n }\n entity.name = name;\n this.entities.push(entity);\n return entity;\n }\n newSystemInstance(inst: SystemInstance) {\n if (!inst) throw new Error();\n inst.id = this.instances.length+1;\n this.instances.push(inst);\n this.em.registerSystemEvents(inst.system);\n return inst;\n }\n newSystemInstanceWithDefaults(system: System) {\n return this.newSystemInstance({ system, params: {}, id:0 });\n }\n getSystemInstanceNamed(name: string) {\n return this.instances.find(sys => sys.system.name == name);\n }\n getEntityByName(name: string) {\n return this.entities.find(e => e.name == name);\n }\n *iterateEntityFields(entities: Entity[]) {\n for (let i = 0; i < entities.length; i++) {\n let e = entities[i];\n for (let c of e.etype.components) {\n for (let f of c.fields) {\n yield { i, e, c, f, v: e.consts[mksymbol(c, f.name)] };\n }\n }\n }\n }\n *iterateArchetypeFields(arch: EntityArchetype[], filter?: (c: ComponentType, f: DataField) => boolean) {\n for (let i = 0; i < arch.length; i++) {\n let a = arch[i];\n for (let c of a.components) {\n for (let f of c.fields) {\n if (!filter || filter(c, f))\n yield { i, c, f };\n }\n }\n }\n }\n *iterateChildScopes() {\n for (let scope of this.childScopes) {\n yield scope;\n }\n }\n entitiesMatching(atypes: EntityArchetype[]) {\n let result: Entity[] = [];\n for (let e of this.entities) {\n for (let a of atypes) {\n // TODO: what about subclasses?\n // TODO: very scary identity ocmpare\n if (e.etype === a) {\n result.push(e);\n break;\n }\n }\n }\n return result;\n }\n hasComponent(ctype: ComponentType) {\n return this.componentsInScope.has(ctype.name);\n }\n buildSegments() {\n // build FieldArray for each component/field pair\n // they will be different for bss/rodata segments\n let iter = this.iterateEntityFields(this.entities);\n for (var o = iter.next(); o.value; o = iter.next()) {\n let { i, e, c, f, v } = o.value;\n // constants and array pointers go into rodata\n let cfname = mksymbol(c, f.name);\n let ftype = this.fieldtypes[cfname];\n let isConst = ftype == 'const';\n let segment = isConst ? this.rodata : this.bss;\n if (v === undefined && isConst)\n throw new ECSError(`no value for const field ${cfname}`, e);\n // determine range of indices for entities\n let array = segment.fieldranges[cfname];\n if (!array) {\n array = segment.fieldranges[cfname] = { component: c, field: f, elo: i, ehi: i };\n } else {\n array.ehi = i;\n if (array.ehi - array.elo + 1 >= 256)\n throw new ECSError(`too many entities have field ${cfname}, limit is 256`);\n }\n // set default values for entity/field\n if (!isConst) {\n if (f.dtype == 'int' && f.defvalue !== undefined) {\n let ecfname = mkscopesymbol(this, c, f.name);\n if (e.inits[ecfname] == null) {\n this.setInitValue(e, c, f, f.defvalue);\n }\n }\n }\n }\n }\n // TODO: cull unused entity fields\n allocateSegment(segment: DataSegment, alloc: boolean, type: 'init' | 'const' | undefined) {\n let fields: FieldArray[] = Object.values(segment.fieldranges);\n // TODO: fields.sort((a, b) => (a.ehi - a.elo + 1) * getPackedFieldSize(a.field));\n for (let f of fields) {\n if (this.fieldtypes[mksymbol(f.component, f.field.name)] == type) {\n //console.log(f.component.name, f.field.name, type);\n let rangelen = (f.ehi - f.elo + 1);\n // TODO: doesn't work for packed arrays too well\n let bits = getPackedFieldSize(f.field);\n // variable size? make it a pointer\n if (bits == 0) bits = 16; // TODO?\n let bytesperelem = Math.ceil(bits / 8);\n // TODO: packing bits\n // TODO: split arrays\n let access = [];\n for (let i = 0; i < bits; i += 8) {\n let symbol = this.dialect.fieldsymbol(f.component, f.field, i);\n access.push({ symbol, bit: i, width: 8 }); // TODO\n if (alloc) {\n segment.allocateBytes(symbol, rangelen); // TODO\n }\n }\n f.access = access;\n }\n }\n }\n allocateROData(segment: DataSegment) {\n let iter = this.iterateEntityFields(this.entities);\n for (var o = iter.next(); o.value; o = iter.next()) {\n let { i, e, c, f, v } = o.value;\n let cfname = mksymbol(c, f.name);\n // TODO: what if mix of var, const, and init values?\n if (this.fieldtypes[cfname] == 'const') {\n let range = segment.fieldranges[cfname];\n let entcount = range ? range.ehi - range.elo + 1 : 0;\n if (v == null && f.dtype == 'int') v = 0;\n if (v == null && f.dtype == 'ref') v = 0;\n if (v == null && f.dtype == 'array')\n throw new ECSError(`no default value for array ${cfname}`, e);\n //console.log(c.name, f.name, '#'+e.id, '=', v);\n // this is a constant\n // is it a byte array?\n //TODO? if (ArrayBuffer.isView(v) && f.dtype == 'array') {\n if (v instanceof Uint8Array && f.dtype == 'array') {\n let ptrlosym = this.dialect.fieldsymbol(c, f, 0);\n let ptrhisym = this.dialect.fieldsymbol(c, f, 8);\n let loofs = segment.allocateBytes(ptrlosym, entcount);\n let hiofs = segment.allocateBytes(ptrhisym, entcount);\n let datasym = this.dialect.datasymbol(c, f, e.id, 0);\n segment.allocateInitData(datasym, v);\n if (f.baseoffset) datasym = `(${datasym}+${f.baseoffset})`;\n segment.initdata[loofs + e.id - range.elo] = { symbol: datasym, bitofs: 0 };\n segment.initdata[hiofs + e.id - range.elo] = { symbol: datasym, bitofs: 8 };\n } else if (typeof v === 'number') {\n // more than 1 entity, add an array\n // TODO: infer need for array by usage\n /*if (entcount > 1)*/ {\n if (!range.access) throw new ECSError(`no access for field ${cfname}`)\n for (let a of range.access) {\n segment.allocateBytes(a.symbol, entcount);\n let ofs = segment.getByteOffset(range, a, e.id);\n // TODO: this happens if you forget a const field on an object?\n if (e.id < range.elo) throw new ECSError('entity out of range ' + c.name + ' ' + f.name, e);\n if (segment.initdata[ofs] !== undefined) throw new ECSError('initdata already set ' + ofs), e;\n segment.initdata[ofs] = (v >> a.bit) & 0xff;\n }\n }\n } else if (v == null && f.dtype == 'array' && f.index) {\n // TODO\n let datasym = this.dialect.datasymbol(c, f, e.id, 0);\n let databytes = getFieldLength(f.index);\n let offset = this.bss.allocateBytes(datasym, databytes);\n // TODO? this.allocatePointerArray(c, f, datasym, entcount);\n let ptrlosym = this.dialect.fieldsymbol(c, f, 0);\n let ptrhisym = this.dialect.fieldsymbol(c, f, 8);\n // TODO: what if we don't need a pointer array?\n let loofs = segment.allocateBytes(ptrlosym, entcount);\n let hiofs = segment.allocateBytes(ptrhisym, entcount);\n if (f.baseoffset) datasym = `(${datasym}+${f.baseoffset})`;\n segment.initdata[loofs + e.id - range.elo] = { symbol: datasym, bitofs: 0 };\n segment.initdata[hiofs + e.id - range.elo] = { symbol: datasym, bitofs: 8 };\n } else {\n // TODO: bad error message - should say \"wrong type, should be array\"\n throw new ECSError(`unhandled constant ${e.id}:${cfname} -- ${typeof v}`);\n }\n }\n }\n //console.log(segment.initdata)\n }\n allocateInitData(segment: DataSegment) {\n if (segment.size == 0) return '';\n let initbytes = new Uint8Array(segment.size);\n let iter = this.iterateEntityFields(this.entities);\n for (var o = iter.next(); o.value; o = iter.next()) {\n let { i, e, c, f, v } = o.value;\n let scfname = mkscopesymbol(this, c, f.name);\n let initvalue = e.inits[scfname];\n if (initvalue !== undefined) {\n let range = segment.getFieldRange(c, f.name);\n if (!range) throw new ECSError(`no init range for ${scfname}`, e); \n if (!range.access) throw new ECSError(`no init range access for ${scfname}`, e);\n if (typeof initvalue === 'number') {\n for (let a of range.access) {\n let offset = segment.getByteOffset(range, a, e.id);\n initbytes[offset] = (initvalue >> a.bit) & ((1 << a.width) - 1);\n }\n } else if (initvalue instanceof Uint8Array) {\n // TODO: 16/32...\n let datasym = this.dialect.datasymbol(c, f, e.id, 0);\n let ofs = this.bss.symbols[datasym];\n initbytes.set(initvalue, ofs);\n } else {\n // TODO: init arrays?\n throw new ECSError(`cannot initialize ${scfname} = ${initvalue}`); // TODO??\n }\n }\n }\n // build the final init buffer\n // TODO: compress 0s?\n let bufsym = this.name + '__INITDATA';\n let bufofs = this.rodata.allocateInitData(bufsym, initbytes);\n let code = this.dialect.INIT_FROM_ARRAY;\n //TODO: function to repalce from dict?\n code = code.replace('{{%nbytes}}', initbytes.length.toString())\n code = code.replace('{{%src}}', bufsym);\n code = code.replace('{{%dest}}', segment.getOriginSymbol());\n return code;\n }\n getFieldRange(c: ComponentType, fn: string) {\n return this.bss.getFieldRange(c, fn) || this.rodata.getFieldRange(c, fn);\n }\n setConstValue(e: Entity, component: ComponentType, field: DataField, value: DataValue) {\n this.setConstInitValue(e, component, field, value, 'const');\n }\n setInitValue(e: Entity, component: ComponentType, field: DataField, value: DataValue) {\n this.setConstInitValue(e, component, field, value, 'init');\n }\n setConstInitValue(e: Entity, component: ComponentType, field: DataField, value: DataValue,\n type: 'const'|'init')\n {\n this.checkFieldValue(field, value);\n let fieldName = field.name;\n let cfname = mksymbol(component, fieldName);\n let ecfname = mkscopesymbol(this, component, fieldName);\n if (e.consts[cfname] !== undefined) throw new ECSError(`\"${fieldName}\" is already defined as a constant`, e);\n if (e.inits[ecfname] !== undefined) throw new ECSError(`\"${fieldName}\" is already defined as a variable`, e);\n if (type == 'const') e.consts[cfname] = value;\n if (type == 'init') e.inits[ecfname] = value;\n this.fieldtypes[cfname] = type;\n }\n isConstOrInit(component: ComponentType, fieldName: string) : 'const' | 'init' {\n return this.fieldtypes[mksymbol(component, fieldName)];\n }\n getConstValue(entity: Entity, fieldName: string) {\n let component = this.em.singleComponentWithFieldName([entity.etype], fieldName, entity);\n let cfname = mksymbol(component, fieldName);\n return entity.consts[cfname];\n }\n checkFieldValue(field: DataField, value: DataValue) {\n if (field.dtype == 'array') {\n if (!(value instanceof Uint8Array))\n throw new ECSError(`This \"${field.name}\" value should be an array.`);\n } else if (typeof value !== 'number') {\n throw new ECSError(`This \"${field.name}\" ${field.dtype} value should be an number.`);\n } else {\n if (field.dtype == 'int') {\n if (value < field.lo || value > field.hi)\n throw new ECSError(`This \"${field.name}\" value is out of range, should be between ${field.lo} and ${field.hi}.`);\n } else if (field.dtype == 'ref') {\n // TODO: allow override if number\n let eset = new EntitySet(this, field.query);\n if (value < 0 || value >= eset.entities.length)\n throw new ECSError(`This \"${field.name}\" value is out of range for this ref type.`);\n }\n }\n }\n generateCodeForEvent(event: string, args?: string[], codelabel?: string): string {\n // find systems that respond to event\n // and have entities in this scope\n let systems = this.em.event2systems[event];\n if (!systems || systems.length == 0) {\n // TODO: error or warning?\n //throw new ECSError(`warning: no system responds to \"${event}\"`);\n console.log(`warning: no system responds to \"${event}\"`);\n return '';\n }\n this.eventSeq++;\n // generate code\n let code = '';\n // is there a label? generate it first\n if (codelabel) { code += this.dialect.label(codelabel) + '\\n'; }\n // if \"start\" event, initialize data segment\n if (event == 'start') {\n code += this.allocateInitData(this.bss);\n }\n // iterate all instances and generate matching events\n let eventCount = 0;\n let instances = this.instances.filter(inst => systems.includes(inst.system));\n for (let inst of instances) {\n let sys = inst.system;\n for (let action of sys.actions) {\n if (action.event == event) {\n eventCount++;\n // TODO: use Tokenizer so error msgs are better\n // TODO: keep event tree\n let codeeval = new ActionEval(this, inst, action, args || []);\n codeeval.begin();\n if (action.critical) this.inCritical++;\n let eventcode = codeeval.codeToString();\n if (action.critical) this.inCritical--;\n if (!this.inCritical && codeeval.isSubroutineSized(eventcode)) {\n let normcode = this.normalizeCode(eventcode, action);\n let estats = this.eventCodeStats[normcode];\n if (!estats) {\n estats = this.eventCodeStats[normcode] = new EventCodeStats(\n inst, action, eventcode);\n }\n estats.labels.push(codeeval.label);\n estats.count++;\n if (action.critical) estats.count++; // always make critical event subroutines\n }\n let s = '';\n s += this.dialect.comment(`start action ${codeeval.label}`);\n s += eventcode;\n s += this.dialect.comment(`end action ${codeeval.label}`);\n code += s;\n // TODO: check that this happens once?\n codeeval.end();\n }\n }\n }\n if (eventCount == 0) {\n console.log(`warning: event ${event} not handled`);\n }\n return code;\n }\n normalizeCode(code: string, action: Action) {\n // TODO: use dialect to help with this\n code = code.replace(/\\b(\\w+__\\w+__)(\\d+)__(\\w+)\\b/g, (z,a,b,c) => a+c);\n return code;\n }\n getSystemStats(inst: SystemInstance) : SystemStats {\n let stats = this.sysstats.get(inst);\n if (!stats) {\n stats = new SystemStats();\n this.sysstats.set(inst, stats);\n }\n return stats;\n }\n updateTempLiveness(inst: SystemInstance) {\n let stats = this.getSystemStats(inst);\n let n = this.eventSeq;\n if (stats.tempstartseq && stats.tempendseq) {\n stats.tempstartseq = Math.min(stats.tempstartseq, n);\n stats.tempendseq = Math.max(stats.tempendseq, n);\n } else {\n stats.tempstartseq = stats.tempendseq = n;\n }\n }\n includeResource(symbol: string): string {\n this.resources.add(symbol);\n return symbol;\n }\n private allocateTempVars() {\n let pack = new Packer();\n let maxTempBytes = 128 - this.bss.size; // TODO: multiple data segs\n let bssbin = new Bin({ left:0, top:0, bottom: this.eventSeq+1, right: maxTempBytes });\n pack.bins.push(bssbin);\n for (let instance of this.instances) {\n let stats = this.getSystemStats(instance);\n if (instance.system.tempbytes && stats.tempstartseq && stats.tempendseq) {\n let v = {\n inst: instance,\n top: stats.tempstartseq,\n bottom: stats.tempendseq+1,\n width: instance.system.tempbytes,\n height: stats.tempendseq - stats.tempstartseq + 1,\n label: instance.system.name\n };\n pack.boxes.push(v);\n }\n }\n if (!pack.pack()) console.log('cannot pack temporary local vars'); // TODO\n //console.log('tempvars', pack);\n if (bssbin.extents.right > 0) {\n let tempofs = this.bss.allocateBytes('TEMP', bssbin.extents.right);\n for (let b of pack.boxes) {\n let inst : SystemInstance = (b as any).inst;\n //console.log(inst.system.name, b.box?.left);\n if (b.box) this.bss.declareSymbol(this.dialect.tempLabel(inst), tempofs + b.box.left);\n //this.bss.equates[this.dialect.tempLabel(inst)] = `TEMP+${b.box?.left}`;\n }\n }\n console.log(pack.toSVGUrl());\n }\n private analyzeEntities() {\n this.buildSegments();\n this.allocateSegment(this.bss, true, 'init'); // initialized vars\n this.allocateSegment(this.bss, true, undefined); // uninitialized vars\n this.allocateSegment(this.rodata, false, 'const'); // constants\n this.allocateROData(this.rodata);\n }\n private isMainScope() {\n return this.parent == null;\n }\n private generateCode() {\n this.eventSeq = 0;\n this.eventCodeStats = {};\n let start;\n let initsys = this.em.getSystemByName('Init');\n if (this.isMainScope() && initsys) {\n this.newSystemInstanceWithDefaults(initsys); //TODO: what if none?\n start = this.generateCodeForEvent('main_init');\n } else {\n start = this.generateCodeForEvent('start');\n }\n start = this.replaceSubroutines(start);\n this.code.addCodeFragment(start);\n for (let sub of Array.from(this.resources.values())) {\n if (!this.getSystemInstanceNamed(sub)) {\n let sys = this.em.getSystemByName(sub);\n if (!sys) throw new ECSError(`cannot find resource named \"${sub}\"`);\n this.newSystemInstanceWithDefaults(sys);\n }\n let code = this.generateCodeForEvent(sub, [], sub);\n this.code.addCodeFragment(code); // TODO: should be rodata?\n }\n //this.showStats();\n }\n replaceSubroutines(code: string) {\n // TODO: bin-packing for critical code\n // TODO: doesn't work with nested subroutines?\n // TODO: doesn't work between scopes\n let allsubs : string[] = [];\n for (let stats of Object.values(this.eventCodeStats)) {\n if (stats.count > 1) {\n if (allsubs.length == 0) {\n allsubs = [\n this.dialect.segment('rodata'),\n ]\n }\n let subcall = this.dialect.call(stats.labels[0]);\n for (let label of stats.labels) {\n let startdelim = this.dialect.comment(`start action ${label}`).trim();\n let enddelim = this.dialect.comment(`end action ${label}`).trim();\n let istart = code.indexOf(startdelim);\n let iend = code.indexOf(enddelim, istart);\n if (istart >= 0 && iend > istart) {\n code = code.substring(0, istart) + subcall + code.substring(iend + enddelim.length);\n }\n }\n let substart = stats.labels[0];\n let alignment = this.getAlignment(stats.action.fitbytes || 0);\n let sublines = [\n this.dialect.segment('rodata'),\n this.dialect.align(alignment),\n this.dialect.label(substart),\n stats.eventcode,\n this.dialect.return(),\n ];\n if (stats.action.critical) {\n sublines.push(this.dialect.warningIfPageCrossed(substart));\n }\n if (stats.action.fitbytes) {\n sublines.push(this.dialect.warningIfMoreThan(stats.action.fitbytes, substart));\n }\n allsubs = allsubs.concat(sublines);\n }\n }\n code += allsubs.join('\\n');\n return code;\n }\n getAlignment(len: number) {\n if (!len) return 0;\n let align = 2;\n while (align < len) {\n align *= 2;\n }\n return align;\n }\n showStats() {\n for (let inst of this.instances) {\n // TODO?\n console.log(inst.system.name, this.getSystemStats(inst));\n }\n }\n private dumpCodeTo(file: SourceFileExport) {\n let shouldExport = this.instances.length == 0;\n let dialect = this.dialect;\n file.line(dialect.startScope(this.name));\n file.line(dialect.segment('bss'));\n this.bss.dump(file, dialect, shouldExport);\n file.line(dialect.segment('code')); // TODO: rodata for aligned?\n this.rodata.dump(file, dialect, shouldExport);\n //file.segment(`${this.name}_CODE`, 'code');\n file.line(dialect.label('__Start'));\n this.code.dump(file);\n for (let subscope of this.childScopes) {\n // TODO: overlay child BSS segments\n subscope.dump(file);\n }\n file.line(dialect.endScope(this.name));\n }\n dump(file: SourceFileExport) {\n this.analyzeEntities();\n this.generateCode();\n this.allocateTempVars();\n this.dumpCodeTo(file);\n }\n}\n\nexport class EntityManager {\n archetypes: { [key: string]: EntityArchetype } = {};\n components: { [name: string]: ComponentType } = {};\n systems: { [name: string]: System } = {};\n topScopes: { [name: string]: EntityScope } = {};\n event2systems: { [event: string]: System[] } = {};\n name2cfpairs: { [cfname: string]: ComponentFieldPair[] } = {};\n mainPath: string = '';\n imported: { [path: string]: boolean } = {};\n seq = 1;\n\n constructor(public readonly dialect: Dialect_CA65) {\n }\n newScope(name: string, parent?: EntityScope) {\n let existing = this.topScopes[name];\n if (existing && !existing.isDemo)\n throw new ECSError(`scope ${name} already defined`, existing);\n let scope = new EntityScope(this, this.dialect, name, parent);\n if (!parent) this.topScopes[name] = scope;\n return scope;\n }\n deferComponent(name: string) {\n this.components[name] = { name, fields: [] };\n }\n defineComponent(ctype: ComponentType) {\n let existing = this.components[ctype.name];\n // we can defer component definitions, just declare a component with 0 fields?\n if (existing && existing.fields.length > 0)\n throw new ECSError(`component ${ctype.name} already defined`, existing);\n if (existing) {\n existing.fields = ctype.fields;\n ctype = existing;\n }\n for (let field of ctype.fields) {\n let list = this.name2cfpairs[field.name];\n if (!list) list = this.name2cfpairs[field.name] = [];\n list.push({ c: ctype, f: field });\n }\n this.components[ctype.name] = ctype;\n return ctype;\n }\n defineSystem(system: System) {\n let existing = this.systems[system.name];\n if (existing) throw new ECSError(`system ${system.name} already defined`, existing);\n return this.systems[system.name] = system;\n }\n registerSystemEvents(system: System) {\n for (let a of system.actions) {\n let event = a.event;\n let list = this.event2systems[event];\n if (list == null) list = this.event2systems[event] = [];\n if (!list.includes(system)) list.push(system);\n }\n }\n addArchetype(atype: EntityArchetype): EntityArchetype {\n let key = atype.components.map(c => c.name).join(',');\n if (this.archetypes[key])\n return this.archetypes[key];\n else\n return this.archetypes[key] = atype;\n }\n componentsMatching(q: Query, etype: EntityArchetype) {\n let list = [];\n for (let c of etype.components) {\n if (q.exclude?.includes(c)) {\n return [];\n }\n // TODO: 0 includes == all entities?\n if (q.include.length == 0 || q.include.includes(c)) {\n list.push(c);\n }\n }\n return list.length == q.include.length ? list : [];\n }\n archetypesMatching(q: Query) {\n let result = new Set();\n for (let etype of Object.values(this.archetypes)) {\n let cmatch = this.componentsMatching(q, etype);\n if (cmatch.length > 0) {\n result.add(etype);\n }\n }\n return Array.from(result.values());\n }\n componentsWithFieldName(atypes: EntityArchetype[], fieldName: string) {\n // TODO???\n let comps = new Set();\n for (let at of atypes) {\n for (let c of at.components) {\n for (let f of c.fields) {\n if (f.name == fieldName)\n comps.add(c);\n }\n }\n }\n return Array.from(comps);\n }\n getComponentByName(name: string): ComponentType {\n return this.components[name];\n }\n getSystemByName(name: string): System {\n return this.systems[name];\n }\n singleComponentWithFieldName(atypes: EntityArchetype[], fieldName: string, where: SourceLocated) {\n let cfpairs = this.name2cfpairs[fieldName];\n if (!cfpairs) throw new ECSError(`cannot find field named \"${fieldName}\"`, where);\n let filtered = cfpairs.filter(cf => atypes.find(a => a.components.includes(cf.c)));\n if (filtered.length == 0) {\n throw new ECSError(`cannot find component with field \"${fieldName}\" in this context`, where);\n }\n if (filtered.length > 1) {\n throw new ECSError(`ambiguous field name \"${fieldName}\"`, where);\n }\n return filtered[0].c;\n }\n toJSON() {\n return JSON.stringify({\n components: this.components,\n systems: this.systems\n })\n }\n exportToFile(file: SourceFileExport) {\n for (let event of Object.keys(this.event2systems)) {\n file.line(this.dialect.equate(`EVENT__${event}`, '1'))\n }\n for (let scope of Object.values(this.topScopes)) {\n if (!scope.isDemo || scope.filePath == this.mainPath) {\n scope.dump(file);\n }\n }\n }\n *iterateScopes() {\n for (let scope of Object.values(this.topScopes)) {\n yield scope;\n scope.iterateChildScopes();\n }\n }\n getDebugTree() : {} {\n let scopes = this.topScopes;\n let components = this.components;\n let fields = this.name2cfpairs;\n let systems = this.systems;\n let events = this.event2systems;\n let entities : {[key:string]:Entity} = {};\n for (let scope of Array.from(this.iterateScopes())) {\n for (let e of scope.entities)\n entities[e.name || '#'+e.id.toString()] = e;\n }\n return { scopes, components, fields, systems, events, entities };\n }\n\n // expression stuff\n\n evalExpr(expr: Expr, scope: EntityScope | null) : Expr {\n if (isLiteral(expr)) return expr;\n if (isBinOp(expr) || isUnOp(expr)) {\n var fn = (this as any)['evalop__' + expr.op];\n if (!fn) throw new ECSError(`no eval function for \"${expr.op}\"`);\n }\n if (isBinOp(expr)) {\n expr.left = this.evalExpr(expr.left, scope);\n expr.right = this.evalExpr(expr.right, scope);\n let e = fn(expr.left, expr.right);\n return e || expr;\n }\n if (isUnOp(expr)) {\n expr.expr = this.evalExpr(expr.expr, scope);\n let e = fn(expr.expr);\n return e || expr;\n }\n return expr;\n }\n evalop__neg(arg: Expr) : Expr | undefined {\n if (isLiteralInt(arg)) {\n let valtype : IntType = { dtype:'int',\n lo: -arg.valtype.hi,\n hi: arg.valtype.hi };\n return { valtype, value: -arg.value };\n }\n }\n evalop__add(left: Expr, right: Expr) : Expr | undefined {\n if (isLiteralInt(left) && isLiteralInt(right)) {\n let valtype : IntType = { dtype:'int', \n lo: left.valtype.lo + right.valtype.lo, \n hi: left.valtype.hi + right.valtype.hi };\n return { valtype, value: left.value + right.value };\n }\n }\n evalop__sub(left: Expr, right: Expr) : Expr | undefined {\n if (isLiteralInt(left) && isLiteralInt(right)) {\n let valtype : IntType = { dtype:'int', \n lo: left.valtype.lo - right.valtype.hi, \n hi: left.valtype.hi - right.valtype.lo };\n return { valtype, value: left.value - right.value };\n }\n }\n}\n", "\nimport { SourceLocation } from \"../workertypes\";\nimport { DataValue, ECSError } from \"./ecs\";\n\nexport interface DecoderResult {\n properties: {[name: string] : DataValue}\n}\n\nabstract class LineDecoder {\n curline: number = 0; // for debugging, zero-indexed\n lines : string[][]; // array of token arrays\n\n constructor(\n text: string\n ) {\n // split the text into lines and into tokens\n this.lines = text.split('\\n').map(s => s.trim()).filter(s => !!s).map(s => s.split(/\\s+/));\n }\n\n decodeBits(s: string, n: number, msbfirst: boolean) {\n if (s.length != n) throw new ECSError(`Expected ${n} characters`);\n let b = 0;\n for (let i=0; i 1) {\n console.log(changed, cur, prev);\n throw new ECSError(`More than one register change in line ${i+1}: [${changed}]`);\n }\n let chgidx = changed.length ? changed[0] : regs.length-1;\n data[dataofs - 1] = regs[chgidx];\n data[dataofs - 2] = cur[chgidx];\n prev[chgidx] = cur[chgidx];\n }\n return {\n properties: {\n data\n }\n }\n }\n}\n\nexport class VCSBitmap48Decoder extends LineDecoder {\n parse() {\n let height = this.lines.length;\n let bitmap0 = new Uint8Array(height);\n let bitmap1 = new Uint8Array(height);\n let bitmap2 = new Uint8Array(height);\n let bitmap3 = new Uint8Array(height);\n let bitmap4 = new Uint8Array(height);\n let bitmap5 = new Uint8Array(height);\n for (let i=0; i': {f:'ne',p:50},\n '><': {f:'ne',p:50},\n '!=': {f:'ne',p:50},\n '#': {f:'ne',p:50},\n '<': {f:'lt',p:50},\n '>': {f:'gt',p:50},\n '<=': {f:'le',p:50},\n '>=': {f:'ge',p:50},\n 'MIN': {f:'min',p:75},\n 'MAX': {f:'max',p:75},\n '+': {f:'add',p:100},\n '-': {f:'sub',p:100},\n};\n\nfunction getOperator(op: string) {\n return (OPERATORS as any)[op];\n}\n\nfunction getPrecedence(tok: Token): number {\n switch (tok.type) {\n case ECSTokenType.Operator:\n case ECSTokenType.Relational:\n case TokenType.Ident:\n let op = getOperator(tok.str);\n if (op) return op.p;\n }\n return -1;\n}\n\n// is token an end of statement marker? (\":\" or end of line)\nfunction isEOS(tok: Token) {\n return tok.type == TokenType.EOL || tok.type == TokenType.Comment\n || tok.str == ':' || tok.str == 'ELSE'; // TODO: only ELSE if ifElse==true\n}\n\n///\n\nexport class ECSCompiler extends Tokenizer {\n\n currentScope: EntityScope | null = null;\n currentContext: ActionContext | null = null;\n includeDebugInfo = false;\n\n constructor(\n public readonly em: EntityManager,\n public readonly isMainFile: boolean) {\n super();\n //this.includeEOL = true;\n this.setTokenRules([\n { type: ECSTokenType.Ellipsis, regex: /\\.\\./ },\n { type: ECSTokenType.QuotedString, regex: /\".*?\"/ },\n { type: ECSTokenType.CodeFragment, regex: /---.*?---/ },\n { type: ECSTokenType.Integer, regex: /0[xX][A-Fa-f0-9]+/ },\n { type: ECSTokenType.Integer, regex: /\\$[A-Fa-f0-9]+/ },\n { type: ECSTokenType.Integer, regex: /[%][01]+/ },\n { type: ECSTokenType.Integer, regex: /\\d+/ },\n { type: ECSTokenType.Relational, regex: /[=<>][=<>]?/ },\n { type: ECSTokenType.Operator, regex: /[.#,:(){}\\[\\]\\-\\+]/ },\n { type: TokenType.Ident, regex: /[A-Za-z_][A-Za-z0-9_]*/ },\n { type: TokenType.Ignore, regex: /\\/\\/.*?[\\n\\r]/ },\n { type: TokenType.Ignore, regex: /\\/\\*.*?\\*\\// },\n { type: TokenType.EOL, regex: /[\\n\\r]+/ },\n { type: TokenType.Ignore, regex: /\\s+/ },\n ]);\n this.errorOnCatchAll = true;\n }\n\n annotate(fn: () => T) {\n let start = this.peekToken();\n let obj = fn();\n let end = this.lasttoken;\n let $loc = end ? mergeLocs(start.$loc, end.$loc) : start.$loc;\n if (obj) (obj as SourceLocated).$loc = $loc;\n return obj;\n }\n\n parseFile(text: string, path: string) {\n this.tokenizeFile(text, path);\n while (!this.isEOF()) {\n let top = this.parseTopLevel();\n if (top) {\n let t = top;\n this.annotate(() => t); // TODO? typescript bug?\n }\n }\n this.runDeferred();\n }\n\n getImportFile: (path: string) => string;\n\n importFile(path: string) {\n if (!this.em.imported[path]) { // already imported?\n let text = this.getImportFile && this.getImportFile(path);\n if (!text) this.compileError(`I can't find the import file \"${path}\".`);\n this.em.imported[path] = true;\n let comp = new ECSCompiler(this.em, false);\n comp.includeDebugInfo = this.includeDebugInfo; // TODO: clone compiler\n try {\n comp.parseFile(text, path);\n } catch (e) {\n for (var err of comp.errors) this.errors.push(err);\n throw e;\n }\n }\n }\n\n parseTopLevel() {\n //this.skipBlankLines();\n let tok = this.expectTokens(['component', 'system', 'scope', 'resource', 'import', 'demo', 'comment']);\n if (tok.str == 'component') {\n return this.em.defineComponent(this.parseComponentDefinition());\n }\n if (tok.str == 'system') {\n return this.em.defineSystem(this.parseSystem());\n }\n if (tok.str == 'scope') {\n return this.parseScope();\n }\n if (tok.str == 'resource') {\n return this.em.defineSystem(this.parseResource());\n }\n if (tok.str == 'import') {\n let tok = this.expectTokenTypes([ECSTokenType.QuotedString]);\n let path = tok.str.substring(1, tok.str.length - 1);\n return this.importFile(path);\n }\n if (tok.str == 'demo') {\n if (this.isMainFile) {\n let scope = this.parseScope();\n scope.isDemo = true;\n this.expectToken('demo');\n return scope;\n } else {\n this.skipDemo(); // don't even parse it, just skip it\n return;\n }\n }\n if (tok.str == 'comment') {\n this.expectTokenTypes([ECSTokenType.CodeFragment]);\n return;\n }\n this.compileError(`Unexpected top-level keyword: ${tok.str}`);\n }\n\n skipDemo() {\n var tok;\n while ((tok = this.consumeToken()) && !this.isEOF()) {\n if (tok.str == 'end' && this.peekToken().str == 'demo') {\n this.consumeToken();\n return;\n }\n }\n throw new ECSError(`Expected \"end demo\" after a \"demo\" declaration.`);\n }\n\n parseComponentDefinition(): ComponentType {\n let name = this.expectIdent().str;\n let fields = [];\n this.em.deferComponent(name);\n while (this.peekToken().str != 'end') {\n fields.push(this.parseComponentField());\n }\n this.expectToken('end');\n return { name, fields };\n }\n\n parseComponentField(): DataField {\n let name = this.expectIdent();\n this.expectToken(':', 'I expected either a \":\" or \"end\" here.'); // TODO\n let type = this.parseDataType();\n return { name: name.str, $loc: name.$loc, ...type };\n }\n\n parseDataType(): DataType {\n if (this.peekToken().type == 'integer') {\n let lo = this.parseIntegerConstant();\n this.expectToken('..');\n let hi = this.parseIntegerConstant();\n this.checkLowerLimit(lo, -0x80000000, \"lower int range\");\n this.checkUpperLimit(hi, 0x7fffffff, \"upper int range\");\n this.checkUpperLimit(hi-lo, 0xffffffff, \"int range\");\n this.checkLowerLimit(hi, lo, \"int range\");\n // TODO: use default value?\n let defvalue;\n if (this.ifToken('default')) {\n defvalue = this.parseIntegerConstant();\n }\n // TODO: check types\n return { dtype: 'int', lo, hi, defvalue } as IntType;\n }\n if (this.peekToken().str == '[') {\n return { dtype: 'ref', query: this.parseQuery() } as RefType;\n }\n if (this.ifToken('array')) {\n let index: IntType | undefined = undefined;\n if (this.peekToken().type == ECSTokenType.Integer) {\n index = this.parseDataType() as IntType;\n }\n this.expectToken('of');\n let elem = this.parseDataType();\n let baseoffset;\n if (this.ifToken('baseoffset')) {\n baseoffset = this.parseIntegerConstant();\n this.checkLowerLimit(baseoffset, -32768, \"base offset\");\n this.checkUpperLimit(baseoffset, 32767, \"base offset\");\n }\n return { dtype: 'array', index, elem, baseoffset } as ArrayType;\n }\n if (this.ifToken('enum')) {\n this.expectToken('[');\n let enumtoks = this.parseList(this.parseEnumIdent, ',');\n this.expectToken(']');\n if (enumtoks.length == 0) this.compileError(`must define at least one enum`);\n let lo = 0;\n let hi = enumtoks.length-1;\n this.checkLowerLimit(hi, 0, \"enum count\");\n this.checkUpperLimit(hi, 255, \"enum count\");\n let enums : {[name:string]:number} = {};\n for (let i=0; i<=hi; i++)\n enums[enumtoks[i].str] = i;\n // TODO: use default value?\n let defvalue;\n if (this.ifToken('default')) {\n defvalue = this.parseIntegerConstant();\n }\n return { dtype: 'int', lo, hi, defvalue, enums } as IntType;\n }\n throw this.compileError(`I expected a data type here.`);\n }\n\n parseEnumIdent() {\n let tok = this.expectTokenTypes([TokenType.Ident]);\n return tok;\n }\n parseEnumValue(tok: Token, field: IntType) {\n if (!field.enums) throw new ECSError(`field is not an enum`);\n let value = field.enums[tok.str];\n if (value == null) throw new ECSError(`unknown enum \"${tok.str}\"`);\n return value;\n }\n\n parseDataValue(field: DataField): DataValue | ForwardRef {\n let tok = this.peekToken();\n // TODO: move to expr\n if (tok.type == TokenType.Ident && field.dtype == 'int') {\n return this.parseEnumValue(this.consumeToken(), field);\n }\n if (tok.type == TokenType.Ident) {\n let entity = this.currentScope?.getEntityByName(tok.str);\n if (!entity)\n this.compileError('no entity named \"${tok.str}\"');\n else {\n this.consumeToken();\n this.expectToken('.');\n let fieldName = this.expectIdent().str;\n let constValue = this.currentScope?.getConstValue(entity, fieldName);\n if (constValue == null)\n throw new ECSError(`\"${fieldName}\" is not defined as a constant`, entity);\n else\n return constValue;\n }\n }\n if (tok.str == '[') {\n // TODO: 16-bit?\n return new Uint8Array(this.parseDataArray());\n }\n if (tok.str == '#') {\n this.consumeToken();\n let reftype = field.dtype == 'ref' ? field as RefType : undefined;\n return this.parseEntityForwardRef(reftype);\n }\n // TODO?\n return this.parseIntegerConstant();\n // TODO: throw this.compileError(`I expected a ${field.dtype} here.`);\n }\n\n parseEntityForwardRef(reftype?: RefType): ForwardRef {\n let token = this.expectIdent();\n return { reftype, token };\n }\n\n parseDataArray() {\n this.expectToken('[');\n let arr = this.parseList(this.parseIntegerConstant, ',');\n this.expectToken(']');\n return arr;\n }\n\n expectInteger(): number {\n let s = this.consumeToken().str;\n let i: number;\n if (s.startsWith('$'))\n i = parseInt(s.substring(1), 16); // hex $...\n else if (s.startsWith('%'))\n i = parseInt(s.substring(1), 2); // binary %...\n else\n i = parseInt(s); // default base 10 or 16 (0x...)\n if (isNaN(i)) this.compileError('There should be an integer here.');\n return i;\n }\n\n parseSystem(): System {\n let name = this.expectIdent().str;\n let actions: Action[] = [];\n let system: System = { name, actions };\n let cmd;\n while ((cmd = this.expectTokens(['on', 'locals', 'end']).str) != 'end') {\n if (cmd == 'on') {\n let action = this.annotate(() => this.parseAction(system));\n actions.push(action);\n } else if (cmd == 'locals') {\n system.tempbytes = this.parseIntegerConstant();\n } else {\n this.compileError(`Unexpected system keyword: ${cmd}`);\n }\n }\n return system;\n }\n\n parseResource(): System {\n let name = this.expectIdent().str;\n let tempbytes;\n if (this.peekToken().str == 'locals') {\n this.consumeToken();\n tempbytes = this.parseIntegerConstant();\n }\n let system: System = { name, tempbytes, actions: [] };\n let expr = this.annotate(() => this.parseBlockStatement());\n let action: Action = { expr, event: name };\n system.actions.push(action);\n return system;\n }\n\n parseAction(system: System): Action {\n // TODO: unused events?\n const event = this.expectIdent().str;\n this.expectToken('do');\n let fitbytes = undefined;\n let critical = undefined;\n if (this.ifToken('critical')) critical = true;\n if (this.ifToken('fit')) fitbytes = this.parseIntegerConstant();\n let expr = this.annotate(() => this.parseBlockStatement());\n //query, join, select, direction, \n let action : Action = { expr, event, fitbytes, critical };\n return action as Action;\n }\n\n parseQuery() {\n let q: Query = { include: [] };\n let start = this.expectToken('[');\n this.parseList(() => this.parseQueryItem(q), ',');\n this.expectToken(']');\n // TODO: other params\n q.$loc = mergeLocs(start.$loc, this.lasttoken.$loc);\n return q;\n }\n\n parseQueryItem(q: Query) {\n let prefix = this.peekToken();\n if (prefix.type != TokenType.Ident) {\n this.consumeToken();\n }\n if (prefix.type == TokenType.Ident) {\n let cref = this.parseComponentRef();\n q.include.push(cref);\n } else if (prefix.str == '-') {\n let cref = this.parseComponentRef();\n if (!q.exclude) q.exclude = [];\n q.exclude.push(cref);\n } else if (prefix.str == '#') {\n const scope = this.currentScope;\n if (scope == null) {\n throw this.compileError('You can only reference specific entities inside of a scope.');\n }\n let eref = this.parseEntityForwardRef();\n this.deferred.push(() => {\n let refvalue = this.resolveEntityRef(scope, eref);\n if (!q.entities) q.entities = [];\n q.entities.push(scope.entities[refvalue]);\n });\n } else {\n this.compileError(`Query components may be preceded only by a '-'.`);\n }\n }\n\n parseEventName() {\n return this.expectIdent().str;\n }\n\n parseEventList() {\n return this.parseList(this.parseEventName, \",\");\n }\n\n parseCode(): string { // TODOActionNode[] {\n // TODO: add $loc\n let tok = this.expectTokenTypes([ECSTokenType.CodeFragment]);\n let code = tok.str.substring(3, tok.str.length - 3);\n // TODO: add after parsing maybe?\n let lines = code.split('\\n');\n if (this.includeDebugInfo) this.addDebugInfo(lines, tok.$loc.line);\n code = lines.join('\\n');\n\n //let acomp = new ECSActionCompiler(context);\n //let nodes = acomp.parseFile(code, this.path);\n // TODO: return nodes\n return code;\n }\n\n addDebugInfo(lines: string[], startline: number) {\n const re = /^\\s*(;|\\/\\/|$)/; // ignore comments and blank lines\n for (let i = 0; i < lines.length; i++) {\n if (!lines[i].match(re))\n lines[i] = this.em.dialect.debug_line(this.path, startline + i) + '\\n' + lines[i];\n }\n }\n\n parseScope(): EntityScope {\n let name = this.expectIdent().str;\n let scope = this.em.newScope(name, this.currentScope || undefined);\n scope.filePath = this.path;\n this.currentScope = scope;\n let cmd;\n while ((cmd = this.expectTokens(['end', 'using', 'entity', 'scope', 'comment', 'system']).str) != 'end') {\n if (cmd == 'using') {\n this.parseScopeUsing();\n }\n if (cmd == 'entity') {\n this.annotate(() => this.parseEntity());\n }\n if (cmd == 'scope') {\n this.annotate(() => this.parseScope());\n }\n if (cmd == 'comment') {\n this.expectTokenTypes([ECSTokenType.CodeFragment]);\n }\n // TODO: need to make these local names, otherwise we get \"duplicate name\"\n if (cmd == 'system') {\n let sys = this.annotate(() => this.parseSystem());\n this.em.defineSystem(sys);\n this.currentScope.newSystemInstanceWithDefaults(sys);\n }\n }\n this.currentScope = scope.parent || null;\n return scope;\n }\n\n parseScopeUsing() {\n let instlist = this.parseList(this.parseSystemInstanceRef, ',');\n let params = {};\n if (this.peekToken().str == 'with') {\n this.consumeToken();\n params = this.parseSystemInstanceParameters();\n }\n for (let inst of instlist) {\n inst.params = params;\n this.currentScope?.newSystemInstance(inst);\n }\n }\n\n parseEntity(): Entity {\n if (!this.currentScope) { throw this.internalError(); }\n const scope = this.currentScope;\n let entname = '';\n if (this.peekToken().type == TokenType.Ident) {\n entname = this.expectIdent().str;\n }\n let etype = this.parseEntityArchetype();\n let entity = this.currentScope.newEntity(etype, entname);\n let cmd2: string;\n // TODO: remove init?\n while ((cmd2 = this.expectTokens(['const', 'init', 'var', 'decode', 'end']).str) != 'end') {\n let cmd = cmd2; // put in scope\n if (cmd == 'var') cmd = 'init'; // TODO: remove?\n if (cmd == 'init' || cmd == 'const') {\n this.parseInitConst(cmd, scope, entity);\n } else if (cmd == 'decode') {\n this.parseDecode(scope, entity);\n }\n }\n return entity;\n }\n\n parseInitConst(cmd: string, scope: EntityScope, entity: Entity) {\n // TODO: check data types\n let name = this.expectIdent().str;\n let { c, f } = this.getEntityField(entity, name);\n let symtype = scope.isConstOrInit(c, name);\n if (symtype && symtype != cmd)\n this.compileError(`I can't mix const and init values for a given field in a scope.`);\n this.expectToken('=');\n let valueOrRef = this.parseDataValue(f);\n if ((valueOrRef as ForwardRef).token != null) {\n this.deferred.push(() => {\n this.lasttoken = (valueOrRef as ForwardRef).token; // for errors\n let refvalue = this.resolveEntityRef(scope, valueOrRef as ForwardRef);\n if (cmd == 'const') scope.setConstValue(entity, c, f, refvalue);\n if (cmd == 'init') scope.setInitValue(entity, c, f, refvalue);\n });\n } else {\n if (cmd == 'const') scope.setConstValue(entity, c, f, valueOrRef as DataValue);\n if (cmd == 'init') scope.setInitValue(entity, c, f, valueOrRef as DataValue);\n }\n }\n\n parseDecode(scope: EntityScope, entity: Entity) {\n let decoderid = this.expectIdent().str;\n let codetok = this.expectTokenTypes([ECSTokenType.CodeFragment]);\n let code = codetok.str;\n code = code.substring(3, code.length - 3);\n let decoder = newDecoder(decoderid, code);\n if (!decoder) { throw this.compileError(`I can't find a \"${decoderid}\" decoder.`); }\n let result;\n try {\n result = decoder.parse();\n } catch (e) {\n throw new ECSError(e.message, decoder.getErrorLocation(codetok.$loc));\n }\n for (let entry of Object.entries(result.properties)) {\n let { c, f } = this.getEntityField(entity, entry[0]);\n scope.setConstValue(entity, c, f, entry[1] as DataValue);\n }\n }\n\n getEntityField(e: Entity, name: string): ComponentFieldPair {\n if (!this.currentScope) { throw this.internalError(); }\n let comps = this.em.componentsWithFieldName([e.etype], name);\n if (comps.length == 0) this.compileError(`I couldn't find a field named \"${name}\" for this entity.`)\n if (comps.length > 1) this.compileError(`I found more than one field named \"${name}\" for this entity.`)\n let component = comps[0];\n let field = component.fields.find(f => f.name == name);\n if (!field) { throw this.internalError(); }\n return { c: component, f: field };\n }\n\n parseEntityArchetype(): EntityArchetype {\n this.expectToken('[');\n let components = this.parseList(this.parseComponentRef, ',');\n this.expectToken(']');\n return { components };\n }\n\n parseComponentRef(): ComponentType {\n let name = this.expectIdent().str;\n let cref = this.em.getComponentByName(name);\n if (!cref) this.compileError(`I couldn't find a component named \"${name}\".`)\n return cref;\n }\n\n findEntityByName(scope: EntityScope, token: Token) {\n let name = token.str;\n let eref = scope.entities.find(e => e.name == name);\n if (!eref) {\n throw this.compileError(`I couldn't find an entity named \"${name}\" in this scope.`, token.$loc)\n }\n return eref;\n }\n\n resolveEntityRef(scope: EntityScope, ref: ForwardRef): number {\n let id = this.findEntityByName(scope, ref.token).id;\n if (ref.reftype) {\n // TODO: make this a function? elo ehi etc?\n let atypes = this.em.archetypesMatching(ref.reftype.query);\n let entities = scope.entitiesMatching(atypes);\n if (entities.length == 0)\n throw this.compileError(`This entity doesn't seem to fit the reference type.`, ref.token.$loc);\n id -= entities[0].id;\n }\n return id;\n }\n\n parseSystemInstanceRef(): SystemInstance {\n let name = this.expectIdent().str;\n let system = this.em.getSystemByName(name);\n if (!system) throw this.compileError(`I couldn't find a system named \"${name}\".`, this.lasttoken.$loc);\n let params = {};\n let inst = { system, params, id: 0 };\n return inst;\n }\n\n parseSystemInstanceParameters(): SystemInstanceParameters {\n let scope = this.currentScope;\n if (scope == null) throw this.internalError();\n if (this.peekToken().str == '[') {\n return { query: this.parseQuery() };\n }\n this.expectToken('#');\n let entname = this.expectIdent();\n this.expectToken('.');\n let fieldname = this.expectIdent();\n let entity = this.findEntityByName(scope, entname);\n let cf = this.getEntityField(entity, fieldname.str);\n return { refEntity: entity, refField: cf };\n }\n\n exportToFile(src: SourceFileExport) {\n this.em.exportToFile(src);\n }\n\n export() {\n let src = new SourceFileExport();\n src.line(this.em.dialect.debug_file(this.path));\n for (let path of Object.keys(this.em.imported))\n src.line(this.em.dialect.debug_file(path));\n this.exportToFile(src);\n return src.toString();\n }\n\n checkUpperLimit(value: number, upper: number, what: string) {\n if (value > upper) this.compileError(`This ${what} is too high; must be ${upper} or less`);\n }\n checkLowerLimit(value: number, lower: number, what: string) {\n if (value < lower) this.compileError(`This ${what} is too low; must be ${lower} or more`);\n }\n\n // expression stuff\n\n parseConstant(): DataValue {\n let expr = this.parseExpr();\n expr = this.em.evalExpr(expr, this.currentScope);\n if (isLiteral(expr)) return expr.value;\n throw this.compileError('This expression is not a constant.');\n }\n parseIntegerConstant(): number {\n let value = this.parseConstant();\n if (typeof value === 'number') return value;\n throw this.compileError('This expression is not an integer.');\n }\n parseExpr(): Expr {\n var startloc = this.peekToken().$loc;\n var expr = this.parseExpr1(this.parsePrimary(), 0);\n var endloc = this.lasttoken.$loc;\n expr.$loc = mergeLocs(startloc, endloc);\n return expr;\n }\n parseExpr1(left: Expr, minPred: number): Expr {\n let look = this.peekToken();\n while (getPrecedence(look) >= minPred) {\n let op = this.consumeToken();\n let right: Expr = this.parsePrimary();\n look = this.peekToken();\n while (getPrecedence(look) > getPrecedence(op)) {\n right = this.parseExpr1(right, getPrecedence(look));\n look = this.peekToken();\n }\n var opfn = getOperator(op.str).f;\n // use logical operators instead of bitwise?\n if (op.str == 'and') opfn = 'land';\n if (op.str == 'or') opfn = 'lor';\n var valtype = this.exprTypeForOp(opfn, left, right, op);\n left = { valtype:valtype, op:opfn, left: left, right: right };\n }\n return left;\n }\n parsePrimary(): Expr {\n let tok = this.consumeToken();\n switch (tok.type) {\n case ECSTokenType.Integer:\n this.pushbackToken(tok);\n let value = this.expectInteger();\n let valtype : IntType = { dtype: 'int', lo: value, hi: value };\n return { valtype, value };\n case TokenType.Ident:\n if (tok.str == 'not') {\n let expr = this.parsePrimary();\n let valtype : IntType = { dtype: 'int', lo: 0, hi: 1 };\n return { valtype, op: 'lnot', expr: expr };\n } else {\n this.pushbackToken(tok);\n return this.parseVarSubscriptOrFunc();\n }\n case ECSTokenType.Operator:\n if (tok.str == '(') {\n let expr = this.parseExpr();\n this.expectToken(')', `There should be another expression or a \")\" here.`);\n return expr;\n } else if (tok.str == '-') {\n let expr = this.parsePrimary(); // TODO: -2^2=-4 and -2-2=-4\n let valtype = (expr as ExprBase).valtype;\n if (valtype?.dtype == 'int') {\n let hi = Math.abs(valtype.hi);\n let negtype : IntType = { dtype: 'int', lo: -hi, hi: hi };\n return { valtype: negtype, op: 'neg', expr: expr };\n }\n } else if (tok.str == '+') {\n return this.parsePrimary(); // ignore unary +\n }\n default:\n throw this.compileError(`The expression is incomplete.`);\n }\n }\n parseVarSubscriptOrFunc(): LExpr {\n var tok = this.consumeToken();\n switch (tok.type) {\n case TokenType.Ident:\n // component:field\n if (this.ifToken(':')) {\n let ftok = this.consumeToken();\n let component = this.em.getComponentByName(tok.str);\n if (!component) throw this.compileError(`A component named \"${tok.str}\" has not been defined.`);\n let field = component.fields.find(f => f.name == ftok.str);\n if (!field) throw this.compileError(`There is no \"${ftok.str}\" field in the ${tok.str} component.`);\n if (!this.currentScope) throw this.compileError(`This operation only works inside of a scope.`);\n let atypes = this.em.archetypesMatching({ include: [component] })\n let entities = this.currentScope.entitiesMatching(atypes);\n return { entities, field } as EntityFieldOp;\n }\n // entity.field\n if (this.ifToken('.')) {\n let ftok = this.consumeToken();\n if (!this.currentScope) throw this.compileError(`This operation only works inside of a scope.`);\n let entity = this.currentScope.getEntityByName(tok.str);\n if (!entity) throw this.compileError(`An entity named \"${tok.str}\" has not been defined.`);\n let component = this.em.singleComponentWithFieldName([entity.etype], ftok.str, ftok);\n let field = component.fields.find(f => f.name == ftok.str);\n if (!field) throw this.compileError(`There is no \"${ftok.str}\" field in this entity.`);\n let entities = [entity];\n return { entities, field } as EntityFieldOp;\n }\n let args : Expr[] = [];\n if (this.ifToken('(')) {\n args = this.parseExprList();\n this.expectToken(')', `There should be another expression or a \")\" here.`);\n }\n var loc = mergeLocs(tok.$loc, this.lasttoken.$loc);\n var valtype = this.exprTypeForSubscript(tok.str, args, loc);\n return { valtype: valtype, name: tok.str, args: args, $loc:loc };\n default:\n throw this.compileError(`There should be a variable name here.`);\n }\n }\n parseLexpr(): LExpr {\n var lexpr = this.parseVarSubscriptOrFunc();\n //this.vardefs[lexpr.name] = lexpr;\n //this.validateVarName(lexpr);\n return lexpr;\n }\n exprTypeForOp(fnname: string, left: Expr, right: Expr, optok: Token) : DataType {\n return { dtype: 'int', lo:0, hi:255 }; // TODO?\n }\n exprTypeForSubscript(fnname: string, args: Expr[], loc: SourceLocation) : DataType {\n return { dtype: 'int', lo:0, hi:255 }; // TODO?\n }\n parseLexprList(): LExpr[] {\n return this.parseList(this.parseLexpr, ',');\n }\n parseExprList(): Expr[] {\n return this.parseList(this.parseExpr, ',');\n }\n // TODO: annotate with location\n parseBlockStatement(): Statement {\n let valtype : IntType = { dtype:'int', lo:0, hi: 0 } // TODO?\n if (this.peekToken().type == ECSTokenType.CodeFragment) {\n return { valtype, code: this.parseCode() };\n }\n if (this.ifToken('begin')) {\n let stmts = [];\n while (this.peekToken().str != 'end') {\n stmts.push(this.annotate(() => this.parseBlockStatement()));\n }\n this.expectToken('end');\n return { valtype, stmts };\n }\n let cmd = this.peekToken();\n if (SELECT_TYPE.includes(cmd.str as any)) {\n return this.parseQueryStatement();\n }\n throw this.compileError(`There should be a statement or \"end\" here.`, cmd.$loc);\n }\n parseQueryStatement() : QueryExpr {\n // TODO: include modifiers in error msg\n const select = this.expectTokens(SELECT_TYPE).str as SelectType; // TODO: type check?\n let all = this.ifToken('all') != null;\n let query = undefined;\n let join = undefined;\n if (select == 'once') {\n if (this.peekToken().str == '[') this.compileError(`A \"${select}\" action can't include a query.`)\n } else {\n query = this.parseQuery();\n }\n if (select == 'join') {\n this.expectToken('with');\n join = this.parseQuery();\n }\n if (this.ifToken('limit')) {\n if (!query) { this.compileError(`A \"${select}\" query can't include a limit.`); }\n else query.limit = this.parseIntegerConstant();\n }\n const all_modifiers = ['asc', 'desc']; // TODO\n const modifiers = this.parseModifiers(all_modifiers);\n let direction = undefined;\n if (modifiers['asc']) direction = 'asc';\n else if (modifiers['desc']) direction = 'desc';\n let body = this.annotate(() => this.parseBlockStatement());\n return { select, query, join, direction, all, stmts: [body], loop: select == 'foreach' } as QueryExpr;\n }\n}\n\n///\n\nexport class ECSActionCompiler extends Tokenizer {\n constructor(\n public readonly context: ActionContext) {\n super();\n this.setTokenRules([\n { type: ECSTokenType.Placeholder, regex: /\\{\\{.*?\\}\\}/ },\n { type: TokenType.CatchAll, regex: /[^{\\n]+\\n*/ },\n ]);\n this.errorOnCatchAll = false;\n }\n\n parseFile(text: string, path: string) {\n this.tokenizeFile(text, path);\n let nodes = [];\n while (!this.isEOF()) {\n let tok = this.consumeToken();\n if (tok.type == ECSTokenType.Placeholder) {\n let args = tok.str.substring(2, tok.str.length - 2).split(/\\s+/);\n nodes.push(new CodePlaceholderNode(this.context, tok.$loc, args));\n } else if (tok.type == TokenType.CatchAll) {\n nodes.push(new CodeLiteralNode(this.context, tok.$loc, tok.str));\n }\n }\n return nodes;\n }\n}\n", "import { ECSCompiler } from \"../../common/ecs/compiler\";\nimport { Dialect_CA65, ECSError, EntityManager } from \"../../common/ecs/ecs\";\nimport { CompileError } from \"../../common/tokenizer\";\nimport { CodeListingMap } from \"../../common/workertypes\";\nimport { BuildStep, BuildStepResult, getWorkFileAsString, gatherFiles, staleFiles, fixParamsWithDefines, putWorkFile } from \"../builder\";\n\nexport function assembleECS(step: BuildStep): BuildStepResult {\n let em = new EntityManager(new Dialect_CA65()); // TODO\n let compiler = new ECSCompiler(em, true);\n compiler.getImportFile = (path: string) => {\n return getWorkFileAsString(path);\n }\n gatherFiles(step, { mainFilePath: \"main.ecs\" });\n if (step.mainfile) em.mainPath = step.path;\n var destpath = step.prefix + '.ca65';\n if (staleFiles(step, [destpath])) {\n let code = getWorkFileAsString(step.path);\n // TODO\n step.params.cfgfile = 'atari2600-ecs.cfg';\n step.params.extra_link_files.push('atari2600-ecs.cfg');\n fixParamsWithDefines(step.path, step.params);\n // remove crt0.o from libargs\n step.params.libargs = step.params.libargs.filter((arg: string) => {\n return arg !== 'crt0.o';\n });\n try {\n compiler.includeDebugInfo = true;\n compiler.parseFile(code, step.path);\n let outtext = compiler.export().toString();\n putWorkFile(destpath, outtext);\n var listings: CodeListingMap = {};\n listings[destpath] = {lines:[], text:outtext} // TODO\n var debuginfo = compiler.em.getDebugTree();\n } catch (e) {\n if (e instanceof ECSError) {\n compiler.addError(e.message, e.$loc);\n for (let obj of e.$sources) {\n let name = (obj as any).event;\n if (name == 'start') break;\n compiler.addError(`... ${name}`, obj.$loc); // TODO?\n }\n return { errors: compiler.errors, listings, debuginfo };\n } else if (e instanceof CompileError) {\n return { errors: compiler.errors, listings, debuginfo };\n } else {\n throw e;\n }\n }\n return {\n nexttool: \"ca65\",\n path: destpath,\n args: [destpath],\n files: [destpath].concat(step.files),\n listings,\n debuginfo\n };\n }\n}\n", "\nexport type FileData = string | Uint8Array;\n\nexport interface SourceLocation {\n line: number;\n label?: string;\n path?: string; // TODO: make mandatory?\n start?: number;\n end?: number;\n segment?:string;\n func?:string;\n}\n\n// actually it's a kind of SourceSnippet .. can have multiple per line\nexport interface SourceLine extends SourceLocation {\n offset:number;\n insns?:string;\n iscode?:boolean;\n cycles?:number;\n}\n\n// objects that have source code position info\nexport interface SourceLocated {\n $loc?: SourceLocation;\n}\n// statements also have the 'offset' (pc) field from SourceLine\nexport interface SourceLineLocated {\n $loc?: SourceLine;\n}\n\nexport class SourceFile {\n lines: SourceLine[];\n text: string;\n offset2loc: Map; //{[offset:number]:number};\n line2offset: Map; //{[line:number]:number};\n sortedOffsets: number[];\n \n constructor(lines:SourceLine[], text:string) {\n lines = lines || [];\n this.lines = lines;\n this.text = text;\n this.offset2loc = new Map();\n this.line2offset = new Map();\n for (var info of lines) {\n if (info.offset >= 0) {\n // first line wins (is assigned to offset)\n // TODO: handle macros/includes w/ multiple offsets per line\n if (!this.offset2loc.has(info.offset))\n this.offset2loc.set(info.offset, info);\n if (!this.line2offset.has(info.line))\n this.line2offset.set(info.line, info.offset);\n }\n }\n this.sortedOffsets = Array.from(this.offset2loc.keys()).sort((a,b)=>a-b);\n }\n // returns the line whose offset is nearest to (but not greater than) PC,\n // provided it is within `lookbehind` bytes; null otherwise\n findLineForOffset(PC:number, lookbehind:number) : SourceLine {\n const offsets = this.sortedOffsets;\n // binary search for last offset <= PC\n var lo = 0, hi = offsets.length-1, ans = -1;\n while (lo <= hi) {\n var mid = (lo + hi) >> 1;\n if (offsets[mid] <= PC) {\n ans = mid;\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n if (ans < 0) return null;\n var off = offsets[ans];\n if (PC - off > lookbehind) return null;\n return this.offset2loc.get(off);\n }\n lineCount():number { return this.lines.length; }\n}\n\nexport interface Dependency {\n path:string\n filename:string\n link:boolean\n data:FileData // TODO: or binary?\n}\n\nexport interface WorkerFileUpdate {\n path:string\n data:FileData\n};\n/** Per-phase raw argv overrides carried on a build step (CLI / project). */\nexport interface BuildArgLists {\n compiler?:string[]\n assembler?:string[]\n linker?:string[]\n}\n\n/** Per-phase symbol overrides carried on a build step (CLI / project). */\nexport interface BuildSymbolLists {\n compiler?:string[]\n assembler?:string[]\n linker?:string[]\n}\n\nexport interface WorkerBuildStep {\n path?:string\n files?:string[]\n platform:string\n tool:string\n mainfile?:boolean\n /** extra symbols layered above platform defaults, below source directives */\n symbols?:BuildSymbolLists\n /** extra raw args layered above platform defaults, below source directives */\n buildArgs?:BuildArgLists\n};\nexport interface WorkerItemUpdate {\n key:string\n value:object\n};\n\n// TODO: split into different msg types\nexport interface WorkerMessage {\n preload?:string\n /** preload a filesystem package directly by name (e.g. '65-nes') */\n preload_fs?:string\n /** read a file from the preloaded filesystem package (path e.g. '/include/nes.h')\n * requires preload_fs; result comes back as {output:Uint8Array} */\n readshared?:string\n /** list files under a directory of the preloaded filesystem package\n * requires preload_fs; result comes back as {output:string[]} */\n listshared?:string\n /** echo tag for ad-hoc queries (queryWorker); copied to the response */\n qid?:number\n platform?:string\n tool?:string\n updates:WorkerFileUpdate[]\n buildsteps:WorkerBuildStep[]\n reset?:boolean\n code?:string\n setitems?:WorkerItemUpdate[]\n}\n\nexport interface WorkerError extends SourceLocation {\n msg:string,\n}\n\nexport interface CodeListing {\n lines:SourceLine[]\n asmlines?:SourceLine[]\n text?:string\n sourcefile?:SourceFile // not returned by worker\n assemblyfile?:SourceFile // not returned by worker\n}\n\nexport type CodeListingMap = {[path:string]:CodeListing};\n\n// TODO\nexport type VerilogOutput =\n {program_rom_variable:string, program_rom:Uint8Array, code:string, name:string, ports:any[], signals:any[]};\n\nexport type Segment = {\n name:string,\n start:number,\n size:number,\n last?:number,\n type?:string,\n source?:'native'|'linker'\n};\n\nexport type WorkerResult = WorkerErrorResult | WorkerOutputResult | WorkerUnchangedResult;\n\nexport interface WorkerUnchangedResult {\n unchanged: true;\n}\n\nexport interface WorkerErrorResult {\n errors: WorkerError[]\n listings?: CodeListingMap\n uppercaseOnly?: boolean\n}\n\nexport interface WorkerOutputResult {\n output: T\n listings?: CodeListingMap\n symbolmap?: {[sym:string]:number}\n params?: {}\n segments?: Segment[]\n debuginfo?: {} // optional info\n uppercaseOnly?: boolean\n origin?: number\n}\n\nexport function isUnchanged(result: WorkerResult) : result is WorkerUnchangedResult {\n return ('unchanged' in result);\n}\n\nexport function isErrorResult(result: WorkerResult) : result is WorkerErrorResult {\n return ('errors' in result);\n}\n\nexport function isOutputResult(result: WorkerResult) : result is WorkerOutputResult {\n return ('output' in result);\n}\n\nexport interface WorkingStore {\n getFileData(path:string) : FileData;\n}\n", "import { byteArrayToString, stringToByteArray } from \"../../common/util\";\nimport { WorkerFileUpdate, isErrorResult, isOutputResult, isUnchanged } from \"../../common/workertypes\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store } from \"../builder\";\n\n// create random UID\nconst sessionID = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n\n// TODO: #include links but #link doesnt link\nexport async function buildRemote(step: BuildStep): Promise {\n // grab the remote URL from a remote.json file\n const { REMOTE_URL } = await (await fetch('../../remote.json')).json();\n if (typeof REMOTE_URL !== 'string') throw new Error(\"No REMOTE_URL in remote.json\");\n\n gatherFiles(step); // TODO?\n var binpath = \"a.out\"; // TODO?\n if (staleFiles(step, [binpath])) {\n // grab files from store\n let updates : WorkerFileUpdate[] = [];\n for (var i = 0; i < step.files.length; i++) {\n let path = step.files[i];\n let entry = store.workfs[path];\n // convert to base64\n let data = typeof entry.data === 'string' ? entry.data : \"data:base64,\" + btoa(byteArrayToString(entry.data));\n updates.push({ path, data });\n }\n // build the command\n let cmd = { buildStep: step, updates, sessionID };\n // do a POST to the remote server, sending step as JSON\n console.log('POST', cmd);\n let result = await fetch(REMOTE_URL, {\n method: \"POST\",\n mode: \"cors\",\n body: JSON.stringify(cmd),\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n // return the result as JSON\n let json = await result.json();\n // parse the result as JSON\n if (isUnchanged(json)) return json;\n if (isErrorResult(json)) return json;\n if (isOutputResult(json)) {\n json.output = stringToByteArray(atob(json.output));\n return json;\n }\n throw new Error(`Unexpected result from remote build: ${JSON.stringify(json)}`);\n }\n}\n", "import { CodeListing, CodeListingMap, WorkerError } from \"../../common/workertypes\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, putWorkFile, store } from \"../builder\";\nimport { msvcErrorMatcher, re_crlf } from \"../listingutils\";\nimport { WASIRunner } from \"../../common/wasi/wasishim\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\nfunction parseACMESymbolTable(text: string) {\n var symbolmap = {};\n var lines = text.split(\"\\n\");\n for (var i = 0; i < lines.length; ++i) {\n var line = lines[i].trim();\n // \tinit_text\t= $81b\t; ?\n var m = line.match(/(\\w+)\\s*=\\s*[$]([0-9a-f]+)/i);\n if (m) {\n symbolmap[m[1]] = parseInt(m[2], 16);\n }\n }\n return symbolmap;\n}\n\nfunction parseACMEReportFile(text: string) {\n var listings : CodeListingMap = {};\n var listing : CodeListing;\n var lines = text.split(\"\\n\");\n for (var i = 0; i < lines.length; ++i) {\n var line = lines[i].trim();\n // ; ******** Source: hello.acme\n var m1 = line.match(/^;\\s*[*]+\\s*Source: (.+)$/);\n if (m1) {\n var file = m1[1];\n listings[file] = listing = {\n lines: [],\n };\n continue;\n }\n // 15 0815 201b08 \t\tjsr init_text\t\t; write line of text\n var m2 = line.match(/^(\\d+)\\s+([0-9a-f]+)\\s+([0-9a-f]+)/i);\n if (m2) {\n if (listing) {\n listing.lines.push({\n line: parseInt(m2[1]),\n offset: parseInt(m2[2], 16),\n insns: m2[3],\n });\n }\n }\n }\n return listings;\n}\n\nlet wasiModule: WebAssembly.Module | null = null;\n\nexport function assembleACME(step: BuildStep): BuildStepResult {\n let errors: WorkerError[] = [];\n gatherFiles(step, { mainFilePath: \"main.acme\" });\n var binpath = step.prefix + \".bin\";\n var lstpath = step.prefix + \".lst\";\n var sympath = step.prefix + \".sym\";\n if (staleFiles(step, [binpath])) {\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"acme\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n for (let file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\".\");\n var args = ['--msvc', '--initmem', '0', '-o', binpath, '-r', lstpath, '-l', sympath, step.path];\n if (step.params?.acmeargs) {\n args.unshift.apply(args, step.params.acmeargs);\n } else {\n args.unshift.apply(args, ['-f', 'plain']);\n }\n args.unshift.apply(args, [\"-D__8BITWORKSHOP__=1\"]);\n if (step.mainfile) {\n args.unshift.apply(args, [\"-D__MAIN__=1\"]);\n }\n wasi.setArgs(['acme', ...args]);\n try {\n wasi.run();\n } catch (e) {\n errors.push({ line: 0, msg: \"\" + e });\n }\n const stdout = wasi.fds[1].getBytesAsString();\n const stderr = wasi.fds[2].getBytesAsString();\n if (stdout) console.log(stdout);\n const matcher = msvcErrorMatcher(errors);\n for (let line of stderr.split(re_crlf)) {\n matcher(line);\n }\n if (errors.length) {\n let listings: CodeListingMap = {};\n return { errors, listings };\n }\n let binout: Uint8Array, lstout: string, symout: string;\n try {\n binout = wasi.fs.getFile(\"./\" + binpath).getBytes();\n lstout = wasi.fs.getFile(\"./\" + lstpath).getBytesAsString();\n symout = wasi.fs.getFile(\"./\" + sympath).getBytesAsString();\n } catch (e) {\n errors.push({ line: 0, msg: \"No output generated, maybe a fatal assembly error?\" });\n return { errors };\n }\n putWorkFile(binpath, binout);\n putWorkFile(lstpath, lstout);\n putWorkFile(sympath, symout);\n return {\n output: binout,\n listings: parseACMEReportFile(lstout),\n errors: errors,\n symbolmap: parseACMESymbolTable(symout),\n };\n }\n}\n", "import { WASIFilesystem, WASIMemoryFilesystem, WASIRunner } from \"../../common/wasi/wasishim\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store, putWorkFile } from \"../builder\";\nimport { makeErrorMatcher } from \"../listingutils\";\nimport { loadWASIFilesystemZip } from \"../wasiutils\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\nlet cc7800_fs: WASIFilesystem | null = null;\nlet wasiModule: WebAssembly.Module | null = null;\n\nexport async function compileCC7800(step: BuildStep): Promise {\n const errors = [];\n gatherFiles(step, { mainFilePath: \"main.c\" });\n const destpath = \"./a.out\";\n if (staleFiles(step, [destpath])) {\n if (!cc7800_fs) {\n cc7800_fs = await loadWASIFilesystemZip(\"cc7800-fs.zip\");\n }\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"cc7800\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n wasi.fs.setParent(cc7800_fs);\n for (let file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\"headers\");\n wasi.addPreopenDirectory(\".\");\n wasi.setArgs([\"cc7800\", \"-v\", \"-g\", \"-S\", \"-I\", \"headers\", step.path]);\n try {\n wasi.run();\n } catch (e) {\n errors.push(e);\n }\n // TODO\n let stdout = wasi.fds[1].getBytesAsString();\n let stderr = wasi.fds[2].getBytesAsString();\n console.log('stdout', stdout);\n console.log('stderr', stderr);\n // Syntax error: Unknown identifier cputes on line 11 of test.c78\n if (stderr.indexOf(\"Syntax error:\") >= 0) {\n const matcher = makeErrorMatcher(errors, /^Syntax error: (.+?) on line (\\d+) of (.+)/, 2, 1, step.path, 3);\n for (let line of stderr.split('\\n')) {\n matcher(line);\n }\n }\n if (errors.length) {\n return { errors };\n }\n console.log(wasi.fs);\n const combinedasm = wasi.fs.getFile(destpath).getBytesAsString();\n putWorkFile(destpath, combinedasm);\n }\n return {\n nexttool: \"dasm\",\n path: destpath,\n args: [destpath],\n files: [destpath]\n };\n}\n", "import { WASIFilesystem, WASIMemoryFilesystem, WASIRunner } from \"../../common/wasi/wasishim\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store, putWorkFile } from \"../builder\";\nimport { makeErrorMatcher } from \"../listingutils\";\nimport { loadWASIFilesystemZip } from \"../wasiutils\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\nlet cc2600_fs: WASIFilesystem | null = null;\nlet wasiModule: WebAssembly.Module | null = null;\n\nexport async function compilecc2600(step: BuildStep): Promise {\n const errors = [];\n gatherFiles(step, { mainFilePath: \"main.c\" });\n const destpath = \"./a.out\";\n if (staleFiles(step, [destpath])) {\n if (!cc2600_fs) {\n cc2600_fs = await loadWASIFilesystemZip(\"cc2600-fs.zip\");\n }\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"cc2600\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n wasi.fs.setParent(cc2600_fs);\n for (let file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\"headers\");\n wasi.addPreopenDirectory(\".\");\n wasi.setArgs([\"cc2600\", \"-v\", \"-g\", \"-S\", \"-I\", \"headers\", step.path]);\n try {\n wasi.run();\n } catch (e) {\n errors.push(e);\n }\n // TODO\n let stdout = wasi.fds[1].getBytesAsString();\n let stderr = wasi.fds[2].getBytesAsString();\n console.log('stdout', stdout);\n console.log('stderr', stderr);\n // Syntax error: Unknown identifier cputes on line 11 of test.c78\n if (stderr.indexOf(\"Syntax error:\") >= 0) {\n const matcher = makeErrorMatcher(errors, /^Syntax error: (.+?) on line (\\d+) of (.+)/, 2, 1, step.path, 3);\n for (let line of stderr.split('\\n')) {\n matcher(line);\n }\n }\n if (errors.length) {\n return { errors };\n }\n console.log(wasi.fs);\n const combinedasm = wasi.fs.getFile(destpath).getBytesAsString();\n putWorkFile(destpath, combinedasm);\n }\n return {\n nexttool: \"dasm\",\n path: destpath,\n args: [destpath],\n files: [destpath]\n };\n}\n", "// batari Basic compiler (WASI/wasmtime build, v1.9)\n// Pipeline: preprocess | 2600basic > bB.asm ; postprocess -i . > final.asm ;\n// dasm final.asm -I./includes -f3 -p20 -> .bin/.lst/.sym\n// (The optional optimize/bbfilter/relocateBB stages are not used here.)\nimport { WASIRunner } from \"../../common/wasi/wasishim\";\nimport { CodeListingMap, WorkerError } from \"../../common/workertypes\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store, putWorkFile, anyTargetChanged } from \"../builder\";\nimport { loadWASMBinary } from \"../wasmutils\";\nimport { loadWASIFilesystemZip } from \"../wasiutils\";\nimport { parseDASMListing, parseDASMOutput, parseSymbolMap } from \"./dasm\";\nimport { msvcErrorMatcher } from \"../listingutils\";\n\nlet bbModules: { [name: string]: WebAssembly.Module } = {};\nlet bbFS: any = null;\n\nfunction getBBModule(name: string): WebAssembly.Module {\n if (!bbModules[name]) {\n bbModules[name] = new WebAssembly.Module(loadWASMBinary(\"bb/\" + name));\n }\n return bbModules[name];\n}\n\nasync function getBBFilesystem() {\n if (!bbFS) {\n bbFS = await loadWASIFilesystemZip(\"bb-fs.zip\");\n }\n return bbFS;\n}\n\nfunction makeRunner(name: string): WASIRunner {\n const wasi = new WASIRunner();\n wasi.initSync(getBBModule(name));\n wasi.fs.setParent(bbFS);\n wasi.addPreopenDirectory(\".\");\n return wasi;\n}\n\nfunction runRunner(wasi: WASIRunner, name: string, args: string[], errors: WorkerError[]): void {\n wasi.setArgs([name, ...args]);\n try {\n wasi.run();\n } catch (e) {\n errors.push({ line: 0, msg: \"\" + e });\n }\n}\n\n// match \"line #: error msg\" lines from the 2600basic stderr\nfunction matchBasicErrors(stderr: string, path: string, errors: WorkerError[]): void {\n // e.g. \"(14): error: Unknown keyword\"\n const re = /\\((\\d+)\\):?\\s*(.+)/;\n for (let line of stderr.split(\"\\n\")) {\n const m = re.exec(line);\n if (m) {\n errors.push({ path: path, line: parseInt(m[1]), msg: m[2] });\n } else if (line.indexOf(\"error\") >= 0 || line.indexOf(\"Error\") >= 0) {\n errors.push({ line: 0, msg: line.trim() });\n }\n }\n}\n\nexport async function compileBatariBasic(step: BuildStep): Promise {\n gatherFiles(step, { mainFilePath: \"main.bas\" });\n const destpath = step.prefix + '.asm';\n const binpath = step.prefix + '.bin';\n const lstpath = step.prefix + '.lst';\n const sympath = step.prefix + '.sym';\n if (!staleFiles(step, [destpath])) {\n return;\n }\n await getBBFilesystem();\n const errors: WorkerError[] = [];\n const srcpath = step.path;\n const srcdata = store.getFileData(srcpath);\n const source = typeof srcdata === 'string' ? new TextEncoder().encode(srcdata) : srcdata;\n\n // 1. preprocess: source on stdin -> tokenized output\n const pre = makeRunner(\"preprocess\");\n pre.stdin.write(source);\n pre.stdin.offset = 0; // reset so fd_read starts at BOF\n runRunner(pre, \"preprocess\", [], errors);\n matchBasicErrors(pre.fds[2].getBytesAsString(), srcpath, errors);\n if (errors.length) return { errors };\n const preprocessed = pre.fds[1].getBytes();\n\n // helper: fail if the compiler exited nonzero with no parsed errors\n function checkExit(wasi: WASIRunner, msg: string) {\n if (wasi.errno != 0 && !errors.length) {\n errors.push({ line: 0, msg: msg });\n }\n }\n\n // 2. 2600basic: preprocessed code on stdin -> bB.asm on stdout,\n // writes includes.bB + 2600basic_variable_redefs.h to cwd (-i . => ./includes)\n const basic = makeRunner(\"2600basic\");\n basic.stdin.write(preprocessed);\n basic.stdin.offset = 0;\n runRunner(basic, \"2600basic\", [\"-i\", \".\"], errors);\n const basicerr = basic.fds[2].getBytesAsString();\n matchBasicErrors(basicerr, srcpath, errors);\n checkExit(basic, \"Compilation failed.\");\n if (errors.length) return { errors };\n const bbasm = basic.fds[1].getBytes();\n\n // 3. postprocess: reads includes.bB + bB.asm from cwd -> composite asm on stdout\n const post = makeRunner(\"postprocess\");\n post.fs.putFile(\"./bB.asm\", bbasm);\n for (const f of basic.fs.getFiles()) {\n if (!f.name.startsWith('./includes/')) post.fs.putFile(f.name, f.getBytes());\n }\n runRunner(post, \"postprocess\", [\"-i\", \".\"], errors);\n checkExit(post, \"Postprocess failed.\");\n if (errors.length) return { errors };\n const asmout = post.fds[1].getBytes();\n putWorkFile(destpath, asmout);\n\n // 4. dasm: assemble composite asm with include dir\n const dasm = makeRunner(\"dasm\");\n dasm.fs.putFile(\"./\" + destpath, asmout);\n for (const f of basic.fs.getFiles()) {\n if (!f.name.startsWith('./includes/')) dasm.fs.putFile(f.name, f.getBytes());\n }\n runRunner(dasm, \"dasm\", [destpath, \"-I./includes\", \"-f3\", \"-p20\",\n \"-l\" + lstpath, \"-s\" + sympath, \"-o\" + binpath], errors);\n // parse dasm stdout/stderr for warnings/errors\n const unresolved = {};\n const fatal = parseDASMOutput(dasm.fds[1].getBytesAsString(), errors, unresolved);\n const matcher = msvcErrorMatcher(errors);\n for (let line of dasm.fds[2].getBytesAsString().split(\"\\n\")) {\n matcher(line);\n }\n if (errors.length) {\n return { errors: errors };\n }\n const alst = dasm.fs.getFile(\"./\" + lstpath).getBytesAsString();\n const listings: CodeListingMap = {};\n for (let path of [...step.files, destpath]) {\n listings[path] = { lines: [] };\n }\n parseDASMListing(lstpath, alst, listings, errors, unresolved);\n // the fatal summary only helps when we found nothing more specific\n if (fatal && !errors.length) errors.push({ line: 0, msg: fatal });\n if (errors.length) {\n return { errors: errors };\n }\n let asym;\n try {\n asym = dasm.fs.getFile(\"./\" + sympath).getBytesAsString();\n } catch (e) {\n console.log(e);\n return { errors: [{ line: 0, msg: \"No symbol table generated, maybe segment overflow?\" }] };\n }\n const symbolmap = parseSymbolMap(asym);\n const aout = dasm.fs.getFile(\"./\" + binpath).getBytes();\n putWorkFile(binpath, aout);\n putWorkFile(lstpath, alst);\n putWorkFile(sympath, asym);\n // return unchanged if no files changed\n if (!anyTargetChanged(step, [binpath]))\n return;\n // map asm listing onto the BASIC editor view\n let lst = listings[destpath];\n if (lst) {\n lst.asmlines = lst.lines;\n lst.text = alst;\n lst.lines = [];\n }\n return {\n output: aout,\n listings: listings,\n errors: errors,\n symbolmap: symbolmap,\n origin: getOrigin(listings),\n };\n}\n\n// Determine likely origin address from listing\nfunction getOrigin(listings: CodeListingMap): number | undefined {\n let minOffset: number | undefined;\n for (let key in listings) {\n let lst = listings[key];\n if (lst && lst.asmlines) {\n for (let line of lst.asmlines) {\n if (line.iscode && line.offset > 0) {\n if (minOffset === undefined || line.offset < minOffset) {\n minOffset = line.offset;\n }\n }\n }\n }\n }\n return minOffset;\n}\n", "// Parser for the oscar64 compiler's auxiliary output files.\n// oscar64 writes a .map (memory map), .lbl (label file) and .asm\n// (assembly listing with C source line markers) next to the output.\n// This module is shared by the browser/WASM tool (src/worker/tools/oscar64.ts)\n// and the native server tool (src/worker/server/buildenv.ts).\n\nimport { CodeListingMap, Segment, SourceLine } from \"../../common/workertypes\";\n\nexport interface Oscar64ParseResult {\n segments: Segment[];\n symbolmap: { [sym: string]: number };\n listings: CodeListingMap;\n}\n\n/**\n * Parse an oscar64 .map file.\n * Returns segments (from the 'sections' section) and a symbol map\n * (from the 'objects' section).\n *\n * Sample:\n * sections\n * 0880 - 0889 : DATA, code\n * 0889 - 088a : DATA, data\n * ...\n * objects\n * 0801 - 0853 : startup, NATIVE_CODE:startup\n * 0880 - 0889 : main, NATIVE_CODE:code\n */\nexport function parseOscar64Map(mapout: string) {\n let segments: Segment[] = [];\n let symbolmap: { [sym: string]: number } = {};\n let section = '';\n for (let line of mapout.split('\\n')) {\n line = line.trim();\n if (line === 'sections' || line === 'regions' || line === 'objects' || line === 'objects by size') {\n section = line;\n continue;\n }\n // \"0880 - 0889 : DATA, code\" or \"0801 - 0853 : startup, NATIVE_CODE:startup\"\n let m = /^([0-9a-f]+) - ([0-9a-f]+) : ([^,]+), (.+)$/.exec(line);\n if (m) {\n const start = parseInt(m[1], 16);\n const end = parseInt(m[2], 16);\n const name = m[4].trim();\n if (section === 'sections') {\n // derive rom/ram classification from the segment name\n let type = 'ram';\n if (/code/.test(m[4]) || m[4] === 'startup' || /rom/.test(m[4])) {\n type = 'rom';\n }\n segments.push({ name: m[4], start, size: end - start, type });\n } else if (section === 'objects') {\n if (m[3] !== '*') symbolmap[m[3]] = start;\n }\n }\n }\n return { segments, symbolmap };\n}\n\n/**\n * Parse an oscar64 .lbl file (VICE label format), e.g. \"al 0880 .main\".\n * Used as a fallback when the .map has no \"objects\" section.\n */\nexport function parseOscar64Lbl(lblout: string) {\n let symbolmap: { [sym: string]: number } = {};\n for (let line of lblout.split('\\n')) {\n let toks = line.trim().split(/\\s+/);\n if (toks[0] == 'al' && toks.length >= 3) {\n const ofs = parseInt(toks[1], 16);\n const name = toks[2];\n // prefer the un-dotted form used by the assembler listing\n const clean = name.replace(/^\\./, '');\n if (!symbolmap[clean]) symbolmap[clean] = ofs;\n }\n }\n return symbolmap;\n}\n\n/**\n * Parse an oscar64 .asm listing.\n * Returns source lines (each instruction offset mapped to its C source line)\n * and assembly lines (one entry per assembly line in the listing).\n *\n * Sample:\n * ; Compiled with 1.32.266\n * --------------------------------------------------------------------\n * startup: ; startup\n * 0801 : 0b __ __ INV\n * ...\n * main: ; main()->i16\n * ; 2, \"/test.c\"\n * .s4:\n * ; 2, \"/test.c\"\n * 0880 : a9 04 __ LDA #$04\n */\nexport function parseOscar64Listing(asmout: string, asmfn: string) {\n let srclines: SourceLine[] = [];\n let asmlines: SourceLine[] = [];\n let c_lineno = 0;\n let c_path = '';\n let asm_lineno = 0;\n // ; 2, \"/test.c\"\n let re_src = /^;\\s*(\\d+), \"(.+?)\"/;\n // 0801 : 0b __ __ INV\n let re_insn = /^([0-9a-f]+) : ([0-9a-f _]{8}) (.*)/;\n for (let line of asmout.split('\\n')) {\n asm_lineno++;\n let m2 = re_src.exec(line);\n if (m2) {\n c_lineno = parseInt(m2[1]);\n // path may be absolute; use basename for source line mapping\n c_path = m2[2].split('/').pop();\n }\n let m = re_insn.exec(line);\n if (m) {\n let offset = parseInt(m[1], 16);\n let hex = m[2];\n let asm = m[3];\n let insns = (hex + ' ' + asm).trim();\n asmlines.push({\n line: asm_lineno,\n path: asmfn,\n offset,\n insns,\n iscode: true,\n });\n if (c_path) {\n srclines.push({\n line: c_lineno,\n path: c_path,\n offset,\n iscode: true,\n });\n c_path = '';\n }\n }\n }\n return { srclines, asmlines };\n}", "import { WASIFilesystem, WASIRunner } from \"../../common/wasi/wasishim\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store, putWorkFile } from \"../builder\";\nimport { makeErrorMatcher } from \"../listingutils\";\nimport { parseOscar64Listing, parseOscar64Lbl, parseOscar64Map } from \"./oscar64parse\";\nimport { loadWASIFilesystemZip } from \"../wasiutils\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\nlet oscar64_fs: WASIFilesystem | null = null;\nlet wasiModule: WebAssembly.Module | null = null;\n\n// find a file in the WASI fs whose name ends with the given suffix.\n// oscar64 writes files as \"./path/name.ext\" (or \"././name.ext\" when the\n// output was specified with a \"./\" prefix), so match on suffix only.\nfunction getWasiFileAsString(wasi: WASIRunner, suffix: string): string | null {\n for (const fd of wasi.fs.getFiles()) {\n if (fd.name.endsWith(suffix)) {\n return fd.getBytesAsString();\n }\n }\n return null;\n}\n\nexport async function compileOscar64(step: BuildStep): Promise {\n const errors = [];\n gatherFiles(step, { mainFilePath: \"main.c\" });\n const destpath = \"./\" + (step.path || \"main.c\").replace(/\\.[^.]+$/, \".prg\");\n if (staleFiles(step, [destpath])) {\n if (!oscar64_fs) {\n oscar64_fs = await loadWASIFilesystemZip(\"oscar64-fs.zip\");\n }\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"oscar64\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n wasi.fs.setParent(oscar64_fs);\n for (let file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\"include\");\n wasi.addPreopenDirectory(\".\");\n wasi.setArgs([\"oscar64\", \"-v\", \"-g\", \"-ii=include\", \"-o=\" + destpath, step.path]);\n try {\n wasi.run();\n } catch (e) {\n errors.push(e);\n }\n let stdout = wasi.fds[1].getBytesAsString();\n let stderr = wasi.fds[2].getBytesAsString();\n console.log('stdout', stdout);\n console.log('stderr', stderr);\n // (58, 17) : error 3001: Could not open source file. 'stdlib.c'\n const matcher = makeErrorMatcher(errors, /\\((\\d+),\\s+(\\d+)\\)\\s+: error (\\d+): (.+)/, 1, 4, step.path);\n const matcher2 = makeErrorMatcher(errors, /oscar64: error (\\d+): (.+)/, 0, 2, step.path);\n for (let line of stderr.split('\\n')) {\n matcher(line);\n matcher2(line);\n }\n if (errors.length) {\n return { errors };\n }\n const output = wasi.fs.getFile(\"./\" + destpath).getBytes();\n putWorkFile(destpath, output);\n // read and parse oscar64 auxiliary output files (.map, .lbl, .asm)\n const prefix = destpath.replace(/\\.prg$/, '');\n let mapout = getWasiFileAsString(wasi, prefix + \".map\") || getWasiFileAsString(wasi, \".map\");\n let lblout = getWasiFileAsString(wasi, prefix + \".lbl\") || getWasiFileAsString(wasi, \".lbl\");\n let asmout = getWasiFileAsString(wasi, prefix + \".asm\") || getWasiFileAsString(wasi, \".asm\");\n let segments = [];\n let symbolmap = {};\n if (mapout) {\n let parsed = parseOscar64Map(mapout);\n segments = parsed.segments;\n symbolmap = parsed.symbolmap;\n putWorkFile(prefix + \".map\", mapout);\n }\n if (lblout) {\n // merge any extra symbols from the .lbl file\n symbolmap = Object.assign(parseOscar64Lbl(lblout), symbolmap);\n putWorkFile(prefix + \".lbl\", lblout);\n }\n let listings = {};\n if (asmout) {\n let { srclines, asmlines } = parseOscar64Listing(asmout, step.path);\n let lstpath = prefix.replace(/^\\.\\//, '') + '.lst';\n putWorkFile(prefix + \".asm\", asmout);\n listings[lstpath] = {\n lines: srclines,\n asmlines: asmlines,\n text: asmout,\n };\n }\n return {\n output,\n errors,\n listings,\n symbolmap,\n segments,\n };\n }\n}\n", "import { WASIRunner } from \"../../common/wasi/wasishim\";\nimport { CodeListing, CodeListingMap } from \"../../common/workertypes\";\nimport { BuildStep, BuildStepResult, gatherFiles, putWorkFile, staleFiles, store } from \"../builder\";\nimport { re_crlf } from \"../listingutils\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\n// xa listing lines look like this:\n// 5 A:c000 a9 05 start lda #$05 ; comment\n// (line number, segment:address, then fixed-width byte / label / source columns)\nconst re_listing = /^\\s*(\\d+) (\\w):([0-9a-f]+) (.*)$/i;\nconst LABEL_COL = 25; // width of the byte column\nconst SOURCE_COL = 35; // width of the byte + label columns\n\n// xa writes errors to stderr, e.g.:\n// main.xa:line 7: c00c:Overflow error\nconst re_error = /^(\\S.*?):line (\\d+): (?:[0-9a-f]+:)?\\s*(.+)$/;\n\n// the label file (-l) has one comma-separated entry per line:\n// start, 0xc000, 0, 0x0000\nconst re_label = /^(\\S+),\\s*0x([0-9a-f]+)/i;\n\nfunction parseXALabels(text: string) {\n const symbolmap = {};\n for (const line of text.split(re_crlf)) {\n const m = re_label.exec(line);\n if (m) {\n symbolmap[m[1]] = parseInt(m[2], 16);\n }\n }\n return symbolmap;\n}\n\nfunction parseXAListing(lsttext: string, listings: CodeListingMap) {\n // xa prints the file name on its own line whenever it enters or resumes a file\n let path: string | null = null;\n let listing: CodeListing | null = null;\n let lastline = 0;\n const lastlines: { [path: string]: number } = {};\n for (const line of lsttext.split(re_crlf)) {\n const m = re_listing.exec(line);\n if (!m) {\n // a file name switches us to another listing\n const newpath = line.trim();\n if (listings[newpath]) {\n if (path) lastlines[path] = lastline;\n path = newpath;\n listing = listings[path];\n lastline = lastlines[path] || 0;\n }\n continue;\n }\n const linenum = parseInt(m[1]);\n const offset = parseInt(m[3], 16);\n const rest = m[4];\n const insns = rest.substring(0, LABEL_COL).replace('...', '').trim();\n const source = rest.substring(SOURCE_COL).trim();\n // when xa resumes a file after an include it repeats its line counter\n // for one line, so only accept line numbers that move forward\n if (insns && listing && linenum > lastline) {\n listing.lines.push({\n line: linenum,\n offset: offset,\n insns: insns,\n iscode: !source.startsWith('.'),\n });\n }\n if (linenum > lastline) lastline = linenum;\n }\n}\n\n// the origin is the address of the first byte written to the output file\nfunction getListingOrigin(listings: CodeListingMap): number | undefined {\n let origin: number | undefined;\n for (const key in listings) {\n for (const line of listings[key].lines) {\n if (origin === undefined || line.offset < origin) origin = line.offset;\n }\n }\n return origin;\n}\n\nlet wasiModule: WebAssembly.Module | null = null;\n\nexport function assembleXA(step: BuildStep): BuildStepResult {\n const errors = [];\n gatherFiles(step, { mainFilePath: \"main.xa\" });\n const binpath = step.prefix + \".bin\";\n const lstpath = step.prefix + \".lst\";\n const sympath = step.prefix + \".lbl\";\n if (staleFiles(step, [binpath])) {\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"xa\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n for (const file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\".\");\n const args = ['xa', '-E', '-o', binpath, '-l', sympath, '-P', lstpath];\n if (step.params?.xaargs) {\n args.push.apply(args, step.params.xaargs);\n }\n args.push(\"-D__8BITWORKSHOP__=1\");\n if (step.mainfile) {\n args.push(\"-D__MAIN__=1\");\n }\n args.push(step.path);\n wasi.setArgs(args);\n try {\n wasi.run();\n } catch (e) {\n errors.push({ line: 0, msg: e + \"\" });\n }\n const stderr = wasi.fds[2].getBytesAsString();\n for (const line of stderr.split(re_crlf)) {\n const m = re_error.exec(line);\n if (m) {\n errors.push({ path: m[1], line: parseInt(m[2]), msg: m[3] });\n }\n }\n if (errors.length) {\n return { errors };\n }\n const lstout = wasi.fs.getFile(\"./\" + lstpath)?.getBytesAsString() || \"\";\n const symout = wasi.fs.getFile(\"./\" + sympath)?.getBytesAsString() || \"\";\n const output = wasi.fs.getFile(\"./\" + binpath)?.getBytes();\n if (!output) {\n return { errors: [{ line: 0, msg: \"xa did not produce an output file\" }] };\n }\n const listings: CodeListingMap = {};\n for (const path of step.files) {\n listings[path] = { lines: [] };\n }\n parseXAListing(lstout, listings);\n putWorkFile(binpath, output);\n putWorkFile(lstpath, lstout);\n putWorkFile(sympath, symout);\n return {\n output,\n errors,\n listings,\n symbolmap: parseXALabels(symout),\n origin: getListingOrigin(listings),\n };\n }\n}\n", "import { WorkerError } from \"../../common/workertypes\";\nimport { WASIFilesystem, WASIRunner } from \"../../common/wasi/wasishim\";\nimport { BuildStep, BuildStepResult, gatherFiles, staleFiles, store, putWorkFile } from \"../builder\";\nimport { loadWASIFilesystemZip } from \"../wasiutils\";\nimport { loadWASMBinary } from \"../wasmutils\";\n\n// the Dialog standard library ships in the preload filesystem, but a project\n// can override it by including its own copy\nconst STDLIB = \"stdlib.dg\";\n\nlet dialog_fs: WASIFilesystem | null = null;\nlet wasiModule: WebAssembly.Module | null = null;\n\n// Error: story.dg, line 6: Unexpected token at beginning of line.\n// Error: No library (such as stdlib.dg) was specified on the commandline.\nconst re_error = /^Error:\\s+(?:(\\S+?), line (\\d+):\\s+)?(.+)/;\n\nexport async function compileDialog(step: BuildStep): Promise {\n const errors: WorkerError[] = [];\n gatherFiles(step, { mainFilePath: \"main.dg\" });\n const destpath = step.prefix + \".z8\";\n if (staleFiles(step, [destpath])) {\n if (!dialog_fs) {\n dialog_fs = await loadWASIFilesystemZip(\"dialog-fs.zip\");\n }\n if (!wasiModule) {\n wasiModule = new WebAssembly.Module(loadWASMBinary(\"dialogc\"));\n }\n const wasi = new WASIRunner();\n wasi.initSync(wasiModule);\n wasi.fs.setParent(dialog_fs);\n for (let file of step.files) {\n wasi.fs.putFile(\"./\" + file, store.getFileData(file));\n }\n wasi.addPreopenDirectory(\".\");\n // sources are matched in command-line order, so the story comes first\n // and the library last -- a project's own stdlib.dg shadows the\n // preloaded one, since putFile() writes to the child filesystem\n const sources = step.files.filter(fn => fn.endsWith(\".dg\") && fn != STDLIB);\n sources.push(STDLIB);\n wasi.setArgs([\"dialogc\", \"-t\", \"z8\", \"-o\", destpath, ...sources]);\n try {\n wasi.run();\n } catch (e) {\n errors.push({ line: 0, msg: e + \"\" });\n }\n const stderr = wasi.fds[2].getBytesAsString();\n for (let line of stderr.split(\"\\n\")) {\n const matches = re_error.exec(line);\n if (matches) {\n errors.push({\n path: matches[1] || step.path,\n line: parseInt(matches[2]) || 0,\n msg: matches[3]\n });\n } else if (line) {\n console.log(line); // warnings, progress messages\n }\n }\n if (errors.length) {\n return { errors };\n }\n const outfile = wasi.fs.getFile(\"./\" + destpath);\n if (!outfile) {\n return { errors: [{ line: 0, msg: \"dialogc did not produce \" + destpath }] };\n }\n const output = outfile.getBytes();\n putWorkFile(destpath, output);\n return { output, errors };\n }\n}\n", "\nimport * as misc from './tools/misc'\nimport * as cc65 from './tools/cc65'\nimport * as dasm from './tools/dasm'\nimport * as sdcc from './tools/sdcc'\nimport * as verilog from './tools/verilog'\nimport * as m6809 from './tools/m6809'\nimport * as m6502 from './tools/m6502'\nimport * as z80 from './tools/z80'\nimport * as x86 from './tools/x86'\nimport * as arm from './tools/arm'\nimport * as ecs from './tools/ecs'\nimport * as remote from './tools/remote'\nimport * as acme from './tools/acme'\nimport * as cc7800 from './tools/cc7800'\nimport * as cc2600 from './tools/cc2600'\nimport * as bataribasic from './tools/bataribasic'\nimport * as oscar64 from './tools/oscar64'\nimport * as xa from './tools/xa'\nimport * as dialog from './tools/dialog'\n\n\nexport const TOOLS = {\n 'dasm': dasm.assembleDASM,\n 'acme': acme.assembleACME,\n 'cc65': cc65.compileCC65,\n 'ca65': cc65.assembleCA65,\n 'ld65': cc65.linkLD65,\n //'z80asm': assembleZ80ASM,\n //'sccz80': compileSCCZ80,\n 'sdasz80': sdcc.assembleSDASZ80,\n 'sdasgb': sdcc.assembleSDASGB,\n 'sdldz80': sdcc.linkSDLDZ80,\n 'sdcc': sdcc.compileSDCC,\n 'xasm6809': m6809.assembleXASM6809,\n 'cmoc': m6809.compileCMOC,\n 'lwasm': m6809.assembleLWASM,\n 'lwlink': m6809.linkLWLINK,\n //'naken': assembleNAKEN,\n 'verilator': verilog.compileVerilator,\n 'yosys': verilog.compileYosys,\n 'jsasm': verilog.compileJSASMStep,\n 'zmac': z80.assembleZMAC,\n 'nesasm': m6502.assembleNESASM,\n 'smlrc': x86.compileSmallerC,\n 'yasm': x86.assembleYASM,\n 'bataribasic': bataribasic.compileBatariBasic,\n 'inform6': misc.compileInform6,\n 'merlin32': m6502.assembleMerlin32,\n 'fastbasic': m6502.compileFastBasic,\n 'basic': misc.compileBASIC,\n 'silice': verilog.compileSilice,\n 'wiz': misc.compileWiz,\n 'armips': arm.assembleARMIPS,\n 'vasmarm': arm.assembleVASMARM,\n 'ecs': ecs.assembleECS,\n 'remote': remote.buildRemote,\n 'cc7800': cc7800.compileCC7800,\n 'cc2600': cc2600.compilecc2600,\n 'armtcc': arm.compileARMTCC,\n 'armtcclink': arm.linkARMTCC,\n 'oscar64': oscar64.compileOscar64,\n 'xa': xa.assembleXA,\n 'dialog': dialog.compileDialog,\n}\n", "import { getPlatformToolConfig, getToolMeta } from \"../common/toolmeta\";\nimport { convertDataToUint8Array, getBasePlatform } from \"../common/util\";\nimport { WorkerBuildStep, WorkerError, WorkerErrorResult, WorkerMessage, WorkerResult, WorkingStore } from \"../common/workertypes\";\nimport { PLATFORM_PARAMS } from \"./platforms\";\nimport { TOOLS } from \"./workertools\";\n\n/// working file store and build steps\n\nconst PSRC = \"../../src/\";\nexport const PWORKER = PSRC + \"worker/\";\n\nexport type FileData = string | Uint8Array;\n\nexport type FileEntry = {\n path: string\n encoding: string\n data: FileData\n ts: number\n};\n\nexport type BuildOptions = {\n mainFilePath: string,\n processFn?: (s: string, d: FileData) => FileData\n};\n\n// TODO\nexport type BuildStepResult = WorkerResult | WorkerNextToolResult;\n\nexport interface WorkerNextToolResult {\n nexttool?: string\n linktool?: string\n path?: string\n args: string[]\n files: string[]\n bblines?: boolean\n}\n\nexport interface BuildStep extends WorkerBuildStep {\n files?: string[]\n args?: string[]\n nextstep?: BuildStep\n linkstep?: BuildStep\n params?\n result?: BuildStepResult\n code?\n prefix?\n maxts?\n debuginfo?\n};\n\n///\n\nexport function fixLineEndings(data: any): any {\n if (typeof data === 'string') {\n // C build tools require LF line endings.\n return data.replace(/\\r\\n/g, '\\n');\n }\n return data;\n}\n\nexport class FileWorkingStore implements WorkingStore {\n workfs: { [path: string]: FileEntry } = {};\n workerseq: number = 0;\n items: {};\n\n constructor() {\n this.reset();\n }\n reset() {\n this.workfs = {};\n this.newVersion();\n }\n currentVersion() {\n return this.workerseq;\n }\n newVersion() {\n let ts = new Date().getTime();\n if (ts <= this.workerseq)\n ts = ++this.workerseq;\n return ts;\n }\n putFile(path: string, data: FileData): FileEntry {\n var encoding = (typeof data === 'string') ? 'utf8' : 'binary';\n var entry = this.workfs[path];\n if (!entry || !compareData(entry.data, data) || entry.encoding != encoding) {\n this.workfs[path] = entry = { path: path, data: data, encoding: encoding, ts: this.newVersion() };\n console.log('+++', entry.path, entry.encoding, entry.data.length, entry.ts);\n }\n return entry;\n }\n hasFile(path: string) {\n return this.workfs[path] != null;\n }\n getFileData(path: string): FileData {\n return this.workfs[path] && this.workfs[path].data;\n }\n getFileAsString(path: string): string {\n let data = this.getFileData(path);\n if (data != null && typeof data !== 'string')\n throw new Error(`${path}: expected string`)\n return fixLineEndings(data) as string; // TODO\n }\n getFileEntry(path: string): FileEntry {\n return this.workfs[path];\n }\n setItem(key: string, value: object) {\n this.items[key] = value;\n }\n}\n\nexport var store = new FileWorkingStore();\n\n///\n\nexport function errorResult(msg: string): WorkerErrorResult {\n return { errors: [{ line: 0, msg: msg }] };\n}\n\nexport class Builder {\n steps: BuildStep[] = [];\n startseq: number = 0;\n // platform params for the build in progress -- see paramsForBuild()\n buildParams: { [platform: string]: {} } = {};\n\n // returns true if file changed during this build step\n wasChanged(entry: FileEntry): boolean {\n return entry.ts > this.startseq;\n }\n\n /**\n * The platform params for this build. Tools rewrite them in place --\n * fixParamsWithDefines() applies the source build directives (//#symbol,\n * //#flag, //#tooldef, plus the legacy #define CFGFILE/LIBARGS/NES_MAPPER\n * forms), and ecs picks its own cfgfile -- and later steps read the result,\n * which is how the linker learns which config file to use. So the copy is\n * per build, not per step: shared by every step of one build, thrown away\n * afterwards so one source file's directives can't follow the next build\n * around.\n */\n paramsForBuild(platform: string) {\n if (!this.buildParams[platform]) {\n const params = PLATFORM_PARAMS[platform] || PLATFORM_PARAMS[getBasePlatform(platform)];\n this.buildParams[platform] = cloneParams(params);\n }\n return this.buildParams[platform];\n }\n\n async executeBuildSteps(): Promise {\n this.startseq = store.currentVersion();\n this.buildParams = {};\n var linkstep: BuildStep = null;\n while (this.steps.length) {\n var step = this.steps.shift(); // get top of array\n var platform = step.platform;\n var [tool, remoteTool] = step.tool.split(':', 2);\n var toolfn = TOOLS[tool];\n if (!toolfn) {\n throw Error(`no tool named \"${tool}\"`);\n }\n if (remoteTool) {\n step.tool = remoteTool;\n }\n step.params = this.paramsForBuild(platform);\n try {\n applyPlatformAndStepParams(step);\n step.result = await toolfn(step);\n } catch (e) {\n console.log(\"EXCEPTION\", e, e.stack);\n return errorResult(e + \"\"); // TODO: catch errors already generated?\n }\n if (step.result) {\n (step.result as any).params = step.params; // TODO: type check\n if (step.debuginfo) {\n let r = step.result as any; // TODO\n if (!r.debuginfo) r.debuginfo = {};\n Object.assign(r.debuginfo, step.debuginfo);\n }\n // errors? return them\n if ('errors' in step.result && step.result.errors.length) {\n applyDefaultErrorPath(step.result.errors, step.path);\n return step.result;\n }\n // if we got some output, return it immediately\n if ('output' in step.result && step.result.output) {\n return step.result;\n }\n // combine files with a link tool?\n if ('linktool' in step.result) {\n // add to existing link step\n if (linkstep) {\n linkstep.files = linkstep.files.concat(step.result.files);\n linkstep.args = linkstep.args.concat(step.result.args);\n } else {\n linkstep = {\n tool: step.result.linktool,\n platform: platform,\n files: step.result.files,\n args: step.result.args\n };\n }\n linkstep.debuginfo = step.debuginfo; // TODO: multiple debuginfos\n }\n // process with another tool?\n if ('nexttool' in step.result) {\n var asmstep: BuildStep = {\n tool: step.result.nexttool,\n platform: platform,\n ...step.result\n }\n this.steps.push(asmstep);\n }\n // process final step?\n if (this.steps.length == 0 && linkstep) {\n this.steps.push(linkstep);\n linkstep = null;\n }\n }\n }\n }\n async handleMessage(data: WorkerMessage): Promise {\n this.steps = [];\n // file updates\n if (data.updates) {\n data.updates.forEach((u) => store.putFile(u.path, u.data));\n }\n // object update\n if (data.setitems) {\n data.setitems.forEach((i) => store.setItem(i.key, i.value));\n }\n // build steps\n if (data.buildsteps) {\n this.steps.push.apply(this.steps, data.buildsteps);\n }\n // single-file\n if (data.code) {\n this.steps.push(data as BuildStep); // TODO: remove cast\n }\n // execute build steps\n if (this.steps.length) {\n var result = await this.executeBuildSteps();\n return result ? result : { unchanged: true };\n }\n // TODO: cache results\n // message not recognized\n console.log(\"Unknown message\", data);\n }\n}\n\nfunction applyDefaultErrorPath(errors: WorkerError[], path: string) {\n if (!path) return;\n for (var i = 0; i < errors.length; i++) {\n var err = errors[i];\n if (!err.path && err.line) err.path = path;\n }\n}\n\nfunction compareData(a: FileData, b: FileData): boolean {\n if (a.length != b.length) return false;\n if (typeof a === 'string' && typeof b === 'string') {\n return a == b;\n } else {\n for (var i = 0; i < a.length; i++) {\n //if (a[i] != b[i]) console.log('differ at byte',i,a[i],b[i]);\n if (a[i] != b[i]) return false;\n }\n return true;\n }\n}\n\nexport const builder = new Builder();\n\nvar _t1;\nexport function starttime() { _t1 = new Date(); }\nexport function endtime(msg) { var _t2 = new Date(); console.log(msg, _t2.getTime() - _t1.getTime(), \"ms\"); }\n\n///\n\nexport function putWorkFile(path: string, data: FileData) {\n return store.putFile(path, data);\n}\n\nexport function getWorkFileAsString(path: string): string {\n return store.getFileAsString(path);\n}\n\nexport function populateEntry(fs, path: string, entry: FileEntry, options: BuildOptions) {\n var data = entry.data;\n if (options && options.processFn) {\n data = options.processFn(path, data);\n }\n data = fixLineEndings(data);\n // create subfolders\n var toks = path.split('/');\n if (toks.length > 1) {\n for (var i = 0; i < toks.length - 1; i++)\n try {\n fs.mkdir(toks[i]);\n } catch (e) { }\n }\n // write file\n fs.writeFile(path, data, { encoding: entry.encoding });\n var time = new Date(entry.ts);\n fs.utime(path, time, time);\n console.log(\"<<<\", path, entry.data.length);\n}\n\n// can call multiple times (from populateFiles)\nexport function gatherFiles(step: BuildStep, options?: BuildOptions): number {\n var maxts = 0;\n if (step.files) {\n for (var i = 0; i < step.files.length; i++) {\n var path = step.files[i];\n var entry = store.workfs[path];\n if (!entry) {\n throw new Error(\"No entry for path '\" + path + \"'\");\n } else {\n maxts = Math.max(maxts, entry.ts);\n }\n }\n }\n else if (step.code) {\n var path = step.path ? step.path : options.mainFilePath; // TODO: what if options null\n if (!path) throw Error(\"need path or mainFilePath\");\n var code = step.code;\n var entry = putWorkFile(path, code);\n step.path = path;\n step.files = [path];\n maxts = entry.ts;\n }\n else if (step.path) {\n var path = step.path;\n var entry = store.workfs[path];\n maxts = entry.ts;\n step.files = [path];\n }\n if (step.path && !step.prefix) {\n step.prefix = getPrefix(step.path);\n }\n step.maxts = maxts;\n return maxts;\n}\n\nexport function getPrefix(s: string): string {\n var pos = s.lastIndexOf('.');\n return (pos > 0) ? s.substring(0, pos) : s;\n}\n\nexport function populateFiles(step: BuildStep, fs, options?: BuildOptions) {\n gatherFiles(step, options);\n if (!step.files) throw Error(\"call gatherFiles() first\");\n for (var i = 0; i < step.files.length; i++) {\n var path = step.files[i];\n populateEntry(fs, path, store.workfs[path], options);\n }\n}\n\nexport function populateExtraFiles(step: BuildStep, fs, extrafiles) {\n if (extrafiles) {\n for (var i = 0; i < extrafiles.length; i++) {\n var xfn = extrafiles[i];\n // is this file cached?\n if (store.workfs[xfn]) {\n fs.writeFile(xfn, store.workfs[xfn].data, { encoding: 'binary' });\n continue;\n }\n // fetch from network\n var xpath = \"lib/\" + getBasePlatform(step.platform) + \"/\" + xfn;\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.open(\"GET\", PWORKER + xpath, false); // synchronous request\n xhr.send(null);\n if (xhr.response && xhr.status == 200) {\n var data = new Uint8Array(xhr.response);\n fs.writeFile(xfn, data, { encoding: 'binary' });\n putWorkFile(xfn, data);\n console.log(\":::\", xfn, data.length);\n } else {\n throw Error(\"Could not load extra file \" + xpath);\n }\n }\n }\n}\n\nexport function staleFiles(step: BuildStep, targets: string[]) {\n if (!step.maxts) throw Error(\"call populateFiles() first\");\n // see if any target files are more recent than inputs\n for (var i = 0; i < targets.length; i++) {\n var entry = store.workfs[targets[i]];\n if (!entry || step.maxts > entry.ts)\n return true;\n }\n console.log(\"unchanged\", step.maxts, targets);\n return false;\n}\n\nexport function anyTargetChanged(step: BuildStep, targets: string[]) {\n if (!step.maxts) throw Error(\"call populateFiles() first\");\n // see if any target files are more recent than inputs\n for (var i = 0; i < targets.length; i++) {\n var entry = store.workfs[targets[i]];\n if (!entry || entry.ts > step.maxts)\n return true;\n }\n console.log(\"unchanged\", step.maxts, targets);\n return false;\n}\n\n/**\n * Some platforms link a hand-written assembly project differently than a C one.\n * The VCS is the case in point: a ca65 program supplies its own reset code and\n * interrupt vectors, so linking it against crt0.o (which has vectors of its\n * own) and the bank-switched config its C programs use can only collide. A\n * platform spells the difference out with asm_-prefixed copies of the link\n * params -- asm_cfgfile, asm_libargs, asm_extra_link_files -- which the\n * assembler applies when the project's main file is its own source, and which\n * nothing else looks at. Runs before fixParamsWithDefines() so that a source\n * file's own directive (//#tooldef ... cfgfile=, or a legacy CFGFILE define)\n * still has the last word.\n */\nexport function applyAsmProjectParams(params) {\n for (const key of Object.keys(params)) {\n if (key.startsWith('asm_')) params[key.substring(4)] = params[key];\n }\n}\n\n/**\n * Build directives. Three explicit, comment-marked forms replace the ad-hoc\n * `#define CFGFILE/LIBARGS/CC65_FLAGS/NES_MAPPER` scan:\n *\n * //#symbol [] NAME[=VALUE] phase in c|as|ld (default c)\n * //#flag raw argv for one phase\n * //#tooldef NAME=VALUE typed knob (linker: cfgfile, libargs)\n *\n * Symbols are phase-scoped because they are different things: a preprocessor\n * macro (`c`) takes text, while an assembler/linker global (`as`/`ld`) is an\n * integer expression (ld65 `-D sym=val` errors on strings; sdldz80 `-g` hard-\n * errors on redefinition). `#flag` is the opaque escape hatch that the build\n * engine can neither interpret nor validate.\n *\n * The marker is a comment to every tool (`//` in C, `;` in asm) and the\n * keywords are not language tokens, so a directive never collides with a real\n * #define or macro. Commenting out must break the marker (////# or ;;#),\n * which is deliberately not recognized -- unlike the legacy `;#define`, where\n * a comment character still arms the directive.\n */\nexport type BuildPhase = 'compiler' | 'assembler' | 'linker';\n\nexport interface PhaseLists {\n compiler: string[];\n assembler: string[];\n linker: string[];\n}\n\nexport interface SourceDirectives {\n /** `//#symbol` defines, keyed by phase (NAME or NAME=VALUE) */\n symbols: PhaseLists;\n /** `//#flag` raw argv, keyed by phase */\n flags: PhaseLists;\n /** `//#tooldef` typed knobs */\n tooldefs: { phase: BuildPhase; name: string; value: string }[];\n errors: string[];\n}\n\nconst PHASE_ALIASES: { [k: string]: BuildPhase } = {\n c: 'compiler', cc: 'compiler', compiler: 'compiler',\n as: 'assembler', asm: 'assembler', assembler: 'assembler',\n ld: 'linker', link: 'linker', linker: 'linker',\n};\n\nconst PHASES: BuildPhase[] = ['compiler', 'assembler', 'linker'];\n\n/** Deep-copy platform params so a build can't mutate PLATFORM_PARAMS. */\nfunction cloneParams(params) {\n if (!params || typeof params !== 'object') return params;\n if (Array.isArray(params)) return params.slice();\n let copy = {};\n for (const key in params) copy[key] = cloneParams(params[key]);\n return copy;\n}\n\nfunction emptyDirectives(): SourceDirectives {\n return {\n symbols: { compiler: [], assembler: [], linker: [] },\n flags: { compiler: [], assembler: [], linker: [] },\n tooldefs: [],\n errors: [],\n };\n}\n\n/** Fold b's lists (and errors) into a, so several sources share one apply. */\nfunction mergeDirectives(a: SourceDirectives, b: SourceDirectives) {\n for (let phase of PHASES) {\n a.symbols[phase].push.apply(a.symbols[phase], b.symbols[phase]);\n a.flags[phase].push.apply(a.flags[phase], b.flags[phase]);\n }\n a.tooldefs.push.apply(a.tooldefs, b.tooldefs);\n a.errors.push.apply(a.errors, b.errors);\n}\n\n/** Platform/tool-default defines+args, routed to a phase by the tool's kind. */\nfunction directivesFromConfig(tool: string, cfg): SourceDirectives {\n let dir = emptyDirectives();\n let meta = getToolMeta(tool);\n let symphase: BuildPhase = (meta && meta.kind === 'assembler') ? 'assembler' : 'compiler';\n if (cfg.defines) dir.symbols[symphase].push.apply(dir.symbols[symphase], cfg.defines);\n if (cfg.buildArgs) {\n for (let phase of PHASES) {\n if (cfg.buildArgs[phase]) dir.flags[phase].push.apply(dir.flags[phase], cfg.buildArgs[phase]);\n }\n }\n return dir;\n}\n\n/** CLI/project overrides carried on the step (symbols + raw args per phase). */\nfunction directivesFromOverrides(symbols, buildArgs): SourceDirectives {\n let dir = emptyDirectives();\n if (symbols) {\n for (let phase of PHASES) if (symbols[phase]) dir.symbols[phase].push.apply(dir.symbols[phase], symbols[phase]);\n }\n if (buildArgs) {\n for (let phase of PHASES) if (buildArgs[phase]) dir.flags[phase].push.apply(dir.flags[phase], buildArgs[phase]);\n }\n return dir;\n}\n\n/**\n * Layer build config onto a step's params: platform/tool defaults first (once\n * per tool+platform), then CLI/project overrides carried on the step. Source\n * directives are applied later and have the last word.\n */\nfunction applyPlatformAndStepParams(step: BuildStep) {\n let params = step.params;\n // tools whose platform has no params (e.g. inform6) have nothing to layer onto\n if (!params || typeof params !== 'object') return;\n let cfgKey = step.tool + '|' + step.platform;\n params.appliedPlatformCfg = params.appliedPlatformCfg || {};\n let dir = emptyDirectives();\n if (!params.appliedPlatformCfg[cfgKey]) {\n let cfg = getPlatformToolConfig(step.tool, step.platform);\n if (cfg && (cfg.defines || cfg.buildArgs)) {\n params.appliedPlatformCfg[cfgKey] = true;\n mergeDirectives(dir, directivesFromConfig(step.tool, cfg));\n }\n }\n let symbols = (step as any).symbols, buildArgs = (step as any).buildArgs;\n if (symbols || buildArgs)\n mergeDirectives(dir, directivesFromOverrides(symbols, buildArgs));\n applyBuildDirectives(dir, params);\n if (dir.errors.length)\n throw new Error('build config error: ' + dir.errors.join('; '));\n}\n\n/** Split a directive body into argv, honoring single/double quotes. */\nfunction splitDirectiveArgs(s: string): string[] {\n let out: string[] = [];\n let re = /\"([^\"]*)\"|'([^']*)'|(\\S+)/g;\n let m;\n while ((m = re.exec(s)))\n out.push(m[1] != null ? m[1] : m[2] != null ? m[2] : m[3]);\n return out;\n}\n\n/**\n * A linker symbol value must be an integer expression. Rejecting text here is\n * what keeps a string define (`#symbol FOO=bar`) out of `ld65 -D FOO=bar`,\n * which would fail with \"Constant expression expected\".\n */\nfunction isIntegerExpression(v: string): boolean {\n return v.length > 0 && /^[\\s0-9a-fA-F$xX+\\-*/%()&|^~<>]+$/.test(v);\n}\n\n/** Merge NAME=VALUE into a list, replacing any entry with the same NAME. */\nfunction mergeByName(list: string[], entry: string): string[] {\n let name = entry.split('=')[0];\n return list.filter((e) => e.split('=')[0] !== name).concat(entry);\n}\n\n/**\n * A platform may map a link symbol value to a linker config (NES_MAPPER=4 ->\n * nesbanked.cfg). Kept data-driven so the parser has no platform special cases.\n */\nfunction applySymbolConfigs(params, entries: string[]) {\n let configs = params && params.symbolConfigs;\n if (!configs) return;\n for (let e of entries) {\n let eq = e.indexOf('=');\n if (eq < 0) continue;\n let name = e.substring(0, eq), value = e.substring(eq + 1);\n let cfg = configs[name] && configs[name][value];\n if (cfg) { params.cfgfile = cfg; console.log('using config file', cfg); }\n }\n}\n\n/**\n * Record a linker symbol. If the platform already passes `NAME=...` in\n * libargs, the entry is replaced in place -- appending instead would define the\n * symbol twice (\"Redefinition of symbol\", \"Definition of public symbol ...\").\n */\nfunction setLinkSymbol(params, symbols: PhaseLists, entry: string) {\n let name = entry.split('=')[0];\n let la = params.libargs;\n if (la) {\n for (let i = 0; i < la.length; i++) {\n if (la[i].split('=')[0] === name) {\n la[i] = entry;\n applySymbolConfigs(params, [entry]);\n return;\n }\n }\n }\n symbols.linker = mergeByName(symbols.linker, entry);\n applySymbolConfigs(params, [entry]);\n}\n\n/** Parse the explicit `//#` build directives out of source text. */\nexport function parseBuildDirectives(code: string): SourceDirectives {\n let out: SourceDirectives = emptyDirectives();\n if (!code) return out;\n let re = /^[ \\t]*(?:\\/\\/|;)#(symbol|flag|tooldef)\\b([^\\n]*)/gmi;\n let m;\n while ((m = re.exec(code))) {\n let kw = m[1].toLowerCase();\n let raw = m[2].trim();\n let parts = raw.split(/\\s+/);\n let phase: BuildPhase = 'compiler';\n let rest = raw;\n if (parts.length > 1 && PHASE_ALIASES[parts[0].toLowerCase()]) {\n phase = PHASE_ALIASES[parts[0].toLowerCase()];\n rest = raw.substring(parts[0].length).trim();\n }\n if (kw === 'flag') {\n let argv = splitDirectiveArgs(rest);\n if (!argv.length) { out.errors.push(`#flag: expected ' args...'`); continue; }\n out.flags[phase].push.apply(out.flags[phase], argv);\n } else if (kw === 'symbol') {\n let sm = /^(\\w+)(?:\\s*=\\s*(.+))?$/.exec(rest);\n if (!sm) { out.errors.push(`#symbol: expected 'NAME[=VALUE]': '${raw}'`); continue; }\n let value = sm[2] != null ? sm[2].trim() : null;\n let entry = value != null ? sm[1] + '=' + value : sm[1];\n if (phase === 'linker' && !isIntegerExpression(value || '')) {\n out.errors.push(`#symbol linker: value must be an integer expression: '${entry}'`);\n continue;\n }\n out.symbols[phase].push(entry);\n } else { // tooldef\n let tm = /^(\\w+)\\s*=\\s*(.+)$/.exec(rest);\n if (!tm) { out.errors.push(`#tooldef: expected 'NAME=VALUE': '${raw}'`); continue; }\n out.tooldefs.push({ phase, name: tm[1], value: tm[2].trim() });\n }\n }\n return out;\n}\n\n/** Apply parsed directives onto the shared per-build params object. */\nexport function applyBuildDirectives(dir: SourceDirectives, params) {\n if (!params) return;\n let S: PhaseLists = params.symbols;\n if (!S) S = params.symbols = { compiler: [], assembler: [], linker: [] };\n for (let phase of PHASES) if (!S[phase]) S[phase] = [];\n let B = params.buildArgs;\n if (!B) B = params.buildArgs = { compiler: [], assembler: [], linker: [] };\n for (let phase of PHASES) {\n for (let s of dir.symbols[phase]) {\n if (phase === 'linker') {\n // enforced here too, so CLI/project overrides can't smuggle text into ld65 -D\n let eq = s.indexOf('=');\n if (eq < 0 || !isIntegerExpression(s.substring(eq + 1))) {\n dir.errors.push(`link symbol must be NAME=INTEXPR: '${s}'`);\n continue;\n }\n setLinkSymbol(params, S, s);\n } else {\n S[phase] = mergeByName(S[phase], s);\n }\n }\n B[phase].push.apply(B[phase], dir.flags[phase]);\n }\n for (let td of dir.tooldefs) {\n if (td.phase === 'linker' && td.name === 'cfgfile') {\n params.cfgfile = td.value;\n } else if (td.phase === 'linker' && td.name === 'libargs') {\n params.libargs = td.value.split(',').filter((s) => s !== '');\n } else {\n dir.errors.push(`#tooldef: unknown ${td.phase} param '${td.name}'`);\n }\n }\n}\n\n/**\n * Legacy `#define` scan plus the explicit `//#` directives. Kept in one place\n * so every tool that used to call the old scanner keeps working; the legacy\n * forms can be retired once presets migrate.\n */\nexport function fixParamsWithDefines(path: string, params) {\n if (!path) return;\n var code = getWorkFileAsString(path);\n if (!code) return;\n // directives are per source file; a build can scan the same file from more\n // than one step, so apply each file once (raw #flag pushes are not idempotent)\n params.directivePaths = params.directivePaths || {};\n if (params.directivePaths[path]) return;\n params.directivePaths[path] = true;\n\n // 1. legacy `#define` scan -- semantics preserved exactly for compatibility\n var libargs = params.libargs;\n if (libargs) {\n var ident2index = {};\n for (var i = 0; i < libargs.length; i++) {\n var toks = libargs[i].split('=');\n if (toks.length == 2) ident2index[toks[0]] = i;\n }\n var re = /^[;/]?#define\\s+(\\w+)\\s+(\\S+)/gmi; // TODO: empty string?\n var m;\n while (m = re.exec(code)) {\n var ident = m[1];\n var value = m[2];\n var index = ident2index[ident];\n if (index >= 0) {\n libargs[index] = ident + \"=\" + value;\n console.log('Using libargs', index, libargs[index]);\n applySymbolConfigs(params, [libargs[index]]);\n } else if (ident == 'CFGFILE' && value) {\n params.cfgfile = value;\n } else if (ident == 'LIBARGS' && value) {\n params.libargs = value.split(',').filter((s) => { return s != ''; });\n console.log('Using libargs', params.libargs);\n } else if (ident == 'CC65_FLAGS' && value) {\n params.extra_compiler_args = value.split(',').filter((s) => { return s != ''; });\n console.log('Using compiler flags', params.extra_compiler_args);\n }\n }\n }\n\n // 2. explicit //# directives\n var dir = parseBuildDirectives(code);\n applyBuildDirectives(dir, params);\n // malformed directives are a build-config error, not a silent no-op\n if (dir.errors.length)\n throw new Error('build directive error: ' + dir.errors.join('; '));\n}\n\nexport function processEmbedDirective(code: string) {\n let re3 = /^\\s*#embed\\s+\"(.+?)\"/gm;\n // find #embed \"filename.bin\" and replace with C array data\n return code.replace(re3, (m, m1) => {\n let filename = m1;\n let filedata = store.getFileData(filename);\n let bytes = convertDataToUint8Array(filedata);\n if (!bytes) throw new Error('#embed: file not found: \"' + filename + '\"');\n let out = '';\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString() + ',';\n }\n return out.substring(0, out.length-1);\n });\n}\n\n", "\nimport type { WorkerResult, WorkerMessage, WorkerError, SourceLine } from \"../common/workertypes\";\nimport { getPreloadFSName } from \"../common/toolmeta\";\nimport { store, builder, errorResult, getWorkFileAsString } from \"./builder\";\nimport { emglobal, fsMeta, loadFilesystem, listSharedFiles, readSharedFile, ensureFilesystem, readWasiSharedFile, listWasiSharedFiles, ensureWasiFilesystem } from \"./wasmutils\";\n\n// shared FS names starting with 'wasi:' refer to a WASI filesystem zip\nfunction splitWasiFSName(fsName: string): { wasi: boolean, name: string } {\n return fsName.startsWith('wasi:') ? { wasi: true, name: fsName.substring(5) } : { wasi: false, name: fsName };\n}\n\ndeclare function importScripts(path: string);\ndeclare function postMessage(msg);\n\nexport function setupRequireFunction() {\n var exports = {};\n exports['jsdom'] = {\n JSDOM: function (a, b) {\n this.window = {};\n }\n };\n emglobal['require'] = (modname: string) => {\n // Emscripten glue may ask for Node builtins when running outside the browser\n if (modname === 'path' || modname === 'fs') {\n try { return require(modname); } catch (e) { }\n }\n console.log('require', modname, exports[modname] != null);\n return exports[modname];\n }\n}\n\n////////////////////////////\n\n//const waitFor = delay => new Promise(resolve => setTimeout(resolve, delay)); // for testing\n\nasync function handleMessage(data: WorkerMessage): Promise {\n // preload file system\n if (data.preload) {\n var fs = getPreloadFSName(data.preload, data.platform);\n if (fs && !fsMeta[fs])\n loadFilesystem(fs);\n return;\n }\n // read a file from a filesystem package (shared code)\n if (data.readshared) {\n var fs1 = splitWasiFSName(data.preload_fs);\n var contents = fs1.wasi ? await readWasiSharedFile(fs1.name, data.readshared)\n : (ensureFilesystem(fs1.name), await readSharedFile(fs1.name, data.readshared));\n return { output: contents, qid: data.qid } as WorkerResult;\n }\n // list files in a filesystem package directory (shared code)\n if (data.listshared != null) {\n var fs2 = splitWasiFSName(data.preload_fs);\n var files = fs2.wasi ? await listWasiSharedFiles(fs2.name, data.listshared)\n : (ensureFilesystem(fs2.name), listSharedFiles(fs2.name, data.listshared));\n return { output: files, qid: data.qid } as WorkerResult;\n }\n // preload a filesystem package directly by name\n if (data.preload_fs) {\n var fs3 = splitWasiFSName(data.preload_fs);\n if (fs3.wasi) await ensureWasiFilesystem(fs3.name);\n else ensureFilesystem(fs3.name);\n return;\n }\n // clear filesystem? (TODO: buildkey)\n if (data.reset) {\n store.reset();\n return;\n }\n return builder.handleMessage(data);\n}\n\nconst ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\nif (ENVIRONMENT_IS_WORKER) {\n var lastpromise = null;\n onmessage = async function (e) {\n await lastpromise; // wait for previous message to complete\n lastpromise = handleMessage(e.data);\n var result = await lastpromise;\n lastpromise = null;\n if (result) {\n try {\n postMessage(result);\n } catch (e) {\n console.log(e);\n postMessage(errorResult(`${e}`));\n }\n }\n }\n}\n"], - "mappings": "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", + "sourcesContent": ["/*!\n\nJSZip v3.10.2 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r 0) ? s.substr(0, pos) : s;\n}\n\nexport function hex(v:number, nd?:number) {\n if (!nd) nd = 2;\n if (nd == 8) {\n return hex((v>>16)&0xffff,4) + hex(v&0xffff,4);\n } else {\n return toradix(v,nd,16);\n }\n}\n\nexport function tobin(v:number, nd?:number) {\n if (!nd) nd = 8;\n return toradix(v,nd,2);\n}\n\nexport function toradix(v:number, nd:number, radix:number) {\n try {\n var s = v.toString(radix).toUpperCase();\n while (s.length < nd)\n s = \"0\" + s;\n return s;\n } catch (e) {\n return v+\"\";\n }\n}\n\nexport function arrayCompare(a:ArrayLike, b:ArrayLike):boolean {\n if (a == null && b == null) return true;\n if (a == null) return false;\n if (b == null) return false;\n if (typeof a.length != 'number' || typeof b.length != 'number') return false;\n if (a.length != b.length) return false;\n for (var i=0; i= 0) {\n while (i < s1.length && split1[i].indexOf(\"\\n\") < 0)\n i++;\n }\n if (w1 != w2) {\n w2 = '' + w2 + '';\n }\n result += w2;\n i++;\n j++;\n }\n while (j < split2.length) {\n result += split2[j++];\n }\n return result;\n}\n\nexport function lzgmini() {\n\n // Constants\n var LZG_HEADER_SIZE = 16;\n var LZG_METHOD_COPY = 0;\n var LZG_METHOD_LZG1 = 1;\n\n // LUT for decoding the copy length parameter\n var LZG_LENGTH_DECODE_LUT = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\n 20,21,22,23,24,25,26,27,28,29,35,48,72,128];\n\n // Decoded data (produced by the decode() method)\n var outdata = null;\n\n // Calculate the checksum\n var calcChecksum = function(data) {\n var a = 1;\n var b = 0;\n var i = LZG_HEADER_SIZE;\n while (i < data.length)\n {\n a = (a + (data[i] & 0xff)) & 0xffff;\n b = (b + a) & 0xffff;\n i++;\n }\n return (b << 16) | a;\n }\n\n // Decode LZG coded data. The function returns the size of the decoded data.\n // Use any of the get* methods to retrieve the decoded data.\n this.decode = function(data:number[]):number[] {\n // Start by clearing the decompressed array in this object\n outdata = null;\n\n // Check magic ID\n if ((data.length < LZG_HEADER_SIZE) || (data[0] != 76) ||\n (data[1] != 90) || (data[2] != 71))\n {\n return null;\n }\n \n // what's the length?\n var uncomplen = data[6] | (data[5]<<8) | (data[4]<<16) | (data[3]<<24);\n\n // Calculate & check the checksum\n var checksum = ((data[11] & 0xff) << 24) |\n ((data[12] & 0xff) << 16) |\n ((data[13] & 0xff) << 8) |\n (data[14] & 0xff);\n if (calcChecksum(data) != checksum)\n {\n return null;\n }\n\n var dst = new Array();\n // Check which method to use\n var method = data[15] & 0xff;\n if (method == LZG_METHOD_LZG1)\n {\n // Get marker symbols\n var m1 = data[16] & 0xff;\n var m2 = data[17] & 0xff;\n var m3 = data[18] & 0xff;\n var m4 = data[19] & 0xff;\n\n // Main decompression loop\n var symbol, b, b2, b3, len, offset;\n var dstlen = 0;\n var k = LZG_HEADER_SIZE + 4;\n var datalen = data.length;\n while (k <= datalen)\n {\n symbol = data[k++] & 0xff;\n if ((symbol != m1) && (symbol != m2) && (symbol != m3) && (symbol != m4))\n {\n // Literal copy\n dst[dstlen++] = symbol;\n }\n else\n {\n b = data[k++] & 0xff;\n if (b != 0)\n {\n // Decode offset / length parameters\n if (symbol == m1)\n {\n // marker1 - \"Distant copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n b3 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 11) | (b2 << 8) | b3) + 2056;\n }\n else if (symbol == m2)\n {\n // marker2 - \"Medium copy\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n b2 = data[k++] & 0xff;\n offset = (((b & 0xe0) << 3) | b2) + 8;\n }\n else if (symbol == m3)\n {\n // marker3 - \"Short copy\"\n len = (b >> 6) + 3;\n offset = (b & 63) + 8;\n }\n else\n {\n // marker4 - \"Near copy (incl. RLE)\"\n len = LZG_LENGTH_DECODE_LUT[b & 0x1f];\n offset = (b >> 5) + 1;\n }\n\n // Copy the corresponding data from the history window\n for (i = 0; i < len; i++)\n {\n dst[dstlen] = dst[dstlen-offset];\n dstlen++;\n }\n }\n else\n {\n // Literal copy (single occurance of a marker symbol)\n dst[dstlen++] = symbol;\n }\n }\n }\n\n }\n else if (method == LZG_METHOD_COPY)\n {\n // Plain copy\n var dstlen = 0;\n var datalen = data.length;\n for (var i = LZG_HEADER_SIZE; i < datalen; i++)\n {\n dst[dstlen++] = data[i] & 0xff;\n }\n }\n else\n {\n // Unknown method\n return null;\n }\n // Store the decompressed data in the lzgmini object for later retrieval\n if (dst.length < uncomplen) return null; // data too short\n outdata = dst.slice(0, uncomplen);\n return outdata;\n }\n\n // Get the decoded byte array\n this.getByteArray = function():number[]\n {\n return outdata;\n }\n\n // Get the decoded string from a Latin 1 (or ASCII) encoded array\n this.getStringLatin1 = function():string {\n return byteArrayToString(outdata);\n }\n\n // Get the decoded string from an UTF-8 encoded array\n this.getStringUTF8 = function():string {\n return byteArrayToUTF8(outdata);\n }\n}\n\nexport function stringToByteArray(s:string) : Uint8Array {\n var a = new Uint8Array(s.length);\n for (var i=0; i= 192) && (c < 224)) {\n c = ((c & 31) << 6) | (data[i++] & 63);\n } else {\n c = ((c & 15) << 12) | ((data[i] & 63) << 6) | (data[i+1] & 63);\n i += 2;\n if (c == 0xfeff) continue; // ignore BOM\n }\n str += String.fromCharCode(c);\n }\n }\n return str;\n}\n\nexport function removeBOM(s:string) {\n if (s.charCodeAt(0) === 0xFEFF) {\n s = s.substr(1);\n }\n return s;\n}\n\nexport function isProbablyBinary(path:string, data?:number[] | Uint8Array) : boolean {\n var score = 0;\n // check extensions\n if (path) {\n path = path.toUpperCase();\n const BINEXTS = ['.CHR','.BIN','.DAT','.PAL','.NAM','.RLE','.LZ4','.NSF'];\n for (var ext of BINEXTS) {\n if (path.endsWith(ext)) score++;\n }\n }\n // decode as UTF-8\n for (var i = 0; i < (data?data.length:0);) {\n let c = data[i++];\n if ((c & 0x80) == 0) {\n // more likely binary if we see a NUL or obscure control character\n if (c < 9 || (c >= 14 && c < 26) || c == 0x7f) {\n score++;\n break;\n }\n } else {\n // look for invalid unicode sequences\n var nextra = 0;\n if ((c & 0xe0) == 0xc0) nextra = 1;\n else if ((c & 0xf0) == 0xe0) nextra = 2;\n else if ((c & 0xf8) == 0xf0) nextra = 3;\n else if (c < 0xa0) score++;\n else if (c == 0xff) score++;\n while (nextra--) {\n if (i >= data.length || (data[i++] & 0xc0) != 0x80) {\n score++;\n break;\n }\n }\n }\n }\n return score > 0;\n}\n\n// need to load liblzg.js first\nexport function compressLZG(em_module, inBuffer:number[], levelArg?:boolean) : Uint8Array {\n var level = levelArg || 9;\n var inLen = inBuffer.length;\n var inPtr = em_module._malloc(inLen + 1);\n for (var i = 0; i < inLen; i++) {\n em_module.setValue(inPtr + i, inBuffer[i], 'i8');\n }\n var maxEncSize = em_module._LZG_MaxEncodedSize(inLen);\n var outPtr = em_module._malloc(maxEncSize + 1);\n var compLen = em_module.ccall('compress_lzg', 'number', ['number', 'number', 'number', 'number', 'number'], [level, inPtr, inLen, maxEncSize, outPtr]);\n em_module._free(inPtr);\n var outBuffer = new Uint8Array(compLen);\n for (var i = 0; i < compLen; i++) {\n outBuffer[i] = em_module.getValue(outPtr + i, 'i8');\n }\n em_module._free(outPtr);\n return outBuffer;\n}\n\n// only does primitives, 1D arrays and no recursion\nexport function safe_extend(deep, dest, src) {\n // TODO: deep ignored\n for (var key in src) {\n var val = src[key];\n var type = typeof(val);\n if (val === null || type == 'undefined') {\n dest[key] = val;\n } else if (type == 'function') {\n // ignore function\n } else if (type == 'object') {\n if (val['slice']) { // array?\n dest[key] = val.slice();\n } else {\n // ignore object\n }\n } else {\n dest[key] = val;\n }\n }\n return dest;\n}\n\nexport function printFlags(val:number, names:string[], r2l:boolean) {\n var s = '';\n for (var i=0; i 0) s += \" \";\n s += (val & bit) ? names[i] : \"-\";\n }\n }\n return s;\n}\n\nexport function rgb2bgr(x) {\n return ((x&0xff)<<16) | ((x>>16)&0xff) | (x&0x00ff00);\n}\n\nexport function RGBA(r:number,g:number,b:number) {\n return (r&0xff) | ((g&0xff)<<8) | ((b&0xff)<<16) | 0xff000000;\n}\n\nexport function clamp(minv:number, maxv:number, v:number) {\n return (v < minv) ? minv : (v > maxv) ? maxv : v;\n}\n\nexport function safeident(s : string) : string {\n // if starts with non-alpha character, prefix with '_'\n if (s.length == 0) return '';\n if (!s.match(/^[a-zA-Z_]/)) s = '_' + s;\n return s.replace(/\\W+/g, \"_\");\n}\n\nexport function rle_unpack(src : Uint8Array) : Uint8Array {\n var i = 0;\n var tag = src[i++];\n var dest = [];\n var data = tag;\n while (i < src.length) {\n var ch = src[i++];\n if (ch == tag) {\n var count = src[i++];\n for (var j=0; jvoid, datatype:'text'|'arraybuffer') {\n var oReq = new XMLHttpRequest();\n oReq.open(\"GET\", url, true);\n oReq.responseType = datatype;\n oReq.onload = function (oEvent) {\n if (oReq.status == 200) {\n var data = oReq.response;\n if (data instanceof ArrayBuffer) {\n data = new Uint8Array(data);\n }\n success(data);\n } else if (oReq.status == 404) {\n success(null);\n } else {\n throw Error(\"Error \" + oReq.status + \" loading \" + url);\n }\n }\n oReq.onerror = function (oEvent) {\n success(null);\n }\n oReq.ontimeout = function (oEvent) {\n throw Error(\"Timeout loading \" + url);\n }\n oReq.send(null);\n}\n\n// get platform ID without . emulator\nexport function getBasePlatform(platform : string) : string {\n return platform.split('.')[0];\n}\n\n// get platform ID without - specialization\nfunction getRootPlatform(platform : string) : string {\n return platform.split('-')[0];\n}\n\n// get platform ID without emulator or specialization\nexport function getRootBasePlatform(platform : string) : string {\n return getRootPlatform(getBasePlatform(platform));\n}\n\nexport function isArray(obj: any) : obj is ArrayLike {\n return obj != null && (Array.isArray(obj) || isTypedArray(obj));\n}\n\nexport function isTypedArray(obj: any) : obj is ArrayLike {\n return obj != null && obj['BYTES_PER_ELEMENT'];\n}\n\nexport function convertDataToUint8Array(data: string|Uint8Array) : Uint8Array {\n return (typeof data === 'string') ? stringToByteArray(data) : data;\n}\n\nexport function convertDataToString(data: string|Uint8Array) : string {\n return (data instanceof Uint8Array) ? byteArrayToUTF8(data) : data;\n}\n\nexport function byteToASCII(b: number) : string {\n if (b < 32)\n return String.fromCharCode(b + 0x2400);\n else\n return String.fromCharCode(b);\n}\n\nexport function loadScript(scriptfn:string) : Promise {\n return new Promise( (resolve, reject) => {\n var script = document.createElement('script');\n script.onload = resolve;\n script.onerror = reject;\n script.src = scriptfn;\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n}\n\nexport function decodeQueryString(qs : string) : {} {\n if (qs.startsWith('?')) qs = qs.substr(1);\n var a = qs.split('&');\n if (!a || a.length == 0)\n return {};\n var b = {};\n for (var i = 0; i < a.length; ++i) {\n var p = a[i].split('=', 2);\n if (p.length == 1)\n b[p[0]] = \"\";\n else\n b[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\n }\n return b;\n}\n\nexport function parseBool(s : string) : boolean {\n if (!s) return false;\n if (s == 'false' || s == '0') return false;\n if (s == 'true' || s == '1') return true;\n return s ? true : false;\n}\n\n///\n\nexport class XMLParseError extends Error {\n}\n\nexport interface XMLNode {\n type: string;\n text: string | null;\n children: XMLNode[];\n attrs: { [id: string]: string };\n obj: any;\n}\n\nexport type XMLVisitFunction = (node: XMLNode) => any;\n\nfunction escapeXML(s: string): string {\n if (s.indexOf('&') >= 0) {\n return s.replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&');\n } else {\n return s;\n }\n}\n\nexport function parseXMLPoorly(s: string, openfn?: XMLVisitFunction, closefn?: XMLVisitFunction): XMLNode {\n const tag_re = /[<]([/]?)([?a-z_-]+)([^>]*)[>]+|(\\s*[^<]+)/gi;\n const attr_re = /\\s*(\\w+)=\"(.*?)\"\\s*/gi;\n var fm: RegExpMatchArray;\n var stack: XMLNode[] = [];\n var top: XMLNode;\n\n function closetop() {\n top = stack.pop();\n if (top == null || top.type != ident) throw new XMLParseError(\"mismatch close tag: \" + ident);\n if (closefn) {\n top.obj = closefn(top);\n }\n if (stack.length == 0) throw new XMLParseError(\"close tag without open: \" + ident);\n stack[stack.length - 1].children.push(top);\n }\n function parseattrs(as: string): { [id: string]: string } {\n var am;\n var attrs = {};\n if (as != null) {\n while (am = attr_re.exec(as)) {\n attrs[am[1]] = escapeXML(am[2]);\n }\n }\n return attrs;\n }\n while (fm = tag_re.exec(s)) {\n var [_m0, close, ident, attrs, content] = fm;\n //console.log(stack.length, close, ident, attrs, content);\n if (close) {\n closetop();\n } else if (ident) {\n var node = { type: ident, text: null, children: [], attrs: parseattrs(attrs), obj: null };\n stack.push(node);\n if (attrs) {\n parseattrs(attrs);\n }\n if (openfn) {\n node.obj = openfn(node);\n }\n if (attrs && attrs.endsWith('/')) closetop();\n } else if (content != null) {\n if (stack.length == 0) throw new XMLParseError(\"content without element\");\n var txt = escapeXML(content as string).trim();\n if (txt.length) stack[stack.length - 1].text = txt;\n }\n }\n if (stack.length != 1) throw new XMLParseError(\"tag not closed\");\n if (stack[0].type != '?xml') throw new XMLParseError(\"?xml needs to be first element\");\n return top;\n}\n\nexport function escapeHTML(s: string): string {\n return s.replace(/[&]/g, '&').replace(/[<]/g, '<').replace(/[>]/g, '>');\n}\n\n// lame factorization for displaying bitmaps\n// returns a > b such that a * b == x (or higher), a >= mina, b >= minb\nexport function findIntegerFactors(x: number, mina: number, minb: number, aspect: number) : {a: number, b: number} {\n let a = x;\n let b = 1;\n if (minb > 1 && minb < a) {\n a = Math.ceil(x / minb);\n b = minb;\n }\n while (a > b) {\n let a2 = a;\n let b2 = b;\n if ((a & 1) == 0) {\n b2 = b * 2;\n a2 = a / 2;\n }\n if ((a % 3) == 0) {\n b2 = b * 3;\n a2 = a / 3;\n }\n if ((a % 5) == 0) {\n b2 = b * 5;\n a2 = a / 5;\n }\n if (a2 < mina) break;\n if (a2 < b2 * aspect) break;\n a = a2;\n b = b2;\n }\n return {a, b};\n}\n\nexport class FileDataCache {\n maxSize : number = 8000000;\n size : number;\n cache : Map;\n constructor() {\n this.reset();\n }\n get(key : string) : string|Uint8Array {\n return this.cache.get(key);\n }\n put(key : string, value : string|Uint8Array) {\n this.cache.set(key, value);\n this.size += value.length;\n if (this.size > this.maxSize) {\n console.log('cache reset', this);\n this.reset();\n }\n }\n reset() {\n this.cache = new Map();\n this.size = 0;\n }\n}\n\nexport function coerceToArray(arrobj: any) : T[] {\n if (Array.isArray(arrobj)) return arrobj;\n else if (arrobj != null && typeof arrobj[Symbol.iterator] === 'function') return Array.from(arrobj);\n else if (typeof arrobj === 'object') return Array.from(Object.values(arrobj))\n else throw new Error(`Expected array or object, got \"${arrobj}\"`);\n}\n\nexport function replaceAll(s:string, search:string, replace:string) : string {\n if (s == '') return '';\n if (search == '') return s;\n return s.split(search).join(replace);\n}\n\nexport function isProductionHost() : boolean {\n return typeof window != 'undefined' && window.location.host.endsWith('8bitworkshop.com');\n}\n\nexport function getCookie(name: string) : string {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for(var i=0;i < ca.length;i++) {\n var c = ca[i];\n while (c.charAt(0)==' ') c = c.substring(1,c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n }\n return null;\n}\n\n", "/*\n * Tool metadata registry.\n *\n * Single source of truth for declarative (data-only) metadata about every\n * build tool, keyed by tool id. Both the IDE (src/ide) and the worker\n * (src/worker) import this module.\n *\n * What lives here:\n * - extension -> tool selection hints\n * - editor (CodeMirror) styles and help URLs (was TOOL_TO_SOURCE_STYLE/HELPURL in src/ide/ui.ts)\n * - preload filesystem names per platform (was TOOL_PRELOADFS in src/worker/workertools.ts)\n * - wasm module names (was loadNative() args in src/worker/tools/*.ts)\n * - include/link dependency patterns (was parseIncludeDependencies in src/ide/project.ts)\n * - remote/server tool config (was ServerBuildTool in src/worker/server/buildenv.ts)\n *\n * What stays OUT of this module (behavior cannot cross the worker boundary):\n * - build functions (src/worker/workertools.ts `TOOLS` map)\n * - error matchers, listing parsers (src/worker/tools/*.ts)\n * - machine layout params (code_start, rom_size, ... -> src/worker/platforms.ts PLATFORM_PARAMS)\n *\n * A unit test cross-checks that every id in TOOL_META has a worker build fn\n * (unless noWorkerBuild) and vice versa.\n */\n\nimport { getRootBasePlatform } from \"./util\";\n\nexport type ToolKind =\n | 'compiler' // source -> object/output (cc65, sdcc, cmoc, oscar64, ...)\n | 'assembler' // asm -> object (dasm, acme, ca65, ...)\n | 'linker' // object(s) -> binary (ld65, sdldz80, lwlink, ...)\n | 'interpreter' // e.g. BASIC\n | 'hdl' // hardware description (verilator, yosys, silice)\n | 'remote' // builds on a remote server (llvm-mos)\n\nexport type ToolArch =\n | '6502' | 'z80' | '6809' | 'arm32' | 'x86' | 'gbz80' | 'verilog' | 'zmachine';\n\n/**\n * Extra raw argv for one build phase. Source directives (`//#flag ...`)\n * and platform/ToolMeta defaults both land here; each tool picks the list\n * matching its ToolKind. Distinct from `defines` (symbols) because these are\n * opaque flags the build engine cannot interpret or validate.\n */\nexport interface BuildArgs {\n compiler?: string[];\n assembler?: string[];\n linker?: string[];\n}\n\nexport interface PlatformToolConfig {\n /** preload filesystem name for this platform (was TOOL_PRELOADFS compound keys) */\n preloadFS?: string;\n /** skeleton filename override (defaults to tool id) */\n skeleton?: string;\n /** library args for this platform (was PLATFORM_PARAMS.libargs) */\n libargs?: string[];\n /** linker config filename (was PLATFORM_PARAMS.cfgfile) */\n cfgfile?: string;\n /** extra compiler args (was PLATFORM_PARAMS.extra_compile_args) */\n extraCompileArgs?: string[];\n /** preprocessor defines for this platform (NAME or NAME=VALUE) */\n defines?: string[];\n /** extra raw args per phase */\n buildArgs?: BuildArgs;\n /** default output filename (was server buildenv platform_configs.outfile) */\n defaultOutput?: string;\n}\n\nexport interface ServerToolConfig {\n version?: string;\n /** platforms this tool supports on the remote server */\n platforms: string[];\n binpath: string;\n command: string;\n args: string[];\n}\n\nexport interface ToolIncludePattern {\n re: RegExp;\n group?: number;\n suffix?: string;\n /** true for system includes (#include ) -- resolved from the\n * toolchain filesystem, not the project; used for UI links only,\n * not for build dependency scanning */\n system?: boolean;\n}\n \nexport interface ToolMeta {\n /** join key, e.g. 'cc65', 'dasm', 'llvm-mos'. Note: 'remote:' is a transport\n * prefix, not part of the id -- getToolMeta() strips it. */\n id: string;\n /** human-readable display name */\n name: string;\n kind: ToolKind;\n /** CPU architecture the tool targets (helps disambiguate ambiguous extensions) */\n arch?: ToolArch;\n\n // ---- tool-global metadata (same on every platform) ----\n\n /** filename extensions this tool consumes (explicit ones; fallback/default\n * selection is still the platform's job) */\n extensions: string[];\n /** CodeMirror editor mode (was TOOL_TO_SOURCE_STYLE) */\n editorStyle?: string;\n /** documentation URL (was TOOL_TO_HELPURL). Where upstream publishes\n * version tags, link to the tag matching TOOL_META.version so docs stay\n * accurate for the vendored binary; refresh when bumping version. */\n helpURL?: string;\n /** skeleton filename in presets//, defaults to tool id */\n skeleton?: string;\n /** wasm/emscripten module name loaded by the worker (was loadNative() arg) */\n wasmModule?: string;\n\n // ---- symbol capability ----\n\n /** flag defining a preprocessor/assembler symbol, e.g. '-D'. Undefined means\n * the tool has no command-line define mechanism (e.g. sdasz80). */\n defineFlag?: string;\n /** true if the value is joined to the flag ('-DFOO=1') rather than separate\n * ('-D', 'FOO=1'). cc65/sdcc join, ca65 does not. */\n defineInline?: boolean;\n /** flag a linker uses to define a global symbol with an integer expression,\n * e.g. '-D' (ld65) or '-g' (sdldz80). Undefined means no link symbols. */\n linkSymbolFlag?: string;\n /** true if the link symbol value is joined to the flag */\n linkSymbolInline?: boolean;\n\n /** tool version string, as reported by the vendored wasm binary.\n * Static per committed binary -- refresh with `npm run toolversions`. */\n version?: string;\n /** regexes matching include directives, used for dependency parsing */\n includePatterns?: (RegExp | ToolIncludePattern)[];\n /** regexes matching link directives, used for dependency parsing */\n linkPatterns?: (RegExp | ToolIncludePattern)[];\n /** directories inside the shared filesystem containing searchable shared code\n * (headers, asm includes). Paths are relative to the FS root as they appear\n * in the filesystem metadata, e.g. ['/include', '/asminc', '/headers'].\n * Used with platforms[].preloadFS or wasiFSZip. */\n includeDirs?: string[];\n /** name of a WASI filesystem zip (in src/worker/fs/) that contains the\n * toolchain's headers, for tools that don't use an emscripten preloadFS\n * package (e.g. cc2600/cc7800). Referenced as 'wasi:' in worker msgs. */\n wasiFSZip?: string;\n\n // ---- per-platform metadata (was TOOL_PRELOADFS / PLATFORM_PARAMS) ----\n\n /** platform id -> config overrides */\n platforms?: { [platform: string]: PlatformToolConfig };\n\n // ---- remote/server metadata (was ServerBuildTool in buildenv.ts) ----\n\n /** true if this tool builds on a remote server (llvm-mos) */\n remote?: boolean;\n /** remote server build config */\n server?: ServerToolConfig;\n\n /** true if the id is registered here but has no worker build fn yet\n * (sccz80, naken) -- tolerated by the TOOLS <-> TOOL_META cross-check */\n noWorkerBuild?: boolean;\n}\n\n//// shared dependency-parsing patterns (from src/ide/project.ts)\n\n// C / most assemblers: [.#%]?include|incbin|embed \"file\", //#resource \"file\"\nexport const SHARED_INCLUDE_PATTERNS: RegExp[] = [\n /^\\s*[.#%]?(include|incbin|embed)\\s+\"(.+?)\"/gmi,\n /^\\s*([;']|[/][/])#(resource)\\s+\"(.+?)\"/gm,\n];\n\n// C / most assemblers: //#link \"file\" (or ;link)\nexport const SHARED_LINK_PATTERNS: RegExp[] = [\n /^\\s*([;]|[/][/])#link\\s+\"(.+?)\"/gm,\n];\n\n// Verilog family: `include/.include, $include/$dofile/$write_image_in_table,\n// .arch json, $readmem[bh]\nexport const VERILOG_INCLUDE_PATTERNS: (RegExp | ToolIncludePattern)[] = [\n /^\\s*(`include|[.]include)\\s+\"(.+?)\"/gmi,\n /^\\s*\\$(include|\\$dofile|\\$write_image_in_table)\\('(.+?)'/gmi,\n { re: /^\\s*([.]arch)\\s+(\\w+)/gmi, suffix: '.json' },\n /\\$readmem[bh]\\(\"(.+?)\"/gmi,\n];\n\n// C system includes: #include -- resolved from the toolchain\n// preload filesystem rather than the project. Deliberately NOT part of\n// SHARED_INCLUDE_PATTERNS, so build dependency scanning skips them.\nexport const SYSTEM_INCLUDE_PATTERNS: ToolIncludePattern[] = [\n { re: /^\\s*[.#%]?\\s*include\\s+<(.+?)>/gmi, system: true },\n];\n\n/**\n * System include patterns (#include ) for UI linking, for tools that\n * have a bundled filesystem to search. Empty otherwise.\n */\nexport function getSystemIncludePatterns(tool?: string): ToolIncludePattern[] {\n let meta = tool && getToolMeta(tool);\n return (meta && meta.includeDirs && meta.includeDirs.length) ? SYSTEM_INCLUDE_PATTERNS : [];\n}\n\n// xasm6809 (USE) and merlin32 (ASM): \" USE file.ext\"\nexport const USE_ASM_INCLUDE_PATTERNS: RegExp[] = [\n /^\\s+(USE|ASM)\\s+(\\S+[.]\\S+)/gm,\n];\n\n// acme: !src \"file\"\nexport const ACME_INCLUDE_PATTERNS: RegExp[] = [\n /^[!]src\\s+\"(.+?)\"/gmi,\n];\n\n// wiz: import \"file\"; (implicit .wiz extension) / embed \"file\";\nexport const WIZ_INCLUDE_PATTERNS: (RegExp | ToolIncludePattern)[] = [\n { re: /^\\s*import\\s*\"(.+?)\";/gmi, suffix: '.wiz' },\n /^\\s*embed\\s*\"(.+?)\";/gmi,\n];\n\n// ecs: import \"file\"\nexport const ECS_INCLUDE_PATTERNS: RegExp[] = [\n /^\\s*(import)\\s*\"(.+?)\"/gmi,\n];\n\n// dialog: %% #include \"file\" (comment directive)\nexport const DIALOG_INCLUDE_PATTERNS: RegExp[] = [\n /^\\s*%%\\s*#include\\s+\"(.+?)\"/gm,\n];\n\n//// preload filesystem names per tool/platform (was TOOL_PRELOADFS)\n\nconst CC65_PRELOADFS: { [platform: string]: PlatformToolConfig } = {\n 'apple2': { preloadFS: '65-apple2' },\n 'c64': { preloadFS: '65-c64' },\n 'vic20': { preloadFS: '65-vic20' },\n 'nes': { preloadFS: '65-nes' },\n 'atari8': { preloadFS: '65-atari8' },\n 'vector': { preloadFS: '65-none' },\n 'atari7800': { preloadFS: '65-none' },\n 'devel': { preloadFS: '65-none' },\n 'vcs': { preloadFS: '65-atari2600' },\n 'pce': { preloadFS: '65-pce' },\n 'exidy': { preloadFS: '65-none' },\n};\n\n//// tool registry\n\nexport const TOOL_META: { [id: string]: ToolMeta } = {\n\n // ---- 6502 assemblers ----\n\n dasm: {\n id: 'dasm', name: 'DASM', kind: 'assembler', arch: '6502',\n extensions: ['.dasm'],\n editorStyle: '6502',\n helpURL: 'https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt',\n wasmModule: 'dasm-wasisdk',\n version: '2.20.17',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n acme: {\n id: 'acme', name: 'ACME', kind: 'assembler', arch: '6502',\n extensions: ['.acme'],\n editorStyle: '6502',\n helpURL: 'https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt',\n wasmModule: 'acme',\n version: '0.97.1',\n includePatterns: [...SHARED_INCLUDE_PATTERNS, ...ACME_INCLUDE_PATTERNS],\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n xa: {\n id: 'xa', name: 'XA', kind: 'assembler', arch: '6502',\n extensions: ['.xa'],\n editorStyle: '6502',\n helpURL: 'https://www.floodgap.com/retrotech/xa/',\n wasmModule: 'xa',\n version: '2.4.1',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n nesasm: {\n id: 'nesasm', name: 'NESASM', kind: 'assembler', arch: '6502',\n extensions: ['.nesasm'],\n editorStyle: '6502',\n helpURL: 'https://github.com/camsaul/nesasm',\n wasmModule: 'nesasm',\n version: '3.1',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n merlin32: {\n id: 'merlin32', name: 'Merlin 32', kind: 'assembler', arch: '6502',\n extensions: ['.lnk'],\n editorStyle: '6502',\n helpURL: 'https://github.com/apple2accumulator/merlin32',\n wasmModule: 'merlin32',\n version: '1.1.10',\n includePatterns: [...SHARED_INCLUDE_PATTERNS, ...USE_ASM_INCLUDE_PATTERNS],\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n // ---- cc65 toolchain ----\n\n cc65: {\n id: 'cc65', name: 'cc65', kind: 'compiler', arch: '6502',\n extensions: ['.c', '.h'],\n includeDirs: ['/include', '/asminc'],\n editorStyle: 'text/x-csrc',\n helpURL: 'https://cc65.github.io/doc/cc65.html',\n wasmModule: 'cc65',\n version: '2.19',\n defineFlag: '-D', defineInline: true,\n platforms: CC65_PRELOADFS,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n ca65: {\n id: 'ca65', name: 'ca65', kind: 'assembler', arch: '6502',\n extensions: ['.s', '.ca65', '.inc'],\n includeDirs: ['/include', '/asminc'],\n editorStyle: '6502',\n helpURL: 'https://cc65.github.io/doc/ca65.html',\n wasmModule: 'ca65',\n version: '2.19',\n defineFlag: '-D', defineInline: false,\n platforms: CC65_PRELOADFS,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n ld65: {\n id: 'ld65', name: 'ld65', kind: 'linker', arch: '6502',\n extensions: [],\n wasmModule: 'ld65',\n version: '2.19',\n linkSymbolFlag: '-D', linkSymbolInline: false,\n },\n\n // ---- SDCC toolchain (z80) ----\n\n sdcc: {\n id: 'sdcc', name: 'SDCC', kind: 'compiler', arch: 'z80',\n extensions: ['.c', '.h'],\n includeDirs: ['/include'],\n editorStyle: 'text/x-csrc',\n helpURL: 'http://sdcc.sourceforge.net/doc/sdccman.pdf',\n wasmModule: 'sdcc',\n version: '3.6.5',\n defineFlag: '-D', defineInline: true,\n platforms: { default: { preloadFS: 'sdcc' } },\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n sdasz80: {\n id: 'sdasz80', name: 'sdasz80', kind: 'assembler', arch: 'z80',\n extensions: ['.s'],\n includeDirs: ['/include'],\n editorStyle: 'z80',\n wasmModule: 'sdasz80',\n version: '02.00',\n platforms: { default: { preloadFS: 'sdcc' } },\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n sdasgb: {\n id: 'sdasgb', name: 'sdasgb', kind: 'assembler', arch: 'gbz80',\n extensions: ['.sgb'],\n includeDirs: ['/include'],\n editorStyle: 'z80',\n wasmModule: 'sdasgb',\n platforms: { default: { preloadFS: 'sdcc' } },\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n sdldz80: {\n id: 'sdldz80', name: 'sdldz80', kind: 'linker', arch: 'z80',\n extensions: [],\n wasmModule: 'sdldz80',\n version: '03.00',\n linkSymbolFlag: '-g', linkSymbolInline: false,\n },\n\n sccz80: {\n id: 'sccz80', name: 'sccz80', kind: 'compiler', arch: 'z80',\n extensions: ['.scc'],\n platforms: { default: { preloadFS: 'sccz80' } },\n noWorkerBuild: true,\n },\n\n naken: {\n id: 'naken', name: 'Naken', kind: 'assembler',\n extensions: ['.ns'],\n helpURL: 'https://github.com/mikeakohn/naken_asm',\n noWorkerBuild: true,\n },\n\n // ---- z80 assemblers ----\n\n zmac: {\n id: 'zmac', name: 'zmac', kind: 'assembler', arch: 'z80',\n extensions: ['.z'],\n editorStyle: 'z80',\n helpURL: 'https://raw.githubusercontent.com/sehugg/zmac/master/doc.txt',\n wasmModule: 'zmac',\n version: '28jul2018',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n jsasm: {\n id: 'jsasm', name: 'JSASM', kind: 'assembler',\n extensions: ['.asm'],\n editorStyle: 'z80',\n // pure JS assembler, no wasm module. Only used on the verilog platform,\n // where .asm files pull in .v modules and name a CPU with '.arch'.\n includePatterns: VERILOG_INCLUDE_PATTERNS,\n linkPatterns: [],\n },\n\n // ---- 6809 toolchain ----\n\n xasm6809: {\n id: 'xasm6809', name: 'XASM6809', kind: 'assembler', arch: '6809',\n extensions: ['.xasm'],\n editorStyle: '6809',\n wasmModule: 'xasm6809',\n includePatterns: [...SHARED_INCLUDE_PATTERNS, ...USE_ASM_INCLUDE_PATTERNS],\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n cmoc: {\n id: 'cmoc', name: 'CMOC', kind: 'compiler', arch: '6809',\n extensions: ['.c', '.h'],\n // NOTE: no bundled filesystem -- the compiler passes -I/share/include but\n // never mounts one, so system headers can't be linked in the UI\n editorStyle: 'text/x-csrc',\n helpURL: 'https://github.com/stahta01/cmoc/',\n wasmModule: 'cmoc',\n version: '0.1.67',\n defineFlag: '-D', defineInline: false,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n lwasm: {\n id: 'lwasm', name: 'LWASM', kind: 'assembler', arch: '6809',\n extensions: ['.lwasm'],\n wasmModule: 'lwasm',\n version: '4.17',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n lwlink: {\n id: 'lwlink', name: 'LWLINK', kind: 'linker', arch: '6809',\n extensions: [],\n wasmModule: 'lwlink',\n version: '4.17',\n },\n\n // ---- ARM ----\n\n vasmarm: {\n id: 'vasmarm', name: 'vasm (ARM)', kind: 'assembler', arch: 'arm32',\n extensions: ['.vasm'],\n editorStyle: 'vasm',\n wasmModule: 'vasmarm_std',\n version: '1.8k',\n defineFlag: '-D', defineInline: false,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n armips: {\n id: 'armips', name: 'armips', kind: 'assembler', arch: 'arm32',\n extensions: ['.armips'],\n editorStyle: 'vasm',\n wasmModule: 'armips',\n version: '0.11.0',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n armtcc: {\n id: 'armtcc', name: 'TCC (ARM)', kind: 'compiler', arch: 'arm32',\n extensions: ['.c', '.s'],\n includeDirs: ['/include'],\n wasiFSZip: 'arm32-fs.zip',\n editorStyle: 'text/x-csrc',\n wasmModule: 'arm-tcc',\n defineFlag: '-D', defineInline: false,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n armtcclink: {\n id: 'armtcclink', name: 'TCC (ARM) link', kind: 'linker', arch: 'arm32',\n extensions: [],\n wasmModule: 'arm-tcc',\n },\n\n // ---- x86 ----\n\n smlrc: {\n id: 'smlrc', name: 'SmallerC', kind: 'compiler', arch: 'x86',\n extensions: ['.c'],\n helpURL: 'https://github.com/alexfru/SmallerC/blob/master/v0100/doc/smlrc.md',\n // NOTE: no bundled filesystem and no -I arg -- no headers to link in the UI\n editorStyle: 'text/x-csrc',\n wasmModule: 'smlrc',\n defineFlag: '-D', defineInline: false,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n yasm: {\n id: 'yasm', name: 'YASM', kind: 'assembler', arch: 'x86',\n extensions: ['.asm'],\n editorStyle: 'gas',\n helpURL: 'https://www.tortall.net/projects/yasm/manual/html/manual.html',\n wasmModule: 'yasm',\n version: '1.3.0',\n defineFlag: '-D', defineInline: false,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n // ---- 6502 C compilers / BASIC dialects ----\n\n oscar64: {\n id: 'oscar64', name: 'Oscar64', kind: 'compiler', arch: '6502',\n extensions: ['.c', '.cpp', '.cc', '.o64'],\n includeDirs: ['/include'],\n wasiFSZip: 'oscar64-fs.zip',\n editorStyle: 'text/x-csrc',\n helpURL: 'https://github.com/drmortalwombat/oscar64/blob/v1.32.266/oscar64.md',\n wasmModule: 'oscar64',\n version: '1.32.266',\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n bataribasic: {\n id: 'bataribasic', name: 'batari Basic', kind: 'compiler', arch: '6502',\n extensions: ['.bb', '.bas'],\n includeDirs: ['/includes'],\n editorStyle: 'bataribasic',\n helpURL: 'help/bataribasic/manual.html',\n wasiFSZip: 'bb-fs.zip',\n platforms: { default: {} },\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n fastbasic: {\n id: 'fastbasic', name: 'FastBasic', kind: 'compiler', arch: '6502',\n extensions: ['.bas', '.fb', '.fbi'],\n editorStyle: 'fastbasic',\n helpURL: 'https://github.com/dmsc/fastbasic/blob/v4.4/manual.md',\n wasmModule: 'fastbasic-int',\n version: '4.4',\n platforms: { default: { preloadFS: '65-atari8' } },\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n cc2600: {\n id: 'cc2600', name: 'CC2600', kind: 'compiler', arch: '6502',\n extensions: ['.cc2600'],\n editorStyle: 'text/x-csrc',\n helpURL: 'https://github.com/steux/cc2600',\n wasmModule: 'cc2600',\n version: '0.4.5',\n wasiFSZip: 'cc2600-fs.zip',\n includeDirs: ['/headers'],\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n cc7800: {\n id: 'cc7800', name: 'CC7800', kind: 'compiler', arch: '6502',\n extensions: ['.cc7800', '.c78'],\n editorStyle: 'text/x-csrc',\n helpURL: 'https://github.com/steux/cc7800',\n wasmModule: 'cc7800',\n version: '0.2.28',\n wasiFSZip: 'cc7800-fs.zip',\n includeDirs: ['/headers'],\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n },\n\n // ---- other languages ----\n\n basic: {\n id: 'basic', name: 'BASIC', kind: 'interpreter',\n extensions: ['.bas'],\n editorStyle: 'basic',\n },\n\n wiz: {\n id: 'wiz', name: 'wiz', kind: 'compiler',\n extensions: ['.wiz'],\n includeDirs: ['/common/$platform'],\n editorStyle: 'text/x-wiz',\n helpURL: 'https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz',\n wasmModule: 'wiz',\n version: '0.1.2',\n platforms: { default: { preloadFS: 'wiz' } },\n includePatterns: WIZ_INCLUDE_PATTERNS,\n },\n\n ecs: {\n id: 'ecs', name: 'ECS', kind: 'assembler', arch: '6502',\n extensions: ['.ecs'],\n editorStyle: 'ecs',\n platforms: {\n vcs: { preloadFS: '65-atari2600' },\n nes: { preloadFS: '65-nes' },\n c64: { preloadFS: '65-c64' },\n },\n includePatterns: [...SHARED_INCLUDE_PATTERNS, ...ECS_INCLUDE_PATTERNS],\n },\n\n inform6: {\n id: 'inform6', name: 'Inform 6', kind: 'compiler', arch: 'zmachine',\n extensions: ['.inf'],\n editorStyle: 'inform6',\n wasmModule: 'inform',\n version: '6.34',\n platforms: { default: { preloadFS: 'inform' } },\n },\n\n dialog: {\n id: 'dialog', name: 'Dialog', kind: 'compiler', arch: 'zmachine',\n extensions: ['.dg'],\n editorStyle: 'dialog',\n helpURL: 'https://linusakesson.net/dialog/docs/',\n wasmModule: 'dialogc',\n // self-reported build tag, not a numeric release\n version: '1c/03-dev',\n wasiFSZip: 'dialog-fs.zip',\n includeDirs: ['/'],\n includePatterns: DIALOG_INCLUDE_PATTERNS,\n },\n\n // ---- verilog / HDL ----\n\n verilator: {\n id: 'verilator', name: 'Verilator', kind: 'hdl', arch: 'verilog',\n extensions: ['.v'],\n editorStyle: 'verilog',\n helpURL: 'https://verilator.org/guide/4.205/',\n wasmModule: 'verilator_bin',\n version: '4.205',\n includePatterns: VERILOG_INCLUDE_PATTERNS,\n linkPatterns: [],\n },\n\n yosys: {\n id: 'yosys', name: 'Yosys', kind: 'hdl', arch: 'verilog',\n extensions: [],\n wasmModule: 'yosys',\n includePatterns: VERILOG_INCLUDE_PATTERNS,\n linkPatterns: [],\n },\n\n silice: {\n id: 'silice', name: 'Silice', kind: 'hdl', arch: 'verilog',\n extensions: ['.ice'],\n editorStyle: 'verilog',\n helpURL: 'https://github.com/sylefeb/Silice',\n wasmModule: 'silice',\n version: '0.1',\n platforms: { default: { preloadFS: 'Silice' } },\n includePatterns: VERILOG_INCLUDE_PATTERNS,\n linkPatterns: [],\n },\n\n // ---- remote / server ----\n\n 'llvm-mos': {\n id: 'llvm-mos', name: 'LLVM-MOS', kind: 'compiler', arch: '6502',\n extensions: ['.c', '.cpp', '.s', '.S', '.C'],\n editorStyle: 'text/x-csrc', // used as 'remote:llvm-mos' in the IDE\n helpURL: 'https://llvm-mos.org/wiki/Welcome',\n remote: true,\n includePatterns: SHARED_INCLUDE_PATTERNS,\n linkPatterns: SHARED_LINK_PATTERNS,\n server: {\n version: 'latest',\n platforms: ['atari8', 'c64', 'nes', 'pce', 'vcs'],\n binpath: 'llvm-mos/bin',\n command: 'mos-clang',\n args: ['-Os', '-g', '-D', '__8BITWORKSHOP__', '-o', '$OUTFILE', '$INFILES'],\n },\n },\n\n // TODO: do we need this too?\n remote: {\n id: 'remote', name: 'Remote build', kind: 'remote',\n extensions: [],\n remote: true,\n },\n};\n\n//// helpers\n\n/**\n * Look up tool metadata by tool id. Tolerates the 'remote:' transport prefix\n * used in build steps (e.g. 'remote:llvm-mos' -> 'llvm-mos').\n */\nexport function getToolMeta(id: string): ToolMeta | undefined {\n return TOOL_META[id.replace(/^remote:/, '')];\n}\n\n/**\n * Return all tools that consume the given filename (longest extension match\n * first). Ambiguity is resolved by the platform, which picks from these.\n */\nexport function getToolMetaForFilename(fn: string): ToolMeta[] {\n let matches: { meta: ToolMeta, len: number }[] = [];\n for (let id in TOOL_META) {\n let meta = TOOL_META[id];\n for (let ext of meta.extensions) {\n if (ext && fn.endsWith(ext)) {\n matches.push({ meta, len: ext.length });\n break;\n }\n }\n }\n return matches.sort((a, b) => b.len - a.len).map(m => m.meta);\n}\n\n/**\n * The per-platform ToolMeta config for a tool, resolving suffixed platform ids\n * to their root base and falling back to 'default'. Used by the Builder to\n * layer platform-level defines/buildArgs under source directives.\n */\nexport function getPlatformToolConfig(tool: string, platform?: string): PlatformToolConfig | undefined {\n let meta = tool && getToolMeta(tool);\n if (!meta || !meta.platforms) return undefined;\n if (platform) {\n let p = meta.platforms[platform];\n if (p) return p;\n let base = getRootBasePlatform(platform);\n if (base && base !== platform && meta.platforms[base]) return meta.platforms[base];\n }\n return meta.platforms['default'];\n}\n\n/**\n * Resolve the preload filesystem name for a tool on a platform\n * (was TOOL_PRELOADFS, including compound 'tool-platform' keys).\n */\nexport function getPreloadFSName(tool: string, platform?: string): string | undefined {\n let meta = getToolMeta(tool);\n if (!meta) return undefined;\n if (meta.platforms) {\n if (platform) {\n // Try the exact id, then the root base id so suffixed platform ids\n // (e.g. 'atari8-800', 'atari8-5200.xlmame') resolve to the shared\n // filesystem registered under the root ('atari8' -> '65-atari8').\n let p = meta.platforms[platform];\n if (p && p.preloadFS) return p.preloadFS;\n let base = getRootBasePlatform(platform);\n if (base && base !== platform) {\n let b = meta.platforms[base];\n if (b && b.preloadFS) return b.preloadFS;\n }\n }\n let d = meta.platforms['default'];\n if (d && d.preloadFS) return d.preloadFS;\n }\n return undefined;\n}\n\n/** Skeleton filename in presets//, defaults to tool id. */\nexport function getSkeletonName(tool: string): string {\n let meta = getToolMeta(tool);\n return (meta && meta.skeleton) ? meta.skeleton : tool.replace(/^remote:/, '');\n}\n\n/**\n * Include patterns to use when scanning a source file for dependencies.\n * Falls back to the platform (verilog vs. everything else) when the tool is\n * unknown or declares no patterns of its own, which is how dependency parsing\n * worked before this registry. A tool that really has no include directives\n * says so with an explicit empty list.\n */\nexport function getIncludePatterns(tool: string, platform?: string): (RegExp | ToolIncludePattern)[] {\n let meta = tool && getToolMeta(tool);\n if (meta && meta.includePatterns) return meta.includePatterns;\n if (platform && platform.startsWith('verilog')) return VERILOG_INCLUDE_PATTERNS;\n return SHARED_INCLUDE_PATTERNS;\n}\n\n/**\n * Format a list of preprocessor/assembler defines as argv for a tool, using\n * the flag and joining style declared in its ToolMeta. Returns [] when the\n * tool has no command-line define mechanism (e.g. sdasz80).\n */\nexport function defineArgs(tool: string, defines?: string[]): string[] {\n let meta = tool && getToolMeta(tool);\n if (!meta || !meta.defineFlag || !defines || !defines.length) return [];\n let out: string[] = [];\n for (let d of defines) {\n if (meta.defineInline) out.push(meta.defineFlag + d);\n else out.push(meta.defineFlag, d);\n }\n return out;\n}\n\n/**\n * Format link-time global symbols as argv for a linker tool, using the flag\n * declared in its ToolMeta ('-D' for ld65, '-g' for sdldz80). Returns [] when\n * the tool cannot define symbols on the command line.\n */\nexport function linkSymbolArgs(tool: string, symbols?: string[]): string[] {\n let meta = tool && getToolMeta(tool);\n if (!meta || !meta.linkSymbolFlag || !symbols || !symbols.length) return [];\n let out: string[] = [];\n for (let s of symbols) {\n if (meta.linkSymbolInline) out.push(meta.linkSymbolFlag + s);\n else out.push(meta.linkSymbolFlag, s);\n }\n return out;\n}\n\n/**\n * Extra raw args from params.buildArgs for the phase matching the tool's kind\n * (compiler/assembler/linker). Interpreter/hdl/remote tools get nothing.\n */\nexport function extraArgsFor(tool: string, buildArgs?: BuildArgs): string[] {\n let meta = tool && getToolMeta(tool);\n if (!meta || !buildArgs) return [];\n let kind = meta.kind;\n if (kind === 'compiler' || kind === 'assembler' || kind === 'linker')\n return buildArgs[kind] || [];\n return [];\n}\n\n/** Link patterns (\"//#link\") to use when scanning a source file. */\nexport function getLinkPatterns(tool: string, platform?: string): (RegExp | ToolIncludePattern)[] {\n let meta = tool && getToolMeta(tool);\n if (meta && meta.linkPatterns) return meta.linkPatterns;\n if (platform && platform.startsWith('verilog')) return [];\n return SHARED_LINK_PATTERNS;\n}\n\n/**\n * Directories containing shared code (headers etc.) for this tool's shared\n * filesystem, e.g. ['/include','/asminc','/headers'] -- empty if none/unknown.\n */\nexport function getIncludeDirs(tool: string, platform_id: string): string[] {\n platform_id = platform_id && getRootBasePlatform(platform_id);\n let meta = tool && getToolMeta(tool);\n let out = (meta && meta.includeDirs) || [];\n out = out.map(s => s.replace('$platform', platform_id));\n return out;\n}\n\n/**\n * Name of the shared filesystem to query for this tool's bundled files:\n * either the emscripten preloadFS package name (e.g. '65-nes') or, for tools\n * with a WASI filesystem zip (e.g. cc2600), 'wasi:'.\n * Undefined if the tool has no bundled filesystem.\n */\nexport function getSharedFileSystemName(tool: string, platform?: string): string | undefined {\n var fsName = getPreloadFSName(tool, platform);\n if (fsName) return fsName;\n let meta = tool && getToolMeta(tool);\n return (meta && meta.wasiFSZip) ? 'wasi:' + meta.wasiFSZip : undefined;\n}\n\n/**\n * Run a set of include/link patterns over source text, returning the\n * referenced filenames. The filename comes from the pattern's `group`, or\n * from the last capture group if unspecified, plus any implicit `suffix`.\n */\nexport function matchDependencyPatterns(text: string, patterns: (RegExp | ToolIncludePattern)[]): string[] {\n let files: string[] = [];\n for (let pat of patterns || []) {\n let p: ToolIncludePattern = pat instanceof RegExp ? { re: pat } : pat;\n let m;\n p.re.lastIndex = 0; // patterns are shared and global, so rewind first\n while (m = p.re.exec(text)) {\n let fn = m[p.group != null ? p.group : m.length - 1];\n if (fn) files.push(p.suffix ? fn + p.suffix : fn);\n }\n }\n return files;\n}\n", "/*\n * Copyright (c) 2024 Steven E. Hugg\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport var PLATFORM_PARAMS = {\n 'vcs': {\n arch: '6502',\n code_start: 0x1000,\n code_size: 0xf000,\n data_start: 0x80,\n data_size: 0x80,\n wiz_rom_ext: '.a26',\n wiz_inc_dir: '2600',\n cfgfile: 'atari2600.cfg',\n libargs: ['crt0.o', 'atari2600.lib'],\n extra_link_files: ['crt0.o', 'atari2600.cfg'],\n // a hand-written ca65 program brings its own reset code and vectors, so\n // it links as a plain 4K cart with no C runtime (see applyAsmProjectParams)\n asm_cfgfile: 'atari2600-asm.cfg',\n asm_libargs: [],\n asm_extra_link_files: ['atari2600-asm.cfg'],\n define: ['__ATARI2600__'],\n },\n 'mw8080bw': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x2000,\n data_start: 0x2000,\n data_size: 0x400,\n stack_end: 0x2400,\n },\n 'vicdual': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x4020,\n data_start: 0xe400,\n data_size: 0x400,\n stack_end: 0xe800,\n },\n 'galaxian': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x4000,\n data_start: 0x4000,\n data_size: 0x400,\n stack_end: 0x4800,\n },\n 'galaxian-scramble': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x5020,\n data_start: 0x4000,\n data_size: 0x400,\n stack_end: 0x4800,\n },\n 'pacman': {\n arch: 'z80',\n code_start: 0x0,\n /* ABS CRT (_HEADER) ends ~0xCA; _CODE follows immediately (uses former hole). */\n codeseg_start: 0xca,\n rom_size: 0x8000, // 16KB prog + 8KB gfx + palette, padded to 32KB\n /* Real hardware: 0x4800-0x4BFF open bus; work RAM 0x4C00-0x4FEF.\n * Namco sound soft-regs live at 0x4E8C-0x4EFB \u2014 keep _DATA below that\n * or the WSG engine stomps game vars every VBLANK (e.g. mouth anim). */\n data_start: 0x4c00,\n data_size: 0x28c, // 0x4c00-0x4e8b (stop before sound soft-regs)\n stack_end: 0x4fc0, // above sound block; sprite attrs at 0x4ff0-0x4fff\n },\n 'williams': {\n arch: '6809',\n code_start: 0x0,\n rom_size: 0xc000,\n data_start: 0x9800,\n data_size: 0x2800,\n stack_end: 0xc000,\n set_stack_end: 0xc000,\n extra_link_files: ['williams.scr', 'libcmoc-crt-vec.a', 'libcmoc-std-vec.a'],\n extra_link_args: ['-swilliams.scr', '-lcmoc-crt-vec', '-lcmoc-std-vec'],\n extra_compile_files: ['assert.h','cmoc.h','stdarg.h','stdlib.h'],\n //extra_compile_args: ['--vectrex'],\n },\n 'williams-defender': {\n arch: '6809',\n code_start: 0x0,\n rom_size: 0xc000,\n data_start: 0x9800,\n data_size: 0x2800,\n stack_end: 0xc000,\n },\n 'williams-z80': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x9800,\n data_start: 0x9800,\n data_size: 0x2800,\n stack_end: 0xc000,\n },\n 'vector-z80color': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x8000,\n data_start: 0xe000,\n data_size: 0x2000,\n stack_end: 0x0,\n },\n 'vector-ataricolor': { //TODO\n arch: '6502',\n define: ['__VECTOR__'],\n cfgfile: 'vector-color.cfg',\n libargs: ['crt0.o', 'none.lib'],\n extra_link_files: ['crt0.o', 'vector-color.cfg'],\n },\n 'sound_williams-z80': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x4000,\n data_start: 0x4000,\n data_size: 0x400,\n stack_end: 0x8000,\n },\n 'base_z80': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0x8000,\n data_start: 0x8000,\n data_size: 0x8000,\n stack_end: 0x0,\n },\n 'coleco': {\n arch: 'z80',\n rom_start: 0x8000,\n code_start: 0x8100,\n rom_size: 0x8000,\n data_start: 0x7000,\n data_size: 0x400,\n stack_end: 0x8000,\n extra_preproc_args: ['-I', '/share/include/coleco', '-D', 'CV_CV'],\n extra_link_args: ['-k', '/share/lib/coleco', '-l', 'libcv', '-l', 'libcvu', 'crt0.rel'],\n },\n 'msx': {\n arch: 'z80',\n rom_start: 0x4000,\n code_start: 0x4000,\n rom_size: 0x8000,\n data_start: 0xc000,\n data_size: 0x3000,\n stack_end: 0xffff,\n extra_link_args: ['crt0-msx.rel'],\n extra_link_files: ['crt0-msx.rel', 'crt0-msx.lst'],\n wiz_sys_type: 'z80',\n wiz_inc_dir: 'msx',\n },\n 'msx-libcv': {\n arch: 'z80',\n rom_start: 0x4000,\n code_start: 0x4000,\n rom_size: 0x8000,\n data_start: 0xc000,\n data_size: 0x3000,\n stack_end: 0xffff,\n extra_preproc_args: ['-I', '.', '-D', 'CV_MSX'],\n extra_link_args: ['-k', '.', '-l', 'libcv-msx', '-l', 'libcvu-msx', 'crt0-msx.rel'],\n extra_link_files: ['libcv-msx.lib', 'libcvu-msx.lib', 'crt0-msx.rel', 'crt0-msx.lst'],\n extra_compile_files: ['cv.h','cv_graphics.h','cv_input.h','cv_sound.h','cv_support.h','cvu.h','cvu_c.h','cvu_compression.h','cvu_f.h','cvu_graphics.h','cvu_input.h','cvu_sound.h'],\n },\n 'sms-sg1000-libcv': {\n arch: 'z80',\n rom_start: 0x0000,\n code_start: 0x0100,\n rom_size: 0xc000,\n data_start: 0xc000,\n data_size: 0x400,\n stack_end: 0xe000,\n extra_preproc_args: ['-I', '.', '-D', 'CV_SMS'],\n extra_link_args: ['-k', '.', '-l', 'libcv-sms', '-l', 'libcvu-sms', 'crt0-sms.rel'],\n extra_link_files: ['libcv-sms.lib', 'libcvu-sms.lib', 'crt0-sms.rel', 'crt0-sms.lst'],\n extra_compile_files: ['cv.h','cv_graphics.h','cv_input.h','cv_sound.h','cv_support.h','cvu.h','cvu_c.h','cvu_compression.h','cvu_f.h','cvu_graphics.h','cvu_input.h','cvu_sound.h'],\n },\n 'nes': { //TODO\n arch: '6502',\n define: ['__NES__'],\n cfgfile: 'neslib2.cfg',\n libargs: ['crt0.o', 'nes.lib', 'neslib2.lib',\n '-D', 'NES_MAPPER=0', // NROM\n '-D', 'NES_PRG_BANKS=2', // 2 16K PRG banks\n '-D', 'NES_CHR_BANKS=1', // 1 CHR bank\n '-D', 'NES_MIRRORING=0', // horizontal mirroring\n ],\n extra_link_files: ['crt0.o', 'neslib2.lib', 'neslib2.cfg', 'nesbanked.cfg'],\n // source link symbol -> linker config (was hardcoded in fixParamsWithDefines)\n symbolConfigs: { NES_MAPPER: { '4': 'nesbanked.cfg' } },\n wiz_rom_ext: '.nes',\n },\n 'apple2': {\n arch: '6502',\n define: ['__APPLE2__'],\n cfgfile: 'apple2.cfg',\n libargs: [ '--lib-path', '/share/target/apple2/drv', 'apple2.lib'],\n __CODE_RUN__: 16384,\n code_start: 0x803,\n acmeargs: ['-f', 'apple'],\n },\n 'apple2-e': {\n arch: '6502',\n define: ['__APPLE2__'],\n cfgfile: 'apple2.cfg',\n libargs: ['apple2.lib'],\n acmeargs: ['-f', 'apple'],\n },\n 'atari8-800xl.disk': {\n arch: '6502',\n define: ['__ATARI__'],\n cfgfile: 'atari.cfg',\n libargs: ['atari.lib'],\n fastbasic_cfgfile: 'fastbasic-cart.cfg',\n },\n 'atari8-800xl': {\n arch: '6502',\n define: ['__ATARI__'],\n cfgfile: 'atari-cart.cfg',\n libargs: ['atari.lib', '-D', '__CARTFLAGS__=4'],\n fastbasic_cfgfile: 'fastbasic-cart.cfg',\n },\n 'atari8-800': {\n arch: '6502',\n define: ['__ATARI__'],\n cfgfile: 'atari-cart.cfg',\n libargs: ['atari.lib', '-D', '__CARTFLAGS__=4'],\n fastbasic_cfgfile: 'fastbasic-cart.cfg',\n },\n 'atari8-5200': {\n arch: '6502',\n define: ['__ATARI5200__'],\n cfgfile: 'atari5200.cfg',\n libargs: ['atari5200.lib', '-D', '__CARTFLAGS__=255'],\n fastbasic_cfgfile: 'fastbasic-cart.cfg',\n },\n 'verilog': {\n arch: 'verilog',\n extra_compile_files: ['8bitworkshop.v'],\n },\n 'astrocade': {\n arch: 'z80',\n code_start: 0x2000,\n rom_size: 0x2000,\n data_start: 0x4e10,\n data_size: 0x1f0,\n stack_end: 0x5000,\n },\n 'astrocade-arcade': {\n arch: 'z80',\n code_start: 0x0000,\n rom_size: 0x4000,\n data_start: 0x7de0,\n data_size: 0x220,\n stack_end: 0x8000,\n },\n 'astrocade-bios': {\n arch: 'z80',\n code_start: 0x0000,\n rom_size: 0x2000,\n data_start: 0x4fce,\n data_size: 50,\n stack_end: 0x4fce,\n },\n 'atari7800': {\n arch: '6502',\n define: ['__ATARI7800__'],\n cfgfile: 'atari7800.cfg',\n libargs: ['crt0.o', 'none.lib'],\n extra_link_files: ['crt0.o', 'atari7800.cfg'],\n },\n 'c64': {\n arch: '6502',\n define: ['__CBM__', '__C64__'],\n cfgfile: 'c64.cfg', // SYS 2061\n libargs: ['openroms-compat.o', 'c64.lib'],\n extra_link_files: ['openroms-compat.o'],\n acmeargs: ['-f', 'cbm'],\n //extra_link_files: ['c64-cart.cfg'],\n },\n 'vic20': {\n arch: '6502',\n define: ['__CBM__', '__VIC20__'],\n cfgfile: 'vic20.cfg',\n libargs: ['vic20.lib'],\n acmeargs: ['-f', 'cbm'],\n //extra_link_files: ['c64-cart.cfg'],\n },\n 'kim1': {\n arch: '6502',\n },\n 'vectrex': {\n arch: '6809',\n code_start: 0x0,\n rom_size: 0x8000,\n data_start: 0xc880,\n data_size: 0x380,\n stack_end: 0xcc00,\n extra_compile_files: ['assert.h','cmoc.h','stdarg.h','vectrex.h','stdlib.h','bios.h'],\n extra_link_files: ['vectrex.scr', 'libcmoc-crt-vec.a', 'libcmoc-std-vec.a'],\n extra_compile_args: ['--vectrex'],\n extra_link_args: ['-svectrex.scr', '-lcmoc-crt-vec', '-lcmoc-std-vec'],\n },\n 'x86': { \n arch: 'x86',\n },\n 'zx': {\n arch: 'z80',\n code_start: 0x5ccb,\n rom_size: 0xff58-0x5ccb,\n data_start: 0xf000,\n data_size: 0xfe00-0xf000,\n stack_end: 0xff58,\n extra_link_args: ['crt0-zx.rel'],\n extra_link_files: ['crt0-zx.rel', 'crt0-zx.lst'],\n },\n 'devel-6502': {\n arch: '6502',\n cfgfile: 'devel-6502.cfg',\n libargs: ['crt0.o', 'none.lib'],\n extra_link_files: ['crt0.o', 'devel-6502.cfg'],\n },\n // https://github.com/cpcitor/cpc-dev-tool-chain\n 'cpc.rslib': {\n arch: 'z80',\n code_start: 0x4000,\n rom_size: 0xb100-0x4000,\n data_start: 0xb100,\n data_size: 0xb100-0xc000,\n stack_end: 0xc000,\n extra_compile_files: ['cpcrslib.h'],\n extra_link_args: ['crt0-cpc.rel', 'cpcrslib.lib'],\n extra_link_files: ['crt0-cpc.rel', 'crt0-cpc.lst', 'cpcrslib.lib', 'cpcrslib.lst'],\n },\n // https://lronaldo.github.io/cpctelera/ (TODO)\n 'cpc': {\n arch: 'z80',\n code_start: 0x4000,\n rom_size: 0xb100-0x4000,\n data_start: 0xb100,\n data_size: 0xb100-0xc000,\n stack_end: 0xc000,\n extra_compile_files: ['cpctelera.h'],\n extra_link_args: ['crt0-cpc.rel', 'cpctelera.lib'],\n extra_link_files: ['crt0-cpc.rel', 'crt0-cpc.lst', 'cpctelera.lib', 'cpctelera.lst'],\n },\n 'pce': {\n arch: 'huc6280',\n define: ['__PCE__'],\n cfgfile: 'pce.cfg',\n libargs: ['pce.lib', '-D', '__CARTSIZE__=0x8000'],\n },\n 'exidy': {\n define: ['__EXIDY__'],\n cfgfile: 'exidy.cfg',\n libargs: ['crt0.o', 'none.lib'],\n extra_link_files: ['crt0.o', 'exidy.cfg'],\n //extra_compile_files: ['exidy.h'],\n },\n 'arm32': {\n arch: 'arm32',\n define: ['__ARM__', 'DISABLE_UNIMPLEMENTED_LIBC_APIS', 'PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT'],\n extra_compile_args: ['-I./arch/arm/include', '-I./openlibm/include', '-I./openlibm/src', '-I./printf/src'],\n extra_link_files: ['crt0.c', 'libc.a'],\n extra_link_args: ['crt0.c', '-lc'],\n },\n 'gb': {\n arch: 'gbz80',\n code_start: 0x0, // ROM starts @ 0x0, header @ 0x100, etc.\n codeseg_start: 0x200, // _CODE area starts here\n rom_size: 0x8000,\n data_start: 0xc0a0,\n data_size: 0x1f60,\n stack_end: 0xe000,\n extra_link_files: ['gbz80.lib', 'gb.lib'],\n extra_link_args: [\n '-l', 'gb',\n '-g', '_shadow_OAM=0xC000',\n '-g', '.STACK=0xE000',\n '-g', '.refresh_OAM=0xFF80',\n '-g', 'GB_MAPPER=0x0',\n '-g', 'GB_ROM_SIZE=0x0',\n '-g', 'GB_RAM_SIZE=0x0',\n '-g', 'GB_CGB_FLAGS=0x0',\n ],\n wiz_sys_type: 'gb',\n wiz_inc_dir: 'gb',\n },\n 'mcr': {\n arch: 'z80',\n code_start: 0x0,\n rom_size: 0xe000 + 0x4000 + 0x8000,\n data_start: 0xe000,\n data_size: 0x800,\n stack_end: 0xe800,\n // TODO: IHX can't handle > 64 KB, so ihx2sms looks for segments in a certain order\n },\n};\n \n// SMS/GG mode-4 variants of the shared libcv common.[ch] (2 bytes per tile, 32x28)\nPLATFORM_PARAMS['sms-sms-libcv'] = {\n ...PLATFORM_PARAMS['sms-sg1000-libcv'],\n extra_preproc_args: ['-I', '.', '-D', 'CV_SMS', '-D', 'CV_MODE4']\n};\n\nPLATFORM_PARAMS['sms-gg-libcv'] = PLATFORM_PARAMS['sms-sms-libcv'];\n\nPLATFORM_PARAMS['gb.color'] = {\n ...PLATFORM_PARAMS['gb'],\n extra_link_args: PLATFORM_PARAMS['gb'].extra_link_args.map(arg => arg === 'GB_CGB_FLAGS=0x0' ? 'GB_CGB_FLAGS=0x80' : arg)\n}\n", "import { WorkerError, CodeListingMap, SourceLocation, SourceLine, SourceLocated, SourceLineLocated } from \"../workertypes\";\n\nexport interface BASICOptions {\n dialectName : string; // use this to select the dialect \n // SYNTAX AND PARSING\n asciiOnly : boolean; // reject non-ASCII chars?\n uppercaseOnly : boolean; // convert everything to uppercase?\n optionalLabels : boolean;\t\t\t// can omit line numbers and use labels?\n optionalWhitespace : boolean; // can \"crunch\" keywords? also, eat extra \":\" delims\n multipleStmtsPerLine : boolean; // multiple statements separated by \":\"\n varNaming : 'A'|'A1'|'A1$'|'AA'|'*'; // only allow A0-9 for numerics, single letter for arrays/strings\n squareBrackets : boolean; // \"[\" and \"]\" interchangable with \"(\" and \")\"?\n tickComments : boolean; // support 'comments?\n hexOctalConsts : boolean; // support &H and &O integer constants?\n optionalLet : boolean; // LET is optional\n chainAssignments : boolean; // support A = B = value (HP2000)\n validKeywords : string[]; // valid keywords (or null for accept all)\n validFunctions : string[]; // valid functions (or null for accept all)\n validOperators : string[]; // valid operators (or null for accept all)\n // VALUES AND OPERATORS\n defaultValues : boolean; // initialize unset variables to default value? (0 or \"\")\n stringConcat : boolean; // can concat strings with \"+\" operator?\n checkOverflow : boolean; // check for overflow of numerics?\n bitwiseLogic : boolean; // -1 = TRUE, 0 = FALSE, AND/OR/NOT done with bitwise ops\n maxStringLength : number; // maximum string length in chars\n maxDefArgs : number; // maximum # of arguments for user-defined functions\n // ARRAYS\n staticArrays : boolean; // can only DIM with constant value? (and never redim)\n sharedArrayNamespace : boolean; // arrays and variables have same namespace? (TODO)\n defaultArrayBase : number; // arrays start at this number (0 or 1)\n defaultArraySize : number; // arrays are allocated w/ this size (starting @ 0)\n maxDimensions : number; // max number of dimensions for arrays\n arraysContainChars : boolean; // HP BASIC array-slicing syntax\n // PRINTING\n printZoneLength : number; // print zone length\n numericPadding : boolean; // \" \" or \"-\" before and \" \" after numbers?\n // CONTROL FLOW\n compiledBlocks : boolean; // assume blocks are statically compiled, not interpreted\n testInitialFor : boolean; // can we skip a NEXT statement? (can't interleave tho)\n optionalNextVar : boolean; // can do NEXT without variable\n multipleNextVars : boolean; // NEXT J,I\n checkOnGotoIndex : boolean; // fatal error when ON..GOTO index out of bounds\n computedGoto : boolean; // non-const expr GOTO label (and GOTO..OF expression)\n restoreWithLabel : boolean; // RESTORE