fux
This commit is contained in:
2
dist/index.js
vendored
2
dist/index.js
vendored
File diff suppressed because one or more lines are too long
@@ -565,6 +565,51 @@ function getZXingReaderWasmUrl() {
|
|||||||
return "./" + ZXING_READER_WASM_PATH;
|
return "./" + ZXING_READER_WASM_PATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let cachedWasmBytes = null;
|
||||||
|
let cachedWasmBytesUrl = "";
|
||||||
|
|
||||||
|
function fetchWasmArrayBuffer(wasmUrl) {
|
||||||
|
if (cachedWasmBytes && cachedWasmBytesUrl === wasmUrl) {
|
||||||
|
return Promise.resolve(cachedWasmBytes);
|
||||||
|
}
|
||||||
|
return fetch(wasmUrl, { credentials: "same-origin" }).then((response) => {
|
||||||
|
if (!response || typeof response.arrayBuffer !== "function") {
|
||||||
|
throw new Error("wasm fetch response is invalid");
|
||||||
|
}
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`wasm fetch failed: ${response.status}`);
|
||||||
|
}
|
||||||
|
return response.arrayBuffer();
|
||||||
|
}).then((bytes) => {
|
||||||
|
cachedWasmBytes = bytes;
|
||||||
|
cachedWasmBytesUrl = wasmUrl;
|
||||||
|
return bytes;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createZxingWasmOverrides() {
|
||||||
|
const wasmUrl = getZXingReaderWasmUrl();
|
||||||
|
return {
|
||||||
|
locateFile(path) {
|
||||||
|
if (path && path.indexOf(".wasm") !== -1) {
|
||||||
|
return wasmUrl;
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
},
|
||||||
|
instantiateWasm(imports, receiveInstance) {
|
||||||
|
fetchWasmArrayBuffer(wasmUrl).then((bytes) => {
|
||||||
|
return WebAssembly.instantiate(bytes, imports);
|
||||||
|
}).then((result) => {
|
||||||
|
receiveInstance(result.instance, result.module);
|
||||||
|
}).catch((err) => {
|
||||||
|
printWarn("wasm instantiate failed:", err, "url:", wasmUrl);
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function prepareBarcodeDetectorWithTimeout(options) {
|
function prepareBarcodeDetectorWithTimeout(options) {
|
||||||
return promiseWithTimeout(
|
return promiseWithTimeout(
|
||||||
prepareBarcodeDetector(options),
|
prepareBarcodeDetector(options),
|
||||||
@@ -582,14 +627,7 @@ function prepareBarcodeDetector(options) {
|
|||||||
if (!barcodeDetectorPreparePromise || options.forcePonyfill) {
|
if (!barcodeDetectorPreparePromise || options.forcePonyfill) {
|
||||||
const preparePromise = prepareZXingModule({
|
const preparePromise = prepareZXingModule({
|
||||||
fireImmediately: true,
|
fireImmediately: true,
|
||||||
overrides: {
|
overrides: createZxingWasmOverrides(),
|
||||||
locateFile: path => {
|
|
||||||
if (path && path.indexOf(".wasm") !== -1) {
|
|
||||||
return getZXingReaderWasmUrl();
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).then(() => BarcodeDetectorPonyfill).catch(err => {
|
}).then(() => BarcodeDetectorPonyfill).catch(err => {
|
||||||
if (!options.forcePonyfill) {
|
if (!options.forcePonyfill) {
|
||||||
barcodeDetectorPreparePromise = null;
|
barcodeDetectorPreparePromise = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user