diff --git a/.eslintrc.js b/.eslintrc.js index 7aef421d..e79553e6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,5 @@ const sharedRules = { + 'prefer-const': 'off', 'spaced-comment': 'off', 'no-new-func': 'off', 'no-implied-eval': 'off', diff --git a/package.json b/package.json index c1dc0849..353d8fda 100644 --- a/package.json +++ b/package.json @@ -29,17 +29,17 @@ }, "license": "MIT", "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", - "@rollup/plugin-alias": "^5.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.7", + "@microsoft/api-extractor": "^7.49.1", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.6", + "@rollup/plugin-typescript": "^12.1.2", "@tybys/cross-zip": "^3.1.0", "@tybys/ts-transform-pure-class": "^0.1.1", "@tybys/tsapi": "^0.6.0", "@types/fs-extra": "^11.0.4", - "@types/node": "^20.14.10", + "@types/node": "^22.10.7", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", @@ -49,8 +49,8 @@ "eslint-plugin-promise": "^6.4.0", "fs-extra": "^11.2.0", "glob": "^10.4.5", - "rollup": "^4.18.1", - "typescript": "~5.4.2" + "rollup": "^4.31.0", + "typescript": "~5.7.2" }, "workspaces": [ "packages/ts-transform-macro", diff --git a/packages/core/script/build.js b/packages/core/script/build.js index 99cb0bf8..9d3a01b3 100644 --- a/packages/core/script/build.js +++ b/packages/core/script/build.js @@ -14,7 +14,8 @@ const dist = path.join(__dirname, '../dist') function build () { compile(path.join(__dirname, '../tsconfig.json'), { optionsToExtend: { - target: ts.ScriptTarget.ES2019, + target: ts.ScriptTarget.ES2021, + outDir: path.join(__dirname, '../lib'), emitDeclarationOnly: true, declaration: true, declarationDir: path.join(__dirname, '../lib/typings') @@ -88,7 +89,7 @@ function build () { return Promise.all(([ { - input: createInput(ts.ScriptTarget.ES5, false), + input: createInput(ts.ScriptTarget.ES2021, false), output: { file: path.join(dist, 'emnapi-core.js'), format: 'umd', @@ -98,7 +99,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, true), + input: createInput(ts.ScriptTarget.ES2021, true), output: { file: path.join(dist, 'emnapi-core.min.js'), format: 'umd', @@ -108,7 +109,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib', '@emnapi/wasi-threads']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib', '@emnapi/wasi-threads']), output: { file: path.join(dist, 'emnapi-core.cjs.js'), format: 'cjs', @@ -118,7 +119,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib', '@emnapi/wasi-threads']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib', '@emnapi/wasi-threads']), output: { file: path.join(dist, 'emnapi-core.cjs.min.js'), format: 'cjs', @@ -128,7 +129,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib', '@emnapi/wasi-threads']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib', '@emnapi/wasi-threads']), output: { file: path.join(dist, 'emnapi-core.mjs'), format: 'esm', @@ -138,7 +139,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib', '@emnapi/wasi-threads']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib', '@emnapi/wasi-threads']), output: { file: path.join(dist, 'emnapi-core.min.mjs'), format: 'esm', @@ -148,7 +149,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, false, ['tslib', '@emnapi/wasi-threads']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib', '@emnapi/wasi-threads']), output: { file: path.join(dist, 'emnapi-core.esm-bundler.js'), format: 'esm', diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 12f574f3..a34a2a46 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -2,25 +2,17 @@ "extends": "../shared/tsconfig.base.json", "compilerOptions": { "allowJs": true, - "target": "ES5", + "target": "ES2021", "module": "ESNext", "moduleResolution": "Bundler", "noEmitHelpers": true, "importHelpers": true, - "outDir": "lib", + "outDir": "./dist", "paths": { "tslib" : ["../../node_modules/tslib/tslib.d.ts"], "@emnapi/wasi-threads": ["../wasi-threads/lib/typings/index.d.ts"], "@/*": ["./src/*"], - }, - "lib": [ - "ES5", - "ES2015", - "ES2020.BigInt", - "ES2021.WeakRef", - "ES2017.SharedMemory", - "DOM" - ] + } }, "include": [ "./src/**/*" diff --git a/packages/emnapi/src/error.ts b/packages/emnapi/src/error.ts index 2cacd761..795376a6 100644 --- a/packages/emnapi/src/error.ts +++ b/packages/emnapi/src/error.ts @@ -17,7 +17,7 @@ export function _emnapi_get_last_error_info (env: napi_env, error_code: Pointer< // eslint-disable-next-line @typescript-eslint/no-unused-vars const engineErrorCode = lastError.engineErrorCode >>> 0 // eslint-disable-next-line @typescript-eslint/no-unused-vars - const engineReserved = lastError.engineReserved + let engineReserved = lastError.engineReserved from64('engineReserved') makeSetValue('error_code', 0, 'errorCode', 'i32') diff --git a/packages/emnapi/src/function.ts b/packages/emnapi/src/function.ts index bad65c4c..8c7cee44 100644 --- a/packages/emnapi/src/function.ts +++ b/packages/emnapi/src/function.ts @@ -38,7 +38,7 @@ export function napi_get_cb_info (env: napi_env, cbinfo: napi_callback_info, arg if (argv) { $CHECK_ARG!(envObject, argc) - const argcValue = makeGetValue('argc', 0, SIZE_TYPE) + let argcValue = makeGetValue('argc', 0, SIZE_TYPE) from64('argcValue') const len = cbinfoValue.args.length diff --git a/packages/emnapi/src/memory.ts b/packages/emnapi/src/memory.ts index b279d7e2..7ef4cb71 100644 --- a/packages/emnapi/src/memory.ts +++ b/packages/emnapi/src/memory.ts @@ -2,20 +2,7 @@ import { _free, wasmMemory, _malloc } from 'emscripten:runtime' import { emnapiCtx } from 'emnapi:shared' import { to64 } from 'emscripten:parse-tools' -export type ViewConstuctor = - Int8ArrayConstructor | - Uint8ArrayConstructor | - Uint8ClampedArrayConstructor | - Int16ArrayConstructor | - Uint16ArrayConstructor | - Int32ArrayConstructor | - Uint32ArrayConstructor | - BigInt64ArrayConstructor | - BigUint64ArrayConstructor | - Float32ArrayConstructor | - Float64ArrayConstructor | - DataViewConstructor | - BufferCtor +export type ViewConstuctor = new (...args: any[]) => ArrayBufferView export interface ArrayBufferPointer { address: void_p diff --git a/packages/emnapi/tsconfig.base.json b/packages/emnapi/tsconfig.base.json index 45f52902..e86f990e 100644 --- a/packages/emnapi/tsconfig.base.json +++ b/packages/emnapi/tsconfig.base.json @@ -1,21 +1,13 @@ { "extends": "../shared/tsconfig.base.json", "compilerOptions": { - "target": "ES5", + "target": "ES2021", "module": "ESNext", "moduleResolution": "Bundler", "importHelpers": false, "noEmitHelpers": true, "noUnusedLocals": false, "noUnusedParameters": false, - "types": [], - "lib": [ - "ES5", - "ES2015", - "ES2020.BigInt", - "ES2021.WeakRef", - "ES2017.SharedMemory", - "DOM" - ] + "types": [] } } diff --git a/packages/runtime/script/build.js b/packages/runtime/script/build.js index c9a888d5..1abfec07 100644 --- a/packages/runtime/script/build.js +++ b/packages/runtime/script/build.js @@ -12,7 +12,8 @@ const { compile } = require('@tybys/tsapi') function build () { compile(path.join(__dirname, '../tsconfig.json'), { optionsToExtend: { - target: require('typescript').ScriptTarget.ES2019, + target: require('typescript').ScriptTarget.ES2021, + outDir: path.join(__dirname, '../lib'), emitDeclarationOnly: true, declaration: true, declarationMap: true, @@ -80,7 +81,7 @@ function build () { return Promise.all(([ { - input: createInput(ts.ScriptTarget.ES5, false), + input: createInput(ts.ScriptTarget.ES2021, false), output: { file: runtimeOut, format: 'iife', @@ -90,7 +91,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, false), + input: createInput(ts.ScriptTarget.ES2021, false), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.js'), format: 'umd', @@ -100,7 +101,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, true), + input: createInput(ts.ScriptTarget.ES2021, true), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.min.js'), format: 'umd', @@ -110,7 +111,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.cjs.js'), format: 'cjs', @@ -120,7 +121,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib']), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.cjs.min.js'), format: 'cjs', @@ -130,7 +131,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.mjs'), format: 'esm', @@ -140,7 +141,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib']), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.min.mjs'), format: 'esm', @@ -150,7 +151,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(path.dirname(runtimeOut), 'emnapi.esm-bundler.js'), format: 'esm', diff --git a/packages/runtime/src/util.ts b/packages/runtime/src/util.ts index fa7f9803..058e57b5 100644 --- a/packages/runtime/src/util.ts +++ b/packages/runtime/src/util.ts @@ -110,11 +110,13 @@ const _require = /*#__PURE__*/ (function () { return nativeRequire })() +const getBuiltinModule: (id: string) => any = _global.process?.getBuiltinModule ?? _require + export const _MessageChannel: typeof MessageChannel | undefined = typeof MessageChannel === 'function' ? MessageChannel : /*#__PURE__*/ (function () { try { - return _require!('worker_threads').MessageChannel + return getBuiltinModule('worker_threads').MessageChannel } catch (_) {} return undefined @@ -143,7 +145,7 @@ export const _Buffer: BufferCtor | undefined = typeof Buffer === 'function' ? Buffer : /*#__PURE__*/ (function () { try { - return _require!('buffer').Buffer + return getBuiltinModule('buffer').Buffer } catch (_) {} return undefined diff --git a/packages/runtime/tsconfig.json b/packages/runtime/tsconfig.json index 17b3f9ff..c206790a 100644 --- a/packages/runtime/tsconfig.json +++ b/packages/runtime/tsconfig.json @@ -1,20 +1,16 @@ { "extends": "../shared/tsconfig.base.json", "compilerOptions": { - "target": "ES5", + "target": "ES2021", "module": "ESNext", "noEmitHelpers": true, "importHelpers": true, "moduleResolution": "Bundler", - "outDir": "lib", "paths": { "tslib" : ["../../node_modules/tslib/tslib.d.ts"] }, "lib": [ - "ES5", - "ES2015", - "ES2020.BigInt", - "ES2021.WeakRef", + "ES2021", "DOM" ] }, diff --git a/packages/wasi-threads/script/build.js b/packages/wasi-threads/script/build.js index d5eb320f..5556f7d2 100644 --- a/packages/wasi-threads/script/build.js +++ b/packages/wasi-threads/script/build.js @@ -13,7 +13,8 @@ const dist = path.join(__dirname, '../dist') function build () { compile(path.join(__dirname, '../tsconfig.json'), { optionsToExtend: { - target: require('typescript').ScriptTarget.ES2019, + target: require('typescript').ScriptTarget.ES2021, + outDir: path.join(__dirname, '../lib'), emitDeclarationOnly: true, declaration: true, declarationMap: true, @@ -83,7 +84,7 @@ function build () { return Promise.all(([ { - input: createInput(ts.ScriptTarget.ES5, false), + input: createInput(ts.ScriptTarget.ES2021, false), output: { file: path.join(dist, 'wasi-threads.js'), format: 'umd', @@ -93,7 +94,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, true), + input: createInput(ts.ScriptTarget.ES2021, true), output: { file: path.join(dist, 'wasi-threads.min.js'), format: 'umd', @@ -103,7 +104,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(dist, 'wasi-threads.cjs.js'), format: 'cjs', @@ -113,7 +114,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib']), output: { file: path.join(dist, 'wasi-threads.cjs.min.js'), format: 'cjs', @@ -123,7 +124,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(dist, 'wasi-threads.mjs'), format: 'esm', @@ -133,7 +134,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES2019, true, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, true, ['tslib']), output: { file: path.join(dist, 'wasi-threads.min.mjs'), format: 'esm', @@ -143,7 +144,7 @@ function build () { } }, { - input: createInput(ts.ScriptTarget.ES5, false, ['tslib']), + input: createInput(ts.ScriptTarget.ES2021, false, ['tslib']), output: { file: path.join(dist, 'wasi-threads.esm-bundler.js'), format: 'esm', diff --git a/packages/wasi-threads/tsconfig.json b/packages/wasi-threads/tsconfig.json index 577085da..5fbf9ca4 100644 --- a/packages/wasi-threads/tsconfig.json +++ b/packages/wasi-threads/tsconfig.json @@ -2,24 +2,15 @@ "extends": "../shared/tsconfig.base.json", "compilerOptions": { "allowJs": true, - "target": "ES5", + "target": "ES2021", "module": "ESNext", "moduleResolution": "Bundler", "noEmitHelpers": true, "importHelpers": true, - "outDir": "lib", "paths": { "tslib" : ["../../node_modules/tslib/tslib.d.ts"], "@/*": ["./src/*"], - }, - "lib": [ - "ES5", - "ES2015", - "ES2020.BigInt", - "ES2021.WeakRef", - "ES2017.SharedMemory", - "DOM" - ] + } }, "include": [ "./src/**/*" diff --git a/tsconfig.json b/tsconfig.json index cd1eb7e0..4a5e91d2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "ES5", + "target": "ES2021", "module": "none", "noImplicitAny": true, "noImplicitReturns": true, @@ -14,11 +14,7 @@ "noEmit": true, "types": [], "lib": [ - "ES5", - "ES2015", - "ES2020.BigInt", - "ES2021.WeakRef", - "ES2017.SharedMemory", + "ES2021", "DOM" ] },