@iterable/cli 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.
Files changed (140) hide show
  1. package/COMMANDS.md +1574 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +194 -0
  4. package/dist/commands/campaigns.d.ts +3 -0
  5. package/dist/commands/campaigns.d.ts.map +1 -0
  6. package/dist/commands/campaigns.js +106 -0
  7. package/dist/commands/campaigns.js.map +1 -0
  8. package/dist/commands/catalogs.d.ts +3 -0
  9. package/dist/commands/catalogs.d.ts.map +1 -0
  10. package/dist/commands/catalogs.js +99 -0
  11. package/dist/commands/catalogs.js.map +1 -0
  12. package/dist/commands/events.d.ts +3 -0
  13. package/dist/commands/events.d.ts.map +1 -0
  14. package/dist/commands/events.js +33 -0
  15. package/dist/commands/events.js.map +1 -0
  16. package/dist/commands/experiments.d.ts +3 -0
  17. package/dist/commands/experiments.d.ts.map +1 -0
  18. package/dist/commands/experiments.js +33 -0
  19. package/dist/commands/experiments.js.map +1 -0
  20. package/dist/commands/export.d.ts +3 -0
  21. package/dist/commands/export.d.ts.map +1 -0
  22. package/dist/commands/export.js +33 -0
  23. package/dist/commands/export.js.map +1 -0
  24. package/dist/commands/journeys.d.ts +3 -0
  25. package/dist/commands/journeys.d.ts.map +1 -0
  26. package/dist/commands/journeys.js +21 -0
  27. package/dist/commands/journeys.js.map +1 -0
  28. package/dist/commands/lists.d.ts +3 -0
  29. package/dist/commands/lists.d.ts.map +1 -0
  30. package/dist/commands/lists.js +64 -0
  31. package/dist/commands/lists.js.map +1 -0
  32. package/dist/commands/messaging.d.ts +3 -0
  33. package/dist/commands/messaging.d.ts.map +1 -0
  34. package/dist/commands/messaging.js +120 -0
  35. package/dist/commands/messaging.js.map +1 -0
  36. package/dist/commands/registry.d.ts +46 -0
  37. package/dist/commands/registry.d.ts.map +1 -0
  38. package/dist/commands/registry.js +42 -0
  39. package/dist/commands/registry.js.map +1 -0
  40. package/dist/commands/snippets.d.ts +3 -0
  41. package/dist/commands/snippets.d.ts.map +1 -0
  42. package/dist/commands/snippets.js +42 -0
  43. package/dist/commands/snippets.js.map +1 -0
  44. package/dist/commands/subscriptions.d.ts +3 -0
  45. package/dist/commands/subscriptions.d.ts.map +1 -0
  46. package/dist/commands/subscriptions.js +40 -0
  47. package/dist/commands/subscriptions.js.map +1 -0
  48. package/dist/commands/templates.d.ts +3 -0
  49. package/dist/commands/templates.d.ts.map +1 -0
  50. package/dist/commands/templates.js +160 -0
  51. package/dist/commands/templates.js.map +1 -0
  52. package/dist/commands/transforms.d.ts +3 -0
  53. package/dist/commands/transforms.d.ts.map +1 -0
  54. package/dist/commands/transforms.js +24 -0
  55. package/dist/commands/transforms.js.map +1 -0
  56. package/dist/commands/types.d.ts +40 -0
  57. package/dist/commands/types.d.ts.map +1 -0
  58. package/dist/commands/types.js +15 -0
  59. package/dist/commands/types.js.map +1 -0
  60. package/dist/commands/users.d.ts +3 -0
  61. package/dist/commands/users.d.ts.map +1 -0
  62. package/dist/commands/users.js +103 -0
  63. package/dist/commands/users.js.map +1 -0
  64. package/dist/commands/webhooks.d.ts +3 -0
  65. package/dist/commands/webhooks.d.ts.map +1 -0
  66. package/dist/commands/webhooks.js +21 -0
  67. package/dist/commands/webhooks.js.map +1 -0
  68. package/dist/config.d.ts +14 -0
  69. package/dist/config.d.ts.map +1 -0
  70. package/dist/config.js +60 -0
  71. package/dist/config.js.map +1 -0
  72. package/dist/errors.d.ts +11 -0
  73. package/dist/errors.d.ts.map +1 -0
  74. package/dist/errors.js +21 -0
  75. package/dist/errors.js.map +1 -0
  76. package/dist/index.d.ts +3 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +107 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/key-manager.d.ts +280 -0
  81. package/dist/key-manager.d.ts.map +1 -0
  82. package/dist/key-manager.js +989 -0
  83. package/dist/key-manager.js.map +1 -0
  84. package/dist/keys-cli.d.ts +3 -0
  85. package/dist/keys-cli.d.ts.map +1 -0
  86. package/dist/keys-cli.js +396 -0
  87. package/dist/keys-cli.js.map +1 -0
  88. package/dist/output.d.ts +5 -0
  89. package/dist/output.d.ts.map +1 -0
  90. package/dist/output.js +104 -0
  91. package/dist/output.js.map +1 -0
  92. package/dist/parser.d.ts +26 -0
  93. package/dist/parser.d.ts.map +1 -0
  94. package/dist/parser.js +281 -0
  95. package/dist/parser.js.map +1 -0
  96. package/dist/router.d.ts +20 -0
  97. package/dist/router.d.ts.map +1 -0
  98. package/dist/router.js +137 -0
  99. package/dist/router.js.map +1 -0
  100. package/dist/utils/cli-env.d.ts +10 -0
  101. package/dist/utils/cli-env.d.ts.map +1 -0
  102. package/dist/utils/cli-env.js +21 -0
  103. package/dist/utils/cli-env.js.map +1 -0
  104. package/dist/utils/command-info.d.ts +7 -0
  105. package/dist/utils/command-info.d.ts.map +1 -0
  106. package/dist/utils/command-info.js +36 -0
  107. package/dist/utils/command-info.js.map +1 -0
  108. package/dist/utils/detect-background.d.ts +3 -0
  109. package/dist/utils/detect-background.d.ts.map +1 -0
  110. package/dist/utils/detect-background.js +33 -0
  111. package/dist/utils/detect-background.js.map +1 -0
  112. package/dist/utils/endpoint-prompt.d.ts +5 -0
  113. package/dist/utils/endpoint-prompt.d.ts.map +1 -0
  114. package/dist/utils/endpoint-prompt.js +98 -0
  115. package/dist/utils/endpoint-prompt.js.map +1 -0
  116. package/dist/utils/formatting.d.ts +3 -0
  117. package/dist/utils/formatting.d.ts.map +1 -0
  118. package/dist/utils/formatting.js +5 -0
  119. package/dist/utils/formatting.js.map +1 -0
  120. package/dist/utils/password-prompt.d.ts +3 -0
  121. package/dist/utils/password-prompt.d.ts.map +1 -0
  122. package/dist/utils/password-prompt.js +21 -0
  123. package/dist/utils/password-prompt.js.map +1 -0
  124. package/dist/utils/sanitize.d.ts +13 -0
  125. package/dist/utils/sanitize.d.ts.map +1 -0
  126. package/dist/utils/sanitize.js +23 -0
  127. package/dist/utils/sanitize.js.map +1 -0
  128. package/dist/utils/theme.d.ts +11 -0
  129. package/dist/utils/theme.d.ts.map +1 -0
  130. package/dist/utils/theme.js +14 -0
  131. package/dist/utils/theme.js.map +1 -0
  132. package/dist/utils/ui.d.ts +22 -0
  133. package/dist/utils/ui.d.ts.map +1 -0
  134. package/dist/utils/ui.js +107 -0
  135. package/dist/utils/ui.js.map +1 -0
  136. package/dist/utils/url.d.ts +13 -0
  137. package/dist/utils/url.d.ts.map +1 -0
  138. package/dist/utils/url.js +20 -0
  139. package/dist/utils/url.js.map +1 -0
  140. package/package.json +90 -0
package/dist/parser.js ADDED
@@ -0,0 +1,281 @@
1
+ import { z } from "zod";
2
+ import { parser } from "zod-opts";
3
+ import { ValidationError } from "./errors.js";
4
+ function unwrapSchema(schema) {
5
+ if (schema instanceof z.ZodOptional)
6
+ return unwrapSchema(schema.unwrap());
7
+ if (schema instanceof z.ZodNullable)
8
+ return unwrapSchema(schema.unwrap());
9
+ if (schema instanceof z.ZodDefault)
10
+ return unwrapSchema(schema.unwrap());
11
+ return schema;
12
+ }
13
+ function getSchemaShape(schema) {
14
+ const inner = unwrapSchema(schema);
15
+ if (inner instanceof z.ZodObject) {
16
+ return inner.shape;
17
+ }
18
+ return {};
19
+ }
20
+ function canZodOptsHandle(fieldSchema) {
21
+ try {
22
+ parser()
23
+ .options({ _probe: { type: fieldSchema.optional() } })
24
+ .parse([]);
25
+ return true;
26
+ }
27
+ catch (e) {
28
+ const msg = e instanceof Error ? e.message : String(e);
29
+ return !msg.includes("Unsupported zod type");
30
+ }
31
+ }
32
+ // Only return scalar defaults for display in --help and COMMANDS.md.
33
+ // Complex defaults (objects, arrays) are omitted since those fields are
34
+ // rendered as JSON fallback inputs where showing a default isn't useful.
35
+ function getDefaultValue(schema) {
36
+ if (schema instanceof z.ZodDefault) {
37
+ try {
38
+ const val = schema.parse(undefined);
39
+ if (typeof val === "string" ||
40
+ typeof val === "number" ||
41
+ typeof val === "boolean") {
42
+ return val;
43
+ }
44
+ return undefined;
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ function isOptionalField(schema) {
53
+ return (schema instanceof z.ZodOptional || getDefaultValue(schema) !== undefined);
54
+ }
55
+ function getZodTypeName(schema) {
56
+ const inner = unwrapSchema(schema);
57
+ if (inner instanceof z.ZodString)
58
+ return "string";
59
+ if (inner instanceof z.ZodNumber)
60
+ return "number";
61
+ if (inner instanceof z.ZodBoolean)
62
+ return "boolean";
63
+ if (inner instanceof z.ZodEnum)
64
+ return "enum";
65
+ if (inner instanceof z.ZodArray) {
66
+ return `${getZodTypeName(inner.element)}[]`;
67
+ }
68
+ if (inner instanceof z.ZodRecord)
69
+ return "json";
70
+ if (Object.keys(getSchemaShape(schema)).length > 0)
71
+ return "json";
72
+ return "string";
73
+ }
74
+ function getEnumValues(schema) {
75
+ const inner = unwrapSchema(schema);
76
+ if (inner instanceof z.ZodEnum)
77
+ return inner.options;
78
+ return undefined;
79
+ }
80
+ function getDescription(schema) {
81
+ return schema.description ?? "";
82
+ }
83
+ /** Describe all fields of a command — single source of truth for --help and COMMANDS.md. */
84
+ export function describeCommand(cmd) {
85
+ const shape = getSchemaShape(cmd.schema);
86
+ const positionalFieldSet = new Set(cmd.positionalArgs ?? []);
87
+ const transformFieldSet = new Set(Object.keys(cmd.cliTransforms ?? {}));
88
+ const fields = [];
89
+ for (const [, transform] of Object.entries(cmd.cliTransforms ?? {})) {
90
+ for (const [cliName, cliType] of Object.entries(transform.cliFields)) {
91
+ fields.push({
92
+ name: cliName,
93
+ type: getZodTypeName(cliType),
94
+ required: !isOptionalField(cliType),
95
+ description: getDescription(cliType),
96
+ defaultValue: getDefaultValue(cliType),
97
+ isPositional: false,
98
+ isJsonFallback: false,
99
+ isTransform: true,
100
+ enumValues: getEnumValues(cliType),
101
+ });
102
+ }
103
+ }
104
+ for (const [key, fieldSchema] of Object.entries(shape)) {
105
+ if (transformFieldSet.has(key))
106
+ continue;
107
+ const nativeSupport = canZodOptsHandle(fieldSchema);
108
+ const desc = getDescription(fieldSchema);
109
+ const objectKeys = Object.keys(getSchemaShape(fieldSchema));
110
+ fields.push({
111
+ name: key,
112
+ type: getZodTypeName(fieldSchema),
113
+ required: !isOptionalField(fieldSchema),
114
+ description: !nativeSupport && objectKeys.length > 0
115
+ ? `${desc} (JSON: {${objectKeys.join(", ")}})`
116
+ : desc,
117
+ defaultValue: getDefaultValue(fieldSchema),
118
+ isPositional: positionalFieldSet.has(key),
119
+ isJsonFallback: !nativeSupport,
120
+ isTransform: false,
121
+ enumValues: getEnumValues(fieldSchema),
122
+ objectKeys: objectKeys.length > 0 ? objectKeys : undefined,
123
+ });
124
+ }
125
+ // Auto-detect positional: if no explicit positionalArgs and exactly one
126
+ // required non-json non-transform scalar field, mark it as positional
127
+ const hasExplicitPositional = (cmd.positionalArgs ?? []).length > 0;
128
+ if (!hasExplicitPositional) {
129
+ const requiredScalars = fields.filter((f) => f.required && !f.isTransform && !f.isJsonFallback && f.type !== "json");
130
+ if (requiredScalars.length === 1 && requiredScalars[0]) {
131
+ requiredScalars[0].isPositional = true;
132
+ }
133
+ }
134
+ // Sort: required first, then alphabetical
135
+ fields.sort((a, b) => {
136
+ if (a.required !== b.required)
137
+ return a.required ? -1 : 1;
138
+ return a.name.localeCompare(b.name);
139
+ });
140
+ return fields;
141
+ }
142
+ /** Build a zod-opts parser from describeCommand metadata. */
143
+ export function buildParser(schema, commandName, positionalArgs, cliTransforms) {
144
+ const shape = getSchemaShape(schema);
145
+ const cmd = {
146
+ schema,
147
+ positionalArgs,
148
+ cliTransforms,
149
+ };
150
+ const fields = describeCommand(cmd);
151
+ const options = {};
152
+ const jsonFallbackFields = [];
153
+ for (const field of fields) {
154
+ if (field.isPositional)
155
+ continue;
156
+ if (field.isTransform) {
157
+ for (const transform of Object.values(cliTransforms ?? {})) {
158
+ if (field.name in transform.cliFields) {
159
+ const cliType = transform.cliFields[field.name];
160
+ if (cliType)
161
+ options[field.name] = { type: cliType };
162
+ break;
163
+ }
164
+ }
165
+ }
166
+ else if (field.isJsonFallback) {
167
+ options[field.name] = {
168
+ type: z
169
+ .string()
170
+ .optional()
171
+ .describe(field.description || "JSON value"),
172
+ };
173
+ jsonFallbackFields.push(field.name);
174
+ }
175
+ else {
176
+ const fieldSchema = shape[field.name];
177
+ if (fieldSchema) {
178
+ options[field.name] = { type: fieldSchema };
179
+ }
180
+ }
181
+ }
182
+ options["json"] = {
183
+ type: z
184
+ .string()
185
+ .optional()
186
+ .describe("Raw JSON input — bypasses all other flags (use '-' for stdin)"),
187
+ };
188
+ let p = parser().name(commandName).options(options);
189
+ const positionalFields = fields.filter((f) => f.isPositional);
190
+ if (positionalFields.length > 0) {
191
+ const args = positionalFields.map((f) => ({
192
+ name: f.name,
193
+ type: shape[f.name] ?? z.string(),
194
+ }));
195
+ p = p.args(args);
196
+ }
197
+ return {
198
+ parse: (argv) => p.parse(argv),
199
+ showHelp: () => {
200
+ p.parse(["--help"]);
201
+ },
202
+ jsonFallbackFields,
203
+ };
204
+ }
205
+ async function readStdin() {
206
+ if (process.stdin.isTTY) {
207
+ console.error(
208
+ // eslint-disable-line no-console
209
+ "Reading JSON from stdin (press Ctrl+D when done, Ctrl+C to cancel)...");
210
+ }
211
+ return new Promise((resolve, reject) => {
212
+ const timeout = setTimeout(() => {
213
+ reject(new Error("Timed out waiting for stdin input (30s)"));
214
+ }, 30000);
215
+ let data = "";
216
+ process.stdin.setEncoding("utf-8");
217
+ process.stdin.on("data", (chunk) => {
218
+ data += chunk;
219
+ });
220
+ process.stdin.on("end", () => {
221
+ clearTimeout(timeout);
222
+ resolve(data);
223
+ });
224
+ process.stdin.on("error", (err) => {
225
+ clearTimeout(timeout);
226
+ reject(err);
227
+ });
228
+ });
229
+ }
230
+ export async function parseCommand(schema, commandName, argv, positionalArgs, cliTransforms) {
231
+ const jsonIdx = argv.indexOf("--json");
232
+ if (jsonIdx !== -1) {
233
+ const jsonValue = argv[jsonIdx + 1];
234
+ if (!jsonValue || jsonValue.startsWith("--")) {
235
+ throw new ValidationError("--json requires a value (JSON string or '-' for stdin)");
236
+ }
237
+ const rawInput = jsonValue === "-" ? await readStdin() : jsonValue;
238
+ try {
239
+ return schema.parse(JSON.parse(rawInput));
240
+ }
241
+ catch (e) {
242
+ if (e instanceof SyntaxError) {
243
+ throw new ValidationError(`Invalid JSON: ${e.message}`);
244
+ }
245
+ throw e;
246
+ }
247
+ }
248
+ const built = buildParser(schema, commandName, positionalArgs, cliTransforms);
249
+ const result = built.parse(argv);
250
+ const { json: _json, ...rawParams } = result;
251
+ const params = {};
252
+ const mutableRawParams = { ...rawParams };
253
+ for (const [fieldName, transform] of Object.entries(cliTransforms ?? {})) {
254
+ const values = {};
255
+ for (const cliName of Object.keys(transform.cliFields)) {
256
+ values[cliName] = mutableRawParams[cliName];
257
+ delete mutableRawParams[cliName]; // eslint-disable-line @typescript-eslint/no-dynamic-delete
258
+ }
259
+ const transformed = transform.toParam(values);
260
+ if (transformed !== undefined) {
261
+ params[fieldName] = transformed;
262
+ }
263
+ }
264
+ for (const [key, value] of Object.entries(mutableRawParams)) {
265
+ if (value === undefined)
266
+ continue;
267
+ if (built.jsonFallbackFields.includes(key) && typeof value === "string") {
268
+ try {
269
+ params[key] = JSON.parse(value);
270
+ }
271
+ catch (e) {
272
+ throw new ValidationError(`Invalid JSON for --${key}: ${e instanceof Error ? e.message : String(e)}`);
273
+ }
274
+ }
275
+ else {
276
+ params[key] = value;
277
+ }
278
+ }
279
+ return schema.parse(params);
280
+ }
281
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { findCommand } from "./commands/registry.js";
2
+ import { type OutputFormat } from "./output.js";
3
+ export interface GlobalFlags {
4
+ help: boolean;
5
+ version: boolean;
6
+ output?: OutputFormat;
7
+ columns?: string[];
8
+ }
9
+ export interface ParsedArgs {
10
+ category: string | null;
11
+ action: string | null;
12
+ rest: string[];
13
+ globalFlags: GlobalFlags;
14
+ }
15
+ export declare function parseArgs(argv: string[]): ParsedArgs;
16
+ export declare function showVersion(): void;
17
+ export declare function showGlobalHelp(): Promise<void>;
18
+ export declare function showCategoryHelp(category: string): void;
19
+ export { findCommand };
20
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAShE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4CpD;AAMD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AA4BD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAmFpD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA6BvD;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/dist/router.js ADDED
@@ -0,0 +1,137 @@
1
+ /* eslint-disable no-console */
2
+ import { findCommand, getCategories, getCommandsByCategory, } from "./commands/registry.js";
3
+ import { UsageError } from "./errors.js";
4
+ import { OUTPUT_FORMATS } from "./output.js";
5
+ import { isTestEnv } from "./utils/cli-env.js";
6
+ import { COMMAND_NAME, KEYS_COMMAND_TABLE, PACKAGE_VERSION, } from "./utils/command-info.js";
7
+ import { theme } from "./utils/theme.js";
8
+ export function parseArgs(argv) {
9
+ const globalFlags = { help: false, version: false };
10
+ const remaining = [];
11
+ for (let i = 0; i < argv.length; i++) {
12
+ const arg = argv[i] ?? "";
13
+ if (arg === "--help" || arg === "-h") {
14
+ globalFlags.help = true;
15
+ }
16
+ else if (arg === "--version" || arg === "-V") {
17
+ globalFlags.version = true;
18
+ }
19
+ else if (arg === "--output" && i + 1 < argv.length) {
20
+ i++;
21
+ const value = argv[i] ?? "";
22
+ if (value.startsWith("-")) {
23
+ console.error("--output requires a value (json, pretty, or table)");
24
+ process.exit(2);
25
+ }
26
+ if (!OUTPUT_FORMATS.includes(value)) {
27
+ console.error(`Invalid output format: ${value}. Use: ${OUTPUT_FORMATS.join(", ")}`);
28
+ process.exit(2);
29
+ }
30
+ globalFlags.output = value;
31
+ }
32
+ else if (arg === "--columns" && i + 1 < argv.length) {
33
+ i++;
34
+ const value = argv[i] ?? "";
35
+ if (value.startsWith("-")) {
36
+ console.error("--columns requires a value (comma-separated column names)");
37
+ process.exit(2);
38
+ }
39
+ globalFlags.columns = value.split(",").map((s) => s.trim());
40
+ }
41
+ else {
42
+ remaining.push(arg);
43
+ }
44
+ }
45
+ const category = remaining[0] ?? null;
46
+ const action = remaining[1] ?? null;
47
+ const rest = remaining.slice(2);
48
+ return { category, action, rest, globalFlags };
49
+ }
50
+ function getVersion() {
51
+ return PACKAGE_VERSION;
52
+ }
53
+ export function showVersion() {
54
+ console.log(`${COMMAND_NAME} ${getVersion()}`);
55
+ }
56
+ async function getKeyInfo() {
57
+ if (process.env.ITERABLE_API_KEY)
58
+ return { status: "env" };
59
+ if (isTestEnv())
60
+ return { status: "none" };
61
+ try {
62
+ const { getKeyManager } = await import("./key-manager.js");
63
+ const km = getKeyManager();
64
+ await km.initialize();
65
+ if (!(await km.hasKeys()))
66
+ return { status: "none" };
67
+ if (!(await km.hasActiveKey()))
68
+ return { status: "inactive" };
69
+ const meta = await km.getActiveKeyMetadata();
70
+ return {
71
+ status: "keymanager",
72
+ name: meta?.name,
73
+ endpoint: meta?.baseUrl.replace("https://", ""),
74
+ };
75
+ }
76
+ catch {
77
+ return { status: "none" };
78
+ }
79
+ }
80
+ export async function showGlobalHelp() {
81
+ const version = getVersion();
82
+ const categories = getCategories();
83
+ const keyInfo = await getKeyInfo();
84
+ const lines = [
85
+ "",
86
+ theme.bold(`${COMMAND_NAME} v${version}`) +
87
+ " - Command-line interface for the Iterable API",
88
+ ];
89
+ switch (keyInfo.status) {
90
+ case "env":
91
+ lines.push(theme.muted(" Using API key from ITERABLE_API_KEY environment variable"));
92
+ break;
93
+ case "keymanager":
94
+ lines.push(theme.muted(` Using key "${keyInfo.name}"` +
95
+ (keyInfo.endpoint ? ` (${keyInfo.endpoint})` : "")));
96
+ break;
97
+ case "inactive":
98
+ lines.push(theme.key(" No active API key.") +
99
+ theme.muted(` Run ${theme.accent(`${COMMAND_NAME} keys activate <name>`)} to activate one.`));
100
+ break;
101
+ case "none":
102
+ lines.push(theme.key(" No API key configured.") +
103
+ theme.muted(` Run ${theme.accent(`${COMMAND_NAME} keys add`)} to add one.`));
104
+ break;
105
+ }
106
+ lines.push("", theme.bold("USAGE"), ` ${COMMAND_NAME} <category> <command> [options]`, "", theme.muted(`Run '${COMMAND_NAME} <category> --help' to see commands in a category.`), "", theme.bold("CATEGORIES"));
107
+ for (const cat of categories) {
108
+ const cmds = getCommandsByCategory(cat);
109
+ lines.push(` ${theme.accent(cat.padEnd(16))} ${theme.muted(`${cmds.length} commands`)}`);
110
+ }
111
+ lines.push("", theme.bold("GLOBAL OPTIONS"), ` ${theme.accent("--help, -h")} Show help`, ` ${theme.accent("--version, -V")} Show version`, ` ${theme.accent("--output")} <fmt> Output format: ${OUTPUT_FORMATS.join(", ")} (default: pretty)`, ` ${theme.accent("--columns")} <cols> Columns to show in table output (comma-separated)`, ` ${theme.accent("--json")} <data> Pass raw JSON — bypasses all other flags (use '-' for stdin)`, "", theme.bold("KEY MANAGEMENT"));
112
+ for (const [cmd, desc] of KEYS_COMMAND_TABLE) {
113
+ lines.push(` ${theme.accent(cmd.padEnd(45))} ${theme.muted(desc)}`);
114
+ }
115
+ lines.push("");
116
+ console.log(lines.join("\n"));
117
+ }
118
+ export function showCategoryHelp(category) {
119
+ const commands = getCommandsByCategory(category);
120
+ if (commands.length === 0) {
121
+ throw new UsageError(`Unknown category: ${category}`);
122
+ }
123
+ const lines = [
124
+ "",
125
+ theme.bold(`${COMMAND_NAME} ${category}`) + " - Available commands",
126
+ "",
127
+ ];
128
+ const maxNameLen = Math.max(...commands.map((c) => c.name.length));
129
+ for (const cmd of commands) {
130
+ const alias = cmd.isAlias ? theme.muted(" (alias)") : "";
131
+ lines.push(` ${theme.accent(cmd.name.padEnd(maxNameLen + 2))} ${cmd.description}${alias}`);
132
+ }
133
+ lines.push("", theme.muted(`Run '${COMMAND_NAME} ${category} <command> --help' for command details.`), "");
134
+ console.log(lines.join("\n"));
135
+ }
136
+ export { findCommand };
137
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function isTestEnv(): boolean;
2
+ interface Spinner {
3
+ start: (msg?: string) => void;
4
+ stop: () => void;
5
+ succeed: (msg?: string) => void;
6
+ fail: (msg?: string) => void;
7
+ }
8
+ export declare function getSpinner(): Promise<Spinner>;
9
+ export {};
10
+ //# sourceMappingURL=cli-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-env.d.ts","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,UAAU,OAAO;IACf,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAcnD"}
@@ -0,0 +1,21 @@
1
+ export function isTestEnv() {
2
+ return process.env.NODE_ENV === "test";
3
+ }
4
+ export async function getSpinner() {
5
+ const noop = {
6
+ start: () => { },
7
+ stop: () => { },
8
+ succeed: () => { },
9
+ fail: () => { },
10
+ };
11
+ if (isTestEnv())
12
+ return noop;
13
+ try {
14
+ const ora = (await import("ora")).default;
15
+ return ora();
16
+ }
17
+ catch {
18
+ return noop;
19
+ }
20
+ }
21
+ //# sourceMappingURL=cli-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-env.js","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AACzC,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAY;QACpB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;KACf,CAAC;IACF,IAAI,SAAS,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** The command name as the user would invoke it */
2
+ export declare const COMMAND_NAME: string;
3
+ /** Package version from package.json */
4
+ export declare const PACKAGE_VERSION: string;
5
+ /** Keys subcommand help rows: [command, description] */
6
+ export declare const KEYS_COMMAND_TABLE: ReadonlyArray<readonly [string, string]>;
7
+ //# sourceMappingURL=command-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-info.d.ts","sourceRoot":"","sources":["../../src/utils/command-info.ts"],"names":[],"mappings":"AAgCA,mDAAmD;AACnD,eAAO,MAAM,YAAY,EAAE,MAEF,CAAC;AAE1B,wCAAwC;AACxC,eAAO,MAAM,eAAe,EAAE,MAAoB,CAAC;AAEnD,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAU9D,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { readFileSync } from "fs";
2
+ import { dirname, join } from "path";
3
+ import { fileURLToPath } from "url";
4
+ function loadPackageJson() {
5
+ try {
6
+ const pkgPath = join(dirname(fileURLToPath(import.meta.url)), "../..", "package.json");
7
+ return JSON.parse(readFileSync(pkgPath, "utf-8"));
8
+ }
9
+ catch {
10
+ return { name: "@iterable/cli", version: "0.0.0" };
11
+ }
12
+ }
13
+ const pkg = loadPackageJson();
14
+ const binName = pkg.bin ? Object.keys(pkg.bin)[0] : undefined;
15
+ const isNpx = (process.argv[1]?.includes("npx") ||
16
+ process.env.npm_execpath?.includes("npx")) ??
17
+ false;
18
+ /** The command name as the user would invoke it */
19
+ export const COMMAND_NAME = isNpx
20
+ ? `npx ${pkg.name}`
21
+ : (binName ?? pkg.name);
22
+ /** Package version from package.json */
23
+ export const PACKAGE_VERSION = pkg.version;
24
+ /** Keys subcommand help rows: [command, description] */
25
+ export const KEYS_COMMAND_TABLE = [
26
+ [`${COMMAND_NAME} keys list`, "View all stored API keys"],
27
+ [`${COMMAND_NAME} keys add`, "Add a new API key"],
28
+ [
29
+ `${COMMAND_NAME} keys update <name-or-id>`,
30
+ "Update an existing key's settings",
31
+ ],
32
+ [`${COMMAND_NAME} keys activate <name-or-id>`, "Switch to a different key"],
33
+ [`${COMMAND_NAME} keys deactivate`, "Deactivate the current key"],
34
+ [`${COMMAND_NAME} keys delete <name-or-id>`, "Remove a key by ID or name"],
35
+ ];
36
+ //# sourceMappingURL=command-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-info.js","sourceRoot":"","sources":["../../src/utils/command-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAQpC,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAClB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,OAAO,EACP,cAAc,CACf,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAgB,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;AAE9B,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9D,MAAM,KAAK,GACT,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC;AAER,mDAAmD;AACnD,MAAM,CAAC,MAAM,YAAY,GAAW,KAAK;IACvC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE;IACnB,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAE1B,wCAAwC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAW,GAAG,CAAC,OAAO,CAAC;AAEnD,wDAAwD;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,CAAC,GAAG,YAAY,YAAY,EAAE,0BAA0B,CAAC;IACzD,CAAC,GAAG,YAAY,WAAW,EAAE,mBAAmB,CAAC;IACjD;QACE,GAAG,YAAY,2BAA2B;QAC1C,mCAAmC;KACpC;IACD,CAAC,GAAG,YAAY,6BAA6B,EAAE,2BAA2B,CAAC;IAC3E,CAAC,GAAG,YAAY,kBAAkB,EAAE,4BAA4B,CAAC;IACjE,CAAC,GAAG,YAAY,2BAA2B,EAAE,4BAA4B,CAAC;CAClE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type BackgroundMode = "dark" | "light";
2
+ export declare function detectBackground(): BackgroundMode;
3
+ //# sourceMappingURL=detect-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-background.d.ts","sourceRoot":"","sources":["../../src/utils/detect-background.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,cAAc,CA8BjD"}
@@ -0,0 +1,33 @@
1
+ export function detectBackground() {
2
+ const override = (process.env.ITERABLE_UI_THEME ?? "").toLowerCase();
3
+ if (override === "dark")
4
+ return "dark";
5
+ if (override === "light")
6
+ return "light";
7
+ if (process.env.NO_COLOR)
8
+ return "light";
9
+ const cfg = process.env.COLORFGBG;
10
+ if (cfg) {
11
+ const parts = cfg.split(";");
12
+ const bg = parseInt(parts[parts.length - 1] ?? "", 10);
13
+ if (!Number.isNaN(bg))
14
+ return bg <= 7 ? "dark" : "light";
15
+ }
16
+ const term = (process.env.TERM_PROGRAM ?? "").toLowerCase();
17
+ if (term === "apple_terminal")
18
+ return "light";
19
+ if ([
20
+ "iterm.app",
21
+ "wezterm",
22
+ "ghostty",
23
+ "vscode",
24
+ "hyper",
25
+ "alacritty",
26
+ "kitty",
27
+ ].includes(term))
28
+ return "dark";
29
+ if (process.env.TERM?.includes("256color"))
30
+ return "dark";
31
+ return "light";
32
+ }
33
+ //# sourceMappingURL=detect-background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-background.js","sourceRoot":"","sources":["../../src/utils/detect-background.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAEzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,OAAO,CAAC;IAC9C,IACE;QACE,WAAW;QACX,SAAS;QACT,SAAS;QACT,QAAQ;QACR,OAAO;QACP,WAAW;QACX,OAAO;KACR,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEhB,OAAO,MAAM,CAAC;IAChB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IAE1D,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Prompt user to select Iterable region or provide a custom endpoint. */
2
+ export declare function promptForIterableBaseUrl(options?: {
3
+ defaultBaseUrl?: string;
4
+ }): Promise<string>;
5
+ //# sourceMappingURL=endpoint-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-prompt.d.ts","sourceRoot":"","sources":["../../src/utils/endpoint-prompt.ts"],"names":[],"mappings":"AAQA,0EAA0E;AAC1E,wBAAsB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGlB"}