@mleonard9/vin-scanner 1.4.8 → 1.5.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.
- package/README.md +13 -7
- package/lib/commonjs/scanBarcodes.js +28 -1
- package/lib/commonjs/scanBarcodes.js.map +1 -1
- package/lib/commonjs/scanText.js +28 -1
- package/lib/commonjs/scanText.js.map +1 -1
- package/lib/module/scanBarcodes.js +28 -1
- package/lib/module/scanBarcodes.js.map +1 -1
- package/lib/module/scanText.js +28 -1
- package/lib/module/scanText.js.map +1 -1
- package/lib/typescript/src/scanBarcodes.d.ts.map +1 -1
- package/lib/typescript/src/scanText.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/scanBarcodes.ts +45 -1
- package/src/scanText.ts +52 -1
package/README.md
CHANGED
|
@@ -10,15 +10,17 @@ High-performance VIN detection for React Native powered by Google ML Kit barcode
|
|
|
10
10
|
|
|
11
11
|
## Requirements
|
|
12
12
|
|
|
13
|
-
- `react-native-vision-camera` >= 4.6.0
|
|
14
|
-
- `react-native-worklets-core` >= 1.3.3
|
|
13
|
+
- `react-native-vision-camera` >= 4.6.0
|
|
14
|
+
- `react-native-worklets-core` >= 1.3.3
|
|
15
15
|
- `react-native-gesture-handler` >= 2.0.0 (for tap-to-focus)
|
|
16
16
|
- `react-native-reanimated` >= 3.0.0 (for tap-to-focus)
|
|
17
17
|
- iOS 13+ / Android 21+
|
|
18
18
|
|
|
19
19
|
## Compatibility
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
This package keeps peer dependency ranges broad so consuming apps can control their React Native, VisionCamera, and Worklets versions.
|
|
22
|
+
|
|
23
|
+
Tested matrix:
|
|
22
24
|
|
|
23
25
|
| Package | Recommended |
|
|
24
26
|
| --- | --- |
|
|
@@ -26,16 +28,20 @@ Tested combinations:
|
|
|
26
28
|
| `react-native-worklets-core` | `1.3.3` |
|
|
27
29
|
|
|
28
30
|
Notes:
|
|
31
|
+
- The package's own dev/test environment stays pinned to the matrix above, but published peer ranges remain open to support newer app stacks.
|
|
29
32
|
- `react-native-worklets-core` `1.6.x` has caused frame-processor HostObject compatibility issues with VisionCamera v4 in some apps.
|
|
30
|
-
- The package includes a frame unwrap compatibility shim
|
|
31
|
-
- If your app is
|
|
33
|
+
- The package includes a frame unwrap compatibility shim to improve compatibility with newer Worklets wrappers.
|
|
34
|
+
- If your app is on newer Worklets or React Native, test carefully and prefer keeping VisionCamera and Worklets aligned to versions already validated in your app.
|
|
32
35
|
|
|
33
36
|
## Installation
|
|
34
37
|
|
|
35
38
|
```sh
|
|
36
|
-
yarn add @mleonard9/vin-scanner
|
|
39
|
+
yarn add @mleonard9/vin-scanner
|
|
37
40
|
# or
|
|
38
|
-
npm install @mleonard9/vin-scanner
|
|
41
|
+
npm install @mleonard9/vin-scanner
|
|
42
|
+
|
|
43
|
+
# If you need a known-good baseline, start with:
|
|
44
|
+
# yarn add react-native-vision-camera@4.7.3 react-native-worklets-core@1.3.3
|
|
39
45
|
|
|
40
46
|
# Optional (for haptic cues)
|
|
41
47
|
# yarn add react-native-haptic-feedback
|
|
@@ -33,6 +33,33 @@ const unwrapPluginFrame = frame => {
|
|
|
33
33
|
const candidate = frame;
|
|
34
34
|
return candidate.__frame ?? frame;
|
|
35
35
|
};
|
|
36
|
+
const toSerializableValue = value => {
|
|
37
|
+
'worklet';
|
|
38
|
+
|
|
39
|
+
if (value == null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
if (value instanceof ArrayBuffer) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
return value.map(item => toSerializableValue(item));
|
|
47
|
+
}
|
|
48
|
+
if (typeof value === 'object') {
|
|
49
|
+
const record = value;
|
|
50
|
+
const output = {};
|
|
51
|
+
Object.keys(record).forEach(key => {
|
|
52
|
+
output[key] = toSerializableValue(record[key]);
|
|
53
|
+
});
|
|
54
|
+
return output;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
};
|
|
58
|
+
const toSerializableArgs = args => {
|
|
59
|
+
'worklet';
|
|
60
|
+
|
|
61
|
+
return toSerializableValue(args);
|
|
62
|
+
};
|
|
36
63
|
const toFloat32Array = input => {
|
|
37
64
|
'worklet';
|
|
38
65
|
|
|
@@ -125,7 +152,7 @@ function createBarcodeScannerPlugin(formats) {
|
|
|
125
152
|
|
|
126
153
|
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
127
154
|
const args = overrides || orientation ? mergeArgs(baseOptions, overrides, orientation ?? null) : baseOptions;
|
|
128
|
-
const result = plugin.call(unwrapPluginFrame(frame), args);
|
|
155
|
+
const result = plugin.call(unwrapPluginFrame(frame), toSerializableArgs(args));
|
|
129
156
|
return normalizeBarcodeDetections(result);
|
|
130
157
|
}
|
|
131
158
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","toSerializableValue","value","ArrayBuffer","Array","isArray","map","item","record","output","Object","keys","forEach","key","undefined","toSerializableArgs","args","toFloat32Array","input","Float32Array","normalizeBarcodeDetections","payload","detections","buffer","boxes","detection","index","boxIndex","offset","top","bottom","left","right","width","height","mergeArgs","baseArgs","overrides","orientation","scanRegion","merged","overrideOrientation","overrideScanRegion","formatMap","entries","createBarcodeScannerPlugin","baseOptions","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanBarcodes","result","call"],"sourceRoot":"../../src","sources":["scanBarcodes.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/scanText.js
CHANGED
|
@@ -17,6 +17,33 @@ const unwrapPluginFrame = frame => {
|
|
|
17
17
|
const candidate = frame;
|
|
18
18
|
return candidate.__frame ?? frame;
|
|
19
19
|
};
|
|
20
|
+
const toSerializableValue = value => {
|
|
21
|
+
'worklet';
|
|
22
|
+
|
|
23
|
+
if (value == null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
if (value instanceof ArrayBuffer) {
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
return value.map(item => toSerializableValue(item));
|
|
31
|
+
}
|
|
32
|
+
if (typeof value === 'object') {
|
|
33
|
+
const record = value;
|
|
34
|
+
const output = {};
|
|
35
|
+
Object.keys(record).forEach(key => {
|
|
36
|
+
output[key] = toSerializableValue(record[key]);
|
|
37
|
+
});
|
|
38
|
+
return output;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
};
|
|
42
|
+
const toSerializableArgs = args => {
|
|
43
|
+
'worklet';
|
|
44
|
+
|
|
45
|
+
return toSerializableValue(args);
|
|
46
|
+
};
|
|
20
47
|
const toFloat32Array = input => {
|
|
21
48
|
'worklet';
|
|
22
49
|
|
|
@@ -112,7 +139,7 @@ function createTextRecognitionPlugin(options) {
|
|
|
112
139
|
|
|
113
140
|
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
114
141
|
const args = overrides || orientation ? mergeTextArgs(options, overrides, orientation ?? null) : options;
|
|
115
|
-
const result = plugin.call(unwrapPluginFrame(frame), args);
|
|
142
|
+
const result = plugin.call(unwrapPluginFrame(frame), toSerializableArgs(args));
|
|
116
143
|
return normalizeTextDetections(result);
|
|
117
144
|
}
|
|
118
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","TEXT_BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","TEXT_BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","toSerializableValue","value","ArrayBuffer","Array","isArray","map","item","record","output","Object","keys","forEach","key","undefined","toSerializableArgs","args","toFloat32Array","input","Float32Array","normalizeTextDetections","payload","detections","buffer","boxes","detection","index","boxIndex","offset","length","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","mergeTextArgs","base","overrides","orientation","scanRegion","merged","overrideOrientation","overrideScanRegion","rest","assign","createTextRecognitionPlugin","options","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanText","result","call"],"sourceRoot":"../../src","sources":["scanText.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,6 +27,33 @@ const unwrapPluginFrame = frame => {
|
|
|
27
27
|
const candidate = frame;
|
|
28
28
|
return candidate.__frame ?? frame;
|
|
29
29
|
};
|
|
30
|
+
const toSerializableValue = value => {
|
|
31
|
+
'worklet';
|
|
32
|
+
|
|
33
|
+
if (value == null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
if (value instanceof ArrayBuffer) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
if (Array.isArray(value)) {
|
|
40
|
+
return value.map(item => toSerializableValue(item));
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === 'object') {
|
|
43
|
+
const record = value;
|
|
44
|
+
const output = {};
|
|
45
|
+
Object.keys(record).forEach(key => {
|
|
46
|
+
output[key] = toSerializableValue(record[key]);
|
|
47
|
+
});
|
|
48
|
+
return output;
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
};
|
|
52
|
+
const toSerializableArgs = args => {
|
|
53
|
+
'worklet';
|
|
54
|
+
|
|
55
|
+
return toSerializableValue(args);
|
|
56
|
+
};
|
|
30
57
|
const toFloat32Array = input => {
|
|
31
58
|
'worklet';
|
|
32
59
|
|
|
@@ -119,7 +146,7 @@ export function createBarcodeScannerPlugin(formats) {
|
|
|
119
146
|
|
|
120
147
|
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
121
148
|
const args = overrides || orientation ? mergeArgs(baseOptions, overrides, orientation ?? null) : baseOptions;
|
|
122
|
-
const result = plugin.call(unwrapPluginFrame(frame), args);
|
|
149
|
+
const result = plugin.call(unwrapPluginFrame(frame), toSerializableArgs(args));
|
|
123
150
|
return normalizeBarcodeDetections(result);
|
|
124
151
|
}
|
|
125
152
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","
|
|
1
|
+
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","toSerializableValue","value","ArrayBuffer","Array","isArray","map","item","record","output","Object","keys","forEach","key","undefined","toSerializableArgs","args","toFloat32Array","input","Float32Array","normalizeBarcodeDetections","payload","detections","buffer","boxes","detection","index","boxIndex","offset","top","bottom","left","right","width","height","mergeArgs","baseArgs","overrides","orientation","scanRegion","merged","overrideOrientation","overrideScanRegion","formatMap","entries","createBarcodeScannerPlugin","baseOptions","plugin","initFrameProcessorPlugin","Error","scanBarcodes","result","call"],"sourceRoot":"../../src","sources":["scanBarcodes.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/scanText.js
CHANGED
|
@@ -11,6 +11,33 @@ const unwrapPluginFrame = frame => {
|
|
|
11
11
|
const candidate = frame;
|
|
12
12
|
return candidate.__frame ?? frame;
|
|
13
13
|
};
|
|
14
|
+
const toSerializableValue = value => {
|
|
15
|
+
'worklet';
|
|
16
|
+
|
|
17
|
+
if (value == null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
if (value instanceof ArrayBuffer) {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
return value.map(item => toSerializableValue(item));
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'object') {
|
|
27
|
+
const record = value;
|
|
28
|
+
const output = {};
|
|
29
|
+
Object.keys(record).forEach(key => {
|
|
30
|
+
output[key] = toSerializableValue(record[key]);
|
|
31
|
+
});
|
|
32
|
+
return output;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
};
|
|
36
|
+
const toSerializableArgs = args => {
|
|
37
|
+
'worklet';
|
|
38
|
+
|
|
39
|
+
return toSerializableValue(args);
|
|
40
|
+
};
|
|
14
41
|
const toFloat32Array = input => {
|
|
15
42
|
'worklet';
|
|
16
43
|
|
|
@@ -106,7 +133,7 @@ export function createTextRecognitionPlugin(options) {
|
|
|
106
133
|
|
|
107
134
|
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
108
135
|
const args = overrides || orientation ? mergeTextArgs(options, overrides, orientation ?? null) : options;
|
|
109
|
-
const result = plugin.call(unwrapPluginFrame(frame), args);
|
|
136
|
+
const result = plugin.call(unwrapPluginFrame(frame), toSerializableArgs(args));
|
|
110
137
|
return normalizeTextDetections(result);
|
|
111
138
|
}
|
|
112
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","TEXT_BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","
|
|
1
|
+
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","TEXT_BOX_STRIDE","unwrapPluginFrame","frame","candidate","__frame","toSerializableValue","value","ArrayBuffer","Array","isArray","map","item","record","output","Object","keys","forEach","key","undefined","toSerializableArgs","args","toFloat32Array","input","Float32Array","normalizeTextDetections","payload","detections","buffer","boxes","detection","index","boxIndex","offset","length","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","mergeTextArgs","base","overrides","orientation","scanRegion","merged","overrideOrientation","overrideScanRegion","rest","assign","createTextRecognitionPlugin","options","plugin","initFrameProcessorPlugin","Error","scanText","result","call"],"sourceRoot":"../../src","sources":["scanText.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanBarcodes.d.ts","sourceRoot":"","sources":["../../../src/scanBarcodes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,oBAAoB,EAIpB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scanBarcodes.d.ts","sourceRoot":"","sources":["../../../src/scanBarcodes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,oBAAoB,EAIpB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAoLjB,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,kBAAkB,GAC1B,oBAAoB,CA2BtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanText.d.ts","sourceRoot":"","sources":["../../../src/scanText.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAKV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scanText.d.ts","sourceRoot":"","sources":["../../../src/scanText.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAKV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAiKjB,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CA4BvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mleonard9/vin-scanner",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "High-performance VIN scanner for React Native Vision Camera powered by Google ML Kit barcode + text recognition.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -90,8 +90,8 @@
|
|
|
90
90
|
"react-native": "*",
|
|
91
91
|
"react-native-gesture-handler": ">=2.0.0",
|
|
92
92
|
"react-native-reanimated": ">=3.0.0",
|
|
93
|
-
"react-native-vision-camera": ">=4.6
|
|
94
|
-
"react-native-worklets-core": ">=1.3.3
|
|
93
|
+
"react-native-vision-camera": ">=4.6",
|
|
94
|
+
"react-native-worklets-core": ">=1.3.3"
|
|
95
95
|
},
|
|
96
96
|
"workspaces": [
|
|
97
97
|
"example"
|
|
@@ -171,4 +171,4 @@
|
|
|
171
171
|
]
|
|
172
172
|
]
|
|
173
173
|
}
|
|
174
|
-
}
|
|
174
|
+
}
|
package/src/scanBarcodes.ts
CHANGED
|
@@ -40,6 +40,15 @@ const KNOWN_FORMATS: BarcodeFormat[] = [
|
|
|
40
40
|
];
|
|
41
41
|
|
|
42
42
|
type NativeBarcodeOptionMap = Partial<Record<BarcodeFormat, boolean>>;
|
|
43
|
+
type SerializableValue =
|
|
44
|
+
| string
|
|
45
|
+
| number
|
|
46
|
+
| boolean
|
|
47
|
+
| null
|
|
48
|
+
| undefined
|
|
49
|
+
| ArrayBuffer
|
|
50
|
+
| SerializableValue[]
|
|
51
|
+
| { [key: string]: SerializableValue };
|
|
43
52
|
|
|
44
53
|
const toNativeBarcodeOptions = (
|
|
45
54
|
formats?: ScanBarcodeOptions
|
|
@@ -64,6 +73,38 @@ const unwrapPluginFrame = (frame: Frame): Frame => {
|
|
|
64
73
|
return candidate.__frame ?? frame;
|
|
65
74
|
};
|
|
66
75
|
|
|
76
|
+
const toSerializableValue = (value: unknown): SerializableValue => {
|
|
77
|
+
'worklet';
|
|
78
|
+
if (
|
|
79
|
+
value == null ||
|
|
80
|
+
typeof value === 'string' ||
|
|
81
|
+
typeof value === 'number' ||
|
|
82
|
+
typeof value === 'boolean'
|
|
83
|
+
) {
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
if (value instanceof ArrayBuffer) {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
if (Array.isArray(value)) {
|
|
90
|
+
return value.map((item) => toSerializableValue(item));
|
|
91
|
+
}
|
|
92
|
+
if (typeof value === 'object') {
|
|
93
|
+
const record = value as Record<string, unknown>;
|
|
94
|
+
const output: { [key: string]: SerializableValue } = {};
|
|
95
|
+
Object.keys(record).forEach((key) => {
|
|
96
|
+
output[key] = toSerializableValue(record[key]);
|
|
97
|
+
});
|
|
98
|
+
return output;
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const toSerializableArgs = (args: BarcodePluginArgs): BarcodePluginArgs => {
|
|
104
|
+
'worklet';
|
|
105
|
+
return toSerializableValue(args) as BarcodePluginArgs;
|
|
106
|
+
};
|
|
107
|
+
|
|
67
108
|
const toFloat32Array = (input: unknown): Float32Array | undefined => {
|
|
68
109
|
'worklet';
|
|
69
110
|
if (
|
|
@@ -173,7 +214,10 @@ export function createBarcodeScannerPlugin(
|
|
|
173
214
|
overrides || orientation
|
|
174
215
|
? mergeArgs(baseOptions, overrides, orientation ?? null)
|
|
175
216
|
: baseOptions;
|
|
176
|
-
const result = plugin.call(
|
|
217
|
+
const result = plugin.call(
|
|
218
|
+
unwrapPluginFrame(frame),
|
|
219
|
+
toSerializableArgs(args)
|
|
220
|
+
);
|
|
177
221
|
return normalizeBarcodeDetections(result);
|
|
178
222
|
},
|
|
179
223
|
};
|
package/src/scanText.ts
CHANGED
|
@@ -12,6 +12,16 @@ import type {
|
|
|
12
12
|
TextRecognitionPlugin,
|
|
13
13
|
} from './types';
|
|
14
14
|
|
|
15
|
+
type SerializableValue =
|
|
16
|
+
| string
|
|
17
|
+
| number
|
|
18
|
+
| boolean
|
|
19
|
+
| null
|
|
20
|
+
| undefined
|
|
21
|
+
| ArrayBuffer
|
|
22
|
+
| SerializableValue[]
|
|
23
|
+
| { [key: string]: SerializableValue };
|
|
24
|
+
|
|
15
25
|
const LINKING_ERROR: string =
|
|
16
26
|
`The package '@mleonard9/vin-scanner' doesn't seem to be linked. Make sure: \n\n` +
|
|
17
27
|
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
@@ -26,6 +36,44 @@ const unwrapPluginFrame = (frame: Frame): Frame => {
|
|
|
26
36
|
return candidate.__frame ?? frame;
|
|
27
37
|
};
|
|
28
38
|
|
|
39
|
+
const toSerializableValue = (value: unknown): SerializableValue => {
|
|
40
|
+
'worklet';
|
|
41
|
+
if (
|
|
42
|
+
value == null ||
|
|
43
|
+
typeof value === 'string' ||
|
|
44
|
+
typeof value === 'number' ||
|
|
45
|
+
typeof value === 'boolean'
|
|
46
|
+
) {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
if (value instanceof ArrayBuffer) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
if (Array.isArray(value)) {
|
|
53
|
+
return value.map((item) => toSerializableValue(item));
|
|
54
|
+
}
|
|
55
|
+
if (typeof value === 'object') {
|
|
56
|
+
const record = value as Record<string, unknown>;
|
|
57
|
+
const output: { [key: string]: SerializableValue } = {};
|
|
58
|
+
Object.keys(record).forEach((key) => {
|
|
59
|
+
output[key] = toSerializableValue(record[key]);
|
|
60
|
+
});
|
|
61
|
+
return output;
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const toSerializableArgs = (
|
|
67
|
+
args: TextRecognitionOptions & {
|
|
68
|
+
orientation?: FrameOrientation;
|
|
69
|
+
}
|
|
70
|
+
) => {
|
|
71
|
+
'worklet';
|
|
72
|
+
return toSerializableValue(args) as TextRecognitionOptions & {
|
|
73
|
+
orientation?: FrameOrientation;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
|
|
29
77
|
const toFloat32Array = (input: unknown): Float32Array | undefined => {
|
|
30
78
|
'worklet';
|
|
31
79
|
if (
|
|
@@ -146,7 +194,10 @@ export function createTextRecognitionPlugin(
|
|
|
146
194
|
overrides || orientation
|
|
147
195
|
? mergeTextArgs(options, overrides, orientation ?? null)
|
|
148
196
|
: options;
|
|
149
|
-
const result = plugin.call(
|
|
197
|
+
const result = plugin.call(
|
|
198
|
+
unwrapPluginFrame(frame),
|
|
199
|
+
toSerializableArgs(args)
|
|
200
|
+
);
|
|
150
201
|
return normalizeTextDetections(result);
|
|
151
202
|
},
|
|
152
203
|
};
|