@automatalabs/react-native-transformers 0.1.1 → 0.1.2

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 (46) hide show
  1. package/README.md +5 -1
  2. package/app.plugin.js +1 -1
  3. package/dist/app.plugin.d.ts +3 -0
  4. package/dist/app.plugin.d.ts.map +1 -0
  5. package/dist/app.plugin.js +4 -0
  6. package/dist/app.plugin.js.map +1 -0
  7. package/dist/plugin/src/index.d.ts +4 -0
  8. package/dist/plugin/src/index.d.ts.map +1 -0
  9. package/dist/plugin/src/index.js +16 -0
  10. package/dist/plugin/src/index.js.map +1 -0
  11. package/dist/src/adapter/onnxruntime-web-webgpu.d.ts +47 -0
  12. package/dist/src/adapter/onnxruntime-web-webgpu.d.ts.map +1 -0
  13. package/dist/src/adapter/onnxruntime-web-webgpu.js +256 -0
  14. package/dist/src/adapter/onnxruntime-web-webgpu.js.map +1 -0
  15. package/dist/src/expoFileSystemCache.d.ts +17 -0
  16. package/dist/src/expoFileSystemCache.d.ts.map +1 -0
  17. package/dist/src/expoFileSystemCache.js +240 -0
  18. package/dist/src/expoFileSystemCache.js.map +1 -0
  19. package/dist/src/index.d.ts +3 -0
  20. package/dist/src/index.d.ts.map +1 -0
  21. package/dist/src/index.js +16 -0
  22. package/dist/src/index.js.map +1 -0
  23. package/dist/src/metro.d.ts +21 -0
  24. package/dist/src/metro.d.ts.map +1 -0
  25. package/dist/src/metro.js +90 -0
  26. package/dist/src/metro.js.map +1 -0
  27. package/dist/src/runtime.d.ts +17 -0
  28. package/dist/src/runtime.d.ts.map +1 -0
  29. package/dist/src/runtime.js +511 -0
  30. package/dist/src/runtime.js.map +1 -0
  31. package/dist/src/transformers.d.ts +19 -0
  32. package/dist/src/transformers.d.ts.map +1 -0
  33. package/dist/src/transformers.js +224 -0
  34. package/dist/src/transformers.js.map +1 -0
  35. package/dist/src/types.d.ts +96 -0
  36. package/dist/src/types.d.ts.map +1 -0
  37. package/dist/src/types.js +3 -0
  38. package/dist/src/types.js.map +1 -0
  39. package/package.json +57 -13
  40. package/plugin/src/index.js +0 -13
  41. package/src/adapter/onnxruntime-web-webgpu.js +0 -246
  42. package/src/expoFileSystemCache.js +0 -251
  43. package/src/index.js +0 -27
  44. package/src/metro.js +0 -66
  45. package/src/runtime.js +0 -535
  46. package/src/transformers.js +0 -225
@@ -1,225 +0,0 @@
1
- const {
2
- configureTransformersEnvironment,
3
- ensureTransformersFetch,
4
- installTransformersReactNativeGlobals,
5
- normalizeTransformersOptions,
6
- } = require('./runtime');
7
-
8
- const TRANSFORMERS_MODULE_ID = '@automatalabs/react-native-transformers/internal-transformers-web';
9
- const TRANSFORMERS_REACT_NATIVE_PATCHED = Symbol.for(
10
- '@automatalabs/react-native-transformers.patched-transformers',
11
- );
12
- const TRANSFORMERS_REACT_NATIVE_WRAPPED = Symbol.for(
13
- '@automatalabs/react-native-transformers.wrapped-from-pretrained',
14
- );
15
- const ONNX_DTYPE_RETRY_ORDER = Object.freeze([
16
- 'fp32',
17
- 'q8',
18
- 'q4',
19
- 'q4f16',
20
- 'fp16',
21
- 'int8',
22
- 'uint8',
23
- 'bnb4',
24
- ]);
25
-
26
- function getErrorMessage(error) {
27
- return String(error?.stack ?? error?.message ?? error ?? '');
28
- }
29
-
30
- function isLikelyMissingOnnxAssetError(error) {
31
- const message = getErrorMessage(error).toLowerCase();
32
-
33
- if (!message.includes('.onnx') && !message.includes('external data')) {
34
- return false;
35
- }
36
-
37
- return (
38
- message.includes('404') ||
39
- message.includes('not found') ||
40
- message.includes('missing') ||
41
- message.includes('could not locate file') ||
42
- message.includes('local file missing')
43
- );
44
- }
45
-
46
- function getRetryDtypes(initialDtype) {
47
- const triedDtypes = new Set();
48
-
49
- if (typeof initialDtype === 'string') {
50
- triedDtypes.add(initialDtype);
51
- }
52
-
53
- return ONNX_DTYPE_RETRY_ORDER.filter((dtype) => !triedDtypes.has(dtype));
54
- }
55
-
56
- function wrapPipeline(fn) {
57
- if (typeof fn !== 'function' || fn[TRANSFORMERS_REACT_NATIVE_WRAPPED]) {
58
- return fn;
59
- }
60
-
61
- const wrapped = function wrappedPipeline(task, model, options, ...rest) {
62
- ensureTransformersFetch(transformers, options);
63
- return fn.call(this, task, model, normalizeTransformersOptions(options ?? {}), ...rest);
64
- };
65
-
66
- Object.defineProperty(wrapped, TRANSFORMERS_REACT_NATIVE_WRAPPED, {
67
- configurable: false,
68
- enumerable: false,
69
- writable: false,
70
- value: true,
71
- });
72
-
73
- return wrapped;
74
- }
75
-
76
- function wrapOptionsMethod(target, methodName, optionsIndex) {
77
- if (!target || (typeof target !== 'function' && typeof target !== 'object')) {
78
- return;
79
- }
80
-
81
- const original = target[methodName];
82
- if (typeof original !== 'function') {
83
- return;
84
- }
85
-
86
- if (original[TRANSFORMERS_REACT_NATIVE_WRAPPED]) {
87
- return;
88
- }
89
-
90
- target[methodName] = function wrappedMethod(...args) {
91
- const normalizedArgs = [...args];
92
- while (normalizedArgs.length <= optionsIndex) {
93
- normalizedArgs.push(undefined);
94
- }
95
-
96
- normalizedArgs[optionsIndex] = normalizeTransformersOptions(normalizedArgs[optionsIndex] ?? {});
97
- return original.apply(this, normalizedArgs);
98
- };
99
-
100
- Object.defineProperty(target[methodName], TRANSFORMERS_REACT_NATIVE_WRAPPED, {
101
- configurable: false,
102
- enumerable: false,
103
- writable: false,
104
- value: true,
105
- });
106
- }
107
-
108
- function wrapFromPretrained(target) {
109
- if (typeof target !== 'function') {
110
- return;
111
- }
112
-
113
- const original = target.from_pretrained;
114
- if (typeof original !== 'function' || original[TRANSFORMERS_REACT_NATIVE_WRAPPED]) {
115
- return;
116
- }
117
-
118
- target.from_pretrained = async function wrappedFromPretrained(...args) {
119
- const normalizedArgs = [...args];
120
- while (normalizedArgs.length <= 1) {
121
- normalizedArgs.push(undefined);
122
- }
123
-
124
- const rawOptions = normalizedArgs[1] ?? {};
125
- ensureTransformersFetch(transformers, rawOptions);
126
- const normalizedOptions = normalizeTransformersOptions(rawOptions);
127
- normalizedArgs[1] = normalizedOptions;
128
-
129
- try {
130
- return await original.apply(this, normalizedArgs);
131
- } catch (error) {
132
- if (rawOptions?.dtype != null || !isLikelyMissingOnnxAssetError(error)) {
133
- throw error;
134
- }
135
-
136
- let lastError = error;
137
-
138
- for (const dtype of getRetryDtypes(normalizedOptions.dtype)) {
139
- try {
140
- normalizedArgs[1] = {
141
- ...normalizedOptions,
142
- dtype,
143
- };
144
-
145
- return await original.apply(this, normalizedArgs);
146
- } catch (retryError) {
147
- if (!isLikelyMissingOnnxAssetError(retryError)) {
148
- throw retryError;
149
- }
150
-
151
- lastError = retryError;
152
- }
153
- }
154
-
155
- throw lastError;
156
- }
157
- };
158
-
159
- Object.defineProperty(target.from_pretrained, TRANSFORMERS_REACT_NATIVE_WRAPPED, {
160
- configurable: false,
161
- enumerable: false,
162
- writable: false,
163
- value: true,
164
- });
165
- }
166
-
167
- function wrapModelRegistry(modelRegistry) {
168
- wrapOptionsMethod(modelRegistry, 'get_files', 1);
169
- wrapOptionsMethod(modelRegistry, 'get_model_files', 1);
170
- wrapOptionsMethod(modelRegistry, 'get_pipeline_files', 2);
171
- wrapOptionsMethod(modelRegistry, 'is_cached', 1);
172
- wrapOptionsMethod(modelRegistry, 'is_cached_files', 1);
173
- wrapOptionsMethod(modelRegistry, 'is_pipeline_cached', 2);
174
- wrapOptionsMethod(modelRegistry, 'is_pipeline_cached_files', 2);
175
- wrapOptionsMethod(modelRegistry, 'clear_cache', 1);
176
- wrapOptionsMethod(modelRegistry, 'clear_pipeline_cache', 2);
177
- }
178
-
179
- function patchTransformersReactNative(transformers, options = {}) {
180
- if (!transformers || typeof transformers !== 'object') {
181
- return transformers;
182
- }
183
-
184
- if (transformers[TRANSFORMERS_REACT_NATIVE_PATCHED]) {
185
- return transformers;
186
- }
187
-
188
- installTransformersReactNativeGlobals(options.globals);
189
- configureTransformersEnvironment(transformers, options.environment);
190
- ensureTransformersFetch(transformers, options.environment);
191
-
192
- if (typeof transformers.pipeline === 'function') {
193
- transformers.pipeline = wrapPipeline(transformers.pipeline);
194
- }
195
-
196
- for (const value of Object.values(transformers)) {
197
- wrapFromPretrained(value);
198
- }
199
-
200
- wrapModelRegistry(transformers.ModelRegistry);
201
-
202
- Object.assign(transformers, {
203
- configureTransformersEnvironment,
204
- ensureTransformersFetch,
205
- installTransformersReactNativeGlobals,
206
- normalizeTransformersOptions,
207
- patchTransformersReactNative,
208
- rawTransformers: transformers,
209
- });
210
-
211
- Object.defineProperty(transformers, TRANSFORMERS_REACT_NATIVE_PATCHED, {
212
- configurable: false,
213
- enumerable: false,
214
- writable: false,
215
- value: true,
216
- });
217
-
218
- return transformers;
219
- }
220
-
221
- installTransformersReactNativeGlobals();
222
-
223
- const transformers = patchTransformersReactNative(require(TRANSFORMERS_MODULE_ID));
224
-
225
- module.exports = transformers;