@danielsimonjr/mathts-wasm 0.1.1 → 0.1.3

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
@@ -35,9 +35,9 @@ import { MathTSWasm } from '@danielsimonjr/mathts-wasm';
35
35
  const wasm = await MathTSWasm.create('/path/to/mathts.wasm');
36
36
 
37
37
  // Scalar operations
38
- const sum = wasm.add(2, 3); // 5
39
- const sqrt = wasm.sqrt(16); // 4
40
- const sin = wasm.sin(Math.PI/2); // 1
38
+ const sum = wasm.add(2, 3); // 5
39
+ const sqrt = wasm.sqrt(16); // 4
40
+ const sin = wasm.sin(Math.PI / 2); // 1
41
41
 
42
42
  // For array/matrix operations, use the raw exports
43
43
  const exports = wasm.raw;
@@ -64,26 +64,27 @@ assembly/
64
64
  │ ├── index.ts # Main entry point
65
65
  │ ├── types/
66
66
  │ │ └── complex.ts # Complex number type
67
- │ ├── ops/
68
- │ │ ├── scalar.ts # Scalar operations
69
- │ │ ├── array.ts # Array operations
70
- │ │ ├── matrix.ts # Matrix operations
71
- │ │ ├── complex-ops.ts # Complex operations
72
- │ │ └── complex-array.ts # Complex array operations
67
+ │ ├── ops/ # scalar, array, matrix, complex-ops,
68
+ │ │ # complex-array, linalg, svd, signal,
69
+ │ │ # special, polynomial, number-theory,
70
+ │ │ └── ... # optimization, curvefit, approx, tensor
73
71
  │ ├── env/
74
72
  │ │ └── abort.ts # Error handling
75
73
  │ └── bindings/
76
- └── wasm-loader.ts # JS/TS bindings
74
+ ├── index.ts # Bindings entry point
75
+ │ └── wasm-loader.ts # JS/TS bindings (SHA-384 verified)
77
76
  ├── build/ # WASM output
78
77
  ├── tests/
79
78
  │ └── run.js # Test runner
80
- ├── asconfig.json # AssemblyScript config
79
+ ├── asconfig.json # AssemblyScript config
80
+ ├── tsconfig.bindings.json # TypeScript bindings config
81
81
  └── package.json
82
82
  ```
83
83
 
84
84
  ## Available Operations
85
85
 
86
86
  ### Scalar Operations
87
+
87
88
  - Basic: `add_f64`, `sub_f64`, `mul_f64`, `div_f64`, `mod_f64`, `neg_f64`
88
89
  - Power: `sqrt_f64`, `pow_f64`, `square_f64`, `cube_f64`, `cbrt_f64`
89
90
  - Exp/Log: `exp_f64`, `log_f64`, `log10_f64`, `log2_f64`
@@ -92,18 +93,21 @@ assembly/
92
93
  - Rounding: `abs_f64`, `floor_f64`, `ceil_f64`, `round_f64`, `trunc_f64`
93
94
 
94
95
  ### Array Operations
96
+
95
97
  - Reductions: `array_sum`, `array_product`, `array_mean`, `array_variance`, `array_min`, `array_max`
96
98
  - Norms: `array_norm`, `array_norm_l1`, `array_norm_linf`
97
99
  - Element-wise: `array_add`, `array_sub`, `array_mul`, `array_div`, `array_scale`
98
100
  - BLAS-like: `array_dot`, `array_axpby`, `array_distance`
99
101
 
100
102
  ### Matrix Operations
103
+
101
104
  - Creation: `matrix_zeros`, `matrix_ones`, `matrix_identity`, `matrix_diag`
102
105
  - Arithmetic: `matrix_add`, `matrix_sub`, `matrix_scale`, `matrix_multiply`
103
106
  - Properties: `matrix_trace`, `matrix_norm_frobenius`, `matrix_transpose`
104
107
  - BLAS: `matrix_gemm`, `matrix_gemv`, `matrix_axpy`
105
108
 
106
109
  ### Complex Operations
110
+
107
111
  - Arithmetic: `complex_add`, `complex_sub`, `complex_mul`, `complex_div`
108
112
  - Functions: `complex_exp`, `complex_log`, `complex_sqrt`, `complex_pow`
109
113
  - Trig: `complex_sin`, `complex_cos`, `complex_tan`, `complex_asin`, `complex_acos`
@@ -3,6 +3,11 @@
3
3
  *
4
4
  * TypeScript bindings for loading and using the MathTS WASM module.
5
5
  * This provides a clean interface for JavaScript/TypeScript consumers.
6
+ *
7
+ * Security: optional SHA-384 integrity check via a sibling
8
+ * `wasm-manifest.json`. See verifyWasm() / loadManifest() below — kept
9
+ * inline rather than imported because the assembly package ships
10
+ * standalone (no functions/ dependency).
6
11
  */
7
12
  export interface MathTSWasmExports {
8
13
  memory: WebAssembly.Memory;
@@ -25,6 +30,18 @@ export interface MathTSWasmExports {
25
30
  matrix_transpose(aPtr: number, rows: number, cols: number, resultPtr: number): void;
26
31
  matrix_trace(dataPtr: number, rows: number, cols: number): number;
27
32
  matrix_norm_frobenius(dataPtr: number): number;
33
+ matrix_lu_decompose?(a: Float64Array, n: number, l_out: Float64Array, u_out: Float64Array, perm_out: Int32Array): number;
34
+ matrix_qr_decompose?(a: Float64Array, m: number, n: number, q_out: Float64Array, r_out: Float64Array): number;
35
+ matrix_cholesky?(a: Float64Array, n: number, l_out: Float64Array): number;
36
+ matrix_inverse?(a: Float64Array, n: number, result: Float64Array, work: Float64Array): number;
37
+ matrix_determinant?(a: Float64Array, n: number, work: Float64Array): number;
38
+ bitAnd_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
39
+ bitOr_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
40
+ bitXor_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
41
+ bitNot_i32_array?(a: Int32Array, result: Int32Array): void;
42
+ leftShift_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
43
+ rightArithShift_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
44
+ rightLogShift_i32_array?(a: Int32Array, b: Int32Array, result: Int32Array): void;
28
45
  __new(size: number, id: number): number;
29
46
  __pin(ptr: number): number;
30
47
  __unpin(ptr: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-loader.d.ts","sourceRoot":"","sources":["../../src/bindings/wasm-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wasm-loader.d.ts","sourceRoot":"","sources":["../../src/bindings/wasm-loader.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,75 @@
3
3
  *
4
4
  * TypeScript bindings for loading and using the MathTS WASM module.
5
5
  * This provides a clean interface for JavaScript/TypeScript consumers.
6
+ *
7
+ * Security: optional SHA-384 integrity check via a sibling
8
+ * `wasm-manifest.json`. See verifyWasm() / loadManifest() below — kept
9
+ * inline rather than imported because the assembly package ships
10
+ * standalone (no functions/ dependency).
6
11
  */
12
+ async function sha384Base64(buffer) {
13
+ const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
14
+ const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
15
+ let digest;
16
+ if (isNode) {
17
+ const { createHash } = await import('crypto');
18
+ const h = createHash('sha384');
19
+ h.update(bytes);
20
+ digest = new Uint8Array(h.digest());
21
+ }
22
+ else {
23
+ // Copy into a fresh ArrayBuffer so SubtleCrypto.digest accepts the
24
+ // bytes regardless of the source backing (ArrayBuffer or SharedArrayBuffer).
25
+ const copy = new ArrayBuffer(bytes.byteLength);
26
+ new Uint8Array(copy).set(bytes);
27
+ const out = await crypto.subtle.digest('SHA-384', copy);
28
+ digest = new Uint8Array(out);
29
+ }
30
+ let bin = '';
31
+ for (let i = 0; i < digest.length; i++)
32
+ bin += String.fromCharCode(digest[i]);
33
+ const b64 = typeof btoa === 'function'
34
+ ? btoa(bin)
35
+ : globalThis.Buffer.from(digest).toString('base64');
36
+ return `sha384-${b64}`;
37
+ }
38
+ async function loadManifest(wasmPath) {
39
+ const manifestPath = wasmPath.replace(/[^/\\]+$/, 'wasm-manifest.json');
40
+ const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
41
+ try {
42
+ if (isNode) {
43
+ const fs = await import('fs');
44
+ const text = fs.readFileSync(manifestPath, 'utf8');
45
+ return JSON.parse(text);
46
+ }
47
+ else {
48
+ const res = await fetch(manifestPath);
49
+ if (!res.ok)
50
+ return null;
51
+ return (await res.json());
52
+ }
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ }
58
+ async function verifyWasm(buffer, wasmPath) {
59
+ const manifest = await loadManifest(wasmPath);
60
+ if (!manifest) {
61
+ if (typeof console !== 'undefined') {
62
+ console.warn(`[wasm-integrity] no manifest found beside "${wasmPath}"; skipping SHA-384 verification`);
63
+ }
64
+ return;
65
+ }
66
+ const fileName = wasmPath.split(/[/\\]/).pop() || wasmPath;
67
+ const expected = manifest[fileName];
68
+ if (!expected)
69
+ return;
70
+ const actual = await sha384Base64(buffer);
71
+ if (actual !== expected) {
72
+ throw new Error(`WASM integrity check failed for "${fileName}": expected ${expected}, got ${actual}`);
73
+ }
74
+ }
7
75
  /**
8
76
  * Load the WASM module from a URL or buffer
9
77
  */
@@ -14,18 +82,22 @@ export async function loadWasm(source) {
14
82
  if (typeof fetch !== 'undefined') {
15
83
  const response = await fetch(source);
16
84
  const buffer = await response.arrayBuffer();
85
+ await verifyWasm(buffer, source);
17
86
  wasmModule = await WebAssembly.compile(buffer);
18
87
  }
19
88
  else {
20
89
  // Node.js environment
21
90
  const fs = await import('fs');
22
91
  const path = await import('path');
23
- const buffer = fs.readFileSync(path.resolve(source));
92
+ const resolved = path.resolve(source);
93
+ const buffer = fs.readFileSync(resolved);
94
+ await verifyWasm(buffer, resolved);
24
95
  wasmModule = await WebAssembly.compile(buffer);
25
96
  }
26
97
  }
27
98
  else {
28
- // Load from buffer
99
+ // Load from buffer — caller is responsible for verifying integrity
100
+ // since we have no path to locate a sibling manifest.
29
101
  wasmModule = await WebAssembly.compile(source);
30
102
  }
31
103
  const imports = createImports();
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-loader.js","sourceRoot":"","sources":["../../src/bindings/wasm-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wasm-loader.js","sourceRoot":"","sources":["../../src/bindings/wasm-loader.ts"],"names":[],"mappings":"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"}