From b6ddfe55184230cd031fd050cac31ee844ea071e Mon Sep 17 00:00:00 2001 From: sehugg Date: Tue, 3 Mar 2026 18:30:42 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sehugg/8?= =?UTF-8?q?bitworkshop@3954099ea373a3df7ccebd3a7ea9a69ac4d1bf84=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gen/tools/8bws.js | 12 +- gen/tools/8bws.js.map | 2 +- gen/tools/testlib.js | 235 +++++++++++++++++++++++++++++++++- gen/tools/testlib.js.map | 2 +- gen/worker/workerlib.js | 9 ++ gen/worker/workerlib.js.map | 2 +- src/tools/8bws.ts | 15 ++- src/tools/testlib.ts | 249 +++++++++++++++++++++++++++++++++++- src/worker/workerlib.ts | 9 ++ 9 files changed, 518 insertions(+), 17 deletions(-) diff --git a/gen/tools/8bws.js b/gen/tools/8bws.js index fd335dd2..378ba71e 100644 --- a/gen/tools/8bws.js +++ b/gen/tools/8bws.js @@ -46,8 +46,8 @@ function usage() { command: 'help', data: { commands: { - 'compile': 'compile --tool --platform [--output ] ', - 'check': 'check --tool --platform ', + 'compile': 'compile --platform [--tool ] [--output ] ', + 'check': 'check --platform [--tool ] ', 'run': 'run --platform [--frames N] ', 'list-tools': 'list-tools', 'list-platforms': 'list-platforms', @@ -82,14 +82,18 @@ async function doCompile(args, positional, checkOnly) { var platform = args['platform']; var outputFile = args['output']; var sourceFile = positional[0]; - if (!tool || !platform || !sourceFile) { + if (!platform || !sourceFile) { outputJSON({ success: false, command: checkOnly ? 'check' : 'compile', - error: 'Required: --tool --platform ' + error: 'Required: --platform [--tool ]' }); process.exit(1); } + // Auto-detect tool from filename if not specified + if (!tool) { + tool = (0, testlib_1.getToolForFilename)(sourceFile, platform); + } if (!testlib_1.TOOLS[tool]) { outputJSON({ success: false, diff --git a/gen/tools/8bws.js.map b/gen/tools/8bws.js.map index a2536008..901601f1 100644 --- a/gen/tools/8bws.js.map +++ b/gen/tools/8bws.js.map @@ -1 +1 @@ -{"version":3,"file":"8bws.js","sourceRoot":"","sources":["../../src/tools/8bws.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"8bws.js","sourceRoot":"","sources":["../../src/tools/8bws.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/tools/testlib.js b/gen/tools/testlib.js index e7a9b56f..da19da6f 100644 --- a/gen/tools/testlib.js +++ b/gen/tools/testlib.js @@ -1,6 +1,7 @@ "use strict"; // testlib - Clean async API for compiling and testing 8bitworkshop projects // Wraps the worker build system for use in tests and CLI tools +// FOR TESTING ONLY var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -40,12 +41,16 @@ exports.initialize = initialize; exports.preload = preload; exports.compile = compile; exports.compileFile = compileFile; +exports.getToolForFilename = getToolForFilename; exports.compileSourceFile = compileSourceFile; exports.listTools = listTools; exports.listPlatforms = listPlatforms; exports.ab2str = ab2str; exports.createMockLocalStorage = createMockLocalStorage; const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const util_1 = require("../common/util"); +const baseplatform_1 = require("../common/baseplatform"); const workerlib_1 = require("../worker/workerlib"); Object.defineProperty(exports, "store", { enumerable: true, get: function () { return workerlib_1.store; } }); Object.defineProperty(exports, "TOOL_PRELOADFS", { enumerable: true, get: function () { return workerlib_1.TOOL_PRELOADFS; } }); @@ -119,18 +124,244 @@ async function compileFile(tool, platform, presetPath) { path: presetPath, }); } +/** + * Parse include and link dependencies from source text. + * Extracted from CodeProject.parseIncludeDependencies / parseLinkDependencies. + * TODO: project.ts should be refactored so we don't have to duplicate the logic + */ +function parseIncludeDependencies(text, platformId, mainPath) { + let files = []; + let m; + var dir = (0, util_1.getFolderForPath)(mainPath); + function pushFile(fn) { + files.push(fn); + if (dir.length > 0 && dir != 'local') + files.push(dir + '/' + fn); + } + if (platformId.startsWith('verilog')) { + let re1 = /^\s*(`include|[.]include)\s+"(.+?)"/gmi; + while (m = re1.exec(text)) { + pushFile(m[2]); + } + let re1a = /^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi; + while (m = re1a.exec(text)) { + pushFile(m[2]); + } + let re2 = /^\s*([.]arch)\s+(\w+)/gmi; + while (m = re2.exec(text)) { + pushFile(m[2] + ".json"); + } + let re3 = /\$readmem[bh]\("(.+?)"/gmi; + while (m = re3.exec(text)) { + pushFile(m[1]); + } + } + else { + let re2 = /^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi; + while (m = re2.exec(text)) { + pushFile(m[2]); + } + let re3 = /^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm; + while (m = re3.exec(text)) { + pushFile(m[3]); + } + let re4 = /^\s+(USE|ASM)\s+(\S+[.]\S+)/gm; + while (m = re4.exec(text)) { + pushFile(m[2]); + } + let re5 = /^\s*(import|embed)\s*"(.+?)";/gmi; + while (m = re5.exec(text)) { + if (m[1] == 'import') + pushFile(m[2] + ".wiz"); + else + pushFile(m[2]); + } + let re6 = /^\s*(import)\s*"(.+?)"/gmi; + while (m = re6.exec(text)) { + pushFile(m[2]); + } + let re7 = /^[!]src\s+"(.+?)"/gmi; + while (m = re7.exec(text)) { + pushFile(m[1]); + } + } + return files; +} +function parseLinkDependencies(text, platformId, mainPath) { + let files = []; + let m; + var dir = (0, util_1.getFolderForPath)(mainPath); + function pushFile(fn) { + files.push(fn); + if (dir.length > 0 && dir != 'local') + files.push(dir + '/' + fn); + } + if (!platformId.startsWith('verilog')) { + let re = /^\s*([;]|[/][/])#link\s+"(.+?)"/gm; + while (m = re.exec(text)) { + pushFile(m[2]); + } + } + return files; +} +/** + * Try to resolve a file path by searching the source directory, + * the presets directory for the platform, and the current working directory. + */ +function resolveFileData(filePath, sourceDir, platform) { + var searchPaths = []; + // Try relative to source file directory + if (sourceDir) { + searchPaths.push(path.resolve(sourceDir, filePath)); + } + // Try presets directory + var basePlatform = (0, util_1.getBasePlatform)(platform); + searchPaths.push(path.resolve('presets', basePlatform, filePath)); + // Try current working directory + searchPaths.push(path.resolve(filePath)); + for (var p of searchPaths) { + try { + if (fs.existsSync(p)) { + if ((0, util_1.isProbablyBinary)(filePath)) { + return new Uint8Array(fs.readFileSync(p)); + } + else { + return fs.readFileSync(p, 'utf-8'); + } + } + } + catch (e) { + // continue searching + } + } + return null; +} +/** + * Strips the main file's folder prefix from a path (matching CodeProject.stripLocalPath). + */ +function stripLocalPath(filePath, mainPath) { + var folder = (0, util_1.getFolderForPath)(mainPath); + if (folder != '' && filePath.startsWith(folder + '/')) { + filePath = filePath.substring(folder.length + 1); + } + return filePath; +} +/** + * Recursively resolve all file dependencies for a source file. + */ +function resolveAllDependencies(mainText, mainPath, platform, sourceDir) { + var resolved = []; + var seen = new Set(); + function resolve(text, currentPath) { + var includes = parseIncludeDependencies(text, platform, currentPath); + var links = parseLinkDependencies(text, platform, currentPath); + var allPaths = includes.concat(links); + var linkSet = new Set(links); + for (var depPath of allPaths) { + var filename = stripLocalPath(depPath, mainPath); + if (seen.has(filename)) + continue; + seen.add(filename); + var data = resolveFileData(depPath, sourceDir, platform); + if (data != null) { + resolved.push({ + path: depPath, + filename: filename, + data: data, + link: linkSet.has(depPath), + }); + // Recursively parse text files for their own dependencies + if (typeof data === 'string') { + resolve(data, depPath); + } + } + } + } + resolve(mainText, mainPath); + return resolved; +} +// TODO: refactor dependency parsing and tool selection into a common library +// shared between CodeProject (src/ide/project.ts) and testlib +/** + * Select the appropriate tool for a filename based on platform architecture. + */ +function getToolForFilename(fn, platform) { + var params = platforms_1.PLATFORM_PARAMS[(0, util_1.getBasePlatform)(platform)]; + var arch = params && params.arch; + switch (arch) { + case 'z80': + case 'gbz80': + return (0, baseplatform_1.getToolForFilename_z80)(fn); + case '6502': + return (0, baseplatform_1.getToolForFilename_6502)(fn); + case '6809': + return (0, baseplatform_1.getToolForFilename_6809)(fn); + default: + return (0, baseplatform_1.getToolForFilename_z80)(fn); // fallback + } +} /** * Compile an arbitrary source file path. + * Parses include/link/resource directives and loads dependent files. */ async function compileSourceFile(tool, platform, filePath) { await initialize(); var code = fs.readFileSync(filePath, 'utf-8'); var basename = filePath.split('/').pop(); + var sourceDir = path.dirname(path.resolve(filePath)); + // Auto-detect tool from filename if not specified + if (!tool) { + tool = getToolForFilename(basename, platform); + } + // Parse and resolve all dependencies + var deps = resolveAllDependencies(code, basename, platform, sourceDir); + if (deps.length === 0) { + // No dependencies found, use simple single-file path + return compile({ + tool: tool, + platform: platform, + code: code, + path: basename, + }); + } + // Build multi-file message with updates and buildsteps + var files = []; + var depFilenames = []; + // Main file first + files.push({ path: basename, data: code }); + // Include files (non-link dependencies) + for (var dep of deps) { + if (!dep.link) { + files.push({ path: dep.filename, data: dep.data }); + depFilenames.push(dep.filename); + } + } + // Build steps: main file first + var buildsteps = []; + buildsteps.push({ + path: basename, + files: [basename].concat(depFilenames), + platform: platform, + tool: tool, + mainfile: true, + }); + // Link dependencies get their own build steps, with tool selected by extension + for (var dep of deps) { + if (dep.link && dep.data) { + files.push({ path: dep.filename, data: dep.data }); + buildsteps.push({ + path: dep.filename, + files: [dep.filename].concat(depFilenames), + platform: platform, + tool: getToolForFilename(dep.filename, platform), + }); + } + } return compile({ tool: tool, platform: platform, - code: code, - path: basename, + files: files, + buildsteps: buildsteps, }); } function workerResultToCompileResult(result) { diff --git a/gen/tools/testlib.js.map b/gen/tools/testlib.js.map index 1e535128..70aa8244 100644 --- a/gen/tools/testlib.js.map +++ b/gen/tools/testlib.js.map @@ -1 +1 @@ -{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../src/tools/testlib.ts"],"names":[],"mappings":";AACA,4EAA4E;AAC5E,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoC/D,gCAOC;AAKD,0BAKC;AAKD,0BA4BC;AAKD,kCAUC;AAKD,8CAWC;AA8BD,8BAEC;AAKD,sCAEC;AAKD,wBAEC;AAOD,wDAsBC;AA9LD,uCAAyB;AAEzB,mDAAiG;AAIxF,sFAJqC,iBAAK,OAIrC;AAAE,+FAJqC,0BAAc,OAIrC;AAH9B,mDAAsD;AAGtB,gGAHvB,2BAAe,OAGuB;AAF/C,uDAA8C;AAEG,sFAFxC,mBAAK,OAEwC;AAsBtD,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;GAGG;AACI,KAAK,UAAU,UAAU;IAC9B,IAAI,WAAW;QAAE,OAAO;IACxB,IAAA,gCAAoB,GAAE,CAAC;IACvB,oEAAoE;IACpE,2DAA2D;IAC3D,sCAAsC;IACtC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,QAAiB;IAC3D,MAAM,UAAU,EAAE,CAAC;IACnB,IAAI,GAAG,GAAkB,EAAE,OAAO,EAAE,IAAI,EAAS,CAAC;IAClD,IAAI,QAAQ;QAAG,GAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/C,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,OAAuB;IACnD,MAAM,UAAU,EAAE,CAAC;IAEnB,oCAAoC;IACpC,MAAM,IAAA,yBAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC,CAAC;IAE5C,IAAI,MAAoB,CAAC;IAEzB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACxC,mBAAmB;QACnB,IAAI,GAAG,GAAQ;YACb,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,MAAM,GAAG,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,IAAI,GAAG,GAAQ;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;SACrC,CAAC;QACF,MAAM,GAAG,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB,EAAE,UAAkB;IAClF,MAAM,UAAU,EAAE,CAAC;IAEnB,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,QAAQ,GAAG,GAAG,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB;IACtF,MAAM,UAAU,EAAE,CAAC;IAEnB,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAoB;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,WAAW,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAG,MAAc,CAAC,QAAQ;YAClC,SAAS,EAAG,MAAc,CAAC,SAAS;YACpC,MAAM,EAAG,MAAc,CAAC,MAAM;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,2BAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,GAAyB;IAC9C,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,kCAAkC;AAElC;;GAEG;AACH,SAAgB,sBAAsB;IACpC,IAAI,KAAK,GAA8B,EAAE,CAAC;IAC1C,OAAO;QACL,IAAI,MAAM;YACR,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;QACD,KAAK;YACH,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;QACD,OAAO,CAAC,CAAS;YACf,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,CAAS,EAAE,CAAS;YAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,UAAU,CAAC,CAAS;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,CAAC,CAAS;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../src/tools/testlib.ts"],"names":[],"mappings":";AACA,4EAA4E;AAC5E,+DAA+D;AAC/D,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCnB,gCAOC;AAKD,0BAKC;AAKD,0BA4BC;AAKD,kCAUC;AAsKD,gDAcC;AAMD,8CAqEC;AA8BD,8BAEC;AAKD,sCAEC;AAKD,wBAEC;AAOD,wDAsBC;AAhbD,uCAAyB;AACzB,2CAA6B;AAE7B,yCAAqF;AACrF,yDAAkH;AAClH,mDAAiG;AAIxF,sFAJqC,iBAAK,OAIrC;AAAE,+FAJqC,0BAAc,OAIrC;AAH9B,mDAAsD;AAGtB,gGAHvB,2BAAe,OAGuB;AAF/C,uDAA8C;AAEG,sFAFxC,mBAAK,OAEwC;AAsBtD,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;GAGG;AACI,KAAK,UAAU,UAAU;IAC9B,IAAI,WAAW;QAAE,OAAO;IACxB,IAAA,gCAAoB,GAAE,CAAC;IACvB,oEAAoE;IACpE,2DAA2D;IAC3D,sCAAsC;IACtC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,QAAiB;IAC3D,MAAM,UAAU,EAAE,CAAC;IACnB,IAAI,GAAG,GAAkB,EAAE,OAAO,EAAE,IAAI,EAAS,CAAC;IAClD,IAAI,QAAQ;QAAG,GAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/C,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,OAAuB;IACnD,MAAM,UAAU,EAAE,CAAC;IAEnB,oCAAoC;IACpC,MAAM,IAAA,yBAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC,CAAC;IAE5C,IAAI,MAAoB,CAAC;IAEzB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACxC,mBAAmB;QACnB,IAAI,GAAG,GAAQ;YACb,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,MAAM,GAAG,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,IAAI,GAAG,GAAQ;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;SACrC,CAAC;QACF,MAAM,GAAG,MAAM,IAAA,yBAAa,EAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB,EAAE,UAAkB;IAClF,MAAM,UAAU,EAAE,CAAC;IAEnB,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,QAAQ,GAAG,GAAG,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,IAAY,EAAE,UAAkB,EAAE,QAAgB;IAClF,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;IACN,IAAI,GAAG,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,QAAQ,CAAC,EAAU;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,OAAO;YAClC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,GAAG,GAAG,wCAAwC,CAAC;QACnD,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAI,IAAI,GAAG,6DAA6D,CAAC;QACzE,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,0BAA0B,CAAC;QACrC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QAAC,CAAC;QACxD,IAAI,GAAG,GAAG,2BAA2B,CAAC;QACtC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,GAAG,+CAA+C,CAAC;QAC1D,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,0CAA0C,CAAC;QACrD,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,+BAA+B,CAAC;QAC1C,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,kCAAkC,CAAC;QAC7C,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;;gBACzC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,GAAG,GAAG,2BAA2B,CAAC;QACtC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,sBAAsB,CAAC;QACjC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,UAAkB,EAAE,QAAgB;IAC/E,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;IACN,IAAI,GAAG,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,QAAQ,CAAC,EAAU;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,OAAO;YAClC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,IAAI,EAAE,GAAG,mCAAmC,CAAC;QAC7C,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAWD;;;GAGG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB;IAC5E,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,wCAAwC;IACxC,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,wBAAwB;IACxB,IAAI,YAAY,GAAG,IAAA,sBAAe,EAAC,QAAQ,CAAC,CAAC;IAC7C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElE,gCAAgC;IAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,IAAI,IAAA,uBAAgB,EAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,QAAgB;IACxD,IAAI,MAAM,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,QAAgB,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB;IAEvE,IAAI,QAAQ,GAAmB,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7B,SAAS,OAAO,CAAC,IAAY,EAAE,WAAmB;QAChD,IAAI,QAAQ,GAAG,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7B,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnB,IAAI,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;iBAC3B,CAAC,CAAC;gBACH,0DAA0D;gBAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6EAA6E;AAC7E,8DAA8D;AAE9D;;GAEG;AACH,SAAgB,kBAAkB,CAAC,EAAU,EAAE,QAAgB;IAC7D,IAAI,MAAM,GAAG,2BAAe,CAAC,IAAA,sBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,IAAI,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,IAAA,sCAAuB,EAAC,EAAE,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,IAAA,sCAAuB,EAAC,EAAE,CAAC,CAAC;QACrC;YACE,OAAO,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC,CAAC,WAAW;IAClD,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB;IACtF,MAAM,UAAU,EAAE,CAAC;IAEnB,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACzC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErD,kDAAkD;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,qDAAqD;QACrD,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,GAAkD,EAAE,CAAC;IAC9D,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,kBAAkB;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,wCAAwC;IACxC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,UAAU,GAAU,EAAE,CAAC;IAC3B,UAAU,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACtC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,+EAA+E;IAC/E,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC1C,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,UAAU;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAoB;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,WAAW,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAG,MAAc,CAAC,QAAQ;YAClC,SAAS,EAAG,MAAc,CAAC,SAAS;YACpC,MAAM,EAAG,MAAc,CAAC,MAAM;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,2BAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,GAAyB;IAC9C,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,kCAAkC;AAElC;;GAEG;AACH,SAAgB,sBAAsB;IACpC,IAAI,KAAK,GAA8B,EAAE,CAAC;IAC1C,OAAO;QACL,IAAI,MAAM;YACR,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;QACD,KAAK;YACH,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;QACD,OAAO,CAAC,CAAS;YACf,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,CAAS,EAAE,CAAS;YAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,UAAU,CAAC,CAAS;YAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,CAAC,CAAS;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/gen/worker/workerlib.js b/gen/worker/workerlib.js index 579f917c..69a31b3f 100644 --- a/gen/worker/workerlib.js +++ b/gen/worker/workerlib.js @@ -1,6 +1,7 @@ "use strict"; // workerlib.ts - Node.js-friendly entry point for the worker build system // Re-exports core worker functionality without Web Worker onmessage/postMessage wiring +// FOR TESTING ONLY var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -79,6 +80,14 @@ class Blob { */ function setupNodeEnvironment() { // Basic globals expected by various parts of the worker system + // Some Emscripten-generated WASM modules check for __filename/__dirname + if (typeof globalThis.__filename === 'undefined') { + globalThis.__filename = __filename; + } + if (typeof globalThis.__dirname === 'undefined') { + globalThis.__dirname = __dirname; + // TODO: support require('path').dirname + } wasmutils_1.emglobal.window = wasmutils_1.emglobal; wasmutils_1.emglobal.exports = {}; wasmutils_1.emglobal.self = wasmutils_1.emglobal; diff --git a/gen/worker/workerlib.js.map b/gen/worker/workerlib.js.map index 49a91294..9c1a5bfa 100644 --- a/gen/worker/workerlib.js.map +++ b/gen/worker/workerlib.js.map @@ -1 +1 @@ -{"version":3,"file":"workerlib.js","sourceRoot":"","sources":["../../src/worker/workerlib.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"workerlib.js","sourceRoot":"","sources":["../../src/worker/workerlib.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/tools/8bws.ts b/src/tools/8bws.ts index 751aff24..f52e3de6 100644 --- a/src/tools/8bws.ts +++ b/src/tools/8bws.ts @@ -3,7 +3,7 @@ // 8bws - 8bitworkshop CLI tool for compilation, ROM execution, and platform info import * as fs from 'fs'; -import { initialize, compile, compileSourceFile, preload, listTools, listPlatforms, PLATFORM_PARAMS, TOOLS, TOOL_PRELOADFS } from './testlib'; +import { initialize, compile, compileSourceFile, preload, listTools, listPlatforms, getToolForFilename, PLATFORM_PARAMS, TOOLS, TOOL_PRELOADFS } from './testlib'; interface CLIResult { success: boolean; @@ -22,8 +22,8 @@ function usage(): void { command: 'help', data: { commands: { - 'compile': 'compile --tool --platform [--output ] ', - 'check': 'check --tool --platform ', + 'compile': 'compile --platform [--tool ] [--output ] ', + 'check': 'check --platform [--tool ] ', 'run': 'run --platform [--frames N] ', 'list-tools': 'list-tools', 'list-platforms': 'list-platforms', @@ -61,15 +61,20 @@ async function doCompile(args: { [key: string]: string }, positional: string[], var outputFile = args['output']; var sourceFile = positional[0]; - if (!tool || !platform || !sourceFile) { + if (!platform || !sourceFile) { outputJSON({ success: false, command: checkOnly ? 'check' : 'compile', - error: 'Required: --tool --platform ' + error: 'Required: --platform [--tool ]' }); process.exit(1); } + // Auto-detect tool from filename if not specified + if (!tool) { + tool = getToolForFilename(sourceFile, platform); + } + if (!TOOLS[tool]) { outputJSON({ success: false, diff --git a/src/tools/testlib.ts b/src/tools/testlib.ts index c2aae846..1325a5e0 100644 --- a/src/tools/testlib.ts +++ b/src/tools/testlib.ts @@ -1,9 +1,13 @@ // testlib - Clean async API for compiling and testing 8bitworkshop projects // Wraps the worker build system for use in tests and CLI tools +// FOR TESTING ONLY import * as fs from 'fs'; -import type { WorkerResult, WorkerMessage, WorkerErrorResult, WorkerOutputResult } from "../common/workertypes"; +import * as path from 'path'; +import type { WorkerResult, WorkerMessage, WorkerErrorResult, WorkerOutputResult, Dependency } from "../common/workertypes"; +import { getFolderForPath, isProbablyBinary, getBasePlatform } from "../common/util"; +import { getToolForFilename_z80, getToolForFilename_6502, getToolForFilename_6809 } from "../common/baseplatform"; import { setupNodeEnvironment, handleMessage, store, TOOL_PRELOADFS } from "../worker/workerlib"; import { PLATFORM_PARAMS } from "../worker/platforms"; import { TOOLS } from "../worker/workertools"; @@ -103,19 +107,258 @@ export async function compileFile(tool: string, platform: string, presetPath: st }); } +/** + * Parse include and link dependencies from source text. + * Extracted from CodeProject.parseIncludeDependencies / parseLinkDependencies. + * TODO: project.ts should be refactored so we don't have to duplicate the logic + */ +function parseIncludeDependencies(text: string, platformId: string, mainPath: string): string[] { + let files: string[] = []; + let m; + var dir = getFolderForPath(mainPath); + + function pushFile(fn: string) { + files.push(fn); + if (dir.length > 0 && dir != 'local') + files.push(dir + '/' + fn); + } + + if (platformId.startsWith('verilog')) { + let re1 = /^\s*(`include|[.]include)\s+"(.+?)"/gmi; + while (m = re1.exec(text)) { pushFile(m[2]); } + let re1a = /^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi; + while (m = re1a.exec(text)) { pushFile(m[2]); } + let re2 = /^\s*([.]arch)\s+(\w+)/gmi; + while (m = re2.exec(text)) { pushFile(m[2] + ".json"); } + let re3 = /\$readmem[bh]\("(.+?)"/gmi; + while (m = re3.exec(text)) { pushFile(m[1]); } + } else { + let re2 = /^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi; + while (m = re2.exec(text)) { pushFile(m[2]); } + let re3 = /^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm; + while (m = re3.exec(text)) { pushFile(m[3]); } + let re4 = /^\s+(USE|ASM)\s+(\S+[.]\S+)/gm; + while (m = re4.exec(text)) { pushFile(m[2]); } + let re5 = /^\s*(import|embed)\s*"(.+?)";/gmi; + while (m = re5.exec(text)) { + if (m[1] == 'import') pushFile(m[2] + ".wiz"); + else pushFile(m[2]); + } + let re6 = /^\s*(import)\s*"(.+?)"/gmi; + while (m = re6.exec(text)) { pushFile(m[2]); } + let re7 = /^[!]src\s+"(.+?)"/gmi; + while (m = re7.exec(text)) { pushFile(m[1]); } + } + return files; +} + +function parseLinkDependencies(text: string, platformId: string, mainPath: string): string[] { + let files: string[] = []; + let m; + var dir = getFolderForPath(mainPath); + + function pushFile(fn: string) { + files.push(fn); + if (dir.length > 0 && dir != 'local') + files.push(dir + '/' + fn); + } + + if (!platformId.startsWith('verilog')) { + let re = /^\s*([;]|[/][/])#link\s+"(.+?)"/gm; + while (m = re.exec(text)) { pushFile(m[2]); } + } + return files; +} + +type FileData = string | Uint8Array; + +interface ResolvedFile { + path: string; // path as referenced (may include folder prefix) + filename: string; // stripped filename for the worker + data: FileData; + link: boolean; +} + +/** + * Try to resolve a file path by searching the source directory, + * the presets directory for the platform, and the current working directory. + */ +function resolveFileData(filePath: string, sourceDir: string, platform: string): FileData | null { + var searchPaths = []; + + // Try relative to source file directory + if (sourceDir) { + searchPaths.push(path.resolve(sourceDir, filePath)); + } + + // Try presets directory + var basePlatform = getBasePlatform(platform); + searchPaths.push(path.resolve('presets', basePlatform, filePath)); + + // Try current working directory + searchPaths.push(path.resolve(filePath)); + + for (var p of searchPaths) { + try { + if (fs.existsSync(p)) { + if (isProbablyBinary(filePath)) { + return new Uint8Array(fs.readFileSync(p)); + } else { + return fs.readFileSync(p, 'utf-8'); + } + } + } catch (e) { + // continue searching + } + } + return null; +} + +/** + * Strips the main file's folder prefix from a path (matching CodeProject.stripLocalPath). + */ +function stripLocalPath(filePath: string, mainPath: string): string { + var folder = getFolderForPath(mainPath); + if (folder != '' && filePath.startsWith(folder + '/')) { + filePath = filePath.substring(folder.length + 1); + } + return filePath; +} + +/** + * Recursively resolve all file dependencies for a source file. + */ +function resolveAllDependencies( + mainText: string, mainPath: string, platform: string, sourceDir: string +): ResolvedFile[] { + var resolved: ResolvedFile[] = []; + var seen = new Set(); + + function resolve(text: string, currentPath: string) { + var includes = parseIncludeDependencies(text, platform, currentPath); + var links = parseLinkDependencies(text, platform, currentPath); + var allPaths = includes.concat(links); + var linkSet = new Set(links); + + for (var depPath of allPaths) { + var filename = stripLocalPath(depPath, mainPath); + if (seen.has(filename)) continue; + seen.add(filename); + + var data = resolveFileData(depPath, sourceDir, platform); + if (data != null) { + resolved.push({ + path: depPath, + filename: filename, + data: data, + link: linkSet.has(depPath), + }); + // Recursively parse text files for their own dependencies + if (typeof data === 'string') { + resolve(data, depPath); + } + } + } + } + + resolve(mainText, mainPath); + return resolved; +} + +// TODO: refactor dependency parsing and tool selection into a common library +// shared between CodeProject (src/ide/project.ts) and testlib + +/** + * Select the appropriate tool for a filename based on platform architecture. + */ +export function getToolForFilename(fn: string, platform: string): string { + var params = PLATFORM_PARAMS[getBasePlatform(platform)]; + var arch = params && params.arch; + switch (arch) { + case 'z80': + case 'gbz80': + return getToolForFilename_z80(fn); + case '6502': + return getToolForFilename_6502(fn); + case '6809': + return getToolForFilename_6809(fn); + default: + return getToolForFilename_z80(fn); // fallback + } +} + /** * Compile an arbitrary source file path. + * Parses include/link/resource directives and loads dependent files. */ export async function compileSourceFile(tool: string, platform: string, filePath: string): Promise { await initialize(); var code = fs.readFileSync(filePath, 'utf-8'); var basename = filePath.split('/').pop(); + var sourceDir = path.dirname(path.resolve(filePath)); + + // Auto-detect tool from filename if not specified + if (!tool) { + tool = getToolForFilename(basename, platform); + } + + // Parse and resolve all dependencies + var deps = resolveAllDependencies(code, basename, platform, sourceDir); + + if (deps.length === 0) { + // No dependencies found, use simple single-file path + return compile({ + tool: tool, + platform: platform, + code: code, + path: basename, + }); + } + + // Build multi-file message with updates and buildsteps + var files: { path: string; data: string | Uint8Array }[] = []; + var depFilenames: string[] = []; + + // Main file first + files.push({ path: basename, data: code }); + + // Include files (non-link dependencies) + for (var dep of deps) { + if (!dep.link) { + files.push({ path: dep.filename, data: dep.data }); + depFilenames.push(dep.filename); + } + } + + // Build steps: main file first + var buildsteps: any[] = []; + buildsteps.push({ + path: basename, + files: [basename].concat(depFilenames), + platform: platform, + tool: tool, + mainfile: true, + }); + + // Link dependencies get their own build steps, with tool selected by extension + for (var dep of deps) { + if (dep.link && dep.data) { + files.push({ path: dep.filename, data: dep.data }); + buildsteps.push({ + path: dep.filename, + files: [dep.filename].concat(depFilenames), + platform: platform, + tool: getToolForFilename(dep.filename, platform), + }); + } + } + return compile({ tool: tool, platform: platform, - code: code, - path: basename, + files: files, + buildsteps: buildsteps, }); } diff --git a/src/worker/workerlib.ts b/src/worker/workerlib.ts index fd00def4..c41bdd41 100644 --- a/src/worker/workerlib.ts +++ b/src/worker/workerlib.ts @@ -1,6 +1,7 @@ // workerlib.ts - Node.js-friendly entry point for the worker build system // Re-exports core worker functionality without Web Worker onmessage/postMessage wiring +// FOR TESTING ONLY import * as fs from 'fs'; import * as path from 'path'; @@ -46,6 +47,14 @@ class Blob { */ export function setupNodeEnvironment() { // Basic globals expected by various parts of the worker system + // Some Emscripten-generated WASM modules check for __filename/__dirname + if (typeof globalThis.__filename === 'undefined') { + (globalThis as any).__filename = __filename; + } + if (typeof globalThis.__dirname === 'undefined') { + (globalThis as any).__dirname = __dirname; + // TODO: support require('path').dirname + } emglobal.window = emglobal; emglobal.exports = {}; emglobal.self = emglobal;