From eeaa7d42617848dd3bca29442e3827223bbc3bed Mon Sep 17 00:00:00 2001 From: FUJI Goro Date: Tue, 11 Feb 2025 10:57:24 +0900 Subject: [PATCH 1/3] give .cjs ext for CommonJS files --- package.json | 10 +++++----- tools/esmify.ts | 25 ------------------------- tools/fix-ext.mts | 28 ++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 30 deletions(-) delete mode 100644 tools/esmify.ts create mode 100644 tools/fix-ext.mts diff --git a/package.json b/package.json index 5d03ab5..77c79f3 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "MessagePack for ECMA-262/JavaScript/TypeScript", "author": "The MessagePack community", "license": "ISC", - "main": "./dist.cjs/index.js", + "main": "./dist.cjs/index.cjs", "module": "./dist.esm/index.mjs", "cdn": "./dist.umd/msgpack.min.js", "unpkg": "./dist.umd/msgpack.min.js", @@ -12,7 +12,7 @@ "sideEffects": false, "scripts": { "build": "npm publish --dry-run", - "prepare": "npm run clean && webpack --bail && tsc --build tsconfig.dist.cjs.json tsconfig.dist.esm.json && ts-node tools/esmify.ts dist.esm/*.js dist.esm/*/*.js", + "prepare": "npm run clean && webpack --bail && tsc --build tsconfig.dist.cjs.json tsconfig.dist.esm.json && tsimp tools/fix-ext.mts --mjs dist.esm/*.js dist.esm/*/*.js && tsimp tools/fix-ext.mts --cjs dist.cjs/*.js dist.cjs/*/*.js", "prepublishOnly": "npm run test:dist", "clean": "rimraf build dist dist.*", "test": "mocha 'test/**/*.test.ts'", @@ -89,10 +89,10 @@ "webpack-cli": "latest" }, "files": [ - "mod.ts", "src/**/*.*", - "dist/**/*.*", + "dist.cjs/**/*.*", + "dist.esm/**/*.*", "dist.umd/**/*.*", - "dist.esm/**/*.*" + "mod.ts" ] } diff --git a/tools/esmify.ts b/tools/esmify.ts deleted file mode 100644 index 8447c10..0000000 --- a/tools/esmify.ts +++ /dev/null @@ -1,25 +0,0 @@ -#!ts-node -/* eslint-disable no-console */ - -import fs from "fs"; - -const files = process.argv.slice(2); - -for (const file of files) { - const fileMjs = file.replace(/\.js$/, ".mjs"); - console.info(`Processing ${file} => ${fileMjs}`); - // .js => .mjs - const content = fs.readFileSync(file).toString("utf-8"); - const newContent = content.replace(/\bfrom "(\.\.?\/[^"]+)";/g, 'from "$1.mjs";') - .replace(/\bimport "(\.\.?\/[^"]+)";/g, 'import "$1.mjs";') - .replace(/\/\/# sourceMappingURL=(.+)\.js\.map$/, - "//# sourceMappingURL=$1.mjs.map"); - fs.writeFileSync(fileMjs, newContent); - fs.unlinkSync(file); - - // .js.map => .mjs.map - const mapping = JSON.parse(fs.readFileSync(`${file}.map`).toString("utf-8")); - mapping.file = mapping.file.replace(/\.js$/, ".mjs"); - fs.writeFileSync(`${fileMjs}.map`, JSON.stringify(mapping)); - fs.unlinkSync(`${file}.map`); -} diff --git a/tools/fix-ext.mts b/tools/fix-ext.mts new file mode 100644 index 0000000..bd45cd7 --- /dev/null +++ b/tools/fix-ext.mts @@ -0,0 +1,28 @@ +import fs from "node:fs"; + +const mode = process.argv[2]; // --cjs or --mjs +const files = process.argv.slice(3); + +const ext = mode === "--cjs" ? "cjs" : "mjs"; + +console.info(`Fixing ${mode} files with extension ${ext}`); + +for (const file of files) { + const fileMjs = file.replace(/\.js$/, `.${ext}`); + console.info(`Processing ${file} => ${fileMjs}`); + // .js => .mjs + const content = fs.readFileSync(file).toString("utf-8"); + const newContent = content + .replace(/\bfrom "(\.\.?\/[^"]+).js";/g, `from "$1.${ext}";`) + .replace(/\bimport "(\.\.?\/[^"]+)";/g, 'import "$1.mjs";') + .replace(/\brequire\("(\.\.?\/[^"]+).js"\)/g, `require("$1.${ext}");`) + .replace(/\/\/# sourceMappingURL=(.+)\.js\.map$/, `//# sourceMappingURL=$1.${ext}.map`); + fs.writeFileSync(fileMjs, newContent); + fs.unlinkSync(file); + + // .js.map => .mjs.map + const mapping = JSON.parse(fs.readFileSync(`${file}.map`).toString("utf-8")); + mapping.file = mapping.file.replace(/\.js$/, ext); + fs.writeFileSync(`${fileMjs}.map`, JSON.stringify(mapping)); + fs.unlinkSync(`${file}.map`); +} From b30b250e9a154d311ded32096d272a8419fe3731 Mon Sep 17 00:00:00 2001 From: FUJI Goro Date: Tue, 11 Feb 2025 11:12:48 +0900 Subject: [PATCH 2/3] fix --- tools/fix-ext.mts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/fix-ext.mts b/tools/fix-ext.mts index bd45cd7..80250bc 100644 --- a/tools/fix-ext.mts +++ b/tools/fix-ext.mts @@ -13,9 +13,9 @@ for (const file of files) { // .js => .mjs const content = fs.readFileSync(file).toString("utf-8"); const newContent = content - .replace(/\bfrom "(\.\.?\/[^"]+).js";/g, `from "$1.${ext}";`) - .replace(/\bimport "(\.\.?\/[^"]+)";/g, 'import "$1.mjs";') - .replace(/\brequire\("(\.\.?\/[^"]+).js"\)/g, `require("$1.${ext}");`) + .replace(/\bfrom "(\.\.?\/[^"]+)(?:\.js)?";/g, `from "$1.${ext}";`) + .replace(/\bimport "(\.\.?\/[^"]+)(?:\.js)?";/g, `import "$1.${ext}";`) + .replace(/\brequire\("(\.\.?\/[^"]+)(?:\.js)?"\)/g, `require("$1.${ext}");`) .replace(/\/\/# sourceMappingURL=(.+)\.js\.map$/, `//# sourceMappingURL=$1.${ext}.map`); fs.writeFileSync(fileMjs, newContent); fs.unlinkSync(file); From c81694e454bb6172e5315741d9ce3e8a0caaeb69 Mon Sep 17 00:00:00 2001 From: FUJI Goro Date: Tue, 11 Feb 2025 11:17:26 +0900 Subject: [PATCH 3/3] add test for dist.cjs with deno --- package.json | 2 +- test/deno_cjs_test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 test/deno_cjs_test.ts diff --git a/package.json b/package.json index 77c79f3..2ec64d3 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test": "mocha 'test/**/*.test.ts'", "test:dist": "npm run lint && npm run test && npm run test:deno", "test:cover": "npm run cover:clean && npx nyc --no-clean npm run 'test' && npm run cover:report", - "test:deno": "deno test test/deno_test.ts", + "test:deno": "deno test --allow-read test/deno_*.ts", "test:bun": "bun test test/bun.spec.ts", "test:fuzz": "npm exec --yes -- jsfuzz@git+https://gitlab.com/gitlab-org/security-products/analyzers/fuzzers/jsfuzz.git#39e6cf16613a0e30c7a7953f62e64292dbd5d3f3 --fuzzTime 60 --no-versifier test/decode.jsfuzz.js corpus", "cover:clean": "rimraf .nyc_output coverage/", diff --git a/test/deno_cjs_test.ts b/test/deno_cjs_test.ts new file mode 100755 index 0000000..7293f0a --- /dev/null +++ b/test/deno_cjs_test.ts @@ -0,0 +1,12 @@ +#!/usr/bin/env deno test --allow-read + +/* eslint-disable */ +import { deepStrictEqual } from "node:assert"; +import { test } from "node:test"; +import * as msgpack from "../dist.cjs/index.cjs"; + +test("Hello, world!", () => { + const encoded = msgpack.encode("Hello, world!"); + const decoded = msgpack.decode(encoded); + deepStrictEqual(decoded, "Hello, world!"); +});