chore(repo): standardize cross-platform development

Make line endings deterministic across macOS, Windows, and Linux while preserving the native checkout format required by Windows launchers.

Pin the tested application runtime and Node type baseline, add a shared startup preflight, and keep independently published packages on their existing compatibility ranges.

Align local scripts, pull request validation, complete package builds, dependency metadata, and contributor documentation around the same Node and pnpm contract. The root test command now covers every tested workspace package while a focused Core command remains available for local iteration.
This commit is contained in:
DrSmoothl
2026-07-31 13:09:02 +08:00
parent 8dd986a565
commit 9544aa7761
33 changed files with 217 additions and 185 deletions
+8 -2
View File
@@ -2,7 +2,7 @@ root = true
[*]
charset = utf-8
end_of_line = crlf
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
@@ -11,5 +11,11 @@ trim_trailing_whitespace = true
[*.{json,yml,yaml,md}]
indent_size = 2
[*.py]
indent_size = 4
[*.bat]
end_of_line = crlf
[*.md]
trim_trailing_whitespace = false
trim_trailing_whitespace = false
+14
View File
@@ -0,0 +1,14 @@
* text=auto eol=lf
*.bat text eol=crlf
*.node binary
*.dll binary
*.so binary
*.dylib binary
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.woff2 binary
+13 -5
View File
@@ -4,9 +4,8 @@
# unnoticed — and did (protocol's oidb-service rejection path, plus an external
# contributor PR). This gates every PR on the whole suite.
#
# `pnpm -r --no-bail --if-present test` runs each package's `test` script
# (skipping packages without one); --no-bail means one failing package still
# reports the rest, and the run as a whole still fails if any package fails.
# The root validation commands are the same ones contributors run locally.
# Keep this workflow as the executable source of truth for pull requests.
name: CI
on:
@@ -33,14 +32,23 @@ jobs:
- uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Type check all packages
run: pnpm typecheck
- name: Lint managed source files
run: pnpm lint
- name: Run all package tests
run: pnpm -r --no-bail --if-present test
run: pnpm test
- name: Build release inputs
run: pnpm run build:all
# The MCP test suite regenerates the action catalog (catalog.ts + the
# catalog.json the docs site consumes). Fail if the committed snapshot
+3 -3
View File
@@ -78,7 +78,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
@@ -121,7 +121,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
@@ -145,7 +145,7 @@ jobs:
# Naming convention:
# SnowLuma-dev-<arch>.zip|tar.gz – zero-install (node bundled)
# SnowLuma-dev-<arch>-lite.zip|tar.gz – user provides Node >= 22
# SnowLuma-dev-<arch>-lite.zip|tar.gz – user provides Node 22.13+ (23.x requires 23.4+)
- name: Package (windows)
if: matrix.os == 'windows-latest'
shell: pwsh
+1 -1
View File
@@ -40,7 +40,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
+3 -3
View File
@@ -39,7 +39,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
@@ -60,7 +60,7 @@ jobs:
# Naming convention:
# SnowLuma-<tag>-<arch>.zip|tar.gz – zero-install (node bundled)
# SnowLuma-<tag>-<arch>-lite.zip|tar.gz – user provides Node >= 22
# SnowLuma-<tag>-<arch>-lite.zip|tar.gz – user provides Node 22.13+ (23.x requires 23.4+)
- name: Package (windows)
if: matrix.os == 'windows-latest'
shell: pwsh
@@ -127,7 +127,7 @@ jobs:
## 选择下载
| 平台 | 完整版(内置 Node.js,推荐) | Lite(需 Node.js 22+) |
| 平台 | 完整版(内置 Node.js,推荐) | Lite(Node.js 22.13+;23 系需 23.4+) |
| --- | --- | --- |
| Windows x64 | \`SnowLuma-${tag}-win-x64.zip\` | \`SnowLuma-${tag}-win-x64-lite.zip\` |
| Linux x64 | \`SnowLuma-${tag}-linux-x64.tar.gz\` | \`SnowLuma-${tag}-linux-x64-lite.tar.gz\` |
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
+1 -1
View File
@@ -38,7 +38,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.node-version'
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
+1
View File
@@ -0,0 +1 @@
22.13.0
+1 -10
View File
@@ -1,13 +1,4 @@
registry=https://registry.npmmirror.com/
@moonrepo:registry=https://registry.npmmirror.com/
# Mirrors for binary downloads (sharp, esbuild, swc, electron etc.)
disturl=https://npmmirror.com/dist
electron_mirror=https://npmmirror.com/mirrors/electron/
sass_binary_site=https://npmmirror.com/mirrors/node-sass/
sharp_binary_host=https://npmmirror.com/mirrors/sharp
sharp_libvips_binary_host=https://npmmirror.com/mirrors/sharp-libvips
puppeteer_download_host=https://npmmirror.com/mirrors
auto-install-peers=true
strict-peer-dependencies=false
engine-strict=true
+14 -7
View File
@@ -43,10 +43,14 @@ SnowLuma 处于开发早期,迭代速度很快,**接口与目录结构随时
### 系统要求
- **Node.js ≥ 22**(`engines` 字段强制,低版本会报错)
- **pnpm 10.28.0+**(项目通过 `packageManager` 字段锁定,建议用 `corepack enable` 安装匹配版本)
- **Node.js 22.13+(23 系需 23.4+)**(项目使用默认启用的 `node:sqlite`)
- **pnpm 10.28.0**(项目通过 `packageManager` 与 CI 统一版本)
- macOS / Linux / Windows 均可。如果要构建原生产物,需要对应平台的工具链。
如果系统提供 Corepack,可执行 `corepack enable pnpm`;没有 Corepack 时可执行
`npm install -g pnpm@10.28.0`。进入仓库后,`node --version` 与
`pnpm --version` 应满足上述版本要求,否则安装会直接失败。
### 拉代码、装依赖、跑起来
```bash
@@ -57,13 +61,13 @@ cd SnowLuma
# 2. 切到 dev 分支(所有开发都基于 dev,不是 main)
git checkout dev
# 3. 安装依赖
pnpm install
# 3. 按锁文件安装依赖
pnpm install --frozen-lockfile
# 4. 跑类型检查,确认环境 OK
pnpm typecheck
# 5. 跑测试
# 5. 跑全工作区测试
pnpm test
# 6. 启动开发模式
@@ -96,14 +100,17 @@ git checkout -b fix/onebot-mention-encoding
- **写测试**:修 bug 时优先写一个能复现该 bug 的测试,确认它会 fail,再让它 pass。新增功能至少补上 happy path 的测试。
- **不要添加无意义的注释**:标识符已经说清楚的事情不需要再写一遍。注释应当解释"为什么",而不是"做了什么"。
提交之前请本地跑一遍:
提交之前请运行与 PR CI 相同的验证入口:
```bash
pnpm typecheck
pnpm lint
pnpm test
pnpm run build:all
```
CI 上跑的是同一套检查,本地通过几乎能保证 CI 通过。
`pnpm test` 会运行所有声明了测试脚本的工作区包;只验证 Core 时可使用
`pnpm test:core`。CI 会重新执行上述完整检查。
### 3. 提交信息
+5 -3
View File
@@ -51,7 +51,7 @@ SnowLuma 将会话接入、协议解析、身份映射、OneBot 转换和网络
前往 [Releases](https://github.com/SnowLuma/SnowLuma/releases) 下载与你的平台匹配的版本:
| 平台 | 完整版(内置 Node.js,推荐) | Lite(需要 Node.js 22+) |
| 平台 | 完整版(内置 Node.js,推荐) | Lite(Node.js 22.13+;23 系需 23.4+) |
| --- | --- | --- |
| Windows x64 | `SnowLuma-vX.Y.Z-win-x64.zip` | `SnowLuma-vX.Y.Z-win-x64-lite.zip` |
| Linux x64 | `SnowLuma-vX.Y.Z-linux-x64.tar.gz` | `SnowLuma-vX.Y.Z-linux-x64-lite.tar.gz` |
@@ -117,15 +117,17 @@ WebUI 的“系统设置 → 存储管理”可查看受管数据占用、调整
## 开发与贡献
本地开发需要 Node.js 22+ 与项目锁定版本的 pnpm。所有日常开发基于 `dev` 分支:
本地开发需要 Node.js 22.13+(23 系需 23.4+)与项目锁定的 pnpm 10.28.0。所有日常开发基于 `dev` 分支:
```bash
git clone https://github.com/SnowLuma/SnowLuma.git
cd SnowLuma
git checkout dev
pnpm install
pnpm install --frozen-lockfile
pnpm typecheck
pnpm lint
pnpm test
pnpm run build:all
```
- 先读 [`CONTEXT.md`](CONTEXT.md) 了解模块边界与项目词汇。
+3
View File
@@ -14,9 +14,12 @@ export default defineConfig([
'**/coverage/**',
'**/.turbo/**',
'**/.vite/**',
'.claude/**',
'dev/**',
'**/*.tsbuildinfo',
'**/test/fixtures/**',
'packages/runtime/native/**',
'packages/mcp/src/generated/**',
]),
{
files: ['**/*.{js,mjs,cjs,ts,tsx}'],
+6 -7
View File
@@ -10,14 +10,15 @@
"build:sdk": "pnpm --filter @snowluma/sdk build",
"build:webui": "pnpm --filter webui build",
"build:mcp": "pnpm --filter @snowluma/mcp build",
"build:all": "pnpm --filter @snowluma/core build:all && pnpm --filter @snowluma/sdk build && pnpm --filter @snowluma/mcp build && pnpm --filter webui build",
"build:all": "pnpm --filter @snowluma/core build:all && pnpm --filter @snowluma/sdk build && pnpm --filter @snowluma/mcp build && pnpm --filter @snowluma/ui build && pnpm --filter webui build",
"dev": "pnpm --filter @snowluma/core dev",
"dev:mode": "cd dist && cross-env SNOWLUMA_DEV_MODE=1 SNOWLUMA_DEV_WEBUI=1 node index.mjs",
"dev:web": "pnpm --filter webui dev",
"test": "pnpm --filter @snowluma/core test",
"test": "pnpm -r --no-bail --if-present test",
"test:core": "pnpm --filter @snowluma/core test",
"test:watch": "pnpm --filter @snowluma/core test:watch",
"test:common": "pnpm --filter @snowluma/common test",
"test:all": "pnpm -r --if-present test",
"test:all": "pnpm test",
"test:native": "pnpm -r --if-present test:native",
"coverage": "pnpm --filter @snowluma/common test -- --coverage",
"typecheck": "pnpm -r --if-present typecheck",
@@ -46,9 +47,6 @@
"eslint-plugin-react-hooks>eslint": "10"
}
},
"onlyBuiltDependencies": [
"better-sqlite3"
],
"overrides": {
"esbuild@<0.28.1": "^0.28.1",
"@babel/core@<7.29.6": "^7.29.6"
@@ -56,6 +54,7 @@
},
"packageManager": "pnpm@10.28.0",
"engines": {
"node": ">=22"
"node": "^22.13.0 || >=23.4.0",
"pnpm": "10.28.0"
}
}
+1 -1
View File
@@ -53,7 +53,7 @@
"@snowluma/common": "workspace:*"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "^4.1.4"
+1 -1
View File
@@ -70,7 +70,7 @@
"test": "vitest run"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vitest": "^4.1.4"
}
+1 -1
View File
@@ -52,7 +52,7 @@
"devDependencies": {
"@hono/node-server": "^1.19.14",
"@rollup/plugin-node-resolve": "^16.0.3",
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"cross-env": "^10.1.0",
"hono": "^4.12.25",
"tsx": "^4.21.0",
@@ -0,0 +1,28 @@
import { createRequire } from 'node:module';
import { describe, expect, it } from 'vitest';
const require = createRequire(import.meta.url);
const {
SUPPORTED_NODE_RANGE,
isSupportedNodeVersion,
} = require('../../runtime/check-node-version.cjs') as {
SUPPORTED_NODE_RANGE: string;
isSupportedNodeVersion: (version: string) => boolean;
};
describe('runtime Node.js preflight', () => {
it('accepts the documented minimum and newer versions', () => {
expect(SUPPORTED_NODE_RANGE).toBe('^22.13.0 || >=23.4.0');
expect(isSupportedNodeVersion('22.13.0')).toBe(true);
expect(isSupportedNodeVersion('22.13.1')).toBe(true);
expect(isSupportedNodeVersion('23.4.0')).toBe(true);
expect(isSupportedNodeVersion('24.0.0')).toBe(true);
});
it('rejects older and malformed versions', () => {
expect(isSupportedNodeVersion('22.12.99')).toBe(false);
expect(isSupportedNodeVersion('23.3.99')).toBe(false);
expect(isSupportedNodeVersion('21.99.99')).toBe(false);
expect(isSupportedNodeVersion('not-a-version')).toBe(false);
});
});
+1 -1
View File
@@ -43,7 +43,7 @@ const [targetPlatform, targetArch] = targetTriple.split('-');
// Runtime scaffolding files copied into dist/. Windows and Linux use different
// launchers, while both targets ship their matching QQ integration binaries.
const runtimeDistFiles = ['package.json',
const runtimeDistFiles = ['package.json', 'check-node-version.cjs',
targetPlatform === 'win32' ? 'launcher.bat' : 'launcher.sh',
];
+1 -1
View File
@@ -45,7 +45,7 @@
"devDependencies": {
"@snowluma/onebot": "workspace:*",
"@snowluma/proton": "workspace:*",
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "^4.1.4"
+1 -1
View File
@@ -115,7 +115,7 @@
"@snowluma/websocket": "workspace:*"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "^4.1.4"
+1 -1
View File
@@ -72,7 +72,7 @@
"@snowluma/proton": "workspace:*"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:"
}
}
+1 -1
View File
@@ -101,7 +101,7 @@
"@snowluma/proton": "workspace:*"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "^4.1.4"
+1 -1
View File
@@ -36,7 +36,7 @@
}
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"tsup": "^8.5.0",
"vite": "catalog:",
"vitest": "^4.1.4"
+27
View File
@@ -0,0 +1,27 @@
'use strict';
const SUPPORTED_NODE_RANGE = '^22.13.0 || >=23.4.0';
function parseNodeVersion(version) {
const match = /^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(version);
return match ? match.slice(1, 4).map(Number) : null;
}
function isSupportedNodeVersion(version) {
const actual = parseNodeVersion(version);
if (!actual) return false;
const [major, minor] = actual;
if (major === 22) return minor >= 13;
if (major === 23) return minor >= 4;
return major > 23;
}
if (require.main === module && !isSupportedNodeVersion(process.versions.node)) {
console.error(
`error: SnowLuma requires Node.js ${SUPPORTED_NODE_RANGE}; found ${process.versions.node}.`,
);
process.exitCode = 1;
}
module.exports = { SUPPORTED_NODE_RANGE, isSupportedNodeVersion };
+6 -1
View File
@@ -1,2 +1,7 @@
node .\check-node-version.cjs
if errorlevel 1 (
pause
exit /b 1
)
node ./index.mjs
pause
pause
+2 -1
View File
@@ -8,9 +8,10 @@ if [[ -x "./node" ]]; then
else
NODE_BIN="$(command -v node || true)"
if [[ -z "$NODE_BIN" ]]; then
echo "error: 'node' not found on PATH and no bundled ./node; install Node.js >= 22." >&2
echo "error: 'node' not found on PATH and no bundled ./node; install Node.js 22.13+ (Node 23 requires 23.4+)." >&2
exit 127
fi
fi
"$NODE_BIN" ./check-node-version.cjs
exec "$NODE_BIN" ./index.mjs "$@"
+1 -1
View File
@@ -88,7 +88,7 @@
"node": ">=22"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:",
"vitest": "^4.1.4"
}
+1 -1
View File
@@ -17,7 +17,7 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@types/node": "^24.12.2",
"@types/node": "catalog:",
"typescript": "catalog:"
}
}
+1 -1
View File
@@ -37,7 +37,7 @@
"devDependencies": {
"@eslint/js": "^10.0.1",
"@tailwindcss/vite": "^4.2.2",
"@types/node": "^25.6.0",
"@types/node": "catalog:",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
+66 -127
View File
@@ -6,6 +6,9 @@ settings:
catalogs:
default:
'@types/node':
specifier: 22.13.0
version: 22.13.0
typescript:
specifier: ~6.0.2
version: 6.0.2
@@ -62,29 +65,29 @@ importers:
version: link:../common
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/common:
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/core:
dependencies:
@@ -117,8 +120,8 @@ importers:
specifier: ^16.0.3
version: 16.0.3(rollup@4.60.4)
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
cross-env:
specifier: ^10.1.0
version: 10.1.0
@@ -133,13 +136,13 @@ importers:
version: 6.0.2
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vite-plugin-cp:
specifier: ^6.0.3
version: 6.0.3
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/mcp:
dependencies:
@@ -154,17 +157,17 @@ importers:
specifier: workspace:*
version: link:../proton
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/onebot:
dependencies:
@@ -188,17 +191,17 @@ importers:
version: link:../websocket
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/proto-defs:
dependencies:
@@ -207,8 +210,8 @@ importers:
version: link:../proton
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
@@ -226,17 +229,17 @@ importers:
version: link:../proton
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/proton:
dependencies:
@@ -245,31 +248,31 @@ importers:
version: 6.0.2
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
tsup:
specifier: ^8.5.0
version: 8.5.1(jiti@2.6.1)(postcss@8.5.15)(tsx@4.21.0)(typescript@6.0.2)
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/runtime: {}
packages/sdk:
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages/ui:
dependencies:
@@ -347,8 +350,8 @@ importers:
packages/websocket:
devDependencies:
'@types/node':
specifier: ^24.12.2
version: 24.12.2
specifier: 'catalog:'
version: 22.13.0
typescript:
specifier: 'catalog:'
version: 6.0.2
@@ -421,10 +424,10 @@ importers:
version: 10.0.1(eslint@10.2.0(jiti@2.6.1))
'@tailwindcss/vite':
specifier: ^4.2.2
version: 4.2.2(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.2.2(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
'@types/node':
specifier: ^25.6.0
version: 25.6.0
specifier: 'catalog:'
version: 22.13.0
'@types/react':
specifier: ^19.2.14
version: 19.2.14
@@ -433,7 +436,7 @@ importers:
version: 19.2.3(@types/react@19.2.14)
'@vitejs/plugin-react':
specifier: ^6.0.1
version: 6.0.1(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 6.0.1(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
eslint:
specifier: ^10.2.0
version: 10.2.0(jiti@2.6.1)
@@ -460,10 +463,10 @@ importers:
version: 8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)
vite:
specifier: 'catalog:'
version: 8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
version: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vitest:
specifier: ^4.1.4
version: 4.1.4(@types/node@25.6.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
version: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
packages:
@@ -1904,11 +1907,8 @@ packages:
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@24.12.2':
resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==}
'@types/node@25.6.0':
resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==}
'@types/node@22.13.0':
resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==}
'@types/react-dom@19.2.3':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
@@ -3221,11 +3221,8 @@ packages:
ufo@1.6.4:
resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
undici-types@7.19.2:
resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
undici-types@6.20.0:
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
@@ -4533,12 +4530,12 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.2.2
'@tailwindcss/oxide-win32-x64-msvc': 4.2.2
'@tailwindcss/vite@4.2.2(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
'@tailwindcss/vite@4.2.2(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
dependencies:
'@tailwindcss/node': 4.2.2
'@tailwindcss/oxide': 4.2.2
tailwindcss: 4.2.2
vite: 8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vite: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
'@tanstack/history@1.161.6': {}
@@ -4598,23 +4595,19 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 25.6.0
'@types/node': 22.13.0
'@types/json-schema@7.0.15': {}
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 25.6.0
'@types/node': 22.13.0
'@types/ms@2.1.0': {}
'@types/node@24.12.2':
'@types/node@22.13.0':
dependencies:
undici-types: 7.16.0
'@types/node@25.6.0':
dependencies:
undici-types: 7.19.2
undici-types: 6.20.0
'@types/react-dom@19.2.3(@types/react@19.2.14)':
dependencies:
@@ -4717,10 +4710,10 @@ snapshots:
'@typescript-eslint/types': 8.58.2
eslint-visitor-keys: 5.0.1
'@vitejs/plugin-react@6.0.1(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
'@vitejs/plugin-react@6.0.1(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.7
vite: 8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vite: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
'@vitest/coverage-istanbul@4.1.4(vitest@4.1.4)':
dependencies:
@@ -4734,7 +4727,7 @@ snapshots:
magicast: 0.5.3
obug: 2.1.1
tinyrainbow: 3.1.0
vitest: 4.1.4(@types/node@25.6.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
vitest: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
transitivePeerDependencies:
- supports-color
@@ -4750,7 +4743,7 @@ snapshots:
obug: 2.1.1
std-env: 4.1.0
tinyrainbow: 3.1.0
vitest: 4.1.4(@types/node@25.6.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
vitest: 4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
'@vitest/expect@4.1.4':
dependencies:
@@ -4761,21 +4754,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
'@vitest/mocker@4.1.4(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
'@vitest/mocker@4.1.4(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
dependencies:
'@vitest/spy': 4.1.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
'@vitest/mocker@4.1.4(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))':
dependencies:
'@vitest/spy': 4.1.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vite: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
'@vitest/pretty-format@4.1.4':
dependencies:
@@ -5972,9 +5957,7 @@ snapshots:
ufo@1.6.4: {}
undici-types@7.16.0: {}
undici-types@7.19.2: {}
undici-types@6.20.0: {}
universalify@2.0.1: {}
@@ -6020,7 +6003,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0):
vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -6028,32 +6011,17 @@ snapshots:
rolldown: 1.1.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 24.12.2
'@types/node': 22.13.0
esbuild: 0.28.1
fsevents: 2.3.3
jiti: 2.6.1
sass: 1.99.0
tsx: 4.21.0
vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
postcss: 8.5.15
rolldown: 1.1.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 25.6.0
esbuild: 0.28.1
fsevents: 2.3.3
jiti: 2.6.1
sass: 1.99.0
tsx: 4.21.0
vitest@4.1.4(@types/node@24.12.2)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)):
vitest@4.1.4(@types/node@22.13.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)):
dependencies:
'@vitest/expect': 4.1.4
'@vitest/mocker': 4.1.4(vite@8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
'@vitest/mocker': 4.1.4(vite@8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
'@vitest/pretty-format': 4.1.4
'@vitest/runner': 4.1.4
'@vitest/snapshot': 4.1.4
@@ -6070,39 +6038,10 @@ snapshots:
tinyexec: 1.1.1
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.1.0(@types/node@24.12.2)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
vite: 8.1.0(@types/node@22.13.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 24.12.2
'@vitest/coverage-istanbul': 4.1.4(vitest@4.1.4)
'@vitest/coverage-v8': 4.1.4(vitest@4.1.4)
transitivePeerDependencies:
- msw
vitest@4.1.4(@types/node@25.6.0)(@vitest/coverage-istanbul@4.1.4)(@vitest/coverage-v8@4.1.4)(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)):
dependencies:
'@vitest/expect': 4.1.4
'@vitest/mocker': 4.1.4(vite@8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0))
'@vitest/pretty-format': 4.1.4
'@vitest/runner': 4.1.4
'@vitest/snapshot': 4.1.4
'@vitest/spy': 4.1.4
'@vitest/utils': 4.1.4
es-module-lexer: 2.0.0
expect-type: 1.3.0
magic-string: 0.30.21
obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.4
std-env: 4.1.0
tinybench: 2.9.0
tinyexec: 1.1.1
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.1.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(sass@1.99.0)(tsx@4.21.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.6.0
'@types/node': 22.13.0
'@vitest/coverage-istanbul': 4.1.4(vitest@4.1.4)
'@vitest/coverage-v8': 4.1.4(vitest@4.1.4)
transitivePeerDependencies:
+1
View File
@@ -2,6 +2,7 @@ packages:
- 'packages/*'
catalog:
'@types/node': 22.13.0
vite: ^8.0.16
typescript: ~6.0.2