tokens-cli 3.0.1

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.
package/bin.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ await import("./dist/index.js");
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync, execSync } from "node:child_process";
3
+ import { existsSync, realpathSync } from "node:fs";
4
+ import { resolve, join, basename } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ const binaryName = process.platform === "win32" ? "tokens.exe" : "tokens";
7
+ const currentDir = fileURLToPath(new URL(".", import.meta.url));
8
+ const dirName = basename(currentDir);
9
+ // The packages are unscoped, so the platform binaries are siblings of the
10
+ // dispatcher under the same node_modules (no @scope/ directory level).
11
+ // In npm install: currentDir = .../node_modules/tokens-cli/dist/
12
+ // cliDir = .../node_modules/tokens-cli/
13
+ // parentDir = .../node_modules/ (siblings: tokens-cli-<platform>/)
14
+ // In monorepo dev (dist): currentDir = .../packages/cli/dist/
15
+ // cliDir = .../packages/cli/
16
+ // parentDir = .../packages/
17
+ // In monorepo dev (src): currentDir = .../packages/cli/src/
18
+ // cliDir = .../packages/cli/
19
+ // parentDir = .../packages/
20
+ const isSubDir = dirName === "dist" || dirName === "src";
21
+ const cliDir = isSubDir ? resolve(currentDir, "..") : currentDir;
22
+ const parentDir = resolve(cliDir, "..");
23
+ const workspaceRoot = resolve(parentDir, "..");
24
+ function detectLibcKind() {
25
+ const report = process.report?.getReport?.();
26
+ if (report?.header?.glibcVersionRuntime) {
27
+ return "gnu";
28
+ }
29
+ if (Array.isArray(report?.sharedObjects) &&
30
+ report.sharedObjects.some((obj) => obj.toLowerCase().includes("musl"))) {
31
+ return "musl";
32
+ }
33
+ try {
34
+ const output = execSync("ldd --version", {
35
+ encoding: "utf-8",
36
+ stdio: ["ignore", "pipe", "pipe"],
37
+ }).toLowerCase();
38
+ return output.includes("musl") ? "musl" : "gnu";
39
+ }
40
+ catch {
41
+ return "gnu";
42
+ }
43
+ }
44
+ function resolveTargetPackageName() {
45
+ const arch = process.arch;
46
+ if (process.platform === "darwin") {
47
+ if (arch === "arm64")
48
+ return "cli-darwin-arm64";
49
+ if (arch === "x64")
50
+ return "cli-darwin-x64";
51
+ return null;
52
+ }
53
+ if (process.platform === "linux") {
54
+ const libc = detectLibcKind();
55
+ if (arch === "arm64") {
56
+ return libc === "musl" ? "cli-linux-arm64-musl" : "cli-linux-arm64-gnu";
57
+ }
58
+ if (arch === "x64") {
59
+ return libc === "musl" ? "cli-linux-x64-musl" : "cli-linux-x64-gnu";
60
+ }
61
+ return null;
62
+ }
63
+ if (process.platform === "win32") {
64
+ if (arch === "arm64")
65
+ return "cli-win32-arm64-msvc";
66
+ if (arch === "x64")
67
+ return "cli-win32-x64-msvc";
68
+ return null;
69
+ }
70
+ return null;
71
+ }
72
+ function resolveRustTargetTriple() {
73
+ const arch = process.arch;
74
+ if (process.platform === "darwin") {
75
+ if (arch === "arm64")
76
+ return "aarch64-apple-darwin";
77
+ if (arch === "x64")
78
+ return "x86_64-apple-darwin";
79
+ return null;
80
+ }
81
+ if (process.platform === "linux") {
82
+ const libc = detectLibcKind();
83
+ if (arch === "arm64") {
84
+ return libc === "musl"
85
+ ? "aarch64-unknown-linux-musl"
86
+ : "aarch64-unknown-linux-gnu";
87
+ }
88
+ if (arch === "x64") {
89
+ return libc === "musl"
90
+ ? "x86_64-unknown-linux-musl"
91
+ : "x86_64-unknown-linux-gnu";
92
+ }
93
+ return null;
94
+ }
95
+ if (process.platform === "win32") {
96
+ if (arch === "arm64")
97
+ return "aarch64-pc-windows-msvc";
98
+ if (arch === "x64")
99
+ return "x86_64-pc-windows-msvc";
100
+ return null;
101
+ }
102
+ return null;
103
+ }
104
+ // e.g. "cli-darwin-arm64" — the monorepo directory name and the suffix of the
105
+ // unscoped npm package name `tokens-cli-darwin-arm64`.
106
+ const targetDir = resolveTargetPackageName();
107
+ const searchPaths = [];
108
+ if (targetDir) {
109
+ const targetPackage = `tokens-${targetDir}`;
110
+ searchPaths.push(
111
+ // npm/bun install: sibling package (node_modules/tokens-cli-<platform>/bin/...)
112
+ join(parentDir, targetPackage, "bin", binaryName),
113
+ // Nested node_modules: non-hoisted / pnpm (node_modules/tokens-cli/node_modules/tokens-cli-<platform>/bin/...)
114
+ join(cliDir, "node_modules", targetPackage, "bin", binaryName),
115
+ // Hoisted to the workspace-root node_modules
116
+ join(workspaceRoot, "node_modules", targetPackage, "bin", binaryName),
117
+ // Monorepo development (packages/cli-<platform>/bin/...)
118
+ join(workspaceRoot, "packages", targetDir, "bin", binaryName));
119
+ }
120
+ const rustTargetTriple = resolveRustTargetTriple();
121
+ if (rustTargetTriple) {
122
+ searchPaths.push(join(workspaceRoot, "target", rustTargetTriple, "release", binaryName));
123
+ }
124
+ searchPaths.push(join(workspaceRoot, "target", "release", binaryName), join(cliDir, "bin", binaryName));
125
+ function tryRealpath(p) {
126
+ try {
127
+ return realpathSync(p);
128
+ }
129
+ catch {
130
+ return p;
131
+ }
132
+ }
133
+ // Paths that would re-enter this wrapper if executed - using any of these as
134
+ // the "real" binary causes infinite recursion (a fork bomb). We compare by
135
+ // realpath so symlinks (e.g. npm/bun bin shims) are dereferenced.
136
+ const selfPaths = new Set([
137
+ tryRealpath(fileURLToPath(import.meta.url)),
138
+ tryRealpath(join(cliDir, "bin.js")),
139
+ ]);
140
+ if (process.argv[1]) {
141
+ selfPaths.add(tryRealpath(process.argv[1]));
142
+ }
143
+ function isSelfReference(p) {
144
+ return selfPaths.has(tryRealpath(p));
145
+ }
146
+ let binary = searchPaths.find((p) => existsSync(p) && !isSelfReference(p));
147
+ if (!binary) {
148
+ console.error("Error: tokens binary not found");
149
+ console.error("Build from source: cargo build --release -p tokscale-cli");
150
+ if (targetDir) {
151
+ console.error(`Expected optional package: tokens-${targetDir}`);
152
+ }
153
+ process.exit(1);
154
+ }
155
+ const result = spawnSync(binary, process.argv.slice(2), { stdio: "inherit" });
156
+ process.exit(result.status ?? 1);
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE1E,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrC,0EAA0E;AAC1E,uEAAuE;AACvE,iEAAiE;AACjE,0CAA0C;AAC1C,uEAAuE;AACvE,8DAA8D;AAC9D,+BAA+B;AAC/B,8BAA8B;AAC9B,4DAA4D;AAC5D,+BAA+B;AAC/B,8BAA8B;AAC9B,MAAM,QAAQ,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,CAAC;AACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACjE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAI/C,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAK7B,CAAC;IAEd,IAAI,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE;YACvC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,kBAAkB,CAAC;QAChD,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,gBAAgB,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC1E,CAAC;QACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,sBAAsB,CAAC;QACpD,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,oBAAoB,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,sBAAsB,CAAC;QACpD,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,qBAAqB,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,2BAA2B,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,0BAA0B,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,yBAAyB,CAAC;QACvD,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,wBAAwB,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;AAC7C,MAAM,WAAW,GAAa,EAAE,CAAC;AAEjC,IAAI,SAAS,EAAE,CAAC;IACd,MAAM,aAAa,GAAG,UAAU,SAAS,EAAE,CAAC;IAC5C,WAAW,CAAC,IAAI;IACd,gFAAgF;IAChF,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;IACjD,+GAA+G;IAC/G,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;IAC9D,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;IACrE,yDAAyD;IACzD,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;AACnD,IAAI,gBAAgB,EAAE,CAAC;IACrB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,WAAW,CAAC,IAAI,CACd,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EACpD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAChC,CAAC;AAEF,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS;IAChC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACpC,CAAC,CAAC;AACH,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3E,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1E,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "tokens-cli",
3
+ "version": "3.0.1",
4
+ "description": "A high-performance CLI tool and visualization dashboard for tracking AI coding assistant token usage and costs across multiple platforms.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "bin": {
9
+ "tokens": "./bin.js"
10
+ },
11
+ "files": [
12
+ "bin.js",
13
+ "dist/**/*"
14
+ ],
15
+ "publishConfig": {
16
+ "registry": "https://registry.npmjs.org/",
17
+ "access": "public"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/missuo/tokens.git",
22
+ "directory": "packages/cli"
23
+ },
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "dev": "bun src/index.ts",
27
+ "start": "node dist/index.js",
28
+ "prepublishOnly": "bun run build"
29
+ },
30
+ "dependencies": {},
31
+ "optionalDependencies": {
32
+ "tokens-cli-darwin-arm64": "3.0.1",
33
+ "tokens-cli-darwin-x64": "3.0.1",
34
+ "tokens-cli-linux-x64-gnu": "3.0.1",
35
+ "tokens-cli-linux-x64-musl": "3.0.1",
36
+ "tokens-cli-linux-arm64-gnu": "3.0.1",
37
+ "tokens-cli-linux-arm64-musl": "3.0.1",
38
+ "tokens-cli-win32-x64-msvc": "3.0.1",
39
+ "tokens-cli-win32-arm64-msvc": "3.0.1"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.0.0",
43
+ "typescript": "^5.0.0"
44
+ },
45
+ "keywords": [
46
+ "tokens",
47
+ "opencode",
48
+ "claude-code",
49
+ "cursor",
50
+ "gemini",
51
+ "codex",
52
+ "cli"
53
+ ]
54
+ }