From 86c704a2539f639018e747964abdfddc38b2b59b Mon Sep 17 00:00:00 2001 From: UltimeLam <35449771+UltimeLam@users.noreply.github.com> Date: Wed, 11 Nov 2026 00:44:02 +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.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 出口类型改由 dist/index.d.ts 提供,files 移除 src - 拆出 preview-types.ts 承载 PreviewModel 类型,消除 definition 与 preview 的循环依赖 - 接入 publint / attw / unused 与 size-limit 只报告,CI 在 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 | 3 +- package.json | 23 +- pnpm-lock.yaml | 573 +++++++++++++++++++++++++++++-- rules/03-testing.md | 1 - rules/04-release.md | 2 +- src/definition.ts | 2 +- src/preview-types.ts | 19 + src/preview.ts | 15 +- vite.config.ts | 29 +- 17 files changed, 659 insertions(+), 76 deletions(-) create mode 100644 .node-version create mode 100755 .vite-hooks/pre-commit create mode 100644 src/preview-types.ts diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 89f5461..5d0167f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -9,7 +9,11 @@ - [ ] 没有新增第二份正文、重复入口或第二套默认值 - [ ] 协议 / 导出 / 序列化变更已有测试与影响说明 - [ ] 没有引入领域包依赖或 UI / IO 逻辑 -- [ ] 已跑 `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 a421d2e..c34f15c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -38,7 +38,6 @@ ```bash pnpm check pnpm test -pnpm typecheck ``` - 改协议:同步 README、`SKILLS.md`、受影响的领域包与版本戳; diff --git a/CHANGELOG.md b/CHANGELOG.md index 04bba54..f0b1db3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.2.1 - 2026-11-10 + +- 构建改用 `vp pack`,产物同时生成 `dist/index.js` 与 `dist/index.d.ts`。 +- `exports.types` 指向 `dist/index.d.ts`,包体不再包含 `src/`;安装后类型解析不依赖源码。 +- 无运行时 API 变化。 + ## 0.2.0 - 2026-11-10 - **行为变更**:字段范围分两层——`min` / `max` 是合法域,越界给 `error` 并阻断导出(API 侧防乱传);新增 `suggested` 建议区间,越界只给 `warn`。类型 / 枚举 / 缺失仍是 `error`。 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 250d313..6ba6806 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`、`build.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 37497df..9d33643 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ pnpm add @ultime/studio ``` -- 运行环境 Node >= 22.18,或任何支持 ESM 的打包器(Vite / esbuild 等);包发的是编译后的 ESM(`dist/`),类型来自 `src/*.ts`。 +- 运行环境 Node >= 22.18,或任何支持 ESM 的打包器(Vite / esbuild 等);包发的是编译后的 ESM(`dist/`),类型来自 `dist/*.d.ts`。 - 本包**不 import** 任何领域包;领域定义放在各包的 `/studio` 子入口,本包只认通用协议。 ## 入口 @@ -119,7 +119,6 @@ tests/ ```bash pnpm test -pnpm typecheck ``` ## 边界 diff --git a/package.json b/package.json index 9ff1713..f273d08 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ultime/studio", - "version": "0.2.0", + "version": "0.2.1", "description": "Ultime · studio:配置器无头运行时(定义 / 状态 / 规范化 / 诊断 / 预览模型 / 导出清单),纯 TS、零依赖、不碰 DOM 与文件系统", "keywords": [ "configuration", @@ -23,7 +23,6 @@ }, "files": [ "dist", - "src", "README.md", "llms.txt", "SKILLS.md", @@ -34,7 +33,7 @@ "type": "module", "exports": { ".": { - "types": "./src/index.ts", + "types": "./dist/index.d.ts", "import": "./dist/index.js" } }, @@ -42,17 +41,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", + "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/studio", + "path": "dist/index.js" + } + ], "engines": { "node": ">=22.18" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2777240..2ed6e4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,18 +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 + 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)(rolldown@1.3.1) vite-plus: specifier: 1.5.1 - version: 1.5.1(@types/node@22.20.5)(@vitest/ui@5.1.0)(typescript@5.9.3) + version: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(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'} @@ -193,6 +215,24 @@ 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==} + + '@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'} @@ -203,6 +243,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} @@ -491,6 +541,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'} @@ -501,6 +676,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==} @@ -763,6 +941,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==} @@ -777,9 +958,17 @@ 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==} + 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==} @@ -807,6 +996,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==} @@ -884,6 +1076,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 @@ -891,6 +1091,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'} @@ -900,6 +1104,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'} @@ -937,6 +1144,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==} @@ -959,13 +1169,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'} @@ -997,6 +1231,14 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tslib@2.9.1: + resolution: {integrity: sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==} + + 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'} @@ -1005,6 +1247,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} @@ -1062,6 +1348,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'} @@ -1089,6 +1378,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 @@ -1101,6 +1403,34 @@ 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 + + '@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': {} @@ -1110,6 +1440,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': {} @@ -1250,6 +1591,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 @@ -1265,6 +1679,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': @@ -1280,29 +1699,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)(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)(publint@0.3.25)(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)(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)(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)(publint@0.3.25)(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)(publint@0.3.25)(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)(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)(publint@0.3.25)(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)(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)(publint@0.3.25)(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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0)) ws: 8.22.1 transitivePeerDependencies: - bufferutil @@ -1310,14 +1729,14 @@ snapshots: - utf-8-validate - vite - '@vitest/mocker@5.1.0(@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(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)(publint@0.3.25)(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)(typescript@5.9.3)' + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0)' '@vitest/pretty-format@5.1.0': dependencies: @@ -1340,7 +1759,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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0)) '@vitest/utils@5.1.0': dependencies: @@ -1348,7 +1767,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)(typescript@5.9.3)': + '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0)': dependencies: '@oxc-project/runtime': 0.157.0 '@oxc-project/types': 0.157.0 @@ -1356,6 +1775,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 @@ -1366,7 +1786,9 @@ snapshots: '@voidzero-dev/vite-plus-win32-arm64-msvc': 1.5.1 '@voidzero-dev/vite-plus-win32-x64-msvc': 1.5.1 fsevents: 2.3.3 + publint: 0.3.25 typescript: 5.9.3 + unplugin-unused: 0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1) '@voidzero-dev/vite-plus-darwin-arm64@1.5.1': optional: true @@ -1442,6 +1864,8 @@ snapshots: chai@6.3.0: {} + cjs-module-lexer@1.4.3: {} + convert-source-map@2.0.0: {} dequal@2.0.3: {} @@ -1450,8 +1874,12 @@ snapshots: dom-accessibility-api@0.5.16: {} + empathic@2.1.0: {} + es-module-lexer@2.3.2: {} + escape-string-regexp@5.0.0: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.10 @@ -1469,6 +1897,8 @@ snapshots: fsevents@2.3.3: optional: true + js-tokens@10.0.0: {} + js-tokens@4.0.0: {} lightningcss-android-arm64@1.33.0: @@ -1520,19 +1950,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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1))): dependencies: tinypool: 2.2.0 optionalDependencies: @@ -1555,7 +1995,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)(typescript@5.9.3) + vite-plus: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1)) oxlint-tsgolint@7.0.2005: optionalDependencies: @@ -1566,7 +2006,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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1))): optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.91.0 '@oxlint/binding-android-arm64': 1.91.0 @@ -1588,7 +2028,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)(typescript@5.9.3) + vite-plus: 1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(@vitest/ui@5.1.0)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1)) + + package-manager-detector@1.9.0: {} pathe@2.0.3: {} @@ -1610,14 +2052,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: {} @@ -1637,27 +2119,62 @@ snapshots: totalist@3.0.1: {} + tslib@2.9.1: + 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)(typescript@5.9.3): + unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0))(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0))(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: + rolldown: 1.3.1 + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(publint@0.3.25)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(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)(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)(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)(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)(publint@0.3.25)(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)(publint@0.3.25)(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)(publint@0.3.25)(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)(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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0(@voidzero-dev/vite-plus-core@1.5.1)(rolldown@1.3.1))) oxlint-tsgolint: 7.0.2005 - vite: '@voidzero-dev/vite-plus-core@1.5.1(@types/node@22.20.5)(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)(typescript@5.9.3)) + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(publint@0.3.25)(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)(publint@0.3.25)(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 @@ -1702,10 +2219,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)(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)(publint@0.3.25)(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)(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)(publint@0.3.25)(typescript@5.9.3)(unplugin-unused@0.6.0)) chai: 6.3.0 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -1716,15 +2233,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)(typescript@5.9.3)' + vite: '@voidzero-dev/vite-plus-core@1.5.1(@arethetypeswrong/core@0.18.5)(@types/node@22.20.5)(publint@0.3.25)(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)(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)(publint@0.3.25)(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 4da0aa2..3c555b2 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 8bebc2a..7b213bf 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「版本与兼容」 diff --git a/src/definition.ts b/src/definition.ts index 99ef9de..ec095ae 100644 --- a/src/definition.ts +++ b/src/definition.ts @@ -9,7 +9,7 @@ */ import type { Awaitable, Diagnostic, ExportContext, ExportResult, ValidationContext } from './types.ts' -import type { PreviewModel } from './preview.ts' +import type { PreviewModel } from './preview-types.ts' export type FieldType = 'hue' | 'slider' | 'number' | 'select' | 'text' | 'color' | 'switch' | 'multi-select' | 'custom' diff --git a/src/preview-types.ts b/src/preview-types.ts new file mode 100644 index 0000000..e08449b --- /dev/null +++ b/src/preview-types.ts @@ -0,0 +1,19 @@ +/** + * preview-types.ts — 预览模型类型 + * --------------------------------------------------------------------------- + * 单独放类型,避免 definition ↔ preview 的类型循环依赖。 + */ + +export interface PreviewScenario { + id: string + label: string + description?: string +} + +export interface PreviewModel { + /** 与导出一份源的整段 CSS */ + css?: string + /** 兼容路径:只吃变量的宿主 */ + vars?: Record + scenarios?: readonly PreviewScenario[] +} diff --git a/src/preview.ts b/src/preview.ts index 24611af..c4aea22 100644 --- a/src/preview.ts +++ b/src/preview.ts @@ -6,20 +6,9 @@ */ import type { ConfiguratorDefinition } from './definition.ts' +import type { PreviewModel } from './preview-types.ts' -export interface PreviewScenario { - id: string - label: string - description?: string -} - -export interface PreviewModel { - /** 与导出一份源的整段 CSS */ - css?: string - /** 兼容路径:只吃变量的宿主 */ - vars?: Record - scenarios?: readonly PreviewScenario[] -} +export type { PreviewModel, PreviewScenario } from './preview-types.ts' export function previewConfig( definition: ConfiguratorDefinition, 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 64bd5cd840c89f8e35fd55b1680e7a1f243027a4 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 7b213bf..e42213a 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「版本与兼容」 - [ ] 包级 AI 文档与代码一致:`rules/` / `llms.txt` / `SKILLS.md` / `AGENTS.md` 的版本戳与能力表已更新 From 4ed4be3e4e291e99a0069d0f7ea0bf722617b701 Mon Sep 17 00:00:00 2001 From: UltimeLam <35449771+UltimeLam@users.noreply.github.com> Date: Wed, 11 Nov 2026 02:59:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20PreviewModel=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=AF=8A=E6=96=AD=EF=BC=8C=E6=8E=A5=E5=85=A5=20checks=200.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 预览失败时由上游模型携带 diagnostics;发布 0.2.1。 --- CHANGELOG.md | 4 ++-- checks.config.mjs | 19 +++++++++++++++++++ package.json | 5 ++++- pnpm-lock.yaml | 10 ++++++++++ pnpm-workspace.yaml | 1 + rules/README.md | 1 + src/preview-types.ts | 4 ++++ 7 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 checks.config.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index f0b1db3..450c50c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ # Changelog -## 0.2.1 - 2026-11-10 +## 0.2.1 - 2026-11-11 - 构建改用 `vp pack`,产物同时生成 `dist/index.js` 与 `dist/index.d.ts`。 - `exports.types` 指向 `dist/index.d.ts`,包体不再包含 `src/`;安装后类型解析不依赖源码。 -- 无运行时 API 变化。 +- `PreviewModel` 新增可选 `diagnostics`,用于承载预览生成失败的原因。 ## 0.2.0 - 2026-11-10 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 f273d08..fc16fa1 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,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", @@ -52,6 +54,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 2ed6e4d..ded1342 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 @@ -694,6 +697,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: @@ -1699,6 +1707,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)(publint@0.3.25)(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 845b14b..3341914 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,3 +10,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 3c7b369..1c9de2d 100644 --- a/rules/README.md +++ b/rules/README.md @@ -2,6 +2,7 @@ > 定位:本包开发规范的索引。只写判断、边界与反例;协议与 API 以 README 和 `src/definition.ts` 为准。 > 适用版本:0.2.x +> owner:维护者(repo owner)· 复核:2026-11-11 · 到期降级为参考 > 关系:入口见 [`AGENTS.md`](../AGENTS.md);怎么用见 [`README.md`](../README.md)。 --- diff --git a/src/preview-types.ts b/src/preview-types.ts index e08449b..8ee56cf 100644 --- a/src/preview-types.ts +++ b/src/preview-types.ts @@ -4,6 +4,8 @@ * 单独放类型,避免 definition ↔ preview 的类型循环依赖。 */ +import type { Diagnostic } from './types.ts' + export interface PreviewScenario { id: string label: string @@ -16,4 +18,6 @@ export interface PreviewModel { /** 兼容路径:只吃变量的宿主 */ vars?: Record scenarios?: readonly PreviewScenario[] + /** 预览生成失败时的诊断;成功时为空 */ + diagnostics?: readonly Diagnostic[] }