@runanywhere/web 0.1.0-beta.5 → 0.1.0-beta.6
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/dist/Foundation/SherpaONNXBridge.d.ts +147 -0
- package/dist/Foundation/SherpaONNXBridge.d.ts.map +1 -0
- package/dist/Foundation/SherpaONNXBridge.js +345 -0
- package/dist/Foundation/SherpaONNXBridge.js.map +1 -0
- package/dist/Foundation/StructOffsets.d.ts +5 -33
- package/dist/Foundation/StructOffsets.d.ts.map +1 -1
- package/dist/Foundation/StructOffsets.js +94 -128
- package/dist/Foundation/StructOffsets.js.map +1 -1
- package/dist/Infrastructure/AudioCapture.d.ts +99 -0
- package/dist/Infrastructure/AudioCapture.d.ts.map +1 -0
- package/dist/Infrastructure/AudioCapture.js +264 -0
- package/dist/Infrastructure/AudioCapture.js.map +1 -0
- package/dist/Infrastructure/AudioPlayback.d.ts +53 -0
- package/dist/Infrastructure/AudioPlayback.d.ts.map +1 -0
- package/dist/Infrastructure/AudioPlayback.js +117 -0
- package/dist/Infrastructure/AudioPlayback.js.map +1 -0
- package/dist/Infrastructure/ModelDownloader.d.ts +5 -16
- package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
- package/dist/Infrastructure/ModelDownloader.js +7 -54
- package/dist/Infrastructure/ModelDownloader.js.map +1 -1
- package/dist/Infrastructure/ModelLoaderTypes.d.ts +11 -76
- package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
- package/dist/Infrastructure/ModelLoaderTypes.js +1 -7
- package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
- package/dist/Infrastructure/ModelManager.d.ts +104 -30
- package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
- package/dist/Infrastructure/ModelManager.js +546 -209
- package/dist/Infrastructure/ModelManager.js.map +1 -1
- package/dist/Infrastructure/ModelRegistry.d.ts +8 -6
- package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
- package/dist/Infrastructure/ModelRegistry.js +4 -11
- package/dist/Infrastructure/ModelRegistry.js.map +1 -1
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +211 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.js +264 -0
- package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js +503 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
- package/dist/Infrastructure/VideoCapture.d.ts +130 -0
- package/dist/Infrastructure/VideoCapture.d.ts.map +1 -0
- package/dist/Infrastructure/VideoCapture.js +236 -0
- package/dist/Infrastructure/VideoCapture.js.map +1 -0
- package/dist/Public/Extensions/DiffusionTypes.d.ts +64 -0
- package/dist/Public/Extensions/DiffusionTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/DiffusionTypes.js +28 -0
- package/dist/Public/Extensions/DiffusionTypes.js.map +1 -0
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts +33 -0
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/EmbeddingsTypes.js +13 -0
- package/dist/Public/Extensions/EmbeddingsTypes.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js +189 -0
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js +240 -0
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts +97 -0
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+STT.js +417 -0
- package/dist/Public/Extensions/RunAnywhere+STT.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +196 -0
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +55 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.js +253 -0
- package/dist/Public/Extensions/RunAnywhere+TTS.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +80 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +470 -0
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +576 -0
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +70 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.js +231 -0
- package/dist/Public/Extensions/RunAnywhere+VAD.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +58 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.js +262 -0
- package/dist/Public/Extensions/RunAnywhere+VLM.js.map +1 -0
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +29 -3
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +42 -46
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
- package/dist/Public/Extensions/STTTypes.d.ts +61 -0
- package/dist/Public/Extensions/STTTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/STTTypes.js +16 -0
- package/dist/Public/Extensions/STTTypes.js.map +1 -0
- package/dist/Public/Extensions/TTSTypes.d.ts +31 -0
- package/dist/Public/Extensions/TTSTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/TTSTypes.js +3 -0
- package/dist/Public/Extensions/TTSTypes.js.map +1 -0
- package/dist/Public/Extensions/ToolCallingTypes.d.ts +78 -0
- package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/ToolCallingTypes.js +8 -0
- package/dist/Public/Extensions/ToolCallingTypes.js.map +1 -0
- package/dist/Public/Extensions/VADTypes.d.ts +30 -0
- package/dist/Public/Extensions/VADTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VADTypes.js +8 -0
- package/dist/Public/Extensions/VADTypes.js.map +1 -0
- package/dist/Public/Extensions/VLMTypes.d.ts +56 -0
- package/dist/Public/Extensions/VLMTypes.d.ts.map +1 -0
- package/dist/Public/Extensions/VLMTypes.js +24 -0
- package/dist/Public/Extensions/VLMTypes.js.map +1 -0
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts +37 -28
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
- package/dist/Public/Extensions/VoicePipelineTypes.js +1 -4
- package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
- package/dist/Public/RunAnywhere.d.ts +61 -65
- package/dist/Public/RunAnywhere.d.ts.map +1 -1
- package/dist/Public/RunAnywhere.js +141 -193
- package/dist/Public/RunAnywhere.js.map +1 -1
- package/dist/index.d.ts +39 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -19
- package/dist/index.js.map +1 -1
- package/dist/types/LLMTypes.d.ts +48 -0
- package/dist/types/LLMTypes.d.ts.map +1 -0
- package/dist/types/LLMTypes.js +8 -0
- package/dist/types/LLMTypes.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/workers/vlm-worker.d.ts +9 -0
- package/dist/workers/vlm-worker.d.ts.map +1 -0
- package/dist/workers/vlm-worker.js +10 -0
- package/dist/workers/vlm-worker.js.map +1 -0
- package/package.json +5 -1
- package/wasm/racommons-webgpu.js +156 -0
- package/wasm/racommons-webgpu.wasm +0 -0
- package/wasm/racommons.js +91 -91
- package/wasm/racommons.wasm +0 -0
- package/wasm/sherpa/sherpa-onnx-asr.js +1538 -0
- package/wasm/sherpa/sherpa-onnx-glue-original.js +19 -0
- package/wasm/sherpa/sherpa-onnx-glue.js +17 -0
- package/wasm/sherpa/sherpa-onnx-tts.js +657 -0
- package/wasm/sherpa/sherpa-onnx-vad.js +337 -0
- package/wasm/sherpa/sherpa-onnx-wave.js +88 -0
- package/wasm/sherpa/sherpa-onnx.wasm +0 -0
- package/dist/Infrastructure/ExtensionPoint.d.ts +0 -78
- package/dist/Infrastructure/ExtensionPoint.d.ts.map +0 -1
- package/dist/Infrastructure/ExtensionPoint.js +0 -118
- package/dist/Infrastructure/ExtensionPoint.js.map +0 -1
- package/dist/Infrastructure/LocalFileStorage.d.ts +0 -116
- package/dist/Infrastructure/LocalFileStorage.d.ts.map +0 -1
- package/dist/Infrastructure/LocalFileStorage.js +0 -368
- package/dist/Infrastructure/LocalFileStorage.js.map +0 -1
- package/dist/Infrastructure/ModelFileInference.d.ts +0 -39
- package/dist/Infrastructure/ModelFileInference.d.ts.map +0 -1
- package/dist/Infrastructure/ModelFileInference.js +0 -110
- package/dist/Infrastructure/ModelFileInference.js.map +0 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
|
|
3
|
+
*
|
|
4
|
+
* Loads the sherpa-onnx WASM module (separate from RACommons) and provides
|
|
5
|
+
* typed access to the sherpa-onnx C API for:
|
|
6
|
+
* - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
|
|
7
|
+
* - TTS (Text-to-Speech) via Piper/VITS
|
|
8
|
+
* - VAD (Voice Activity Detection) via Silero
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
|
|
12
|
+
* Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
|
|
13
|
+
*
|
|
14
|
+
* The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Emscripten module interface for sherpa-onnx WASM.
|
|
18
|
+
* Based on sherpa-onnx's wasm/nodejs C API exports.
|
|
19
|
+
*/
|
|
20
|
+
export interface SherpaONNXModule {
|
|
21
|
+
ccall: (ident: string, returnType: string | null, argTypes: string[], args: unknown[]) => unknown;
|
|
22
|
+
cwrap: (ident: string, returnType: string | null, argTypes: string[]) => (...args: unknown[]) => unknown;
|
|
23
|
+
_malloc: (size: number) => number;
|
|
24
|
+
_free: (ptr: number) => void;
|
|
25
|
+
setValue: (ptr: number, value: number, type: string) => void;
|
|
26
|
+
getValue: (ptr: number, type: string) => number;
|
|
27
|
+
UTF8ToString: (ptr: number) => string;
|
|
28
|
+
stringToUTF8: (str: string, ptr: number, maxLen: number) => void;
|
|
29
|
+
lengthBytesUTF8: (str: string) => number;
|
|
30
|
+
HEAPU8: Uint8Array;
|
|
31
|
+
HEAP16: Int16Array;
|
|
32
|
+
HEAP32: Int32Array;
|
|
33
|
+
HEAPF32: Float32Array;
|
|
34
|
+
HEAPF64: Float64Array;
|
|
35
|
+
FS: SherpaFS;
|
|
36
|
+
_SherpaOnnxCreateOfflineRecognizer: (configPtr: number) => number;
|
|
37
|
+
_SherpaOnnxDestroyOfflineRecognizer: (handle: number) => void;
|
|
38
|
+
_SherpaOnnxCreateOfflineStream: (handle: number) => number;
|
|
39
|
+
_SherpaOnnxDestroyOfflineStream: (stream: number) => void;
|
|
40
|
+
_SherpaOnnxAcceptWaveformOffline: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
|
|
41
|
+
_SherpaOnnxDecodeOfflineStream: (handle: number, stream: number) => void;
|
|
42
|
+
_SherpaOnnxGetOfflineStreamResultAsJson: (stream: number) => number;
|
|
43
|
+
_SherpaOnnxDestroyOfflineStreamResultJson: (ptr: number) => void;
|
|
44
|
+
_SherpaOnnxCreateOnlineRecognizer: (configPtr: number) => number;
|
|
45
|
+
_SherpaOnnxDestroyOnlineRecognizer: (handle: number) => void;
|
|
46
|
+
_SherpaOnnxCreateOnlineStream: (handle: number) => number;
|
|
47
|
+
_SherpaOnnxDestroyOnlineStream: (stream: number) => void;
|
|
48
|
+
_SherpaOnnxOnlineStreamAcceptWaveform: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
|
|
49
|
+
_SherpaOnnxIsOnlineStreamReady: (handle: number, stream: number) => number;
|
|
50
|
+
_SherpaOnnxDecodeOnlineStream: (handle: number, stream: number) => void;
|
|
51
|
+
_SherpaOnnxGetOnlineStreamResultAsJson: (handle: number, stream: number) => number;
|
|
52
|
+
_SherpaOnnxDestroyOnlineStreamResultJson: (ptr: number) => void;
|
|
53
|
+
_SherpaOnnxOnlineStreamInputFinished: (stream: number) => void;
|
|
54
|
+
_SherpaOnnxOnlineStreamIsEndpoint: (handle: number, stream: number) => number;
|
|
55
|
+
_SherpaOnnxOnlineStreamReset: (handle: number, stream: number) => void;
|
|
56
|
+
_SherpaOnnxCreateOfflineTts: (configPtr: number) => number;
|
|
57
|
+
_SherpaOnnxDestroyOfflineTts: (handle: number) => void;
|
|
58
|
+
_SherpaOnnxOfflineTtsGenerate: (handle: number, textPtr: number, sid: number, speed: number) => number;
|
|
59
|
+
_SherpaOnnxDestroyOfflineTtsGeneratedAudio: (audio: number) => void;
|
|
60
|
+
_SherpaOnnxOfflineTtsSampleRate: (handle: number) => number;
|
|
61
|
+
_SherpaOnnxOfflineTtsNumSpeakers: (handle: number) => number;
|
|
62
|
+
_SherpaOnnxCreateVoiceActivityDetector: (configPtr: number, bufferSizeInSeconds: number) => number;
|
|
63
|
+
_SherpaOnnxDestroyVoiceActivityDetector: (handle: number) => void;
|
|
64
|
+
_SherpaOnnxVoiceActivityDetectorAcceptWaveform: (handle: number, samplesPtr: number, numSamples: number) => void;
|
|
65
|
+
_SherpaOnnxVoiceActivityDetectorEmpty: (handle: number) => number;
|
|
66
|
+
_SherpaOnnxVoiceActivityDetectorDetected: (handle: number) => number;
|
|
67
|
+
_SherpaOnnxVoiceActivityDetectorPop: (handle: number) => void;
|
|
68
|
+
_SherpaOnnxVoiceActivityDetectorFront: (handle: number) => number;
|
|
69
|
+
_SherpaOnnxDestroySpeechSegment: (segment: number) => void;
|
|
70
|
+
_SherpaOnnxVoiceActivityDetectorReset: (handle: number) => void;
|
|
71
|
+
_SherpaOnnxVoiceActivityDetectorFlush: (handle: number) => void;
|
|
72
|
+
_CopyHeap?: (srcPtr: number, numBytes: number, dstPtr: number) => void;
|
|
73
|
+
}
|
|
74
|
+
interface SherpaFS {
|
|
75
|
+
mkdir: (path: string) => void;
|
|
76
|
+
writeFile: (path: string, data: Uint8Array | string) => void;
|
|
77
|
+
readFile: (path: string) => Uint8Array;
|
|
78
|
+
unlink: (path: string) => void;
|
|
79
|
+
analyzePath: (path: string) => {
|
|
80
|
+
exists: boolean;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
|
|
85
|
+
*
|
|
86
|
+
* Singleton that provides access to sherpa-onnx C API functions.
|
|
87
|
+
* Lazy-loaded: only initializes when STT/TTS/VAD is first used.
|
|
88
|
+
*/
|
|
89
|
+
export declare class SherpaONNXBridge {
|
|
90
|
+
private static _instance;
|
|
91
|
+
private _module;
|
|
92
|
+
private _loaded;
|
|
93
|
+
private _loading;
|
|
94
|
+
/**
|
|
95
|
+
* Override the default URL to the sherpa-onnx-glue.js file.
|
|
96
|
+
* Set this before any STT/TTS/VAD model is loaded.
|
|
97
|
+
*
|
|
98
|
+
* In a Vite app, resolve it like:
|
|
99
|
+
* ```typescript
|
|
100
|
+
* SherpaONNXBridge.shared.wasmUrl = new URL(
|
|
101
|
+
* '@runanywhere/web/wasm/sherpa/sherpa-onnx-glue.js',
|
|
102
|
+
* import.meta.url,
|
|
103
|
+
* ).href;
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
wasmUrl: string | null;
|
|
107
|
+
static get shared(): SherpaONNXBridge;
|
|
108
|
+
get isLoaded(): boolean;
|
|
109
|
+
get module(): SherpaONNXModule;
|
|
110
|
+
/**
|
|
111
|
+
* Ensure the sherpa-onnx WASM module is loaded.
|
|
112
|
+
* Safe to call multiple times -- will only load once.
|
|
113
|
+
*
|
|
114
|
+
* @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
|
|
115
|
+
* Defaults to wasm/sherpa/sherpa-onnx-glue.js
|
|
116
|
+
*/
|
|
117
|
+
ensureLoaded(wasmUrl?: string): Promise<void>;
|
|
118
|
+
private _doLoad;
|
|
119
|
+
/**
|
|
120
|
+
* Get the Emscripten FS object from the module.
|
|
121
|
+
* Handles both direct FS property and module-level helper functions.
|
|
122
|
+
*/
|
|
123
|
+
private getFS;
|
|
124
|
+
/**
|
|
125
|
+
* Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
|
|
126
|
+
*/
|
|
127
|
+
ensureDir(path: string): void;
|
|
128
|
+
/**
|
|
129
|
+
* Write a file into the sherpa-onnx Emscripten virtual FS.
|
|
130
|
+
* Used to stage model files before loading.
|
|
131
|
+
*
|
|
132
|
+
* Prefers FS_createDataFile over FS.writeFile for reliability —
|
|
133
|
+
* the module was compiled with NODERAWFS which can leave FS.writeFile
|
|
134
|
+
* in a broken state even after our browser patches.
|
|
135
|
+
*/
|
|
136
|
+
writeFile(path: string, data: Uint8Array): void;
|
|
137
|
+
/**
|
|
138
|
+
* Download a file from a URL and write it to the sherpa-onnx FS.
|
|
139
|
+
*/
|
|
140
|
+
downloadAndWrite(url: string, fsPath: string, onProgress?: (loaded: number, total: number) => void): Promise<void>;
|
|
141
|
+
allocString(str: string): number;
|
|
142
|
+
readString(ptr: number): string;
|
|
143
|
+
free(ptr: number): void;
|
|
144
|
+
shutdown(): void;
|
|
145
|
+
}
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=SherpaONNXBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SherpaONNXBridge.d.ts","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
|
|
3
|
+
*
|
|
4
|
+
* Loads the sherpa-onnx WASM module (separate from RACommons) and provides
|
|
5
|
+
* typed access to the sherpa-onnx C API for:
|
|
6
|
+
* - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
|
|
7
|
+
* - TTS (Text-to-Speech) via Piper/VITS
|
|
8
|
+
* - VAD (Voice Activity Detection) via Silero
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
|
|
12
|
+
* Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
|
|
13
|
+
*
|
|
14
|
+
* The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
|
|
15
|
+
*/
|
|
16
|
+
import { SDKError, SDKErrorCode } from './ErrorTypes';
|
|
17
|
+
import { SDKLogger } from './SDKLogger';
|
|
18
|
+
const logger = new SDKLogger('SherpaONNX');
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// SherpaONNXBridge
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
|
|
24
|
+
*
|
|
25
|
+
* Singleton that provides access to sherpa-onnx C API functions.
|
|
26
|
+
* Lazy-loaded: only initializes when STT/TTS/VAD is first used.
|
|
27
|
+
*/
|
|
28
|
+
export class SherpaONNXBridge {
|
|
29
|
+
static _instance = null;
|
|
30
|
+
_module = null;
|
|
31
|
+
_loaded = false;
|
|
32
|
+
_loading = null;
|
|
33
|
+
/**
|
|
34
|
+
* Override the default URL to the sherpa-onnx-glue.js file.
|
|
35
|
+
* Set this before any STT/TTS/VAD model is loaded.
|
|
36
|
+
*
|
|
37
|
+
* In a Vite app, resolve it like:
|
|
38
|
+
* ```typescript
|
|
39
|
+
* SherpaONNXBridge.shared.wasmUrl = new URL(
|
|
40
|
+
* '@runanywhere/web/wasm/sherpa/sherpa-onnx-glue.js',
|
|
41
|
+
* import.meta.url,
|
|
42
|
+
* ).href;
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
wasmUrl = null;
|
|
46
|
+
static get shared() {
|
|
47
|
+
if (!SherpaONNXBridge._instance) {
|
|
48
|
+
SherpaONNXBridge._instance = new SherpaONNXBridge();
|
|
49
|
+
}
|
|
50
|
+
return SherpaONNXBridge._instance;
|
|
51
|
+
}
|
|
52
|
+
get isLoaded() {
|
|
53
|
+
return this._loaded && this._module !== null;
|
|
54
|
+
}
|
|
55
|
+
get module() {
|
|
56
|
+
if (!this._module) {
|
|
57
|
+
throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX WASM not loaded. Call ensureLoaded() first.');
|
|
58
|
+
}
|
|
59
|
+
return this._module;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Ensure the sherpa-onnx WASM module is loaded.
|
|
63
|
+
* Safe to call multiple times -- will only load once.
|
|
64
|
+
*
|
|
65
|
+
* @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
|
|
66
|
+
* Defaults to wasm/sherpa/sherpa-onnx-glue.js
|
|
67
|
+
*/
|
|
68
|
+
async ensureLoaded(wasmUrl) {
|
|
69
|
+
if (this._loaded)
|
|
70
|
+
return;
|
|
71
|
+
// Prevent duplicate loading
|
|
72
|
+
if (this._loading) {
|
|
73
|
+
await this._loading;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this._loading = this._doLoad(wasmUrl);
|
|
77
|
+
await this._loading;
|
|
78
|
+
this._loading = null;
|
|
79
|
+
}
|
|
80
|
+
async _doLoad(wasmUrl) {
|
|
81
|
+
logger.info('Loading Sherpa-ONNX WASM module...');
|
|
82
|
+
try {
|
|
83
|
+
const moduleUrl = wasmUrl ?? this.wasmUrl ?? new URL('../../wasm/sherpa/sherpa-onnx-glue.js', import.meta.url).href;
|
|
84
|
+
const { default: createModule } = await import(/* @vite-ignore */ moduleUrl);
|
|
85
|
+
// Derive the base URL for the .wasm binary
|
|
86
|
+
const baseUrl = moduleUrl.substring(0, moduleUrl.lastIndexOf('/') + 1);
|
|
87
|
+
const wasmBinaryUrl = baseUrl + 'sherpa-onnx.wasm';
|
|
88
|
+
// Pre-fetch the WASM binary to avoid Emscripten's sync XHR
|
|
89
|
+
// (the Node.js-targeted build uses sync fetch which fails in browsers)
|
|
90
|
+
logger.info(`Fetching sherpa-onnx WASM binary from ${wasmBinaryUrl}`);
|
|
91
|
+
const wasmResponse = await fetch(wasmBinaryUrl);
|
|
92
|
+
if (!wasmResponse.ok) {
|
|
93
|
+
throw new Error(`Failed to fetch sherpa-onnx.wasm: ${wasmResponse.status} ${wasmResponse.statusText}`);
|
|
94
|
+
}
|
|
95
|
+
const wasmBinary = await wasmResponse.arrayBuffer();
|
|
96
|
+
logger.info(`Sherpa-ONNX WASM binary fetched: ${(wasmBinary.byteLength / 1_000_000).toFixed(1)} MB`);
|
|
97
|
+
// Use instantiateWasm for async compilation (Chrome blocks sync compile for >8MB).
|
|
98
|
+
//
|
|
99
|
+
// The sherpa-onnx glue JS was compiled with NODERAWFS but we patched it:
|
|
100
|
+
// 1. ENVIRONMENT_IS_NODE = false → forces browser code paths
|
|
101
|
+
// 2. NODERAWFS mounting skipped → FS uses MEMFS
|
|
102
|
+
// 3. receiveInstance patched → re-assigns Module exports after wasmExports is set
|
|
103
|
+
//
|
|
104
|
+
// We pass noFSInit: true to skip FS.init() (which creates /dev/stdin etc.).
|
|
105
|
+
// We don't need standard streams — only file operations for staging model files.
|
|
106
|
+
// This ensures initRuntime() succeeds and the ready promise resolves.
|
|
107
|
+
//
|
|
108
|
+
// We track a separate wasmReady promise so that if WebAssembly.instantiate
|
|
109
|
+
// itself fails, we get the actual error instead of a generic timeout.
|
|
110
|
+
let resolveWasm;
|
|
111
|
+
let rejectWasm;
|
|
112
|
+
const wasmReady = new Promise((resolve, reject) => {
|
|
113
|
+
resolveWasm = resolve;
|
|
114
|
+
rejectWasm = reject;
|
|
115
|
+
});
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
+
const mod = createModule({
|
|
118
|
+
noFSInit: true,
|
|
119
|
+
print: (text) => logger.debug(text),
|
|
120
|
+
printErr: (text) => logger.warning(text),
|
|
121
|
+
wasmBinary,
|
|
122
|
+
locateFile: (path) => baseUrl + path,
|
|
123
|
+
instantiateWasm: (imports, receiveInstance) => {
|
|
124
|
+
WebAssembly.instantiate(wasmBinary, imports)
|
|
125
|
+
.then((result) => {
|
|
126
|
+
try {
|
|
127
|
+
receiveInstance(result.instance, result.module);
|
|
128
|
+
resolveWasm();
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
// receiveInstance may throw if initRuntime fails (e.g. FS errors).
|
|
132
|
+
// The WASM exports are already set by our patch at this point.
|
|
133
|
+
logger.warning(`receiveInstance completed with error (exports should still be set): ${err}`);
|
|
134
|
+
resolveWasm(); // Still resolve — exports are set before the throw point
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
.catch((err) => {
|
|
138
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
139
|
+
logger.error(`WASM instantiation failed: ${error.message}`);
|
|
140
|
+
rejectWasm(error);
|
|
141
|
+
});
|
|
142
|
+
return {}; // Indicates async instantiation
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
// Wait for WASM instantiation + receiveInstance to complete.
|
|
146
|
+
// Also race with the module.ready promise (which resolves after full init).
|
|
147
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
148
|
+
setTimeout(() => reject(new Error('Sherpa-ONNX WASM module timed out after 30s')), 30_000);
|
|
149
|
+
});
|
|
150
|
+
await Promise.race([wasmReady, timeoutPromise]);
|
|
151
|
+
this._module = mod;
|
|
152
|
+
// Verify critical exports are available (set by our patched receiveInstance)
|
|
153
|
+
if (typeof mod._malloc !== 'function') {
|
|
154
|
+
const available = ['_malloc', '_free', '_SherpaOnnxCreateOfflineRecognizer']
|
|
155
|
+
.map(fn => `${fn}: ${typeof mod[fn]}`)
|
|
156
|
+
.join(', ');
|
|
157
|
+
throw new Error(`WASM exports not available after initialization. Available: ${available}`);
|
|
158
|
+
}
|
|
159
|
+
this._loaded = true;
|
|
160
|
+
logger.info('Sherpa-ONNX WASM module loaded successfully');
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
this._module = null;
|
|
164
|
+
this._loaded = false;
|
|
165
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
166
|
+
logger.error(`Failed to load Sherpa-ONNX WASM: ${message}`);
|
|
167
|
+
throw new SDKError(SDKErrorCode.WASMLoadFailed, `Failed to load Sherpa-ONNX WASM module: ${message}. ` +
|
|
168
|
+
'Build with: ./wasm/scripts/build-sherpa-onnx.sh');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// -----------------------------------------------------------------------
|
|
172
|
+
// Filesystem Helpers
|
|
173
|
+
// -----------------------------------------------------------------------
|
|
174
|
+
/**
|
|
175
|
+
* Get the Emscripten FS object from the module.
|
|
176
|
+
* Handles both direct FS property and module-level helper functions.
|
|
177
|
+
*/
|
|
178
|
+
getFS() {
|
|
179
|
+
const m = this.module;
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
|
+
const mod = m;
|
|
182
|
+
// First try direct FS property
|
|
183
|
+
if (m.FS && typeof m.FS.mkdir === 'function') {
|
|
184
|
+
return m.FS;
|
|
185
|
+
}
|
|
186
|
+
// Fallback: construct FS-like interface from Emscripten module-level helpers
|
|
187
|
+
if (typeof mod.FS_createPath === 'function') {
|
|
188
|
+
return {
|
|
189
|
+
mkdir: (p) => {
|
|
190
|
+
const parent = p.substring(0, p.lastIndexOf('/')) || '/';
|
|
191
|
+
const name = p.substring(p.lastIndexOf('/') + 1);
|
|
192
|
+
mod.FS_createPath(parent, name, true, true);
|
|
193
|
+
},
|
|
194
|
+
writeFile: (p, data) => {
|
|
195
|
+
const dir = p.substring(0, p.lastIndexOf('/')) || '/';
|
|
196
|
+
const name = p.substring(p.lastIndexOf('/') + 1);
|
|
197
|
+
try {
|
|
198
|
+
mod.FS_unlink(p);
|
|
199
|
+
}
|
|
200
|
+
catch { /* file may not exist */ }
|
|
201
|
+
mod.FS_createDataFile(dir, name, data, true, true, true);
|
|
202
|
+
},
|
|
203
|
+
readFile: (p) => mod.FS_readFile(p),
|
|
204
|
+
unlink: (p) => mod.FS_unlink(p),
|
|
205
|
+
analyzePath: (p) => {
|
|
206
|
+
try {
|
|
207
|
+
mod.FS_readFile(p);
|
|
208
|
+
return { exists: true };
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return { exists: false };
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX FS not available');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
|
|
220
|
+
*/
|
|
221
|
+
ensureDir(path) {
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
223
|
+
const mod = this.module;
|
|
224
|
+
if (typeof mod.FS_createPath === 'function') {
|
|
225
|
+
// Use FS_createPath which creates all intermediate directories
|
|
226
|
+
mod.FS_createPath('/', path.replace(/^\//, ''), true, true);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// Fallback to FS.mkdir
|
|
230
|
+
const fs = this.getFS();
|
|
231
|
+
const parts = path.split('/').filter(Boolean);
|
|
232
|
+
let current = '';
|
|
233
|
+
for (const part of parts) {
|
|
234
|
+
current += '/' + part;
|
|
235
|
+
if (!fs.analyzePath(current).exists) {
|
|
236
|
+
fs.mkdir(current);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Write a file into the sherpa-onnx Emscripten virtual FS.
|
|
242
|
+
* Used to stage model files before loading.
|
|
243
|
+
*
|
|
244
|
+
* Prefers FS_createDataFile over FS.writeFile for reliability —
|
|
245
|
+
* the module was compiled with NODERAWFS which can leave FS.writeFile
|
|
246
|
+
* in a broken state even after our browser patches.
|
|
247
|
+
*/
|
|
248
|
+
writeFile(path, data) {
|
|
249
|
+
const dir = path.substring(0, path.lastIndexOf('/'));
|
|
250
|
+
if (dir)
|
|
251
|
+
this.ensureDir(dir);
|
|
252
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
253
|
+
const mod = this.module;
|
|
254
|
+
// Prefer FS_createDataFile — it creates the file node and writes data
|
|
255
|
+
// in one shot, avoiding potential issues with FS.open / FS.write on
|
|
256
|
+
// NODERAWFS-patched modules.
|
|
257
|
+
if (typeof mod.FS_createDataFile === 'function') {
|
|
258
|
+
const parentDir = dir || '/';
|
|
259
|
+
const filename = path.substring(path.lastIndexOf('/') + 1);
|
|
260
|
+
// Remove existing file first (FS_createDataFile throws if it exists)
|
|
261
|
+
try {
|
|
262
|
+
if (typeof mod.FS_unlink === 'function') {
|
|
263
|
+
mod.FS_unlink(path);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// File doesn't exist — that's fine
|
|
268
|
+
}
|
|
269
|
+
mod.FS_createDataFile(parentDir, filename, data, true, true, false);
|
|
270
|
+
logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
// Fallback to FS.writeFile
|
|
274
|
+
const fs = this.getFS();
|
|
275
|
+
fs.writeFile(path, data);
|
|
276
|
+
logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Download a file from a URL and write it to the sherpa-onnx FS.
|
|
280
|
+
*/
|
|
281
|
+
async downloadAndWrite(url, fsPath, onProgress) {
|
|
282
|
+
logger.info(`Downloading ${url} -> ${fsPath}`);
|
|
283
|
+
const response = await fetch(url);
|
|
284
|
+
if (!response.ok) {
|
|
285
|
+
throw new SDKError(SDKErrorCode.NetworkError, `Failed to download ${url}: ${response.status} ${response.statusText}`);
|
|
286
|
+
}
|
|
287
|
+
const contentLength = Number(response.headers.get('content-length') ?? 0);
|
|
288
|
+
const reader = response.body?.getReader();
|
|
289
|
+
if (!reader) {
|
|
290
|
+
// Fallback: read all at once
|
|
291
|
+
const buffer = await response.arrayBuffer();
|
|
292
|
+
this.writeFile(fsPath, new Uint8Array(buffer));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Stream download with progress
|
|
296
|
+
const chunks = [];
|
|
297
|
+
let loaded = 0;
|
|
298
|
+
while (true) {
|
|
299
|
+
const { done, value } = await reader.read();
|
|
300
|
+
if (done)
|
|
301
|
+
break;
|
|
302
|
+
chunks.push(value);
|
|
303
|
+
loaded += value.length;
|
|
304
|
+
onProgress?.(loaded, contentLength);
|
|
305
|
+
}
|
|
306
|
+
// Combine chunks
|
|
307
|
+
const combined = new Uint8Array(loaded);
|
|
308
|
+
let offset = 0;
|
|
309
|
+
for (const chunk of chunks) {
|
|
310
|
+
combined.set(chunk, offset);
|
|
311
|
+
offset += chunk.length;
|
|
312
|
+
}
|
|
313
|
+
this.writeFile(fsPath, combined);
|
|
314
|
+
}
|
|
315
|
+
// -----------------------------------------------------------------------
|
|
316
|
+
// String Helpers
|
|
317
|
+
// -----------------------------------------------------------------------
|
|
318
|
+
allocString(str) {
|
|
319
|
+
const m = this.module;
|
|
320
|
+
const len = m.lengthBytesUTF8(str) + 1;
|
|
321
|
+
const ptr = m._malloc(len);
|
|
322
|
+
m.stringToUTF8(str, ptr, len);
|
|
323
|
+
return ptr;
|
|
324
|
+
}
|
|
325
|
+
readString(ptr) {
|
|
326
|
+
if (ptr === 0)
|
|
327
|
+
return '';
|
|
328
|
+
return this.module.UTF8ToString(ptr);
|
|
329
|
+
}
|
|
330
|
+
free(ptr) {
|
|
331
|
+
if (ptr !== 0)
|
|
332
|
+
this.module._free(ptr);
|
|
333
|
+
}
|
|
334
|
+
// -----------------------------------------------------------------------
|
|
335
|
+
// Cleanup
|
|
336
|
+
// -----------------------------------------------------------------------
|
|
337
|
+
shutdown() {
|
|
338
|
+
this._module = null;
|
|
339
|
+
this._loaded = false;
|
|
340
|
+
this._loading = null;
|
|
341
|
+
SherpaONNXBridge._instance = null;
|
|
342
|
+
logger.info('Sherpa-ONNX bridge shut down');
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=SherpaONNXBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SherpaONNXBridge.js","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,17 +9,14 @@
|
|
|
9
9
|
* `offsetof()` in wasm_exports.cpp) exactly once after the WASM module is
|
|
10
10
|
* loaded, and caches the results for the lifetime of the page.
|
|
11
11
|
*
|
|
12
|
-
* The offset system is extensible: backend packages (llamacpp, onnx) can
|
|
13
|
-
* register additional offsets via `mergeOffsets()`.
|
|
14
|
-
*
|
|
15
12
|
* Usage:
|
|
16
|
-
* import { Offsets, loadOffsets } from '
|
|
13
|
+
* import { Offsets, loadOffsets } from '../Foundation/StructOffsets';
|
|
17
14
|
*
|
|
18
15
|
* // Called once during SDK init (after WASM load):
|
|
19
16
|
* loadOffsets(wasmModule);
|
|
20
17
|
*
|
|
21
18
|
* // Then anywhere:
|
|
22
|
-
* m.setValue(optPtr + Offsets.
|
|
19
|
+
* m.setValue(optPtr + Offsets.llmOptions.temperature, 0.8, 'float');
|
|
23
20
|
*/
|
|
24
21
|
export interface ConfigOffsets {
|
|
25
22
|
logLevel: number;
|
|
@@ -112,7 +109,6 @@ export interface DiffusionResultOffsets {
|
|
|
112
109
|
generationTimeMs: number;
|
|
113
110
|
safetyFlagged: number;
|
|
114
111
|
}
|
|
115
|
-
/** All possible offsets. Core provides `config`; backend packages add the rest. */
|
|
116
112
|
export interface AllOffsets {
|
|
117
113
|
config: ConfigOffsets;
|
|
118
114
|
llmOptions: LLMOptionsOffsets;
|
|
@@ -129,48 +125,24 @@ export interface AllOffsets {
|
|
|
129
125
|
diffusionResult: DiffusionResultOffsets;
|
|
130
126
|
}
|
|
131
127
|
/**
|
|
132
|
-
* Get the cached struct offsets.
|
|
133
|
-
* Returns the merged offsets from core + all registered backends.
|
|
128
|
+
* Get the cached struct offsets. Throws if `loadOffsets()` hasn't been called.
|
|
134
129
|
*/
|
|
135
130
|
export declare function getOffsets(): AllOffsets;
|
|
136
131
|
/**
|
|
137
132
|
* Convenience re-export so callers can write `Offsets.vlmResult.text`.
|
|
138
|
-
* Returns a Proxy that dynamically resolves from the cached offset store.
|
|
139
133
|
*/
|
|
140
134
|
export declare const Offsets: AllOffsets;
|
|
141
135
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*/
|
|
145
|
-
export declare function wasmOffsetOf(m: any, name: string): number;
|
|
146
|
-
/**
|
|
147
|
-
* Safely call a `_rac_wasm_sizeof_*` function. Returns 0 if the
|
|
148
|
-
* function doesn't exist.
|
|
149
|
-
*/
|
|
150
|
-
export declare function wasmSizeOf(m: any, name: string): number;
|
|
151
|
-
/**
|
|
152
|
-
* Load core struct field offsets from the WASM module.
|
|
153
|
-
* Called once during SDK init (after WASM load).
|
|
136
|
+
* Read all struct field offsets from the WASM module and cache them.
|
|
137
|
+
* Must be called exactly once, after the WASM module is loaded.
|
|
154
138
|
*
|
|
155
139
|
* @param m - The Emscripten WASM module instance
|
|
156
140
|
*/
|
|
157
141
|
export declare function loadOffsets(m: any): void;
|
|
158
|
-
/**
|
|
159
|
-
* Merge additional offsets from a backend package.
|
|
160
|
-
* Called by backend providers during registration.
|
|
161
|
-
*
|
|
162
|
-
* @param offsets - Partial offset tables to merge
|
|
163
|
-
*/
|
|
164
|
-
export declare function mergeOffsets(offsets: Partial<AllOffsets>): void;
|
|
165
142
|
/**
|
|
166
143
|
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
167
144
|
* Returns the offsets directly instead of storing them in the singleton.
|
|
168
145
|
* Useful when the Worker has its own WASM instance.
|
|
169
146
|
*/
|
|
170
147
|
export declare function loadOffsetsFromModule(m: any): AllOffsets;
|
|
171
|
-
/**
|
|
172
|
-
* Load llama.cpp-specific offsets into the singleton.
|
|
173
|
-
* Called by LlamaCppProvider.register() and loadOffsetsFromModule().
|
|
174
|
-
*/
|
|
175
|
-
export declare function loadLlamaCppOffsetsInto(m: any): void;
|
|
176
148
|
//# sourceMappingURL=StructOffsets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"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"}
|