From e6482b84845b70b3eb7abb5b6c3d927c91fdba71 Mon Sep 17 00:00:00 2001 From: UltimeLam <35449771+UltimeLam@users.noreply.github.com> Date: Wed, 11 Nov 2026 00:44:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E6=9E=84=E5=BB=BA=E6=94=B9?= =?UTF-8?q?=E7=94=A8=20vp=20pack=20=E4=B8=8E=20dts=20=E4=BA=A7=E7=89=A9?= =?UTF-8?q?=EF=BC=8C=E6=8E=A5=E5=85=A5=E5=8C=85=E8=B4=A8=E9=87=8F=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=EF=BC=8C=E5=8F=91=E5=B8=83=200.1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 出口类型改由 dist/index.d.ts 提供,files 移除 src - 接入 publint / attw / unused 与 size-limit 只报告,CI 在 Node 24 构建时校验 - 补 .node-version 与 pre-commit,开发端统一 Node 24 --- .github/pull_request_template.md | 6 +- .github/workflows/ci.yml | 20 +- .gitignore | 3 + .node-version | 1 + .vite-hooks/pre-commit | 26 ++ AGENTS.md | 1 - CHANGELOG.md | 6 + CONTRIBUTING.md | 5 +- README.md | 2 +- package.json | 24 +- pnpm-lock.yaml | 579 +++++++++++++++++++++++++++++-- rules/03-testing.md | 1 - rules/04-release.md | 2 +- vite.config.ts | 29 +- 14 files changed, 640 insertions(+), 65 deletions(-) create mode 100644 .node-version create mode 100755 .vite-hooks/pre-commit diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 46a3118..aa67244 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -9,7 +9,11 @@ - [ ] 没有新增第二份正文、重复入口或第二套默认值 - [ ] 新增命令 / 参数 / 退出码有示例与测试 - [ ] 没有引入调用方包的源码依赖 -- [ ] 已跑 `pnpm check`、`pnpm test`、`pnpm typecheck`、`npm pack --dry-run` +- [ ] 包体边界:`npm pack --dry-run` 不含 `tests` / `scripts` / `rules` / 包根 `AGENTS.md` / 构建配置 / lockfile +- [ ] Node 基线:`engines.node >= 22.18`、产物 `target: node22` 未偏离 +- [ ] 包质量:`pnpm build` 的 `publint` / `attw` / `unused` 通过 +- [ ] 体积报告已看(`pnpm size`,只报告、不设门禁) +- [ ] 已跑 `pnpm check`、`pnpm test`、`pnpm build`、`npm pack --dry-run` ## 审核重点 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 825e8c7..63189d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,20 +15,24 @@ concurrency: jobs: ci: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node: [22, 24] steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 + - uses: voidzero-dev/setup-vp@v1.22.0 with: - version: 12.6.0 + node-version: ${{ matrix.node }} + cache: true - - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: pnpm + - run: pnpm check - - run: pnpm install --frozen-lockfile + - run: pnpm build + if: matrix.node == 24 - - run: pnpm check + - run: pnpm size + if: matrix.node == 24 - run: pnpm test diff --git a/.gitignore b/.gitignore index 263eccc..004a32f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ coverage/ *.log *.tsbuildinfo .DS_Store + +# Vite+ 生成的 Git hook dispatcher(项目自己的 hook 在 .vite-hooks/ 下) +.vite-hooks/_/ diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..b74495a --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +24.22.2 diff --git a/.vite-hooks/pre-commit b/.vite-hooks/pre-commit new file mode 100755 index 0000000..eb60f89 --- /dev/null +++ b/.vite-hooks/pre-commit @@ -0,0 +1,26 @@ +#!/bin/sh +# ============================================================================ +# pre-commit — 提交前闸门(静态检查,不起浏览器) +# ---------------------------------------------------------------------------- +# 先 `vp staged` 处理暂存文件,再跑包内 `check`;需要浏览器的检查不进钩子。 +# 环境不具备(没有 node)时放行并提示,不算不合格。 +# 手动安装:pnpm exec vp config --no-agent;诊断:vp hooks status +# ============================================================================ +set -e +ROOT="$(git rev-parse --show-toplevel)" +cd "$ROOT" + +if ! command -v node >/dev/null 2>&1; then + echo "⚠ pre-commit:未找到 node,跳过静态闸门(PATH=$PATH)" + exit 0 +fi + +VP="$ROOT/node_modules/.bin/vp" + +echo "── pre-commit:Vite+ staged(fmt / lint)─────────────────────────────" +"$VP" staged || exit 1 + +echo "── pre-commit:包内静态检查 ───────────────────────────────────────────" +"$VP" run check || exit 1 + +echo "✓ 静态闸门通过" diff --git a/AGENTS.md b/AGENTS.md index 47d2ca4..49d8a97 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -33,7 +33,6 @@ ```bash pnpm check pnpm test -pnpm typecheck ``` 没跑或没跑通时,必须说明是哪一条、为什么。 diff --git a/CHANGELOG.md b/CHANGELOG.md index 054cf23..6764154 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.1.4 - 2026-11-10 + +- 构建改用 `vp pack`,产物同时生成 `dist/index.js` 与 `dist/index.d.ts`。 +- `exports.types` 指向 `dist/index.d.ts`,包体不再包含 `src/`;安装后类型解析不依赖源码。 +- 无运行时 API 变化。 + ## 0.1.3 - 2026-11-10 - 修复 `--key=value` 的值含等号时被截断:`--define=KEY=VALUE` 现在完整保留。 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 232fbb2..e50c3f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,6 +27,8 @@ - **冗余**:同一事实只有一份正文;新增说明先改真源,其他位置只留指针。 - **缺漏**:新增能力是否有入口、示例与验证命令。 - **漂移**:`package.json` / README / `CHANGELOG` / VERSION(及适用的 AI 文档)版本是否一致。 +- **包体**:`npm pack --dry-run` 不含 `tests` / `scripts` / `rules` / 包根 `AGENTS.md` / 构建配置 / lockfile;`exports` 与类型入口一致。 +- **基线**:`engines.node >= 22.18`、产物 `target: node22` 未偏离;开发端脚本与依赖不进入发布包。 机械检查交给 CI;人审看架构、边界、语义与取舍。 @@ -35,7 +37,8 @@ ```bash pnpm check pnpm test -pnpm typecheck +pnpm build # 含 publint / attw / unused +pnpm size # 体积只报告,不设门禁 npm pack --dry-run ``` diff --git a/README.md b/README.md index 3b36b3d..712ad21 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ pnpm add @ultime/cli ``` -需要 Node >= 22.18;包发的是编译后的 ESM(`dist/`),类型来自 `src/*.ts`。 +需要 Node >= 22.18;包发的是编译后的 ESM(`dist/`),类型来自 `dist/*.d.ts`。 ## 用它做什么 diff --git a/package.json b/package.json index 5be0351..53ec049 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ultime/cli", - "version": "0.1.3", + "version": "0.1.4", "description": "Ultime · cli:通用命令行设施(参数 / 命令注册 / 上下文 / 退出码),零领域依赖", "keywords": [ "argument-parser", @@ -22,7 +22,6 @@ }, "files": [ "dist", - "src", "README.md", "llms.txt", "SKILLS.md", @@ -33,7 +32,7 @@ "type": "module", "exports": { ".": { - "types": "./src/index.ts", + "types": "./dist/index.d.ts", "import": "./dist/index.js" } }, @@ -41,18 +40,29 @@ "access": "public" }, "scripts": { - "build": "vp build", + "build": "vp pack", "check": "vp check", "test": "vp test", - "typecheck": "tsc -p tsconfig.json --noEmit", - "prepublishOnly": "pnpm check && pnpm test && pnpm build" + "size": "size-limit --json", + "prepublishOnly": "pnpm check && pnpm test && pnpm build", + "prepare": "vp config --no-agent" }, "devDependencies": { + "@arethetypeswrong/core": "^0.18.5", + "@size-limit/preset-small-lib": "^14.3.0", "@types/node": "^22.20.5", - "tsx": "^4.23.15", + "publint": "^0.3.25", + "size-limit": "^14.3.0", "typescript": "^5.9.3", + "unplugin-unused": "^0.6.0", "vite-plus": "1.5.1" }, + "size-limit": [ + { + "name": "@ultime/cli", + "path": "dist/index.js" + } + ], "engines": { "node": ">=22.18" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94c4920..87586ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,21 +166,40 @@ importers: .: devDependencies: + '@arethetypeswrong/core': + specifier: ^0.18.5 + version: 0.18.5 + '@size-limit/preset-small-lib': + specifier: ^14.3.0 + version: 14.3.0(size-limit@14.3.0) '@types/node': specifier: ^22.20.5 version: 22.20.5 - tsx: - specifier: ^4.23.15 - version: 4.23.15 + publint: + specifier: ^0.3.25 + version: 0.3.25 + size-limit: + specifier: ^14.3.0 + version: 14.3.0 typescript: specifier: ^5.9.3 version: 5.9.3 + unplugin-unused: + specifier: ^0.6.0 + version: 0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1) vite-plus: specifier: 1.5.1 - version: 1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3) + version: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1)) packages: + '@andrewbranch/untar.js@1.0.4': + resolution: {integrity: sha512-pVXSwPsLuw8IGLo2Di0EaOfsk+ntVvpkk942J/sHYIkwvtKUakEcPh7HBgZ6tuimgzKSEHgCvO4XgQ05DEbwDw==} + + '@arethetypeswrong/core@0.18.5': + resolution: {integrity: sha512-9ytjzGwxjm9Uz7I9avfbt5vlQt6uk9uRRESzJjqrznl6WKvI6dwYTo+vJ3U02Wrq/mR3iql/PzhvHhKdJIAjDQ==} + engines: {node: '>=20'} + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -196,6 +215,18 @@ packages: '@blazediff/core@1.10.0': resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==} + '@braidai/lang@1.1.2': + resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} + + '@emnapi/core@2.0.0-beta.2': + resolution: {integrity: sha512-MzCVoWtcg4Pm2B3je5mMvYMvj3MmBKw+fU7vbsJc9/iT8ip6/eYIHo/Dsm/mr+wsHB6SEyJDuxB09Yy6r/8+4A==} + + '@emnapi/runtime@2.0.0-beta.2': + resolution: {integrity: sha512-JcrSPzPvZuNZvJqPTF9Fw25LbOJ8avzFVlaf2grmH4Cku0oGP47tRgqPZadcfj3YoZMHkFVnCYFbQM8I+i5QEw==} + + '@emnapi/wasi-threads@2.2.0': + resolution: {integrity: sha512-JP7OYH38Q7+pyTAe14raZHLQIK7BDKbdwji+Xi3pcd/6QkJYQH3SX4wu6EplGrGJWRepoNzedfm0G3B9Z4e9Rw==} + '@esbuild/aix-ppc64@0.28.2': resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} @@ -352,6 +383,12 @@ packages: cpu: [x64] os: [win32] + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -362,6 +399,16 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@loaderkit/resolve@1.0.6': + resolution: {integrity: sha512-G8FdIoF5CypfwmD9rl8BXod5HDn8JqB0CCNBXDTaRZ+yRYhARrrSToX1zg1zy9jX3zLqigsELwhT4gNtkdQAUg==} + + '@napi-rs/wasm-runtime@1.2.6': + resolution: {integrity: sha512-mRyDmEw9/fCDXCGfL1sbgIw/GUK0PVxRW4YwgPN61F3LQ+fSyoBFarJVzgGyhF6kRzEQZ0FejDqm4WLXSeqQmw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || 2.0.0-beta.2 + '@emnapi/runtime': ^1.7.1 || 2.0.0-beta.2 + '@oxc-project/runtime@0.157.0': resolution: {integrity: sha512-srnUknwVoji5JdmU664pA4XyjBJXmgxP8rWlnZhFovzw6XQxaICGWAuScZdlLmIHI+ZRc7WgeiC2CURF4tAszQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -650,6 +697,131 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@publint/pack@0.1.7': + resolution: {integrity: sha512-4EDEmvxWtgsCnnVeBvtFIFZtUhPPt1+bA9JrSwU4Sa//6oKtzCSlGGXYJr44OD9aGISymbieJ4mCKHUygUDU+g==} + engines: {node: '>=18'} + + '@rolldown/binding-android-arm-eabi@1.3.1': + resolution: {integrity: sha512-yeCTS2g0J/CXg0QirfJdet9BW/vhx3UM7Nv8Cz0Cglh82e/7F+8ss2kYWx5xt+wbsFK0LV4485+PZxW0bs5udQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.3.1': + resolution: {integrity: sha512-8RCJ1AODBZ7luSDvVSabNtDkxrRL1U4+kr9UG7X2GMrdPRD4gN07o8X61LouA8JSy8vXkgd8BIEpxXsP3WokgA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.3.1': + resolution: {integrity: sha512-/oKBcpu993n68qe/Jn6mdc+CwtZLCFY34aCoG9PuWvBEMmGunyGAmrxhI5R78jasyJXXT9BX2pCzwQMT6Zdj8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.3.1': + resolution: {integrity: sha512-vCmEnX+/BEVN+ar/jes4t+04RjQNrBoAd7PyQN7Wyklo+W1H1juKhcmlwjGaHQbZLdsYglZ8pBRwlQc+u5XLWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.3.1': + resolution: {integrity: sha512-/76gLsW8sjHDcLFvqsXKWOKCtfzyUUuEmKP2jz6twjGVaVAkULflI7ny+NDE955RX0xYR4qLzvk+g8IgnYHsNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.3.1': + resolution: {integrity: sha512-oci8r+L/3490VrKGcbJcqweykeFdV4DPn3FUxitWmzZQeGmsZCZ0oeCTU1XK3nV3UeqCVNAZy4lXsYE3RyCPHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.3.1': + resolution: {integrity: sha512-tcMHkX6NWVRE6Aqr3zXjpAvP9DIMxcifdaCvaTEVpdqRZn1EAeP3PcUtABxmJHU60PJB+dH3uMR/vsHsoAxdYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.3.1': + resolution: {integrity: sha512-rH04pFXdQfVI71O4U/yrcQlEmQAhUzuG9kNGhNdxGSAxtxB45lQ7XpuXmIV53eQTEjfWyl9NmAV9MOE/fux2AQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.3.1': + resolution: {integrity: sha512-yXmS9FIJXFEIj58cey6eNtspMmi8/yeKDrqsKZ6taHnM+DB2HX5eGjdNV3V8anfThOch+zKL0TaBZIg/TeH6Vw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.3.1': + resolution: {integrity: sha512-JSATRKvP4es7A0hGhuj4EQtZIdlACqWDxeIg59vPAvo9APsyiFmWqdFdPjeihRQx1gmuLw8mD6r+bUEIzitP3g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.3.1': + resolution: {integrity: sha512-9+XaosVKfDsDIWUOoZwL1bdHD+52sZFbtbft67oGcgt5qDUq+0HJGGxZA2iD/YA0w7mPB2JrThjP0C/4bg/2+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.3.1': + resolution: {integrity: sha512-zmTIXU38DaLB10om1EkwdbwBBTqiVB2IDmPXpiucbFwg9qtfQyxZktMIbrJkO/NFbqP5xiGsTaqSmhrdhpSt5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.3.1': + resolution: {integrity: sha512-hTJfT0txdxpVKSZAmrUsCSPZD7Ewh3PCtSWpLOJYkR7nYzJRTGzlyPsxMMk4yvry7RxCGvB3keEDUfxQM0/O1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.3.1': + resolution: {integrity: sha512-uTcfNRCMeAQLqGi8a/+TApIkSeqrj1qx3t2sxAWvlN65sCLyg8z68zsCQLyYKEAQPPaHrEWqiceMah8Zd9U01A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.3.1': + resolution: {integrity: sha512-vWby/lJJgE16EBaO96mg30Rj1JMT5vI/tV/bOBL5atHTO58T8Rfude/aqUyG+iALSn3NMcO2TI9fFAtPUA4/Iw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.3.1': + resolution: {integrity: sha512-9mPxCYnOQ/Cu+YW/P18Ldxu9rmLFhRIxr8kSHjYwolgpUlzfAHoe+ykHP1WupPRR11+R9erOdxG7LIE8gd9YpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.1.0': + resolution: {integrity: sha512-K+NU2HDCEem4sClgHH4ZZXwdJeNFkJo+hRk479DIwdIviAPN2hFJH1KHHwg8CxHQXvi0M5XY4deTXINfIiSG6w==} + + '@size-limit/file@14.3.0': + resolution: {integrity: sha512-GWKOi0rorXPbYmwbT926Z91t28rg5gd5hv8ywY1FNcaYf8NbibgK5K5YabYbLkV6KpGwuuixBRtIzl3ZpPzUfw==} + engines: {node: ^22.19.0 || ^24.5.0 || >=26.0.0} + peerDependencies: + size-limit: 14.3.0 + + '@size-limit/preset-small-lib@14.3.0': + resolution: {integrity: sha512-nvCyY+o26aOIdZxm81nlebE9+9lVf9UMKi19hyjE5DjO5kSaOTtnrZSeHzV9JTN5djt/hqGserT1mecoGXLTNw==} + peerDependencies: + size-limit: 14.3.0 + + '@size-limit/rolldown@14.3.0': + resolution: {integrity: sha512-u4qTH1R5gAonGYYEBLb4UHOUpWhiwVOATpV/wvKCzGTcrwziYdWzvK2S4PuUKGSj9C8/NU2d1KqhFJZy5Mw3XA==} + engines: {node: ^22.19.0 || ^24.5.0 || >=26.0.0} + peerDependencies: + size-limit: 14.3.0 + '@testing-library/dom@10.4.2': resolution: {integrity: sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q==} engines: {node: '>=18'} @@ -660,6 +832,9 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -922,6 +1097,9 @@ packages: resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -936,6 +1114,10 @@ packages: dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + empathic@2.1.0: + resolution: {integrity: sha512-AnfC1ATldl49/cvZdLPDjBfrRNwbDO05aibiOtzQu3qtlbJtomNLhF30HEtn/7iBz50dlMECqATo3fG0LrdEgw==} + engines: {node: '>=14'} + es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} @@ -944,6 +1126,10 @@ packages: engines: {node: '>=18'} hasBin: true + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -971,6 +1157,9 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1048,6 +1237,14 @@ packages: resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.4: + resolution: {integrity: sha512-zJZyBmQhArDRefuWTypZxwDpFDIYmrj8ypSBvwGD5P13Y95s6DjzKgu4DVdGbeQa5PDEsAOCAPNk4X+QOR006w==} + engines: {node: '>=14'} + + lru-cache@11.5.3: + resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} + engines: {node: 20 || >=22} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -1055,6 +1252,10 @@ packages: magic-string@1.4.5: resolution: {integrity: sha512-oLLC2+YvQUfAa+vxoufE/yc1icb87M9iXIRqAoR/2EhE/8cb3SF/+Gi0c2By1B+5Vz2e2vQtUvHiu1+63Znh+w==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -1064,6 +1265,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanospinner@1.2.2: + resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} + obug@3.0.0: resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} engines: {node: '>=12.20.0'} @@ -1101,6 +1305,9 @@ packages: vite-plus: optional: true + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -1123,13 +1330,37 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + publint@0.3.25: + resolution: {integrity: sha512-WMMbn/d7JqRlfXQL/JUI4n5skC8cJ5WVr8/wT5mmiYWkUdENkZr1I5rgs2+dQPVRgoJd+JRYtB46MTsuDylw9g==} + engines: {node: '>=18'} + hasBin: true + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + rolldown@1.3.1: + resolution: {integrity: sha512-RAIazzQpeoYB0r8jWuNDX+fT1NJ+9Cqdt0pSi9jc9zwX21k2x2IUPuYJmZxDB2k8ZisNv4gNIPj+HwRCTJG4uw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + semver@7.8.6: + resolution: {integrity: sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==} + engines: {node: '>=10'} + hasBin: true + sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} + size-limit@14.3.0: + resolution: {integrity: sha512-SoT7DtEYQ9AkOIyrNmmHu8IyJyA3P/Q6EUVjUUinT0iBuaI6IOpWxwyI+teUxg8WdLwcTwbu9moKvw/LGlCE7g==} + engines: {node: ^22.19.0 || ^24.5.0 || >=26.0.0} + hasBin: true + source-map-js@1.2.2: resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} @@ -1161,11 +1392,19 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tslib@2.9.1: + resolution: {integrity: sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==} + tsx@4.23.15: resolution: {integrity: sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==} engines: {node: '>=18.0.0'} hasBin: true + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -1174,6 +1413,50 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unplugin-unused@0.6.0: + resolution: {integrity: sha512-ov+8yoEs5lyCjK7AqSUmpLuyEhtHwKtNtc1PrpwJVCNQjv+Dins4+7e1+ej57yo8lfiW/zOr9FAEmNmjgU+hFQ==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} + + unplugin@3.7.0: + resolution: {integrity: sha512-GrM2uq3DQo3hvLU2FjeYhooJ8BY9N6j1Fbzgx7Pta3VVJevsD3VP4dPjZkZOS0mLvN8w9zzr9OlP+31bSMyuLw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@farmfe/core': '*' + '@rsbuild/core': '*' + '@rspack/core': '*' + bun-types-no-globals: '*' + esbuild: '*' + rolldown: '*' + rollup: '*' + unloader: '*' + vite: '*' + webpack: '*' + peerDependenciesMeta: + '@farmfe/core': + optional: true + '@rsbuild/core': + optional: true + '@rspack/core': + optional: true + bun-types-no-globals: + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + unloader: + optional: true + vite: + optional: true + webpack: + optional: true + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vite-plus@1.5.1: resolution: {integrity: sha512-Ckl9Vc5fg3BC8SlxPKujSQz+p1CbFy+5++yrFVbwZRdcpHzj0ExaWuNccKdnW128xGU8ECX6RK7n5YPXSHFWpg==} engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} @@ -1231,6 +1514,9 @@ packages: jsdom: optional: true + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + why-is-node-running@3.2.1: resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==} engines: {node: '>=20.11'} @@ -1258,6 +1544,19 @@ packages: snapshots: + '@andrewbranch/untar.js@1.0.4': {} + + '@arethetypeswrong/core@0.18.5': + dependencies: + '@andrewbranch/untar.js': 1.0.4 + '@loaderkit/resolve': 1.0.6 + cjs-module-lexer: 1.4.3 + fflate: 0.8.3 + lru-cache: 11.5.3 + semver: 7.8.6 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.1 + '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -1270,6 +1569,24 @@ snapshots: '@blazediff/core@1.10.0': {} + '@braidai/lang@1.1.2': {} + + '@emnapi/core@2.0.0-beta.2': + dependencies: + '@emnapi/wasi-threads': 2.2.0 + tslib: 2.9.1 + optional: true + + '@emnapi/runtime@2.0.0-beta.2': + dependencies: + tslib: 2.9.1 + optional: true + + '@emnapi/wasi-threads@2.2.0': + dependencies: + tslib: 2.9.1 + optional: true + '@esbuild/aix-ppc64@0.28.2': optional: true @@ -1348,6 +1665,16 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.6.0': {} @@ -1357,6 +1684,17 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 + '@loaderkit/resolve@1.0.6': + dependencies: + '@braidai/lang': 1.1.2 + + '@napi-rs/wasm-runtime@1.2.6(@emnapi/core@2.0.0-beta.2)(@emnapi/runtime@2.0.0-beta.2)': + dependencies: + '@emnapi/core': 2.0.0-beta.2 + '@emnapi/runtime': 2.0.0-beta.2 + '@tybys/wasm-util': 0.10.4 + optional: true + '@oxc-project/runtime@0.157.0': {} '@oxc-project/types@0.157.0': {} @@ -1497,6 +1835,79 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@publint/pack@0.1.7': + dependencies: + tinyexec: 1.3.1 + + '@rolldown/binding-android-arm-eabi@1.3.1': + optional: true + + '@rolldown/binding-android-arm64@1.3.1': + optional: true + + '@rolldown/binding-darwin-arm64@1.3.1': + optional: true + + '@rolldown/binding-darwin-x64@1.3.1': + optional: true + + '@rolldown/binding-freebsd-x64@1.3.1': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.3.1': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.3.1': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.3.1': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.3.1': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.3.1': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.3.1': + optional: true + + '@rolldown/binding-linux-x64-musl@1.3.1': + optional: true + + '@rolldown/binding-openharmony-arm64@1.3.1': + optional: true + + '@rolldown/binding-wasm32-wasi@1.3.1': + dependencies: + '@emnapi/core': 2.0.0-beta.2 + '@emnapi/runtime': 2.0.0-beta.2 + '@napi-rs/wasm-runtime': 1.2.6(@emnapi/core@2.0.0-beta.2)(@emnapi/runtime@2.0.0-beta.2) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.3.1': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.3.1': + optional: true + + '@rolldown/pluginutils@1.1.0': {} + + '@size-limit/file@14.3.0(size-limit@14.3.0)': + dependencies: + size-limit: 14.3.0 + + '@size-limit/preset-small-lib@14.3.0(size-limit@14.3.0)': + dependencies: + '@size-limit/file': 14.3.0(size-limit@14.3.0) + '@size-limit/rolldown': 14.3.0(size-limit@14.3.0) + size-limit: 14.3.0 + + '@size-limit/rolldown@14.3.0(size-limit@14.3.0)': + dependencies: + rolldown: 1.3.1 + size-limit: 14.3.0 + '@testing-library/dom@10.4.2': dependencies: '@babel/code-frame': 7.29.7 @@ -1512,6 +1923,11 @@ snapshots: dependencies: '@testing-library/dom': 10.4.2 + '@tybys/wasm-util@0.10.4': + dependencies: + tslib: 2.9.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/chai@5.2.3': @@ -1527,29 +1943,29 @@ snapshots: dependencies: undici-types: 6.21.0 - '@vitest/browser-preview@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0)': + '@vitest/browser-preview@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0)': dependencies: '@testing-library/dom': 10.4.2 '@testing-library/user-event': 14.6.8(@testing-library/dom@10.4.2) - '@vitest/browser': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0) - vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + '@vitest/browser': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0) + vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0)': + '@vitest/browser@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0)': dependencies: '@blazediff/core': 1.10.0 - '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) '@vitest/ui': 5.1.0(vitest@5.1.0) '@vitest/utils': 5.1.0 magic-string: 1.4.5 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.2.0 - vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) ws: 8.22.1 transitivePeerDependencies: - bufferutil @@ -1557,14 +1973,14 @@ snapshots: - utf-8-validate - vite - '@vitest/mocker@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))': + '@vitest/mocker@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.1.0 estree-walker: 3.0.3 magic-string: 1.4.5 optionalDependencies: - vite: '@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)' + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)' '@vitest/pretty-format@5.1.0': dependencies: @@ -1587,7 +2003,7 @@ snapshots: pathe: 2.0.3 sirv: 3.0.2 tinyrainbow: 3.2.0 - vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) '@vitest/utils@5.1.0': dependencies: @@ -1595,7 +2011,7 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.2.0 - '@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)': + '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)': dependencies: '@oxc-project/runtime': 0.157.0 '@oxc-project/types': 0.157.0 @@ -1603,6 +2019,7 @@ snapshots: postcss: 8.5.32 yuku-parser: 0.19.0 optionalDependencies: + '@arethetypeswrong/core': 0.18.5 '@types/node': 22.20.5 '@voidzero-dev/vite-plus-darwin-arm64': 1.5.1 '@voidzero-dev/vite-plus-darwin-x64': 1.5.1 @@ -1614,8 +2031,10 @@ snapshots: '@voidzero-dev/vite-plus-win32-x64-msvc': 1.5.1 esbuild: 0.28.2 fsevents: 2.3.3 + publint: 0.3.25 tsx: 4.23.15 typescript: 5.9.3 + unplugin-unused: 0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1) '@voidzero-dev/vite-plus-darwin-arm64@1.5.1': optional: true @@ -1691,6 +2110,8 @@ snapshots: chai@6.3.0: {} + cjs-module-lexer@1.4.3: {} + convert-source-map@2.0.0: {} dequal@2.0.3: {} @@ -1699,6 +2120,8 @@ snapshots: dom-accessibility-api@0.5.16: {} + empathic@2.1.0: {} + es-module-lexer@2.3.2: {} esbuild@0.28.2: @@ -1729,6 +2152,9 @@ snapshots: '@esbuild/win32-arm64': 0.28.2 '@esbuild/win32-ia32': 0.28.2 '@esbuild/win32-x64': 0.28.2 + optional: true + + escape-string-regexp@5.0.0: {} estree-walker@3.0.3: dependencies: @@ -1747,6 +2173,8 @@ snapshots: fsevents@2.3.3: optional: true + js-tokens@10.0.0: {} + js-tokens@4.0.0: {} lightningcss-android-arm64@1.33.0: @@ -1798,19 +2226,29 @@ snapshots: lightningcss-win32-arm64-msvc: 1.33.0 lightningcss-win32-x64-msvc: 1.33.0 + lilconfig@3.1.4: {} + + lru-cache@11.5.3: {} + lz-string@1.5.0: {} magic-string@1.4.5: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 + mri@1.2.0: {} + mrmime@2.0.1: {} nanoid@3.3.20: {} + nanospinner@1.2.2: + dependencies: + picocolors: 1.1.1 + obug@3.0.0: {} - oxfmt@0.76.0(vite-plus@1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)): + oxfmt@0.76.0(vite-plus@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1))): dependencies: tinypool: 2.2.0 optionalDependencies: @@ -1833,7 +2271,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc': 0.76.0 '@oxfmt/binding-win32-ia32-msvc': 0.76.0 '@oxfmt/binding-win32-x64-msvc': 0.76.0 - vite-plus: 1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3) + vite-plus: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1)) oxlint-tsgolint@7.0.2005: optionalDependencies: @@ -1844,7 +2282,7 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2005 '@oxlint-tsgolint/win32-x64': 7.0.2005 - oxlint@1.91.0(oxlint-tsgolint@7.0.2005)(vite-plus@1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)): + oxlint@1.91.0(oxlint-tsgolint@7.0.2005)(vite-plus@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1))): optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.91.0 '@oxlint/binding-android-arm64': 1.91.0 @@ -1866,7 +2304,9 @@ snapshots: '@oxlint/binding-win32-ia32-msvc': 1.91.0 '@oxlint/binding-win32-x64-msvc': 1.91.0 oxlint-tsgolint: 7.0.2005 - vite-plus: 1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3) + vite-plus: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1)) + + package-manager-detector@1.9.0: {} pathe@2.0.3: {} @@ -1888,14 +2328,54 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + publint@0.3.25: + dependencies: + '@publint/pack': 0.1.7 + package-manager-detector: 1.9.0 + picocolors: 1.1.1 + sade: 1.8.1 + react-is@17.0.2: {} + rolldown@1.3.1: + dependencies: + '@oxc-project/types': 0.157.0 + '@rolldown/pluginutils': 1.1.0 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.3.1 + '@rolldown/binding-android-arm64': 1.3.1 + '@rolldown/binding-darwin-arm64': 1.3.1 + '@rolldown/binding-darwin-x64': 1.3.1 + '@rolldown/binding-freebsd-x64': 1.3.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.3.1 + '@rolldown/binding-linux-arm64-gnu': 1.3.1 + '@rolldown/binding-linux-arm64-musl': 1.3.1 + '@rolldown/binding-linux-ppc64-gnu': 1.3.1 + '@rolldown/binding-linux-s390x-gnu': 1.3.1 + '@rolldown/binding-linux-x64-gnu': 1.3.1 + '@rolldown/binding-linux-x64-musl': 1.3.1 + '@rolldown/binding-openharmony-arm64': 1.3.1 + '@rolldown/binding-wasm32-wasi': 1.3.1 + '@rolldown/binding-win32-arm64-msvc': 1.3.1 + '@rolldown/binding-win32-x64-msvc': 1.3.1 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + semver@7.8.6: {} + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 + size-limit@14.3.0: + dependencies: + lilconfig: 3.1.4 + nanospinner: 1.2.2 + source-map-js@1.2.2: {} std-env@4.3.0: {} @@ -1915,33 +2395,70 @@ snapshots: totalist@3.0.1: {} + tslib@2.9.1: + optional: true + tsx@4.23.15: dependencies: esbuild: 0.28.2 optionalDependencies: fsevents: 2.3.3 + optional: true + + typescript@5.6.1-rc: {} typescript@5.9.3: {} undici-types@6.21.0: {} - vite-plus@1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3): + unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1): + dependencies: + empathic: 2.1.0 + escape-string-regexp: 5.0.0 + js-tokens: 10.0.0 + unplugin: 3.7.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(esbuild@0.28.2)(rolldown@1.3.1) + transitivePeerDependencies: + - '@farmfe/core' + - '@rsbuild/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - unloader + - vite + - webpack + + unplugin@3.7.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(esbuild@0.28.2)(rolldown@1.3.1): + dependencies: + '@jridgewell/remapping': 2.3.5 + '@rolldown/pluginutils': 1.1.0 + picomatch: 4.0.7 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + esbuild: 0.28.2 + rolldown: 1.3.1 + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)' + + validate-npm-package-name@5.0.1: {} + + vite-plus@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1)): dependencies: '@oxc-project/runtime': 0.157.0 '@oxc-project/types': 0.157.0 '@oxlint/plugins': 1.91.0 - '@vitest/browser': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0) - '@vitest/browser-preview': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0) - '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + '@vitest/browser': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0) + '@vitest/browser-preview': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0) + '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) '@vitest/pretty-format': 5.1.0 '@vitest/snapshot': 5.1.0 '@vitest/spy': 5.1.0 '@vitest/utils': 5.1.0 - oxfmt: 0.76.0(vite-plus@1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) - oxlint: 1.91.0(oxlint-tsgolint@7.0.2005)(vite-plus@1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + oxfmt: 0.76.0(vite-plus@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1))) + oxlint: 1.91.0(oxlint-tsgolint@7.0.2005)(vite-plus@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(esbuild@0.28.2)(rolldown@1.3.1))) oxlint-tsgolint: 7.0.2005 - vite: '@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)' - vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)' + vitest: 5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) optionalDependencies: '@voidzero-dev/vite-plus-darwin-arm64': 1.5.1 '@voidzero-dev/vite-plus-darwin-x64': 1.5.1 @@ -1986,10 +2503,10 @@ snapshots: - vue-tsc - yaml - vitest@5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)): + vitest@5.1.0(@types/node@22.20.5)(@vitest/browser-preview@5.1.0)(@vitest/ui@5.1.0)(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)) + '@vitest/mocker': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)) chai: 6.3.0 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -2000,15 +2517,17 @@ snapshots: tinybench: 6.2.3 tinyexec: 1.3.1 tinyglobby: 0.2.17 - vite: '@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3)' + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0)' why-is-node-running: 3.2.1 optionalDependencies: '@types/node': 22.20.5 - '@vitest/browser-preview': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(esbuild@0.28.2)(tsx@4.23.15)(typescript@5.9.3))(vitest@5.1.0) + '@vitest/browser-preview': 5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0) '@vitest/ui': 5.1.0(vitest@5.1.0) transitivePeerDependencies: - msw + webpack-virtual-modules@0.6.2: {} + why-is-node-running@3.2.1: {} ws@8.22.1: {} diff --git a/rules/03-testing.md b/rules/03-testing.md index fd8bb97..acce0a3 100644 --- a/rules/03-testing.md +++ b/rules/03-testing.md @@ -11,7 +11,6 @@ ```bash pnpm check pnpm test -pnpm typecheck ``` ## 覆盖 diff --git a/rules/04-release.md b/rules/04-release.md index f90d609..6064913 100644 --- a/rules/04-release.md +++ b/rules/04-release.md @@ -18,7 +18,7 @@ ## 发布前检查 -- [ ] `pnpm check` / `pnpm test` / `pnpm typecheck` 全绿 +- [ ] `pnpm check` / `pnpm test` 全绿 - [ ] `npm pack --dry-run` 只带 `dist` / `src` / `README.md` / 附属文件(不含 `tests/` / `rules/` / `evals`) - [ ] `package.json` 版本、tag、`CHANGELOG.md` 一致 - [ ] README 的 API 与退出码表与实际一致 diff --git a/vite.config.ts b/vite.config.ts index 7802d95..5627775 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from 'vite-plus' const ignore = ['**/node_modules/**', '**/dist/**', '**/*.md'] -/** 库出口:把 TS 源码打成无依赖 ESM;Node 不支持剥离 node_modules 下的类型,所以发的是产物。 */ +/** 库出口:`vp pack` 产出 ESM 与声明;包体只发产物,不发源码。 */ export default defineConfig({ fmt: { ignorePatterns: ignore, @@ -22,20 +22,21 @@ export default defineConfig({ test: { include: ['tests/**/*.test.ts'], }, - build: { + staged: { + '*': 'vp check --fix', + }, + pack: { + entry: { index: 'src/index.ts' }, + format: 'esm', + platform: 'node', target: 'node22', + dts: true, minify: false, - emptyOutDir: true, - lib: { - entry: { index: 'src/index.ts' }, - formats: ['es'], - }, - rollupOptions: { - external: [/^node:/], - output: { - entryFileNames: '[name].js', - chunkFileNames: 'chunks/[name]-[hash].js', - }, - }, + sourcemap: false, + clean: true, + publint: true, + attw: { level: 'error' }, + unused: true, + outExtensions: () => ({ js: '.js', dts: '.d.ts' }), }, }) From f91df7ced92bf200e3ea2eb7b1e2b6e61cf4485d Mon Sep 17 00:00:00 2001 From: UltimeLam <35449771+UltimeLam@users.noreply.github.com> Date: Wed, 11 Nov 2026 00:47:26 +0800 Subject: [PATCH 2/3] =?UTF-8?q?docs:=20=E5=8F=91=E5=B8=83=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=AF=B9=E9=BD=90=20vp=20pack=20=E4=B8=8E=20dts=20?= =?UTF-8?q?=E4=BA=A7=E7=89=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 构建改为 vp pack,类型来自 dist/index.d.ts - tarball 不含 src,发布前核对实际包体 --- rules/04-release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/04-release.md b/rules/04-release.md index 6064913..364ab6d 100644 --- a/rules/04-release.md +++ b/rules/04-release.md @@ -8,7 +8,7 @@ ## 形态 -- **编译 ESM**:`exports` 的 `import` 指向 `dist/index.js`,由 `vp build` 生成;类型来自 `src/*.ts`。 +- **编译 ESM**:`exports` 的 `import` 指向 `dist/index.js`,由 `vp pack` 生成;类型来自 `dist/index.d.ts`,包体不含 `src`。 - `engines.node >= 22.18`;浏览器侧需要打包器。 - 零第三方运行时依赖。 @@ -19,7 +19,7 @@ ## 发布前检查 - [ ] `pnpm check` / `pnpm test` 全绿 -- [ ] `npm pack --dry-run` 只带 `dist` / `src` / `README.md` / 附属文件(不含 `tests/` / `rules/` / `evals`) +- [ ] `npm pack --dry-run` 只带 `dist` / `README.md` / `llms.txt` / `SKILLS.md` / 附属文件(不含 `tests/` / `rules/` / `evals` / `src`) - [ ] `package.json` 版本、tag、`CHANGELOG.md` 一致 - [ ] README 的 API 与退出码表与实际一致 - [ ] AI 文档同步:`rules/` / `llms.txt` / `SKILLS.md` / `AGENTS.md` 的版本戳已更新 From fd767d333bbdb4d3777ce271644f29be2097749f Mon Sep 17 00:00:00 2001 From: UltimeLam <35449771+UltimeLam@users.noreply.github.com> Date: Wed, 11 Nov 2026 03:02:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=E6=8E=A5=E5=85=A5=20checks=200.2.?= =?UTF-8?q?0=EF=BC=8C=E5=8F=91=E5=B8=83=200.1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 仅开发期门禁与文档变更,无运行时差异。 --- checks.config.mjs | 19 +++++++++++++++++++ package.json | 5 ++++- pnpm-lock.yaml | 10 ++++++++++ pnpm-workspace.yaml | 1 + rules/README.md | 1 + 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 checks.config.mjs diff --git a/checks.config.mjs b/checks.config.mjs new file mode 100644 index 0000000..8e5b622 --- /dev/null +++ b/checks.config.mjs @@ -0,0 +1,19 @@ +/** 通过 @ultime/checks 运行;规则与词表按本包维护。 */ +export default { + roots: ['.'], + ignore: ['node_modules', 'dist', 'coverage', '.vite-hooks', '.tmp', 'checks.config.mjs'], + rules: [ + { use: 'imports', severity: 'error', options: { packageRoots: ['.'], packages: ['@ultime/'] } }, + { use: 'unresolved', severity: 'warn', options: { scope: ['src/**', 'scripts/**'] } }, + { + use: 'text', + severity: 'error', + options: { + include: 'all', + deny: ['docs/', 'roadmap/', 'design-system/\\d', 'references', '小巨蛋', 'xiaojudan', '归序札记'], + warn: ['以前|上一版|旧值|下一轮|待补|待实现|未实现|不再用|TODO|FIXME'], + }, + }, + { use: 'doc-set', severity: 'error', options: { packages: ['.'] } }, + ], +} diff --git a/package.json b/package.json index 53ec049..eaf2a49 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,9 @@ }, "scripts": { "build": "vp pack", - "check": "vp check", + "check": "vp check && checks run && pnpm cycles", + "checks": "checks run", + "cycles": "vp lint --import-plugin --deny=import/no-cycle src", "test": "vp test", "size": "size-limit --json", "prepublishOnly": "pnpm check && pnpm test && pnpm build", @@ -51,6 +53,7 @@ "@arethetypeswrong/core": "^0.18.5", "@size-limit/preset-small-lib": "^14.3.0", "@types/node": "^22.20.5", + "@ultime/checks": "^0.2.0", "publint": "^0.3.25", "size-limit": "^14.3.0", "typescript": "^5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87586ea..2dc5f48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,6 +175,9 @@ importers: '@types/node': specifier: ^22.20.5 version: 22.20.5 + '@ultime/checks': + specifier: ^0.2.0 + version: 0.2.0 publint: specifier: ^0.3.25 version: 0.3.25 @@ -850,6 +853,11 @@ packages: '@types/node@22.20.5': resolution: {integrity: sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==} + '@ultime/checks@0.2.0': + resolution: {integrity: sha512-R3xPgd4AsHDrHUtCyzYNVgLg0ImdxpL5GSh5TpaY6x+Y+cX6tsbHQaX48fhPF5pHMOGAvgUjg008wxahEOjjNg==} + engines: {node: '>=22.18'} + hasBin: true + '@vitest/browser-preview@5.1.0': resolution: {integrity: sha512-z9SbodBSMoJtYy5VTCaSP5SSZfNYRlfIlR0P/uH1PAuhUJbstSyOYvxXCYmqG+EemIiZzd3uGUtREX5zbXLR8A==} peerDependencies: @@ -1943,6 +1951,8 @@ snapshots: dependencies: undici-types: 6.21.0 + '@ultime/checks@0.2.0': {} + '@vitest/browser-preview@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(esbuild@0.28.2)(publint@0.3.25)(tsx@4.23.15)(typescript@5.9.3)(unplugin-unused@0.6.0))(vitest@5.1.0)': dependencies: '@testing-library/dom': 10.4.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index db3559b..05fcb44 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -12,3 +12,4 @@ minimumReleaseAgeExclude: - '@voidzero-dev/vite-plus-win32-arm64-msvc@1.5.1' - '@voidzero-dev/vite-plus-win32-x64-msvc@1.5.1' - vite-plus@1.5.1 + - '@ultime/checks@0.1.1 || 0.2.0' diff --git a/rules/README.md b/rules/README.md index d997c99..980d08a 100644 --- a/rules/README.md +++ b/rules/README.md @@ -2,6 +2,7 @@ > 定位:本包开发规范的索引。只写判断、边界与反例;API 事实以 README 为准。 > 适用版本:0.1.x +> owner:维护者(repo owner)· 复核:2026-11-11 · 到期降级为参考 > 关系:入口见 [`AGENTS.md`](../AGENTS.md);怎么用见 [`README.md`](../README.md)。 ---