@buoy-design/cli 0.1.9 → 0.1.11

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 (160) hide show
  1. package/dist/cloud/client.d.ts +261 -0
  2. package/dist/cloud/client.d.ts.map +1 -0
  3. package/dist/cloud/client.js +140 -0
  4. package/dist/cloud/client.js.map +1 -0
  5. package/dist/cloud/config.d.ts +51 -0
  6. package/dist/cloud/config.d.ts.map +1 -0
  7. package/dist/cloud/config.js +98 -0
  8. package/dist/cloud/config.js.map +1 -0
  9. package/dist/cloud/index.d.ts +5 -0
  10. package/dist/cloud/index.d.ts.map +1 -0
  11. package/dist/cloud/index.js +5 -0
  12. package/dist/cloud/index.js.map +1 -0
  13. package/dist/cloud/queue.d.ts +52 -0
  14. package/dist/cloud/queue.d.ts.map +1 -0
  15. package/dist/cloud/queue.js +108 -0
  16. package/dist/cloud/queue.js.map +1 -0
  17. package/dist/cloud/sync.d.ts +75 -0
  18. package/dist/cloud/sync.d.ts.map +1 -0
  19. package/dist/cloud/sync.js +116 -0
  20. package/dist/cloud/sync.js.map +1 -0
  21. package/dist/commands/begin.d.ts +8 -0
  22. package/dist/commands/begin.d.ts.map +1 -0
  23. package/dist/commands/begin.js +380 -0
  24. package/dist/commands/begin.js.map +1 -0
  25. package/dist/commands/billing.d.ts +11 -0
  26. package/dist/commands/billing.d.ts.map +1 -0
  27. package/dist/commands/billing.js +295 -0
  28. package/dist/commands/billing.js.map +1 -0
  29. package/dist/commands/ci.d.ts.map +1 -1
  30. package/dist/commands/ci.js +18 -0
  31. package/dist/commands/ci.js.map +1 -1
  32. package/dist/commands/dock.d.ts +3 -0
  33. package/dist/commands/dock.d.ts.map +1 -0
  34. package/dist/commands/dock.js +881 -0
  35. package/dist/commands/dock.js.map +1 -0
  36. package/dist/commands/drift.d.ts.map +1 -1
  37. package/dist/commands/drift.js +36 -2
  38. package/dist/commands/drift.js.map +1 -1
  39. package/dist/commands/explain.d.ts.map +1 -1
  40. package/dist/commands/explain.js +15 -3
  41. package/dist/commands/explain.js.map +1 -1
  42. package/dist/commands/github.d.ts +10 -0
  43. package/dist/commands/github.d.ts.map +1 -0
  44. package/dist/commands/github.js +223 -0
  45. package/dist/commands/github.js.map +1 -0
  46. package/dist/commands/history.d.ts +3 -0
  47. package/dist/commands/history.d.ts.map +1 -0
  48. package/dist/commands/history.js +320 -0
  49. package/dist/commands/history.js.map +1 -0
  50. package/dist/commands/index.d.ts +11 -1
  51. package/dist/commands/index.d.ts.map +1 -1
  52. package/dist/commands/index.js +12 -1
  53. package/dist/commands/index.js.map +1 -1
  54. package/dist/commands/link.d.ts +8 -0
  55. package/dist/commands/link.d.ts.map +1 -0
  56. package/dist/commands/link.js +279 -0
  57. package/dist/commands/link.js.map +1 -0
  58. package/dist/commands/login.d.ts +8 -0
  59. package/dist/commands/login.d.ts.map +1 -0
  60. package/dist/commands/login.js +143 -0
  61. package/dist/commands/login.js.map +1 -0
  62. package/dist/commands/logout.d.ts +8 -0
  63. package/dist/commands/logout.d.ts.map +1 -0
  64. package/dist/commands/logout.js +31 -0
  65. package/dist/commands/logout.js.map +1 -0
  66. package/dist/commands/scan.d.ts.map +1 -1
  67. package/dist/commands/scan.js +178 -31
  68. package/dist/commands/scan.js.map +1 -1
  69. package/dist/commands/status.d.ts.map +1 -1
  70. package/dist/commands/status.js +135 -20
  71. package/dist/commands/status.js.map +1 -1
  72. package/dist/commands/sync.d.ts +8 -0
  73. package/dist/commands/sync.d.ts.map +1 -0
  74. package/dist/commands/sync.js +126 -0
  75. package/dist/commands/sync.js.map +1 -0
  76. package/dist/commands/tokens.js +1 -1
  77. package/dist/commands/unlink.d.ts +8 -0
  78. package/dist/commands/unlink.d.ts.map +1 -0
  79. package/dist/commands/unlink.js +80 -0
  80. package/dist/commands/unlink.js.map +1 -0
  81. package/dist/commands/whoami.d.ts +8 -0
  82. package/dist/commands/whoami.d.ts.map +1 -0
  83. package/dist/commands/whoami.js +86 -0
  84. package/dist/commands/whoami.js.map +1 -0
  85. package/dist/config/auto-detect.d.ts.map +1 -1
  86. package/dist/config/auto-detect.js +9 -2
  87. package/dist/config/auto-detect.js.map +1 -1
  88. package/dist/config/loader.d.ts.map +1 -1
  89. package/dist/config/loader.js +6 -6
  90. package/dist/config/loader.js.map +1 -1
  91. package/dist/config/schema.d.ts +70 -0
  92. package/dist/config/schema.d.ts.map +1 -1
  93. package/dist/config/schema.js +8 -0
  94. package/dist/config/schema.js.map +1 -1
  95. package/dist/hooks/index.js +3 -3
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +15 -2
  98. package/dist/index.js.map +1 -1
  99. package/dist/insights/index.d.ts +3 -0
  100. package/dist/insights/index.d.ts.map +1 -0
  101. package/dist/insights/index.js +3 -0
  102. package/dist/insights/index.js.map +1 -0
  103. package/dist/insights/interactive.d.ts +11 -0
  104. package/dist/insights/interactive.d.ts.map +1 -0
  105. package/dist/insights/interactive.js +36 -0
  106. package/dist/insights/interactive.js.map +1 -0
  107. package/dist/insights/project-insights.d.ts +39 -0
  108. package/dist/insights/project-insights.d.ts.map +1 -0
  109. package/dist/insights/project-insights.js +198 -0
  110. package/dist/insights/project-insights.js.map +1 -0
  111. package/dist/integrations/github-formatter.js +4 -4
  112. package/dist/integrations/github-formatter.js.map +1 -1
  113. package/dist/output/formatters.d.ts +6 -0
  114. package/dist/output/formatters.d.ts.map +1 -1
  115. package/dist/output/formatters.js +236 -1
  116. package/dist/output/formatters.js.map +1 -1
  117. package/dist/scan/orchestrator.d.ts +14 -1
  118. package/dist/scan/orchestrator.d.ts.map +1 -1
  119. package/dist/scan/orchestrator.js +64 -4
  120. package/dist/scan/orchestrator.js.map +1 -1
  121. package/dist/services/architect.js +1 -1
  122. package/dist/services/architect.js.map +1 -1
  123. package/dist/services/drift-analysis.d.ts +3 -0
  124. package/dist/services/drift-analysis.d.ts.map +1 -1
  125. package/dist/services/drift-analysis.js +18 -2
  126. package/dist/services/drift-analysis.js.map +1 -1
  127. package/dist/store/cloud-store.d.ts +34 -0
  128. package/dist/store/cloud-store.d.ts.map +1 -0
  129. package/dist/store/cloud-store.js +100 -0
  130. package/dist/store/cloud-store.js.map +1 -0
  131. package/dist/store/index.d.ts +57 -0
  132. package/dist/store/index.d.ts.map +1 -0
  133. package/dist/store/index.js +93 -0
  134. package/dist/store/index.js.map +1 -0
  135. package/dist/store/local-store.d.ts +31 -0
  136. package/dist/store/local-store.d.ts.map +1 -0
  137. package/dist/store/local-store.js +384 -0
  138. package/dist/store/local-store.js.map +1 -0
  139. package/dist/store/types.d.ts +147 -0
  140. package/dist/store/types.d.ts.map +1 -0
  141. package/dist/store/types.js +6 -0
  142. package/dist/store/types.js.map +1 -0
  143. package/dist/wizard/ci-generator.d.ts +15 -0
  144. package/dist/wizard/ci-generator.d.ts.map +1 -0
  145. package/dist/wizard/ci-generator.js +129 -0
  146. package/dist/wizard/ci-generator.js.map +1 -0
  147. package/dist/wizard/index.d.ts +7 -0
  148. package/dist/wizard/index.d.ts.map +1 -0
  149. package/dist/wizard/index.js +7 -0
  150. package/dist/wizard/index.js.map +1 -0
  151. package/dist/wizard/issue-reviewer.d.ts +16 -0
  152. package/dist/wizard/issue-reviewer.d.ts.map +1 -0
  153. package/dist/wizard/issue-reviewer.js +183 -0
  154. package/dist/wizard/issue-reviewer.js.map +1 -0
  155. package/dist/wizard/menu.d.ts +46 -0
  156. package/dist/wizard/menu.d.ts.map +1 -0
  157. package/dist/wizard/menu.js +88 -0
  158. package/dist/wizard/menu.js.map +1 -0
  159. package/package.json +19 -15
  160. package/LICENSE +0 -21
@@ -0,0 +1,380 @@
1
+ /**
2
+ * buoy begin - Interactive wizard for new users.
3
+ *
4
+ * Runs a scan, shows results, and guides users through setup.
5
+ */
6
+ import { Command } from 'commander';
7
+ import chalk from 'chalk';
8
+ import { existsSync, writeFileSync } from 'fs';
9
+ import { join } from 'path';
10
+ import { checkbox } from '@inquirer/prompts';
11
+ import { loadConfig, getConfigPath } from '../config/loader.js';
12
+ import { buildAutoConfig } from '../config/auto-detect.js';
13
+ import { spinner, error as errorLog } from '../output/reporters.js';
14
+ import { ScanOrchestrator } from '../scan/orchestrator.js';
15
+ import { ProjectDetector } from '../detect/project-detector.js';
16
+ import { showMenu, sectionHeader, success, info, bulletList, keyValue, } from '../wizard/menu.js';
17
+ import { reviewIssues } from '../wizard/issue-reviewer.js';
18
+ import { setupCI } from '../wizard/ci-generator.js';
19
+ export function createBeginCommand() {
20
+ return new Command('begin')
21
+ .description('Interactive wizard to get started with Buoy')
22
+ .action(async () => {
23
+ // Check if we're in an interactive terminal
24
+ if (!process.stdin.isTTY) {
25
+ console.log('');
26
+ console.log(chalk.yellow('buoy begin requires an interactive terminal.'));
27
+ console.log('');
28
+ console.log('Try these commands instead:');
29
+ console.log(` ${chalk.cyan('buoy status')} See health at a glance`);
30
+ console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
31
+ console.log('');
32
+ return;
33
+ }
34
+ const cwd = process.cwd();
35
+ // Welcome
36
+ console.log('');
37
+ console.log(chalk.cyan.bold('Welcome to Buoy'));
38
+ console.log('');
39
+ const spin = spinner('Scanning your project...');
40
+ try {
41
+ // Load or auto-detect config
42
+ const existingConfig = getConfigPath();
43
+ let config;
44
+ let autoResult;
45
+ if (existingConfig) {
46
+ const result = await loadConfig();
47
+ config = result.config;
48
+ }
49
+ else {
50
+ autoResult = await buildAutoConfig(cwd);
51
+ config = autoResult.config;
52
+ }
53
+ // Run scan
54
+ const orchestrator = new ScanOrchestrator(config);
55
+ const { components } = await orchestrator.scanComponents({
56
+ onProgress: (msg) => {
57
+ spin.text = msg;
58
+ },
59
+ });
60
+ // Detect frameworks
61
+ spin.text = 'Analyzing frameworks...';
62
+ const detector = new ProjectDetector(cwd);
63
+ const projectInfo = await detector.detect();
64
+ // Run drift analysis
65
+ spin.text = 'Checking for drift...';
66
+ const { SemanticDiffEngine } = await import('@buoy-design/core/analysis');
67
+ const engine = new SemanticDiffEngine();
68
+ const diffResult = engine.analyzeComponents(components, {
69
+ checkDeprecated: true,
70
+ checkNaming: true,
71
+ checkDocumentation: true,
72
+ });
73
+ const drifts = [...diffResult.drifts];
74
+ // Check framework sprawl
75
+ const sprawlSignal = engine.checkFrameworkSprawl(projectInfo.frameworks.map(f => ({ name: f.name, version: f.version })));
76
+ if (sprawlSignal) {
77
+ drifts.push(sprawlSignal);
78
+ }
79
+ spin.stop();
80
+ // Show overview
81
+ showOverview(components, drifts, autoResult, projectInfo);
82
+ // Initialize state
83
+ const state = {
84
+ configSaved: !!existingConfig,
85
+ ciSetup: existsSync(join(cwd, '.github', 'workflows', 'buoy.yml')) ||
86
+ existsSync(join(cwd, '.gitlab-ci.yml')),
87
+ criticalReviewed: false,
88
+ allReviewed: false,
89
+ };
90
+ // Main menu loop
91
+ await menuLoop(cwd, config, components, drifts, state, autoResult);
92
+ // Exit message
93
+ showExitMessage();
94
+ }
95
+ catch (err) {
96
+ spin.stop();
97
+ const message = err instanceof Error ? err.message : String(err);
98
+ errorLog(`Wizard failed: ${message}`);
99
+ process.exit(1);
100
+ }
101
+ });
102
+ }
103
+ /**
104
+ * Show the project overview.
105
+ */
106
+ function showOverview(components, drifts, autoResult, projectInfo) {
107
+ sectionHeader('Project Overview');
108
+ // Framework detection
109
+ if (projectInfo.frameworks.length > 0) {
110
+ const frameworkNames = projectInfo.frameworks.map(f => f.name).join(' + ');
111
+ keyValue('Framework', frameworkNames);
112
+ }
113
+ keyValue('Components', `${components.length} found`);
114
+ if (autoResult?.tokenFiles && autoResult.tokenFiles.length > 0) {
115
+ keyValue('Tokens', `${autoResult.tokenFiles.length} file(s) detected`);
116
+ }
117
+ // Health check
118
+ sectionHeader('Health Check');
119
+ const critical = drifts.filter(d => d.severity === 'critical').length;
120
+ const warning = drifts.filter(d => d.severity === 'warning').length;
121
+ const infoCount = drifts.filter(d => d.severity === 'info').length;
122
+ // Coverage grid
123
+ const aligned = components.filter(c => !drifts.some(d => d.source.entityId === c.id)).length;
124
+ const total = components.length;
125
+ const pct = total > 0 ? Math.round((aligned / total) * 100) : 100;
126
+ if (total > 0) {
127
+ const gridSize = Math.min(10, total);
128
+ const alignedCount = Math.round((aligned / total) * gridSize);
129
+ const grid = '⛁ '.repeat(alignedCount) + '⛀ '.repeat(gridSize - alignedCount);
130
+ console.log(` ${grid.trim()} ${aligned}/${total} aligned (${pct}%)`);
131
+ }
132
+ console.log('');
133
+ if (critical > 0) {
134
+ console.log(` ${chalk.red('Critical:')} ${critical}`);
135
+ }
136
+ if (warning > 0) {
137
+ console.log(` ${chalk.yellow('Warning:')} ${warning}`);
138
+ }
139
+ if (infoCount > 0) {
140
+ console.log(` ${chalk.blue('Info:')} ${infoCount}`);
141
+ }
142
+ if (critical === 0 && warning === 0 && infoCount === 0) {
143
+ console.log(chalk.green(' No issues found!'));
144
+ }
145
+ }
146
+ /**
147
+ * Main menu loop.
148
+ */
149
+ async function menuLoop(cwd, config, _components, drifts, state, autoResult) {
150
+ while (true) {
151
+ const action = await showMainMenu(drifts, state);
152
+ switch (action) {
153
+ case 'review-critical': {
154
+ const result = await reviewIssues(drifts, 'critical');
155
+ if (result.completed) {
156
+ state.criticalReviewed = true;
157
+ }
158
+ if (!(await askAnythingElse()))
159
+ return;
160
+ break;
161
+ }
162
+ case 'review-all': {
163
+ const result = await reviewIssues(drifts);
164
+ if (result.completed) {
165
+ state.allReviewed = true;
166
+ }
167
+ if (!(await askAnythingElse()))
168
+ return;
169
+ break;
170
+ }
171
+ case 'save-config': {
172
+ await saveConfiguration(cwd, config, autoResult);
173
+ state.configSaved = true;
174
+ if (!(await askAnythingElse()))
175
+ return;
176
+ break;
177
+ }
178
+ case 'setup-ci': {
179
+ await setupCI(cwd);
180
+ state.ciSetup = true;
181
+ if (!(await askAnythingElse()))
182
+ return;
183
+ break;
184
+ }
185
+ case 'learn-more': {
186
+ showLearnMore();
187
+ if (!(await askAnythingElse()))
188
+ return;
189
+ break;
190
+ }
191
+ case 'exit':
192
+ return;
193
+ }
194
+ }
195
+ }
196
+ /**
197
+ * Show the main menu with dynamic options.
198
+ */
199
+ async function showMainMenu(drifts, state) {
200
+ const critical = drifts.filter(d => d.severity === 'critical').length;
201
+ const total = drifts.length;
202
+ const options = [];
203
+ // Critical issues (if any and not reviewed)
204
+ if (critical > 0 && !state.criticalReviewed) {
205
+ options.push({
206
+ label: `Review critical issues (${critical})`,
207
+ value: 'review-critical',
208
+ });
209
+ }
210
+ // All drift (if any)
211
+ if (total > 0 && !state.allReviewed) {
212
+ options.push({
213
+ label: `Review all drift (${total})`,
214
+ value: 'review-all',
215
+ });
216
+ }
217
+ // Save config (if not already)
218
+ if (!state.configSaved) {
219
+ options.push({
220
+ label: 'Save configuration',
221
+ value: 'save-config',
222
+ });
223
+ }
224
+ // CI setup (if not already)
225
+ if (!state.ciSetup) {
226
+ options.push({
227
+ label: 'Set up CI integration',
228
+ value: 'setup-ci',
229
+ });
230
+ }
231
+ // Always show learn more
232
+ options.push({
233
+ label: 'Learn more about Buoy',
234
+ value: 'learn-more',
235
+ });
236
+ // Always show exit
237
+ options.push({
238
+ label: 'Exit',
239
+ value: 'exit',
240
+ });
241
+ return showMenu('What would you like to do?', options);
242
+ }
243
+ /**
244
+ * Ask "Anything else?" and return whether to continue.
245
+ */
246
+ async function askAnythingElse() {
247
+ console.log('');
248
+ const action = await showMenu('Anything else?', [
249
+ { label: 'Yes, show menu', value: 'continue' },
250
+ { label: 'No, exit', value: 'exit' },
251
+ ]);
252
+ return action === 'continue';
253
+ }
254
+ /**
255
+ * Save configuration flow.
256
+ */
257
+ async function saveConfiguration(cwd, config, autoResult) {
258
+ sectionHeader('Save Configuration');
259
+ info('Buoy works without config, but saving one lets you:');
260
+ console.log('');
261
+ bulletList([
262
+ 'Exclude test files and generated code',
263
+ 'Connect Figma or Storybook as sources of truth',
264
+ 'Set severity thresholds for CI',
265
+ 'Track history across your team',
266
+ ]);
267
+ console.log('');
268
+ if (autoResult) {
269
+ info('Detected settings:');
270
+ for (const d of autoResult.detected) {
271
+ console.log(` ${chalk.green('•')} ${d.name} ${chalk.dim(`(${d.evidence})`)}`);
272
+ }
273
+ if (autoResult.tokenFiles.length > 0) {
274
+ console.log(` ${chalk.green('•')} ${autoResult.tokenFiles.length} token file(s)`);
275
+ }
276
+ console.log('');
277
+ }
278
+ const action = await showMenu('', [
279
+ { label: 'Save and continue', value: 'save' },
280
+ { label: 'Customize first', value: 'customize' },
281
+ { label: 'Skip for now', value: 'skip' },
282
+ ]);
283
+ if (action === 'skip') {
284
+ return;
285
+ }
286
+ let finalConfig = config;
287
+ if (action === 'customize') {
288
+ finalConfig = await customizeConfig(config);
289
+ }
290
+ // Write config file
291
+ const configPath = join(cwd, 'buoy.config.mjs');
292
+ const configContent = generateConfigFile(finalConfig);
293
+ writeFileSync(configPath, configContent);
294
+ console.log('');
295
+ success('Created buoy.config.mjs');
296
+ }
297
+ /**
298
+ * Customize configuration interactively.
299
+ */
300
+ async function customizeConfig(config) {
301
+ sectionHeader('Customize Configuration');
302
+ const excludePaths = [
303
+ 'tests/**/*',
304
+ '**/*.test.*',
305
+ '**/*.spec.*',
306
+ 'stories/**/*',
307
+ '**/*.stories.*',
308
+ ];
309
+ const selectedExcludes = await checkbox({
310
+ message: 'Exclude from scanning:',
311
+ choices: excludePaths.map(p => ({
312
+ name: p,
313
+ value: p,
314
+ checked: true,
315
+ })),
316
+ });
317
+ // Update config with exclusions
318
+ const existingReact = config.sources.react;
319
+ const updatedConfig = {
320
+ ...config,
321
+ sources: {
322
+ ...config.sources,
323
+ react: {
324
+ enabled: existingReact?.enabled ?? true,
325
+ include: existingReact?.include ?? ['src/**/*.tsx'],
326
+ exclude: selectedExcludes,
327
+ designSystemPackage: existingReact?.designSystemPackage,
328
+ },
329
+ },
330
+ };
331
+ return updatedConfig;
332
+ }
333
+ /**
334
+ * Generate config file content.
335
+ */
336
+ function generateConfigFile(config) {
337
+ return `/** @type {import('@buoy-design/cli').BuoyConfig} */
338
+ export default ${JSON.stringify(config, null, 2)};
339
+ `;
340
+ }
341
+ /**
342
+ * Show learn more section.
343
+ */
344
+ function showLearnMore() {
345
+ sectionHeader('About Buoy');
346
+ info('Buoy catches design drift before it ships.');
347
+ console.log('');
348
+ info('Drift happens when code diverges from your design system:');
349
+ bulletList([
350
+ 'Hardcoded colors instead of tokens',
351
+ 'Arbitrary spacing (17px vs your 4px scale)',
352
+ 'Inconsistent component naming',
353
+ ]);
354
+ console.log('');
355
+ info('AI coding tools make this worse—they don\'t know your');
356
+ info('design system exists.');
357
+ console.log('');
358
+ info('Commands to know:');
359
+ console.log(` ${chalk.cyan('buoy status')} Quick health check`);
360
+ console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
361
+ console.log(` ${chalk.cyan('buoy ci')} Run in CI pipelines`);
362
+ console.log(` ${chalk.cyan('buoy history')} View scan history`);
363
+ console.log('');
364
+ info(`Docs: ${chalk.cyan('https://buoy.design/docs')}`);
365
+ }
366
+ /**
367
+ * Show exit message.
368
+ */
369
+ function showExitMessage() {
370
+ console.log('');
371
+ success('You\'re all set!');
372
+ console.log('');
373
+ info('Quick commands:');
374
+ console.log(` ${chalk.cyan('buoy status')} See health at a glance`);
375
+ console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
376
+ console.log('');
377
+ info(`Run ${chalk.cyan('buoy begin')} anytime to return to this wizard.`);
378
+ console.log('');
379
+ }
380
+ //# sourceMappingURL=begin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"begin.js","sourceRoot":"","sources":["../../src/commands/begin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * buoy billing - Manage subscription and billing
3
+ *
4
+ * buoy billing - Show current plan and usage
5
+ * buoy billing upgrade - Upgrade to Pro plan
6
+ * buoy billing portal - Open billing portal (manage payment method, view invoices)
7
+ * buoy billing invoices - List recent invoices
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createBillingCommand(): Command;
11
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C"}