diff --git a/.editorconfig b/.editorconfig index f74d66d7..ebb5d852 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,7 +8,7 @@ trim_trailing_whitespace = true indent_style = tab charset = utf-8 -[*.js] +[*.js,*.mjs] indent_style = space indent_size = 2 diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 3aba9824..befd5af8 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -24,7 +24,7 @@ jobs: - name: Build run: | npm run --if-present build - node index.js + node dist/index.js npm pack npm exec npm-pkg-lint - run: npm test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 419b86d4..3d704e2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,4 +21,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm run semantic-release + run: npm exec semantic-release diff --git a/.gitignore b/.gitignore index 577ee284..75f68158 100644 --- a/.gitignore +++ b/.gitignore @@ -126,3 +126,5 @@ $RECYCLE.BIN/ *.lnk # End of https://www.gitignore.io/api/macos,windows,linux,node + +dist/ diff --git a/build.mjs b/build.mjs new file mode 100644 index 00000000..824f71e7 --- /dev/null +++ b/build.mjs @@ -0,0 +1,23 @@ +import fs from "node:fs/promises"; +import { build } from "esbuild"; + +const pkg = JSON.parse(await fs.readFile("package.json", "utf-8")); +const { externalDependencies } = pkg; + +build({ + entryPoints: ["src/index.js"], + bundle: true, + outdir: "dist", + platform: "node", + target: "node18", + format: "esm", + logLevel: "info", + external: externalDependencies, + banner: { + js: ` +import { createRequire as _createRequire_ } from "node:module"; + +const require = _createRequire_(import.meta.url); +`, + }, +}); diff --git a/package-lock.json b/package-lock.json index 7546eb73..32a12820 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,19 +21,19 @@ "debug": "^4.3.1", "execa": "^8.0.0", "get-stream": "^8.0.0", - "into-stream": "^8.0.0", + "into-stream": "8.0.0", "libnpmversion": "^5.0.0", - "minimatch": "^9.0.0", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npmlog": "^7.0.0", - "rc": "^1.2.0", - "read-pkg": "^9.0.0", - "read-pkg-up": "^10.0.0", + "minimatch": "9.0.3", + "nerf-dart": "1.0.0", + "normalize-url": "8.0.0", + "npmlog": "7.0.1", + "rc": "1.2.8", + "read-pkg": "9.0.1", + "read-pkg-up": "10.0.0", "registry-auth-token": "^5.0.0", - "semver": "^7.0.0", - "tempy": "^3.0.0", - "write-json-file": "^5.0.0" + "semver": "7.5.3", + "tempy": "3.0.0", + "write-json-file": "5.0.0" }, "devDependencies": { "@babel/core": "7.24.0", @@ -41,9 +41,11 @@ "@html-validate/eslint-config": "5.13.0", "@html-validate/eslint-config-jest": "5.13.0", "@html-validate/prettier-config": "2.4.12", + "@html-validate/release-scripts": "6.2.0", "@types/jest": "29.5.12", "@types/npmlog": "7.0.0", "babel-plugin-transform-import-meta": "2.2.1", + "esbuild": "0.20.2", "fs-extra": "11.2.0", "jest": "29.7.0", "lerna": "8.1.2", @@ -1970,6 +1972,374 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", @@ -2163,6 +2533,22 @@ "prettier": "^2.8.8 || ^3" } }, + "node_modules/@html-validate/release-scripts": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@html-validate/release-scripts/-/release-scripts-6.2.0.tgz", + "integrity": "sha512-YPc/sRfUdFKA2Z1FK4535a/gHvvGZ6kCLdSDq5GOHOnpqEqwbyW89rzzkVLvZpykiZM3E0CMhhX/bBOUCwZ75g==", + "dev": true, + "bin": { + "release-postpack": "scripts/postpack", + "release-postpublish": "scripts/postpack", + "release-prepack": "scripts/prepack", + "release-prepublish": "scripts/prepack" + }, + "engines": { + "node": ">= 16", + "npm": ">= 7" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -8552,6 +8938,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -11454,9 +11878,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12701,9 +13125,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14801,7 +15225,7 @@ "node_modules/nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=" + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" }, "node_modules/node-emoji": { "version": "2.1.3", @@ -24150,6 +24574,167 @@ } } }, + "@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "dev": true, + "optional": true + }, "@eslint-community/eslint-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", @@ -24275,6 +24860,12 @@ "lint-staged": "15.2.2" } }, + "@html-validate/release-scripts": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@html-validate/release-scripts/-/release-scripts-6.2.0.tgz", + "integrity": "sha512-YPc/sRfUdFKA2Z1FK4535a/gHvvGZ6kCLdSDq5GOHOnpqEqwbyW89rzzkVLvZpykiZM3E0CMhhX/bBOUCwZ75g==", + "dev": true + }, "@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -29031,6 +29622,37 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -31130,9 +31752,9 @@ }, "dependencies": { "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -32057,9 +32679,9 @@ }, "dependencies": { "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -33652,7 +34274,7 @@ "nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=" + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" }, "node-emoji": { "version": "2.1.3", diff --git a/package.json b/package.json index d57f8f4a..8133daab 100644 --- a/package.json +++ b/package.json @@ -26,18 +26,20 @@ "Gregor Martynus (https://twitter.com/gr2m)" ], "type": "module", - "main": "index.js", + "main": "dist/index.js", "files": [ - "lib", - "index.js", - "!*.test.js" + "dist" ], "scripts": { + "build": "node build.mjs", "eslint": "eslint --cache .", "eslint:fix": "eslint --cache --fix .", "prettier:check": "prettier --check .", "prettier:write": "prettier --write .", - "semantic-release": "semantic-release", + "prepack": "release-prepack --bundle", + "postpack": "release-postpack", + "prepublishOnly": "release-prepublish --bundle", + "postpublish": "release-postpublish", "pretest": "npm run eslint && npm run prettier:check", "test": "jest --collectCoverage" }, @@ -59,19 +61,19 @@ "debug": "^4.3.1", "execa": "^8.0.0", "get-stream": "^8.0.0", - "into-stream": "^8.0.0", + "into-stream": "8.0.0", "libnpmversion": "^5.0.0", - "minimatch": "^9.0.0", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npmlog": "^7.0.0", - "rc": "^1.2.0", - "read-pkg": "^9.0.0", - "read-pkg-up": "^10.0.0", + "minimatch": "9.0.3", + "nerf-dart": "1.0.0", + "normalize-url": "8.0.0", + "npmlog": "7.0.1", + "rc": "1.2.8", + "read-pkg": "9.0.1", + "read-pkg-up": "10.0.0", "registry-auth-token": "^5.0.0", - "semver": "^7.0.0", - "tempy": "^3.0.0", - "write-json-file": "^5.0.0" + "semver": "7.5.3", + "tempy": "3.0.0", + "write-json-file": "5.0.0" }, "devDependencies": { "@babel/core": "7.24.0", @@ -79,9 +81,11 @@ "@html-validate/eslint-config": "5.13.0", "@html-validate/eslint-config-jest": "5.13.0", "@html-validate/prettier-config": "2.4.12", + "@html-validate/release-scripts": "6.2.0", "@types/jest": "29.5.12", "@types/npmlog": "7.0.0", "babel-plugin-transform-import-meta": "2.2.1", + "esbuild": "0.20.2", "fs-extra": "11.2.0", "jest": "29.7.0", "lerna": "8.1.2", @@ -118,5 +122,21 @@ "semanticCommitType": "feat" } ] - } + }, + "externalDependencies": [ + "@lerna/package", + "@lerna/package-graph", + "@lerna/project", + "@semantic-release/error", + "@semantic-release/release-notes-generator", + "aggregate-error", + "conventional-changelog-writer", + "conventional-commits-filter", + "conventional-commits-parser", + "debug", + "execa", + "get-stream", + "libnpmversion", + "registry-auth-token" + ] } diff --git a/lib/definitions/errors.js b/src/definitions/errors.js similarity index 91% rename from lib/definitions/errors.js rename to src/definitions/errors.js index 371dfa8b..7936542c 100644 --- a/lib/definitions/errors.js +++ b/src/definitions/errors.js @@ -1,10 +1,6 @@ -import { dirname, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import { readPackageSync } from "read-pkg"; +import { homepage as pkgHomepage } from "../../package.json"; -const __dirname = dirname(fileURLToPath(import.meta.url)); -const pkg = readPackageSync({ cwd: resolve(__dirname, "../../") }); -const [homepage] = pkg.homepage.split("#"); +const [homepage] = pkgHomepage.split("#"); const linkify = (file) => `${homepage}/blob/master/${file}`; export function EDIRTYWC({ files }) { diff --git a/lib/generate-notes.js b/src/generate-notes.js similarity index 100% rename from lib/generate-notes.js rename to src/generate-notes.js diff --git a/lib/get-changed-packages.js b/src/get-changed-packages.js similarity index 100% rename from lib/get-changed-packages.js rename to src/get-changed-packages.js diff --git a/lib/get-channel.js b/src/get-channel.js similarity index 100% rename from lib/get-channel.js rename to src/get-channel.js diff --git a/lib/get-error.js b/src/get-error.js similarity index 100% rename from lib/get-error.js rename to src/get-error.js diff --git a/lib/get-pkg.js b/src/get-pkg.js similarity index 100% rename from lib/get-pkg.js rename to src/get-pkg.js diff --git a/lib/get-registry.js b/src/get-registry.js similarity index 100% rename from lib/get-registry.js rename to src/get-registry.js diff --git a/lib/get-release-info.js b/src/get-release-info.js similarity index 100% rename from lib/get-release-info.js rename to src/get-release-info.js diff --git a/index.js b/src/index.js similarity index 87% rename from index.js rename to src/index.js index 08883905..1e836d5e 100644 --- a/index.js +++ b/src/index.js @@ -1,13 +1,13 @@ import AggregateError from "aggregate-error"; import { temporaryFile } from "tempy"; -import getPkg from "./lib/get-pkg.js"; -import verifyNpmConfig from "./lib/verify-config.js"; -import verifyNpmAuth from "./lib/verify-auth.js"; -import verifyGit from "./lib/verify-git.js"; -import prepareNpm from "./lib/prepare.js"; -import publishNpm from "./lib/publish.js"; - -export { generateNotes } from "./lib/generate-notes.js"; +import getPkg from "./get-pkg.js"; +import verifyNpmConfig from "./verify-config.js"; +import verifyNpmAuth from "./verify-auth.js"; +import verifyGit from "./verify-git.js"; +import prepareNpm from "./prepare.js"; +import publishNpm from "./publish.js"; + +export { generateNotes } from "./generate-notes.js"; let verified; const npmrc = temporaryFile({ name: ".npmrc" }); diff --git a/lib/prepare.js b/src/prepare.js similarity index 100% rename from lib/prepare.js rename to src/prepare.js diff --git a/lib/prepare.test.js b/src/prepare.test.js similarity index 99% rename from lib/prepare.test.js rename to src/prepare.test.js index 0c5daad8..146e163c 100644 --- a/lib/prepare.test.js +++ b/src/prepare.test.js @@ -8,7 +8,7 @@ import prepare from "./prepare"; let context; let mockChangedPackages; -jest.mock("../lib/get-changed-packages", () => { +jest.mock("./get-changed-packages", () => { function getChangedPackagesMock() { return mockChangedPackages; } diff --git a/lib/publish.js b/src/publish.js similarity index 100% rename from lib/publish.js rename to src/publish.js diff --git a/lib/set-npmrc-auth.js b/src/set-npmrc-auth.js similarity index 100% rename from lib/set-npmrc-auth.js rename to src/set-npmrc-auth.js diff --git a/lib/should-latch.js b/src/should-latch.js similarity index 100% rename from lib/should-latch.js rename to src/should-latch.js diff --git a/lib/should-latch.test.js b/src/should-latch.test.js similarity index 100% rename from lib/should-latch.test.js rename to src/should-latch.test.js diff --git a/lib/utils/collect-dependents.js b/src/utils/collect-dependents.js similarity index 100% rename from lib/utils/collect-dependents.js rename to src/utils/collect-dependents.js diff --git a/lib/utils/collect-packages.js b/src/utils/collect-packages.js similarity index 100% rename from lib/utils/collect-packages.js rename to src/utils/collect-packages.js diff --git a/lib/utils/has-tags.js b/src/utils/has-tags.js similarity index 100% rename from lib/utils/has-tags.js rename to src/utils/has-tags.js diff --git a/lib/utils/index.js b/src/utils/index.js similarity index 100% rename from lib/utils/index.js rename to src/utils/index.js diff --git a/lib/utils/make-diff-predicate.js b/src/utils/make-diff-predicate.js similarity index 100% rename from lib/utils/make-diff-predicate.js rename to src/utils/make-diff-predicate.js diff --git a/lib/utils/package-manager-commands.js b/src/utils/package-manager-commands.js similarity index 100% rename from lib/utils/package-manager-commands.js rename to src/utils/package-manager-commands.js diff --git a/lib/verify-auth.js b/src/verify-auth.js similarity index 100% rename from lib/verify-auth.js rename to src/verify-auth.js diff --git a/lib/verify-config.js b/src/verify-config.js similarity index 100% rename from lib/verify-config.js rename to src/verify-config.js diff --git a/lib/verify-git.js b/src/verify-git.js similarity index 100% rename from lib/verify-git.js rename to src/verify-git.js diff --git a/lib/verify-git.test.js b/src/verify-git.test.js similarity index 100% rename from lib/verify-git.test.js rename to src/verify-git.test.js diff --git a/test/helpers/package.js b/test/helpers/package.js index 236915ee..ffda353d 100644 --- a/test/helpers/package.js +++ b/test/helpers/package.js @@ -4,7 +4,7 @@ import { outputJson } from "fs-extra"; import { getLockFileFromPackageManager, getUpdateLockFileCommand, -} from "../../lib/utils/package-manager-commands.js"; +} from "../../src/utils/package-manager-commands.js"; const MOCK_NAME = "Mock user"; const MOCK_EMAIL = "mock-user@example.net"; diff --git a/test/helpers/project.js b/test/helpers/project.js index 49801f4e..457c4784 100644 --- a/test/helpers/project.js +++ b/test/helpers/project.js @@ -4,7 +4,7 @@ import { outputJson, outputFile } from "fs-extra"; import { getLockFileFromPackageManager, getUpdateLockFileCommand, -} from "../../lib/utils/package-manager-commands.js"; +} from "../../src/utils/package-manager-commands.js"; import * as npmRegistry from "./npm-registry"; const MOCK_NAME = "Mock user"; diff --git a/test/integration.test.js b/test/integration.test.js index f2920e91..5d836506 100644 --- a/test/integration.test.js +++ b/test/integration.test.js @@ -3,7 +3,7 @@ import { outputJson, readJson } from "fs-extra"; import { execa } from "execa"; import { temporaryDirectory } from "tempy"; import { WritableStreamBuffer } from "stream-buffers"; -import * as semanticReleaseLerna from "../index"; +import * as semanticReleaseLerna from "../dist/index.js"; import * as npmRegistry from "./helpers/npm-registry"; import { createPackage, createProject } from "./helpers";