mirror of
https://github.com/CryptKeeperZK/ffjavascript.git
synced 2026-01-10 00:27:56 -05:00
fix: enhance creating a new worker through Object URL instead of data: URL
This commit is contained in:
@@ -6,6 +6,7 @@ var crypto = require('crypto');
|
||||
var wasmcurves = require('wasmcurves');
|
||||
var os = require('os');
|
||||
var Worker = require('web-worker');
|
||||
var base64 = require('base64-js');
|
||||
var wasmbuilder = require('wasmbuilder');
|
||||
|
||||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
||||
@@ -13,6 +14,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
||||
var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
|
||||
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
||||
var Worker__default = /*#__PURE__*/_interopDefaultLegacy(Worker);
|
||||
var base64__default = /*#__PURE__*/_interopDefaultLegacy(base64);
|
||||
|
||||
/* global BigInt */
|
||||
const hexLen = [ 0, 1, 2, 2, 3, 3, 3, 3, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4];
|
||||
@@ -4482,8 +4484,21 @@ async function buildThreadManager(wasm, singleThread) {
|
||||
tm.concurrency = concurrency;
|
||||
|
||||
for (let i = 0; i<concurrency; i++) {
|
||||
let base64Encoded = workerSource.split(",")[1];
|
||||
|
||||
tm.workers[i] = new Worker__default["default"](workerSource);
|
||||
// Check if the length of the string is a multiple of 4
|
||||
if (base64Encoded.length % 4 !== 0) {
|
||||
// Add padding to the base64-encoded string
|
||||
const padding = '='.repeat(4 - (base64Encoded.length % 4));
|
||||
base64Encoded += padding;
|
||||
}
|
||||
const binaryString = base64__default["default"].toByteArray(base64Encoded);
|
||||
|
||||
const workerBlob = new Blob([binaryString], { type: 'application/javascript' });
|
||||
|
||||
const workerUrl = URL.createObjectURL(workerBlob);
|
||||
|
||||
tm.workers[i] = new Worker__default["default"](workerUrl);
|
||||
|
||||
tm.workers[i].addEventListener("message", getOnMsg(i));
|
||||
|
||||
|
||||
25
package-lock.json
generated
25
package-lock.json
generated
@@ -9,6 +9,7 @@
|
||||
"version": "0.2.60",
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.5.1",
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.2",
|
||||
"web-worker": "^1.2.0"
|
||||
@@ -264,6 +265,25 @@
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
@@ -2031,6 +2051,11 @@
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/iden3/ffjs#readme",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.5.1",
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.2",
|
||||
"web-worker": "^1.2.0"
|
||||
|
||||
@@ -25,6 +25,7 @@ const MEM_SIZE = 25; // Memory size in 64K Pakes (1600Kb)
|
||||
import thread from "./threadman_thread.js";
|
||||
import os from "os";
|
||||
import Worker from "web-worker";
|
||||
import base64 from "base64-js";
|
||||
|
||||
class Deferred {
|
||||
constructor() {
|
||||
@@ -112,8 +113,21 @@ export default async function buildThreadManager(wasm, singleThread) {
|
||||
tm.concurrency = concurrency;
|
||||
|
||||
for (let i = 0; i<concurrency; i++) {
|
||||
let base64Encoded = workerSource.split(",")[1];
|
||||
|
||||
tm.workers[i] = new Worker(workerSource);
|
||||
// Check if the length of the string is a multiple of 4
|
||||
if (base64Encoded.length % 4 !== 0) {
|
||||
// Add padding to the base64-encoded string
|
||||
const padding = '='.repeat(4 - (base64Encoded.length % 4));
|
||||
base64Encoded += padding;
|
||||
}
|
||||
const binaryString = base64.toByteArray(base64Encoded);
|
||||
|
||||
const workerBlob = new Blob([binaryString], { type: 'application/javascript' });
|
||||
|
||||
const workerUrl = URL.createObjectURL(workerBlob);
|
||||
|
||||
tm.workers[i] = new Worker(workerUrl);
|
||||
|
||||
tm.workers[i].addEventListener("message", getOnMsg(i));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user