@sooneocean/claude-hud 0.1.0
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/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +20 -0
- package/LICENSE +21 -0
- package/README.md +379 -0
- package/commands/configure.md +361 -0
- package/commands/export.md +43 -0
- package/commands/health.md +61 -0
- package/commands/setup.md +287 -0
- package/commands/theme.md +31 -0
- package/dist/alert.d.ts +31 -0
- package/dist/alert.d.ts.map +1 -0
- package/dist/alert.js +53 -0
- package/dist/alert.js.map +1 -0
- package/dist/burn-rate.d.ts +4 -0
- package/dist/burn-rate.d.ts.map +1 -0
- package/dist/burn-rate.js +36 -0
- package/dist/burn-rate.js.map +1 -0
- package/dist/cache.d.ts +6 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +47 -0
- package/dist/cache.js.map +1 -0
- package/dist/claude-config-dir.d.ts +4 -0
- package/dist/claude-config-dir.d.ts.map +1 -0
- package/dist/claude-config-dir.js +24 -0
- package/dist/claude-config-dir.js.map +1 -0
- package/dist/config-io.d.ts +6 -0
- package/dist/config-io.d.ts.map +1 -0
- package/dist/config-io.js +27 -0
- package/dist/config-io.js.map +1 -0
- package/dist/config-reader.d.ts +8 -0
- package/dist/config-reader.d.ts.map +1 -0
- package/dist/config-reader.js +204 -0
- package/dist/config-reader.js.map +1 -0
- package/dist/config.d.ts +94 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +358 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/cost-tracker.d.ts +9 -0
- package/dist/cost-tracker.d.ts.map +1 -0
- package/dist/cost-tracker.js +46 -0
- package/dist/cost-tracker.js.map +1 -0
- package/dist/debug.d.ts +6 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +15 -0
- package/dist/debug.js.map +1 -0
- package/dist/extra-cmd.d.ts +20 -0
- package/dist/extra-cmd.d.ts.map +1 -0
- package/dist/extra-cmd.js +112 -0
- package/dist/extra-cmd.js.map +1 -0
- package/dist/git.d.ts +16 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +94 -0
- package/dist/git.js.map +1 -0
- package/dist/health-check.d.ts +12 -0
- package/dist/health-check.d.ts.map +1 -0
- package/dist/health-check.js +37 -0
- package/dist/health-check.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +198 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/agent-teams-provider.d.ts +10 -0
- package/dist/providers/agent-teams-provider.d.ts.map +1 -0
- package/dist/providers/agent-teams-provider.js +57 -0
- package/dist/providers/agent-teams-provider.js.map +1 -0
- package/dist/providers/agw-provider.d.ts +10 -0
- package/dist/providers/agw-provider.d.ts.map +1 -0
- package/dist/providers/agw-provider.js +49 -0
- package/dist/providers/agw-provider.js.map +1 -0
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +25 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/render/agents-line.d.ts +3 -0
- package/dist/render/agents-line.d.ts.map +1 -0
- package/dist/render/agents-line.js +40 -0
- package/dist/render/agents-line.js.map +1 -0
- package/dist/render/alert-line.d.ts +3 -0
- package/dist/render/alert-line.d.ts.map +1 -0
- package/dist/render/alert-line.js +11 -0
- package/dist/render/alert-line.js.map +1 -0
- package/dist/render/colors.d.ts +39 -0
- package/dist/render/colors.d.ts.map +1 -0
- package/dist/render/colors.js +109 -0
- package/dist/render/colors.js.map +1 -0
- package/dist/render/framework-line.d.ts +3 -0
- package/dist/render/framework-line.d.ts.map +1 -0
- package/dist/render/framework-line.js +32 -0
- package/dist/render/framework-line.js.map +1 -0
- package/dist/render/index.d.ts +3 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +435 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/lines/environment.d.ts +3 -0
- package/dist/render/lines/environment.d.ts.map +1 -0
- package/dist/render/lines/environment.js +30 -0
- package/dist/render/lines/environment.js.map +1 -0
- package/dist/render/lines/identity.d.ts +3 -0
- package/dist/render/lines/identity.d.ts.map +1 -0
- package/dist/render/lines/identity.js +93 -0
- package/dist/render/lines/identity.js.map +1 -0
- package/dist/render/lines/index.d.ts +5 -0
- package/dist/render/lines/index.d.ts.map +1 -0
- package/dist/render/lines/index.js +5 -0
- package/dist/render/lines/index.js.map +1 -0
- package/dist/render/lines/project.d.ts +3 -0
- package/dist/render/lines/project.d.ts.map +1 -0
- package/dist/render/lines/project.js +100 -0
- package/dist/render/lines/project.js.map +1 -0
- package/dist/render/lines/usage.d.ts +3 -0
- package/dist/render/lines/usage.d.ts.map +1 -0
- package/dist/render/lines/usage.js +65 -0
- package/dist/render/lines/usage.js.map +1 -0
- package/dist/render/session-line.d.ts +7 -0
- package/dist/render/session-line.d.ts.map +1 -0
- package/dist/render/session-line.js +227 -0
- package/dist/render/session-line.js.map +1 -0
- package/dist/render/todos-line.d.ts +3 -0
- package/dist/render/todos-line.d.ts.map +1 -0
- package/dist/render/todos-line.js +29 -0
- package/dist/render/todos-line.js.map +1 -0
- package/dist/render/tools-line.d.ts +3 -0
- package/dist/render/tools-line.d.ts.map +1 -0
- package/dist/render/tools-line.js +45 -0
- package/dist/render/tools-line.js.map +1 -0
- package/dist/session-history.d.ts +15 -0
- package/dist/session-history.d.ts.map +1 -0
- package/dist/session-history.js +46 -0
- package/dist/session-history.js.map +1 -0
- package/dist/session-stats.d.ts +11 -0
- package/dist/session-stats.d.ts.map +1 -0
- package/dist/session-stats.js +48 -0
- package/dist/session-stats.js.map +1 -0
- package/dist/speed-tracker.d.ts +7 -0
- package/dist/speed-tracker.d.ts.map +1 -0
- package/dist/speed-tracker.js +34 -0
- package/dist/speed-tracker.js.map +1 -0
- package/dist/stdin.d.ts +9 -0
- package/dist/stdin.d.ts.map +1 -0
- package/dist/stdin.js +142 -0
- package/dist/stdin.js.map +1 -0
- package/dist/themes.d.ts +10 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +81 -0
- package/dist/themes.js.map +1 -0
- package/dist/transcript.d.ts +3 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +221 -0
- package/dist/transcript.js.map +1 -0
- package/dist/types.d.ts +124 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/usage-api.d.ts +62 -0
- package/dist/usage-api.d.ts.map +1 -0
- package/dist/usage-api.js +908 -0
- package/dist/usage-api.js.map +1 -0
- package/dist/utils/format.d.ts +9 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +75 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/terminal.d.ts +5 -0
- package/dist/utils/terminal.d.ts.map +1 -0
- package/dist/utils/terminal.js +42 -0
- package/dist/utils/terminal.js.map +1 -0
- package/package.json +36 -0
- package/src/alert.ts +75 -0
- package/src/burn-rate.ts +45 -0
- package/src/cache.ts +57 -0
- package/src/claude-config-dir.ts +27 -0
- package/src/config-io.ts +26 -0
- package/src/config-reader.ts +236 -0
- package/src/config.ts +496 -0
- package/src/constants.ts +10 -0
- package/src/cost-tracker.ts +53 -0
- package/src/debug.ts +16 -0
- package/src/extra-cmd.ts +125 -0
- package/src/git.ts +126 -0
- package/src/health-check.ts +50 -0
- package/src/index.ts +234 -0
- package/src/providers/agent-teams-provider.ts +56 -0
- package/src/providers/agw-provider.ts +47 -0
- package/src/providers/index.ts +27 -0
- package/src/render/agents-line.ts +51 -0
- package/src/render/alert-line.ts +11 -0
- package/src/render/colors.ts +145 -0
- package/src/render/framework-line.ts +34 -0
- package/src/render/index.ts +512 -0
- package/src/render/lines/environment.ts +41 -0
- package/src/render/lines/identity.ts +109 -0
- package/src/render/lines/index.ts +4 -0
- package/src/render/lines/project.ts +113 -0
- package/src/render/lines/usage.ts +79 -0
- package/src/render/session-line.ts +253 -0
- package/src/render/todos-line.ts +35 -0
- package/src/render/tools-line.ts +58 -0
- package/src/session-history.ts +62 -0
- package/src/session-stats.ts +65 -0
- package/src/speed-tracker.ts +51 -0
- package/src/stdin.ts +169 -0
- package/src/themes.ts +90 -0
- package/src/transcript.ts +268 -0
- package/src/types.ts +146 -0
- package/src/usage-api.ts +1090 -0
- package/src/utils/format.ts +79 -0
- package/src/utils/terminal.ts +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocompact buffer percentage.
|
|
3
|
+
*
|
|
4
|
+
* NOTE: This value is applied as a percentage of Claude Code's reported
|
|
5
|
+
* context window size. The `33k/200k` example is just the 200k-window case.
|
|
6
|
+
* It is empirically derived from current Claude Code `/context` output, is
|
|
7
|
+
* not officially documented by Anthropic, and may need adjustment if users
|
|
8
|
+
* report mismatches in future Claude Code versions.
|
|
9
|
+
*/
|
|
10
|
+
export declare const AUTOCOMPACT_BUFFER_PERCENT = 0.165;
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocompact buffer percentage.
|
|
3
|
+
*
|
|
4
|
+
* NOTE: This value is applied as a percentage of Claude Code's reported
|
|
5
|
+
* context window size. The `33k/200k` example is just the 200k-window case.
|
|
6
|
+
* It is empirically derived from current Claude Code `/context` output, is
|
|
7
|
+
* not officially documented by Anthropic, and may need adjustment if users
|
|
8
|
+
* report mismatches in future Claude Code versions.
|
|
9
|
+
*/
|
|
10
|
+
export const AUTOCOMPACT_BUFFER_PERCENT = 0.165;
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StdinData } from './types.js';
|
|
2
|
+
export interface CostEstimate {
|
|
3
|
+
sessionCost: number;
|
|
4
|
+
inputCostPer1M: number;
|
|
5
|
+
outputCostPer1M: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function estimateCost(stdin: StdinData, _cacheDir: string): CostEstimate | null;
|
|
8
|
+
export declare function formatCost(cost: number): string;
|
|
9
|
+
//# sourceMappingURL=cost-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracker.d.ts","sourceRoot":"","sources":["../src/cost-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAiBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAuBrF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Pricing per 1M tokens (approximate, as of 2026)
|
|
2
|
+
const MODEL_PRICING = {
|
|
3
|
+
'opus': { input: 15, output: 75 },
|
|
4
|
+
'sonnet': { input: 3, output: 15 },
|
|
5
|
+
'haiku': { input: 0.25, output: 1.25 },
|
|
6
|
+
};
|
|
7
|
+
function getModelTier(modelName) {
|
|
8
|
+
const lower = modelName.toLowerCase();
|
|
9
|
+
if (lower.includes('opus'))
|
|
10
|
+
return 'opus';
|
|
11
|
+
if (lower.includes('sonnet'))
|
|
12
|
+
return 'sonnet';
|
|
13
|
+
if (lower.includes('haiku'))
|
|
14
|
+
return 'haiku';
|
|
15
|
+
return 'sonnet'; // default
|
|
16
|
+
}
|
|
17
|
+
export function estimateCost(stdin, _cacheDir) {
|
|
18
|
+
const modelName = stdin.model?.display_name || stdin.model?.id || '';
|
|
19
|
+
if (!modelName)
|
|
20
|
+
return null;
|
|
21
|
+
const usage = stdin.context_window?.current_usage;
|
|
22
|
+
if (!usage)
|
|
23
|
+
return null;
|
|
24
|
+
const tier = getModelTier(modelName);
|
|
25
|
+
const pricing = MODEL_PRICING[tier];
|
|
26
|
+
if (!pricing)
|
|
27
|
+
return null;
|
|
28
|
+
const inputTokens = (usage.input_tokens ?? 0) + (usage.cache_creation_input_tokens ?? 0);
|
|
29
|
+
const outputTokens = usage.output_tokens ?? 0;
|
|
30
|
+
const inputCost = (inputTokens / 1_000_000) * pricing.input;
|
|
31
|
+
const outputCost = (outputTokens / 1_000_000) * pricing.output;
|
|
32
|
+
const sessionCost = inputCost + outputCost;
|
|
33
|
+
return {
|
|
34
|
+
sessionCost,
|
|
35
|
+
inputCostPer1M: pricing.input,
|
|
36
|
+
outputCostPer1M: pricing.output,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function formatCost(cost) {
|
|
40
|
+
if (cost < 0.01)
|
|
41
|
+
return `$${cost.toFixed(4)}`;
|
|
42
|
+
if (cost < 1)
|
|
43
|
+
return `$${cost.toFixed(2)}`;
|
|
44
|
+
return `$${cost.toFixed(2)}`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cost-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracker.js","sourceRoot":"","sources":["../src/cost-tracker.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,MAAM,aAAa,GAAsD;IACvE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACjC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAClC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACvC,CAAC;AAEF,SAAS,YAAY,CAAC,SAAiB;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,OAAO,QAAQ,CAAC,CAAC,UAAU;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAgB,EAAE,SAAiB;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/D,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAE3C,OAAO;QACL,WAAW;QACX,cAAc,EAAE,OAAO,CAAC,KAAK;QAC7B,eAAe,EAAE,OAAO,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/debug.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,IACrB,KAAK,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,KAAG,IAAI,CAK7D"}
|
package/dist/debug.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Shared debug logging utility
|
|
2
|
+
// Enable via: DEBUG=claude-hud or DEBUG=*
|
|
3
|
+
const DEBUG = process.env.DEBUG?.includes('claude-hud') || process.env.DEBUG === '*';
|
|
4
|
+
/**
|
|
5
|
+
* Create a namespaced debug logger
|
|
6
|
+
* @param namespace - Tag for log messages (e.g., 'config', 'usage')
|
|
7
|
+
*/
|
|
8
|
+
export function createDebug(namespace) {
|
|
9
|
+
return function debug(msg, ...args) {
|
|
10
|
+
if (DEBUG) {
|
|
11
|
+
console.error(`[claude-hud:${namespace}] ${msg}`, ...args);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0CAA0C;AAE1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;AAErF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,SAAS,KAAK,CAAC,GAAW,EAAE,GAAG,IAAe;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,eAAe,SAAS,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitize output to prevent terminal escape injection.
|
|
3
|
+
* Strips ANSI escapes, OSC sequences, control characters, and bidi controls.
|
|
4
|
+
*/
|
|
5
|
+
export declare function sanitize(input: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Parse --extra-cmd argument from process.argv
|
|
8
|
+
* Supports both: --extra-cmd "command" and --extra-cmd="command"
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseExtraCmdArg(argv?: string[]): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Execute a command and parse JSON output expecting { label: string }
|
|
13
|
+
* Returns null on any error (timeout, parse failure, missing label)
|
|
14
|
+
*
|
|
15
|
+
* SECURITY NOTE: The cmd parameter is sourced exclusively from CLI arguments
|
|
16
|
+
* (--extra-cmd) typed by the user. Since the user controls their own shell,
|
|
17
|
+
* shell injection is not a concern here - it's intentional user input.
|
|
18
|
+
*/
|
|
19
|
+
export declare function runExtraCmd(cmd: string, timeout?: number): Promise<string | null>;
|
|
20
|
+
//# sourceMappingURL=extra-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extra-cmd.d.ts","sourceRoot":"","sources":["../src/extra-cmd.ts"],"names":[],"mappings":"AAgCA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,MAAM,GAAG,IAAI,CA8B7E;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCnG"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const execAsync = promisify(exec);
|
|
4
|
+
const MAX_BUFFER = 10 * 1024; // 10KB - plenty for a label
|
|
5
|
+
const MAX_LABEL_LENGTH = 50;
|
|
6
|
+
const TIMEOUT_MS = 3000;
|
|
7
|
+
const isDebug = process.env.DEBUG?.includes('claude-hud') ?? false;
|
|
8
|
+
const SHELL_ESCAPE_RE = /[\x00-\x1f\x7f`$\\]/g;
|
|
9
|
+
const CONSECUTIVE_SPACES_RE = /\s{2,}/g;
|
|
10
|
+
const LEADING_TRAILING_SPACES_RE = /^\s+|\s+$/g;
|
|
11
|
+
// ANSI/control sequence patterns used in sanitize()
|
|
12
|
+
const CSI_SEQUENCE_RE = /\x1B\[[0-?]*[ -/]*[@-~]/g;
|
|
13
|
+
const OSC_SEQUENCE_RE = /\x1B\][^\x07\x1B]*(?:\x07|\x1B\\)/g;
|
|
14
|
+
const C1_ESCAPE_RE = /\x1B[@-Z\\-_]/g;
|
|
15
|
+
const CONTROL_CHARS_RE = /[\u0000-\u001F\u007F-\u009F]/g;
|
|
16
|
+
const BIDI_CHARS_RE = /[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069\u206A-\u206F]/g;
|
|
17
|
+
function debug(message) {
|
|
18
|
+
if (isDebug) {
|
|
19
|
+
console.error(`[claude-hud:extra-cmd] ${message}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sanitize output to prevent terminal escape injection.
|
|
24
|
+
* Strips ANSI escapes, OSC sequences, control characters, and bidi controls.
|
|
25
|
+
*/
|
|
26
|
+
export function sanitize(input) {
|
|
27
|
+
return input
|
|
28
|
+
.replace(CSI_SEQUENCE_RE, '') // CSI sequences
|
|
29
|
+
.replace(OSC_SEQUENCE_RE, '') // OSC sequences
|
|
30
|
+
.replace(C1_ESCAPE_RE, '') // 7-bit C1 / ESC Fe
|
|
31
|
+
.replace(CONTROL_CHARS_RE, '') // C0/C1 controls
|
|
32
|
+
.replace(BIDI_CHARS_RE, ''); // bidi
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse --extra-cmd argument from process.argv
|
|
36
|
+
* Supports both: --extra-cmd "command" and --extra-cmd="command"
|
|
37
|
+
*/
|
|
38
|
+
export function parseExtraCmdArg(argv = process.argv) {
|
|
39
|
+
for (let i = 0; i < argv.length; i++) {
|
|
40
|
+
const arg = argv[i];
|
|
41
|
+
// Handle --extra-cmd=value syntax
|
|
42
|
+
if (arg.startsWith('--extra-cmd=')) {
|
|
43
|
+
const value = arg.slice('--extra-cmd='.length);
|
|
44
|
+
if (value === '') {
|
|
45
|
+
debug('Warning: --extra-cmd value is empty, ignoring');
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
// Handle --extra-cmd value syntax
|
|
51
|
+
if (arg === '--extra-cmd') {
|
|
52
|
+
if (i + 1 >= argv.length) {
|
|
53
|
+
debug('Warning: --extra-cmd specified but no value provided');
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const value = argv[i + 1];
|
|
57
|
+
if (value === '') {
|
|
58
|
+
debug('Warning: --extra-cmd value is empty, ignoring');
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute a command and parse JSON output expecting { label: string }
|
|
68
|
+
* Returns null on any error (timeout, parse failure, missing label)
|
|
69
|
+
*
|
|
70
|
+
* SECURITY NOTE: The cmd parameter is sourced exclusively from CLI arguments
|
|
71
|
+
* (--extra-cmd) typed by the user. Since the user controls their own shell,
|
|
72
|
+
* shell injection is not a concern here - it's intentional user input.
|
|
73
|
+
*/
|
|
74
|
+
export async function runExtraCmd(cmd, timeout = TIMEOUT_MS) {
|
|
75
|
+
try {
|
|
76
|
+
const { stdout } = await execAsync(cmd, {
|
|
77
|
+
timeout,
|
|
78
|
+
maxBuffer: MAX_BUFFER,
|
|
79
|
+
});
|
|
80
|
+
const data = JSON.parse(stdout.trim());
|
|
81
|
+
if (typeof data === 'object' &&
|
|
82
|
+
data !== null &&
|
|
83
|
+
'label' in data &&
|
|
84
|
+
typeof data.label === 'string') {
|
|
85
|
+
let label = sanitize(data.label);
|
|
86
|
+
if (label.length > MAX_LABEL_LENGTH) {
|
|
87
|
+
label = label.slice(0, MAX_LABEL_LENGTH - 1) + '…';
|
|
88
|
+
}
|
|
89
|
+
return label;
|
|
90
|
+
}
|
|
91
|
+
debug(`Command output missing 'label' field or invalid type: ${JSON.stringify(data)}`);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
if (err instanceof Error) {
|
|
96
|
+
if (err.message.includes('TIMEOUT') || err.message.includes('killed')) {
|
|
97
|
+
debug(`Command timed out after ${timeout}ms: ${cmd}`);
|
|
98
|
+
}
|
|
99
|
+
else if (err instanceof SyntaxError) {
|
|
100
|
+
debug(`Failed to parse JSON output: ${err.message}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
debug(`Command failed: ${err.message}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
debug(`Command failed with unknown error`);
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=extra-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extra-cmd.js","sourceRoot":"","sources":["../src/extra-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface FileStats {
|
|
2
|
+
modified: number;
|
|
3
|
+
added: number;
|
|
4
|
+
deleted: number;
|
|
5
|
+
untracked: number;
|
|
6
|
+
}
|
|
7
|
+
export interface GitStatus {
|
|
8
|
+
branch: string;
|
|
9
|
+
isDirty: boolean;
|
|
10
|
+
ahead: number;
|
|
11
|
+
behind: number;
|
|
12
|
+
fileStats?: FileStats;
|
|
13
|
+
}
|
|
14
|
+
export declare function getGitBranch(cwd?: string): Promise<string | null>;
|
|
15
|
+
export declare function getGitStatus(cwd?: string): Promise<GitStatus | null>;
|
|
16
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAavE;AAED,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA4D1E"}
|
package/dist/git.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { readCache, writeCache, getDefaultCacheDir } from './cache.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
export async function getGitBranch(cwd) {
|
|
6
|
+
if (!cwd)
|
|
7
|
+
return null;
|
|
8
|
+
try {
|
|
9
|
+
const { stdout } = await execFileAsync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd, timeout: 1000, encoding: 'utf8' });
|
|
10
|
+
return stdout.trim() || null;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function getGitStatus(cwd) {
|
|
17
|
+
if (!cwd)
|
|
18
|
+
return null;
|
|
19
|
+
const cacheDir = getDefaultCacheDir();
|
|
20
|
+
const cacheKey = `git-status:${cwd}`;
|
|
21
|
+
const cached = readCache(cacheKey, 2000, cacheDir);
|
|
22
|
+
if (cached)
|
|
23
|
+
return cached;
|
|
24
|
+
try {
|
|
25
|
+
// Get branch name
|
|
26
|
+
const { stdout: branchOut } = await execFileAsync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd, timeout: 1000, encoding: 'utf8' });
|
|
27
|
+
const branch = branchOut.trim();
|
|
28
|
+
if (!branch)
|
|
29
|
+
return null;
|
|
30
|
+
// Check for dirty state and parse file stats
|
|
31
|
+
let isDirty = false;
|
|
32
|
+
let fileStats;
|
|
33
|
+
try {
|
|
34
|
+
const { stdout: statusOut } = await execFileAsync('git', ['--no-optional-locks', 'status', '--porcelain'], { cwd, timeout: 1000, encoding: 'utf8' });
|
|
35
|
+
const trimmed = statusOut.trim();
|
|
36
|
+
isDirty = trimmed.length > 0;
|
|
37
|
+
if (isDirty) {
|
|
38
|
+
fileStats = parseFileStats(trimmed);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Ignore errors, assume clean
|
|
43
|
+
}
|
|
44
|
+
// Get ahead/behind counts
|
|
45
|
+
let ahead = 0;
|
|
46
|
+
let behind = 0;
|
|
47
|
+
try {
|
|
48
|
+
const { stdout: revOut } = await execFileAsync('git', ['rev-list', '--left-right', '--count', '@{upstream}...HEAD'], { cwd, timeout: 1000, encoding: 'utf8' });
|
|
49
|
+
const parts = revOut.trim().split(/\s+/);
|
|
50
|
+
if (parts.length === 2) {
|
|
51
|
+
behind = parseInt(parts[0], 10) || 0;
|
|
52
|
+
ahead = parseInt(parts[1], 10) || 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// No upstream or error, keep 0/0
|
|
57
|
+
}
|
|
58
|
+
const result = { branch, isDirty, ahead, behind, fileStats };
|
|
59
|
+
writeCache(cacheKey, result, cacheDir);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse git status --porcelain output and count file stats (Starship-compatible format)
|
|
68
|
+
* Status codes: M=modified, A=added, D=deleted, ??=untracked
|
|
69
|
+
*/
|
|
70
|
+
function parseFileStats(porcelainOutput) {
|
|
71
|
+
const stats = { modified: 0, added: 0, deleted: 0, untracked: 0 };
|
|
72
|
+
const lines = porcelainOutput.split('\n').filter(Boolean);
|
|
73
|
+
for (const line of lines) {
|
|
74
|
+
if (line.length < 2)
|
|
75
|
+
continue;
|
|
76
|
+
const index = line[0]; // staged status
|
|
77
|
+
const worktree = line[1]; // unstaged status
|
|
78
|
+
if (line.startsWith('??')) {
|
|
79
|
+
stats.untracked++;
|
|
80
|
+
}
|
|
81
|
+
else if (index === 'A') {
|
|
82
|
+
stats.added++;
|
|
83
|
+
}
|
|
84
|
+
else if (index === 'D' || worktree === 'D') {
|
|
85
|
+
stats.deleted++;
|
|
86
|
+
}
|
|
87
|
+
else if (index === 'M' || worktree === 'M' || index === 'R' || index === 'C') {
|
|
88
|
+
// M=modified, R=renamed (counts as modified), C=copied (counts as modified)
|
|
89
|
+
stats.modified++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return stats;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface HealthStatus {
|
|
2
|
+
configExists: boolean;
|
|
3
|
+
configValid: boolean;
|
|
4
|
+
cacheDir: string;
|
|
5
|
+
cacheDirExists: boolean;
|
|
6
|
+
nodeVersion: string;
|
|
7
|
+
platform: string;
|
|
8
|
+
terminalWidth: number | null;
|
|
9
|
+
}
|
|
10
|
+
export declare function runHealthCheck(): Promise<HealthStatus>;
|
|
11
|
+
export declare function formatHealthReport(status: HealthStatus): string;
|
|
12
|
+
//# sourceMappingURL=health-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../src/health-check.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAyB5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ/D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { getConfigPath, loadConfig } from './config.js';
|
|
3
|
+
import { getDefaultCacheDir } from './cache.js';
|
|
4
|
+
export async function runHealthCheck() {
|
|
5
|
+
const configPath = getConfigPath();
|
|
6
|
+
let configValid = false;
|
|
7
|
+
const configExists = fs.existsSync(configPath);
|
|
8
|
+
if (configExists) {
|
|
9
|
+
try {
|
|
10
|
+
await loadConfig();
|
|
11
|
+
configValid = true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
configValid = false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const cacheDir = getDefaultCacheDir();
|
|
18
|
+
return {
|
|
19
|
+
configExists,
|
|
20
|
+
configValid,
|
|
21
|
+
cacheDir,
|
|
22
|
+
cacheDirExists: fs.existsSync(cacheDir),
|
|
23
|
+
nodeVersion: process.version,
|
|
24
|
+
platform: process.platform,
|
|
25
|
+
terminalWidth: process.stdout?.columns ?? null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function formatHealthReport(status) {
|
|
29
|
+
const lines = [
|
|
30
|
+
`Platform: ${status.platform} | Node: ${status.nodeVersion}`,
|
|
31
|
+
`Terminal: ${status.terminalWidth ?? 'unknown'} cols`,
|
|
32
|
+
`Config: ${status.configExists ? (status.configValid ? '✓ valid' : '✘ invalid') : '○ not set (using defaults)'}`,
|
|
33
|
+
`Cache: ${status.cacheDirExists ? '✓ exists' : '○ will be created'}`,
|
|
34
|
+
];
|
|
35
|
+
return lines.join('\n');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=health-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../src/health-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAYhD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,EAAE,CAAC;YACnB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,OAAO;QACL,YAAY;QACZ,WAAW;QACX,QAAQ;QACR,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QACvC,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAG;QACZ,aAAa,MAAM,CAAC,QAAQ,YAAY,MAAM,CAAC,WAAW,EAAE;QAC5D,aAAa,MAAM,CAAC,aAAa,IAAI,SAAS,OAAO;QACrD,WAAW,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,4BAA4B,EAAE;QAChH,UAAU,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,EAAE;KACrE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { readStdin } from './stdin.js';
|
|
2
|
+
import { parseTranscript } from './transcript.js';
|
|
3
|
+
import { render } from './render/index.js';
|
|
4
|
+
import { countConfigs } from './config-reader.js';
|
|
5
|
+
import { getGitStatus } from './git.js';
|
|
6
|
+
import { getUsage } from './usage-api.js';
|
|
7
|
+
import { loadConfig } from './config.js';
|
|
8
|
+
import { parseExtraCmdArg, runExtraCmd } from './extra-cmd.js';
|
|
9
|
+
export type MainDeps = {
|
|
10
|
+
readStdin: typeof readStdin;
|
|
11
|
+
parseTranscript: typeof parseTranscript;
|
|
12
|
+
countConfigs: typeof countConfigs;
|
|
13
|
+
getGitStatus: typeof getGitStatus;
|
|
14
|
+
getUsage: typeof getUsage;
|
|
15
|
+
loadConfig: typeof loadConfig;
|
|
16
|
+
parseExtraCmdArg: typeof parseExtraCmdArg;
|
|
17
|
+
runExtraCmd: typeof runExtraCmd;
|
|
18
|
+
render: typeof render;
|
|
19
|
+
now: () => number;
|
|
20
|
+
log: (...args: unknown[]) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare function main(overrides?: Partial<MainDeps>): Promise<void>;
|
|
23
|
+
export declare function formatSessionDuration(sessionStart?: Date, now?: () => number): string;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc/D,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,wBAAsB,IAAI,CAAC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyK3E;AAED,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,GAAE,MAAM,MAAyB,GAAG,MAAM,CAcvG"}
|