@cakemail-org/cakemail-cli 1.3.0 → 1.7.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 (103) hide show
  1. package/README.md +312 -12
  2. package/dist/cli.js +59 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +15 -7
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands/account.d.ts +5 -0
  9. package/dist/commands/account.d.ts.map +1 -0
  10. package/dist/commands/account.js +231 -0
  11. package/dist/commands/account.js.map +1 -0
  12. package/dist/commands/attributes.d.ts.map +1 -1
  13. package/dist/commands/attributes.js +43 -15
  14. package/dist/commands/attributes.js.map +1 -1
  15. package/dist/commands/campaigns.d.ts.map +1 -1
  16. package/dist/commands/campaigns.js +255 -26
  17. package/dist/commands/campaigns.js.map +1 -1
  18. package/dist/commands/config.d.ts +8 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +294 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/contacts.d.ts.map +1 -1
  23. package/dist/commands/contacts.js +321 -47
  24. package/dist/commands/contacts.js.map +1 -1
  25. package/dist/commands/interests.d.ts +5 -0
  26. package/dist/commands/interests.d.ts.map +1 -0
  27. package/dist/commands/interests.js +172 -0
  28. package/dist/commands/interests.js.map +1 -0
  29. package/dist/commands/lists.d.ts.map +1 -1
  30. package/dist/commands/lists.js +165 -30
  31. package/dist/commands/lists.js.map +1 -1
  32. package/dist/commands/logs.d.ts +5 -0
  33. package/dist/commands/logs.d.ts.map +1 -0
  34. package/dist/commands/logs.js +237 -0
  35. package/dist/commands/logs.js.map +1 -0
  36. package/dist/commands/reports.d.ts.map +1 -1
  37. package/dist/commands/reports.js +90 -13
  38. package/dist/commands/reports.js.map +1 -1
  39. package/dist/commands/segments.d.ts.map +1 -1
  40. package/dist/commands/segments.js +59 -21
  41. package/dist/commands/segments.js.map +1 -1
  42. package/dist/commands/senders.d.ts.map +1 -1
  43. package/dist/commands/senders.js +46 -12
  44. package/dist/commands/senders.js.map +1 -1
  45. package/dist/commands/suppressed.d.ts.map +1 -1
  46. package/dist/commands/suppressed.js +20 -6
  47. package/dist/commands/suppressed.js.map +1 -1
  48. package/dist/commands/tags.d.ts +5 -0
  49. package/dist/commands/tags.d.ts.map +1 -0
  50. package/dist/commands/tags.js +124 -0
  51. package/dist/commands/tags.js.map +1 -0
  52. package/dist/commands/templates.d.ts.map +1 -1
  53. package/dist/commands/templates.js +11 -3
  54. package/dist/commands/templates.js.map +1 -1
  55. package/dist/commands/transactional-templates.d.ts +5 -0
  56. package/dist/commands/transactional-templates.d.ts.map +1 -0
  57. package/dist/commands/transactional-templates.js +354 -0
  58. package/dist/commands/transactional-templates.js.map +1 -0
  59. package/dist/types/profile.d.ts +92 -0
  60. package/dist/types/profile.d.ts.map +1 -0
  61. package/dist/types/profile.js +119 -0
  62. package/dist/types/profile.js.map +1 -0
  63. package/dist/utils/auth.d.ts +33 -0
  64. package/dist/utils/auth.d.ts.map +1 -0
  65. package/dist/utils/auth.js +226 -0
  66. package/dist/utils/auth.js.map +1 -0
  67. package/dist/utils/config-file.d.ts +99 -0
  68. package/dist/utils/config-file.d.ts.map +1 -0
  69. package/dist/utils/config-file.js +259 -0
  70. package/dist/utils/config-file.js.map +1 -0
  71. package/dist/utils/config.d.ts +13 -2
  72. package/dist/utils/config.d.ts.map +1 -1
  73. package/dist/utils/config.js +82 -8
  74. package/dist/utils/config.js.map +1 -1
  75. package/dist/utils/confirm.d.ts +38 -0
  76. package/dist/utils/confirm.d.ts.map +1 -0
  77. package/dist/utils/confirm.js +124 -0
  78. package/dist/utils/confirm.js.map +1 -0
  79. package/dist/utils/defaults.d.ts +39 -0
  80. package/dist/utils/defaults.d.ts.map +1 -0
  81. package/dist/utils/defaults.js +195 -0
  82. package/dist/utils/defaults.js.map +1 -0
  83. package/dist/utils/errors.d.ts +67 -0
  84. package/dist/utils/errors.d.ts.map +1 -0
  85. package/dist/utils/errors.js +395 -0
  86. package/dist/utils/errors.js.map +1 -0
  87. package/dist/utils/interactive.d.ts +97 -0
  88. package/dist/utils/interactive.d.ts.map +1 -0
  89. package/dist/utils/interactive.js +265 -0
  90. package/dist/utils/interactive.js.map +1 -0
  91. package/dist/utils/list-defaults.d.ts +33 -0
  92. package/dist/utils/list-defaults.d.ts.map +1 -0
  93. package/dist/utils/list-defaults.js +52 -0
  94. package/dist/utils/list-defaults.js.map +1 -0
  95. package/dist/utils/output.d.ts +72 -2
  96. package/dist/utils/output.d.ts.map +1 -1
  97. package/dist/utils/output.js +407 -38
  98. package/dist/utils/output.js.map +1 -1
  99. package/dist/utils/progress.d.ts +139 -0
  100. package/dist/utils/progress.d.ts.map +1 -0
  101. package/dist/utils/progress.js +216 -0
  102. package/dist/utils/progress.js.map +1 -0
  103. package/package.json +19 -3
@@ -0,0 +1,395 @@
1
+ import chalk from 'chalk';
2
+ /**
3
+ * Common HTTP status codes and their user-friendly messages
4
+ */
5
+ const HTTP_ERROR_MESSAGES = {
6
+ 400: (ctx) => ({
7
+ message: 'Invalid request parameters',
8
+ suggestion: ctx.operation
9
+ ? `Check the parameters for '${ctx.operation}' operation`
10
+ : 'Please check your command arguments and try again',
11
+ help: 'Use --help to see available options'
12
+ }),
13
+ 401: (ctx) => ({
14
+ message: 'Authentication failed',
15
+ suggestion: 'Your credentials are invalid or expired',
16
+ help: [
17
+ 'To re-authenticate, run: cakemail account logout --force',
18
+ 'Then run any command to authenticate again',
19
+ 'Or check your .env file credentials'
20
+ ].join('\n')
21
+ }),
22
+ 403: (ctx) => ({
23
+ message: 'Permission denied',
24
+ suggestion: ctx.resource
25
+ ? `You don't have permission to access this ${ctx.resource}`
26
+ : 'You don\'t have permission to perform this action',
27
+ help: ctx.resourceId
28
+ ? `Check if ${ctx.resource} ${ctx.resourceId} exists and you have access`
29
+ : 'Verify your account permissions'
30
+ }),
31
+ 404: (ctx) => ({
32
+ message: ctx.resource
33
+ ? `${capitalize(ctx.resource)} not found`
34
+ : 'Resource not found',
35
+ suggestion: ctx.resourceId && ctx.resource
36
+ ? `${capitalize(ctx.resource)} with ID '${ctx.resourceId}' doesn't exist`
37
+ : `The requested ${ctx.resource || 'resource'} doesn't exist`,
38
+ help: getListCommandSuggestion(ctx.resource)
39
+ }),
40
+ 409: (ctx) => ({
41
+ message: 'Conflict - resource already exists',
42
+ suggestion: ctx.resource
43
+ ? `This ${ctx.resource} already exists or conflicts with existing data`
44
+ : 'The resource already exists',
45
+ help: 'Try updating the existing resource instead of creating a new one'
46
+ }),
47
+ 422: (ctx) => ({
48
+ message: 'Validation error',
49
+ suggestion: 'One or more fields have invalid values',
50
+ help: 'Check the error details above for specific field errors'
51
+ }),
52
+ 429: (ctx) => ({
53
+ message: 'Rate limit exceeded',
54
+ suggestion: 'You\'re making too many requests',
55
+ help: 'Wait a moment before trying again, or reduce request frequency'
56
+ }),
57
+ 500: (ctx) => ({
58
+ message: 'Server error',
59
+ suggestion: 'Something went wrong on the Cakemail server',
60
+ help: 'This is not your fault. Please try again in a few moments or contact support'
61
+ }),
62
+ 502: (ctx) => ({
63
+ message: 'Bad gateway',
64
+ suggestion: 'The Cakemail API is temporarily unavailable',
65
+ help: 'Please try again in a few moments'
66
+ }),
67
+ 503: (ctx) => ({
68
+ message: 'Service unavailable',
69
+ suggestion: 'The Cakemail API is temporarily down for maintenance',
70
+ help: 'Please try again later'
71
+ })
72
+ };
73
+ /**
74
+ * Common error patterns and their user-friendly messages
75
+ */
76
+ const ERROR_PATTERNS = [
77
+ {
78
+ pattern: /network|ECONNREFUSED|ENOTFOUND|timeout/i,
79
+ handler: (match, ctx) => ({
80
+ message: 'Network connection error',
81
+ suggestion: 'Unable to connect to the Cakemail API',
82
+ help: [
83
+ 'Check your internet connection',
84
+ 'Verify the API endpoint is correct',
85
+ 'Check if there\'s a firewall blocking the connection'
86
+ ].join('\n')
87
+ })
88
+ },
89
+ {
90
+ pattern: /email.*required|invalid.*email/i,
91
+ handler: (match, ctx) => ({
92
+ message: 'Invalid email address',
93
+ suggestion: 'Please provide a valid email address',
94
+ help: 'Example: user@example.com'
95
+ })
96
+ },
97
+ {
98
+ pattern: /list.*not.*found/i,
99
+ handler: (match, ctx) => ({
100
+ message: 'List not found',
101
+ suggestion: ctx.resourceId
102
+ ? `List ${ctx.resourceId} doesn't exist or you don't have access`
103
+ : 'The specified list doesn\'t exist',
104
+ help: 'Use: cakemail lists list to see all available lists'
105
+ })
106
+ },
107
+ {
108
+ pattern: /campaign.*not.*found/i,
109
+ handler: (match, ctx) => ({
110
+ message: 'Campaign not found',
111
+ suggestion: ctx.resourceId
112
+ ? `Campaign ${ctx.resourceId} doesn't exist or you don't have access`
113
+ : 'The specified campaign doesn\'t exist',
114
+ help: 'Use: cakemail campaigns list to see all campaigns'
115
+ })
116
+ },
117
+ {
118
+ pattern: /contact.*not.*found/i,
119
+ handler: (match, ctx) => ({
120
+ message: 'Contact not found',
121
+ suggestion: ctx.resourceId
122
+ ? `Contact ${ctx.resourceId} doesn't exist in this list`
123
+ : 'The specified contact doesn\'t exist',
124
+ help: 'Use: cakemail contacts list <list-id> to see contacts'
125
+ })
126
+ },
127
+ {
128
+ pattern: /Missing.*CAKEMAIL/i,
129
+ handler: (match, ctx) => ({
130
+ message: 'Missing credentials',
131
+ suggestion: 'Authentication credentials are not configured',
132
+ help: [
133
+ 'Set credentials in .env file or environment variables:',
134
+ ' CAKEMAIL_EMAIL=your@email.com',
135
+ ' CAKEMAIL_PASSWORD=your_password',
136
+ '',
137
+ 'Or run any command to authenticate interactively'
138
+ ].join('\n')
139
+ })
140
+ }
141
+ ];
142
+ /**
143
+ * Get list command suggestion for a resource type
144
+ */
145
+ function getListCommandSuggestion(resource) {
146
+ if (!resource)
147
+ return undefined;
148
+ const commands = {
149
+ 'list': 'cakemail lists list',
150
+ 'campaign': 'cakemail campaigns list',
151
+ 'contact': 'cakemail contacts list <list-id>',
152
+ 'sender': 'cakemail senders list',
153
+ 'template': 'cakemail templates list',
154
+ 'webhook': 'cakemail webhooks list',
155
+ 'segment': 'cakemail segments list <list-id>',
156
+ 'attribute': 'cakemail attributes list <list-id>'
157
+ };
158
+ const command = commands[resource.toLowerCase()];
159
+ return command ? `To see all ${resource}s, use: ${command}` : undefined;
160
+ }
161
+ /**
162
+ * Capitalize first letter
163
+ */
164
+ function capitalize(str) {
165
+ return str.charAt(0).toUpperCase() + str.slice(1);
166
+ }
167
+ /**
168
+ * Parse API error response
169
+ */
170
+ function parseApiError(error) {
171
+ // Check for SDK/Axios error structure
172
+ if (error.response) {
173
+ return {
174
+ statusCode: error.response.status,
175
+ message: error.response.data?.message || error.response.data?.error || error.message,
176
+ details: error.response.data
177
+ };
178
+ }
179
+ // Check for SDK ApiError structure
180
+ if (error.status) {
181
+ return {
182
+ statusCode: error.status,
183
+ message: error.body?.message || error.message,
184
+ details: error.body
185
+ };
186
+ }
187
+ // Fallback to error message
188
+ return {
189
+ message: error.message || 'An unknown error occurred'
190
+ };
191
+ }
192
+ /**
193
+ * Enhance error with user-friendly message and suggestions
194
+ */
195
+ export function enhanceError(error, context) {
196
+ const parsed = parseApiError(error);
197
+ // Try HTTP status code mapping first
198
+ if (parsed.statusCode && HTTP_ERROR_MESSAGES[parsed.statusCode]) {
199
+ const enhanced = HTTP_ERROR_MESSAGES[parsed.statusCode](context);
200
+ // Add validation details for 422 errors
201
+ if (parsed.statusCode === 422 && parsed.details?.errors) {
202
+ enhanced.suggestion = formatValidationErrors(parsed.details.errors);
203
+ }
204
+ return enhanced;
205
+ }
206
+ // Try pattern matching
207
+ for (const { pattern, handler } of ERROR_PATTERNS) {
208
+ const match = parsed.message.match(pattern);
209
+ if (match) {
210
+ return handler(match, context);
211
+ }
212
+ }
213
+ // Fallback to original error message
214
+ return {
215
+ message: parsed.message,
216
+ suggestion: 'An unexpected error occurred',
217
+ help: 'If this persists, please report it at: https://github.com/cakemail/cli/issues'
218
+ };
219
+ }
220
+ /**
221
+ * Format validation errors from API response
222
+ */
223
+ function formatValidationErrors(errors) {
224
+ if (Array.isArray(errors)) {
225
+ return errors.map(err => {
226
+ if (typeof err === 'string')
227
+ return err;
228
+ if (err.field && err.message)
229
+ return `${err.field}: ${err.message}`;
230
+ if (err.loc && err.msg)
231
+ return `${err.loc.join('.')}: ${err.msg}`;
232
+ return JSON.stringify(err);
233
+ }).join('\n');
234
+ }
235
+ if (typeof errors === 'object') {
236
+ return Object.entries(errors)
237
+ .map(([field, message]) => `${field}: ${message}`)
238
+ .join('\n');
239
+ }
240
+ return String(errors);
241
+ }
242
+ /**
243
+ * Display enhanced error to user (profile-aware)
244
+ */
245
+ export function displayError(error, context) {
246
+ const enhanced = enhanceError(error, context);
247
+ const profile = context.profileConfig;
248
+ const verboseErrors = profile?.display.verbose_errors ?? false;
249
+ const showApiDetails = profile?.display.show_api_details ?? false;
250
+ // For developer profile: show technical details
251
+ if (verboseErrors && showApiDetails) {
252
+ displayDeveloperError(error, enhanced, context);
253
+ }
254
+ else {
255
+ // For marketer/balanced profile: show friendly error
256
+ displayFriendlyError(enhanced, context);
257
+ }
258
+ }
259
+ /**
260
+ * Display friendly error message (marketer/balanced profile)
261
+ */
262
+ function displayFriendlyError(enhanced, context) {
263
+ // Main error message
264
+ console.error(chalk.red('✗ Oops!'), chalk.bold(enhanced.message));
265
+ // Suggestion
266
+ if (enhanced.suggestion) {
267
+ console.error(chalk.yellow('\n→'), enhanced.suggestion);
268
+ }
269
+ // Help text
270
+ if (enhanced.help) {
271
+ console.error(chalk.gray('\n💡 What you can do:'));
272
+ enhanced.help.split('\n').forEach(line => {
273
+ console.error(chalk.gray(' ' + line));
274
+ });
275
+ }
276
+ // Docs URL
277
+ if (enhanced.docsUrl) {
278
+ console.error(chalk.cyan('\n📖 Learn more:'), enhanced.docsUrl);
279
+ }
280
+ console.error(''); // Empty line for spacing
281
+ }
282
+ /**
283
+ * Display technical error message (developer profile)
284
+ */
285
+ function displayDeveloperError(error, enhanced, context) {
286
+ const parsed = parseApiError(error);
287
+ // Main error message
288
+ console.error(chalk.red('Error:'), enhanced.message);
289
+ // Status code and details
290
+ if (parsed.statusCode) {
291
+ console.error(chalk.gray(`Status: ${parsed.statusCode}`));
292
+ }
293
+ if (context.operation) {
294
+ console.error(chalk.gray(`Operation: ${context.operation}`));
295
+ }
296
+ if (context.resource && context.resourceId) {
297
+ console.error(chalk.gray(`Resource: ${context.resource} (${context.resourceId})`));
298
+ }
299
+ // API response details
300
+ if (parsed.details) {
301
+ console.error(chalk.gray('\nAPI Response:'));
302
+ console.error(chalk.gray(JSON.stringify(parsed.details, null, 2)));
303
+ }
304
+ // Suggestion
305
+ if (enhanced.suggestion) {
306
+ console.error(chalk.yellow('\nSuggestion:'), enhanced.suggestion);
307
+ }
308
+ // Help text
309
+ if (enhanced.help) {
310
+ console.error(chalk.gray('\nHelp:'));
311
+ enhanced.help.split('\n').forEach(line => {
312
+ console.error(chalk.gray(' ' + line));
313
+ });
314
+ }
315
+ console.error(''); // Empty line for spacing
316
+ }
317
+ /**
318
+ * Validation helpers
319
+ */
320
+ export const validate = {
321
+ /**
322
+ * Validate email format
323
+ */
324
+ email(email) {
325
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
326
+ if (!emailRegex.test(email)) {
327
+ return {
328
+ valid: false,
329
+ error: `Invalid email format: ${email}`
330
+ };
331
+ }
332
+ return { valid: true };
333
+ },
334
+ /**
335
+ * Validate ID is a positive integer
336
+ */
337
+ id(id, resourceName = 'ID') {
338
+ const numId = typeof id === 'string' ? parseInt(id, 10) : id;
339
+ if (isNaN(numId) || numId <= 0) {
340
+ return {
341
+ valid: false,
342
+ error: `${resourceName} must be a positive number, got: ${id}`
343
+ };
344
+ }
345
+ return { valid: true };
346
+ },
347
+ /**
348
+ * Validate date format (YYYY-MM-DD)
349
+ */
350
+ date(date) {
351
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
352
+ if (!dateRegex.test(date)) {
353
+ return {
354
+ valid: false,
355
+ error: `Invalid date format: ${date}. Expected: YYYY-MM-DD (e.g., 2025-01-15)`
356
+ };
357
+ }
358
+ const parsed = new Date(date);
359
+ if (isNaN(parsed.getTime())) {
360
+ return {
361
+ valid: false,
362
+ error: `Invalid date: ${date}`
363
+ };
364
+ }
365
+ return { valid: true };
366
+ },
367
+ /**
368
+ * Validate required field
369
+ */
370
+ required(value, fieldName) {
371
+ if (value === undefined || value === null || value === '') {
372
+ return {
373
+ valid: false,
374
+ error: `${fieldName} is required`
375
+ };
376
+ }
377
+ return { valid: true };
378
+ },
379
+ /**
380
+ * Validate JSON string
381
+ */
382
+ json(jsonString, fieldName = 'JSON') {
383
+ try {
384
+ const parsed = JSON.parse(jsonString);
385
+ return { valid: true, parsed };
386
+ }
387
+ catch (e) {
388
+ return {
389
+ valid: false,
390
+ error: `Invalid ${fieldName}: ${e.message}`
391
+ };
392
+ }
393
+ }
394
+ };
395
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Interactive Prompt System
3
+ *
4
+ * Profile-aware prompts that adapt to user preferences:
5
+ * - Developer profile: Skip prompts, require explicit arguments
6
+ * - Marketer profile: Interactive prompts for missing arguments
7
+ * - Balanced profile: Auto-detect TTY and prompt when interactive
8
+ */
9
+ import { ProfileConfig } from '../types/profile.js';
10
+ /**
11
+ * Check if we're in an interactive terminal
12
+ */
13
+ export declare function isInteractive(): boolean;
14
+ /**
15
+ * Check if we're in scripting/batch mode
16
+ * Indicators: CI environment, non-TTY, or explicit flags
17
+ */
18
+ export declare function isScriptingMode(): boolean;
19
+ /**
20
+ * Determine if prompts should be shown based on profile and environment
21
+ */
22
+ export declare function shouldPrompt(profileConfig?: ProfileConfig): boolean;
23
+ /**
24
+ * Prompt for a text input
25
+ */
26
+ export declare function promptText(message: string, options?: {
27
+ default?: string;
28
+ required?: boolean;
29
+ validate?: (input: string) => boolean | string;
30
+ profileConfig?: ProfileConfig;
31
+ }): Promise<string | undefined>;
32
+ /**
33
+ * Prompt for a number input
34
+ */
35
+ export declare function promptNumber(message: string, options?: {
36
+ default?: number;
37
+ required?: boolean;
38
+ min?: number;
39
+ max?: number;
40
+ profileConfig?: ProfileConfig;
41
+ }): Promise<number | undefined>;
42
+ /**
43
+ * Prompt for a selection from a list
44
+ */
45
+ export declare function promptSelect<T = string>(message: string, choices: Array<{
46
+ name: string;
47
+ value: T;
48
+ description?: string;
49
+ }>, options?: {
50
+ default?: T;
51
+ required?: boolean;
52
+ profileConfig?: ProfileConfig;
53
+ }): Promise<T | undefined>;
54
+ /**
55
+ * Prompt for multiple selections from a list
56
+ */
57
+ export declare function promptMultiSelect<T = string>(message: string, choices: Array<{
58
+ name: string;
59
+ value: T;
60
+ description?: string;
61
+ checked?: boolean;
62
+ }>, options?: {
63
+ required?: boolean;
64
+ profileConfig?: ProfileConfig;
65
+ }): Promise<T[] | undefined>;
66
+ /**
67
+ * Prompt for yes/no confirmation
68
+ */
69
+ export declare function promptConfirm(message: string, options?: {
70
+ default?: boolean;
71
+ profileConfig?: ProfileConfig;
72
+ }): Promise<boolean>;
73
+ /**
74
+ * Prompt for password/secret input (hidden)
75
+ */
76
+ export declare function promptPassword(message: string, options?: {
77
+ required?: boolean;
78
+ validate?: (input: string) => boolean | string;
79
+ profileConfig?: ProfileConfig;
80
+ }): Promise<string | undefined>;
81
+ /**
82
+ * Show a loading spinner (profile-aware)
83
+ */
84
+ export interface Spinner {
85
+ start(text?: string): void;
86
+ stop(text?: string): void;
87
+ succeed(text?: string): void;
88
+ fail(text?: string): void;
89
+ text: string;
90
+ }
91
+ /**
92
+ * Create a profile-aware spinner
93
+ * Returns a real spinner for profiles with show_progress enabled,
94
+ * otherwise returns a no-op spinner
95
+ */
96
+ export declare function createSpinner(initialText: string, profileConfig?: ProfileConfig): Spinner;
97
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"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"}