@invinite-org/invinite-data-cli 0.1.19

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.
Files changed (93) hide show
  1. package/README.md +693 -0
  2. package/claude-plugin/.claude-plugin/plugin.json +11 -0
  3. package/claude-plugin/agents/invinite-data.md +46 -0
  4. package/claude-plugin/commands/financial-research.md +69 -0
  5. package/claude-plugin/skills/invinite-data-cli/SKILL.md +251 -0
  6. package/dist/bin/invd.d.ts +2 -0
  7. package/dist/bin/invd.js +5 -0
  8. package/dist/bin/invd.js.map +1 -0
  9. package/dist/src/cli.d.ts +2 -0
  10. package/dist/src/cli.js +47 -0
  11. package/dist/src/cli.js.map +1 -0
  12. package/dist/src/client/api-client.d.ts +6 -0
  13. package/dist/src/client/api-client.js +40 -0
  14. package/dist/src/client/api-client.js.map +1 -0
  15. package/dist/src/client/pagination.d.ts +3 -0
  16. package/dist/src/client/pagination.js +27 -0
  17. package/dist/src/client/pagination.js.map +1 -0
  18. package/dist/src/client/websocket-client.d.ts +1 -0
  19. package/dist/src/client/websocket-client.js +57 -0
  20. package/dist/src/client/websocket-client.js.map +1 -0
  21. package/dist/src/commands/company.d.ts +2 -0
  22. package/dist/src/commands/company.js +220 -0
  23. package/dist/src/commands/company.js.map +1 -0
  24. package/dist/src/commands/config.d.ts +2 -0
  25. package/dist/src/commands/config.js +56 -0
  26. package/dist/src/commands/config.js.map +1 -0
  27. package/dist/src/commands/filings.d.ts +2 -0
  28. package/dist/src/commands/filings.js +139 -0
  29. package/dist/src/commands/filings.js.map +1 -0
  30. package/dist/src/commands/financials.d.ts +2 -0
  31. package/dist/src/commands/financials.js +162 -0
  32. package/dist/src/commands/financials.js.map +1 -0
  33. package/dist/src/commands/health.d.ts +2 -0
  34. package/dist/src/commands/health.js +18 -0
  35. package/dist/src/commands/health.js.map +1 -0
  36. package/dist/src/commands/insider-trades.d.ts +2 -0
  37. package/dist/src/commands/insider-trades.js +56 -0
  38. package/dist/src/commands/insider-trades.js.map +1 -0
  39. package/dist/src/commands/ipos.d.ts +2 -0
  40. package/dist/src/commands/ipos.js +42 -0
  41. package/dist/src/commands/ipos.js.map +1 -0
  42. package/dist/src/commands/market.d.ts +2 -0
  43. package/dist/src/commands/market.js +34 -0
  44. package/dist/src/commands/market.js.map +1 -0
  45. package/dist/src/commands/metadata.d.ts +2 -0
  46. package/dist/src/commands/metadata.js +39 -0
  47. package/dist/src/commands/metadata.js.map +1 -0
  48. package/dist/src/commands/metrics.d.ts +2 -0
  49. package/dist/src/commands/metrics.js +158 -0
  50. package/dist/src/commands/metrics.js.map +1 -0
  51. package/dist/src/commands/ownership.d.ts +2 -0
  52. package/dist/src/commands/ownership.js +152 -0
  53. package/dist/src/commands/ownership.js.map +1 -0
  54. package/dist/src/commands/plugin.d.ts +2 -0
  55. package/dist/src/commands/plugin.js +303 -0
  56. package/dist/src/commands/plugin.js.map +1 -0
  57. package/dist/src/commands/segments.d.ts +2 -0
  58. package/dist/src/commands/segments.js +64 -0
  59. package/dist/src/commands/segments.js.map +1 -0
  60. package/dist/src/commands/ws.d.ts +2 -0
  61. package/dist/src/commands/ws.js +14 -0
  62. package/dist/src/commands/ws.js.map +1 -0
  63. package/dist/src/config/auth.d.ts +2 -0
  64. package/dist/src/config/auth.js +70 -0
  65. package/dist/src/config/auth.js.map +1 -0
  66. package/dist/src/config/config-manager.d.ts +6 -0
  67. package/dist/src/config/config-manager.js +37 -0
  68. package/dist/src/config/config-manager.js.map +1 -0
  69. package/dist/src/formatters/json-formatter.d.ts +1 -0
  70. package/dist/src/formatters/json-formatter.js +4 -0
  71. package/dist/src/formatters/json-formatter.js.map +1 -0
  72. package/dist/src/formatters/table-formatter.d.ts +3 -0
  73. package/dist/src/formatters/table-formatter.js +63 -0
  74. package/dist/src/formatters/table-formatter.js.map +1 -0
  75. package/dist/src/formatters/tree-formatter.d.ts +11 -0
  76. package/dist/src/formatters/tree-formatter.js +30 -0
  77. package/dist/src/formatters/tree-formatter.js.map +1 -0
  78. package/dist/src/shared/errors.d.ts +6 -0
  79. package/dist/src/shared/errors.js +32 -0
  80. package/dist/src/shared/errors.js.map +1 -0
  81. package/dist/src/shared/options.d.ts +13 -0
  82. package/dist/src/shared/options.js +14 -0
  83. package/dist/src/shared/options.js.map +1 -0
  84. package/dist/src/shared/output.d.ts +3 -0
  85. package/dist/src/shared/output.js +13 -0
  86. package/dist/src/shared/output.js.map +1 -0
  87. package/dist/src/shared/spinner.d.ts +3 -0
  88. package/dist/src/shared/spinner.js +12 -0
  89. package/dist/src/shared/spinner.js.map +1 -0
  90. package/dist/src/shared/types.d.ts +11 -0
  91. package/dist/src/shared/types.js +2 -0
  92. package/dist/src/shared/types.js.map +1 -0
  93. package/package.json +54 -0
@@ -0,0 +1,11 @@
1
+ interface TreeNode {
2
+ concept?: string;
3
+ metric_id?: string;
4
+ label?: string;
5
+ value?: number | null;
6
+ depth?: number;
7
+ isTotal?: boolean;
8
+ children?: TreeNode[];
9
+ }
10
+ export declare function formatTree(nodes: TreeNode[], indent?: number): void;
11
+ export {};
@@ -0,0 +1,30 @@
1
+ import chalk from 'chalk';
2
+ export function formatTree(nodes, indent = 0) {
3
+ for (const node of nodes) {
4
+ const prefix = ' '.repeat(indent);
5
+ const label = node.label || node.metric_id || node.concept || 'Unknown';
6
+ const value = node.value !== null && node.value !== undefined ? formatTreeValue(node.value) : '';
7
+ if (node.isTotal) {
8
+ console.log(`${prefix}${chalk.bold(label)}${value ? ' ' + chalk.bold(value) : ''}`);
9
+ }
10
+ else if (node.children && node.children.length > 0) {
11
+ console.log(`${prefix}${chalk.cyan(label)}${value ? ' ' + value : ''}`);
12
+ }
13
+ else {
14
+ console.log(`${prefix}${label}${value ? ' ' + chalk.dim(value) : ''}`);
15
+ }
16
+ if (node.children) {
17
+ formatTree(node.children, indent + 1);
18
+ }
19
+ }
20
+ }
21
+ function formatTreeValue(n) {
22
+ if (Math.abs(n) >= 1_000_000) {
23
+ return `${(n / 1_000_000).toFixed(1)}M`;
24
+ }
25
+ if (Math.abs(n) >= 1_000) {
26
+ return `${(n / 1_000).toFixed(1)}K`;
27
+ }
28
+ return n.toLocaleString('en-US', { maximumFractionDigits: 2 });
29
+ }
30
+ //# sourceMappingURL=tree-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-formatter.js","sourceRoot":"","sources":["../../../src/formatters/tree-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,SAAiB,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class ApiError extends Error {
2
+ statusCode: number;
3
+ errorType: string;
4
+ constructor(statusCode: number, errorType: string, message: string);
5
+ }
6
+ export declare function withErrorHandling(fn: (...args: any[]) => Promise<void>): (...args: any[]) => Promise<void>;
@@ -0,0 +1,32 @@
1
+ import chalk from 'chalk';
2
+ export class ApiError extends Error {
3
+ statusCode;
4
+ errorType;
5
+ constructor(statusCode, errorType, message) {
6
+ super(message);
7
+ this.statusCode = statusCode;
8
+ this.errorType = errorType;
9
+ this.name = 'ApiError';
10
+ }
11
+ }
12
+ export function withErrorHandling(fn) {
13
+ return async (...args) => {
14
+ try {
15
+ await fn(...args);
16
+ }
17
+ catch (error) {
18
+ if (error instanceof ApiError) {
19
+ console.error(chalk.red(`Error ${error.statusCode}: ${error.errorType}`));
20
+ console.error(error.message);
21
+ }
22
+ else if (error instanceof Error) {
23
+ console.error(chalk.red('Error:'), error.message);
24
+ }
25
+ else {
26
+ console.error(chalk.red('An unexpected error occurred'));
27
+ }
28
+ process.exit(1);
29
+ }
30
+ };
31
+ }
32
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IACA;IAFT,YACS,UAAkB,EAClB,SAAiB,EACxB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAQ;QAIxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAqC;IACrE,OAAO,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Option } from 'commander';
2
+ export declare const identifierOption: Option;
3
+ export declare const identifiersOption: Option;
4
+ export declare const periodOption: Option;
5
+ export declare const sortOption: Option;
6
+ export declare const limitOption: Option;
7
+ export declare const offsetOption: Option;
8
+ export declare const startDateOption: Option;
9
+ export declare const endDateOption: Option;
10
+ export declare const queryOption: Option;
11
+ export declare const cikOption: Option;
12
+ export declare const jsonOption: Option;
13
+ export declare const allOption: Option;
@@ -0,0 +1,14 @@
1
+ import { Option } from 'commander';
2
+ export const identifierOption = new Option('-i, --identifier <ticker>', 'Ticker symbol or CIK').makeOptionMandatory();
3
+ export const identifiersOption = new Option('-i, --identifiers <tickers>', 'Comma-separated ticker symbols or CIKs').makeOptionMandatory();
4
+ export const periodOption = new Option('-p, --period <type>', 'Fiscal period type').choices(['quarterly', 'annual', 'ytd', 'ttm']).makeOptionMandatory();
5
+ export const sortOption = new Option('-s, --sort <dir>', 'Sort direction').choices(['asc', 'desc']).default('desc');
6
+ export const limitOption = new Option('-l, --limit <n>', 'Maximum results').default('10');
7
+ export const offsetOption = new Option('--offset <n>', 'Pagination offset').default('0');
8
+ export const startDateOption = new Option('--start-date <date>', 'Start date (YYYY-MM-DD)');
9
+ export const endDateOption = new Option('--end-date <date>', 'End date (YYYY-MM-DD)');
10
+ export const queryOption = new Option('-q, --query <text>', 'Search query').makeOptionMandatory();
11
+ export const cikOption = new Option('--cik <cik>', 'Institution CIK').makeOptionMandatory();
12
+ export const jsonOption = new Option('--json', 'Output raw JSON');
13
+ export const allOption = new Option('--all', 'Auto-paginate through all results');
14
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/shared/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACtH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,6BAA6B,EAAE,wCAAwC,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC3I,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACzJ,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAClG,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC5F,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function output(data: unknown, opts: {
2
+ json?: boolean;
3
+ }, tableFormatter?: (data: unknown) => void): void;
@@ -0,0 +1,13 @@
1
+ import { formatJson } from '../formatters/json-formatter.js';
2
+ export function output(data, opts, tableFormatter) {
3
+ if (opts.json) {
4
+ formatJson(data);
5
+ }
6
+ else if (tableFormatter) {
7
+ tableFormatter(data);
8
+ }
9
+ else {
10
+ formatJson(data);
11
+ }
12
+ }
13
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/shared/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,IAAwB,EAAE,cAAwC;IACtG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Ora } from 'ora';
2
+ export declare function setJsonMode(enabled: boolean): void;
3
+ export declare function createSpinner(text: string): Ora;
@@ -0,0 +1,12 @@
1
+ import ora from 'ora';
2
+ let jsonMode = false;
3
+ export function setJsonMode(enabled) {
4
+ jsonMode = enabled;
5
+ }
6
+ export function createSpinner(text) {
7
+ if (jsonMode) {
8
+ return ora({ text, isSilent: true });
9
+ }
10
+ return ora(text).start();
11
+ }
12
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/shared/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,QAAQ,GAAG,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface ApiResponse<T> {
2
+ data: T;
3
+ status: number;
4
+ }
5
+ export interface PaginatedResponse {
6
+ next_url?: string;
7
+ }
8
+ export interface CommandOptions {
9
+ json?: boolean;
10
+ all?: boolean;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@invinite-org/invinite-data-cli",
3
+ "version": "0.1.19",
4
+ "type": "module",
5
+ "description": "CLI for the Invinite Data API",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "homepage": "https://github.com/outraday-org/invinite-data-cli",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/outraday-org/invinite-data-cli.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/outraday-org/invinite-data-cli/issues"
16
+ },
17
+ "bin": {
18
+ "invd": "./dist/bin/invd.js"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "tsx bin/invd.ts",
23
+ "lint": "eslint src",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "prepublishOnly": "pnpm run build",
27
+ "publish:version": "pnpm version patch && export $(cat .env | xargs) && pnpm publish --access public"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "claude-plugin"
32
+ ],
33
+ "engines": {
34
+ "node": ">=20"
35
+ },
36
+ "dependencies": {
37
+ "chalk": "^5.3.0",
38
+ "commander": "^12.1.0",
39
+ "conf": "^13.0.1",
40
+ "enquirer": "^2.4.1",
41
+ "ora": "^8.1.1",
42
+ "zod": "^3.23.8"
43
+ },
44
+ "packageManager": "pnpm@10.29.3",
45
+ "devDependencies": {
46
+ "@stylistic/eslint-plugin": "^2.10.1",
47
+ "@types/node": "^22.10.2",
48
+ "eslint": "^9.16.0",
49
+ "tsx": "^4.19.2",
50
+ "typescript": "^5.7.2",
51
+ "typescript-eslint": "^8.57.0",
52
+ "vitest": "^2.1.8"
53
+ }
54
+ }