diff --git a/packages/esbuild-plugin-worker/lib/index.js b/packages/esbuild-plugin-worker/lib/index.js index a81d647c..208b2ef0 100644 --- a/packages/esbuild-plugin-worker/lib/index.js +++ b/packages/esbuild-plugin-worker/lib/index.js @@ -147,7 +147,7 @@ export default function ({ constructors = ['Worker', 'SharedWorker'], proxy = fa const isStringLiteral = argument.type === 'StringLiteral'; const isIdentifier = argument.type === 'Identifier'; if ((isStringLiteral || isIdentifier) && proxy) { - const arg = code.substring(argument.start, argument.end); + const arg = helpers.substring(argument.start, argument.end); helpers.overwrite( argument.start, argument.end, @@ -185,7 +185,7 @@ export default function ({ constructors = ['Worker', 'SharedWorker'], proxy = fa if (typeof value !== 'string') { if (proxy) { - const arg = code.substring(argument.start, argument.end); + const arg = helpers.substring(argument.start, argument.end); helpers.overwrite( argument.start, argument.end, diff --git a/packages/estransform/build.js b/packages/estransform/build.js deleted file mode 100644 index 6622c524..00000000 --- a/packages/estransform/build.js +++ /dev/null @@ -1,13 +0,0 @@ -import esbuild from 'esbuild'; - -esbuild.build({ - entryPoints: ['lib/index.js'], - outdir: 'dist', - bundle: true, - splitting: false, - minify: false, - sourcemap: true, - format: 'esm', - platform: 'node', - external: ['@parcel/source-map', 'oxc-parser'], -}); diff --git a/packages/estransform/lib/parser.js b/packages/estransform/lib/parser.js index af24e315..32c41850 100644 --- a/packages/estransform/lib/parser.js +++ b/packages/estransform/lib/parser.js @@ -1,4 +1,5 @@ -import MagicString from 'magic-string'; +import { Buffer } from 'buffer'; +import { MagicString } from '@napi-rs/magic-string'; import { parseAsync } from 'oxc-parser'; import { inlineSourcemap, loadSourcemap, mergeSourcemaps, removeInlineSourcemap } from './sourcemaps.js'; @@ -53,6 +54,7 @@ export async function walk(root, visitors) { */ export async function parse(inputCode, filePath) { const code = removeInlineSourcemap(inputCode); + const buffer = Buffer.from(code); const magicCode = new MagicString(code); const result = await parseAsync(code, { sourceType: 'module', sourceFilename: filePath }); const ast = JSON.parse(result.program); @@ -63,6 +65,14 @@ export async function parse(inputCode, filePath) { ast, comments: result.comments, helpers: { + /** + * @param {number} start + * @param {number} end + * @returns {string} + */ + substring(start, end) { + return buffer.subarray(start, end).toString('utf8'); + }, /** * @param {string} code * @param {number} [index] @@ -109,11 +119,13 @@ export async function parse(inputCode, filePath) { if (options.sourcemap) { const inputSourcemap = await loadSourcemap(inputCode, filePath); const newSourcemap = /** @type {import('./sourcemaps.js').SourceMap} */ ( - magicCode.generateMap({ - source: filePath, - includeContent: options.sourcesContent, - hires: true, - }) + magicCode + .generateMap({ + source: filePath, + includeContent: options.sourcesContent || false, + hires: true, + }) + .toMap() ); map = inputSourcemap ? await mergeSourcemaps([inputSourcemap, newSourcemap]) : newSourcemap; diff --git a/packages/estransform/package.json b/packages/estransform/package.json index 466cf5fd..dc479071 100644 --- a/packages/estransform/package.json +++ b/packages/estransform/package.json @@ -3,7 +3,7 @@ "type": "module", "version": "0.18.1", "description": "Execute multiple transformations on JavaScript sources with full sourcemaps support.", - "main": "dist/index.js", + "main": "lib/index.js", "typings": "./types/index.d.ts", "author": "Chialab (https://www.chialab.it)", "license": "MIT", @@ -18,11 +18,8 @@ "transform", "sourcemaps" ], - "scripts": { - "build": "rimraf dist && node build.js" - }, "files": [ - "dist", + "lib", "types", "package.json", "README.md", @@ -32,13 +29,13 @@ "node": ">=18" }, "dependencies": { + "@napi-rs/magic-string": "^0.3.4", "@parcel/source-map": "^2.0.0", + "cjs-module-lexer": "^1.2.2", + "es-module-lexer": "^1.0.0", "oxc-parser": "^0.8.0" }, "devDependencies": { - "cjs-module-lexer": "^1.2.2", - "es-module-lexer": "^1.0.0", - "magic-string": "^0.30.3", "rimraf": "^5.0.1", "typescript": "^5.0.0" } diff --git a/packages/wds-plugin-hmr/build.js b/packages/wds-plugin-hmr/build.js index 90b44eeb..71c3f9aa 100644 --- a/packages/wds-plugin-hmr/build.js +++ b/packages/wds-plugin-hmr/build.js @@ -10,7 +10,7 @@ esbuild.build({ sourcemap: true, format: 'esm', platform: 'node', - external: ['@chialab/es-dev-server'], + external: ['@chialab/esbuild-plugin-require-resolve', '@chialab/es-dev-server'], banner: { js: `import { dirname as __pathDirname } from 'path'; import { createRequire as __moduleCreateRequire } from 'module'; diff --git a/packages/wds-plugin-hmr/package.json b/packages/wds-plugin-hmr/package.json index 9cae1f6f..a09bd08d 100644 --- a/packages/wds-plugin-hmr/package.json +++ b/packages/wds-plugin-hmr/package.json @@ -33,10 +33,10 @@ "node": ">=18" }, "dependencies": { - "@chialab/es-dev-server": "^0.18.0" + "@chialab/es-dev-server": "^0.18.0", + "@chialab/esbuild-plugin-require-resolve": "^0.18.0" }, "devDependencies": { - "@chialab/esbuild-plugin-require-resolve": "^0.18.0", "@web/dev-server-hmr": "^0.4.0", "rimraf": "^5.0.1", "typescript": "^5.0.0" diff --git a/yarn.lock b/yarn.lock index 768313ce..d635d559 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2041,10 +2041,10 @@ __metadata: version: 0.0.0-use.local resolution: "@chialab/estransform@workspace:packages/estransform" dependencies: + "@napi-rs/magic-string": ^0.3.4 "@parcel/source-map": ^2.0.0 cjs-module-lexer: ^1.2.2 es-module-lexer: ^1.0.0 - magic-string: ^0.30.3 oxc-parser: ^0.8.0 rimraf: ^5.0.1 typescript: ^5.0.0 @@ -3525,6 +3525,145 @@ __metadata: languageName: node linkType: hard +"@napi-rs/magic-string-android-arm-eabi@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-android-arm-eabi@npm:0.3.4" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/magic-string-android-arm64@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-android-arm64@npm:0.3.4" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-darwin-arm64@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-darwin-arm64@npm:0.3.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-darwin-x64@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-darwin-x64@npm:0.3.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-freebsd-x64@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-freebsd-x64@npm:0.3.4" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-linux-arm-gnueabihf@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-linux-arm-gnueabihf@npm:0.3.4" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/magic-string-linux-arm64-gnu@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-linux-arm64-gnu@npm:0.3.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-linux-arm64-musl@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-linux-arm64-musl@npm:0.3.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-linux-x64-gnu@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-linux-x64-gnu@npm:0.3.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-linux-x64-musl@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-linux-x64-musl@npm:0.3.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-win32-arm64-msvc@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-win32-arm64-msvc@npm:0.3.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/magic-string-win32-ia32-msvc@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-win32-ia32-msvc@npm:0.3.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@napi-rs/magic-string-win32-x64-msvc@npm:0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string-win32-x64-msvc@npm:0.3.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/magic-string@npm:^0.3.4": + version: 0.3.4 + resolution: "@napi-rs/magic-string@npm:0.3.4" + dependencies: + "@napi-rs/magic-string-android-arm-eabi": 0.3.4 + "@napi-rs/magic-string-android-arm64": 0.3.4 + "@napi-rs/magic-string-darwin-arm64": 0.3.4 + "@napi-rs/magic-string-darwin-x64": 0.3.4 + "@napi-rs/magic-string-freebsd-x64": 0.3.4 + "@napi-rs/magic-string-linux-arm-gnueabihf": 0.3.4 + "@napi-rs/magic-string-linux-arm64-gnu": 0.3.4 + "@napi-rs/magic-string-linux-arm64-musl": 0.3.4 + "@napi-rs/magic-string-linux-x64-gnu": 0.3.4 + "@napi-rs/magic-string-linux-x64-musl": 0.3.4 + "@napi-rs/magic-string-win32-arm64-msvc": 0.3.4 + "@napi-rs/magic-string-win32-ia32-msvc": 0.3.4 + "@napi-rs/magic-string-win32-x64-msvc": 0.3.4 + dependenciesMeta: + "@napi-rs/magic-string-android-arm-eabi": + optional: true + "@napi-rs/magic-string-android-arm64": + optional: true + "@napi-rs/magic-string-darwin-arm64": + optional: true + "@napi-rs/magic-string-darwin-x64": + optional: true + "@napi-rs/magic-string-freebsd-x64": + optional: true + "@napi-rs/magic-string-linux-arm-gnueabihf": + optional: true + "@napi-rs/magic-string-linux-arm64-gnu": + optional: true + "@napi-rs/magic-string-linux-arm64-musl": + optional: true + "@napi-rs/magic-string-linux-x64-gnu": + optional: true + "@napi-rs/magic-string-linux-x64-musl": + optional: true + "@napi-rs/magic-string-win32-arm64-msvc": + optional: true + "@napi-rs/magic-string-win32-ia32-msvc": + optional: true + "@napi-rs/magic-string-win32-x64-msvc": + optional: true + checksum: b138f5ba72511f80b20ac068edb124cae3693a5650cb574b8fcff781c149bb76db286a314d172e15cf688bd176e0a693929422c3e0c20663fda00a8e954beaf5 + languageName: node + linkType: hard + "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -11257,7 +11396,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.3, magic-string@npm:^0.30.5, magic-string@npm:^0.30.7": +"magic-string@npm:^0.30.5, magic-string@npm:^0.30.7": version: 0.30.8 resolution: "magic-string@npm:0.30.8" dependencies: