diff --git a/crates/yaak-templates/build-wasm.cjs b/crates/yaak-templates/build-wasm.cjs index 9bf9eddb..6a956ead 100644 --- a/crates/yaak-templates/build-wasm.cjs +++ b/crates/yaak-templates/build-wasm.cjs @@ -1,5 +1,6 @@ const { execSync } = require("node:child_process"); const fs = require("node:fs"); +const os = require("node:os"); const path = require("node:path"); if (process.env.SKIP_WASM_BUILD === "1") { @@ -7,7 +8,18 @@ if (process.env.SKIP_WASM_BUILD === "1") { return; } -execSync("wasm-pack build --target bundler", { stdio: "inherit" }); +// Remap machine-specific paths that rustc embeds into the binary (panic +// location strings), so builds are reproducible across machines +const sysroot = execSync("rustc --print sysroot").toString().trim(); +const cargoHome = process.env.CARGO_HOME ?? path.join(os.homedir(), ".cargo"); + +execSync("wasm-pack build --target bundler", { + stdio: "inherit", + env: { + ...process.env, + RUSTFLAGS: `--remap-path-prefix=${cargoHome}=/cargo --remap-path-prefix=${sysroot}=/rustc`, + }, +}); // Rewrite the generated entry to use Vite's ?init import style instead of // the ES Module Integration style that wasm-pack generates, which Vite/rolldown diff --git a/crates/yaak-templates/pkg/yaak_templates.d.ts b/crates/yaak-templates/pkg/yaak_templates.d.ts index 5d24deef..97f4ce2b 100644 --- a/crates/yaak-templates/pkg/yaak_templates.d.ts +++ b/crates/yaak-templates/pkg/yaak_templates.d.ts @@ -1,5 +1,8 @@ /* tslint:disable */ /* eslint-disable */ -export function unescape_template(template: string): any; + export function escape_template(template: string): any; + export function parse_template(template: string): any; + +export function unescape_template(template: string): any; diff --git a/crates/yaak-templates/pkg/yaak_templates_bg.js b/crates/yaak-templates/pkg/yaak_templates_bg.js index 4d11efa6..898cc0ec 100644 --- a/crates/yaak-templates/pkg/yaak_templates_bg.js +++ b/crates/yaak-templates/pkg/yaak_templates_bg.js @@ -1,9 +1,82 @@ -let wasm; -export function __wbg_set_wasm(val) { - wasm = val; +/** + * @param {string} template + * @returns {any} + */ +export function escape_template(template) { + const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.escape_template(ptr0, len0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); } +/** + * @param {string} template + * @returns {any} + */ +export function parse_template(template) { + const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.parse_template(ptr0, len0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} +/** + * @param {string} template + * @returns {any} + */ +export function unescape_template(template) { + const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.unescape_template(ptr0, len0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} +export function __wbg___wbindgen_debug_string_edece8177ad01481(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); +} +export function __wbg___wbindgen_throw_9c31b086c2b26051(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +} +export function __wbg_new_02d162bc6cf02f60() { + const ret = new Object(); + return ret; +} +export function __wbg_new_310879b66b6e95e1() { + const ret = new Array(); + return ret; +} +export function __wbg_set_6be42768c690e380(arg0, arg1, arg2) { + arg0[arg1] = arg2; +} +export function __wbg_set_78ea6a19f4818587(arg0, arg1, arg2) { + arg0[arg1 >>> 0] = arg2; +} +export function __wbindgen_cast_0000000000000001(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return ret; +} +export function __wbindgen_init_externref_table() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); +} function debugString(val) { // primitive types const type = typeof val; @@ -69,10 +142,19 @@ function debugString(val) { return className; } -let WASM_VECTOR_LEN = 0; +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} let cachedUint8ArrayMemory0 = null; - function getUint8ArrayMemory0() { if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); @@ -80,25 +162,7 @@ function getUint8ArrayMemory0() { return cachedUint8ArrayMemory0; } -const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; - -let cachedTextEncoder = new lTextEncoder('utf-8'); - -const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; -}); - function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { const buf = cachedTextEncoder.encode(arg); const ptr = malloc(buf.length, 1) >>> 0; @@ -119,14 +183,13 @@ function passStringToWasm0(arg, malloc, realloc) { if (code > 0x7F) break; mem[ptr + offset] = code; } - if (offset !== len) { if (offset !== 0) { arg = arg.slice(offset); } ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); + const ret = cachedTextEncoder.encodeInto(arg, view); offset += ret.written; ptr = realloc(ptr, len, offset, 1) >>> 0; @@ -136,116 +199,43 @@ function passStringToWasm0(arg, malloc, realloc) { return ptr; } -let cachedDataViewMemory0 = null; - -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} - -const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; - -let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} - function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_export_2.get(idx); + const value = wasm.__wbindgen_externrefs.get(idx); wasm.__externref_table_dealloc(idx); return value; } -/** - * @param {string} template - * @returns {any} - */ -export function unescape_template(template) { - const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.unescape_template(ptr0, len0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; } - return takeFromExternrefTable0(ret[0]); + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); } -/** - * @param {string} template - * @returns {any} - */ -export function escape_template(template) { - const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.escape_template(ptr0, len0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return takeFromExternrefTable0(ret[0]); +const cachedTextEncoder = new TextEncoder(); + +if (!('encodeInto' in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; } -/** - * @param {string} template - * @returns {any} - */ -export function parse_template(template) { - const ptr0 = passStringToWasm0(template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.parse_template(ptr0, len0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return takeFromExternrefTable0(ret[0]); +let WASM_VECTOR_LEN = 0; + + +let wasm; +export function __wbg_set_wasm(val) { + wasm = val; } - -export function __wbg_new_405e22f390576ce2() { - const ret = new Object(); - return ret; -}; - -export function __wbg_new_78feb108b6472713() { - const ret = new Array(); - return ret; -}; - -export function __wbg_set_37837023f3d740e8(arg0, arg1, arg2) { - arg0[arg1 >>> 0] = arg2; -}; - -export function __wbg_set_3f1d0b984ed272ed(arg0, arg1, arg2) { - arg0[arg1] = arg2; -}; - -export function __wbindgen_debug_string(arg0, arg1) { - const ret = debugString(arg1); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); -}; - -export function __wbindgen_init_externref_table() { - const table = wasm.__wbindgen_export_2; - const offset = table.grow(4); - table.set(0, undefined); - table.set(offset + 0, undefined); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - ; -}; - -export function __wbindgen_string_new(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return ret; -}; - -export function __wbindgen_throw(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); -}; - diff --git a/crates/yaak-templates/pkg/yaak_templates_bg.wasm b/crates/yaak-templates/pkg/yaak_templates_bg.wasm index b29f4b9b..e02abbca 100644 Binary files a/crates/yaak-templates/pkg/yaak_templates_bg.wasm and b/crates/yaak-templates/pkg/yaak_templates_bg.wasm differ diff --git a/crates/yaak-templates/pkg/yaak_templates_bg.wasm.d.ts b/crates/yaak-templates/pkg/yaak_templates_bg.wasm.d.ts index d8bbabb6..3fdf6141 100644 --- a/crates/yaak-templates/pkg/yaak_templates_bg.wasm.d.ts +++ b/crates/yaak-templates/pkg/yaak_templates_bg.wasm.d.ts @@ -6,6 +6,6 @@ export const parse_template: (a: number, b: number) => [number, number, number]; export const unescape_template: (a: number, b: number) => [number, number, number]; export const __wbindgen_malloc: (a: number, b: number) => number; export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; -export const __wbindgen_export_2: WebAssembly.Table; +export const __wbindgen_externrefs: WebAssembly.Table; export const __externref_table_dealloc: (a: number) => void; export const __wbindgen_start: () => void;