From e250981c1974d82a77dfb3031b19e183077c75fb Mon Sep 17 00:00:00 2001 From: Veronica Zheng Date: Sat, 26 Mar 2022 13:00:15 -0700 Subject: [PATCH 1/3] conditional remove webwokers during compilation --- package-lock.json | 180 ++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- rollup.cjs.config.js | 8 +- src/threadman.js | 11 +++ 4 files changed, 199 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2711e35..24998cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,8 @@ "chai": "^4.2.0", "eslint": "^8.0.1", "mocha": "^8.2.1", - "rollup": "^2.38.5" + "rollup": "^2.38.5", + "rollup-plugin-jscc": "^2.0.0" } }, "node_modules/@eslint/eslintrc": { @@ -71,6 +72,24 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@jsbits/escape-regex-str": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsbits/escape-regex-str/-/escape-regex-str-1.0.3.tgz", + "integrity": "sha512-0800vYI2fg1nuUq/T9Tqv8DMOLLNiRAltxFbKIbR7szrvW6qTuI2+zGK51hV7NAAmUr4G83Kvpj2R6Yyg07iIw==", + "dev": true, + "engines": { + "node": ">=4.2" + } + }, + "node_modules/@jsbits/get-package-version": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsbits/get-package-version/-/get-package-version-1.0.3.tgz", + "integrity": "sha512-IJy1jRL01x7p6UEpgKa1lVLstMUx8EiIR8pPoS5sBfsHEoeLkzYiNpAfxPx8zLDUJyS1yBbChJjcWdPqyH285w==", + "dev": true, + "engines": { + "node": ">=4.2" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -668,6 +687,12 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1009,6 +1034,22 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jscc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jscc/-/jscc-1.1.1.tgz", + "integrity": "sha512-anpZkTXwZbxfxLEBMciKxXMHx2xOLK2qhynIhTnoSyC+wGOEPrAoofxnADgblbarn0kijVMt1U71cQGmRF/1Og==", + "dev": true, + "dependencies": { + "@jsbits/escape-regex-str": "^1.0.2", + "@jsbits/get-package-version": "^1.0.2", + "magic-string": "^0.25.1", + "perf-regexes": "^1.0.1", + "skip-regex": "^1.0.2" + }, + "engines": { + "node": ">=6.0" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1067,6 +1108,15 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1322,6 +1372,15 @@ "node": "*" } }, + "node_modules/perf-regexes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz", + "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==", + "dev": true, + "engines": { + "node": ">=6.14" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1433,6 +1492,32 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-jscc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-jscc/-/rollup-plugin-jscc-2.0.0.tgz", + "integrity": "sha512-5jG9q79K2u5uRBTKA+GA4gqt1zA7qHQRpcabZMoVs913gr75s428O7K3r58n2vADDzwIhiOKMo7rCMhOyks6dw==", + "dev": true, + "dependencies": { + "@jsbits/get-package-version": "^1.0.3", + "jscc": "^1.1.1", + "rollup-pluginutils": "^2.8.2" + }, + "engines": { + "node": ">=10.12.0" + }, + "peerDependencies": { + "rollup": ">=2" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1483,6 +1568,21 @@ "node": ">=8" } }, + "node_modules/skip-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", + "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==", + "dev": true, + "engines": { + "node": ">=4.2" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -1856,6 +1956,18 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@jsbits/escape-regex-str": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsbits/escape-regex-str/-/escape-regex-str-1.0.3.tgz", + "integrity": "sha512-0800vYI2fg1nuUq/T9Tqv8DMOLLNiRAltxFbKIbR7szrvW6qTuI2+zGK51hV7NAAmUr4G83Kvpj2R6Yyg07iIw==", + "dev": true + }, + "@jsbits/get-package-version": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jsbits/get-package-version/-/get-package-version-1.0.3.tgz", + "integrity": "sha512-IJy1jRL01x7p6UEpgKa1lVLstMUx8EiIR8pPoS5sBfsHEoeLkzYiNpAfxPx8zLDUJyS1yBbChJjcWdPqyH285w==", + "dev": true + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -2308,6 +2420,12 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2558,6 +2676,19 @@ "argparse": "^2.0.1" } }, + "jscc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jscc/-/jscc-1.1.1.tgz", + "integrity": "sha512-anpZkTXwZbxfxLEBMciKxXMHx2xOLK2qhynIhTnoSyC+wGOEPrAoofxnADgblbarn0kijVMt1U71cQGmRF/1Og==", + "dev": true, + "requires": { + "@jsbits/escape-regex-str": "^1.0.2", + "@jsbits/get-package-version": "^1.0.2", + "magic-string": "^0.25.1", + "perf-regexes": "^1.0.1", + "skip-regex": "^1.0.2" + } + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2604,6 +2735,15 @@ "chalk": "^4.0.0" } }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2793,6 +2933,12 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, + "perf-regexes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz", + "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==", + "dev": true + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -2865,6 +3011,26 @@ "fsevents": "~2.3.2" } }, + "rollup-plugin-jscc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-jscc/-/rollup-plugin-jscc-2.0.0.tgz", + "integrity": "sha512-5jG9q79K2u5uRBTKA+GA4gqt1zA7qHQRpcabZMoVs913gr75s428O7K3r58n2vADDzwIhiOKMo7rCMhOyks6dw==", + "dev": true, + "requires": { + "@jsbits/get-package-version": "^1.0.3", + "jscc": "^1.1.1", + "rollup-pluginutils": "^2.8.2" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2895,6 +3061,18 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "skip-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", + "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", diff --git a/package.json b/package.json index 34e1479..1c06ffc 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "chai": "^4.2.0", "eslint": "^8.0.1", "mocha": "^8.2.1", - "rollup": "^2.38.5" + "rollup": "^2.38.5", + "rollup-plugin-jscc": "^2.0.0" } } diff --git a/rollup.cjs.config.js b/rollup.cjs.config.js index f15b538..07d64c5 100644 --- a/rollup.cjs.config.js +++ b/rollup.cjs.config.js @@ -1,5 +1,6 @@ import fs from "fs"; import { builtinModules as builtin } from "module"; +import jscc from 'rollup-plugin-jscc' const pkg = JSON.parse(fs.readFileSync("./package.json")); @@ -12,5 +13,10 @@ export default { external: [ ...Object.keys(pkg.dependencies), ...builtin, - ] + ], + plugins: [ + jscc({ + values: { _SES: process.env.SES }, + }) + ], }; diff --git a/src/threadman.js b/src/threadman.js index 61310a9..f78677f 100644 --- a/src/threadman.js +++ b/src/threadman.js @@ -24,7 +24,11 @@ const MEM_SIZE = 25; // Memory size in 64K Pakes (1600Kb) import thread from "./threadman_thread.js"; import os from "os"; + +/*#if _SES +//#else */ import Worker from "web-worker"; +//#endif class Deferred { constructor() { @@ -81,7 +85,10 @@ export default async function buildThreadManager(wasm, singleThread) { // tm.pTmp1 = tm.alloc(curve.G2.F.n8*3); +/*#if _SES +//#else */ if (singleThread) { +//#endif tm.code = wasm.code; tm.taskManager = thread(); await tm.taskManager([{ @@ -90,6 +97,8 @@ export default async function buildThreadManager(wasm, singleThread) { code: tm.code.slice() }]); tm.concurrency = 1; +/*#if _SES +//#else */ } else { tm.workers = []; tm.pendingDeferreds = []; @@ -133,6 +142,8 @@ export default async function buildThreadManager(wasm, singleThread) { await Promise.all(initPromises); } +//#endif + return tm; function getOnMsg(i) { From 4529aed8150a9c736230a5f5143a6e27b3f434db Mon Sep 17 00:00:00 2001 From: Veronica Zheng Date: Mon, 28 Mar 2022 17:01:54 -0700 Subject: [PATCH 2/3] add btoa check --- src/threadman.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/threadman.js b/src/threadman.js index f78677f..460db85 100644 --- a/src/threadman.js +++ b/src/threadman.js @@ -44,7 +44,7 @@ function sleep(ms) { } function stringToBase64(str) { - if (process.browser) { + if (process.browser && typeof globalThis.btoa === "function") { return globalThis.btoa(str); } else { return Buffer.from(str).toString("base64"); From 1846687cc03d0b8d90d9fe8d2be8ca1fa981d683 Mon Sep 17 00:00:00 2001 From: Veronica Zheng Date: Mon, 28 Mar 2022 17:08:12 -0700 Subject: [PATCH 3/3] add ses build --- package.json | 4 +++- rollup.cjs.config.js | 8 +------- rollup.ses.config.js | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 rollup.ses.config.js diff --git a/package.json b/package.json index 1c06ffc..b8f2158 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,11 @@ "import": "./main.js", "require": "./build/main.cjs" }, + "browser": "./build/main.ses.cjs", "scripts": { "test": "mocha", - "build": "rollup -c rollup.cjs.config.js" + "build": "rollup -c rollup.cjs.config.js", + "buildses": "SES=true rollup -c rollup.ses.config.js" }, "repository": { "type": "git", diff --git a/rollup.cjs.config.js b/rollup.cjs.config.js index 07d64c5..f15b538 100644 --- a/rollup.cjs.config.js +++ b/rollup.cjs.config.js @@ -1,6 +1,5 @@ import fs from "fs"; import { builtinModules as builtin } from "module"; -import jscc from 'rollup-plugin-jscc' const pkg = JSON.parse(fs.readFileSync("./package.json")); @@ -13,10 +12,5 @@ export default { external: [ ...Object.keys(pkg.dependencies), ...builtin, - ], - plugins: [ - jscc({ - values: { _SES: process.env.SES }, - }) - ], + ] }; diff --git a/rollup.ses.config.js b/rollup.ses.config.js new file mode 100644 index 0000000..40ff2fa --- /dev/null +++ b/rollup.ses.config.js @@ -0,0 +1,18 @@ +import config from "./rollup.cjs.config.js"; +import jscc from 'rollup-plugin-jscc' + +export default { + input: "main.js", + output: { + file: "build/main.ses.cjs", + format: "cjs", + }, + external: [ + ...config.external, + ], + plugins: [ + jscc({ + values: { _SES: process.env.SES }, + }) + ], +};