@wayfarer35/ccs 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,35 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { dirname, join } from 'node:path';
4
+ /**
5
+ * 版本号单一真源:运行时向上查找 package.json 读取 version。
6
+ *
7
+ * 不能用 `import '../package.json'`——tsconfig rootDir=src、include=src/**,
8
+ * package.json 在 rootDir 之外。故用 fs 向上查找,兼容:
9
+ * - 开发:dist/version.js → 向上到仓库根 package.json
10
+ * - 全局安装:<prefix>/lib/node_modules/ccs/dist/version.js → 向上到包根 package.json
11
+ *
12
+ * 带模块级缓存;找不到时兜底 '0.0.0'(绝不抛错,保证 --version 可用)。
13
+ */
14
+ let cached;
15
+ export function getVersion() {
16
+ if (cached)
17
+ return cached;
18
+ let dir = dirname(fileURLToPath(import.meta.url));
19
+ for (let i = 0; i < 10; i++) {
20
+ try {
21
+ const raw = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
22
+ const version = raw?.version;
23
+ if (typeof version === 'string') {
24
+ cached = version;
25
+ return cached;
26
+ }
27
+ }
28
+ catch { /* 文件不存在或解析失败,继续向上找 */ }
29
+ const parent = dirname(dir);
30
+ if (parent === dir)
31
+ break; // 已到文件系统根
32
+ dir = parent;
33
+ }
34
+ return '0.0.0';
35
+ }
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@wayfarer35/ccs",
3
+ "version": "0.2.2",
4
+ "description": "Claude Code Switch — 在多套供应商配置间切换并启动 Claude Code",
5
+ "type": "module",
6
+ "bin": {
7
+ "ccs": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md"
12
+ ],
13
+ "engines": {
14
+ "node": ">=20"
15
+ },
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsc --watch",
19
+ "start": "node dist/cli.js",
20
+ "prepublishOnly": "npm run build",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "coverage": "vitest run --coverage",
24
+ "release": "standard-version -- --release-as patch",
25
+ "release-major": "standard-version -- --release-as major",
26
+ "release-minor": "standard-version -- --release-as minor",
27
+ "postinstall": "node scripts/postinstall.mjs"
28
+ },
29
+ "dependencies": {
30
+ "ink": "^5.2.1",
31
+ "react": "^18.3.1"
32
+ },
33
+ "keywords": [
34
+ "claude-code",
35
+ "cli",
36
+ "config",
37
+ "provider",
38
+ "switch"
39
+ ],
40
+ "license": "MIT",
41
+ "devDependencies": {
42
+ "@types/node": "^26.0.1",
43
+ "@types/react": "^19.2.17",
44
+ "@vitest/coverage-v8": "^4.1.9",
45
+ "standard-version": "^9.5.0",
46
+ "typescript": "^6.0.3",
47
+ "vitest": "^4.1.9"
48
+ }
49
+ }