@creem_io/cli 0.2.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.
Files changed (98) hide show
  1. package/README.md +155 -0
  2. package/dist/commands/checkouts.d.ts +3 -0
  3. package/dist/commands/checkouts.d.ts.map +1 -0
  4. package/dist/commands/checkouts.js +175 -0
  5. package/dist/commands/checkouts.js.map +1 -0
  6. package/dist/commands/config.d.ts +3 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +184 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/customers.d.ts +3 -0
  11. package/dist/commands/customers.d.ts.map +1 -0
  12. package/dist/commands/customers.js +246 -0
  13. package/dist/commands/customers.js.map +1 -0
  14. package/dist/commands/discounts.d.ts +3 -0
  15. package/dist/commands/discounts.d.ts.map +1 -0
  16. package/dist/commands/discounts.js +419 -0
  17. package/dist/commands/discounts.js.map +1 -0
  18. package/dist/commands/index.d.ts +12 -0
  19. package/dist/commands/index.d.ts.map +1 -0
  20. package/dist/commands/index.js +26 -0
  21. package/dist/commands/index.js.map +1 -0
  22. package/dist/commands/login.d.ts +3 -0
  23. package/dist/commands/login.d.ts.map +1 -0
  24. package/dist/commands/login.js +115 -0
  25. package/dist/commands/login.js.map +1 -0
  26. package/dist/commands/logout.d.ts +3 -0
  27. package/dist/commands/logout.d.ts.map +1 -0
  28. package/dist/commands/logout.js +61 -0
  29. package/dist/commands/logout.js.map +1 -0
  30. package/dist/commands/migrate.d.ts +3 -0
  31. package/dist/commands/migrate.d.ts.map +1 -0
  32. package/dist/commands/migrate.js +1073 -0
  33. package/dist/commands/migrate.js.map +1 -0
  34. package/dist/commands/products.d.ts +3 -0
  35. package/dist/commands/products.d.ts.map +1 -0
  36. package/dist/commands/products.js +400 -0
  37. package/dist/commands/products.js.map +1 -0
  38. package/dist/commands/subscriptions.d.ts +3 -0
  39. package/dist/commands/subscriptions.d.ts.map +1 -0
  40. package/dist/commands/subscriptions.js +476 -0
  41. package/dist/commands/subscriptions.js.map +1 -0
  42. package/dist/commands/transactions.d.ts +3 -0
  43. package/dist/commands/transactions.d.ts.map +1 -0
  44. package/dist/commands/transactions.js +326 -0
  45. package/dist/commands/transactions.js.map +1 -0
  46. package/dist/commands/whoami.d.ts +3 -0
  47. package/dist/commands/whoami.d.ts.map +1 -0
  48. package/dist/commands/whoami.js +76 -0
  49. package/dist/commands/whoami.js.map +1 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +109 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lib/api.d.ts +25 -0
  55. package/dist/lib/api.d.ts.map +1 -0
  56. package/dist/lib/api.js +77 -0
  57. package/dist/lib/api.js.map +1 -0
  58. package/dist/lib/auth.d.ts +28 -0
  59. package/dist/lib/auth.d.ts.map +1 -0
  60. package/dist/lib/auth.js +113 -0
  61. package/dist/lib/auth.js.map +1 -0
  62. package/dist/lib/config.d.ts +34 -0
  63. package/dist/lib/config.d.ts.map +1 -0
  64. package/dist/lib/config.js +144 -0
  65. package/dist/lib/config.js.map +1 -0
  66. package/dist/lib/env-cache.d.ts +10 -0
  67. package/dist/lib/env-cache.d.ts.map +1 -0
  68. package/dist/lib/env-cache.js +27 -0
  69. package/dist/lib/env-cache.js.map +1 -0
  70. package/dist/tui/command-bar.d.ts +10 -0
  71. package/dist/tui/command-bar.d.ts.map +1 -0
  72. package/dist/tui/command-bar.js +35 -0
  73. package/dist/tui/command-bar.js.map +1 -0
  74. package/dist/tui/engine.d.ts +3 -0
  75. package/dist/tui/engine.d.ts.map +1 -0
  76. package/dist/tui/engine.js +454 -0
  77. package/dist/tui/engine.js.map +1 -0
  78. package/dist/tui/index.d.ts +3 -0
  79. package/dist/tui/index.d.ts.map +1 -0
  80. package/dist/tui/index.js +6 -0
  81. package/dist/tui/index.js.map +1 -0
  82. package/dist/tui/keymap.d.ts +29 -0
  83. package/dist/tui/keymap.d.ts.map +1 -0
  84. package/dist/tui/keymap.js +143 -0
  85. package/dist/tui/keymap.js.map +1 -0
  86. package/dist/tui/renderer.d.ts +12 -0
  87. package/dist/tui/renderer.d.ts.map +1 -0
  88. package/dist/tui/renderer.js +379 -0
  89. package/dist/tui/renderer.js.map +1 -0
  90. package/dist/tui/types.d.ts +53 -0
  91. package/dist/tui/types.d.ts.map +1 -0
  92. package/dist/tui/types.js +24 -0
  93. package/dist/tui/types.js.map +1 -0
  94. package/dist/utils/output.d.ts +67 -0
  95. package/dist/utils/output.d.ts.map +1 -0
  96. package/dist/utils/output.js +245 -0
  97. package/dist/utils/output.js.map +1 -0
  98. package/package.json +56 -0
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBaseUrl = getBaseUrl;
4
+ exports.getClient = getClient;
5
+ exports.resetClient = resetClient;
6
+ exports.validateApiKey = validateApiKey;
7
+ const creem_1 = require("creem");
8
+ const config_1 = require("./config");
9
+ const env_cache_1 = require("./env-cache");
10
+ const API_URLS = {
11
+ live: "https://api.creem.io",
12
+ test: "https://test-api.creem.io",
13
+ };
14
+ let clientInstance = null;
15
+ let cachedApiKey = null;
16
+ let cachedEnvironment = null;
17
+ /**
18
+ * Gets the base URL for the current environment
19
+ */
20
+ function getBaseUrl() {
21
+ const env = (0, config_1.getConfigValue)("environment");
22
+ return API_URLS[env] || API_URLS.test;
23
+ }
24
+ /**
25
+ * Gets or creates a Creem SDK client instance
26
+ * Recreates client if API key or environment changed
27
+ */
28
+ function getClient() {
29
+ const apiKey = (0, config_1.getConfigValue)("api_key");
30
+ if (!apiKey) {
31
+ throw new Error("Not authenticated. Run `creem login` first.");
32
+ }
33
+ const environment = (0, config_1.getConfigValue)("environment");
34
+ // Recreate client if API key or environment changed
35
+ if (!clientInstance || apiKey !== cachedApiKey || environment !== cachedEnvironment) {
36
+ clientInstance = new creem_1.Creem({
37
+ apiKey,
38
+ // 0 = live (api.creem.io), 1 = test (test-api.creem.io)
39
+ serverIdx: environment === "live" ? 0 : 1,
40
+ });
41
+ cachedApiKey = apiKey;
42
+ cachedEnvironment = environment;
43
+ }
44
+ return clientInstance;
45
+ }
46
+ /**
47
+ * Resets the client (call after login/logout)
48
+ * Also resets the TUI environment cache to ensure UI shows current environment
49
+ */
50
+ function resetClient() {
51
+ clientInstance = null;
52
+ cachedApiKey = null;
53
+ cachedEnvironment = null;
54
+ (0, env_cache_1.resetEnvCache)();
55
+ }
56
+ /**
57
+ * Validates an API key by making a test request
58
+ * @param apiKey - The API key to validate
59
+ * @param environment - Optional environment override (defaults to config value)
60
+ */
61
+ async function validateApiKey(apiKey, environment) {
62
+ const env = environment ?? (0, config_1.getConfigValue)("environment");
63
+ try {
64
+ const testClient = new creem_1.Creem({
65
+ apiKey,
66
+ serverIdx: env === "live" ? 0 : 1,
67
+ });
68
+ // Make a simple API call to validate the key
69
+ await testClient.products.search(1, 1);
70
+ return { valid: true };
71
+ }
72
+ catch (error) {
73
+ const message = error instanceof Error ? error.message : "Unknown error";
74
+ return { valid: false, error: message };
75
+ }
76
+ }
77
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":";;AAgBA,gCAGC;AAMD,8BAqBC;AAMD,kCAKC;AAOD,wCAmBC;AAnFD,iCAA8B;AAC9B,qCAA0C;AAC1C,2CAA4C;AAE5C,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,2BAA2B;CACzB,CAAC;AAEX,IAAI,cAAc,GAAiB,IAAI,CAAC;AACxC,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAE5C;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,GAAG,GAAG,IAAA,uBAAc,EAAC,aAAa,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS;IACvB,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,aAAa,CAAC,CAAC;IAElD,oDAAoD;IACpD,IAAI,CAAC,cAAc,IAAI,MAAM,KAAK,YAAY,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QACpF,cAAc,GAAG,IAAI,aAAK,CAAC;YACzB,MAAM;YACN,wDAAwD;YACxD,SAAS,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,CAAC;QACtB,iBAAiB,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IACzB,cAAc,GAAG,IAAI,CAAC;IACtB,YAAY,GAAG,IAAI,CAAC;IACpB,iBAAiB,GAAG,IAAI,CAAC;IACzB,IAAA,yBAAa,GAAE,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,WAA6B;IAE7B,MAAM,GAAG,GAAG,WAAW,IAAI,IAAA,uBAAc,EAAC,aAAa,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,aAAK,CAAC;YAC3B,MAAM;YACN,SAAS,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ export interface LoginResult {
2
+ success: boolean;
3
+ message: string;
4
+ }
5
+ /**
6
+ * Detects environment from API key prefix
7
+ * creem_test_xxx -> test
8
+ * creem_live_xxx or creem_xxx (non-test) -> live
9
+ * Invalid prefix -> throws error
10
+ */
11
+ export declare function detectEnvironment(apiKey: string): "test" | "live";
12
+ /**
13
+ * Logs in with an API key
14
+ */
15
+ export declare function loginWithApiKey(apiKey: string): Promise<LoginResult>;
16
+ /**
17
+ * Logs out the current user
18
+ */
19
+ export declare function logout(): LoginResult;
20
+ /**
21
+ * Gets info about the current authentication state
22
+ */
23
+ export declare function getAuthInfo(): {
24
+ authenticated: boolean;
25
+ environment: "test" | "live";
26
+ apiKeyPreview?: string;
27
+ };
28
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAWjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4C1E;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,WAAW,CAkBpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAsBA"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectEnvironment = detectEnvironment;
4
+ exports.loginWithApiKey = loginWithApiKey;
5
+ exports.logout = logout;
6
+ exports.getAuthInfo = getAuthInfo;
7
+ const config_1 = require("./config");
8
+ const api_1 = require("./api");
9
+ /**
10
+ * Detects environment from API key prefix
11
+ * creem_test_xxx -> test
12
+ * creem_live_xxx or creem_xxx (non-test) -> live
13
+ * Invalid prefix -> throws error
14
+ */
15
+ function detectEnvironment(apiKey) {
16
+ if (apiKey.startsWith("creem_test_")) {
17
+ return "test";
18
+ }
19
+ if (apiKey.startsWith("creem_live_") || apiKey.startsWith("creem_")) {
20
+ return "live";
21
+ }
22
+ throw new Error('Invalid API key format. Key must start with "creem_test_" or "creem_live_" (or "creem_" for live). ' +
23
+ "Get your API key from https://creem.io/dashboard/developers");
24
+ }
25
+ /**
26
+ * Logs in with an API key
27
+ */
28
+ async function loginWithApiKey(apiKey) {
29
+ // Validate the API key format
30
+ if (!apiKey || apiKey.trim().length === 0) {
31
+ return {
32
+ success: false,
33
+ message: "API key cannot be empty",
34
+ };
35
+ }
36
+ const trimmedKey = apiKey.trim();
37
+ // Auto-detect environment from API key prefix
38
+ let detectedEnv;
39
+ try {
40
+ detectedEnv = detectEnvironment(trimmedKey);
41
+ }
42
+ catch (error) {
43
+ return {
44
+ success: false,
45
+ message: error instanceof Error ? error.message : "Invalid API key format",
46
+ };
47
+ }
48
+ // Validate the API key against the API using detected environment
49
+ // (don't save config until validation succeeds)
50
+ const validation = await (0, api_1.validateApiKey)(trimmedKey, detectedEnv);
51
+ if (!validation.valid) {
52
+ return {
53
+ success: false,
54
+ message: validation.error || "Failed to validate API key",
55
+ };
56
+ }
57
+ // Save config only after successful validation
58
+ const config = (0, config_1.loadConfig)();
59
+ config.environment = detectedEnv;
60
+ config.api_key = trimmedKey;
61
+ (0, config_1.saveConfig)(config);
62
+ (0, api_1.resetClient)(); // Reset client to pick up new key and environment
63
+ return {
64
+ success: true,
65
+ message: `Successfully logged in (${detectedEnv} environment)`,
66
+ };
67
+ }
68
+ /**
69
+ * Logs out the current user
70
+ */
71
+ function logout() {
72
+ if (!(0, config_1.isAuthenticated)()) {
73
+ return {
74
+ success: true,
75
+ message: "Already logged out",
76
+ };
77
+ }
78
+ // Clear only the API key, preserve other settings
79
+ const config = (0, config_1.loadConfig)();
80
+ delete config.api_key;
81
+ (0, config_1.saveConfig)(config);
82
+ (0, api_1.resetClient)(); // Reset client after logout
83
+ return {
84
+ success: true,
85
+ message: "Successfully logged out",
86
+ };
87
+ }
88
+ /**
89
+ * Gets info about the current authentication state
90
+ */
91
+ function getAuthInfo() {
92
+ const authenticated = (0, config_1.isAuthenticated)();
93
+ const environment = (0, config_1.getConfigValue)("environment");
94
+ let apiKeyPreview;
95
+ if (authenticated) {
96
+ const apiKey = (0, config_1.getConfigValue)("api_key");
97
+ if (apiKey) {
98
+ // Show first 8 and last 4 characters
99
+ if (apiKey.length > 16) {
100
+ apiKeyPreview = `${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`;
101
+ }
102
+ else {
103
+ apiKeyPreview = `${apiKey.slice(0, 4)}...`;
104
+ }
105
+ }
106
+ }
107
+ return {
108
+ authenticated,
109
+ environment,
110
+ apiKeyPreview,
111
+ };
112
+ }
113
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export interface CreemConfig {
2
+ api_key?: string;
3
+ environment: "test" | "live";
4
+ output_format: "table" | "json";
5
+ }
6
+ /**
7
+ * Loads the config from disk
8
+ */
9
+ export declare function loadConfig(): CreemConfig;
10
+ /**
11
+ * Saves the config to disk
12
+ */
13
+ export declare function saveConfig(config: CreemConfig): void;
14
+ /**
15
+ * Gets a specific config value
16
+ */
17
+ export declare function getConfigValue<K extends keyof CreemConfig>(key: K): CreemConfig[K];
18
+ /**
19
+ * Sets a specific config value
20
+ */
21
+ export declare function setConfigValue<K extends keyof CreemConfig>(key: K, value: CreemConfig[K]): void;
22
+ /**
23
+ * Determines if JSON output should be used based on CLI flag and config
24
+ */
25
+ export declare function shouldOutputJson(cliJsonFlag?: boolean): boolean;
26
+ /**
27
+ * Gets the config file path (for display purposes)
28
+ */
29
+ export declare function getConfigPath(): string;
30
+ /**
31
+ * Checks if the user is authenticated
32
+ */
33
+ export declare function isAuthenticated(): boolean;
34
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAiDD;;GAEG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAWxC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAGlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAI/F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAK/D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ exports.saveConfig = saveConfig;
38
+ exports.getConfigValue = getConfigValue;
39
+ exports.setConfigValue = setConfigValue;
40
+ exports.shouldOutputJson = shouldOutputJson;
41
+ exports.getConfigPath = getConfigPath;
42
+ exports.isAuthenticated = isAuthenticated;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const DEFAULT_CONFIG = {
47
+ environment: "test",
48
+ output_format: "table",
49
+ };
50
+ const CONFIG_DIR = path.join(os.homedir(), ".creem");
51
+ const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
52
+ /**
53
+ * Ensures the config directory exists
54
+ */
55
+ function ensureConfigDir() {
56
+ if (!fs.existsSync(CONFIG_DIR)) {
57
+ fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
58
+ }
59
+ }
60
+ const VALID_ENVIRONMENTS = ["test", "live"];
61
+ const VALID_OUTPUT_FORMATS = ["table", "json"];
62
+ /**
63
+ * Validates and sanitizes config values
64
+ */
65
+ function validateConfig(config) {
66
+ const validated = { ...DEFAULT_CONFIG };
67
+ // Validate environment
68
+ if (config.environment && VALID_ENVIRONMENTS.includes(config.environment)) {
69
+ validated.environment = config.environment;
70
+ }
71
+ // Validate output_format
72
+ if (config.output_format &&
73
+ VALID_OUTPUT_FORMATS.includes(config.output_format)) {
74
+ validated.output_format = config.output_format;
75
+ }
76
+ // Copy api_key if present
77
+ if (config.api_key) {
78
+ validated.api_key = config.api_key;
79
+ }
80
+ return validated;
81
+ }
82
+ /**
83
+ * Loads the config from disk
84
+ */
85
+ function loadConfig() {
86
+ try {
87
+ if (fs.existsSync(CONFIG_FILE)) {
88
+ const data = fs.readFileSync(CONFIG_FILE, "utf-8");
89
+ const parsed = JSON.parse(data);
90
+ return validateConfig(parsed);
91
+ }
92
+ }
93
+ catch {
94
+ // If config is corrupted, return defaults
95
+ }
96
+ return { ...DEFAULT_CONFIG };
97
+ }
98
+ /**
99
+ * Saves the config to disk
100
+ */
101
+ function saveConfig(config) {
102
+ ensureConfigDir();
103
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), {
104
+ mode: 0o600,
105
+ });
106
+ }
107
+ /**
108
+ * Gets a specific config value
109
+ */
110
+ function getConfigValue(key) {
111
+ const config = loadConfig();
112
+ return config[key];
113
+ }
114
+ /**
115
+ * Sets a specific config value
116
+ */
117
+ function setConfigValue(key, value) {
118
+ const config = loadConfig();
119
+ config[key] = value;
120
+ saveConfig(config);
121
+ }
122
+ /**
123
+ * Determines if JSON output should be used based on CLI flag and config
124
+ */
125
+ function shouldOutputJson(cliJsonFlag) {
126
+ if (cliJsonFlag !== undefined) {
127
+ return cliJsonFlag;
128
+ }
129
+ return getConfigValue("output_format") === "json";
130
+ }
131
+ /**
132
+ * Gets the config file path (for display purposes)
133
+ */
134
+ function getConfigPath() {
135
+ return CONFIG_FILE;
136
+ }
137
+ /**
138
+ * Checks if the user is authenticated
139
+ */
140
+ function isAuthenticated() {
141
+ const config = loadConfig();
142
+ return !!config.api_key;
143
+ }
144
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,gCAWC;AAKD,gCAKC;AAKD,wCAGC;AAKD,wCAIC;AAKD,4CAKC;AAKD,sCAEC;AAKD,0CAGC;AA3HD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAQzB,MAAM,cAAc,GAAgB;IAClC,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,OAAO;CACvB,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD;;GAEG;AACH,SAAS,eAAe;IACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AACrD,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAExD;;GAEG;AACH,SAAS,cAAc,CAAC,MAA4B;IAClD,MAAM,SAAS,GAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAErD,uBAAuB;IACvB,IAAI,MAAM,CAAC,WAAW,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAA8B,CAAC,EAAE,CAAC;QAC7F,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAA8B,CAAC;IAChE,CAAC;IAED,yBAAyB;IACzB,IACE,MAAM,CAAC,aAAa;QACpB,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAiC,CAAC,EACvE,CAAC;QACD,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,aAAiC,CAAC;IACrE,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAmB;IAC5C,eAAe,EAAE,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC7D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAA8B,GAAM;IAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAA8B,GAAM,EAAE,KAAqB;IACvF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAqB;IACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,cAAc,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Gets the cached environment value, reading from config only on first call.
3
+ */
4
+ export declare function getCachedEnv(): string;
5
+ /**
6
+ * Resets the cached environment string.
7
+ * Call this when the environment config changes to ensure fresh reads.
8
+ */
9
+ export declare function resetEnvCache(): void;
10
+ //# sourceMappingURL=env-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-cache.d.ts","sourceRoot":"","sources":["../../src/lib/env-cache.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCachedEnv = getCachedEnv;
4
+ exports.resetEnvCache = resetEnvCache;
5
+ const config_1 = require("./config");
6
+ /**
7
+ * Cache the environment string to avoid sync file I/O on every render frame.
8
+ * This is a shared utility used by both the API layer and TUI renderer.
9
+ */
10
+ let cachedEnv = null;
11
+ /**
12
+ * Gets the cached environment value, reading from config only on first call.
13
+ */
14
+ function getCachedEnv() {
15
+ if (cachedEnv === null) {
16
+ cachedEnv = (0, config_1.getConfigValue)("environment") || "test";
17
+ }
18
+ return cachedEnv;
19
+ }
20
+ /**
21
+ * Resets the cached environment string.
22
+ * Call this when the environment config changes to ensure fresh reads.
23
+ */
24
+ function resetEnvCache() {
25
+ cachedEnv = null;
26
+ }
27
+ //# sourceMappingURL=env-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-cache.js","sourceRoot":"","sources":["../../src/lib/env-cache.ts"],"names":[],"mappings":";;AAWA,oCAKC;AAMD,sCAEC;AAxBD,qCAA0C;AAE1C;;;GAGG;AACH,IAAI,SAAS,GAAkB,IAAI,CAAC;AAEpC;;GAEG;AACH,SAAgB,YAAY;IAC1B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,SAAS,GAAG,IAAA,uBAAc,EAAC,aAAa,CAAC,IAAI,MAAM,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { TuiCommandDef } from "./types";
2
+ export interface ParsedCommand<T> {
3
+ command: TuiCommandDef<T>;
4
+ args: string;
5
+ }
6
+ export declare function parseCommand<T>(input: string, commands: TuiCommandDef<T>[]): {
7
+ parsed: ParsedCommand<T> | null;
8
+ error: string | null;
9
+ };
10
+ //# sourceMappingURL=command-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bar.d.ts","sourceRoot":"","sources":["../../src/tui/command-bar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAC3B;IAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoC3D"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCommand = parseCommand;
4
+ function parseCommand(input, commands) {
5
+ const trimmed = input.trim();
6
+ if (!trimmed) {
7
+ return { parsed: null, error: null };
8
+ }
9
+ const spaceIdx = trimmed.indexOf(" ");
10
+ const name = spaceIdx === -1 ? trimmed : trimmed.slice(0, spaceIdx);
11
+ const args = spaceIdx === -1 ? "" : trimmed.slice(spaceIdx + 1).trim();
12
+ // First try exact match
13
+ const exactMatch = commands.find((cmd) => cmd.name === name);
14
+ if (exactMatch) {
15
+ return { parsed: { command: exactMatch, args }, error: null };
16
+ }
17
+ // Then try prefix match, but detect ambiguity
18
+ const prefixMatches = commands.filter((cmd) => cmd.name.startsWith(name));
19
+ if (prefixMatches.length === 0) {
20
+ const available = commands.map((c) => c.name).join(", ");
21
+ return {
22
+ parsed: null,
23
+ error: `Unknown command: ${name}. Available: ${available}`,
24
+ };
25
+ }
26
+ if (prefixMatches.length > 1) {
27
+ const ambiguous = prefixMatches.map((c) => c.name).join(", ");
28
+ return {
29
+ parsed: null,
30
+ error: `Ambiguous command: ${name}. Did you mean: ${ambiguous}?`,
31
+ };
32
+ }
33
+ return { parsed: { command: prefixMatches[0], args }, error: null };
34
+ }
35
+ //# sourceMappingURL=command-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bar.js","sourceRoot":"","sources":["../../src/tui/command-bar.ts"],"names":[],"mappings":";;AAOA,oCAuCC;AAvCD,SAAgB,YAAY,CAC1B,KAAa,EACb,QAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvE,wBAAwB;IACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC7D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,oBAAoB,IAAI,gBAAgB,SAAS,EAAE;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,sBAAsB,IAAI,mBAAmB,SAAS,GAAG;SACjE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TuiModuleDescriptor } from "./types";
2
+ export declare function launchInteractiveMode<T>(descriptor: TuiModuleDescriptor<T>): Promise<void>;
3
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/tui/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAY,MAAM,SAAS,CAAC;AAS7D,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAibhG"}