edgeflowjs 0.1.0

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.
Files changed (98) hide show
  1. package/README.md +473 -0
  2. package/dist/backends/index.d.ts +13 -0
  3. package/dist/backends/index.d.ts.map +1 -0
  4. package/dist/backends/index.js +32 -0
  5. package/dist/backends/index.js.map +1 -0
  6. package/dist/backends/onnx.d.ts +46 -0
  7. package/dist/backends/onnx.d.ts.map +1 -0
  8. package/dist/backends/onnx.js +249 -0
  9. package/dist/backends/onnx.js.map +1 -0
  10. package/dist/backends/wasm.d.ts +78 -0
  11. package/dist/backends/wasm.d.ts.map +1 -0
  12. package/dist/backends/wasm.js +358 -0
  13. package/dist/backends/wasm.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +143 -0
  15. package/dist/backends/webgpu.d.ts.map +1 -0
  16. package/dist/backends/webgpu.js +326 -0
  17. package/dist/backends/webgpu.js.map +1 -0
  18. package/dist/backends/webnn.d.ts +115 -0
  19. package/dist/backends/webnn.d.ts.map +1 -0
  20. package/dist/backends/webnn.js +202 -0
  21. package/dist/backends/webnn.js.map +1 -0
  22. package/dist/core/index.d.ts +9 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +14 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/memory.d.ts +234 -0
  27. package/dist/core/memory.d.ts.map +1 -0
  28. package/dist/core/memory.js +554 -0
  29. package/dist/core/memory.js.map +1 -0
  30. package/dist/core/runtime.d.ts +129 -0
  31. package/dist/core/runtime.d.ts.map +1 -0
  32. package/dist/core/runtime.js +352 -0
  33. package/dist/core/runtime.js.map +1 -0
  34. package/dist/core/scheduler.d.ts +118 -0
  35. package/dist/core/scheduler.d.ts.map +1 -0
  36. package/dist/core/scheduler.js +600 -0
  37. package/dist/core/scheduler.js.map +1 -0
  38. package/dist/core/tensor.d.ts +149 -0
  39. package/dist/core/tensor.d.ts.map +1 -0
  40. package/dist/core/tensor.js +719 -0
  41. package/dist/core/tensor.js.map +1 -0
  42. package/dist/core/types.d.ts +367 -0
  43. package/dist/core/types.d.ts.map +1 -0
  44. package/dist/core/types.js +54 -0
  45. package/dist/core/types.js.map +1 -0
  46. package/dist/edgeflow.browser.js +5601 -0
  47. package/dist/edgeflow.browser.js.map +7 -0
  48. package/dist/edgeflow.browser.min.js +19 -0
  49. package/dist/edgeflow.browser.min.js.map +7 -0
  50. package/dist/index.d.ts +71 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +158 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/pipelines/base.d.ts +122 -0
  55. package/dist/pipelines/base.d.ts.map +1 -0
  56. package/dist/pipelines/base.js +155 -0
  57. package/dist/pipelines/base.js.map +1 -0
  58. package/dist/pipelines/feature-extraction.d.ts +68 -0
  59. package/dist/pipelines/feature-extraction.d.ts.map +1 -0
  60. package/dist/pipelines/feature-extraction.js +197 -0
  61. package/dist/pipelines/feature-extraction.js.map +1 -0
  62. package/dist/pipelines/image-classification.d.ts +61 -0
  63. package/dist/pipelines/image-classification.d.ts.map +1 -0
  64. package/dist/pipelines/image-classification.js +140 -0
  65. package/dist/pipelines/image-classification.js.map +1 -0
  66. package/dist/pipelines/index.d.ts +58 -0
  67. package/dist/pipelines/index.d.ts.map +1 -0
  68. package/dist/pipelines/index.js +72 -0
  69. package/dist/pipelines/index.js.map +1 -0
  70. package/dist/pipelines/text-classification.d.ts +71 -0
  71. package/dist/pipelines/text-classification.d.ts.map +1 -0
  72. package/dist/pipelines/text-classification.js +175 -0
  73. package/dist/pipelines/text-classification.js.map +1 -0
  74. package/dist/tools/index.d.ts +143 -0
  75. package/dist/tools/index.d.ts.map +1 -0
  76. package/dist/tools/index.js +294 -0
  77. package/dist/tools/index.js.map +1 -0
  78. package/dist/utils/cache.d.ts +162 -0
  79. package/dist/utils/cache.d.ts.map +1 -0
  80. package/dist/utils/cache.js +443 -0
  81. package/dist/utils/cache.js.map +1 -0
  82. package/dist/utils/index.d.ts +8 -0
  83. package/dist/utils/index.d.ts.map +1 -0
  84. package/dist/utils/index.js +12 -0
  85. package/dist/utils/index.js.map +1 -0
  86. package/dist/utils/model-loader.d.ts +107 -0
  87. package/dist/utils/model-loader.d.ts.map +1 -0
  88. package/dist/utils/model-loader.js +694 -0
  89. package/dist/utils/model-loader.js.map +1 -0
  90. package/dist/utils/preprocessor.d.ts +147 -0
  91. package/dist/utils/preprocessor.d.ts.map +1 -0
  92. package/dist/utils/preprocessor.js +423 -0
  93. package/dist/utils/preprocessor.js.map +1 -0
  94. package/dist/utils/tokenizer.d.ts +140 -0
  95. package/dist/utils/tokenizer.d.ts.map +1 -0
  96. package/dist/utils/tokenizer.js +397 -0
  97. package/dist/utils/tokenizer.js.map +1 -0
  98. package/package.json +87 -0
@@ -0,0 +1,249 @@
1
+ /**
2
+ * edgeFlow.js - ONNX Runtime Backend
3
+ *
4
+ * Uses onnxruntime-web for real ONNX model inference.
5
+ * Automatically loads ONNX Runtime from CDN when needed.
6
+ */
7
+ import { EdgeFlowError, ErrorCodes, } from '../core/types.js';
8
+ import { LoadedModelImpl } from '../core/runtime.js';
9
+ import { EdgeFlowTensor } from '../core/tensor.js';
10
+ import { getMemoryManager } from '../core/memory.js';
11
+ // ONNX Runtime CDN configuration
12
+ const ONNX_VERSION = '1.17.0';
13
+ const ONNX_CDN_BASE = `https://cdn.jsdelivr.net/npm/onnxruntime-web@${ONNX_VERSION}/dist/`;
14
+ const ONNX_SCRIPT_URL = `${ONNX_CDN_BASE}ort.min.js`;
15
+ // Global ONNX Runtime reference (loaded dynamically)
16
+ let ort = null;
17
+ let ortLoadPromise = null;
18
+ /**
19
+ * Dynamically load ONNX Runtime from CDN
20
+ */
21
+ async function loadONNXRuntime() {
22
+ // Return cached instance
23
+ if (ort)
24
+ return ort;
25
+ // Return existing load promise to avoid duplicate loading
26
+ if (ortLoadPromise)
27
+ return ortLoadPromise;
28
+ ortLoadPromise = new Promise((resolve, reject) => {
29
+ // Check if already loaded globally (e.g., via script tag)
30
+ if (typeof window !== 'undefined' && window.ort) {
31
+ ort = window.ort;
32
+ // Configure WASM paths
33
+ ort.env.wasm.wasmPaths = ONNX_CDN_BASE;
34
+ resolve(ort);
35
+ return;
36
+ }
37
+ // Dynamically load the script
38
+ const script = document.createElement('script');
39
+ script.src = ONNX_SCRIPT_URL;
40
+ script.async = true;
41
+ script.onload = () => {
42
+ if (window.ort) {
43
+ ort = window.ort;
44
+ // Configure WASM paths
45
+ ort.env.wasm.wasmPaths = ONNX_CDN_BASE;
46
+ console.log(`✓ ONNX Runtime v${ONNX_VERSION} loaded from CDN`);
47
+ resolve(ort);
48
+ }
49
+ else {
50
+ reject(new Error('ONNX Runtime loaded but ort global not found'));
51
+ }
52
+ };
53
+ script.onerror = () => {
54
+ reject(new Error(`Failed to load ONNX Runtime from ${ONNX_SCRIPT_URL}`));
55
+ };
56
+ document.head.appendChild(script);
57
+ });
58
+ return ortLoadPromise;
59
+ }
60
+ /**
61
+ * Get ONNX Runtime instance (loads if needed)
62
+ */
63
+ async function getOrt() {
64
+ if (!ort) {
65
+ ort = await loadONNXRuntime();
66
+ }
67
+ return ort;
68
+ }
69
+ const sessionStore = new Map();
70
+ // ============================================================================
71
+ // ONNX Runtime Implementation
72
+ // ============================================================================
73
+ /**
74
+ * ONNXRuntime - Real ONNX model inference using onnxruntime-web
75
+ * Automatically loads ONNX Runtime from CDN when first used.
76
+ */
77
+ export class ONNXRuntime {
78
+ name = 'wasm'; // Register as wasm since it's the fallback
79
+ initialized = false;
80
+ executionProvider = 'wasm';
81
+ get capabilities() {
82
+ return {
83
+ concurrency: true,
84
+ quantization: true,
85
+ float16: this.executionProvider === 'webgpu',
86
+ dynamicShapes: true,
87
+ maxBatchSize: 32,
88
+ availableMemory: 512 * 1024 * 1024, // 512MB
89
+ };
90
+ }
91
+ /**
92
+ * Check if ONNX Runtime is available (always true - will be loaded from CDN)
93
+ */
94
+ async isAvailable() {
95
+ // Always return true - we'll load ONNX Runtime from CDN when needed
96
+ return true;
97
+ }
98
+ /**
99
+ * Initialize the ONNX runtime (loads from CDN if needed)
100
+ */
101
+ async initialize() {
102
+ if (this.initialized)
103
+ return;
104
+ // Load ONNX Runtime from CDN
105
+ const ortInstance = await getOrt();
106
+ // Configure WASM paths
107
+ ortInstance.env.wasm.wasmPaths = ONNX_CDN_BASE;
108
+ // Use WASM execution provider (most compatible)
109
+ this.executionProvider = 'wasm';
110
+ this.initialized = true;
111
+ }
112
+ /**
113
+ * Load a model from ArrayBuffer
114
+ */
115
+ async loadModel(modelData, options = {}) {
116
+ if (!this.initialized) {
117
+ await this.initialize();
118
+ }
119
+ const ortInstance = await getOrt();
120
+ try {
121
+ // Create session options
122
+ const sessionOptions = {
123
+ executionProviders: [this.executionProvider],
124
+ graphOptimizationLevel: 'all',
125
+ };
126
+ // Create inference session (convert ArrayBuffer to Uint8Array)
127
+ const modelBytes = new Uint8Array(modelData);
128
+ const session = await ortInstance.InferenceSession.create(modelBytes, sessionOptions);
129
+ // Get input/output names
130
+ const inputNames = session.inputNames;
131
+ const outputNames = session.outputNames;
132
+ // Generate model ID
133
+ const modelId = `onnx_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
134
+ // Store session
135
+ sessionStore.set(modelId, {
136
+ session,
137
+ inputNames: [...inputNames],
138
+ outputNames: [...outputNames],
139
+ });
140
+ // Create metadata
141
+ const metadata = {
142
+ name: options.metadata?.name ?? 'onnx-model',
143
+ version: '1.0.0',
144
+ inputs: inputNames.map(name => ({
145
+ name,
146
+ dtype: 'float32',
147
+ shape: [-1], // Dynamic shape
148
+ })),
149
+ outputs: outputNames.map(name => ({
150
+ name,
151
+ dtype: 'float32',
152
+ shape: [-1],
153
+ })),
154
+ sizeBytes: modelData.byteLength,
155
+ quantization: options.quantization ?? 'float32',
156
+ format: 'onnx',
157
+ };
158
+ // Create model instance
159
+ const model = new LoadedModelImpl(metadata, 'wasm', () => this.unloadModel(modelId));
160
+ // Override the ID to match our stored session
161
+ Object.defineProperty(model, 'id', { value: modelId, writable: false });
162
+ // Track in memory manager
163
+ getMemoryManager().trackModel(model, () => model.dispose());
164
+ return model;
165
+ }
166
+ catch (error) {
167
+ throw new EdgeFlowError(`Failed to load ONNX model: ${error instanceof Error ? error.message : String(error)}`, ErrorCodes.MODEL_LOAD_FAILED, { error });
168
+ }
169
+ }
170
+ /**
171
+ * Run inference
172
+ */
173
+ async run(model, inputs) {
174
+ const sessionData = sessionStore.get(model.id);
175
+ if (!sessionData) {
176
+ throw new EdgeFlowError(`ONNX session not found for model ${model.id}`, ErrorCodes.MODEL_NOT_LOADED, { modelId: model.id });
177
+ }
178
+ const ortInstance = await getOrt();
179
+ const { session, inputNames, outputNames } = sessionData;
180
+ try {
181
+ // Prepare input feeds
182
+ const feeds = {};
183
+ for (let i = 0; i < Math.min(inputs.length, inputNames.length); i++) {
184
+ const inputName = inputNames[i];
185
+ const inputTensor = inputs[i];
186
+ if (inputName && inputTensor) {
187
+ // Convert to ONNX tensor with correct dtype
188
+ const dtype = inputTensor.dtype;
189
+ let ortTensor;
190
+ if (dtype === 'int64') {
191
+ // Get raw BigInt64Array data directly
192
+ const data = inputTensor.data;
193
+ ortTensor = new ortInstance.Tensor('int64', data, inputTensor.shape);
194
+ }
195
+ else if (dtype === 'int32') {
196
+ const data = inputTensor.data;
197
+ ortTensor = new ortInstance.Tensor('int32', data, inputTensor.shape);
198
+ }
199
+ else {
200
+ const data = inputTensor.toFloat32Array();
201
+ ortTensor = new ortInstance.Tensor('float32', data, inputTensor.shape);
202
+ }
203
+ feeds[inputName] = ortTensor;
204
+ }
205
+ }
206
+ // Run inference
207
+ const results = await session.run(feeds);
208
+ // Convert outputs to EdgeFlowTensor
209
+ const outputs = [];
210
+ for (const outputName of outputNames) {
211
+ const ortTensor = results[outputName];
212
+ if (ortTensor) {
213
+ const data = ortTensor.data;
214
+ const shape = Array.from(ortTensor.dims).map(d => Number(d));
215
+ outputs.push(new EdgeFlowTensor(new Float32Array(data), shape, 'float32'));
216
+ }
217
+ }
218
+ return outputs;
219
+ }
220
+ catch (error) {
221
+ throw new EdgeFlowError(`ONNX inference failed: ${error instanceof Error ? error.message : String(error)}`, ErrorCodes.INFERENCE_FAILED, { modelId: model.id, error });
222
+ }
223
+ }
224
+ /**
225
+ * Unload a model
226
+ */
227
+ async unloadModel(modelId) {
228
+ const sessionData = sessionStore.get(modelId);
229
+ if (sessionData) {
230
+ // Release session will be handled by GC
231
+ sessionStore.delete(modelId);
232
+ }
233
+ }
234
+ /**
235
+ * Dispose the runtime
236
+ */
237
+ dispose() {
238
+ // Clear all sessions
239
+ sessionStore.clear();
240
+ this.initialized = false;
241
+ }
242
+ }
243
+ /**
244
+ * Create ONNX runtime factory
245
+ */
246
+ export function createONNXRuntime() {
247
+ return new ONNXRuntime();
248
+ }
249
+ //# sourceMappingURL=onnx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onnx.js","sourceRoot":"","sources":["../../src/backends/onnx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * edgeFlow.js - WebAssembly Backend
3
+ *
4
+ * Pure WASM runtime for universal browser support.
5
+ * Features:
6
+ * - Universal compatibility
7
+ * - SIMD acceleration when available
8
+ * - Memory-efficient execution
9
+ */
10
+ import { Runtime, RuntimeType, RuntimeCapabilities, LoadedModel, ModelLoadOptions, Tensor } from '../core/types.js';
11
+ /**
12
+ * WASMRuntime - Pure WebAssembly inference runtime
13
+ */
14
+ export declare class WASMRuntime implements Runtime {
15
+ readonly name: RuntimeType;
16
+ private module;
17
+ private simdSupported;
18
+ private models;
19
+ private initialized;
20
+ get capabilities(): RuntimeCapabilities;
21
+ /**
22
+ * Check if WASM is available
23
+ */
24
+ isAvailable(): Promise<boolean>;
25
+ /**
26
+ * Initialize the WASM runtime
27
+ */
28
+ initialize(): Promise<void>;
29
+ /**
30
+ * Check SIMD support
31
+ */
32
+ private checkSIMDSupport;
33
+ /**
34
+ * Create JavaScript fallback for WASM operations
35
+ */
36
+ private createJSFallback;
37
+ /**
38
+ * Load a model
39
+ */
40
+ loadModel(modelData: ArrayBuffer, options?: ModelLoadOptions): Promise<LoadedModel>;
41
+ /**
42
+ * Run inference
43
+ */
44
+ run(model: LoadedModel, inputs: Tensor[]): Promise<Tensor[]>;
45
+ /**
46
+ * Execute model
47
+ */
48
+ private executeModel;
49
+ /**
50
+ * Parse model configuration
51
+ */
52
+ private parseModelConfig;
53
+ /**
54
+ * Load weights into WASM memory
55
+ */
56
+ private loadWeights;
57
+ /**
58
+ * Unload a model
59
+ */
60
+ private unloadModel;
61
+ /**
62
+ * Ensure runtime is initialized
63
+ */
64
+ private ensureInitialized;
65
+ /**
66
+ * Check if SIMD is supported
67
+ */
68
+ hasSIMDSupport(): boolean;
69
+ /**
70
+ * Dispose the runtime
71
+ */
72
+ dispose(): void;
73
+ }
74
+ /**
75
+ * Create WASM runtime factory
76
+ */
77
+ export declare function createWASMRuntime(): Runtime;
78
+ //# sourceMappingURL=wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/backends/wasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAEhB,MAAM,EAGP,MAAM,kBAAkB,CAAC;AAqF1B;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAU;IAEpC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,YAAY,IAAI,mBAAmB,CAStC;IAED;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;OAEG;YACW,gBAAgB;IAgB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyGxB;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAmDvB;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOlE;;OAEG;YACW,YAAY;IAwC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;OAEG;YACW,WAAW;IAQzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}