diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f4a7c574..5e056c8f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -390,7 +390,7 @@ jobs: strategy: fail-fast: false matrix: - node: ['18', '20'] + node: ['20'] runs-on: ubuntu-latest steps: diff --git a/package.json b/package.json index 5d3a89da..1c51dcfb 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,8 @@ "postinstall": "husky install" }, "devDependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", + "@napi-rs/wasm-runtime": "^0.1.1", "@swc-node/core": "^1.10.6", "@swc-node/register": "^1.6.8", "@swc/core": "^1.3.101", diff --git a/packages/argon2/argon2.wasi-browser.js b/packages/argon2/argon2.wasi-browser.js index 8412d666..c2f382a9 100644 --- a/packages/argon2/argon2.wasi-browser.js +++ b/packages/argon2/argon2.wasi-browser.js @@ -1,7 +1,9 @@ -import { instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync } from '@emnapi/core' -import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime' -import { WASI as __WASI } from '@tybys/wasm-util' -import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from 'memfs-browser' +import { + instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync, + getDefaultContext as __emnapiGetDefaultContext, + WASI as __WASI, +} from '@napi-rs/wasm-runtime' +import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from '@napi-rs/wasm-runtime/fs' import __wasmUrl from './argon2.wasm32-wasi.wasm?url' diff --git a/packages/argon2/argon2.wasi.cjs b/packages/argon2/argon2.wasi.cjs index 9414084f..e761e12b 100644 --- a/packages/argon2/argon2.wasi.cjs +++ b/packages/argon2/argon2.wasi.cjs @@ -8,15 +8,17 @@ const __nodePath = require('node:path') const { WASI: __nodeWASI } = require('node:wasi') const { Worker } = require('node:worker_threads') -const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core') -const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime') +const { + instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, + getDefaultContext: __emnapiGetDefaultContext, +} = require('@napi-rs/wasm-runtime') const __wasi = new __nodeWASI({ version: 'preview1', env: process.env, preopens: { - '/': '/', - }, + '/': '/' + } }) const __emnapiContext = __emnapiGetDefaultContext() @@ -33,19 +35,13 @@ if (!__nodeFs.existsSync(__wasmFilePath)) { try { __wasmFilePath = __nodePath.resolve('@node-rs/argon2-wasm32-wasi') } catch { - throw new Error( - 'Cannot find argon2.wasm32-wasi.wasm file, and @node-rs/argon2-wasm32-wasi package is not installed.', - ) + throw new Error('Cannot find argon2.wasm32-wasi.wasm file, and @node-rs/argon2-wasm32-wasi package is not installed.') } } -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { +const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { context: __emnapiContext, - asyncWorkPoolSize: (function () { + asyncWorkPoolSize: (function() { const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) // NaN > 0 is false if (threadsSizeFromEnv > 0) { @@ -72,7 +68,7 @@ const { }, beforeInit({ instance }) { __napi_rs_initialize_modules(instance) - }, + } }) function __napi_rs_initialize_modules(__napiInstance) { diff --git a/packages/argon2/index.js b/packages/argon2/index.js index 8ed150d7..3b35f5aa 100644 --- a/packages/argon2/index.js +++ b/packages/argon2/index.js @@ -298,6 +298,20 @@ switch (platform) { } } break + case 's390x': + localFileExisted = existsSync( + join(__dirname, 'argon2.linux-s390x-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./argon2.linux-s390x-gnu.node') + } else { + nativeBinding = require('@node-rs/argon2-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break default: throw new Error(`Unsupported architecture on Linux: ${arch}`) } diff --git a/packages/argon2/npm/wasm32-wasi/package.json b/packages/argon2/npm/wasm32-wasi/package.json index 62c153e8..7f3aa2d1 100644 --- a/packages/argon2/npm/wasm32-wasi/package.json +++ b/packages/argon2/npm/wasm32-wasi/package.json @@ -39,9 +39,6 @@ }, "browser": "argon2.wasi-browser.js", "dependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@tybys/wasm-util": "^0.8.1", - "memfs-browser": "^4.6.0" + "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/packages/argon2/package.json b/packages/argon2/package.json index 1bdb9821..ea5cb231 100644 --- a/packages/argon2/package.json +++ b/packages/argon2/package.json @@ -62,7 +62,7 @@ "version": "napi version" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "argon2": "^0.31.2", "cross-env": "^7.0.3" } diff --git a/packages/argon2/wasi-worker-browser.mjs b/packages/argon2/wasi-worker-browser.mjs index 4ec00ce0..9f5e224a 100644 --- a/packages/argon2/wasi-worker-browser.mjs +++ b/packages/argon2/wasi-worker-browser.mjs @@ -1,6 +1,5 @@ -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' +import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime' +import { Volume, createFsFromVolume } from '@napi-rs/wasm-runtime/fs' const fs = createFsFromVolume( Volume.fromJSON({ @@ -16,7 +15,7 @@ const handler = new MessageHandler({ // eslint-disable-next-line no-console console.log.apply(console, arguments) }, - printErr: function () { + printErr: function() { // eslint-disable-next-line no-console console.error.apply(console, arguments) }, diff --git a/packages/argon2/wasi-worker.mjs b/packages/argon2/wasi-worker.mjs index 1ced5d34..11e930b1 100644 --- a/packages/argon2/wasi-worker.mjs +++ b/packages/argon2/wasi-worker.mjs @@ -1,16 +1,15 @@ -import fs from 'node:fs' -import { createRequire } from 'node:module' -import { parentPort, Worker } from 'node:worker_threads' +import fs from "node:fs"; +import { createRequire } from "node:module"; +import { parentPort, Worker } from "node:worker_threads"; -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' +import { instantiateNapiModuleSync, MessageHandler, WASI } from "@napi-rs/wasm-runtime"; -const require = createRequire(import.meta.url) +const require = createRequire(import.meta.url); if (parentPort) { - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) + parentPort.on("message", (data) => { + globalThis.onmessage({ data }); + }); } Object.assign(globalThis, { @@ -18,18 +17,18 @@ Object.assign(globalThis, { require, Worker, importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) + ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); }, postMessage: function (msg) { if (parentPort) { - parentPort.postMessage(msg) + parentPort.postMessage(msg); } }, -}) +}); const handler = new MessageHandler({ onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) + const wasi = new WASI({ fs }); return instantiateNapiModuleSync(wasmModule, { childThread: true, @@ -39,13 +38,13 @@ const handler = new MessageHandler({ ...importObject.env, ...importObject.napi, ...importObject.emnapi, - memory: wasmMemory, - } + memory: wasmMemory + }; }, - }) + }); }, -}) +}); globalThis.onmessage = function (e) { - handler.handle(e) -} + handler.handle(e); +}; diff --git a/packages/bcrypt/bcrypt.wasi-browser.js b/packages/bcrypt/bcrypt.wasi-browser.js index cf0fe00b..9cce9283 100644 --- a/packages/bcrypt/bcrypt.wasi-browser.js +++ b/packages/bcrypt/bcrypt.wasi-browser.js @@ -1,7 +1,9 @@ -import { instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync } from '@emnapi/core' -import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime' -import { WASI as __WASI } from '@tybys/wasm-util' -import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from 'memfs-browser' +import { + instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync, + getDefaultContext as __emnapiGetDefaultContext, + WASI as __WASI, +} from '@napi-rs/wasm-runtime' +import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from '@napi-rs/wasm-runtime/fs' import __wasmUrl from './bcrypt.wasm32-wasi.wasm?url' diff --git a/packages/bcrypt/bcrypt.wasi.cjs b/packages/bcrypt/bcrypt.wasi.cjs index 199802a9..eceb8cda 100644 --- a/packages/bcrypt/bcrypt.wasi.cjs +++ b/packages/bcrypt/bcrypt.wasi.cjs @@ -8,15 +8,17 @@ const __nodePath = require('node:path') const { WASI: __nodeWASI } = require('node:wasi') const { Worker } = require('node:worker_threads') -const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core') -const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime') +const { + instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, + getDefaultContext: __emnapiGetDefaultContext, +} = require('@napi-rs/wasm-runtime') const __wasi = new __nodeWASI({ version: 'preview1', env: process.env, preopens: { - '/': '/', - }, + '/': '/' + } }) const __emnapiContext = __emnapiGetDefaultContext() @@ -33,19 +35,13 @@ if (!__nodeFs.existsSync(__wasmFilePath)) { try { __wasmFilePath = __nodePath.resolve('@node-rs/bcrypt-wasm32-wasi') } catch { - throw new Error( - 'Cannot find bcrypt.wasm32-wasi.wasm file, and @node-rs/bcrypt-wasm32-wasi package is not installed.', - ) + throw new Error('Cannot find bcrypt.wasm32-wasi.wasm file, and @node-rs/bcrypt-wasm32-wasi package is not installed.') } } -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { +const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { context: __emnapiContext, - asyncWorkPoolSize: (function () { + asyncWorkPoolSize: (function() { const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) // NaN > 0 is false if (threadsSizeFromEnv > 0) { @@ -72,7 +68,7 @@ const { }, beforeInit({ instance }) { __napi_rs_initialize_modules(instance) - }, + } }) function __napi_rs_initialize_modules(__napiInstance) { diff --git a/packages/bcrypt/binding.js b/packages/bcrypt/binding.js index 7e24df35..e857088e 100644 --- a/packages/bcrypt/binding.js +++ b/packages/bcrypt/binding.js @@ -276,6 +276,18 @@ switch (platform) { } } break + case 's390x': + localFileExisted = existsSync(join(__dirname, 'bcrypt.linux-s390x-gnu.node')) + try { + if (localFileExisted) { + nativeBinding = require('./bcrypt.linux-s390x-gnu.node') + } else { + nativeBinding = require('@node-rs/bcrypt-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break default: throw new Error(`Unsupported architecture on Linux: ${arch}`) } diff --git a/packages/bcrypt/npm/wasm32-wasi/package.json b/packages/bcrypt/npm/wasm32-wasi/package.json index 1c0e7c26..bd7197f1 100644 --- a/packages/bcrypt/npm/wasm32-wasi/package.json +++ b/packages/bcrypt/npm/wasm32-wasi/package.json @@ -43,9 +43,6 @@ }, "browser": "bcrypt.wasi-browser.js", "dependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@tybys/wasm-util": "^0.8.1", - "memfs-browser": "^4.6.0" + "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/packages/bcrypt/package.json b/packages/bcrypt/package.json index 9947084e..f0572dbe 100644 --- a/packages/bcrypt/package.json +++ b/packages/bcrypt/package.json @@ -70,7 +70,7 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "@types/bcrypt": "^5.0.2", "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", diff --git a/packages/bcrypt/wasi-worker-browser.mjs b/packages/bcrypt/wasi-worker-browser.mjs index 4ec00ce0..9f5e224a 100644 --- a/packages/bcrypt/wasi-worker-browser.mjs +++ b/packages/bcrypt/wasi-worker-browser.mjs @@ -1,6 +1,5 @@ -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' +import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime' +import { Volume, createFsFromVolume } from '@napi-rs/wasm-runtime/fs' const fs = createFsFromVolume( Volume.fromJSON({ @@ -16,7 +15,7 @@ const handler = new MessageHandler({ // eslint-disable-next-line no-console console.log.apply(console, arguments) }, - printErr: function () { + printErr: function() { // eslint-disable-next-line no-console console.error.apply(console, arguments) }, diff --git a/packages/bcrypt/wasi-worker.mjs b/packages/bcrypt/wasi-worker.mjs index 1ced5d34..11e930b1 100644 --- a/packages/bcrypt/wasi-worker.mjs +++ b/packages/bcrypt/wasi-worker.mjs @@ -1,16 +1,15 @@ -import fs from 'node:fs' -import { createRequire } from 'node:module' -import { parentPort, Worker } from 'node:worker_threads' +import fs from "node:fs"; +import { createRequire } from "node:module"; +import { parentPort, Worker } from "node:worker_threads"; -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' +import { instantiateNapiModuleSync, MessageHandler, WASI } from "@napi-rs/wasm-runtime"; -const require = createRequire(import.meta.url) +const require = createRequire(import.meta.url); if (parentPort) { - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) + parentPort.on("message", (data) => { + globalThis.onmessage({ data }); + }); } Object.assign(globalThis, { @@ -18,18 +17,18 @@ Object.assign(globalThis, { require, Worker, importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) + ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); }, postMessage: function (msg) { if (parentPort) { - parentPort.postMessage(msg) + parentPort.postMessage(msg); } }, -}) +}); const handler = new MessageHandler({ onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) + const wasi = new WASI({ fs }); return instantiateNapiModuleSync(wasmModule, { childThread: true, @@ -39,13 +38,13 @@ const handler = new MessageHandler({ ...importObject.env, ...importObject.napi, ...importObject.emnapi, - memory: wasmMemory, - } + memory: wasmMemory + }; }, - }) + }); }, -}) +}); globalThis.onmessage = function (e) { - handler.handle(e) -} + handler.handle(e); +}; diff --git a/packages/crc32/crc32.wasi-browser.js b/packages/crc32/crc32.wasi-browser.js index fbe0fe26..f1508833 100644 --- a/packages/crc32/crc32.wasi-browser.js +++ b/packages/crc32/crc32.wasi-browser.js @@ -1,7 +1,9 @@ -import { instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync } from '@emnapi/core' -import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime' -import { WASI as __WASI } from '@tybys/wasm-util' -import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from 'memfs-browser' +import { + instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync, + getDefaultContext as __emnapiGetDefaultContext, + WASI as __WASI, +} from '@napi-rs/wasm-runtime' +import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from '@napi-rs/wasm-runtime/fs' import __wasmUrl from './crc32.wasm32-wasi.wasm?url' diff --git a/packages/crc32/crc32.wasi.cjs b/packages/crc32/crc32.wasi.cjs index 798cfa1c..3c1476f8 100644 --- a/packages/crc32/crc32.wasi.cjs +++ b/packages/crc32/crc32.wasi.cjs @@ -8,15 +8,17 @@ const __nodePath = require('node:path') const { WASI: __nodeWASI } = require('node:wasi') const { Worker } = require('node:worker_threads') -const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core') -const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime') +const { + instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, + getDefaultContext: __emnapiGetDefaultContext, +} = require('@napi-rs/wasm-runtime') const __wasi = new __nodeWASI({ version: 'preview1', env: process.env, preopens: { - '/': '/', - }, + '/': '/' + } }) const __emnapiContext = __emnapiGetDefaultContext() @@ -37,13 +39,9 @@ if (!__nodeFs.existsSync(__wasmFilePath)) { } } -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { +const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { context: __emnapiContext, - asyncWorkPoolSize: (function () { + asyncWorkPoolSize: (function() { const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) // NaN > 0 is false if (threadsSizeFromEnv > 0) { @@ -70,7 +68,7 @@ const { }, beforeInit({ instance }) { __napi_rs_initialize_modules(instance) - }, + } }) function __napi_rs_initialize_modules(__napiInstance) { diff --git a/packages/crc32/index.js b/packages/crc32/index.js index 9f156490..64778e3e 100644 --- a/packages/crc32/index.js +++ b/packages/crc32/index.js @@ -298,6 +298,20 @@ switch (platform) { } } break + case 's390x': + localFileExisted = existsSync( + join(__dirname, 'crc32.linux-s390x-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./crc32.linux-s390x-gnu.node') + } else { + nativeBinding = require('@node-rs/crc32-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break default: throw new Error(`Unsupported architecture on Linux: ${arch}`) } diff --git a/packages/crc32/npm/wasm32-wasi/package.json b/packages/crc32/npm/wasm32-wasi/package.json index f55588c5..c01a62b7 100644 --- a/packages/crc32/npm/wasm32-wasi/package.json +++ b/packages/crc32/npm/wasm32-wasi/package.json @@ -40,9 +40,6 @@ }, "browser": "crc32.wasi-browser.js", "dependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@tybys/wasm-util": "^0.8.1", - "memfs-browser": "^4.6.0" + "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/packages/crc32/package.json b/packages/crc32/package.json index 6e7f2cd7..7e7ddba0 100644 --- a/packages/crc32/package.json +++ b/packages/crc32/package.json @@ -64,7 +64,7 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "@types/crc": "^3.8.3", "buffer": "^6.0.3", "crc": "^4.3.2", diff --git a/packages/crc32/wasi-worker-browser.mjs b/packages/crc32/wasi-worker-browser.mjs index 4ec00ce0..9f5e224a 100644 --- a/packages/crc32/wasi-worker-browser.mjs +++ b/packages/crc32/wasi-worker-browser.mjs @@ -1,6 +1,5 @@ -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' +import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime' +import { Volume, createFsFromVolume } from '@napi-rs/wasm-runtime/fs' const fs = createFsFromVolume( Volume.fromJSON({ @@ -16,7 +15,7 @@ const handler = new MessageHandler({ // eslint-disable-next-line no-console console.log.apply(console, arguments) }, - printErr: function () { + printErr: function() { // eslint-disable-next-line no-console console.error.apply(console, arguments) }, diff --git a/packages/crc32/wasi-worker.mjs b/packages/crc32/wasi-worker.mjs index 1ced5d34..11e930b1 100644 --- a/packages/crc32/wasi-worker.mjs +++ b/packages/crc32/wasi-worker.mjs @@ -1,16 +1,15 @@ -import fs from 'node:fs' -import { createRequire } from 'node:module' -import { parentPort, Worker } from 'node:worker_threads' +import fs from "node:fs"; +import { createRequire } from "node:module"; +import { parentPort, Worker } from "node:worker_threads"; -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' +import { instantiateNapiModuleSync, MessageHandler, WASI } from "@napi-rs/wasm-runtime"; -const require = createRequire(import.meta.url) +const require = createRequire(import.meta.url); if (parentPort) { - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) + parentPort.on("message", (data) => { + globalThis.onmessage({ data }); + }); } Object.assign(globalThis, { @@ -18,18 +17,18 @@ Object.assign(globalThis, { require, Worker, importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) + ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); }, postMessage: function (msg) { if (parentPort) { - parentPort.postMessage(msg) + parentPort.postMessage(msg); } }, -}) +}); const handler = new MessageHandler({ onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) + const wasi = new WASI({ fs }); return instantiateNapiModuleSync(wasmModule, { childThread: true, @@ -39,13 +38,13 @@ const handler = new MessageHandler({ ...importObject.env, ...importObject.napi, ...importObject.emnapi, - memory: wasmMemory, - } + memory: wasmMemory + }; }, - }) + }); }, -}) +}); globalThis.onmessage = function (e) { - handler.handle(e) -} + handler.handle(e); +}; diff --git a/packages/deno-lint/package.json b/packages/deno-lint/package.json index 4bcb0a7a..63cc71c2 100644 --- a/packages/deno-lint/package.json +++ b/packages/deno-lint/package.json @@ -73,7 +73,7 @@ "typanion": "^3.14.0" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "@types/webpack": "^5.28.5" }, "funding": { diff --git a/packages/jieba/index.js b/packages/jieba/index.js index 0a81e2fa..8cbb0ef6 100644 --- a/packages/jieba/index.js +++ b/packages/jieba/index.js @@ -298,6 +298,20 @@ switch (platform) { } } break + case 's390x': + localFileExisted = existsSync( + join(__dirname, 'jieba.linux-s390x-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./jieba.linux-s390x-gnu.node') + } else { + nativeBinding = require('@node-rs/jieba-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break default: throw new Error(`Unsupported architecture on Linux: ${arch}`) } diff --git a/packages/jieba/jieba.wasi-browser.js b/packages/jieba/jieba.wasi-browser.js index a7fec16d..9afd251c 100644 --- a/packages/jieba/jieba.wasi-browser.js +++ b/packages/jieba/jieba.wasi-browser.js @@ -1,7 +1,9 @@ -import { instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync } from '@emnapi/core' -import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime' -import { WASI as __WASI } from '@tybys/wasm-util' -import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from 'memfs-browser' +import { + instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync, + getDefaultContext as __emnapiGetDefaultContext, + WASI as __WASI, +} from '@napi-rs/wasm-runtime' +import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from '@napi-rs/wasm-runtime/fs' import __wasmUrl from './jieba.wasm32-wasi.wasm?url' diff --git a/packages/jieba/jieba.wasi.cjs b/packages/jieba/jieba.wasi.cjs index a4267be6..0b73fa0c 100644 --- a/packages/jieba/jieba.wasi.cjs +++ b/packages/jieba/jieba.wasi.cjs @@ -8,15 +8,17 @@ const __nodePath = require('node:path') const { WASI: __nodeWASI } = require('node:wasi') const { Worker } = require('node:worker_threads') -const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core') -const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime') +const { + instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, + getDefaultContext: __emnapiGetDefaultContext, +} = require('@napi-rs/wasm-runtime') const __wasi = new __nodeWASI({ version: 'preview1', env: process.env, preopens: { - '/': '/', - }, + '/': '/' + } }) const __emnapiContext = __emnapiGetDefaultContext() @@ -37,13 +39,9 @@ if (!__nodeFs.existsSync(__wasmFilePath)) { } } -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { +const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { context: __emnapiContext, - asyncWorkPoolSize: (function () { + asyncWorkPoolSize: (function() { const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) // NaN > 0 is false if (threadsSizeFromEnv > 0) { @@ -70,7 +68,7 @@ const { }, beforeInit({ instance }) { __napi_rs_initialize_modules(instance) - }, + } }) function __napi_rs_initialize_modules(__napiInstance) { diff --git a/packages/jieba/npm/wasm32-wasi/package.json b/packages/jieba/npm/wasm32-wasi/package.json index 0cff3a54..4da8b130 100644 --- a/packages/jieba/npm/wasm32-wasi/package.json +++ b/packages/jieba/npm/wasm32-wasi/package.json @@ -40,9 +40,6 @@ }, "browser": "jieba.wasi-browser.js", "dependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@tybys/wasm-util": "^0.8.1", - "memfs-browser": "^4.6.0" + "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/packages/jieba/package.json b/packages/jieba/package.json index 10343421..4a4cce32 100644 --- a/packages/jieba/package.json +++ b/packages/jieba/package.json @@ -64,7 +64,7 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "nodejieba": "^2.6.0" }, "funding": { diff --git a/packages/jieba/wasi-worker-browser.mjs b/packages/jieba/wasi-worker-browser.mjs index 4ec00ce0..9f5e224a 100644 --- a/packages/jieba/wasi-worker-browser.mjs +++ b/packages/jieba/wasi-worker-browser.mjs @@ -1,6 +1,5 @@ -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' +import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime' +import { Volume, createFsFromVolume } from '@napi-rs/wasm-runtime/fs' const fs = createFsFromVolume( Volume.fromJSON({ @@ -16,7 +15,7 @@ const handler = new MessageHandler({ // eslint-disable-next-line no-console console.log.apply(console, arguments) }, - printErr: function () { + printErr: function() { // eslint-disable-next-line no-console console.error.apply(console, arguments) }, diff --git a/packages/jieba/wasi-worker.mjs b/packages/jieba/wasi-worker.mjs index 1ced5d34..11e930b1 100644 --- a/packages/jieba/wasi-worker.mjs +++ b/packages/jieba/wasi-worker.mjs @@ -1,16 +1,15 @@ -import fs from 'node:fs' -import { createRequire } from 'node:module' -import { parentPort, Worker } from 'node:worker_threads' +import fs from "node:fs"; +import { createRequire } from "node:module"; +import { parentPort, Worker } from "node:worker_threads"; -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' +import { instantiateNapiModuleSync, MessageHandler, WASI } from "@napi-rs/wasm-runtime"; -const require = createRequire(import.meta.url) +const require = createRequire(import.meta.url); if (parentPort) { - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) + parentPort.on("message", (data) => { + globalThis.onmessage({ data }); + }); } Object.assign(globalThis, { @@ -18,18 +17,18 @@ Object.assign(globalThis, { require, Worker, importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) + ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); }, postMessage: function (msg) { if (parentPort) { - parentPort.postMessage(msg) + parentPort.postMessage(msg); } }, -}) +}); const handler = new MessageHandler({ onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) + const wasi = new WASI({ fs }); return instantiateNapiModuleSync(wasmModule, { childThread: true, @@ -39,13 +38,13 @@ const handler = new MessageHandler({ ...importObject.env, ...importObject.napi, ...importObject.emnapi, - memory: wasmMemory, - } + memory: wasmMemory + }; }, - }) + }); }, -}) +}); globalThis.onmessage = function (e) { - handler.handle(e) -} + handler.handle(e); +}; diff --git a/packages/jsonwebtoken/package.json b/packages/jsonwebtoken/package.json index a5f92961..8431d4d1 100644 --- a/packages/jsonwebtoken/package.json +++ b/packages/jsonwebtoken/package.json @@ -62,7 +62,7 @@ "node": ">= 10" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "@types/jsonwebtoken": "^9.0.5", "jsonwebtoken": "^9.0.2" } diff --git a/packages/xxhash/index.js b/packages/xxhash/index.js index bd0c9f38..04af80e2 100644 --- a/packages/xxhash/index.js +++ b/packages/xxhash/index.js @@ -298,6 +298,20 @@ switch (platform) { } } break + case 's390x': + localFileExisted = existsSync( + join(__dirname, 'xxhash.linux-s390x-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./xxhash.linux-s390x-gnu.node') + } else { + nativeBinding = require('@node-rs/xxhash-linux-s390x-gnu') + } + } catch (e) { + loadError = e + } + break default: throw new Error(`Unsupported architecture on Linux: ${arch}`) } diff --git a/packages/xxhash/npm/wasm32-wasi/package.json b/packages/xxhash/npm/wasm32-wasi/package.json index 4c9a8f36..2efadde2 100644 --- a/packages/xxhash/npm/wasm32-wasi/package.json +++ b/packages/xxhash/npm/wasm32-wasi/package.json @@ -43,9 +43,6 @@ }, "browser": "xxhash.wasi-browser.js", "dependencies": { - "@emnapi/core": "^0.45.0", - "@emnapi/runtime": "^0.45.0", - "@tybys/wasm-util": "^0.8.1", - "memfs-browser": "^4.6.0" + "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/packages/xxhash/package.json b/packages/xxhash/package.json index ff98aace..b7c40e33 100644 --- a/packages/xxhash/package.json +++ b/packages/xxhash/package.json @@ -66,7 +66,7 @@ "url": "https://github.com/napi-rs/node-rs/issues" }, "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.34", + "@napi-rs/cli": "^3.0.0-alpha.36", "@types/xxhashjs": "^0.2.4", "webpack": "^5.89.0", "xxhash": "^0.3.0", diff --git a/packages/xxhash/wasi-worker-browser.mjs b/packages/xxhash/wasi-worker-browser.mjs index 4ec00ce0..9f5e224a 100644 --- a/packages/xxhash/wasi-worker-browser.mjs +++ b/packages/xxhash/wasi-worker-browser.mjs @@ -1,6 +1,5 @@ -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' -import { Volume, createFsFromVolume } from 'memfs-browser' +import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime' +import { Volume, createFsFromVolume } from '@napi-rs/wasm-runtime/fs' const fs = createFsFromVolume( Volume.fromJSON({ @@ -16,7 +15,7 @@ const handler = new MessageHandler({ // eslint-disable-next-line no-console console.log.apply(console, arguments) }, - printErr: function () { + printErr: function() { // eslint-disable-next-line no-console console.error.apply(console, arguments) }, diff --git a/packages/xxhash/wasi-worker.mjs b/packages/xxhash/wasi-worker.mjs index 1ced5d34..11e930b1 100644 --- a/packages/xxhash/wasi-worker.mjs +++ b/packages/xxhash/wasi-worker.mjs @@ -1,16 +1,15 @@ -import fs from 'node:fs' -import { createRequire } from 'node:module' -import { parentPort, Worker } from 'node:worker_threads' +import fs from "node:fs"; +import { createRequire } from "node:module"; +import { parentPort, Worker } from "node:worker_threads"; -import { instantiateNapiModuleSync, MessageHandler } from '@emnapi/core' -import { WASI } from '@tybys/wasm-util' +import { instantiateNapiModuleSync, MessageHandler, WASI } from "@napi-rs/wasm-runtime"; -const require = createRequire(import.meta.url) +const require = createRequire(import.meta.url); if (parentPort) { - parentPort.on('message', (data) => { - globalThis.onmessage({ data }) - }) + parentPort.on("message", (data) => { + globalThis.onmessage({ data }); + }); } Object.assign(globalThis, { @@ -18,18 +17,18 @@ Object.assign(globalThis, { require, Worker, importScripts: function (f) { - ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f) + ;(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f); }, postMessage: function (msg) { if (parentPort) { - parentPort.postMessage(msg) + parentPort.postMessage(msg); } }, -}) +}); const handler = new MessageHandler({ onLoad({ wasmModule, wasmMemory }) { - const wasi = new WASI({ fs }) + const wasi = new WASI({ fs }); return instantiateNapiModuleSync(wasmModule, { childThread: true, @@ -39,13 +38,13 @@ const handler = new MessageHandler({ ...importObject.env, ...importObject.napi, ...importObject.emnapi, - memory: wasmMemory, - } + memory: wasmMemory + }; }, - }) + }); }, -}) +}); globalThis.onmessage = function (e) { - handler.handle(e) -} + handler.handle(e); +}; diff --git a/packages/xxhash/xxhash.wasi-browser.js b/packages/xxhash/xxhash.wasi-browser.js index 500931d4..89fb1636 100644 --- a/packages/xxhash/xxhash.wasi-browser.js +++ b/packages/xxhash/xxhash.wasi-browser.js @@ -1,7 +1,9 @@ -import { instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync } from '@emnapi/core' -import { getDefaultContext as __emnapiGetDefaultContext } from '@emnapi/runtime' -import { WASI as __WASI } from '@tybys/wasm-util' -import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from 'memfs-browser' +import { + instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync, + getDefaultContext as __emnapiGetDefaultContext, + WASI as __WASI, +} from '@napi-rs/wasm-runtime' +import { Volume as __Volume, createFsFromVolume as __createFsFromVolume } from '@napi-rs/wasm-runtime/fs' import __wasmUrl from './xxhash.wasm32-wasi.wasm?url' diff --git a/packages/xxhash/xxhash.wasi.cjs b/packages/xxhash/xxhash.wasi.cjs index a4deaf58..0e258970 100644 --- a/packages/xxhash/xxhash.wasi.cjs +++ b/packages/xxhash/xxhash.wasi.cjs @@ -8,15 +8,17 @@ const __nodePath = require('node:path') const { WASI: __nodeWASI } = require('node:wasi') const { Worker } = require('node:worker_threads') -const { instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync } = require('@emnapi/core') -const { getDefaultContext: __emnapiGetDefaultContext } = require('@emnapi/runtime') +const { + instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync, + getDefaultContext: __emnapiGetDefaultContext, +} = require('@napi-rs/wasm-runtime') const __wasi = new __nodeWASI({ version: 'preview1', env: process.env, preopens: { - '/': '/', - }, + '/': '/' + } }) const __emnapiContext = __emnapiGetDefaultContext() @@ -33,19 +35,13 @@ if (!__nodeFs.existsSync(__wasmFilePath)) { try { __wasmFilePath = __nodePath.resolve('@node-rs/xxhash-wasm32-wasi') } catch { - throw new Error( - 'Cannot find xxhash.wasm32-wasi.wasm file, and @node-rs/xxhash-wasm32-wasi package is not installed.', - ) + throw new Error('Cannot find xxhash.wasm32-wasi.wasm file, and @node-rs/xxhash-wasm32-wasi package is not installed.') } } -const { - instance: __napiInstance, - module: __wasiModule, - napiModule: __napiModule, -} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { +const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), { context: __emnapiContext, - asyncWorkPoolSize: (function () { + asyncWorkPoolSize: (function() { const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE) // NaN > 0 is false if (threadsSizeFromEnv > 0) { @@ -72,7 +68,7 @@ const { }, beforeInit({ instance }) { __napi_rs_initialize_modules(instance) - }, + } }) function __napi_rs_initialize_modules(__napiInstance) { diff --git a/yarn.lock b/yarn.lock index da33e032..63a95e70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -326,9 +326,9 @@ __metadata: languageName: node linkType: hard -"@napi-rs/cli@npm:^3.0.0-alpha.34": - version: 3.0.0-alpha.34 - resolution: "@napi-rs/cli@npm:3.0.0-alpha.34" +"@napi-rs/cli@npm:^3.0.0-alpha.36": + version: 3.0.0-alpha.36 + resolution: "@napi-rs/cli@npm:3.0.0-alpha.36" dependencies: "@napi-rs/cross-toolchain": "npm:^0.0.14" "@octokit/rest": "npm:^20.0.2" @@ -357,7 +357,7 @@ __metadata: bin: napi: dist/cli.js napi-raw: cli.mjs - checksum: 62153d10776b0821243c49132698b716a39df4b4fa20341b8772f791dbfb5993ab5011cdd8c53c1284fff0cfa4b0eca5dfb928b308e4ee5ba9baf02123f4b97f + checksum: cbcd0fee9ac93d71e5a56a8a82bd6ffa75e1f51816bf38edee94b88bda611eb281e8f2eb8c415145da1c15d9c56c49f9d65f6d23a92bbf7d4f16d5fff780ad79 languageName: node linkType: hard @@ -677,11 +677,22 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.1.1": + version: 0.1.1 + resolution: "@napi-rs/wasm-runtime@npm:0.1.1" + dependencies: + "@emnapi/core": "npm:^0.45.0" + "@emnapi/runtime": "npm:^0.45.0" + "@tybys/wasm-util": "npm:^0.8.1" + checksum: e9718b1ec7d6754f04bcd4df05993347360d17889a357be1d6d1b6f26fc52f70a2b73149c2bcf6bd204c5e3abd8656e086feeb5a04a9a3114bc90e8b3a72ff74 + languageName: node + linkType: hard + "@node-rs/argon2@workspace:packages/argon2": version: 0.0.0-use.local resolution: "@node-rs/argon2@workspace:packages/argon2" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" argon2: "npm:^0.31.2" cross-env: "npm:^7.0.3" languageName: unknown @@ -691,7 +702,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/bcrypt@workspace:packages/bcrypt" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" "@types/bcrypt": "npm:^5.0.2" bcrypt: "npm:^5.1.1" bcryptjs: "npm:^2.4.3" @@ -703,7 +714,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/crc32@workspace:packages/crc32" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" "@types/crc": "npm:^3.8.3" buffer: "npm:^6.0.3" crc: "npm:^4.3.2" @@ -715,7 +726,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/deno-lint@workspace:packages/deno-lint" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" "@types/webpack": "npm:^5.28.5" clipanion: "npm:^3.2.1" typanion: "npm:^3.14.0" @@ -736,7 +747,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/jieba@workspace:packages/jieba" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" nodejieba: "npm:^2.6.0" languageName: unknown linkType: soft @@ -745,7 +756,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/jsonwebtoken@workspace:packages/jsonwebtoken" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" "@types/jsonwebtoken": "npm:^9.0.5" jsonwebtoken: "npm:^9.0.2" languageName: unknown @@ -755,7 +766,7 @@ __metadata: version: 0.0.0-use.local resolution: "@node-rs/xxhash@workspace:packages/xxhash" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" "@types/xxhashjs": "npm:^0.2.4" webpack: "npm:^5.89.0" xxhash: "npm:^0.3.0" @@ -6899,9 +6910,8 @@ __metadata: version: 0.0.0-use.local resolution: "node-rs@workspace:." dependencies: - "@emnapi/core": "npm:^0.45.0" - "@emnapi/runtime": "npm:^0.45.0" - "@napi-rs/cli": "npm:^3.0.0-alpha.34" + "@napi-rs/cli": "npm:^3.0.0-alpha.36" + "@napi-rs/wasm-runtime": "npm:^0.1.1" "@swc-node/core": "npm:^1.10.6" "@swc-node/register": "npm:^1.6.8" "@swc/core": "npm:^1.3.101"