@elarsaks/umap-wasm 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -39,6 +39,22 @@ The WASM loader will look for files at `/wasm/web/umap_wasm_core.js` and `/wasm/
39
39
 
40
40
  Node.js environments don't require this step.
41
41
 
42
+ ## Reproducible WASM build (short note)
43
+
44
+ If you need to rebuild the WASM artifacts locally, use the locked toolchain and skip post-build optimization to avoid runtime issues with externref tables. Recommended minimal steps:
45
+
46
+ - Ensure the repository `rust-toolchain.toml` is respected (Rust 1.83.0).
47
+ - Use `wasm-pack 0.13.1` and Node.js `22.22.0`.
48
+ - Build with `--no-opt` to skip `wasm-opt` (example):
49
+
50
+ ```bash
51
+ cd wasm
52
+ RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target web --out-dir pkg/web --release
53
+ RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target nodejs --out-dir pkg/node --release
54
+ ```
55
+
56
+ Skipping `wasm-opt` avoids a post-processing pass that may break WebAssembly externref table handling; it yields larger but correct binaries. Only publish optimized binaries after ensuring they pass the full test-suite.
57
+
42
58
  ## 🚀 Usage
43
59
 
44
60
  ### Basic Usage (Synchronous)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elarsaks/umap-wasm",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "WebAssembly-Accelerated UMAP for JavaScript - High-performance dimension reduction for browser and Node.js",
5
5
  "keywords": [
6
6
  "umap",
@@ -51,7 +51,7 @@
51
51
  "preview": "npx serve . -p 4173",
52
52
  "bundle": "rm -rf lib && webpack --config ./webpack/lib.config.mjs && webpack --config ./webpack/lib.min.config.mjs",
53
53
  "build": "rm -rf dist && tsc && yarn bundle",
54
- "build:wasm": "cd wasm && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --target web --out-dir pkg/web --release && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --target nodejs --out-dir pkg/node --release && rm -f pkg/web/.gitignore pkg/node/.gitignore"
54
+ "build:wasm": "cd wasm && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target web --out-dir pkg/web --release && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target nodejs --out-dir pkg/node --release && rm -f pkg/web/.gitignore pkg/node/.gitignore"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@playwright/test": "^1.57.0",
@@ -10,58 +10,58 @@ export class FlatTree {
10
10
  */
11
11
  hyperplanes(): Float64Array;
12
12
  /**
13
- * Get the dimensionality
13
+ * Get the offsets as a Float64Array
14
14
  */
15
- dim(): number;
15
+ offsets(): Float64Array;
16
16
  /**
17
- * Get the leaf indices array
17
+ * Get the children array (pairs of child indices)
18
18
  */
19
- indices(): Int32Array;
19
+ children(): Int32Array;
20
20
  /**
21
- * Get number of nodes
21
+ * Get the leaf indices array
22
22
  */
23
- n_nodes(): number;
23
+ indices(): Int32Array;
24
24
  /**
25
- * Get the offsets as a Float64Array
25
+ * Get the dimensionality
26
26
  */
27
- offsets(): Float64Array;
27
+ dim(): number;
28
28
  /**
29
- * Get the children array (pairs of child indices)
29
+ * Get number of nodes
30
30
  */
31
- children(): Int32Array;
31
+ n_nodes(): number;
32
32
  }
33
33
 
34
34
  export class OptimizerState {
35
35
  free(): void;
36
36
  [Symbol.dispose](): void;
37
37
  /**
38
- * Seed the internal RNG used by the optimizer.
39
- */
40
- set_rng_seed(seed: bigint): void;
41
- /**
42
- * Get the length of the embedding buffer.
38
+ * Create a new optimizer state with the given parameters.
43
39
  */
44
- head_embedding_len(): number;
40
+ constructor(head: Uint32Array, tail: Uint32Array, head_embedding: Float64Array, tail_embedding: Float64Array, epochs_per_sample: Float64Array, epochs_per_negative_sample: Float64Array, move_other: boolean, initial_alpha: number, gamma: number, a: number, b: number, dim: number, n_epochs: number, n_vertices: number);
45
41
  /**
46
42
  * Get a pointer to the embedding buffer (for zero-copy views).
47
43
  */
48
44
  head_embedding_ptr(): number;
49
45
  /**
50
- * Create a new optimizer state with the given parameters.
46
+ * Get the length of the embedding buffer.
51
47
  */
52
- constructor(head: Uint32Array, tail: Uint32Array, head_embedding: Float64Array, tail_embedding: Float64Array, epochs_per_sample: Float64Array, epochs_per_negative_sample: Float64Array, move_other: boolean, initial_alpha: number, gamma: number, a: number, b: number, dim: number, n_epochs: number, n_vertices: number);
48
+ head_embedding_len(): number;
53
49
  /**
54
- * Get the current RNG seed/state.
50
+ * Seed the internal RNG used by the optimizer.
55
51
  */
56
- rng_seed(): bigint;
52
+ set_rng_seed(seed: bigint): void;
57
53
  /**
58
- * Get the current epoch number.
54
+ * Get the current RNG seed/state.
59
55
  */
60
- readonly current_epoch: number;
56
+ rng_seed(): bigint;
61
57
  /**
62
58
  * Get the current embedding as a flat array.
63
59
  */
64
60
  readonly head_embedding: Float64Array;
61
+ /**
62
+ * Get the current epoch number.
63
+ */
64
+ readonly current_epoch: number;
65
65
  /**
66
66
  * Get the total number of epochs.
67
67
  */
@@ -71,22 +71,6 @@ export class OptimizerState {
71
71
  export class WasmSparseMatrix {
72
72
  free(): void;
73
73
  [Symbol.dispose](): void;
74
- /**
75
- * Get all values
76
- */
77
- get_values(): Float64Array;
78
- /**
79
- * Apply a scalar operation to all values (map with scalar)
80
- */
81
- map_scalar(operation: string, scalar: number): WasmSparseMatrix;
82
- /**
83
- * Get all entries as flat arrays [rows, cols, values] - ordered by row then col
84
- */
85
- get_all_ordered(): Float64Array;
86
- /**
87
- * Get a value at the given row and column, with a default value if not present
88
- */
89
- get(row: number, col: number, default_value: number): number;
90
74
  /**
91
75
  * Create a new sparse matrix from rows, cols, values, and dimensions.
92
76
  *
@@ -98,18 +82,14 @@ export class WasmSparseMatrix {
98
82
  * * `n_cols` - Number of columns in the matrix
99
83
  */
100
84
  constructor(rows: Int32Array, cols: Int32Array, values: Float64Array, n_rows: number, n_cols: number);
101
- /**
102
- * Get number of non-zero entries
103
- */
104
- nnz(): number;
105
85
  /**
106
86
  * Set a value at the given row and column
107
87
  */
108
88
  set(row: number, col: number, value: number): void;
109
89
  /**
110
- * Get all column indices
90
+ * Get a value at the given row and column, with a default value if not present
111
91
  */
112
- get_cols(): Int32Array;
92
+ get(row: number, col: number, default_value: number): number;
113
93
  /**
114
94
  * Get the dimensions as [nRows, nCols]
115
95
  */
@@ -118,18 +98,38 @@ export class WasmSparseMatrix {
118
98
  * Get all row indices
119
99
  */
120
100
  get_rows(): Int32Array;
101
+ /**
102
+ * Get all column indices
103
+ */
104
+ get_cols(): Int32Array;
105
+ /**
106
+ * Get all values
107
+ */
108
+ get_values(): Float64Array;
109
+ /**
110
+ * Get all entries as flat arrays [rows, cols, values] - ordered by row then col
111
+ */
112
+ get_all_ordered(): Float64Array;
113
+ /**
114
+ * Get number of non-zero entries
115
+ */
116
+ nnz(): number;
121
117
  /**
122
118
  * Convert to dense 2D array (row-major, flattened)
123
119
  */
124
120
  to_array(): Float64Array;
125
121
  /**
126
- * Get the number of columns
122
+ * Apply a scalar operation to all values (map with scalar)
127
123
  */
128
- readonly n_cols: number;
124
+ map_scalar(operation: string, scalar: number): WasmSparseMatrix;
129
125
  /**
130
126
  * Get the number of rows
131
127
  */
132
128
  readonly n_rows: number;
129
+ /**
130
+ * Get the number of columns
131
+ */
132
+ readonly n_cols: number;
133
133
  }
134
134
 
135
135
  /**
@@ -181,12 +181,22 @@ class FlatTree {
181
181
  return ret;
182
182
  }
183
183
  /**
184
- * Get the dimensionality
185
- * @returns {number}
184
+ * Get the offsets as a Float64Array
185
+ * @returns {Float64Array}
186
186
  */
187
- dim() {
188
- const ret = wasm.flattree_dim(this.__wbg_ptr);
189
- return ret >>> 0;
187
+ offsets() {
188
+ const ret = wasm.flattree_offsets(this.__wbg_ptr);
189
+ return ret;
190
+ }
191
+ /**
192
+ * Get the children array (pairs of child indices)
193
+ * @returns {Int32Array}
194
+ */
195
+ children() {
196
+ const ret = wasm.flattree_children(this.__wbg_ptr);
197
+ var v1 = getArrayI32FromWasm0(ret[0], ret[1]).slice();
198
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
199
+ return v1;
190
200
  }
191
201
  /**
192
202
  * Get the leaf indices array
@@ -199,30 +209,20 @@ class FlatTree {
199
209
  return v1;
200
210
  }
201
211
  /**
202
- * Get number of nodes
212
+ * Get the dimensionality
203
213
  * @returns {number}
204
214
  */
205
- n_nodes() {
206
- const ret = wasm.flattree_n_nodes(this.__wbg_ptr);
215
+ dim() {
216
+ const ret = wasm.flattree_dim(this.__wbg_ptr);
207
217
  return ret >>> 0;
208
218
  }
209
219
  /**
210
- * Get the offsets as a Float64Array
211
- * @returns {Float64Array}
212
- */
213
- offsets() {
214
- const ret = wasm.flattree_offsets(this.__wbg_ptr);
215
- return ret;
216
- }
217
- /**
218
- * Get the children array (pairs of child indices)
219
- * @returns {Int32Array}
220
+ * Get number of nodes
221
+ * @returns {number}
220
222
  */
221
- children() {
222
- const ret = wasm.flattree_children(this.__wbg_ptr);
223
- var v1 = getArrayI32FromWasm0(ret[0], ret[1]).slice();
224
- wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
225
- return v1;
223
+ n_nodes() {
224
+ const ret = wasm.flattree_n_nodes(this.__wbg_ptr);
225
+ return ret >>> 0;
226
226
  }
227
227
  }
228
228
  if (Symbol.dispose) FlatTree.prototype[Symbol.dispose] = FlatTree.prototype.free;
@@ -243,47 +243,6 @@ class OptimizerState {
243
243
  const ptr = this.__destroy_into_raw();
244
244
  wasm.__wbg_optimizerstate_free(ptr, 0);
245
245
  }
246
- /**
247
- * Seed the internal RNG used by the optimizer.
248
- * @param {bigint} seed
249
- */
250
- set_rng_seed(seed) {
251
- wasm.optimizerstate_set_rng_seed(this.__wbg_ptr, seed);
252
- }
253
- /**
254
- * Get the current epoch number.
255
- * @returns {number}
256
- */
257
- get current_epoch() {
258
- const ret = wasm.optimizerstate_current_epoch(this.__wbg_ptr);
259
- return ret >>> 0;
260
- }
261
- /**
262
- * Get the current embedding as a flat array.
263
- * @returns {Float64Array}
264
- */
265
- get head_embedding() {
266
- const ret = wasm.optimizerstate_head_embedding(this.__wbg_ptr);
267
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
268
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
269
- return v1;
270
- }
271
- /**
272
- * Get the length of the embedding buffer.
273
- * @returns {number}
274
- */
275
- head_embedding_len() {
276
- const ret = wasm.optimizerstate_head_embedding_len(this.__wbg_ptr);
277
- return ret >>> 0;
278
- }
279
- /**
280
- * Get a pointer to the embedding buffer (for zero-copy views).
281
- * @returns {number}
282
- */
283
- head_embedding_ptr() {
284
- const ret = wasm.optimizerstate_head_embedding_ptr(this.__wbg_ptr);
285
- return ret >>> 0;
286
- }
287
246
  /**
288
247
  * Create a new optimizer state with the given parameters.
289
248
  * @param {Uint32Array} head
@@ -319,6 +278,40 @@ class OptimizerState {
319
278
  OptimizerStateFinalization.register(this, this.__wbg_ptr, this);
320
279
  return this;
321
280
  }
281
+ /**
282
+ * Get the current embedding as a flat array.
283
+ * @returns {Float64Array}
284
+ */
285
+ get head_embedding() {
286
+ const ret = wasm.optimizerstate_head_embedding(this.__wbg_ptr);
287
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
288
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
289
+ return v1;
290
+ }
291
+ /**
292
+ * Get a pointer to the embedding buffer (for zero-copy views).
293
+ * @returns {number}
294
+ */
295
+ head_embedding_ptr() {
296
+ const ret = wasm.optimizerstate_head_embedding_ptr(this.__wbg_ptr);
297
+ return ret >>> 0;
298
+ }
299
+ /**
300
+ * Get the length of the embedding buffer.
301
+ * @returns {number}
302
+ */
303
+ head_embedding_len() {
304
+ const ret = wasm.optimizerstate_head_embedding_len(this.__wbg_ptr);
305
+ return ret >>> 0;
306
+ }
307
+ /**
308
+ * Get the current epoch number.
309
+ * @returns {number}
310
+ */
311
+ get current_epoch() {
312
+ const ret = wasm.optimizerstate_current_epoch(this.__wbg_ptr);
313
+ return ret >>> 0;
314
+ }
322
315
  /**
323
316
  * Get the total number of epochs.
324
317
  * @returns {number}
@@ -327,6 +320,13 @@ class OptimizerState {
327
320
  const ret = wasm.optimizerstate_n_epochs(this.__wbg_ptr);
328
321
  return ret >>> 0;
329
322
  }
323
+ /**
324
+ * Seed the internal RNG used by the optimizer.
325
+ * @param {bigint} seed
326
+ */
327
+ set_rng_seed(seed) {
328
+ wasm.optimizerstate_set_rng_seed(this.__wbg_ptr, seed);
329
+ }
330
330
  /**
331
331
  * Get the current RNG seed/state.
332
332
  * @returns {bigint}
@@ -363,53 +363,6 @@ class WasmSparseMatrix {
363
363
  const ptr = this.__destroy_into_raw();
364
364
  wasm.__wbg_wasmsparsematrix_free(ptr, 0);
365
365
  }
366
- /**
367
- * Get all values
368
- * @returns {Float64Array}
369
- */
370
- get_values() {
371
- const ret = wasm.wasmsparsematrix_get_values(this.__wbg_ptr);
372
- return ret;
373
- }
374
- /**
375
- * Apply a scalar operation to all values (map with scalar)
376
- * @param {string} operation
377
- * @param {number} scalar
378
- * @returns {WasmSparseMatrix}
379
- */
380
- map_scalar(operation, scalar) {
381
- const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
382
- const len0 = WASM_VECTOR_LEN;
383
- const ret = wasm.wasmsparsematrix_map_scalar(this.__wbg_ptr, ptr0, len0, scalar);
384
- if (ret[2]) {
385
- throw takeFromExternrefTable0(ret[1]);
386
- }
387
- return WasmSparseMatrix.__wrap(ret[0]);
388
- }
389
- /**
390
- * Get all entries as flat arrays [rows, cols, values] - ordered by row then col
391
- * @returns {Float64Array}
392
- */
393
- get_all_ordered() {
394
- const ret = wasm.wasmsparsematrix_get_all_ordered(this.__wbg_ptr);
395
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
396
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
397
- return v1;
398
- }
399
- /**
400
- * Get a value at the given row and column, with a default value if not present
401
- * @param {number} row
402
- * @param {number} col
403
- * @param {number} default_value
404
- * @returns {number}
405
- */
406
- get(row, col, default_value) {
407
- const ret = wasm.wasmsparsematrix_get(this.__wbg_ptr, row, col, default_value);
408
- if (ret[2]) {
409
- throw takeFromExternrefTable0(ret[1]);
410
- }
411
- return ret[0];
412
- }
413
366
  /**
414
367
  * Create a new sparse matrix from rows, cols, values, and dimensions.
415
368
  *
@@ -441,11 +394,19 @@ class WasmSparseMatrix {
441
394
  return this;
442
395
  }
443
396
  /**
444
- * Get number of non-zero entries
397
+ * Get the number of rows
445
398
  * @returns {number}
446
399
  */
447
- nnz() {
448
- const ret = wasm.wasmsparsematrix_nnz(this.__wbg_ptr);
400
+ get n_rows() {
401
+ const ret = wasm.wasmsparsematrix_n_rows(this.__wbg_ptr);
402
+ return ret >>> 0;
403
+ }
404
+ /**
405
+ * Get the number of columns
406
+ * @returns {number}
407
+ */
408
+ get n_cols() {
409
+ const ret = wasm.wasmsparsematrix_n_cols(this.__wbg_ptr);
449
410
  return ret >>> 0;
450
411
  }
451
412
  /**
@@ -461,28 +422,18 @@ class WasmSparseMatrix {
461
422
  }
462
423
  }
463
424
  /**
464
- * Get the number of columns
465
- * @returns {number}
466
- */
467
- get n_cols() {
468
- const ret = wasm.wasmsparsematrix_n_cols(this.__wbg_ptr);
469
- return ret >>> 0;
470
- }
471
- /**
472
- * Get the number of rows
425
+ * Get a value at the given row and column, with a default value if not present
426
+ * @param {number} row
427
+ * @param {number} col
428
+ * @param {number} default_value
473
429
  * @returns {number}
474
430
  */
475
- get n_rows() {
476
- const ret = wasm.wasmsparsematrix_n_rows(this.__wbg_ptr);
477
- return ret >>> 0;
478
- }
479
- /**
480
- * Get all column indices
481
- * @returns {Int32Array}
482
- */
483
- get_cols() {
484
- const ret = wasm.wasmsparsematrix_get_cols(this.__wbg_ptr);
485
- return ret;
431
+ get(row, col, default_value) {
432
+ const ret = wasm.wasmsparsematrix_get(this.__wbg_ptr, row, col, default_value);
433
+ if (ret[2]) {
434
+ throw takeFromExternrefTable0(ret[1]);
435
+ }
436
+ return ret[0];
486
437
  }
487
438
  /**
488
439
  * Get the dimensions as [nRows, nCols]
@@ -502,6 +453,40 @@ class WasmSparseMatrix {
502
453
  const ret = wasm.wasmsparsematrix_get_rows(this.__wbg_ptr);
503
454
  return ret;
504
455
  }
456
+ /**
457
+ * Get all column indices
458
+ * @returns {Int32Array}
459
+ */
460
+ get_cols() {
461
+ const ret = wasm.wasmsparsematrix_get_cols(this.__wbg_ptr);
462
+ return ret;
463
+ }
464
+ /**
465
+ * Get all values
466
+ * @returns {Float64Array}
467
+ */
468
+ get_values() {
469
+ const ret = wasm.wasmsparsematrix_get_values(this.__wbg_ptr);
470
+ return ret;
471
+ }
472
+ /**
473
+ * Get all entries as flat arrays [rows, cols, values] - ordered by row then col
474
+ * @returns {Float64Array}
475
+ */
476
+ get_all_ordered() {
477
+ const ret = wasm.wasmsparsematrix_get_all_ordered(this.__wbg_ptr);
478
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
479
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
480
+ return v1;
481
+ }
482
+ /**
483
+ * Get number of non-zero entries
484
+ * @returns {number}
485
+ */
486
+ nnz() {
487
+ const ret = wasm.wasmsparsematrix_nnz(this.__wbg_ptr);
488
+ return ret >>> 0;
489
+ }
505
490
  /**
506
491
  * Convert to dense 2D array (row-major, flattened)
507
492
  * @returns {Float64Array}
@@ -510,6 +495,21 @@ class WasmSparseMatrix {
510
495
  const ret = wasm.wasmsparsematrix_to_array(this.__wbg_ptr);
511
496
  return ret;
512
497
  }
498
+ /**
499
+ * Apply a scalar operation to all values (map with scalar)
500
+ * @param {string} operation
501
+ * @param {number} scalar
502
+ * @returns {WasmSparseMatrix}
503
+ */
504
+ map_scalar(operation, scalar) {
505
+ const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
506
+ const len0 = WASM_VECTOR_LEN;
507
+ const ret = wasm.wasmsparsematrix_map_scalar(this.__wbg_ptr, ptr0, len0, scalar);
508
+ if (ret[2]) {
509
+ throw takeFromExternrefTable0(ret[1]);
510
+ }
511
+ return WasmSparseMatrix.__wrap(ret[0]);
512
+ }
513
513
  }
514
514
  if (Symbol.dispose) WasmSparseMatrix.prototype[Symbol.dispose] = WasmSparseMatrix.prototype.free;
515
515
  exports.WasmSparseMatrix = WasmSparseMatrix;
@@ -1,59 +1,59 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
- export const __wbg_flattree_free: (a: number, b: number) => void;
5
- export const __wbg_optimizerstate_free: (a: number, b: number) => void;
6
- export const __wbg_wasmsparsematrix_free: (a: number, b: number) => void;
7
- export const build_rp_tree: (a: number, b: number, c: number, d: number, e: number, f: bigint) => number;
8
- export const cosine: (a: number, b: number, c: number, d: number) => number;
9
- export const euclidean: (a: number, b: number, c: number, d: number) => number;
10
- export const flattree_children: (a: number) => [number, number];
11
- export const flattree_dim: (a: number) => number;
12
- export const flattree_hyperplanes: (a: number) => any;
13
- export const flattree_indices: (a: number) => [number, number];
14
- export const flattree_n_nodes: (a: number) => number;
15
- export const flattree_offsets: (a: number) => any;
16
- export const nn_descent: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: bigint) => [number, number, number, number];
17
- export const optimize_layout_batch: (a: number, b: number) => [number, number];
18
- export const optimize_layout_batch_in_place: (a: number, b: number) => void;
19
- export const optimize_layout_step: (a: number) => [number, number];
20
- export const optimize_layout_step_in_place: (a: number) => void;
21
- export const optimizerstate_current_epoch: (a: number) => number;
22
- export const optimizerstate_head_embedding: (a: number) => [number, number];
23
- export const optimizerstate_head_embedding_len: (a: number) => number;
24
- export const optimizerstate_head_embedding_ptr: (a: number) => number;
25
- export const optimizerstate_n_epochs: (a: number) => number;
26
- export const optimizerstate_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number) => number;
27
- export const optimizerstate_rng_seed: (a: number) => bigint;
28
- export const optimizerstate_set_rng_seed: (a: number, b: bigint) => void;
29
- export const search_flat_tree: (a: number, b: number, c: number, d: bigint) => [number, number];
30
- export const sparse_add: (a: number, b: number) => number;
31
- export const sparse_eliminate_zeros: (a: number) => number;
32
- export const sparse_get_csr: (a: number) => any;
33
- export const sparse_identity: (a: number) => number;
34
- export const sparse_maximum: (a: number, b: number) => number;
35
- export const sparse_multiply_scalar: (a: number, b: number) => number;
36
- export const sparse_normalize: (a: number, b: number, c: number) => number;
37
- export const sparse_pairwise_multiply: (a: number, b: number) => number;
38
- export const sparse_subtract: (a: number, b: number) => number;
39
- export const sparse_transpose: (a: number) => number;
40
4
  export const version: () => [number, number];
5
+ export const euclidean: (a: number, b: number, c: number, d: number) => number;
6
+ export const cosine: (a: number, b: number, c: number, d: number) => number;
7
+ export const __wbg_wasmsparsematrix_free: (a: number, b: number) => void;
8
+ export const wasmsparsematrix_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
9
+ export const wasmsparsematrix_n_rows: (a: number) => number;
10
+ export const wasmsparsematrix_n_cols: (a: number) => number;
11
+ export const wasmsparsematrix_set: (a: number, b: number, c: number, d: number) => [number, number];
41
12
  export const wasmsparsematrix_get: (a: number, b: number, c: number, d: number) => [number, number, number];
42
- export const wasmsparsematrix_get_all_ordered: (a: number) => [number, number];
43
- export const wasmsparsematrix_get_cols: (a: number) => any;
44
13
  export const wasmsparsematrix_get_dims: (a: number) => [number, number];
45
14
  export const wasmsparsematrix_get_rows: (a: number) => any;
15
+ export const wasmsparsematrix_get_cols: (a: number) => any;
46
16
  export const wasmsparsematrix_get_values: (a: number) => any;
47
- export const wasmsparsematrix_map_scalar: (a: number, b: number, c: number, d: number) => [number, number, number];
48
- export const wasmsparsematrix_n_cols: (a: number) => number;
49
- export const wasmsparsematrix_n_rows: (a: number) => number;
50
- export const wasmsparsematrix_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
17
+ export const wasmsparsematrix_get_all_ordered: (a: number) => [number, number];
51
18
  export const wasmsparsematrix_nnz: (a: number) => number;
52
- export const wasmsparsematrix_set: (a: number, b: number, c: number, d: number) => [number, number];
53
19
  export const wasmsparsematrix_to_array: (a: number) => any;
20
+ export const wasmsparsematrix_map_scalar: (a: number, b: number, c: number, d: number) => [number, number, number];
21
+ export const sparse_transpose: (a: number) => number;
22
+ export const sparse_identity: (a: number) => number;
23
+ export const sparse_add: (a: number, b: number) => number;
24
+ export const sparse_subtract: (a: number, b: number) => number;
25
+ export const sparse_pairwise_multiply: (a: number, b: number) => number;
26
+ export const sparse_maximum: (a: number, b: number) => number;
27
+ export const sparse_multiply_scalar: (a: number, b: number) => number;
28
+ export const sparse_eliminate_zeros: (a: number) => number;
29
+ export const sparse_normalize: (a: number, b: number, c: number) => number;
30
+ export const sparse_get_csr: (a: number) => any;
31
+ export const nn_descent: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: bigint) => [number, number, number, number];
32
+ export const __wbg_optimizerstate_free: (a: number, b: number) => void;
33
+ export const optimizerstate_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number) => number;
34
+ export const optimizerstate_head_embedding: (a: number) => [number, number];
35
+ export const optimizerstate_head_embedding_ptr: (a: number) => number;
36
+ export const optimizerstate_head_embedding_len: (a: number) => number;
37
+ export const optimizerstate_current_epoch: (a: number) => number;
38
+ export const optimizerstate_n_epochs: (a: number) => number;
39
+ export const optimizerstate_set_rng_seed: (a: number, b: bigint) => void;
40
+ export const optimizerstate_rng_seed: (a: number) => bigint;
41
+ export const optimize_layout_step: (a: number) => [number, number];
42
+ export const optimize_layout_step_in_place: (a: number) => void;
43
+ export const optimize_layout_batch: (a: number, b: number) => [number, number];
44
+ export const optimize_layout_batch_in_place: (a: number, b: number) => void;
45
+ export const __wbg_flattree_free: (a: number, b: number) => void;
46
+ export const flattree_hyperplanes: (a: number) => any;
47
+ export const flattree_offsets: (a: number) => any;
48
+ export const flattree_children: (a: number) => [number, number];
49
+ export const flattree_indices: (a: number) => [number, number];
50
+ export const flattree_dim: (a: number) => number;
51
+ export const flattree_n_nodes: (a: number) => number;
52
+ export const build_rp_tree: (a: number, b: number, c: number, d: number, e: number, f: bigint) => number;
53
+ export const search_flat_tree: (a: number, b: number, c: number, d: bigint) => [number, number];
54
54
  export const __wbindgen_externrefs: WebAssembly.Table;
55
+ export const __wbindgen_free: (a: number, b: number, c: number) => void;
55
56
  export const __wbindgen_malloc: (a: number, b: number) => number;
56
- export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
57
57
  export const __externref_table_dealloc: (a: number) => void;
58
- export const __wbindgen_free: (a: number, b: number, c: number) => void;
58
+ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
59
59
  export const __wbindgen_start: () => void;