From 7cf8407571c0782e4e15aed46244bfebbfd1f5e7 Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 12:58:24 +0200 Subject: [PATCH 1/8] compiling ts --- package-lock.json | 12 +- packages/jco-transpile/.gitignore | 3 + packages/jco-transpile/.vscode/tasks.json | 20 + packages/jco-transpile/package.json | 4 + packages/jco-transpile/src/common.d.ts | 98 +-- packages/jco-transpile/src/common.js | 52 +- packages/jco-transpile/src/common.js.map | 1 + packages/jco-transpile/src/common.ts | 183 ++++++ packages/jco-transpile/src/constants.d.ts | 4 + packages/jco-transpile/src/constants.js | 2 +- packages/jco-transpile/src/constants.js.map | 1 + packages/jco-transpile/src/constants.ts | 17 + packages/jco-transpile/src/index.d.ts | 4 +- packages/jco-transpile/src/index.js | 1 + packages/jco-transpile/src/index.js.map | 1 + packages/jco-transpile/src/index.ts | 2 + packages/jco-transpile/src/opt.d.ts | 36 +- packages/jco-transpile/src/opt.js | 136 ++-- packages/jco-transpile/src/opt.js.map | 1 + packages/jco-transpile/src/opt.ts | 215 +++++++ packages/jco-transpile/src/transpile.d.ts | 146 ++--- packages/jco-transpile/src/transpile.js | 335 ++++------ packages/jco-transpile/src/transpile.js.map | 1 + packages/jco-transpile/src/transpile.ts | 676 ++++++++++++++++++++ packages/jco-transpile/src/typegen.d.ts | 83 ++- packages/jco-transpile/src/typegen.js | 42 +- packages/jco-transpile/src/typegen.js.map | 1 + packages/jco-transpile/src/typegen.ts | 115 ++++ packages/jco-transpile/tsconfig.json | 10 + packages/jco/src/api.d.ts | 14 +- packages/jco/src/api.d.ts.map | 2 +- 31 files changed, 1658 insertions(+), 560 deletions(-) create mode 100644 packages/jco-transpile/.gitignore create mode 100644 packages/jco-transpile/.vscode/tasks.json create mode 100644 packages/jco-transpile/src/common.js.map create mode 100644 packages/jco-transpile/src/common.ts create mode 100644 packages/jco-transpile/src/constants.d.ts create mode 100644 packages/jco-transpile/src/constants.js.map create mode 100644 packages/jco-transpile/src/constants.ts create mode 100644 packages/jco-transpile/src/index.js.map create mode 100644 packages/jco-transpile/src/index.ts create mode 100644 packages/jco-transpile/src/opt.js.map create mode 100644 packages/jco-transpile/src/opt.ts create mode 100644 packages/jco-transpile/src/transpile.js.map create mode 100644 packages/jco-transpile/src/transpile.ts create mode 100644 packages/jco-transpile/src/typegen.js.map create mode 100644 packages/jco-transpile/src/typegen.ts create mode 100644 packages/jco-transpile/tsconfig.json diff --git a/package-lock.json b/package-lock.json index 7d3b6dae5..98dd6e64f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2514,6 +2514,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@tsconfig/node20": { + "version": "20.1.6", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.6.tgz", + "integrity": "sha512-sz+Hqx9zwZDpZIV871WSbUzSqNIsXzghZydypnfgzPKLltVJfkINfUeTct31n/tTSa9ZE1ZOfKdRre1uHHquYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -6934,12 +6941,15 @@ }, "packages/jco-transpile": { "name": "@bytecodealliance/jco-transpile", - "version": "0.0.2", + "version": "0.0.3", "license": "(Apache-2.0 WITH LLVM-exception)", "dependencies": { "@bytecodealliance/preview2-shim": "^0.17.2", "chalk-template": "^1", "terser": "^5" + }, + "devDependencies": { + "@tsconfig/node20": "^20.1.6" } }, "packages/preview2-shim": { diff --git a/packages/jco-transpile/.gitignore b/packages/jco-transpile/.gitignore new file mode 100644 index 000000000..671574cbc --- /dev/null +++ b/packages/jco-transpile/.gitignore @@ -0,0 +1,3 @@ +!/.vscode/ + +*.tsbuildinfo \ No newline at end of file diff --git a/packages/jco-transpile/.vscode/tasks.json b/packages/jco-transpile/.vscode/tasks.json new file mode 100644 index 000000000..2e54725e2 --- /dev/null +++ b/packages/jco-transpile/.vscode/tasks.json @@ -0,0 +1,20 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "label": "tsc", + "script": "tsc", + "problemMatcher": ["$tsc"], + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "env": { + "NPM_TOKEN": "" + } + } + } + ] +} diff --git a/packages/jco-transpile/package.json b/packages/jco-transpile/package.json index d288ea741..15f4db6df 100644 --- a/packages/jco-transpile/package.json +++ b/packages/jco-transpile/package.json @@ -43,6 +43,7 @@ } }, "scripts": { + "tsc": "tsc --build", "lint": "eslint -c ../../eslint.config.mjs ./src/**/*.js ./test/**/*.js", "lint:fix": "npm run lint -- --fix", "test": "vitest run -c test/vitest.ts", @@ -53,5 +54,8 @@ "@bytecodealliance/preview2-shim": "^0.17.2", "chalk-template": "^1", "terser": "^5" + }, + "devDependencies": { + "@tsconfig/node20": "^20.1.6" } } diff --git a/packages/jco-transpile/src/common.d.ts b/packages/jco-transpile/src/common.d.ts index 7309b119f..63fa0627d 100644 --- a/packages/jco-transpile/src/common.d.ts +++ b/packages/jco-transpile/src/common.d.ts @@ -1,42 +1,56 @@ -export function setShowSpinner(val: boolean): void; -export function getShowSpinner(): boolean; - -interface SizeStrOpts { - significantDigits?: number; -} -export function sizeStr(num: any, opts?: SizeStrOpts): string; - -export function fixedDigitDisplay(num: number, maxChars: number): string; - -type CellAlignment = 'left' | 'right'; -export function table(data: any[][], cellAlignment?: CellAlignment[]): string; - -export function getTmpDir(): Promise; - -export function spawnIOTmp( - cmd: any, - input: any, - args: any -): Promise>; - -export const isWindows: boolean; - -export function readFile( - file: string, - encoding: string -): Promise>; - -export function spawnIOTmp( - cmd: string, - input: Buffer | string | any, - args: string[] -): Promise; - -export function byteLengthLEB128(val: number): number; - -/** Bytes that belong in one or more files */ -type FileBytes = { - [filename: string]: Uint8Array; -}; - -//# sourceMappingURL=common.d.ts.map +/** Detect a windows environment */ +export declare const isWindows: boolean; +/** + * Convert a given number into the string that would appropriately represent it, + * in either KiB or MiB. + * + * @param {number} num + */ +export declare function sizeStr(num: any, opts: any): string; +/** + * Display a given number with a fixed number of digits + * + * @param {number} num - number to display + * @param {number} maxChars - character limit + * @returns {string} The number, displayed + */ +export declare function fixedDigitDisplay(num: any, maxChars: any): string; +/** + * Tabulate an array of data for display as a table + * + * @param {any[][]} data - row-major array of data + * @param {string[]} align - preferred alignment of cells + * @returns {string} Tabulated data + */ +export declare function table(data: any, cellAlignment?: never[]): string; +/** + * Securely creates a temporary directory and returns its path. + * + * The new directory is created using `fsPromises.mkdtemp()`. + * + * @return {Promise} A Promise that resolves to the created temporary directory + */ +export declare function getTmpDir(): Promise; +/** + * Read a file, throwing and error when a file coudl not be read + * + * @param {string} file - file to read + * @param {string} encoding - encoding of the file + */ +export declare function readFile(file: any, encoding: any): Promise>; +/** + * Spawn an command that modified a WebAssembly component as a subprocess, + * with a temporary (scratch) directory for performing work in. + * + * @param {string} cmd - the command to run + * @param {string} input - wasm input to write to a temporary input file + * @param {string[]} args + */ +export declare function runWASMTransformProgram(cmd: any, input: any, args: any): Promise>; +/** + * Counts the byte length for the LEB128 encoding of a number. + * + * @param {number} val + * @returns {number} + */ +export declare function byteLengthLEB128(val: any): number; diff --git a/packages/jco-transpile/src/common.js b/packages/jco-transpile/src/common.js index f3feb7f8e..9cbf04064 100644 --- a/packages/jco-transpile/src/common.js +++ b/packages/jco-transpile/src/common.js @@ -1,25 +1,15 @@ import { normalize, resolve, sep } from 'node:path'; import { tmpdir } from 'node:os'; -import { - readFile as fsReadFile, - writeFile, - rm, - mkdtemp, -} from 'node:fs/promises'; +import { readFile as fsReadFile, writeFile, rm, mkdtemp, } from 'node:fs/promises'; import { spawn } from 'node:child_process'; import { platform, argv0 } from 'node:process'; - import c from 'chalk-template'; - /** Detect a windows environment */ export const isWindows = platform === 'win32'; - /** Default number of significant figures to use */ const DEFAULT_SIGNIFICANT_DIGITS = 4; - /** Nubmer of bytes in a kilobyte */ const BYTES_MAGNITUDE = 1024; - /** * Convert a given number into the string that would appropriately represent it, * in either KiB or MiB. @@ -27,8 +17,7 @@ const BYTES_MAGNITUDE = 1024; * @param {number} num */ export function sizeStr(num, opts) { - const significantDigits = - opts?.significantDigits ?? DEFAULT_SIGNIFICANT_DIGITS; + const significantDigits = opts?.significantDigits ?? DEFAULT_SIGNIFICANT_DIGITS; num /= BYTES_MAGNITUDE; if (num < 1000) { return `${fixedDigitDisplay(num, significantDigits)} KiB`; @@ -41,11 +30,8 @@ export function sizeStr(num, opts) { if (num < 1000) { return `${fixedDigitDisplay(num, significantDigits)} GiB`; } - throw new Error( - 'unexpected magnitude while sizing string, greater than 1000 GiB' - ); + throw new Error('unexpected magnitude while sizing string, greater than 1000 GiB'); } - /** * Display a given number with a fixed number of digits * @@ -58,7 +44,8 @@ export function fixedDigitDisplay(num, maxChars) { let str; if (significantDigits >= maxChars - 1) { str = String(Math.round(num)); - } else { + } + else { const decimalPlaces = maxChars - significantDigits - 1; const rounding = 10 ** decimalPlaces; str = String(Math.round(num * rounding) / rounding); @@ -68,7 +55,6 @@ export function fixedDigitDisplay(num, maxChars) { } return ' '.repeat(maxChars - str.length) + str; } - /** * Tabulate an array of data for display as a table * @@ -80,17 +66,15 @@ export function table(data, cellAlignment = []) { if (data.length === 0) { return ''; } - const colLens = data.reduce( - (maxLens, cur) => maxLens.map((len, i) => Math.max(len, cur[i].length)), - data[0].map((cell) => cell.length) - ); + const colLens = data.reduce((maxLens, cur) => maxLens.map((len, i) => Math.max(len, cur[i].length)), data[0].map((cell) => cell.length)); let outTable = ''; for (const row of data) { for (const [i, cell] of row.entries()) { const prefix = ' '.repeat(colLens[i] - cell.length); if (cellAlignment[i] === 'right') { outTable += prefix + cell; - } else { + } + else { outTable += cell + prefix; } } @@ -98,7 +82,6 @@ export function table(data, cellAlignment = []) { } return outTable; } - /** * Securely creates a temporary directory and returns its path. * @@ -109,7 +92,6 @@ export function table(data, cellAlignment = []) { export async function getTmpDir() { return await mkdtemp(normalize(tmpdir() + sep)); } - /** * Read a file, throwing and error when a file coudl not be read * @@ -119,11 +101,11 @@ export async function getTmpDir() { export async function readFile(file, encoding) { try { return await fsReadFile(file, encoding); - } catch { - throw c`Unable to read file {bold ${file}}`; + } + catch { + throw c `Unable to read file {bold ${file}}`; } } - /** * Spawn an command that modified a WebAssembly component as a subprocess, * with a temporary (scratch) directory for performing work in. @@ -137,13 +119,10 @@ export async function runWASMTransformProgram(cmd, input, args) { try { const inFile = resolve(tmpDir, 'in.wasm'); let outFile = resolve(tmpDir, 'out.wasm'); - await writeFile(inFile, input); - const cp = spawn(argv0, [cmd, inFile, ...args, outFile], { stdio: 'pipe', }); - let stderr = ''; const p = new Promise((resolve, reject) => { cp.stderr.on('data', (data) => (stderr += data.toString())); @@ -153,20 +132,20 @@ export async function runWASMTransformProgram(cmd, input, args) { cp.on('exit', (code) => { if (code === 0) { resolve(); - } else { + } + else { reject(stderr); } }); }); - await p; var output = await fsReadFile(outFile); return output; - } finally { + } + finally { await rm(tmpDir, { recursive: true }); } } - /** * Counts the byte length for the LEB128 encoding of a number. * @@ -181,3 +160,4 @@ export function byteLengthLEB128(val) { } while (val !== 0); return len; } +//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/common.js.map b/packages/jco-transpile/src/common.js.map new file mode 100644 index 000000000..ed8ba0288 --- /dev/null +++ b/packages/jco-transpile/src/common.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/common.ts b/packages/jco-transpile/src/common.ts new file mode 100644 index 000000000..f3feb7f8e --- /dev/null +++ b/packages/jco-transpile/src/common.ts @@ -0,0 +1,183 @@ +import { normalize, resolve, sep } from 'node:path'; +import { tmpdir } from 'node:os'; +import { + readFile as fsReadFile, + writeFile, + rm, + mkdtemp, +} from 'node:fs/promises'; +import { spawn } from 'node:child_process'; +import { platform, argv0 } from 'node:process'; + +import c from 'chalk-template'; + +/** Detect a windows environment */ +export const isWindows = platform === 'win32'; + +/** Default number of significant figures to use */ +const DEFAULT_SIGNIFICANT_DIGITS = 4; + +/** Nubmer of bytes in a kilobyte */ +const BYTES_MAGNITUDE = 1024; + +/** + * Convert a given number into the string that would appropriately represent it, + * in either KiB or MiB. + * + * @param {number} num + */ +export function sizeStr(num, opts) { + const significantDigits = + opts?.significantDigits ?? DEFAULT_SIGNIFICANT_DIGITS; + num /= BYTES_MAGNITUDE; + if (num < 1000) { + return `${fixedDigitDisplay(num, significantDigits)} KiB`; + } + num /= BYTES_MAGNITUDE; + if (num < 1000) { + return `${fixedDigitDisplay(num, significantDigits)} MiB`; + } + num /= BYTES_MAGNITUDE; + if (num < 1000) { + return `${fixedDigitDisplay(num, significantDigits)} GiB`; + } + throw new Error( + 'unexpected magnitude while sizing string, greater than 1000 GiB' + ); +} + +/** + * Display a given number with a fixed number of digits + * + * @param {number} num - number to display + * @param {number} maxChars - character limit + * @returns {string} The number, displayed + */ +export function fixedDigitDisplay(num, maxChars) { + const significantDigits = String(num).split('.')[0].length; + let str; + if (significantDigits >= maxChars - 1) { + str = String(Math.round(num)); + } else { + const decimalPlaces = maxChars - significantDigits - 1; + const rounding = 10 ** decimalPlaces; + str = String(Math.round(num * rounding) / rounding); + } + if (maxChars - str.length < 0) { + return str; + } + return ' '.repeat(maxChars - str.length) + str; +} + +/** + * Tabulate an array of data for display as a table + * + * @param {any[][]} data - row-major array of data + * @param {string[]} align - preferred alignment of cells + * @returns {string} Tabulated data + */ +export function table(data, cellAlignment = []) { + if (data.length === 0) { + return ''; + } + const colLens = data.reduce( + (maxLens, cur) => maxLens.map((len, i) => Math.max(len, cur[i].length)), + data[0].map((cell) => cell.length) + ); + let outTable = ''; + for (const row of data) { + for (const [i, cell] of row.entries()) { + const prefix = ' '.repeat(colLens[i] - cell.length); + if (cellAlignment[i] === 'right') { + outTable += prefix + cell; + } else { + outTable += cell + prefix; + } + } + outTable += '\n'; + } + return outTable; +} + +/** + * Securely creates a temporary directory and returns its path. + * + * The new directory is created using `fsPromises.mkdtemp()`. + * + * @return {Promise} A Promise that resolves to the created temporary directory + */ +export async function getTmpDir() { + return await mkdtemp(normalize(tmpdir() + sep)); +} + +/** + * Read a file, throwing and error when a file coudl not be read + * + * @param {string} file - file to read + * @param {string} encoding - encoding of the file + */ +export async function readFile(file, encoding) { + try { + return await fsReadFile(file, encoding); + } catch { + throw c`Unable to read file {bold ${file}}`; + } +} + +/** + * Spawn an command that modified a WebAssembly component as a subprocess, + * with a temporary (scratch) directory for performing work in. + * + * @param {string} cmd - the command to run + * @param {string} input - wasm input to write to a temporary input file + * @param {string[]} args + */ +export async function runWASMTransformProgram(cmd, input, args) { + const tmpDir = await getTmpDir(); + try { + const inFile = resolve(tmpDir, 'in.wasm'); + let outFile = resolve(tmpDir, 'out.wasm'); + + await writeFile(inFile, input); + + const cp = spawn(argv0, [cmd, inFile, ...args, outFile], { + stdio: 'pipe', + }); + + let stderr = ''; + const p = new Promise((resolve, reject) => { + cp.stderr.on('data', (data) => (stderr += data.toString())); + cp.on('error', (e) => { + reject(e); + }); + cp.on('exit', (code) => { + if (code === 0) { + resolve(); + } else { + reject(stderr); + } + }); + }); + + await p; + var output = await fsReadFile(outFile); + return output; + } finally { + await rm(tmpDir, { recursive: true }); + } +} + +/** + * Counts the byte length for the LEB128 encoding of a number. + * + * @param {number} val + * @returns {number} + */ +export function byteLengthLEB128(val) { + let len = 0; + do { + val >>>= 7; + len++; + } while (val !== 0); + return len; +} diff --git a/packages/jco-transpile/src/constants.d.ts b/packages/jco-transpile/src/constants.d.ts new file mode 100644 index 000000000..c8201b64b --- /dev/null +++ b/packages/jco-transpile/src/constants.d.ts @@ -0,0 +1,4 @@ +/** WASI imports that should be considered asynchronous when present */ +export declare const ASYNC_WASI_IMPORTS: string[]; +/** WASI exports that should be considered asynchronous when present */ +export declare const ASYNC_WASI_EXPORTS: string[]; diff --git a/packages/jco-transpile/src/constants.js b/packages/jco-transpile/src/constants.js index cd23eeb6f..eddf170d1 100644 --- a/packages/jco-transpile/src/constants.js +++ b/packages/jco-transpile/src/constants.js @@ -9,9 +9,9 @@ export const ASYNC_WASI_IMPORTS = [ 'wasi:io/streams#[method]output-stream.blocking-write-zeroes-and-flush', 'wasi:io/streams#[method]output-stream.blocking-splice', ]; - /** WASI exports that should be considered asynchronous when present */ export const ASYNC_WASI_EXPORTS = [ 'wasi:cli/run#run', 'wasi:http/incoming-handler#handle', ]; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/constants.js.map b/packages/jco-transpile/src/constants.js.map new file mode 100644 index 000000000..19e98d606 --- /dev/null +++ b/packages/jco-transpile/src/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["constants.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,mBAAmB;IACnB,qCAAqC;IACrC,oDAAoD;IACpD,oDAAoD;IACpD,sDAAsD;IACtD,gEAAgE;IAChE,uEAAuE;IACvE,uDAAuD;CAC1D,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,kBAAkB;IAClB,mCAAmC;CACtC,CAAC"} \ No newline at end of file diff --git a/packages/jco-transpile/src/constants.ts b/packages/jco-transpile/src/constants.ts new file mode 100644 index 000000000..cd23eeb6f --- /dev/null +++ b/packages/jco-transpile/src/constants.ts @@ -0,0 +1,17 @@ +/** WASI imports that should be considered asynchronous when present */ +export const ASYNC_WASI_IMPORTS = [ + 'wasi:io/poll#poll', + 'wasi:io/poll#[method]pollable.block', + 'wasi:io/streams#[method]input-stream.blocking-read', + 'wasi:io/streams#[method]input-stream.blocking-skip', + 'wasi:io/streams#[method]output-stream.blocking-flush', + 'wasi:io/streams#[method]output-stream.blocking-write-and-flush', + 'wasi:io/streams#[method]output-stream.blocking-write-zeroes-and-flush', + 'wasi:io/streams#[method]output-stream.blocking-splice', +]; + +/** WASI exports that should be considered asynchronous when present */ +export const ASYNC_WASI_EXPORTS = [ + 'wasi:cli/run#run', + 'wasi:http/incoming-handler#handle', +]; diff --git a/packages/jco-transpile/src/index.d.ts b/packages/jco-transpile/src/index.d.ts index c41d746ea..1bfef8fde 100644 --- a/packages/jco-transpile/src/index.d.ts +++ b/packages/jco-transpile/src/index.d.ts @@ -1,2 +1,2 @@ -export type { generateGuestTypes, generateHostTypes } from './typegen.js'; -export type { transpile } from './transpile.js'; +export { generateHostTypes, generateGuestTypes } from './typegen.js'; +export { transpile } from './transpile.js'; diff --git a/packages/jco-transpile/src/index.js b/packages/jco-transpile/src/index.js index 1bfef8fde..d30ff8e6f 100644 --- a/packages/jco-transpile/src/index.js +++ b/packages/jco-transpile/src/index.js @@ -1,2 +1,3 @@ export { generateHostTypes, generateGuestTypes } from './typegen.js'; export { transpile } from './transpile.js'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/index.js.map b/packages/jco-transpile/src/index.js.map new file mode 100644 index 000000000..6bd3c27f0 --- /dev/null +++ b/packages/jco-transpile/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"} \ No newline at end of file diff --git a/packages/jco-transpile/src/index.ts b/packages/jco-transpile/src/index.ts new file mode 100644 index 000000000..1bfef8fde --- /dev/null +++ b/packages/jco-transpile/src/index.ts @@ -0,0 +1,2 @@ +export { generateHostTypes, generateGuestTypes } from './typegen.js'; +export { transpile } from './transpile.js'; diff --git a/packages/jco-transpile/src/opt.d.ts b/packages/jco-transpile/src/opt.d.ts index 11743da5a..cac9869e4 100644 --- a/packages/jco-transpile/src/opt.d.ts +++ b/packages/jco-transpile/src/opt.d.ts @@ -1,11 +1,25 @@ -type OptimizeOptions = { - quiet: boolean; - asyncify?: boolean; - optArgs?: string[]; - noVerify?: boolean; -}; - -type OptimizeResult = { - component: Uint8Array; - compressionInfo: { beforeBytes: number; afterBytes: number }[]; -}; +/** + * @typedef {{ + * quiet: boolean, + * asyncify?: boolean, + * optArgs?: string[], + * noVerify?: boolean + * }} OptimizeOptions + */ +/** + * @typedef {{ + * component: Uint8Array, + * compressionInfo: { beforeBytes: number, afterBytes: number }[], + * }} OptimizeResult + */ +/** + * Perform optimization for a given component + * + * @param {Uint8Array} componentBytes + * @param {OptimizeOptions} [opts] + * @returns {Promise} + */ +export declare function runOptimizeComponent(componentBytes: any, opts: any): Promise<{ + component: Uint8Array; + compressionInfo: any; +}>; diff --git a/packages/jco-transpile/src/opt.js b/packages/jco-transpile/src/opt.js index 9d4849381..b7e5a34e6 100644 --- a/packages/jco-transpile/src/opt.js +++ b/packages/jco-transpile/src/opt.js @@ -1,10 +1,7 @@ import { fileURLToPath } from 'node:url'; - import { byteLengthLEB128, runWASMTransformProgram } from './common.js'; - import { $init, tools } from '../vendor/wasm-tools.js'; const { metadataShow, print } = tools; - /** * @typedef {{ * quiet: boolean, @@ -13,14 +10,12 @@ const { metadataShow, print } = tools; * noVerify?: boolean * }} OptimizeOptions */ - /** * @typedef {{ * component: Uint8Array, * compressionInfo: { beforeBytes: number, afterBytes: number }[], * }} OptimizeResult */ - /** * Perform optimization for a given component * @@ -30,54 +25,38 @@ const { metadataShow, print } = tools; */ export async function runOptimizeComponent(componentBytes, opts) { await $init; - let componentMetadata = metadataShow(componentBytes); componentMetadata.forEach((metadata, index) => { metadata.index = index; const size = metadata.range[1] - metadata.range[0]; metadata.prevLEBLen = byteLengthLEB128(size); }); - - const coreModules = componentMetadata.filter( - ({ metaType }) => metaType.tag === 'module' - ); - + const coreModules = componentMetadata.filter(({ metaType }) => metaType.tag === 'module'); // Gather the options for wasm-opt. optionally, adding the asyncify flag const args = opts?.optArgs ? [...opts.optArgs] : [ - '-Oz', - '--low-memory-unused', - '--enable-bulk-memory', - '--strip-debug', - ]; + '-Oz', + '--low-memory-unused', + '--enable-bulk-memory', + '--strip-debug', + ]; if (opts?.asyncify) { args.push('--asyncify'); } - // process core Wasm modules with wasm-opt - await Promise.all( - coreModules.map(async (metadata) => { - if (metadata.metaType.tag === 'module') { - // store the wasm-opt processed module in the metadata - metadata.optimized = await runWasmOptCLI( - componentBytes.subarray( - metadata.range[0], - metadata.range[1] - ), - args - ); - - // compute the size change, including the change to - // the LEB128 encoding of the size change - const prevModuleSize = metadata.range[1] - metadata.range[0]; - const newModuleSize = metadata.optimized.byteLength; - metadata.newLEBLen = byteLengthLEB128(newModuleSize); - metadata.sizeChange = newModuleSize - prevModuleSize; - } - }) - ); - + await Promise.all(coreModules.map(async (metadata) => { + if (metadata.metaType.tag === 'module') { + // store the wasm-opt processed module in the metadata + metadata.optimized = await runWasmOptCLI(componentBytes.subarray(metadata.range[0], metadata.range[1]), args); + // compute the size change, including the change to + // the LEB128 encoding of the size change + const prevModuleSize = metadata.range[1] - metadata.range[0]; + const newModuleSize = metadata.optimized.byteLength; + metadata.newLEBLen = byteLengthLEB128(newModuleSize); + metadata.sizeChange = newModuleSize - prevModuleSize; + } + })); // organize components in modules into tree parent and children const nodes = componentMetadata.slice(1); const getChildren = (parentIndex) => { @@ -88,47 +67,29 @@ export async function runOptimizeComponent(componentBytes, opts) { nodes.splice(i, 1); // remove from nodes i--; metadata.children = getChildren(metadata.index); - metadata.sizeChange = metadata.children.reduce( - (total, { prevLEBLen, newLEBLen, sizeChange }) => { - return sizeChange - ? total + sizeChange + newLEBLen - prevLEBLen - : total; - }, - metadata.sizeChange || 0 - ); + metadata.sizeChange = metadata.children.reduce((total, { prevLEBLen, newLEBLen, sizeChange }) => { + return sizeChange + ? total + sizeChange + newLEBLen - prevLEBLen + : total; + }, metadata.sizeChange || 0); const prevSize = metadata.range[1] - metadata.range[0]; - metadata.newLEBLen = byteLengthLEB128( - prevSize + metadata.sizeChange - ); + metadata.newLEBLen = byteLengthLEB128(prevSize + metadata.sizeChange); children.push(metadata); } } return children; }; const componentTree = getChildren(0); - // compute the total size change in the component binary - const sizeChange = componentTree.reduce( - (total, { prevLEBLen, newLEBLen, sizeChange }) => { - return total + (sizeChange || 0) + newLEBLen - prevLEBLen; - }, - 0 - ); - - let outComponentBytes = new Uint8Array( - componentBytes.byteLength + sizeChange - ); - let nextReadPos = 0, - nextWritePos = 0; - + const sizeChange = componentTree.reduce((total, { prevLEBLen, newLEBLen, sizeChange }) => { + return total + (sizeChange || 0) + newLEBLen - prevLEBLen; + }, 0); + let outComponentBytes = new Uint8Array(componentBytes.byteLength + sizeChange); + let nextReadPos = 0, nextWritePos = 0; const write = ({ prevLEBLen, range, optimized, children, sizeChange }) => { // write from the last read to the LEB byte start - outComponentBytes.set( - componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), - nextWritePos - ); + outComponentBytes.set(componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), nextWritePos); nextWritePos += range[0] - prevLEBLen - nextReadPos; - // write the new LEB bytes let val = range[1] - range[0] + sizeChange; do { @@ -136,44 +97,37 @@ export async function runOptimizeComponent(componentBytes, opts) { val >>>= 7; outComponentBytes[nextWritePos++] = val === 0 ? byte : byte | 0x80; } while (val !== 0); - if (optimized) { // write the core module outComponentBytes.set(optimized, nextWritePos); nextReadPos = range[1]; nextWritePos += optimized.byteLength; - } else if (children.length > 0) { + } + else if (children.length > 0) { // write child components / modules nextReadPos = range[0]; children.forEach(write); - } else { + } + else { // write component - outComponentBytes.set( - componentBytes.subarray(range[0], range[1]), - nextWritePos - ); + outComponentBytes.set(componentBytes.subarray(range[0], range[1]), nextWritePos); nextReadPos = range[1]; nextWritePos += range[1] - range[0]; } }; - // write each top-level component / module componentTree.forEach(write); - // write remaining outComponentBytes.set(componentBytes.subarray(nextReadPos), nextWritePos); - // verify it still parses ok if (!opts?.noVerify) { try { print(outComponentBytes); - } catch (e) { - throw new Error( - `Internal error performing optimization.\n${e.message}` - ); + } + catch (e) { + throw new Error(`Internal error performing optimization.\n${e.message}`); } } - return { component: outComponentBytes, compressionInfo: coreModules.map(({ range, optimized }) => ({ @@ -182,7 +136,6 @@ export async function runOptimizeComponent(componentBytes, opts) { })), }; } - /** * Run wasm-opt on a given component * @@ -191,25 +144,22 @@ export async function runOptimizeComponent(componentBytes, opts) { * @returns {Promise} */ async function runWasmOptCLI(source, args) { - const wasmOptPath = fileURLToPath( - import.meta.resolve('binaryen/bin/wasm-opt') - ); - + const wasmOptPath = fileURLToPath(import.meta.resolve('binaryen/bin/wasm-opt')); try { return await runWASMTransformProgram(wasmOptPath, source, [ ...args, '-o', ]); - } catch (e) { + } + catch (e) { if (e.toString().includes('BasicBlock requested')) { return wasmOpt(source, args); } throw e; } } - // see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 if (typeof __vite_ssr_import_meta__ !== 'undefined') { - __vite_ssr_import_meta__.resolve = (path) => - 'file://' + globalCreateRequire(import.meta.url).resolve(path); + __vite_ssr_import_meta__.resolve = (path) => 'file://' + globalCreateRequire(import.meta.url).resolve(path); } +//# sourceMappingURL=opt.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.js.map b/packages/jco-transpile/src/opt.js.map new file mode 100644 index 000000000..ceeb89037 --- /dev/null +++ b/packages/jco-transpile/src/opt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.ts b/packages/jco-transpile/src/opt.ts new file mode 100644 index 000000000..9d4849381 --- /dev/null +++ b/packages/jco-transpile/src/opt.ts @@ -0,0 +1,215 @@ +import { fileURLToPath } from 'node:url'; + +import { byteLengthLEB128, runWASMTransformProgram } from './common.js'; + +import { $init, tools } from '../vendor/wasm-tools.js'; +const { metadataShow, print } = tools; + +/** + * @typedef {{ + * quiet: boolean, + * asyncify?: boolean, + * optArgs?: string[], + * noVerify?: boolean + * }} OptimizeOptions + */ + +/** + * @typedef {{ + * component: Uint8Array, + * compressionInfo: { beforeBytes: number, afterBytes: number }[], + * }} OptimizeResult + */ + +/** + * Perform optimization for a given component + * + * @param {Uint8Array} componentBytes + * @param {OptimizeOptions} [opts] + * @returns {Promise} + */ +export async function runOptimizeComponent(componentBytes, opts) { + await $init; + + let componentMetadata = metadataShow(componentBytes); + componentMetadata.forEach((metadata, index) => { + metadata.index = index; + const size = metadata.range[1] - metadata.range[0]; + metadata.prevLEBLen = byteLengthLEB128(size); + }); + + const coreModules = componentMetadata.filter( + ({ metaType }) => metaType.tag === 'module' + ); + + // Gather the options for wasm-opt. optionally, adding the asyncify flag + const args = opts?.optArgs + ? [...opts.optArgs] + : [ + '-Oz', + '--low-memory-unused', + '--enable-bulk-memory', + '--strip-debug', + ]; + if (opts?.asyncify) { + args.push('--asyncify'); + } + + // process core Wasm modules with wasm-opt + await Promise.all( + coreModules.map(async (metadata) => { + if (metadata.metaType.tag === 'module') { + // store the wasm-opt processed module in the metadata + metadata.optimized = await runWasmOptCLI( + componentBytes.subarray( + metadata.range[0], + metadata.range[1] + ), + args + ); + + // compute the size change, including the change to + // the LEB128 encoding of the size change + const prevModuleSize = metadata.range[1] - metadata.range[0]; + const newModuleSize = metadata.optimized.byteLength; + metadata.newLEBLen = byteLengthLEB128(newModuleSize); + metadata.sizeChange = newModuleSize - prevModuleSize; + } + }) + ); + + // organize components in modules into tree parent and children + const nodes = componentMetadata.slice(1); + const getChildren = (parentIndex) => { + const children = []; + for (let i = 0; i < nodes.length; i++) { + const metadata = nodes[i]; + if (metadata.parentIndex === parentIndex) { + nodes.splice(i, 1); // remove from nodes + i--; + metadata.children = getChildren(metadata.index); + metadata.sizeChange = metadata.children.reduce( + (total, { prevLEBLen, newLEBLen, sizeChange }) => { + return sizeChange + ? total + sizeChange + newLEBLen - prevLEBLen + : total; + }, + metadata.sizeChange || 0 + ); + const prevSize = metadata.range[1] - metadata.range[0]; + metadata.newLEBLen = byteLengthLEB128( + prevSize + metadata.sizeChange + ); + children.push(metadata); + } + } + return children; + }; + const componentTree = getChildren(0); + + // compute the total size change in the component binary + const sizeChange = componentTree.reduce( + (total, { prevLEBLen, newLEBLen, sizeChange }) => { + return total + (sizeChange || 0) + newLEBLen - prevLEBLen; + }, + 0 + ); + + let outComponentBytes = new Uint8Array( + componentBytes.byteLength + sizeChange + ); + let nextReadPos = 0, + nextWritePos = 0; + + const write = ({ prevLEBLen, range, optimized, children, sizeChange }) => { + // write from the last read to the LEB byte start + outComponentBytes.set( + componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), + nextWritePos + ); + nextWritePos += range[0] - prevLEBLen - nextReadPos; + + // write the new LEB bytes + let val = range[1] - range[0] + sizeChange; + do { + const byte = val & 0x7f; + val >>>= 7; + outComponentBytes[nextWritePos++] = val === 0 ? byte : byte | 0x80; + } while (val !== 0); + + if (optimized) { + // write the core module + outComponentBytes.set(optimized, nextWritePos); + nextReadPos = range[1]; + nextWritePos += optimized.byteLength; + } else if (children.length > 0) { + // write child components / modules + nextReadPos = range[0]; + children.forEach(write); + } else { + // write component + outComponentBytes.set( + componentBytes.subarray(range[0], range[1]), + nextWritePos + ); + nextReadPos = range[1]; + nextWritePos += range[1] - range[0]; + } + }; + + // write each top-level component / module + componentTree.forEach(write); + + // write remaining + outComponentBytes.set(componentBytes.subarray(nextReadPos), nextWritePos); + + // verify it still parses ok + if (!opts?.noVerify) { + try { + print(outComponentBytes); + } catch (e) { + throw new Error( + `Internal error performing optimization.\n${e.message}` + ); + } + } + + return { + component: outComponentBytes, + compressionInfo: coreModules.map(({ range, optimized }) => ({ + beforeBytes: range[1] - range[0], + afterBytes: optimized?.byteLength, + })), + }; +} + +/** + * Run wasm-opt on a given component + * + * @param {Uint8Array} source + * @param {Array} args + * @returns {Promise} + */ +async function runWasmOptCLI(source, args) { + const wasmOptPath = fileURLToPath( + import.meta.resolve('binaryen/bin/wasm-opt') + ); + + try { + return await runWASMTransformProgram(wasmOptPath, source, [ + ...args, + '-o', + ]); + } catch (e) { + if (e.toString().includes('BasicBlock requested')) { + return wasmOpt(source, args); + } + throw e; + } +} + +// see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 +if (typeof __vite_ssr_import_meta__ !== 'undefined') { + __vite_ssr_import_meta__.resolve = (path) => + 'file://' + globalCreateRequire(import.meta.url).resolve(path); +} diff --git a/packages/jco-transpile/src/transpile.d.ts b/packages/jco-transpile/src/transpile.d.ts index a5cfabb8f..00affc991 100644 --- a/packages/jco-transpile/src/transpile.d.ts +++ b/packages/jco-transpile/src/transpile.d.ts @@ -1,97 +1,63 @@ -import { Command } from 'commander'; - -type TypeGenerationOptions = { - name?: string; - worldName?: string; - instantiation?: 'async' | 'sync'; - tlaCompat?: boolean; - asyncMode?: string; - asyncImports?: string[]; - asyncExports?: string[]; - outDir?: string; - features?: string[] | 'all'; - allFeatures?: boolean; - asyncWasiImports?: boolean; - asyncWasiExports?: boolean; - guest?: boolean; -}; - -export function types( - witPath: string, - opts?: TypeGenerationOptions -): Promise; - -export function guestTypes( - witPath: string, - opts: TypeGenerationOptions -): Promise; - -/** Bytes that belong in one or more files */ -type FileBytes = { - [filename: string]: Uint8Array; -}; - /** - * @param {string} witPath - * @param {{ - * name?: string, - * worldName?: string, + * @typedef {{ + * name: string, * instantiation?: 'async' | 'sync', - * tlaCompat?: bool, + * importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized', + * map?: Record, * asyncMode?: string, * asyncImports?: string[], * asyncExports?: string[], + * asyncWasiImports?: string[], + * asyncWasiExports?: string[], + * validLiftingOptimization?: bool, + * tracing?: bool, + * nodejsCompat?: bool, + * tlaCompat?: bool, + * base64Cutoff?: bool, + * js?: bool, + * minify?: bool, + * optimize?: bool, + * namespacedExports?: bool, * outDir?: string, - * features?: string[] | 'all', - * guest?: bool, - * }} opts - * @returns {Promise<{ [filename: string]: Uint8Array }>} + * multiMemory?: bool, + * experimentalIdlImports?: bool, + * optArgs?: string[], + * }} TranspilationOptions + + /** @typedef {{ + * files: { + * [filename: string]: Uint8Array; + * }; + * imports: string[]; + * exports: [string, 'function' | 'instance'][]; + * }} TranspilationResult */ -export function typesComponent( - witPath: string, - opts: TypeGenerationOptions -): Promise; - -type TranspilationOptions = { - name: string; - instantiation?: 'async' | 'sync'; - importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized'; - map?: Record; - asyncMode?: string; - asyncImports?: string[]; - asyncExports?: string[]; - asyncWasiImports?: string[]; - asyncWasiExports?: string[]; - validLiftingOptimization?: boolean; - tracing?: boolean; - nodejsCompat?: boolean; - tlaCompat?: boolean; - base64Cutoff?: boolean; - js?: boolean; - minify?: boolean; - optimize?: boolean; - namespacedExports?: boolean; - outDir?: string; - multiMemory?: boolean; - experimentalIdlImports?: boolean; - optArgs?: string[]; -}; - -export function transpile( - componentPath: string, - opts?: TranspilationOptions, - program?: Command -): Promise; - -type TranspilationResult = { - files: FileBytes; - imports: string[]; - exports: [string, 'function' | 'instance'][]; -}; - -export function runTranspileComponent( - component: Uint8Array, - opts?: TranspilationOptions, -): Promise; - -//# sourceMappingURL=transpile.d.ts.map +/** + * Transpile a provided WebAssembly component to an ES module + * that can be run in JS environments + * + * @param {Buffer | string | URL | FileHandle} componentPath + * @param {TranspilationOptions} [opts] + * @returns {Promise} + */ +export declare function transpile(componentPath: any, opts: any): Promise<{ + files: { + [k: string]: any; + }; + imports: any; + exports: any; +}>; +/** + * Perform transpilation, using the transpiled js-component-bindgen Rust crate. + * + * @param {Uint8Array} component + * @param {TranspilationOptions} [opts] + * @returns {Promise} + */ +export declare function runTranspileComponent(component: any, opts?: {}): Promise<{ + files: { + [k: string]: any; + }; + imports: any; + exports: any; +}>; diff --git a/packages/jco-transpile/src/transpile.js b/packages/jco-transpile/src/transpile.js index f233a6e35..26f906099 100644 --- a/packages/jco-transpile/src/transpile.js +++ b/packages/jco-transpile/src/transpile.js @@ -1,24 +1,13 @@ import { Buffer } from 'node:buffer'; import { extname, basename, resolve } from 'node:path'; - import { minify } from 'terser'; import { fileURLToPath } from 'url'; - import { runOptimizeComponent } from './opt.js'; import { readFile, runWASMTransformProgram, isWindows } from './common.js'; import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; - -import { - $init as $initBindgenComponent, - generate, -} from '../vendor/js-component-bindgen-component.js'; - -import { - $init as $initWasmToolsComponent, - tools, -} from '../vendor/wasm-tools.js'; +import { $init as $initBindgenComponent, generate, } from '../vendor/js-component-bindgen-component.js'; +import { $init as $initWasmToolsComponent, tools, } from '../vendor/wasm-tools.js'; const { componentEmbed, componentNew } = tools; - /** * @typedef {{ * name: string, @@ -53,7 +42,6 @@ const { componentEmbed, componentNew } = tools; * exports: [string, 'function' | 'instance'][]; * }} TranspilationResult */ - /** * Transpile a provided WebAssembly component to an ES module * that can be run in JS environments @@ -67,45 +55,34 @@ export async function transpile(componentPath, opts) { let component; if (!opts?.stub) { component = await readFile(componentPath); - } else { + } + else { try { await $initWasmToolsComponent; - component = componentNew( - componentEmbed({ - dummy: true, - witPath: (isWindows ? '//?/' : '') + resolve(componentPath), - }), - [] - ); - } catch (err) { + component = componentNew(componentEmbed({ + dummy: true, + witPath: (isWindows ? '//?/' : '') + resolve(componentPath), + }), []); + } + catch (err) { console.error('failed to run component new:', err); throw err; } } - if (!opts?.name) { - opts.name = basename( - componentPath.slice(0, -extname(componentPath).length || Infinity) - ); + opts.name = basename(componentPath.slice(0, -extname(componentPath).length || Infinity)); } - if (opts?.map) { - opts.map = Object.fromEntries( - opts.map.map((mapping) => mapping.split('=')) - ); + opts.map = Object.fromEntries(opts.map.map((mapping) => mapping.split('='))); } - if (opts?.asyncWasiImports) { opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); } - if (opts?.asyncWasiExports) { opts.asyncExports = ASYNC_WASI_EXPORTS.concat(opts.asyncExports || []); } - return await runTranspileComponent(component, opts); } - /** * Convert a WebAssembly module to JS (via Binaryen) * @@ -113,23 +90,20 @@ export async function transpile(componentPath, opts) { * @returns {Promise} */ async function wasm2Js(source) { - const wasm2jsPath = fileURLToPath( - import.meta.resolve('binaryen/bin/wasm2js') - ); - + const wasm2jsPath = fileURLToPath(import.meta.resolve('binaryen/bin/wasm2js')); try { return await runWASMTransformProgram(wasm2jsPath, source, [ '-Oz', '-o', ]); - } catch (e) { + } + catch (e) { if (e.toString().includes('BasicBlock requested')) { return wasm2Js(source); } throw e; } } - /** * Perform transpilation, using the transpiled js-component-bindgen Rust crate. * @@ -142,29 +116,21 @@ export async function runTranspileComponent(component, opts = {}) { if (opts.instantiation) { opts.wasiShim = false; } - if (opts.optimize) { ({ component } = await runOptimizeComponent(component, opts)); } - if (opts.wasiShim !== false) { - opts.map = Object.assign( - { - 'wasi:cli/*': '@bytecodealliance/preview2-shim/cli#*', - 'wasi:clocks/*': '@bytecodealliance/preview2-shim/clocks#*', - 'wasi:filesystem/*': - '@bytecodealliance/preview2-shim/filesystem#*', - 'wasi:http/*': '@bytecodealliance/preview2-shim/http#*', - 'wasi:io/*': '@bytecodealliance/preview2-shim/io#*', - 'wasi:random/*': '@bytecodealliance/preview2-shim/random#*', - 'wasi:sockets/*': '@bytecodealliance/preview2-shim/sockets#*', - }, - opts.map || {} - ); + opts.map = Object.assign({ + 'wasi:cli/*': '@bytecodealliance/preview2-shim/cli#*', + 'wasi:clocks/*': '@bytecodealliance/preview2-shim/clocks#*', + 'wasi:filesystem/*': '@bytecodealliance/preview2-shim/filesystem#*', + 'wasi:http/*': '@bytecodealliance/preview2-shim/http#*', + 'wasi:io/*': '@bytecodealliance/preview2-shim/io#*', + 'wasi:random/*': '@bytecodealliance/preview2-shim/random#*', + 'wasi:sockets/*': '@bytecodealliance/preview2-shim/sockets#*', + }, opts.map || {}); } - let instantiation = null; - // Let's define `instantiation` from `--instantiation` if it's present. if (opts.instantiation) { instantiation = { tag: opts.instantiation }; @@ -173,18 +139,15 @@ export async function runTranspileComponent(component, opts = {}) { else if (opts.js) { instantiation = { tag: 'async' }; } - - const asyncMode = - !opts.asyncMode || opts.asyncMode === 'sync' - ? null - : { - tag: opts.asyncMode, - val: { - imports: opts.asyncImports || [], - exports: opts.asyncExports || [], - }, - }; - + const asyncMode = !opts.asyncMode || opts.asyncMode === 'sync' + ? null + : { + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; let { files, imports, exports } = generate(component, { name: opts.name ?? 'component', map: Object.entries(opts.map ?? {}), @@ -203,49 +166,38 @@ export async function runTranspileComponent(component, opts = {}) { multiMemory: opts.multiMemory === true, idlImports: opts.experimentalIdlImports === true, }); - let outDir = (opts.outDir ?? '').replace(/\\/g, '/'); if (!outDir.endsWith('/') && outDir !== '') { outDir += '/'; } files = files.map(([name, source]) => [`${outDir}${name}`, source]); - const jsFiles = files.find(([name]) => name.endsWith('.js')); - // Generate JS if specified if (opts.js) { - jsFiles[1] = Buffer.from( - await generateJS({ - opts, - inputJS: jsFiles[1], - files, - instantiation, - imports, - exports, - }) - ); + jsFiles[1] = Buffer.from(await generateJS({ + opts, + inputJS: jsFiles[1], + files, + instantiation, + imports, + exports, + })); } - // Perform minification if configured if (opts.minify) { - ({ code: jsFiles[1] } = await minify( - Buffer.from(jsFiles[1]).toString('utf8'), - { - module: true, - compress: { - ecma: 9, - unsafe: true, - }, - mangle: { - keep_classnames: true, - }, - } - )); + ({ code: jsFiles[1] } = await minify(Buffer.from(jsFiles[1]).toString('utf8'), { + module: true, + compress: { + ecma: 9, + unsafe: true, + }, + mangle: { + keep_classnames: true, + }, + })); } - return { files: Object.fromEntries(files), imports, exports }; } - /** Generate code for the `--js` option. * * `--js` can be called with or without `--instantiation`. The generated code @@ -298,59 +250,39 @@ export async function runTranspileComponent(component, opts = {}) { async function generateJS(args) { const { opts, inputJS, instantiation, imports, exports } = args; let files = args.files; - const withInstantiation = opts.instantiation !== undefined; const async_ = instantiation.tag == 'async' ? 'async ' : ''; const await_ = instantiation.tag == 'async' ? 'await ' : ''; - // Format the previously generated code. const source = Buffer.from(inputJS) .toString('utf8') // update imports manging to match emscripten asm - .replace( - /exports(\d+)\['([^']+)']/g, - (_, i, s) => `exports${i}['${asmMangle(s)}']` - ) - .replace( - /export (async )?function instantiate/, - '$1function _instantiate' - ); - + .replace(/exports(\d+)\['([^']+)']/g, (_, i, s) => `exports${i}['${asmMangle(s)}']`) + .replace(/export (async )?function instantiate/, '$1function _instantiate'); // Filter to get all current generated wasm files const wasmFiles = files.filter(([name]) => name.endsWith('.wasm')); - // Filter out wasm files files = files.filter(([name]) => !name.endsWith('.wasm')); - // Compile all Wasm modules into ASM.js codes. - const asmFiles = await Promise.all( - wasmFiles.map(async ([, source]) => { - const output = (await wasm2Js(source)).toString('utf8'); - return output; - }) - ); - + const asmFiles = await Promise.all(wasmFiles.map(async ([, source]) => { + const output = (await wasm2Js(source)).toString('utf8'); + return output; + })); const asms = asmFiles - .map( - (asm, nth) => `function asm${nth}(imports) { + .map((asm, nth) => `function asm${nth}(imports) { ${ - // strip and replace the asm instantiation wrapper - asm - .replace(/import \* as [^ ]+ from '[^']*';/g, '') - .replace('function asmFunc(imports) {', '') - .replace(/export var ([^ ]+) = ([^. ]+)\.([^ ]+);/g, '') - .replace(/var retasmFunc = [\s\S]*$/, '') - .replace(/var memasmFunc = new ArrayBuffer\(0\);/g, '') - .replace('memory.grow = __wasm_memory_grow;', '') - .trim() - }` - ) + // strip and replace the asm instantiation wrapper + asm + .replace(/import \* as [^ ]+ from '[^']*';/g, '') + .replace('function asmFunc(imports) {', '') + .replace(/export var ([^ ]+) = ([^. ]+)\.([^ ]+);/g, '') + .replace(/var retasmFunc = [\s\S]*$/, '') + .replace(/var memasmFunc = new ArrayBuffer\(0\);/g, '') + .replace('memory.grow = __wasm_memory_grow;', '') + .trim()}`) .join(',\n'); - // The `instantiate` function. - const instantiateFunction = `${ - withInstantiation ? 'export ' : '' - }${async_}function instantiate(imports) { + const instantiateFunction = `${withInstantiation ? 'export ' : ''}${async_}function instantiate(imports) { const wasm_file_to_asm_index = { ${wasmFiles .map(([path], nth) => `'${basename(path)}': ${nth}`) @@ -363,79 +295,73 @@ async function generateJS(args) { (module_index, imports) => ({ exports: asmInit[module_index](imports) }) ); }`; - // If `--js` is used without `--instantiation`. let importDirectives = ''; let exportDirectives = ''; let exportTrampolines = ''; let autoInstantiate = ''; - if (!withInstantiation) { importDirectives = imports - .map( - (import_file, nth) => - `import * as import${nth} from '${import_file}';` - ) + .map((import_file, nth) => `import * as import${nth} from '${import_file}';`) .join('\n'); - if (exports.length > 0 || opts.tlaCompat) { exportDirectives = `export { ${ - // Exporting `$init` must come first to not break the transpiling tests. - opts.tlaCompat ? ' $init,\n' : '' -}${exports + // Exporting `$init` must come first to not break the transpiling tests. + opts.tlaCompat ? ' $init,\n' : ''}${exports .map(([name]) => { - if (name === asmMangle(name)) { - return ` ${name},`; - } else { - return ` ${asmMangle(name)} as '${name}',`; - } - }) + if (name === asmMangle(name)) { + return ` ${name},`; + } + else { + return ` ${asmMangle(name)} as '${name}',`; + } + }) .join('\n')} }`; } - exportTrampolines = `let ${exports .filter(([, ty]) => ty === 'function') .map(([name]) => `_${asmMangle(name)}`) .join(', ')}; ${exports - .map(([name, ty]) => { - if (ty === 'function') { - return `\nfunction ${asmMangle(name)} () { + .map(([name, ty]) => { + if (ty === 'function') { + return `\nfunction ${asmMangle(name)} () { return _${asmMangle(name)}.apply(this, arguments); }`; - } else { - return `\nlet ${asmMangle(name)};`; - } - }) - .join('\n')}`; - + } + else { + return `\nlet ${asmMangle(name)};`; + } + }) + .join('\n')}`; autoInstantiate = `${async_}function $init() { ( { ${exports - .map(([name, ty]) => { - if (ty === 'function') { - return ` '${name}': _${asmMangle(name)},`; - } else if (asmMangle(name) === name) { - return ` ${name},`; - } else { - return ` '${name}': ${asmMangle(name)},`; - } - }) - .join('\n')} + .map(([name, ty]) => { + if (ty === 'function') { + return ` '${name}': _${asmMangle(name)},`; + } + else if (asmMangle(name) === name) { + return ` ${name},`; + } + else { + return ` '${name}': ${asmMangle(name)},`; + } + }) + .join('\n')} } = ${await_}instantiate( { ${imports - .map((import_file, nth) => ` '${import_file}': import${nth},`) - .join('\n')} + .map((import_file, nth) => ` '${import_file}': import${nth},`) + .join('\n')} } ) ) } ${opts.tlaCompat ? '' : `${await_}$init();`}`; } - // Prepare the final generated code. const outSource = `${importDirectives} @@ -450,10 +376,8 @@ ${instantiateFunction} ${exportDirectives} ${autoInstantiate}`; - return outSource; } - // emscripten asm mangles specifiers to be valid identifiers // for imports to match up we must do the same // See https://github.com/WebAssembly/binaryen/blob/main/src/asmjs/asmangle.cpp @@ -461,10 +385,8 @@ function asmMangle(name) { if (name === '') { return '$'; } - let mightBeKeyword = true; let i = 1; - // Names must start with a character, $ or _ switch (name[0]) { case '0': @@ -488,16 +410,13 @@ function asmMangle(name) { } default: { let chNum = name.charCodeAt(0); - if ( - !(chNum >= 97 && chNum <= 122) && - !(chNum >= 65 && chNum <= 90) - ) { + if (!(chNum >= 97 && chNum <= 122) && + !(chNum >= 65 && chNum <= 90)) { name = '$' + name.substr(1); mightBeKeyword = false; } } } - // Names must contain only characters, digits, $ or _ let len = name.length; for (; i < len; ++i) { @@ -519,17 +438,14 @@ function asmMangle(name) { } default: { let chNum = name.charCodeAt(i); - if ( - !(chNum >= 97 && chNum <= 122) && - !(chNum >= 65 && chNum <= 90) - ) { + if (!(chNum >= 97 && chNum <= 122) && + !(chNum >= 65 && chNum <= 90)) { name = name.substr(0, i) + '_' + name.substr(i + 1); mightBeKeyword = false; } } } } - // Names must not collide with keywords if (mightBeKeyword && len >= 2 && len <= 10) { switch (name[0]) { @@ -546,13 +462,11 @@ function asmMangle(name) { break; } case 'c': { - if ( - name == 'case' || + if (name == 'case' || name == 'continue' || name == 'catch' || name == 'const' || - name == 'class' - ) { + name == 'class') { return name + '_'; } break; @@ -564,37 +478,31 @@ function asmMangle(name) { break; } case 'e': { - if ( - name == 'else' || + if (name == 'else' || name == 'enum' || name == 'eval' || // to be sure name == 'export' || - name == 'extends' - ) { + name == 'extends') { return name + '_'; } break; } case 'f': { - if ( - name == 'for' || + if (name == 'for' || name == 'false' || name == 'finally' || - name == 'function' - ) { + name == 'function') { return name + '_'; } break; } case 'i': { - if ( - name == 'if' || + if (name == 'if' || name == 'in' || name == 'import' || name == 'interface' || name == 'implements' || - name == 'instanceof' - ) { + name == 'instanceof') { return name + '_'; } break; @@ -612,12 +520,10 @@ function asmMangle(name) { break; } case 'p': { - if ( - name == 'public' || + if (name == 'public' || name == 'package' || name == 'private' || - name == 'protected' - ) { + name == 'protected') { return name + '_'; } break; @@ -635,13 +541,11 @@ function asmMangle(name) { break; } case 't': { - if ( - name == 'try' || + if (name == 'try' || name == 'this' || name == 'true' || name == 'throw' || - name == 'typeof' - ) { + name == 'typeof') { return name + '_'; } break; @@ -668,9 +572,8 @@ function asmMangle(name) { } return name; } - // see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 if (typeof __vite_ssr_import_meta__ !== 'undefined') { - __vite_ssr_import_meta__.resolve = (path) => - 'file://' + globalCreateRequire(import.meta.url).resolve(path); + __vite_ssr_import_meta__.resolve = (path) => 'file://' + globalCreateRequire(import.meta.url).resolve(path); } +//# sourceMappingURL=transpile.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.js.map b/packages/jco-transpile/src/transpile.js.map new file mode 100644 index 000000000..2c38014a3 --- /dev/null +++ b/packages/jco-transpile/src/transpile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.ts b/packages/jco-transpile/src/transpile.ts new file mode 100644 index 000000000..f233a6e35 --- /dev/null +++ b/packages/jco-transpile/src/transpile.ts @@ -0,0 +1,676 @@ +import { Buffer } from 'node:buffer'; +import { extname, basename, resolve } from 'node:path'; + +import { minify } from 'terser'; +import { fileURLToPath } from 'url'; + +import { runOptimizeComponent } from './opt.js'; +import { readFile, runWASMTransformProgram, isWindows } from './common.js'; +import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; + +import { + $init as $initBindgenComponent, + generate, +} from '../vendor/js-component-bindgen-component.js'; + +import { + $init as $initWasmToolsComponent, + tools, +} from '../vendor/wasm-tools.js'; +const { componentEmbed, componentNew } = tools; + +/** + * @typedef {{ + * name: string, + * instantiation?: 'async' | 'sync', + * importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized', + * map?: Record, + * asyncMode?: string, + * asyncImports?: string[], + * asyncExports?: string[], + * asyncWasiImports?: string[], + * asyncWasiExports?: string[], + * validLiftingOptimization?: bool, + * tracing?: bool, + * nodejsCompat?: bool, + * tlaCompat?: bool, + * base64Cutoff?: bool, + * js?: bool, + * minify?: bool, + * optimize?: bool, + * namespacedExports?: bool, + * outDir?: string, + * multiMemory?: bool, + * experimentalIdlImports?: bool, + * optArgs?: string[], + * }} TranspilationOptions + + /** @typedef {{ + * files: { + * [filename: string]: Uint8Array; + * }; + * imports: string[]; + * exports: [string, 'function' | 'instance'][]; + * }} TranspilationResult + */ + +/** + * Transpile a provided WebAssembly component to an ES module + * that can be run in JS environments + * + * @param {Buffer | string | URL | FileHandle} componentPath + * @param {TranspilationOptions} [opts] + * @returns {Promise} + */ +export async function transpile(componentPath, opts) { + opts ??= {}; + let component; + if (!opts?.stub) { + component = await readFile(componentPath); + } else { + try { + await $initWasmToolsComponent; + component = componentNew( + componentEmbed({ + dummy: true, + witPath: (isWindows ? '//?/' : '') + resolve(componentPath), + }), + [] + ); + } catch (err) { + console.error('failed to run component new:', err); + throw err; + } + } + + if (!opts?.name) { + opts.name = basename( + componentPath.slice(0, -extname(componentPath).length || Infinity) + ); + } + + if (opts?.map) { + opts.map = Object.fromEntries( + opts.map.map((mapping) => mapping.split('=')) + ); + } + + if (opts?.asyncWasiImports) { + opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); + } + + if (opts?.asyncWasiExports) { + opts.asyncExports = ASYNC_WASI_EXPORTS.concat(opts.asyncExports || []); + } + + return await runTranspileComponent(component, opts); +} + +/** + * Convert a WebAssembly module to JS (via Binaryen) + * + * @param {Uint8Array} source + * @returns {Promise} + */ +async function wasm2Js(source) { + const wasm2jsPath = fileURLToPath( + import.meta.resolve('binaryen/bin/wasm2js') + ); + + try { + return await runWASMTransformProgram(wasm2jsPath, source, [ + '-Oz', + '-o', + ]); + } catch (e) { + if (e.toString().includes('BasicBlock requested')) { + return wasm2Js(source); + } + throw e; + } +} + +/** + * Perform transpilation, using the transpiled js-component-bindgen Rust crate. + * + * @param {Uint8Array} component + * @param {TranspilationOptions} [opts] + * @returns {Promise} + */ +export async function runTranspileComponent(component, opts = {}) { + await $initBindgenComponent; + if (opts.instantiation) { + opts.wasiShim = false; + } + + if (opts.optimize) { + ({ component } = await runOptimizeComponent(component, opts)); + } + + if (opts.wasiShim !== false) { + opts.map = Object.assign( + { + 'wasi:cli/*': '@bytecodealliance/preview2-shim/cli#*', + 'wasi:clocks/*': '@bytecodealliance/preview2-shim/clocks#*', + 'wasi:filesystem/*': + '@bytecodealliance/preview2-shim/filesystem#*', + 'wasi:http/*': '@bytecodealliance/preview2-shim/http#*', + 'wasi:io/*': '@bytecodealliance/preview2-shim/io#*', + 'wasi:random/*': '@bytecodealliance/preview2-shim/random#*', + 'wasi:sockets/*': '@bytecodealliance/preview2-shim/sockets#*', + }, + opts.map || {} + ); + } + + let instantiation = null; + + // Let's define `instantiation` from `--instantiation` if it's present. + if (opts.instantiation) { + instantiation = { tag: opts.instantiation }; + } + // Otherwise, if `--js` is present, an `instantiate` function is required. + else if (opts.js) { + instantiation = { tag: 'async' }; + } + + const asyncMode = + !opts.asyncMode || opts.asyncMode === 'sync' + ? null + : { + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; + + let { files, imports, exports } = generate(component, { + name: opts.name ?? 'component', + map: Object.entries(opts.map ?? {}), + instantiation, + asyncMode, + importBindings: opts.importBindings + ? { tag: opts.importBindings } + : null, + validLiftingOptimization: opts.validLiftingOptimization ?? false, + tracing: opts.tracing ?? false, + noNodejsCompat: opts.nodejsCompat === false, + noTypescript: opts.typescript === false, + tlaCompat: opts.tlaCompat ?? false, + base64Cutoff: opts.js ? 0 : (opts.base64Cutoff ?? 5000), + noNamespacedExports: opts.namespacedExports === false, + multiMemory: opts.multiMemory === true, + idlImports: opts.experimentalIdlImports === true, + }); + + let outDir = (opts.outDir ?? '').replace(/\\/g, '/'); + if (!outDir.endsWith('/') && outDir !== '') { + outDir += '/'; + } + files = files.map(([name, source]) => [`${outDir}${name}`, source]); + + const jsFiles = files.find(([name]) => name.endsWith('.js')); + + // Generate JS if specified + if (opts.js) { + jsFiles[1] = Buffer.from( + await generateJS({ + opts, + inputJS: jsFiles[1], + files, + instantiation, + imports, + exports, + }) + ); + } + + // Perform minification if configured + if (opts.minify) { + ({ code: jsFiles[1] } = await minify( + Buffer.from(jsFiles[1]).toString('utf8'), + { + module: true, + compress: { + ecma: 9, + unsafe: true, + }, + mangle: { + keep_classnames: true, + }, + } + )); + } + + return { files: Object.fromEntries(files), imports, exports }; +} + +/** Generate code for the `--js` option. + * + * `--js` can be called with or without `--instantiation`. The generated code + * isn't exactly the same! + * + * `--js` needs an `instantiate` function to work, so it might look like + * `--instantiation` is always implied, but actually no. It is correct + * that when `--js` is present, an `instantiate` function _is_ generated, + * but it doesn't mean that we expect the function to be used, it's simply + * not exported, plus `instantiate` is automatically called (if `--tla-compat` + * is `false`). When `--instantiation` is missing, functions are exported + * with the `export` directive, and imports are imported with the `import` + * directive. When `--instantiation` is present, there is no `export` and no + * `import`: only a single exported `instantiate` function. + * + * Basically, we get this: + * + * * `--js` only: + * * `instantiate` is renamed to `_instantiate`, + * * A new `instantiate` function is created, that calls `_instantiate` with + * the correct imports (which are ASM.js code) and returns the exports, + * * A new `$init` function is created, that calls `instantiate` and maps + * the returned exports to their respective trampolines, + * * Trampolines are exported, + * * `$init` is called automatically. + * + * * `--js` with `--tla-compat`: + * * Same as with `--js` only, except that `$init` is exported instead of + * being called immediately. + * + * * `--js` with `--instantiation[=async]`: + * * `instantiate` is renamed to `_instantiate`, + * * A new `instantiate` function is created, that calls `_instantiate` with + * the correct imports (which are ASM.js code) and returns the exports, + * * `instantiate` is exported. + * + * * `--js` with `--instantiation=sync`: + * * Same as `--js` with `--instantiation[=async]`, except that + * `_instantiate` and `instantiate` are non-async. + * + * Be careful with the variables: `opts.instantiation` reflects the presence + * or the absence of the `--instantiation` flag, whilst `instantiation` + * reflects how the `instantiate` function must be generated. We also use + * `instantiation` to know whether the generated code must be async or + * non-async. + * + * @param {TranspileOptions} + * @returns {Promise} A Promise that resolves when javascript has been generated + */ +async function generateJS(args) { + const { opts, inputJS, instantiation, imports, exports } = args; + let files = args.files; + + const withInstantiation = opts.instantiation !== undefined; + const async_ = instantiation.tag == 'async' ? 'async ' : ''; + const await_ = instantiation.tag == 'async' ? 'await ' : ''; + + // Format the previously generated code. + const source = Buffer.from(inputJS) + .toString('utf8') + // update imports manging to match emscripten asm + .replace( + /exports(\d+)\['([^']+)']/g, + (_, i, s) => `exports${i}['${asmMangle(s)}']` + ) + .replace( + /export (async )?function instantiate/, + '$1function _instantiate' + ); + + // Filter to get all current generated wasm files + const wasmFiles = files.filter(([name]) => name.endsWith('.wasm')); + + // Filter out wasm files + files = files.filter(([name]) => !name.endsWith('.wasm')); + + // Compile all Wasm modules into ASM.js codes. + const asmFiles = await Promise.all( + wasmFiles.map(async ([, source]) => { + const output = (await wasm2Js(source)).toString('utf8'); + return output; + }) + ); + + const asms = asmFiles + .map( + (asm, nth) => `function asm${nth}(imports) { + ${ + // strip and replace the asm instantiation wrapper + asm + .replace(/import \* as [^ ]+ from '[^']*';/g, '') + .replace('function asmFunc(imports) {', '') + .replace(/export var ([^ ]+) = ([^. ]+)\.([^ ]+);/g, '') + .replace(/var retasmFunc = [\s\S]*$/, '') + .replace(/var memasmFunc = new ArrayBuffer\(0\);/g, '') + .replace('memory.grow = __wasm_memory_grow;', '') + .trim() + }` + ) + .join(',\n'); + + // The `instantiate` function. + const instantiateFunction = `${ + withInstantiation ? 'export ' : '' + }${async_}function instantiate(imports) { + const wasm_file_to_asm_index = { + ${wasmFiles + .map(([path], nth) => `'${basename(path)}': ${nth}`) + .join(',\n ')} + }; + + return ${await_}_instantiate( + module_name => wasm_file_to_asm_index[module_name], + imports, + (module_index, imports) => ({ exports: asmInit[module_index](imports) }) + ); +}`; + + // If `--js` is used without `--instantiation`. + let importDirectives = ''; + let exportDirectives = ''; + let exportTrampolines = ''; + let autoInstantiate = ''; + + if (!withInstantiation) { + importDirectives = imports + .map( + (import_file, nth) => + `import * as import${nth} from '${import_file}';` + ) + .join('\n'); + + if (exports.length > 0 || opts.tlaCompat) { + exportDirectives = `export { +${ + // Exporting `$init` must come first to not break the transpiling tests. + opts.tlaCompat ? ' $init,\n' : '' +}${exports + .map(([name]) => { + if (name === asmMangle(name)) { + return ` ${name},`; + } else { + return ` ${asmMangle(name)} as '${name}',`; + } + }) + .join('\n')} +}`; + } + + exportTrampolines = `let ${exports + .filter(([, ty]) => ty === 'function') + .map(([name]) => `_${asmMangle(name)}`) + .join(', ')}; +${exports + .map(([name, ty]) => { + if (ty === 'function') { + return `\nfunction ${asmMangle(name)} () { + return _${asmMangle(name)}.apply(this, arguments); +}`; + } else { + return `\nlet ${asmMangle(name)};`; + } + }) + .join('\n')}`; + + autoInstantiate = `${async_}function $init() { + ( { +${exports + .map(([name, ty]) => { + if (ty === 'function') { + return ` '${name}': _${asmMangle(name)},`; + } else if (asmMangle(name) === name) { + return ` ${name},`; + } else { + return ` '${name}': ${asmMangle(name)},`; + } + }) + .join('\n')} + } = ${await_}instantiate( + { +${imports + .map((import_file, nth) => ` '${import_file}': import${nth},`) + .join('\n')} + } + ) ) +} + +${opts.tlaCompat ? '' : `${await_}$init();`}`; + } + + // Prepare the final generated code. + const outSource = `${importDirectives} + +${source} + +const asmInit = [${asms}]; + +${exportTrampolines} + +${instantiateFunction} + +${exportDirectives} + +${autoInstantiate}`; + + return outSource; +} + +// emscripten asm mangles specifiers to be valid identifiers +// for imports to match up we must do the same +// See https://github.com/WebAssembly/binaryen/blob/main/src/asmjs/asmangle.cpp +function asmMangle(name) { + if (name === '') { + return '$'; + } + + let mightBeKeyword = true; + let i = 1; + + // Names must start with a character, $ or _ + switch (name[0]) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + name = '$' + name; + i = 2; + // fallthrough + } + case '$': + case '_': { + mightBeKeyword = false; + break; + } + default: { + let chNum = name.charCodeAt(0); + if ( + !(chNum >= 97 && chNum <= 122) && + !(chNum >= 65 && chNum <= 90) + ) { + name = '$' + name.substr(1); + mightBeKeyword = false; + } + } + } + + // Names must contain only characters, digits, $ or _ + let len = name.length; + for (; i < len; ++i) { + switch (name[i]) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '$': + case '_': { + mightBeKeyword = false; + break; + } + default: { + let chNum = name.charCodeAt(i); + if ( + !(chNum >= 97 && chNum <= 122) && + !(chNum >= 65 && chNum <= 90) + ) { + name = name.substr(0, i) + '_' + name.substr(i + 1); + mightBeKeyword = false; + } + } + } + } + + // Names must not collide with keywords + if (mightBeKeyword && len >= 2 && len <= 10) { + switch (name[0]) { + case 'a': { + if (name == 'arguments') { + return name + '_'; + } + break; + } + case 'b': { + if (name == 'break') { + return name + '_'; + } + break; + } + case 'c': { + if ( + name == 'case' || + name == 'continue' || + name == 'catch' || + name == 'const' || + name == 'class' + ) { + return name + '_'; + } + break; + } + case 'd': { + if (name == 'do' || name == 'default' || name == 'debugger') { + return name + '_'; + } + break; + } + case 'e': { + if ( + name == 'else' || + name == 'enum' || + name == 'eval' || // to be sure + name == 'export' || + name == 'extends' + ) { + return name + '_'; + } + break; + } + case 'f': { + if ( + name == 'for' || + name == 'false' || + name == 'finally' || + name == 'function' + ) { + return name + '_'; + } + break; + } + case 'i': { + if ( + name == 'if' || + name == 'in' || + name == 'import' || + name == 'interface' || + name == 'implements' || + name == 'instanceof' + ) { + return name + '_'; + } + break; + } + case 'l': { + if (name == 'let') { + return name + '_'; + } + break; + } + case 'n': { + if (name == 'new' || name == 'null') { + return name + '_'; + } + break; + } + case 'p': { + if ( + name == 'public' || + name == 'package' || + name == 'private' || + name == 'protected' + ) { + return name + '_'; + } + break; + } + case 'r': { + if (name == 'return') { + return name + '_'; + } + break; + } + case 's': { + if (name == 'super' || name == 'static' || name == 'switch') { + return name + '_'; + } + break; + } + case 't': { + if ( + name == 'try' || + name == 'this' || + name == 'true' || + name == 'throw' || + name == 'typeof' + ) { + return name + '_'; + } + break; + } + case 'v': { + if (name == 'var' || name == 'void') { + return name + '_'; + } + break; + } + case 'w': { + if (name == 'with' || name == 'while') { + return name + '_'; + } + break; + } + case 'y': { + if (name == 'yield') { + return name + '_'; + } + break; + } + } + } + return name; +} + +// see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 +if (typeof __vite_ssr_import_meta__ !== 'undefined') { + __vite_ssr_import_meta__.resolve = (path) => + 'file://' + globalCreateRequire(import.meta.url).resolve(path); +} diff --git a/packages/jco-transpile/src/typegen.d.ts b/packages/jco-transpile/src/typegen.d.ts index a3e9cc7b0..e1741b8fc 100644 --- a/packages/jco-transpile/src/typegen.d.ts +++ b/packages/jco-transpile/src/typegen.d.ts @@ -1,32 +1,51 @@ -import type { FileBytes } from './common'; - -type TypeGenerationOptions = { - name?: string; - worldName?: string; - instantiation?: 'async' | 'sync'; - tlaCompat?: boolean; - asyncMode?: string; - asyncImports?: string[]; - asyncExports?: string[]; - outDir?: string; - features?: string[] | 'all'; - allFeatures?: boolean; - asyncWasiImports?: boolean; - asyncWasiExports?: boolean; - guest?: boolean; -}; - -export function generateHostTypes( - witPath: string, - opts?: TypeGenerationOptions -): Promise; - -export function generateGuestTypes( - witPath: string, - opts: TypeGenerationOptions -): Promise; - -export function runTypesComponent( - witPath: string, - opts: TypeGenerationOptions -): Promise; +/** + * @typedef {{ + * name?: string, + * worldName?: string, + * instantiation?: 'async' | 'sync', + * tlaCompat?: bool, + * asyncMode?: string, + * asyncImports?: string[], + * asyncExports?: string[], + * outDir?: string, + * features?: string[] | 'all', + * allFeatures?: boolean, + * asyncWasiImports?: boolean, + * asyncWasiExports?: boolean, + * guest?: bool, + * }} TypeGenerationOptions + */ +/** + * Generate host types for a given WIT world + * + * @param {string} witPath - path to the file/directory containing the WIT world + * @param {import('./typegen.js').TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} A Promise that resolves when all files have been written + */ +export declare function generateHostTypes(witPath: any, opts: any): Promise<{ + [k: string]: any; +}>; +/** + * Generate guest types for a given WIT world + * + * @param {string} witPath - path to the file/directory containing the WIT world + * @param {TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} A Promise that resolves when all files have been written + */ +export declare function generateGuestTypes(witPath: any, opts: any): Promise<{ + [k: string]: any; +}>; +/** + * Perform type generation for a given WIT file/directory, by running the transpiled + * type generation component. + * + * This function relies on the transpiled js-component-bindgen to perform + * functionality that is made available via Rust libraries. + * + * @param {string} witPath + * @param {TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} + */ +export declare function runTypesComponent(witPath: any, opts: any): Promise<{ + [k: string]: any; +}>; diff --git a/packages/jco-transpile/src/typegen.js b/packages/jco-transpile/src/typegen.js index 5897f5827..d1e586a48 100644 --- a/packages/jco-transpile/src/typegen.js +++ b/packages/jco-transpile/src/typegen.js @@ -1,13 +1,7 @@ import { basename, resolve, extname } from 'node:path'; - -import { - $init as $initBindgenComponent, - generateTypes, -} from '../vendor/js-component-bindgen-component.js'; - +import { $init as $initBindgenComponent, generateTypes, } from '../vendor/js-component-bindgen-component.js'; import { isWindows } from './common.js'; import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; - /** * @typedef {{ * name?: string, @@ -25,7 +19,6 @@ import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; * guest?: bool, * }} TypeGenerationOptions */ - /** * Generate host types for a given WIT world * @@ -36,7 +29,6 @@ import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; export async function generateHostTypes(witPath, opts) { return await runTypesComponent(witPath, opts); } - /** * Generate guest types for a given WIT world * @@ -47,7 +39,6 @@ export async function generateHostTypes(witPath, opts) { export async function generateGuestTypes(witPath, opts) { return await runTypesComponent(witPath, { ...opts, guest: true }); } - /** * Perform type generation for a given WIT file/directory, by running the transpiled * type generation component. @@ -61,8 +52,7 @@ export async function generateGuestTypes(witPath, opts) { */ export async function runTypesComponent(witPath, opts) { await $initBindgenComponent; - const name = - opts.name || + const name = opts.name || (opts.worldName ? opts.worldName.split(':').pop().split('/').pop() : basename(witPath.slice(0, -extname(witPath).length || Infinity))); @@ -74,32 +64,28 @@ export async function runTypesComponent(witPath, opts) { if (!outDir.endsWith('/') && outDir !== '') { outDir += '/'; } - let features = null; if (opts.allFeatures) { features = { tag: 'all' }; - } else if (Array.isArray(opts.features)) { + } + else if (Array.isArray(opts.features)) { features = { tag: 'list', val: opts.features }; } - if (opts.asyncWasiImports) { opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); } if (opts.asyncWasiExports) { opts.asyncExports = ASYNC_WASI_EXPORTS.concat(opts.asyncExports || []); } - - const asyncMode = - !opts.asyncMode || opts.asyncMode === 'sync' - ? null - : { - tag: opts.asyncMode, - val: { - imports: opts.asyncImports || [], - exports: opts.asyncExports || [], - }, - }; - + const asyncMode = !opts.asyncMode || opts.asyncMode === 'sync' + ? null + : { + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; const absWitPath = resolve(witPath); const types = generateTypes(name, { wit: { tag: 'path', val: (isWindows ? '//?/' : '') + absWitPath }, @@ -110,6 +96,6 @@ export async function runTypesComponent(witPath, opts) { guest: opts.guest ?? false, asyncMode, }).map(([name, file]) => [`${outDir}${name}`, file]); - return Object.fromEntries(types); } +//# sourceMappingURL=typegen.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/typegen.js.map b/packages/jco-transpile/src/typegen.js.map new file mode 100644 index 000000000..a930ad522 --- /dev/null +++ b/packages/jco-transpile/src/typegen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typegen.js","sourceRoot":"","sources":["typegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/typegen.ts b/packages/jco-transpile/src/typegen.ts new file mode 100644 index 000000000..5897f5827 --- /dev/null +++ b/packages/jco-transpile/src/typegen.ts @@ -0,0 +1,115 @@ +import { basename, resolve, extname } from 'node:path'; + +import { + $init as $initBindgenComponent, + generateTypes, +} from '../vendor/js-component-bindgen-component.js'; + +import { isWindows } from './common.js'; +import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; + +/** + * @typedef {{ + * name?: string, + * worldName?: string, + * instantiation?: 'async' | 'sync', + * tlaCompat?: bool, + * asyncMode?: string, + * asyncImports?: string[], + * asyncExports?: string[], + * outDir?: string, + * features?: string[] | 'all', + * allFeatures?: boolean, + * asyncWasiImports?: boolean, + * asyncWasiExports?: boolean, + * guest?: bool, + * }} TypeGenerationOptions + */ + +/** + * Generate host types for a given WIT world + * + * @param {string} witPath - path to the file/directory containing the WIT world + * @param {import('./typegen.js').TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} A Promise that resolves when all files have been written + */ +export async function generateHostTypes(witPath, opts) { + return await runTypesComponent(witPath, opts); +} + +/** + * Generate guest types for a given WIT world + * + * @param {string} witPath - path to the file/directory containing the WIT world + * @param {TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} A Promise that resolves when all files have been written + */ +export async function generateGuestTypes(witPath, opts) { + return await runTypesComponent(witPath, { ...opts, guest: true }); +} + +/** + * Perform type generation for a given WIT file/directory, by running the transpiled + * type generation component. + * + * This function relies on the transpiled js-component-bindgen to perform + * functionality that is made available via Rust libraries. + * + * @param {string} witPath + * @param {TypeGenerationOptions} opts - options for controlling type generation + * @returns {Promise} + */ +export async function runTypesComponent(witPath, opts) { + await $initBindgenComponent; + const name = + opts.name || + (opts.worldName + ? opts.worldName.split(':').pop().split('/').pop() + : basename(witPath.slice(0, -extname(witPath).length || Infinity))); + let instantiation; + if (opts.instantiation) { + instantiation = { tag: opts.instantiation }; + } + let outDir = (opts.outDir ?? '').replace(/\\/g, '/'); + if (!outDir.endsWith('/') && outDir !== '') { + outDir += '/'; + } + + let features = null; + if (opts.allFeatures) { + features = { tag: 'all' }; + } else if (Array.isArray(opts.features)) { + features = { tag: 'list', val: opts.features }; + } + + if (opts.asyncWasiImports) { + opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); + } + if (opts.asyncWasiExports) { + opts.asyncExports = ASYNC_WASI_EXPORTS.concat(opts.asyncExports || []); + } + + const asyncMode = + !opts.asyncMode || opts.asyncMode === 'sync' + ? null + : { + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; + + const absWitPath = resolve(witPath); + const types = generateTypes(name, { + wit: { tag: 'path', val: (isWindows ? '//?/' : '') + absWitPath }, + instantiation, + tlaCompat: opts.tlaCompat ?? false, + world: opts.worldName, + features, + guest: opts.guest ?? false, + asyncMode, + }).map(([name, file]) => [`${outDir}${name}`, file]); + + return Object.fromEntries(types); +} diff --git a/packages/jco-transpile/tsconfig.json b/packages/jco-transpile/tsconfig.json new file mode 100644 index 000000000..44652cea4 --- /dev/null +++ b/packages/jco-transpile/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@tsconfig/node20", + "compilerOptions": { + "rootDir": "./src", + "sourceMap": true, + "declaration": true, + "composite": true, + }, + "include": ["src/**/*"], +} diff --git a/packages/jco/src/api.d.ts b/packages/jco/src/api.d.ts index 6bef5ad12..6c9fce0a8 100644 --- a/packages/jco/src/api.d.ts +++ b/packages/jco/src/api.d.ts @@ -2,39 +2,39 @@ * @param {Parameters[0]} binary * @return {Promise>} */ -export function print(binary: Parameters[0]): Promise>; +export function print(binary: Parameters[0]): Promise>; /** * @param {Parameters[0]} wat * @return {Promise>} */ -export function parse(wat: Parameters[0]): Promise>; +export function parse(wat: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @return {Promise>} */ -export function componentWit(binary: Parameters[0]): Promise>; +export function componentWit(binary: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @param {Parameters[1]} adapters * @return {Promise>} */ -export function componentNew(binary: Parameters[0], adapters: Parameters[1]): Promise>; +export function componentNew(binary: Parameters[0], adapters: Parameters[1]): Promise>; /** * @param {Parameters[0]} embedOpts * @return {Promise>} */ -export function componentEmbed(embedOpts: Parameters[0]): Promise>; +export function componentEmbed(embedOpts: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @param {Parameters[1]} metadata * @return {Promise>} */ -export function metadataAdd(binary: Parameters[0], metadata: Parameters[1]): Promise>; +export function metadataAdd(binary: Parameters[0], metadata: Parameters[1]): Promise>; /** * @param {Parameters[0]} binary * @return {Promise>} */ -export function metadataShow(binary: Parameters[0]): Promise>; +export function metadataShow(binary: Parameters[0]): Promise>; export function preview1AdapterCommandPath(): URL; export function preview1AdapterReactorPath(): URL; export { optimizeComponent as opt } from "./cmd/opt.js"; diff --git a/packages/jco/src/api.d.ts.map b/packages/jco/src/api.d.ts.map index da3dcb6e1..80287a46a 100644 --- a/packages/jco/src/api.d.ts.map +++ b/packages/jco/src/api.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["api.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,8BAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,2BAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD;;;;GAIG;AACH,qCAJW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAC1D,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD;;;GAGG;AACH,0CAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAK7E;AACD;;;;GAIG;AACH,oCAJW,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,YACzD,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAK1E;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD,kDAKC;AACD,kDAKC"} \ No newline at end of file +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["api.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,8BAHW,UAAU,CAAC,GAAoC,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,GAAoC,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,2BAHW,UAAU,CAAC,GAAoC,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,GAAoC,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD;;;;GAIG;AACH,qCAJW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,YAC1D,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD;;;GAGG;AACH,0CAHW,UAAU,CAAC,GAA6C,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,UAAU,CAAC,GAA6C,CAAC,CAAC,CAK7E;AACD;;;;GAIG;AACH,oCAJW,UAAU,CAAC,GAA0C,CAAC,CAAC,CAAC,CAAC,YACzD,UAAU,CAAC,GAA0C,CAAC,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,GAA0C,CAAC,CAAC,CAK1E;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD,kDAKC;AACD,kDAKC"} \ No newline at end of file From a4ef70819079f54144d75bf85aa4d517ca821dfb Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis <108056+elmerbulthuis@users.noreply.github.com> Date: Tue, 8 Jul 2025 13:16:07 +0200 Subject: [PATCH 2/8] Add explicit types to transpile sources --- packages/jco-transpile/src/common.ts | 31 ++++++++++--- packages/jco-transpile/src/opt.ts | 22 ++++++++- packages/jco-transpile/src/transpile.ts | 60 ++++++++++++++++++++++--- packages/jco-transpile/src/typegen.ts | 31 +++++++++++-- 4 files changed, 127 insertions(+), 17 deletions(-) diff --git a/packages/jco-transpile/src/common.ts b/packages/jco-transpile/src/common.ts index f3feb7f8e..d22a5695f 100644 --- a/packages/jco-transpile/src/common.ts +++ b/packages/jco-transpile/src/common.ts @@ -5,6 +5,7 @@ import { writeFile, rm, mkdtemp, + FileHandle, } from 'node:fs/promises'; import { spawn } from 'node:child_process'; import { platform, argv0 } from 'node:process'; @@ -20,13 +21,19 @@ const DEFAULT_SIGNIFICANT_DIGITS = 4; /** Nubmer of bytes in a kilobyte */ const BYTES_MAGNITUDE = 1024; +export type FileBytes = Record; + +export interface SizeStrOptions { + significantDigits?: number; +} + /** * Convert a given number into the string that would appropriately represent it, * in either KiB or MiB. * * @param {number} num */ -export function sizeStr(num, opts) { +export function sizeStr(num: number, opts?: SizeStrOptions): string { const significantDigits = opts?.significantDigits ?? DEFAULT_SIGNIFICANT_DIGITS; num /= BYTES_MAGNITUDE; @@ -53,7 +60,7 @@ export function sizeStr(num, opts) { * @param {number} maxChars - character limit * @returns {string} The number, displayed */ -export function fixedDigitDisplay(num, maxChars) { +export function fixedDigitDisplay(num: number, maxChars: number): string { const significantDigits = String(num).split('.')[0].length; let str; if (significantDigits >= maxChars - 1) { @@ -76,7 +83,10 @@ export function fixedDigitDisplay(num, maxChars) { * @param {string[]} align - preferred alignment of cells * @returns {string} Tabulated data */ -export function table(data, cellAlignment = []) { +export function table( + data: any[][], + cellAlignment: string[] = [] +): string { if (data.length === 0) { return ''; } @@ -106,7 +116,7 @@ export function table(data, cellAlignment = []) { * * @return {Promise} A Promise that resolves to the created temporary directory */ -export async function getTmpDir() { +export async function getTmpDir(): Promise { return await mkdtemp(normalize(tmpdir() + sep)); } @@ -116,7 +126,10 @@ export async function getTmpDir() { * @param {string} file - file to read * @param {string} encoding - encoding of the file */ -export async function readFile(file, encoding) { +export async function readFile( + file: string | Buffer | URL | FileHandle, + encoding?: BufferEncoding +): Promise { try { return await fsReadFile(file, encoding); } catch { @@ -132,7 +145,11 @@ export async function readFile(file, encoding) { * @param {string} input - wasm input to write to a temporary input file * @param {string[]} args */ -export async function runWASMTransformProgram(cmd, input, args) { +export async function runWASMTransformProgram( + cmd: string, + input: Uint8Array, + args: string[] +): Promise { const tmpDir = await getTmpDir(); try { const inFile = resolve(tmpDir, 'in.wasm'); @@ -173,7 +190,7 @@ export async function runWASMTransformProgram(cmd, input, args) { * @param {number} val * @returns {number} */ -export function byteLengthLEB128(val) { +export function byteLengthLEB128(val: number): number { let len = 0; do { val >>>= 7; diff --git a/packages/jco-transpile/src/opt.ts b/packages/jco-transpile/src/opt.ts index 9d4849381..468dbfa2b 100644 --- a/packages/jco-transpile/src/opt.ts +++ b/packages/jco-transpile/src/opt.ts @@ -5,6 +5,18 @@ import { byteLengthLEB128, runWASMTransformProgram } from './common.js'; import { $init, tools } from '../vendor/wasm-tools.js'; const { metadataShow, print } = tools; +export interface OptimizeOptions { + quiet: boolean; + asyncify?: boolean; + optArgs?: string[]; + noVerify?: boolean; +} + +export interface OptimizeResult { + component: Uint8Array; + compressionInfo: { beforeBytes: number; afterBytes: number }[]; +} + /** * @typedef {{ * quiet: boolean, @@ -28,7 +40,10 @@ const { metadataShow, print } = tools; * @param {OptimizeOptions} [opts] * @returns {Promise} */ -export async function runOptimizeComponent(componentBytes, opts) { +export async function runOptimizeComponent( + componentBytes: Uint8Array, + opts?: OptimizeOptions +): Promise { await $init; let componentMetadata = metadataShow(componentBytes); @@ -190,7 +205,10 @@ export async function runOptimizeComponent(componentBytes, opts) { * @param {Array} args * @returns {Promise} */ -async function runWasmOptCLI(source, args) { +async function runWasmOptCLI( + source: Uint8Array, + args: string[] +): Promise { const wasmOptPath = fileURLToPath( import.meta.resolve('binaryen/bin/wasm-opt') ); diff --git a/packages/jco-transpile/src/transpile.ts b/packages/jco-transpile/src/transpile.ts index f233a6e35..710016cd3 100644 --- a/packages/jco-transpile/src/transpile.ts +++ b/packages/jco-transpile/src/transpile.ts @@ -6,6 +6,7 @@ import { fileURLToPath } from 'url'; import { runOptimizeComponent } from './opt.js'; import { readFile, runWASMTransformProgram, isWindows } from './common.js'; +import type { FileHandle } from 'node:fs/promises'; import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; import { @@ -19,6 +20,49 @@ import { } from '../vendor/wasm-tools.js'; const { componentEmbed, componentNew } = tools; +export interface TranspilationOptions { + name: string; + instantiation?: 'async' | 'sync'; + importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized'; + map?: Record; + asyncMode?: string; + asyncImports?: string[]; + asyncExports?: string[]; + asyncWasiImports?: string[]; + asyncWasiExports?: string[]; + validLiftingOptimization?: boolean; + tracing?: boolean; + nodejsCompat?: boolean; + tlaCompat?: boolean; + base64Cutoff?: boolean; + js?: boolean; + minify?: boolean; + optimize?: boolean; + namespacedExports?: boolean; + outDir?: string; + multiMemory?: boolean; + experimentalIdlImports?: boolean; + optArgs?: string[]; + wasiShim?: boolean; + typescript?: boolean; + stub?: boolean; +} + +export interface TranspilationResult { + files: import('./common.js').FileBytes; + imports: string[]; + exports: [string, 'function' | 'instance'][]; +} + +interface GenerateJSArgs { + opts: TranspilationOptions; + inputJS: Uint8Array; + files: [string, Uint8Array][]; + instantiation: { tag: string }; + imports: string[]; + exports: [string, 'function' | 'instance'][]; +} + /** * @typedef {{ * name: string, @@ -62,7 +106,10 @@ const { componentEmbed, componentNew } = tools; * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export async function transpile(componentPath, opts) { +export async function transpile( + componentPath: Buffer | string | URL | FileHandle, + opts?: TranspilationOptions +): Promise { opts ??= {}; let component; if (!opts?.stub) { @@ -112,7 +159,7 @@ export async function transpile(componentPath, opts) { * @param {Uint8Array} source * @returns {Promise} */ -async function wasm2Js(source) { +async function wasm2Js(source: Uint8Array): Promise { const wasm2jsPath = fileURLToPath( import.meta.resolve('binaryen/bin/wasm2js') ); @@ -137,7 +184,10 @@ async function wasm2Js(source) { * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export async function runTranspileComponent(component, opts = {}) { +export async function runTranspileComponent( + component: Uint8Array, + opts: TranspilationOptions = {} +): Promise { await $initBindgenComponent; if (opts.instantiation) { opts.wasiShim = false; @@ -295,7 +345,7 @@ export async function runTranspileComponent(component, opts = {}) { * @param {TranspileOptions} * @returns {Promise} A Promise that resolves when javascript has been generated */ -async function generateJS(args) { +async function generateJS(args: GenerateJSArgs): Promise { const { opts, inputJS, instantiation, imports, exports } = args; let files = args.files; @@ -457,7 +507,7 @@ ${autoInstantiate}`; // emscripten asm mangles specifiers to be valid identifiers // for imports to match up we must do the same // See https://github.com/WebAssembly/binaryen/blob/main/src/asmjs/asmangle.cpp -function asmMangle(name) { +function asmMangle(name: string): string { if (name === '') { return '$'; } diff --git a/packages/jco-transpile/src/typegen.ts b/packages/jco-transpile/src/typegen.ts index 5897f5827..2666e51cd 100644 --- a/packages/jco-transpile/src/typegen.ts +++ b/packages/jco-transpile/src/typegen.ts @@ -8,6 +8,22 @@ import { import { isWindows } from './common.js'; import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; +export interface TypeGenerationOptions { + name?: string; + worldName?: string; + instantiation?: 'async' | 'sync'; + tlaCompat?: boolean; + asyncMode?: string; + asyncImports?: string[]; + asyncExports?: string[]; + outDir?: string; + features?: string[] | 'all'; + allFeatures?: boolean; + asyncWasiImports?: boolean; + asyncWasiExports?: boolean; + guest?: boolean; +} + /** * @typedef {{ * name?: string, @@ -33,7 +49,10 @@ import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; * @param {import('./typegen.js').TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} A Promise that resolves when all files have been written */ -export async function generateHostTypes(witPath, opts) { +export async function generateHostTypes( + witPath: string, + opts: TypeGenerationOptions +): Promise { return await runTypesComponent(witPath, opts); } @@ -44,7 +63,10 @@ export async function generateHostTypes(witPath, opts) { * @param {TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} A Promise that resolves when all files have been written */ -export async function generateGuestTypes(witPath, opts) { +export async function generateGuestTypes( + witPath: string, + opts: TypeGenerationOptions +): Promise { return await runTypesComponent(witPath, { ...opts, guest: true }); } @@ -59,7 +81,10 @@ export async function generateGuestTypes(witPath, opts) { * @param {TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} */ -export async function runTypesComponent(witPath, opts) { +export async function runTypesComponent( + witPath: string, + opts: TypeGenerationOptions +): Promise { await $initBindgenComponent; const name = opts.name || From 2696ecc169a86c4e65edd5550d09630f6f39a5b7 Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 13:17:16 +0200 Subject: [PATCH 3/8] build and fix some small things --- packages/jco-transpile/src/common.d.ts | 19 +++++--- packages/jco-transpile/src/common.js | 4 +- packages/jco-transpile/src/common.js.map | 2 +- packages/jco-transpile/src/common.ts | 6 +-- packages/jco-transpile/src/opt.d.ts | 18 ++++++-- packages/jco-transpile/src/opt.js.map | 2 +- packages/jco-transpile/src/transpile.d.ts | 50 +++++++++++++++------ packages/jco-transpile/src/transpile.js.map | 2 +- packages/jco-transpile/src/typegen.d.ts | 27 +++++++---- packages/jco-transpile/src/typegen.js.map | 2 +- 10 files changed, 89 insertions(+), 43 deletions(-) diff --git a/packages/jco-transpile/src/common.d.ts b/packages/jco-transpile/src/common.d.ts index 63fa0627d..a33bc32f3 100644 --- a/packages/jco-transpile/src/common.d.ts +++ b/packages/jco-transpile/src/common.d.ts @@ -1,12 +1,17 @@ +import { FileHandle } from 'node:fs/promises'; /** Detect a windows environment */ export declare const isWindows: boolean; +export type FileBytes = Record; +export interface SizeStrOptions { + significantDigits?: number; +} /** * Convert a given number into the string that would appropriately represent it, * in either KiB or MiB. * * @param {number} num */ -export declare function sizeStr(num: any, opts: any): string; +export declare function sizeStr(num: number, opts?: SizeStrOptions): string; /** * Display a given number with a fixed number of digits * @@ -14,7 +19,7 @@ export declare function sizeStr(num: any, opts: any): string; * @param {number} maxChars - character limit * @returns {string} The number, displayed */ -export declare function fixedDigitDisplay(num: any, maxChars: any): string; +export declare function fixedDigitDisplay(num: number, maxChars: number): string; /** * Tabulate an array of data for display as a table * @@ -22,7 +27,7 @@ export declare function fixedDigitDisplay(num: any, maxChars: any): string; * @param {string[]} align - preferred alignment of cells * @returns {string} Tabulated data */ -export declare function table(data: any, cellAlignment?: never[]): string; +export declare function table(data: any[][], cellAlignment?: string[]): string; /** * Securely creates a temporary directory and returns its path. * @@ -32,12 +37,12 @@ export declare function table(data: any, cellAlignment?: never[]): string; */ export declare function getTmpDir(): Promise; /** - * Read a file, throwing and error when a file coudl not be read + * Read a file, throwing and error when a file could not be read * * @param {string} file - file to read * @param {string} encoding - encoding of the file */ -export declare function readFile(file: any, encoding: any): Promise>; +export declare function readFile(file: string | Buffer | URL | FileHandle, encoding?: BufferEncoding): Promise; /** * Spawn an command that modified a WebAssembly component as a subprocess, * with a temporary (scratch) directory for performing work in. @@ -46,11 +51,11 @@ export declare function readFile(file: any, encoding: any): Promise>; +export declare function runWASMTransformProgram(cmd: string, input: Uint8Array, args: string[]): Promise; /** * Counts the byte length for the LEB128 encoding of a number. * * @param {number} val * @returns {number} */ -export declare function byteLengthLEB128(val: any): number; +export declare function byteLengthLEB128(val: number): number; diff --git a/packages/jco-transpile/src/common.js b/packages/jco-transpile/src/common.js index 9cbf04064..60a3a19a9 100644 --- a/packages/jco-transpile/src/common.js +++ b/packages/jco-transpile/src/common.js @@ -8,7 +8,7 @@ import c from 'chalk-template'; export const isWindows = platform === 'win32'; /** Default number of significant figures to use */ const DEFAULT_SIGNIFICANT_DIGITS = 4; -/** Nubmer of bytes in a kilobyte */ +/** Number of bytes in a kilobyte */ const BYTES_MAGNITUDE = 1024; /** * Convert a given number into the string that would appropriately represent it, @@ -93,7 +93,7 @@ export async function getTmpDir() { return await mkdtemp(normalize(tmpdir() + sep)); } /** - * Read a file, throwing and error when a file coudl not be read + * Read a file, throwing and error when a file could not be read * * @param {string} file - file to read * @param {string} encoding - encoding of the file diff --git a/packages/jco-transpile/src/common.js.map b/packages/jco-transpile/src/common.js.map index ed8ba0288..dcf6d1234 100644 --- a/packages/jco-transpile/src/common.js.map +++ b/packages/jco-transpile/src/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/common.ts b/packages/jco-transpile/src/common.ts index d22a5695f..67bc999ab 100644 --- a/packages/jco-transpile/src/common.ts +++ b/packages/jco-transpile/src/common.ts @@ -18,7 +18,7 @@ export const isWindows = platform === 'win32'; /** Default number of significant figures to use */ const DEFAULT_SIGNIFICANT_DIGITS = 4; -/** Nubmer of bytes in a kilobyte */ +/** Number of bytes in a kilobyte */ const BYTES_MAGNITUDE = 1024; export type FileBytes = Record; @@ -121,7 +121,7 @@ export async function getTmpDir(): Promise { } /** - * Read a file, throwing and error when a file coudl not be read + * Read a file, throwing and error when a file could not be read * * @param {string} file - file to read * @param {string} encoding - encoding of the file @@ -162,7 +162,7 @@ export async function runWASMTransformProgram( }); let stderr = ''; - const p = new Promise((resolve, reject) => { + const p = new Promise((resolve, reject) => { cp.stderr.on('data', (data) => (stderr += data.toString())); cp.on('error', (e) => { reject(e); diff --git a/packages/jco-transpile/src/opt.d.ts b/packages/jco-transpile/src/opt.d.ts index cac9869e4..955d96a78 100644 --- a/packages/jco-transpile/src/opt.d.ts +++ b/packages/jco-transpile/src/opt.d.ts @@ -1,3 +1,16 @@ +export interface OptimizeOptions { + quiet: boolean; + asyncify?: boolean; + optArgs?: string[]; + noVerify?: boolean; +} +export interface OptimizeResult { + component: Uint8Array; + compressionInfo: { + beforeBytes: number; + afterBytes: number; + }[]; +} /** * @typedef {{ * quiet: boolean, @@ -19,7 +32,4 @@ * @param {OptimizeOptions} [opts] * @returns {Promise} */ -export declare function runOptimizeComponent(componentBytes: any, opts: any): Promise<{ - component: Uint8Array; - compressionInfo: any; -}>; +export declare function runOptimizeComponent(componentBytes: Uint8Array, opts?: OptimizeOptions): Promise; diff --git a/packages/jco-transpile/src/opt.js.map b/packages/jco-transpile/src/opt.js.map index ceeb89037..52a1e228c 100644 --- a/packages/jco-transpile/src/opt.js.map +++ b/packages/jco-transpile/src/opt.js.map @@ -1 +1 @@ -{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvD,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AActC;;;;;;;GAOG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,cAA0B,EAC1B,IAAsB;IAEtB,MAAM,KAAK,CAAC;IAEZ,IAAI,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IACrD,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC1C,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CACxC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAC9C,CAAC;IAEF,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO;QACtB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC;YACI,KAAK;YACL,qBAAqB;YACrB,sBAAsB;YACtB,eAAe;SAClB,CAAC;IACR,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,CAAC,GAAG,CACb,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrC,sDAAsD;YACtD,QAAQ,CAAC,SAAS,GAAG,MAAM,aAAa,CACpC,cAAc,CAAC,QAAQ,CACnB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACjB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CACpB,EACD,IAAI,CACP,CAAC;YAEF,mDAAmD;YACnD,yCAAyC;YACzC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;YACpD,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACrD,QAAQ,CAAC,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;QACzD,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,+DAA+D;IAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACvC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;gBACxC,CAAC,EAAE,CAAC;gBACJ,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChD,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAC1C,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;oBAC7C,OAAO,UAAU;wBACb,CAAC,CAAC,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU;wBAC7C,CAAC,CAAC,KAAK,CAAC;gBAChB,CAAC,EACD,QAAQ,CAAC,UAAU,IAAI,CAAC,CAC3B,CAAC;gBACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvD,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CACjC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CACjC,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAErC,wDAAwD;IACxD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;QAC7C,OAAO,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9D,CAAC,EACD,CAAC,CACJ,CAAC;IAEF,IAAI,iBAAiB,GAAG,IAAI,UAAU,CAClC,cAAc,CAAC,UAAU,GAAG,UAAU,CACzC,CAAC;IACF,IAAI,WAAW,GAAG,CAAC,EACf,YAAY,GAAG,CAAC,CAAC;IAErB,MAAM,KAAK,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QACrE,iDAAiD;QACjD,iBAAiB,CAAC,GAAG,CACjB,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAC3D,YAAY,CACf,CAAC;QACF,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC;QAEpD,0BAA0B;QAC1B,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QAC3C,GAAG,CAAC;YACA,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACxB,GAAG,MAAM,CAAC,CAAC;YACX,iBAAiB,CAAC,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACvE,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE;QAEpB,IAAI,SAAS,EAAE,CAAC;YACZ,wBAAwB;YACxB,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC/C,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,YAAY,IAAI,SAAS,CAAC,UAAU,CAAC;QACzC,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,mCAAmC;YACnC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,kBAAkB;YAClB,iBAAiB,CAAC,GAAG,CACjB,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3C,YAAY,CACf,CAAC;YACF,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC,CAAC;IAEF,0CAA0C;IAC1C,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;IAE1E,4BAA4B;IAC5B,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACX,4CAA4C,CAAC,CAAC,OAAO,EAAE,CAC1D,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,SAAS,EAAE,iBAAiB;QAC5B,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,UAAU,EAAE,SAAS,EAAE,UAAU;SACpC,CAAC,CAAC;KACN,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,aAAa,CACxB,MAAkB,EAClB,IAAc;IAEd,MAAM,WAAW,GAAG,aAAa,CAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAC/C,CAAC;IAEF,IAAI,CAAC;QACD,OAAO,MAAM,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE;YACtD,GAAG,IAAI;YACP,IAAI;SACP,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,IAAI,OAAO,wBAAwB,KAAK,WAAW,EAAE,CAAC;IAClD,wBAAwB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,CACxC,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC"} \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.d.ts b/packages/jco-transpile/src/transpile.d.ts index 00affc991..f3cca1a30 100644 --- a/packages/jco-transpile/src/transpile.d.ts +++ b/packages/jco-transpile/src/transpile.d.ts @@ -1,3 +1,37 @@ +import { Buffer } from 'node:buffer'; +import type { FileHandle } from 'node:fs/promises'; +export interface TranspilationOptions { + name: string; + instantiation?: 'async' | 'sync'; + importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized'; + map?: Record; + asyncMode?: string; + asyncImports?: string[]; + asyncExports?: string[]; + asyncWasiImports?: string[]; + asyncWasiExports?: string[]; + validLiftingOptimization?: boolean; + tracing?: boolean; + nodejsCompat?: boolean; + tlaCompat?: boolean; + base64Cutoff?: boolean; + js?: boolean; + minify?: boolean; + optimize?: boolean; + namespacedExports?: boolean; + outDir?: string; + multiMemory?: boolean; + experimentalIdlImports?: boolean; + optArgs?: string[]; + wasiShim?: boolean; + typescript?: boolean; + stub?: boolean; +} +export interface TranspilationResult { + files: import('./common.js').FileBytes; + imports: string[]; + exports: [string, 'function' | 'instance'][]; +} /** * @typedef {{ * name: string, @@ -40,13 +74,7 @@ * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export declare function transpile(componentPath: any, opts: any): Promise<{ - files: { - [k: string]: any; - }; - imports: any; - exports: any; -}>; +export declare function transpile(componentPath: Buffer | string | URL | FileHandle, opts?: TranspilationOptions): Promise; /** * Perform transpilation, using the transpiled js-component-bindgen Rust crate. * @@ -54,10 +82,4 @@ export declare function transpile(componentPath: any, opts: any): Promise<{ * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export declare function runTranspileComponent(component: any, opts?: {}): Promise<{ - files: { - [k: string]: any; - }; - imports: any; - exports: any; -}>; +export declare function runTranspileComponent(component: Uint8Array, opts?: TranspilationOptions): Promise; diff --git a/packages/jco-transpile/src/transpile.js.map b/packages/jco-transpile/src/transpile.js.map index 2c38014a3..fa2ce6b58 100644 --- a/packages/jco-transpile/src/transpile.js.map +++ b/packages/jco-transpile/src/transpile.js.map @@ -1 +1 @@ -{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/typegen.d.ts b/packages/jco-transpile/src/typegen.d.ts index e1741b8fc..2606327fd 100644 --- a/packages/jco-transpile/src/typegen.d.ts +++ b/packages/jco-transpile/src/typegen.d.ts @@ -1,3 +1,18 @@ +export interface TypeGenerationOptions { + name?: string; + worldName?: string; + instantiation?: 'async' | 'sync'; + tlaCompat?: boolean; + asyncMode?: string; + asyncImports?: string[]; + asyncExports?: string[]; + outDir?: string; + features?: string[] | 'all'; + allFeatures?: boolean; + asyncWasiImports?: boolean; + asyncWasiExports?: boolean; + guest?: boolean; +} /** * @typedef {{ * name?: string, @@ -22,9 +37,7 @@ * @param {import('./typegen.js').TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} A Promise that resolves when all files have been written */ -export declare function generateHostTypes(witPath: any, opts: any): Promise<{ - [k: string]: any; -}>; +export declare function generateHostTypes(witPath: string, opts: TypeGenerationOptions): Promise; /** * Generate guest types for a given WIT world * @@ -32,9 +45,7 @@ export declare function generateHostTypes(witPath: any, opts: any): Promise<{ * @param {TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} A Promise that resolves when all files have been written */ -export declare function generateGuestTypes(witPath: any, opts: any): Promise<{ - [k: string]: any; -}>; +export declare function generateGuestTypes(witPath: string, opts: TypeGenerationOptions): Promise; /** * Perform type generation for a given WIT file/directory, by running the transpiled * type generation component. @@ -46,6 +57,4 @@ export declare function generateGuestTypes(witPath: any, opts: any): Promise<{ * @param {TypeGenerationOptions} opts - options for controlling type generation * @returns {Promise} */ -export declare function runTypesComponent(witPath: any, opts: any): Promise<{ - [k: string]: any; -}>; +export declare function runTypesComponent(witPath: string, opts: TypeGenerationOptions): Promise; diff --git a/packages/jco-transpile/src/typegen.js.map b/packages/jco-transpile/src/typegen.js.map index a930ad522..fca18f2a8 100644 --- a/packages/jco-transpile/src/typegen.js.map +++ b/packages/jco-transpile/src/typegen.js.map @@ -1 +1 @@ -{"version":3,"file":"typegen.js","sourceRoot":"","sources":["typegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typegen.js","sourceRoot":"","sources":["typegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file From b06529dd1593fc017d7ad335b97ef830d1ff597a Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 13:31:42 +0200 Subject: [PATCH 4/8] fix typegen --- packages/jco-transpile/src/typegen.js | 11 +++++------ packages/jco-transpile/src/typegen.js.map | 2 +- packages/jco-transpile/src/typegen.ts | 24 +++++++++++------------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/jco-transpile/src/typegen.js b/packages/jco-transpile/src/typegen.js index d1e586a48..3a2cb9123 100644 --- a/packages/jco-transpile/src/typegen.js +++ b/packages/jco-transpile/src/typegen.js @@ -52,10 +52,9 @@ export async function generateGuestTypes(witPath, opts) { */ export async function runTypesComponent(witPath, opts) { await $initBindgenComponent; - const name = opts.name || - (opts.worldName - ? opts.worldName.split(':').pop().split('/').pop() - : basename(witPath.slice(0, -extname(witPath).length || Infinity))); + const name = opts.name ?? + opts.worldName?.split(':').pop()?.split('/').pop() ?? + basename(witPath.slice(0, -extname(witPath).length || Infinity)); let instantiation; if (opts.instantiation) { instantiation = { tag: opts.instantiation }; @@ -92,9 +91,9 @@ export async function runTypesComponent(witPath, opts) { instantiation, tlaCompat: opts.tlaCompat ?? false, world: opts.worldName, - features, + features: features, guest: opts.guest ?? false, - asyncMode, + asyncMode: asyncMode, }).map(([name, file]) => [`${outDir}${name}`, file]); return Object.fromEntries(types); } diff --git a/packages/jco-transpile/src/typegen.js.map b/packages/jco-transpile/src/typegen.js.map index fca18f2a8..4ee1eb5d6 100644 --- a/packages/jco-transpile/src/typegen.js.map +++ b/packages/jco-transpile/src/typegen.js.map @@ -1 +1 @@ -{"version":3,"file":"typegen.js","sourceRoot":"","sources":["typegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typegen.js","sourceRoot":"","sources":["typegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/typegen.ts b/packages/jco-transpile/src/typegen.ts index 2666e51cd..600dc5060 100644 --- a/packages/jco-transpile/src/typegen.ts +++ b/packages/jco-transpile/src/typegen.ts @@ -87,10 +87,10 @@ export async function runTypesComponent( ): Promise { await $initBindgenComponent; const name = - opts.name || - (opts.worldName - ? opts.worldName.split(':').pop().split('/').pop() - : basename(witPath.slice(0, -extname(witPath).length || Infinity))); + opts.name ?? + opts.worldName?.split(':').pop()?.split('/').pop() ?? + basename(witPath.slice(0, -extname(witPath).length || Infinity)); + let instantiation; if (opts.instantiation) { instantiation = { tag: opts.instantiation }; @@ -118,12 +118,12 @@ export async function runTypesComponent( !opts.asyncMode || opts.asyncMode === 'sync' ? null : { - tag: opts.asyncMode, - val: { - imports: opts.asyncImports || [], - exports: opts.asyncExports || [], - }, - }; + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; const absWitPath = resolve(witPath); const types = generateTypes(name, { @@ -131,9 +131,9 @@ export async function runTypesComponent( instantiation, tlaCompat: opts.tlaCompat ?? false, world: opts.worldName, - features, + features: features as any, guest: opts.guest ?? false, - asyncMode, + asyncMode: asyncMode as any, }).map(([name, file]) => [`${outDir}${name}`, file]); return Object.fromEntries(types); From 137650084bdfdd28d6e6614fbac83d858264a2cf Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 13:36:41 +0200 Subject: [PATCH 5/8] no default {} --- packages/jco-transpile/src/transpile.d.ts | 4 ++-- packages/jco-transpile/src/transpile.js | 3 +-- packages/jco-transpile/src/transpile.js.map | 2 +- packages/jco-transpile/src/transpile.ts | 5 ++--- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/jco-transpile/src/transpile.d.ts b/packages/jco-transpile/src/transpile.d.ts index f3cca1a30..b76a17039 100644 --- a/packages/jco-transpile/src/transpile.d.ts +++ b/packages/jco-transpile/src/transpile.d.ts @@ -74,7 +74,7 @@ export interface TranspilationResult { * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export declare function transpile(componentPath: Buffer | string | URL | FileHandle, opts?: TranspilationOptions): Promise; +export declare function transpile(componentPath: Buffer | string | URL | FileHandle, opts: TranspilationOptions): Promise; /** * Perform transpilation, using the transpiled js-component-bindgen Rust crate. * @@ -82,4 +82,4 @@ export declare function transpile(componentPath: Buffer | string | URL | FileHan * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export declare function runTranspileComponent(component: Uint8Array, opts?: TranspilationOptions): Promise; +export declare function runTranspileComponent(component: Uint8Array, opts: TranspilationOptions): Promise; diff --git a/packages/jco-transpile/src/transpile.js b/packages/jco-transpile/src/transpile.js index 26f906099..78d9d8fb2 100644 --- a/packages/jco-transpile/src/transpile.js +++ b/packages/jco-transpile/src/transpile.js @@ -51,7 +51,6 @@ const { componentEmbed, componentNew } = tools; * @returns {Promise} */ export async function transpile(componentPath, opts) { - opts ??= {}; let component; if (!opts?.stub) { component = await readFile(componentPath); @@ -111,7 +110,7 @@ async function wasm2Js(source) { * @param {TranspilationOptions} [opts] * @returns {Promise} */ -export async function runTranspileComponent(component, opts = {}) { +export async function runTranspileComponent(component, opts) { await $initBindgenComponent; if (opts.instantiation) { opts.wasiShim = false; diff --git a/packages/jco-transpile/src/transpile.js.map b/packages/jco-transpile/src/transpile.js.map index fa2ce6b58..290cae347 100644 --- a/packages/jco-transpile/src/transpile.js.map +++ b/packages/jco-transpile/src/transpile.js.map @@ -1 +1 @@ -{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EACH,KAAK,IAAI,qBAAqB,EAC9B,QAAQ,GACX,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACH,KAAK,IAAI,uBAAuB,EAChC,KAAK,GACR,MAAM,yBAAyB,CAAC;AACjC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;AA6C/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,aAAiD,EACjD,IAA2B;IAE3B,IAAI,KAAK,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC;IACd,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACd,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC;YACD,MAAM,uBAAuB,CAAC;YAC9B,SAAS,GAAG,YAAY,CACpB,cAAc,CAAC;gBACX,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;aAC9D,CAAC,EACF,EAAE,CACL,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,QAAQ,CAChB,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,CACrE,CAAC;IACN,CAAC;IAED,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAChD,CAAC;IACN,CAAC;IAED,IAAI,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,OAAO,CAAC,MAAkB;IACrC,MAAM,WAAW,GAAG,aAAa,CAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAC9C,CAAC;IAEF,IAAI,CAAC;QACD,OAAO,MAAM,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE;YACtD,KAAK;YACL,IAAI;SACP,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,SAAqB,EACrB,OAA6B,EAAE;IAE/B,MAAM,qBAAqB,CAAC;IAC5B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CACpB;YACI,YAAY,EAAE,uCAAuC;YACrD,eAAe,EAAE,0CAA0C;YAC3D,mBAAmB,EACf,8CAA8C;YAClD,aAAa,EAAE,wCAAwC;YACvD,WAAW,EAAE,sCAAsC;YACnD,eAAe,EAAE,0CAA0C;YAC3D,gBAAgB,EAAE,2CAA2C;SAChE,EACD,IAAI,CAAC,GAAG,IAAI,EAAE,CACjB,CAAC;IACN,CAAC;IAED,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,uEAAuE;IACvE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,aAAa,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC;IACD,0EAA0E;SACrE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACf,aAAa,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,SAAS,GACX,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;QACxC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACI,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE;gBACD,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;gBAChC,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;aACnC;SACJ,CAAC;IAEZ,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE;QAClD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;QAC9B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACnC,aAAa;QACb,SAAS;QACT,cAAc,EAAE,IAAI,CAAC,cAAc;YAC/B,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE;YAC9B,CAAC,CAAC,IAAI;QACV,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,IAAI,KAAK;QAChE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAC9B,cAAc,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK;QAC3C,YAAY,EAAE,IAAI,CAAC,UAAU,KAAK,KAAK;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;QAClC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;QACvD,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,KAAK,KAAK;QACrD,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI;QACtC,UAAU,EAAE,IAAI,CAAC,sBAAsB,KAAK,IAAI;KACnD,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,CAAC;IAClB,CAAC;IACD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7D,2BAA2B;IAC3B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CACpB,MAAM,UAAU,CAAC;YACb,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACnB,KAAK;YACL,aAAa;YACb,OAAO;YACP,OAAO;SACV,CAAC,CACL,CAAC;IACN,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,MAAM,CAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EACxC;YACI,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE;gBACN,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,IAAI;aACf;YACD,MAAM,EAAE;gBACJ,eAAe,EAAE,IAAI;aACxB;SACJ,CACJ,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,KAAK,UAAU,UAAU,CAAC,IAAoB;IAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,wCAAwC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9B,QAAQ,CAAC,MAAM,CAAC;QACjB,iDAAiD;SAChD,OAAO,CACJ,2BAA2B,EAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAChD;SACA,OAAO,CACJ,sCAAsC,EACtC,yBAAyB,CAC5B,CAAC;IAEN,iDAAiD;IACjD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnE,wBAAwB;IACxB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,IAAI,GAAG,QAAQ;SAChB,GAAG,CACA,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,GAAG;IACxC;IACE,kDAAkD;IAClD,GAAG;SACE,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC;SACvD,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,OAAO,CAAC,yCAAyC,EAAE,EAAE,CAAC;SACtD,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,IAAI,EACb,EAAE,CACK;SACA,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjB,8BAA8B;IAC9B,MAAM,mBAAmB,GAAG,GACxB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACpC,GAAG,MAAM;;MAEP,SAAS;SACN,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SACnD,IAAI,CAAC,SAAS,CAAC;;;WAGb,MAAM;;;;;EAKf,CAAC;IAEC,+CAA+C;IAC/C,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrB,gBAAgB,GAAG,OAAO;aACrB,GAAG,CACA,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CACjB,qBAAqB,GAAG,UAAU,WAAW,IAAI,CACxD;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,gBAAgB,GAAG;EAC7B;YACE,wEAAwE;YACxE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EACpC,GAAG,OAAO;iBACO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;gBACZ,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,OAAO,KAAK,IAAI,GAAG,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;gBAChD,CAAC;YACL,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC;EACzB,CAAC;QACK,CAAC;QAED,iBAAiB,GAAG,OAAO,OAAO;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC;EACrB,OAAO;aACJ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBACpB,OAAO,cAAc,SAAS,CAAC,IAAI,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC;EACzB,CAAC;YACK,CAAC;iBAAM,CAAC;gBACJ,OAAO,SAAS,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACvC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEV,eAAe,GAAG,GAAG,MAAM;;EAEjC,OAAO;aACJ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBACpB,OAAO,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACjD,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClC,OAAO,OAAO,IAAI,GAAG,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,OAAO,QAAQ,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAChD,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACP,MAAM;;EAEZ,OAAO;aACJ,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,WAAW,YAAY,GAAG,GAAG,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC;;;;;EAKb,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,oCAAoC;IACpC,MAAM,SAAS,GAAG,GAAG,gBAAgB;;EAEvC,MAAM;;mBAEW,IAAI;;EAErB,iBAAiB;;EAEjB,mBAAmB;;EAEnB,gBAAgB;;EAEhB,eAAe,EAAE,CAAC;IAEhB,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,4DAA4D;AAC5D,8CAA8C;AAC9C,+EAA+E;AAC/E,SAAS,SAAS,CAAC,IAAY;IAC3B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,4CAA4C;IAC5C,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACd,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YAClB,CAAC,GAAG,CAAC,CAAC;YACN,cAAc;QAClB,CAAC;QACD,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,cAAc,GAAG,KAAK,CAAC;YACvB,MAAM;QACV,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,IACI,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC;gBAC9B,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,EAC/B,CAAC;gBACC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5B,cAAc,GAAG,KAAK,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QAClB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,cAAc,GAAG,KAAK,CAAC;gBACvB,MAAM;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/B,IACI,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC;oBAC9B,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,EAC/B,CAAC;oBACC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpD,cAAc,GAAG,KAAK,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,cAAc,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QAC1C,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;oBACtB,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;oBAClB,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,MAAM;oBACd,IAAI,IAAI,UAAU;oBAClB,IAAI,IAAI,OAAO;oBACf,IAAI,IAAI,OAAO;oBACf,IAAI,IAAI,OAAO,EACjB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC1D,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,MAAM;oBACd,IAAI,IAAI,MAAM;oBACd,IAAI,IAAI,MAAM,IAAI,aAAa;oBAC/B,IAAI,IAAI,QAAQ;oBAChB,IAAI,IAAI,SAAS,EACnB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,KAAK;oBACb,IAAI,IAAI,OAAO;oBACf,IAAI,IAAI,SAAS;oBACjB,IAAI,IAAI,UAAU,EACpB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,IAAI;oBACZ,IAAI,IAAI,IAAI;oBACZ,IAAI,IAAI,QAAQ;oBAChB,IAAI,IAAI,WAAW;oBACnB,IAAI,IAAI,YAAY;oBACpB,IAAI,IAAI,YAAY,EACtB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAChB,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBAClC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,QAAQ;oBAChB,IAAI,IAAI,SAAS;oBACjB,IAAI,IAAI,SAAS;oBACjB,IAAI,IAAI,WAAW,EACrB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBACnB,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC1D,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IACI,IAAI,IAAI,KAAK;oBACb,IAAI,IAAI,MAAM;oBACd,IAAI,IAAI,MAAM;oBACd,IAAI,IAAI,OAAO;oBACf,IAAI,IAAI,QAAQ,EAClB,CAAC;oBACC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBAClC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;oBACpC,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;oBAClB,OAAO,IAAI,GAAG,GAAG,CAAC;gBACtB,CAAC;gBACD,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,IAAI,OAAO,wBAAwB,KAAK,WAAW,EAAE,CAAC;IAClD,wBAAwB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,CACxC,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC"} \ No newline at end of file +{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.ts b/packages/jco-transpile/src/transpile.ts index 710016cd3..e9c6f4461 100644 --- a/packages/jco-transpile/src/transpile.ts +++ b/packages/jco-transpile/src/transpile.ts @@ -108,9 +108,8 @@ interface GenerateJSArgs { */ export async function transpile( componentPath: Buffer | string | URL | FileHandle, - opts?: TranspilationOptions + opts: TranspilationOptions ): Promise { - opts ??= {}; let component; if (!opts?.stub) { component = await readFile(componentPath); @@ -186,7 +185,7 @@ async function wasm2Js(source: Uint8Array): Promise { */ export async function runTranspileComponent( component: Uint8Array, - opts: TranspilationOptions = {} + opts: TranspilationOptions ): Promise { await $initBindgenComponent; if (opts.instantiation) { From 879cd50e17b600a784727fdd7a6878f92840c94f Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 21:09:28 +0200 Subject: [PATCH 6/8] opt wip --- packages/jco-transpile/src/opt.js | 12 ++++++-- packages/jco-transpile/src/opt.js.map | 2 +- packages/jco-transpile/src/opt.ts | 40 +++++++++++++++++++-------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/packages/jco-transpile/src/opt.js b/packages/jco-transpile/src/opt.js index b7e5a34e6..592b1177f 100644 --- a/packages/jco-transpile/src/opt.js +++ b/packages/jco-transpile/src/opt.js @@ -1,6 +1,7 @@ import { fileURLToPath } from 'node:url'; import { byteLengthLEB128, runWASMTransformProgram } from './common.js'; import { $init, tools } from '../vendor/wasm-tools.js'; +import assert from 'node:assert'; const { metadataShow, print } = tools; /** * @typedef {{ @@ -66,8 +67,11 @@ export async function runOptimizeComponent(componentBytes, opts) { if (metadata.parentIndex === parentIndex) { nodes.splice(i, 1); // remove from nodes i--; + assert(metadata.index != null, "index should be set"); metadata.children = getChildren(metadata.index); metadata.sizeChange = metadata.children.reduce((total, { prevLEBLen, newLEBLen, sizeChange }) => { + assert(newLEBLen != null, "newLEBLen should be set"); + assert(prevLEBLen != null, "prevLEBLen should be set"); return sizeChange ? total + sizeChange + newLEBLen - prevLEBLen : total; @@ -82,11 +86,15 @@ export async function runOptimizeComponent(componentBytes, opts) { const componentTree = getChildren(0); // compute the total size change in the component binary const sizeChange = componentTree.reduce((total, { prevLEBLen, newLEBLen, sizeChange }) => { + assert(newLEBLen != null, "newLEBLen should be set"); + assert(prevLEBLen != null, "prevLEBLen should be set"); return total + (sizeChange || 0) + newLEBLen - prevLEBLen; }, 0); let outComponentBytes = new Uint8Array(componentBytes.byteLength + sizeChange); let nextReadPos = 0, nextWritePos = 0; const write = ({ prevLEBLen, range, optimized, children, sizeChange }) => { + assert(prevLEBLen != null, "prevLEBLen should be set"); + assert(sizeChange != null, "sizeChange should be set"); // write from the last read to the LEB byte start outComponentBytes.set(componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), nextWritePos); nextWritePos += range[0] - prevLEBLen - nextReadPos; @@ -103,7 +111,7 @@ export async function runOptimizeComponent(componentBytes, opts) { nextReadPos = range[1]; nextWritePos += optimized.byteLength; } - else if (children.length > 0) { + else if (children != null && children.length > 0) { // write child components / modules nextReadPos = range[0]; children.forEach(write); @@ -132,7 +140,7 @@ export async function runOptimizeComponent(componentBytes, opts) { component: outComponentBytes, compressionInfo: coreModules.map(({ range, optimized }) => ({ beforeBytes: range[1] - range[0], - afterBytes: optimized?.byteLength, + afterBytes: optimized?.byteLength ?? 0, })), }; } diff --git a/packages/jco-transpile/src/opt.js.map b/packages/jco-transpile/src/opt.js.map index 52a1e228c..759024baf 100644 --- a/packages/jco-transpile/src/opt.js.map +++ b/packages/jco-transpile/src/opt.js.map @@ -1 +1 @@ -{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.ts b/packages/jco-transpile/src/opt.ts index 468dbfa2b..73d6e8465 100644 --- a/packages/jco-transpile/src/opt.ts +++ b/packages/jco-transpile/src/opt.ts @@ -3,6 +3,7 @@ import { fileURLToPath } from 'node:url'; import { byteLengthLEB128, runWASMTransformProgram } from './common.js'; import { $init, tools } from '../vendor/wasm-tools.js'; +import assert from 'node:assert'; const { metadataShow, print } = tools; export interface OptimizeOptions { @@ -17,6 +18,15 @@ export interface OptimizeResult { compressionInfo: { beforeBytes: number; afterBytes: number }[]; } +interface ExtendedModuleMetadata extends tools.ModuleMetadata { + index?: number + prevLEBLen?: number + optimized?: Uint8Array + newLEBLen?: number + sizeChange?: number + children?: ExtendedModuleMetadata[] +} + /** * @typedef {{ * quiet: boolean, @@ -46,7 +56,7 @@ export async function runOptimizeComponent( ): Promise { await $init; - let componentMetadata = metadataShow(componentBytes); + let componentMetadata: ExtendedModuleMetadata[] = metadataShow(componentBytes); componentMetadata.forEach((metadata, index) => { metadata.index = index; const size = metadata.range[1] - metadata.range[0]; @@ -61,11 +71,11 @@ export async function runOptimizeComponent( const args = opts?.optArgs ? [...opts.optArgs] : [ - '-Oz', - '--low-memory-unused', - '--enable-bulk-memory', - '--strip-debug', - ]; + '-Oz', + '--low-memory-unused', + '--enable-bulk-memory', + '--strip-debug', + ]; if (opts?.asyncify) { args.push('--asyncify'); } @@ -95,16 +105,19 @@ export async function runOptimizeComponent( // organize components in modules into tree parent and children const nodes = componentMetadata.slice(1); - const getChildren = (parentIndex) => { + const getChildren = (parentIndex: number) => { const children = []; for (let i = 0; i < nodes.length; i++) { const metadata = nodes[i]; if (metadata.parentIndex === parentIndex) { nodes.splice(i, 1); // remove from nodes i--; + assert(metadata.index != null, "index should be set") metadata.children = getChildren(metadata.index); metadata.sizeChange = metadata.children.reduce( (total, { prevLEBLen, newLEBLen, sizeChange }) => { + assert(newLEBLen != null, "newLEBLen should be set") + assert(prevLEBLen != null, "prevLEBLen should be set") return sizeChange ? total + sizeChange + newLEBLen - prevLEBLen : total; @@ -125,6 +138,8 @@ export async function runOptimizeComponent( // compute the total size change in the component binary const sizeChange = componentTree.reduce( (total, { prevLEBLen, newLEBLen, sizeChange }) => { + assert(newLEBLen != null, "newLEBLen should be set") + assert(prevLEBLen != null, "prevLEBLen should be set") return total + (sizeChange || 0) + newLEBLen - prevLEBLen; }, 0 @@ -136,7 +151,10 @@ export async function runOptimizeComponent( let nextReadPos = 0, nextWritePos = 0; - const write = ({ prevLEBLen, range, optimized, children, sizeChange }) => { + const write = ({ prevLEBLen, range, optimized, children, sizeChange }: ExtendedModuleMetadata) => { + assert(prevLEBLen != null, "prevLEBLen should be set") + assert(sizeChange != null, "sizeChange should be set") + // write from the last read to the LEB byte start outComponentBytes.set( componentBytes.subarray(nextReadPos, range[0] - prevLEBLen), @@ -157,7 +175,7 @@ export async function runOptimizeComponent( outComponentBytes.set(optimized, nextWritePos); nextReadPos = range[1]; nextWritePos += optimized.byteLength; - } else if (children.length > 0) { + } else if (children != null && children.length > 0) { // write child components / modules nextReadPos = range[0]; children.forEach(write); @@ -193,7 +211,7 @@ export async function runOptimizeComponent( component: outComponentBytes, compressionInfo: coreModules.map(({ range, optimized }) => ({ beforeBytes: range[1] - range[0], - afterBytes: optimized?.byteLength, + afterBytes: optimized?.byteLength ?? 0, })), }; } @@ -219,7 +237,7 @@ async function runWasmOptCLI( '-o', ]); } catch (e) { - if (e.toString().includes('BasicBlock requested')) { + if (String(e).includes('BasicBlock requested')) { return wasmOpt(source, args); } throw e; From d157397126e5fbebedea814eece58b8456b17033 Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 21:42:07 +0200 Subject: [PATCH 7/8] compiles --- packages/jco-transpile/src/globals.ts | 5 + packages/jco-transpile/src/opt.js | 3 +- packages/jco-transpile/src/opt.js.map | 2 +- packages/jco-transpile/src/opt.ts | 8 +- packages/jco-transpile/src/transpile.d.ts | 4 +- packages/jco-transpile/src/transpile.js | 47 +++--- packages/jco-transpile/src/transpile.js.map | 2 +- packages/jco-transpile/src/transpile.ts | 171 +++++++++++--------- 8 files changed, 136 insertions(+), 106 deletions(-) create mode 100644 packages/jco-transpile/src/globals.ts diff --git a/packages/jco-transpile/src/globals.ts b/packages/jco-transpile/src/globals.ts new file mode 100644 index 000000000..075a8f521 --- /dev/null +++ b/packages/jco-transpile/src/globals.ts @@ -0,0 +1,5 @@ +declare global { + var __vite_ssr_import_meta__: any; + var globalCreateRequire: any; + var wasmOpt: any +} \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.js b/packages/jco-transpile/src/opt.js index 592b1177f..60881663d 100644 --- a/packages/jco-transpile/src/opt.js +++ b/packages/jco-transpile/src/opt.js @@ -160,7 +160,8 @@ async function runWasmOptCLI(source, args) { ]); } catch (e) { - if (e.toString().includes('BasicBlock requested')) { + if (String(e).includes('BasicBlock requested')) { + // TODO where does wasmopt come from return wasmOpt(source, args); } throw e; diff --git a/packages/jco-transpile/src/opt.js.map b/packages/jco-transpile/src/opt.js.map index 759024baf..e692571df 100644 --- a/packages/jco-transpile/src/opt.js.map +++ b/packages/jco-transpile/src/opt.js.map @@ -1 +1 @@ -{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.ts b/packages/jco-transpile/src/opt.ts index 73d6e8465..cdf44e308 100644 --- a/packages/jco-transpile/src/opt.ts +++ b/packages/jco-transpile/src/opt.ts @@ -202,7 +202,7 @@ export async function runOptimizeComponent( print(outComponentBytes); } catch (e) { throw new Error( - `Internal error performing optimization.\n${e.message}` + `Internal error performing optimization.\n${(e as Error).message}` ); } } @@ -237,7 +237,9 @@ async function runWasmOptCLI( '-o', ]); } catch (e) { - if (String(e).includes('BasicBlock requested')) { + if ( + String(e).includes('BasicBlock requested')) { + // TODO where does wasmopt come from return wasmOpt(source, args); } throw e; @@ -246,6 +248,6 @@ async function runWasmOptCLI( // see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 if (typeof __vite_ssr_import_meta__ !== 'undefined') { - __vite_ssr_import_meta__.resolve = (path) => + __vite_ssr_import_meta__.resolve = (path: string) => 'file://' + globalCreateRequire(import.meta.url).resolve(path); } diff --git a/packages/jco-transpile/src/transpile.d.ts b/packages/jco-transpile/src/transpile.d.ts index b76a17039..a633bf7f1 100644 --- a/packages/jco-transpile/src/transpile.d.ts +++ b/packages/jco-transpile/src/transpile.d.ts @@ -5,7 +5,7 @@ export interface TranspilationOptions { instantiation?: 'async' | 'sync'; importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized'; map?: Record; - asyncMode?: string; + asyncMode?: "sync" | "jspi"; asyncImports?: string[]; asyncExports?: string[]; asyncWasiImports?: string[]; @@ -14,7 +14,7 @@ export interface TranspilationOptions { tracing?: boolean; nodejsCompat?: boolean; tlaCompat?: boolean; - base64Cutoff?: boolean; + base64Cutoff?: number; js?: boolean; minify?: boolean; optimize?: boolean; diff --git a/packages/jco-transpile/src/transpile.js b/packages/jco-transpile/src/transpile.js index 78d9d8fb2..1badd2894 100644 --- a/packages/jco-transpile/src/transpile.js +++ b/packages/jco-transpile/src/transpile.js @@ -7,6 +7,7 @@ import { readFile, runWASMTransformProgram, isWindows } from './common.js'; import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; import { $init as $initBindgenComponent, generate, } from '../vendor/js-component-bindgen-component.js'; import { $init as $initWasmToolsComponent, tools, } from '../vendor/wasm-tools.js'; +import assert from 'node:assert'; const { componentEmbed, componentNew } = tools; /** * @typedef {{ @@ -51,6 +52,7 @@ const { componentEmbed, componentNew } = tools; * @returns {Promise} */ export async function transpile(componentPath, opts) { + const componentPathString = String(componentPath); let component; if (!opts?.stub) { component = await readFile(componentPath); @@ -60,7 +62,7 @@ export async function transpile(componentPath, opts) { await $initWasmToolsComponent; component = componentNew(componentEmbed({ dummy: true, - witPath: (isWindows ? '//?/' : '') + resolve(componentPath), + witPath: (isWindows ? '//?/' : '') + resolve(componentPathString), }), []); } catch (err) { @@ -69,11 +71,15 @@ export async function transpile(componentPath, opts) { } } if (!opts?.name) { - opts.name = basename(componentPath.slice(0, -extname(componentPath).length || Infinity)); - } - if (opts?.map) { - opts.map = Object.fromEntries(opts.map.map((mapping) => mapping.split('='))); + opts.name = basename(componentPathString.slice(0, -extname(componentPathString).length || Infinity)); } + // TODO is this used? either use it or remove! + // + // if (opts?.map) { + // opts.map = Object.fromEntries( + // opts.map.map((mapping) => mapping.split('=')) + // ); + // } if (opts?.asyncWasiImports) { opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); } @@ -97,7 +103,7 @@ async function wasm2Js(source) { ]); } catch (e) { - if (e.toString().includes('BasicBlock requested')) { + if (String(e).includes('BasicBlock requested')) { return wasm2Js(source); } throw e; @@ -116,7 +122,7 @@ export async function runTranspileComponent(component, opts) { opts.wasiShim = false; } if (opts.optimize) { - ({ component } = await runOptimizeComponent(component, opts)); + ({ component } = await runOptimizeComponent(component, { ...opts, quiet: false })); } if (opts.wasiShim !== false) { opts.map = Object.assign({ @@ -150,11 +156,11 @@ export async function runTranspileComponent(component, opts) { let { files, imports, exports } = generate(component, { name: opts.name ?? 'component', map: Object.entries(opts.map ?? {}), - instantiation, - asyncMode, + instantiation: instantiation ?? undefined, + asyncMode: asyncMode ?? undefined, importBindings: opts.importBindings ? { tag: opts.importBindings } - : null, + : undefined, validLiftingOptimization: opts.validLiftingOptimization ?? false, tracing: opts.tracing ?? false, noNodejsCompat: opts.nodejsCompat === false, @@ -163,7 +169,8 @@ export async function runTranspileComponent(component, opts) { base64Cutoff: opts.js ? 0 : (opts.base64Cutoff ?? 5000), noNamespacedExports: opts.namespacedExports === false, multiMemory: opts.multiMemory === true, - idlImports: opts.experimentalIdlImports === true, + // TODO is this used or remove + // idlImports: opts.experimentalIdlImports === true, }); let outDir = (opts.outDir ?? '').replace(/\\/g, '/'); if (!outDir.endsWith('/') && outDir !== '') { @@ -172,7 +179,8 @@ export async function runTranspileComponent(component, opts) { files = files.map(([name, source]) => [`${outDir}${name}`, source]); const jsFiles = files.find(([name]) => name.endsWith('.js')); // Generate JS if specified - if (opts.js) { + if (opts.js && jsFiles != null) { + assert(instantiation != null, "expect instantiation to be set"); jsFiles[1] = Buffer.from(await generateJS({ opts, inputJS: jsFiles[1], @@ -183,17 +191,19 @@ export async function runTranspileComponent(component, opts) { })); } // Perform minification if configured - if (opts.minify) { - ({ code: jsFiles[1] } = await minify(Buffer.from(jsFiles[1]).toString('utf8'), { + if (opts.minify && jsFiles != null) { + const { code } = await minify(Buffer.from(jsFiles[1]).toString('utf8'), { module: true, compress: { - ecma: 9, + ecma: 9, // TODO 9 is not a valid value! unsafe: true, }, mangle: { keep_classnames: true, }, - })); + }); + assert(code != null, "expected code to be set"); + jsFiles[1] = Uint8Array.from(code); } return { files: Object.fromEntries(files), imports, exports }; } @@ -264,8 +274,9 @@ async function generateJS(args) { files = files.filter(([name]) => !name.endsWith('.wasm')); // Compile all Wasm modules into ASM.js codes. const asmFiles = await Promise.all(wasmFiles.map(async ([, source]) => { - const output = (await wasm2Js(source)).toString('utf8'); - return output; + const output = await wasm2Js(source); + const outputBuffer = Buffer.from(output); + return outputBuffer.toString("utf8"); })); const asms = asmFiles .map((asm, nth) => `function asm${nth}(imports) { diff --git a/packages/jco-transpile/src/transpile.js.map b/packages/jco-transpile/src/transpile.js.map index 290cae347..cb2f46006 100644 --- a/packages/jco-transpile/src/transpile.js.map +++ b/packages/jco-transpile/src/transpile.js.map @@ -1 +1 @@ -{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"transpile.js","sourceRoot":"","sources":["transpile.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.ts b/packages/jco-transpile/src/transpile.ts index e9c6f4461..94f838f0d 100644 --- a/packages/jco-transpile/src/transpile.ts +++ b/packages/jco-transpile/src/transpile.ts @@ -1,7 +1,7 @@ import { Buffer } from 'node:buffer'; import { extname, basename, resolve } from 'node:path'; -import { minify } from 'terser'; +import { ECMA, minify } from 'terser'; import { fileURLToPath } from 'url'; import { runOptimizeComponent } from './opt.js'; @@ -11,13 +11,16 @@ import { ASYNC_WASI_IMPORTS, ASYNC_WASI_EXPORTS } from './constants.js'; import { $init as $initBindgenComponent, + AsyncMode, generate, + InstantiationMode, } from '../vendor/js-component-bindgen-component.js'; import { $init as $initWasmToolsComponent, tools, } from '../vendor/wasm-tools.js'; +import assert from 'node:assert'; const { componentEmbed, componentNew } = tools; export interface TranspilationOptions { @@ -25,7 +28,7 @@ export interface TranspilationOptions { instantiation?: 'async' | 'sync'; importBindings?: 'js' | 'optimized' | 'hybrid' | 'direct-optimized'; map?: Record; - asyncMode?: string; + asyncMode?: "sync" | "jspi"; asyncImports?: string[]; asyncExports?: string[]; asyncWasiImports?: string[]; @@ -34,7 +37,7 @@ export interface TranspilationOptions { tracing?: boolean; nodejsCompat?: boolean; tlaCompat?: boolean; - base64Cutoff?: boolean; + base64Cutoff?: number; js?: boolean; minify?: boolean; optimize?: boolean; @@ -110,16 +113,17 @@ export async function transpile( componentPath: Buffer | string | URL | FileHandle, opts: TranspilationOptions ): Promise { - let component; + const componentPathString = String(componentPath) + let component: Buffer | Uint8Array; if (!opts?.stub) { - component = await readFile(componentPath); + component = await readFile(componentPath) as Buffer; } else { try { await $initWasmToolsComponent; component = componentNew( componentEmbed({ dummy: true, - witPath: (isWindows ? '//?/' : '') + resolve(componentPath), + witPath: (isWindows ? '//?/' : '') + resolve(componentPathString), }), [] ); @@ -131,15 +135,17 @@ export async function transpile( if (!opts?.name) { opts.name = basename( - componentPath.slice(0, -extname(componentPath).length || Infinity) + componentPathString.slice(0, -extname(componentPathString).length || Infinity) ); } - if (opts?.map) { - opts.map = Object.fromEntries( - opts.map.map((mapping) => mapping.split('=')) - ); - } + // TODO is this used? either use it or remove! + // + // if (opts?.map) { + // opts.map = Object.fromEntries( + // opts.map.map((mapping) => mapping.split('=')) + // ); + // } if (opts?.asyncWasiImports) { opts.asyncImports = ASYNC_WASI_IMPORTS.concat(opts.asyncImports || []); @@ -169,7 +175,7 @@ async function wasm2Js(source: Uint8Array): Promise { '-o', ]); } catch (e) { - if (e.toString().includes('BasicBlock requested')) { + if (String(e).includes('BasicBlock requested')) { return wasm2Js(source); } throw e; @@ -193,7 +199,7 @@ export async function runTranspileComponent( } if (opts.optimize) { - ({ component } = await runOptimizeComponent(component, opts)); + ({ component } = await runOptimizeComponent(component, { ...opts, quiet: false })); } if (opts.wasiShim !== false) { @@ -212,7 +218,7 @@ export async function runTranspileComponent( ); } - let instantiation = null; + let instantiation: InstantiationMode | null = null; // Let's define `instantiation` from `--instantiation` if it's present. if (opts.instantiation) { @@ -223,25 +229,25 @@ export async function runTranspileComponent( instantiation = { tag: 'async' }; } - const asyncMode = + const asyncMode: AsyncMode | null = !opts.asyncMode || opts.asyncMode === 'sync' ? null : { - tag: opts.asyncMode, - val: { - imports: opts.asyncImports || [], - exports: opts.asyncExports || [], - }, - }; + tag: opts.asyncMode, + val: { + imports: opts.asyncImports || [], + exports: opts.asyncExports || [], + }, + }; let { files, imports, exports } = generate(component, { name: opts.name ?? 'component', map: Object.entries(opts.map ?? {}), - instantiation, - asyncMode, + instantiation: instantiation ?? undefined, + asyncMode: asyncMode ?? undefined, importBindings: opts.importBindings ? { tag: opts.importBindings } - : null, + : undefined, validLiftingOptimization: opts.validLiftingOptimization ?? false, tracing: opts.tracing ?? false, noNodejsCompat: opts.nodejsCompat === false, @@ -250,7 +256,8 @@ export async function runTranspileComponent( base64Cutoff: opts.js ? 0 : (opts.base64Cutoff ?? 5000), noNamespacedExports: opts.namespacedExports === false, multiMemory: opts.multiMemory === true, - idlImports: opts.experimentalIdlImports === true, + // TODO is this used or remove + // idlImports: opts.experimentalIdlImports === true, }); let outDir = (opts.outDir ?? '').replace(/\\/g, '/'); @@ -262,7 +269,9 @@ export async function runTranspileComponent( const jsFiles = files.find(([name]) => name.endsWith('.js')); // Generate JS if specified - if (opts.js) { + if (opts.js && jsFiles != null) { + assert(instantiation != null, "expect instantiation to be set") + jsFiles[1] = Buffer.from( await generateJS({ opts, @@ -276,20 +285,22 @@ export async function runTranspileComponent( } // Perform minification if configured - if (opts.minify) { - ({ code: jsFiles[1] } = await minify( + if (opts.minify && jsFiles != null) { + const { code } = await minify( Buffer.from(jsFiles[1]).toString('utf8'), { module: true, compress: { - ecma: 9, + ecma: 9 as ECMA, // TODO 9 is not a valid value! unsafe: true, }, mangle: { keep_classnames: true, }, } - )); + ); + assert(code != null, "expected code to be set") + jsFiles[1] = Uint8Array.from(code); } return { files: Object.fromEntries(files), imports, exports }; @@ -374,8 +385,9 @@ async function generateJS(args: GenerateJSArgs): Promise { // Compile all Wasm modules into ASM.js codes. const asmFiles = await Promise.all( wasmFiles.map(async ([, source]) => { - const output = (await wasm2Js(source)).toString('utf8'); - return output; + const output = await wasm2Js(source); + const outputBuffer = Buffer.from(output) + return outputBuffer.toString("utf8"); }) ); @@ -383,27 +395,26 @@ async function generateJS(args: GenerateJSArgs): Promise { .map( (asm, nth) => `function asm${nth}(imports) { ${ - // strip and replace the asm instantiation wrapper - asm - .replace(/import \* as [^ ]+ from '[^']*';/g, '') - .replace('function asmFunc(imports) {', '') - .replace(/export var ([^ ]+) = ([^. ]+)\.([^ ]+);/g, '') - .replace(/var retasmFunc = [\s\S]*$/, '') - .replace(/var memasmFunc = new ArrayBuffer\(0\);/g, '') - .replace('memory.grow = __wasm_memory_grow;', '') - .trim() - }` + // strip and replace the asm instantiation wrapper + asm + .replace(/import \* as [^ ]+ from '[^']*';/g, '') + .replace('function asmFunc(imports) {', '') + .replace(/export var ([^ ]+) = ([^. ]+)\.([^ ]+);/g, '') + .replace(/var retasmFunc = [\s\S]*$/, '') + .replace(/var memasmFunc = new ArrayBuffer\(0\);/g, '') + .replace('memory.grow = __wasm_memory_grow;', '') + .trim() + }` ) .join(',\n'); // The `instantiate` function. - const instantiateFunction = `${ - withInstantiation ? 'export ' : '' - }${async_}function instantiate(imports) { + const instantiateFunction = `${withInstantiation ? 'export ' : '' + }${async_}function instantiate(imports) { const wasm_file_to_asm_index = { ${wasmFiles - .map(([path], nth) => `'${basename(path)}': ${nth}`) - .join(',\n ')} + .map(([path], nth) => `'${basename(path)}': ${nth}`) + .join(',\n ')} }; return ${await_}_instantiate( @@ -430,17 +441,17 @@ async function generateJS(args: GenerateJSArgs): Promise { if (exports.length > 0 || opts.tlaCompat) { exportDirectives = `export { ${ - // Exporting `$init` must come first to not break the transpiling tests. - opts.tlaCompat ? ' $init,\n' : '' -}${exports - .map(([name]) => { - if (name === asmMangle(name)) { - return ` ${name},`; - } else { - return ` ${asmMangle(name)} as '${name}',`; - } - }) - .join('\n')} + // Exporting `$init` must come first to not break the transpiling tests. + opts.tlaCompat ? ' $init,\n' : '' + }${exports + .map(([name]) => { + if (name === asmMangle(name)) { + return ` ${name},`; + } else { + return ` ${asmMangle(name)} as '${name}',`; + } + }) + .join('\n')} }`; } @@ -449,35 +460,35 @@ ${ .map(([name]) => `_${asmMangle(name)}`) .join(', ')}; ${exports - .map(([name, ty]) => { - if (ty === 'function') { - return `\nfunction ${asmMangle(name)} () { + .map(([name, ty]) => { + if (ty === 'function') { + return `\nfunction ${asmMangle(name)} () { return _${asmMangle(name)}.apply(this, arguments); }`; - } else { - return `\nlet ${asmMangle(name)};`; - } - }) - .join('\n')}`; + } else { + return `\nlet ${asmMangle(name)};`; + } + }) + .join('\n')}`; autoInstantiate = `${async_}function $init() { ( { ${exports - .map(([name, ty]) => { - if (ty === 'function') { - return ` '${name}': _${asmMangle(name)},`; - } else if (asmMangle(name) === name) { - return ` ${name},`; - } else { - return ` '${name}': ${asmMangle(name)},`; - } - }) - .join('\n')} + .map(([name, ty]) => { + if (ty === 'function') { + return ` '${name}': _${asmMangle(name)},`; + } else if (asmMangle(name) === name) { + return ` ${name},`; + } else { + return ` '${name}': ${asmMangle(name)},`; + } + }) + .join('\n')} } = ${await_}instantiate( { ${imports - .map((import_file, nth) => ` '${import_file}': import${nth},`) - .join('\n')} + .map((import_file, nth) => ` '${import_file}': import${nth},`) + .join('\n')} } ) ) } @@ -720,6 +731,6 @@ function asmMangle(name: string): string { // see: https://github.com/vitest-dev/vitest/issues/6953#issuecomment-2505310022 if (typeof __vite_ssr_import_meta__ !== 'undefined') { - __vite_ssr_import_meta__.resolve = (path) => + __vite_ssr_import_meta__.resolve = (path:string) => 'file://' + globalCreateRequire(import.meta.url).resolve(path); } From 3565ee519a973dc9401f94cf1d4bb9b446bda326 Mon Sep 17 00:00:00 2001 From: Elmer Bulthuis Date: Tue, 8 Jul 2025 21:57:35 +0200 Subject: [PATCH 8/8] cleanup, adds globals declaration --- packages/jco-transpile/src/common.d.ts.map | 1 - packages/jco-transpile/src/globals.d.ts | 6 ++++++ packages/jco-transpile/src/globals.js | 2 ++ packages/jco-transpile/src/globals.js.map | 1 + packages/jco-transpile/src/opt.js.map | 2 +- packages/jco-transpile/src/transpile.d.ts.map | 1 - packages/jco/src/api.d.ts | 14 +++++++------- packages/jco/src/api.d.ts.map | 2 +- 8 files changed, 18 insertions(+), 11 deletions(-) delete mode 100644 packages/jco-transpile/src/common.d.ts.map create mode 100644 packages/jco-transpile/src/globals.d.ts create mode 100644 packages/jco-transpile/src/globals.js create mode 100644 packages/jco-transpile/src/globals.js.map delete mode 100644 packages/jco-transpile/src/transpile.d.ts.map diff --git a/packages/jco-transpile/src/common.d.ts.map b/packages/jco-transpile/src/common.d.ts.map deleted file mode 100644 index 6a692ec0e..000000000 --- a/packages/jco-transpile/src/common.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["common.js"],"names":[],"mappings":"AAWA,+CAEC;AACD,0CAIC;AAED,0CASC;AAED,mEAcC;AAED,wDAoBC;AAED;;;;GAIG;AACH,6CAEC;AAWD,8FAiCC;AAhHD,gCAA8C;;AAsE9C,yFAMC"} \ No newline at end of file diff --git a/packages/jco-transpile/src/globals.d.ts b/packages/jco-transpile/src/globals.d.ts new file mode 100644 index 000000000..eebe8d24a --- /dev/null +++ b/packages/jco-transpile/src/globals.d.ts @@ -0,0 +1,6 @@ +declare global { + var __vite_ssr_import_meta__: any; + var globalCreateRequire: any; + var wasmOpt: any; +} +export {}; diff --git a/packages/jco-transpile/src/globals.js b/packages/jco-transpile/src/globals.js new file mode 100644 index 000000000..1be2b6c84 --- /dev/null +++ b/packages/jco-transpile/src/globals.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=globals.js.map \ No newline at end of file diff --git a/packages/jco-transpile/src/globals.js.map b/packages/jco-transpile/src/globals.js.map new file mode 100644 index 000000000..548d7190f --- /dev/null +++ b/packages/jco-transpile/src/globals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"globals.js","sourceRoot":"","sources":["globals.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/jco-transpile/src/opt.js.map b/packages/jco-transpile/src/opt.js.map index e692571df..98afd2100 100644 --- a/packages/jco-transpile/src/opt.js.map +++ b/packages/jco-transpile/src/opt.js.map @@ -1 +1 @@ -{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"opt.js","sourceRoot":"","sources":["opt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/jco-transpile/src/transpile.d.ts.map b/packages/jco-transpile/src/transpile.d.ts.map deleted file mode 100644 index f9dceb062..000000000 --- a/packages/jco-transpile/src/transpile.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["transpile.js"],"names":[],"mappings":"AA+CA,8DAGC;AAED,mEAMC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wCAfW,MAAM,QACN;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;CACd,GACS,OAAO,CAAC;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,CA+DvD;AAyCD,sFAoCC;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,8CAzBW,UAAU,SACV;IACN,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB,CAAC,EAAE,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,EAAE,CAAC,EAAE,IAAI,CAAC;IACV,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACS,OAAO,CAAC;IAAE,KAAK,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,EAAE,CAAA;CAAE,CAAC,CAyTnI"} \ No newline at end of file diff --git a/packages/jco/src/api.d.ts b/packages/jco/src/api.d.ts index 6c9fce0a8..6bef5ad12 100644 --- a/packages/jco/src/api.d.ts +++ b/packages/jco/src/api.d.ts @@ -2,39 +2,39 @@ * @param {Parameters[0]} binary * @return {Promise>} */ -export function print(binary: Parameters[0]): Promise>; +export function print(binary: Parameters[0]): Promise>; /** * @param {Parameters[0]} wat * @return {Promise>} */ -export function parse(wat: Parameters[0]): Promise>; +export function parse(wat: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @return {Promise>} */ -export function componentWit(binary: Parameters[0]): Promise>; +export function componentWit(binary: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @param {Parameters[1]} adapters * @return {Promise>} */ -export function componentNew(binary: Parameters[0], adapters: Parameters[1]): Promise>; +export function componentNew(binary: Parameters[0], adapters: Parameters[1]): Promise>; /** * @param {Parameters[0]} embedOpts * @return {Promise>} */ -export function componentEmbed(embedOpts: Parameters[0]): Promise>; +export function componentEmbed(embedOpts: Parameters[0]): Promise>; /** * @param {Parameters[0]} binary * @param {Parameters[1]} metadata * @return {Promise>} */ -export function metadataAdd(binary: Parameters[0], metadata: Parameters[1]): Promise>; +export function metadataAdd(binary: Parameters[0], metadata: Parameters[1]): Promise>; /** * @param {Parameters[0]} binary * @return {Promise>} */ -export function metadataShow(binary: Parameters[0]): Promise>; +export function metadataShow(binary: Parameters[0]): Promise>; export function preview1AdapterCommandPath(): URL; export function preview1AdapterReactorPath(): URL; export { optimizeComponent as opt } from "./cmd/opt.js"; diff --git a/packages/jco/src/api.d.ts.map b/packages/jco/src/api.d.ts.map index 80287a46a..da3dcb6e1 100644 --- a/packages/jco/src/api.d.ts.map +++ b/packages/jco/src/api.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["api.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,8BAHW,UAAU,CAAC,GAAoC,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,GAAoC,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,2BAHW,UAAU,CAAC,GAAoC,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,GAAoC,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD;;;;GAIG;AACH,qCAJW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,YAC1D,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD;;;GAGG;AACH,0CAHW,UAAU,CAAC,GAA6C,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,UAAU,CAAC,GAA6C,CAAC,CAAC,CAK7E;AACD;;;;GAIG;AACH,oCAJW,UAAU,CAAC,GAA0C,CAAC,CAAC,CAAC,CAAC,YACzD,UAAU,CAAC,GAA0C,CAAC,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,GAA0C,CAAC,CAAC,CAK1E;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,GAA2C,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,GAA2C,CAAC,CAAC,CAK3E;AACD,kDAKC;AACD,kDAKC"} \ No newline at end of file +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["api.js"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,8BAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,2BAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAKpE;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD;;;;GAIG;AACH,qCAJW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAC1D,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD;;;GAGG;AACH,0CAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAK7E;AACD;;;;GAIG;AACH,oCAJW,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,YACzD,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAK1E;AACD;;;GAGG;AACH,qCAHW,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAK3E;AACD,kDAKC;AACD,kDAKC"} \ No newline at end of file