From 5555091e1bfbe0a9941c3facfbdd2b1713cffdf7 Mon Sep 17 00:00:00 2001 From: rUv Date: Tue, 30 Dec 2025 16:41:03 +0000 Subject: [PATCH] fix(rudag): include WASM binaries in npm package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove wasm-pack generated .gitignore files that were blocking npm from including the pkg/ and pkg-node/ WASM binaries. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- npm/packages/rudag/pkg-node/package.json | 16 + .../rudag/pkg-node/ruvector_dag_wasm.d.ts | 60 +++ .../rudag/pkg-node/ruvector_dag_wasm.js | 367 +++++++++++++++++ .../rudag/pkg-node/ruvector_dag_wasm_bg.wasm | Bin 0 -> 132614 bytes .../pkg-node/ruvector_dag_wasm_bg.wasm.d.ts | 20 + npm/packages/rudag/pkg/package.json | 22 ++ npm/packages/rudag/pkg/ruvector_dag_wasm.d.ts | 60 +++ npm/packages/rudag/pkg/ruvector_dag_wasm.js | 4 + .../rudag/pkg/ruvector_dag_wasm_bg.js | 370 ++++++++++++++++++ .../rudag/pkg/ruvector_dag_wasm_bg.wasm | Bin 0 -> 132616 bytes .../rudag/pkg/ruvector_dag_wasm_bg.wasm.d.ts | 20 + 11 files changed, 939 insertions(+) create mode 100644 npm/packages/rudag/pkg-node/package.json create mode 100644 npm/packages/rudag/pkg-node/ruvector_dag_wasm.d.ts create mode 100644 npm/packages/rudag/pkg-node/ruvector_dag_wasm.js create mode 100644 npm/packages/rudag/pkg-node/ruvector_dag_wasm_bg.wasm create mode 100644 npm/packages/rudag/pkg-node/ruvector_dag_wasm_bg.wasm.d.ts create mode 100644 npm/packages/rudag/pkg/package.json create mode 100644 npm/packages/rudag/pkg/ruvector_dag_wasm.d.ts create mode 100644 npm/packages/rudag/pkg/ruvector_dag_wasm.js create mode 100644 npm/packages/rudag/pkg/ruvector_dag_wasm_bg.js create mode 100644 npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm create mode 100644 npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm.d.ts diff --git a/npm/packages/rudag/pkg-node/package.json b/npm/packages/rudag/pkg-node/package.json new file mode 100644 index 00000000..10e55877 --- /dev/null +++ b/npm/packages/rudag/pkg-node/package.json @@ -0,0 +1,16 @@ +{ + "name": "ruvector-dag-wasm", + "collaborators": [ + "RuVector Contributors" + ], + "description": "Minimal WASM DAG library for browser and embedded systems", + "version": "0.1.0", + "license": "MIT OR Apache-2.0", + "files": [ + "ruvector_dag_wasm_bg.wasm", + "ruvector_dag_wasm.js", + "ruvector_dag_wasm.d.ts" + ], + "main": "ruvector_dag_wasm.js", + "types": "ruvector_dag_wasm.d.ts" +} \ No newline at end of file diff --git a/npm/packages/rudag/pkg-node/ruvector_dag_wasm.d.ts b/npm/packages/rudag/pkg-node/ruvector_dag_wasm.d.ts new file mode 100644 index 00000000..51ccaf6c --- /dev/null +++ b/npm/packages/rudag/pkg-node/ruvector_dag_wasm.d.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ + +export class WasmDag { + free(): void; + [Symbol.dispose](): void; + /** + * Get number of edges + */ + edge_count(): number; + /** + * Deserialize from bytes + */ + static from_bytes(data: Uint8Array): WasmDag; + /** + * Get number of nodes + */ + node_count(): number; + /** + * Find critical path (longest path by cost) + * Returns JSON: {"path": [node_ids], "cost": total} + */ + critical_path(): any; + /** + * Create new empty DAG + */ + constructor(); + /** + * Serialize to JSON + */ + to_json(): string; + /** + * Add edge from -> to + * Returns false if creates cycle (simple check) + */ + add_edge(from: number, to: number): boolean; + /** + * Add a node with operator type and cost + * Returns node ID + */ + add_node(op: number, cost: number): number; + /** + * Serialize to bytes (bincode format) + */ + to_bytes(): Uint8Array; + /** + * Compute attention scores for nodes + * mechanism: 0=topological, 1=critical_path, 2=uniform + */ + attention(mechanism: number): Float32Array; + /** + * Deserialize from JSON + */ + static from_json(json: string): WasmDag; + /** + * Topological sort using Kahn's algorithm + * Returns node IDs in topological order + */ + topo_sort(): Uint32Array; +} diff --git a/npm/packages/rudag/pkg-node/ruvector_dag_wasm.js b/npm/packages/rudag/pkg-node/ruvector_dag_wasm.js new file mode 100644 index 00000000..e7521397 --- /dev/null +++ b/npm/packages/rudag/pkg-node/ruvector_dag_wasm.js @@ -0,0 +1,367 @@ + +let imports = {}; +imports['__wbindgen_placeholder__'] = module.exports; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +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; +} + +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); +} + +let cachedUint32ArrayMemory0 = null; +function getUint32ArrayMemory0() { + if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { + cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32ArrayMemory0; +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getObject(idx) { return heap[idx]; } + +let heap = new Array(128).fill(undefined); +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8ArrayMemory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + 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 = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +function decodeText(ptr, len) { + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +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 + }; + } +} + +let WASM_VECTOR_LEN = 0; + +const WasmDagFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmdag_free(ptr >>> 0, 1)); + +/** + * Minimal DAG structure for WASM + * Self-contained with no external dependencies beyond wasm-bindgen + */ +class WasmDag { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(WasmDag.prototype); + obj.__wbg_ptr = ptr; + WasmDagFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmDagFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmdag_free(ptr, 0); + } + /** + * Get number of edges + * @returns {number} + */ + edge_count() { + const ret = wasm.wasmdag_edge_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Deserialize from bytes + * @param {Uint8Array} data + * @returns {WasmDag} + */ + static from_bytes(data) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export); + const len0 = WASM_VECTOR_LEN; + wasm.wasmdag_from_bytes(retptr, ptr0, len0); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return WasmDag.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get number of nodes + * @returns {number} + */ + node_count() { + const ret = wasm.wasmdag_node_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Find critical path (longest path by cost) + * Returns JSON: {"path": [node_ids], "cost": total} + * @returns {any} + */ + critical_path() { + const ret = wasm.wasmdag_critical_path(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create new empty DAG + */ + constructor() { + const ret = wasm.wasmdag_new(); + this.__wbg_ptr = ret >>> 0; + WasmDagFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * Serialize to JSON + * @returns {string} + */ + to_json() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_to_json(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1); + } + } + /** + * Add edge from -> to + * Returns false if creates cycle (simple check) + * @param {number} from + * @param {number} to + * @returns {boolean} + */ + add_edge(from, to) { + const ret = wasm.wasmdag_add_edge(this.__wbg_ptr, from, to); + return ret !== 0; + } + /** + * Add a node with operator type and cost + * Returns node ID + * @param {number} op + * @param {number} cost + * @returns {number} + */ + add_node(op, cost) { + const ret = wasm.wasmdag_add_node(this.__wbg_ptr, op, cost); + return ret >>> 0; + } + /** + * Serialize to bytes (bincode format) + * @returns {Uint8Array} + */ + to_bytes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_to_bytes(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Compute attention scores for nodes + * mechanism: 0=topological, 1=critical_path, 2=uniform + * @param {number} mechanism + * @returns {Float32Array} + */ + attention(mechanism) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_attention(retptr, this.__wbg_ptr, mechanism); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayF32FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Deserialize from JSON + * @param {string} json + * @returns {WasmDag} + */ + static from_json(json) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(json, wasm.__wbindgen_export, wasm.__wbindgen_export3); + const len0 = WASM_VECTOR_LEN; + wasm.wasmdag_from_json(retptr, ptr0, len0); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return WasmDag.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Topological sort using Kahn's algorithm + * Returns node IDs in topological order + * @returns {Uint32Array} + */ + topo_sort() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_topo_sort(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayU32FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +if (Symbol.dispose) WasmDag.prototype[Symbol.dispose] = WasmDag.prototype.free; +exports.WasmDag = WasmDag; + +exports.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + +exports.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; + +const wasmPath = `${__dirname}/ruvector_dag_wasm_bg.wasm`; +const wasmBytes = require('fs').readFileSync(wasmPath); +const wasmModule = new WebAssembly.Module(wasmBytes); +const wasm = exports.__wasm = new WebAssembly.Instance(wasmModule, imports).exports; diff --git a/npm/packages/rudag/pkg-node/ruvector_dag_wasm_bg.wasm b/npm/packages/rudag/pkg-node/ruvector_dag_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7aef6cf32721c2647c39936bd69423bacbc61e31 GIT binary patch literal 132614 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 void; +export const wasmdag_add_edge: (a: number, b: number, c: number) => number; +export const wasmdag_add_node: (a: number, b: number, c: number) => number; +export const wasmdag_attention: (a: number, b: number, c: number) => void; +export const wasmdag_critical_path: (a: number) => number; +export const wasmdag_edge_count: (a: number) => number; +export const wasmdag_from_bytes: (a: number, b: number, c: number) => void; +export const wasmdag_from_json: (a: number, b: number, c: number) => void; +export const wasmdag_new: () => number; +export const wasmdag_node_count: (a: number) => number; +export const wasmdag_to_bytes: (a: number, b: number) => void; +export const wasmdag_to_json: (a: number, b: number) => void; +export const wasmdag_topo_sort: (a: number, b: number) => void; +export const __wbindgen_add_to_stack_pointer: (a: number) => number; +export const __wbindgen_export: (a: number, b: number) => number; +export const __wbindgen_export2: (a: number, b: number, c: number) => void; +export const __wbindgen_export3: (a: number, b: number, c: number, d: number) => number; diff --git a/npm/packages/rudag/pkg/package.json b/npm/packages/rudag/pkg/package.json new file mode 100644 index 00000000..51bbf724 --- /dev/null +++ b/npm/packages/rudag/pkg/package.json @@ -0,0 +1,22 @@ +{ + "name": "ruvector-dag-wasm", + "type": "module", + "collaborators": [ + "RuVector Contributors" + ], + "description": "Minimal WASM DAG library for browser and embedded systems", + "version": "0.1.0", + "license": "MIT OR Apache-2.0", + "files": [ + "ruvector_dag_wasm_bg.wasm", + "ruvector_dag_wasm.js", + "ruvector_dag_wasm_bg.js", + "ruvector_dag_wasm.d.ts" + ], + "main": "ruvector_dag_wasm.js", + "types": "ruvector_dag_wasm.d.ts", + "sideEffects": [ + "./ruvector_dag_wasm.js", + "./snippets/*" + ] +} \ No newline at end of file diff --git a/npm/packages/rudag/pkg/ruvector_dag_wasm.d.ts b/npm/packages/rudag/pkg/ruvector_dag_wasm.d.ts new file mode 100644 index 00000000..51ccaf6c --- /dev/null +++ b/npm/packages/rudag/pkg/ruvector_dag_wasm.d.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ + +export class WasmDag { + free(): void; + [Symbol.dispose](): void; + /** + * Get number of edges + */ + edge_count(): number; + /** + * Deserialize from bytes + */ + static from_bytes(data: Uint8Array): WasmDag; + /** + * Get number of nodes + */ + node_count(): number; + /** + * Find critical path (longest path by cost) + * Returns JSON: {"path": [node_ids], "cost": total} + */ + critical_path(): any; + /** + * Create new empty DAG + */ + constructor(); + /** + * Serialize to JSON + */ + to_json(): string; + /** + * Add edge from -> to + * Returns false if creates cycle (simple check) + */ + add_edge(from: number, to: number): boolean; + /** + * Add a node with operator type and cost + * Returns node ID + */ + add_node(op: number, cost: number): number; + /** + * Serialize to bytes (bincode format) + */ + to_bytes(): Uint8Array; + /** + * Compute attention scores for nodes + * mechanism: 0=topological, 1=critical_path, 2=uniform + */ + attention(mechanism: number): Float32Array; + /** + * Deserialize from JSON + */ + static from_json(json: string): WasmDag; + /** + * Topological sort using Kahn's algorithm + * Returns node IDs in topological order + */ + topo_sort(): Uint32Array; +} diff --git a/npm/packages/rudag/pkg/ruvector_dag_wasm.js b/npm/packages/rudag/pkg/ruvector_dag_wasm.js new file mode 100644 index 00000000..64ea79ed --- /dev/null +++ b/npm/packages/rudag/pkg/ruvector_dag_wasm.js @@ -0,0 +1,4 @@ +import * as wasm from "./ruvector_dag_wasm_bg.wasm"; +export * from "./ruvector_dag_wasm_bg.js"; +import { __wbg_set_wasm } from "./ruvector_dag_wasm_bg.js"; +__wbg_set_wasm(wasm); \ No newline at end of file diff --git a/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.js b/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.js new file mode 100644 index 00000000..11b0b85f --- /dev/null +++ b/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.js @@ -0,0 +1,370 @@ +let wasm; +export function __wbg_set_wasm(val) { + wasm = val; +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function getArrayF32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +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; +} + +let cachedFloat32ArrayMemory0 = null; +function getFloat32ArrayMemory0() { + if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) { + cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer); + } + return cachedFloat32ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); +} + +let cachedUint32ArrayMemory0 = null; +function getUint32ArrayMemory0() { + if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { + cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32ArrayMemory0; +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getObject(idx) { return heap[idx]; } + +let heap = new Array(128).fill(undefined); +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8ArrayMemory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + 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 = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +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 cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +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 + }; + } +} + +let WASM_VECTOR_LEN = 0; + +const WasmDagFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_wasmdag_free(ptr >>> 0, 1)); + +/** + * Minimal DAG structure for WASM + * Self-contained with no external dependencies beyond wasm-bindgen + */ +export class WasmDag { + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(WasmDag.prototype); + obj.__wbg_ptr = ptr; + WasmDagFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WasmDagFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_wasmdag_free(ptr, 0); + } + /** + * Get number of edges + * @returns {number} + */ + edge_count() { + const ret = wasm.wasmdag_edge_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Deserialize from bytes + * @param {Uint8Array} data + * @returns {WasmDag} + */ + static from_bytes(data) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export); + const len0 = WASM_VECTOR_LEN; + wasm.wasmdag_from_bytes(retptr, ptr0, len0); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return WasmDag.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get number of nodes + * @returns {number} + */ + node_count() { + const ret = wasm.wasmdag_node_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Find critical path (longest path by cost) + * Returns JSON: {"path": [node_ids], "cost": total} + * @returns {any} + */ + critical_path() { + const ret = wasm.wasmdag_critical_path(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create new empty DAG + */ + constructor() { + const ret = wasm.wasmdag_new(); + this.__wbg_ptr = ret >>> 0; + WasmDagFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * Serialize to JSON + * @returns {string} + */ + to_json() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_to_json(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1); + } + } + /** + * Add edge from -> to + * Returns false if creates cycle (simple check) + * @param {number} from + * @param {number} to + * @returns {boolean} + */ + add_edge(from, to) { + const ret = wasm.wasmdag_add_edge(this.__wbg_ptr, from, to); + return ret !== 0; + } + /** + * Add a node with operator type and cost + * Returns node ID + * @param {number} op + * @param {number} cost + * @returns {number} + */ + add_node(op, cost) { + const ret = wasm.wasmdag_add_node(this.__wbg_ptr, op, cost); + return ret >>> 0; + } + /** + * Serialize to bytes (bincode format) + * @returns {Uint8Array} + */ + to_bytes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_to_bytes(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Compute attention scores for nodes + * mechanism: 0=topological, 1=critical_path, 2=uniform + * @param {number} mechanism + * @returns {Float32Array} + */ + attention(mechanism) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_attention(retptr, this.__wbg_ptr, mechanism); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayF32FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Deserialize from JSON + * @param {string} json + * @returns {WasmDag} + */ + static from_json(json) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(json, wasm.__wbindgen_export, wasm.__wbindgen_export3); + const len0 = WASM_VECTOR_LEN; + wasm.wasmdag_from_json(retptr, ptr0, len0); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true); + if (r2) { + throw takeObject(r1); + } + return WasmDag.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Topological sort using Kahn's algorithm + * Returns node IDs in topological order + * @returns {Uint32Array} + */ + topo_sort() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasmdag_topo_sort(retptr, this.__wbg_ptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayU32FromWasm0(r0, r1).slice(); + wasm.__wbindgen_export2(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +if (Symbol.dispose) WasmDag.prototype[Symbol.dispose] = WasmDag.prototype.free; + +export function __wbg___wbindgen_throw_dd24417ed36fc46e(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + +export function __wbindgen_cast_2241b6af4c4b2941(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; diff --git a/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm b/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4cb6aeb4a926e0467adeb62ed49543f0d57adcd6 GIT binary patch literal 132616 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 iJ~F4Pq00|{)@R|vbHeiZM}WZ_Ey literal 0 HcmV?d00001 diff --git a/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm.d.ts b/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm.d.ts new file mode 100644 index 00000000..a4b06e89 --- /dev/null +++ b/npm/packages/rudag/pkg/ruvector_dag_wasm_bg.wasm.d.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export const __wbg_wasmdag_free: (a: number, b: number) => void; +export const wasmdag_add_edge: (a: number, b: number, c: number) => number; +export const wasmdag_add_node: (a: number, b: number, c: number) => number; +export const wasmdag_attention: (a: number, b: number, c: number) => void; +export const wasmdag_critical_path: (a: number) => number; +export const wasmdag_edge_count: (a: number) => number; +export const wasmdag_from_bytes: (a: number, b: number, c: number) => void; +export const wasmdag_from_json: (a: number, b: number, c: number) => void; +export const wasmdag_new: () => number; +export const wasmdag_node_count: (a: number) => number; +export const wasmdag_to_bytes: (a: number, b: number) => void; +export const wasmdag_to_json: (a: number, b: number) => void; +export const wasmdag_topo_sort: (a: number, b: number) => void; +export const __wbindgen_add_to_stack_pointer: (a: number) => number; +export const __wbindgen_export: (a: number, b: number) => number; +export const __wbindgen_export2: (a: number, b: number, c: number) => void; +export const __wbindgen_export3: (a: number, b: number, c: number, d: number) => number;