@flxbl-dev/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 (135) hide show
  1. package/README.md +185 -0
  2. package/bin/flxbl +5 -0
  3. package/dist/codegen/client-generator.d.ts +6 -0
  4. package/dist/codegen/client-generator.d.ts.map +1 -0
  5. package/dist/codegen/client-generator.js +46 -0
  6. package/dist/codegen/client-generator.js.map +1 -0
  7. package/dist/codegen/codegen-pipeline.d.ts +23 -0
  8. package/dist/codegen/codegen-pipeline.d.ts.map +1 -0
  9. package/dist/codegen/codegen-pipeline.js +61 -0
  10. package/dist/codegen/codegen-pipeline.js.map +1 -0
  11. package/dist/codegen/enum-generator.d.ts +6 -0
  12. package/dist/codegen/enum-generator.d.ts.map +1 -0
  13. package/dist/codegen/enum-generator.js +40 -0
  14. package/dist/codegen/enum-generator.js.map +1 -0
  15. package/dist/codegen/index-generator.d.ts +8 -0
  16. package/dist/codegen/index-generator.d.ts.map +1 -0
  17. package/dist/codegen/index-generator.js +23 -0
  18. package/dist/codegen/index-generator.js.map +1 -0
  19. package/dist/codegen/query-types-generator.d.ts +8 -0
  20. package/dist/codegen/query-types-generator.d.ts.map +1 -0
  21. package/dist/codegen/query-types-generator.js +30 -0
  22. package/dist/codegen/query-types-generator.js.map +1 -0
  23. package/dist/codegen/relationship-generator.d.ts +6 -0
  24. package/dist/codegen/relationship-generator.d.ts.map +1 -0
  25. package/dist/codegen/relationship-generator.js +40 -0
  26. package/dist/codegen/relationship-generator.js.map +1 -0
  27. package/dist/codegen/schema-fetcher.d.ts +27 -0
  28. package/dist/codegen/schema-fetcher.d.ts.map +1 -0
  29. package/dist/codegen/schema-fetcher.js +42 -0
  30. package/dist/codegen/schema-fetcher.js.map +1 -0
  31. package/dist/codegen/type-generator.d.ts +13 -0
  32. package/dist/codegen/type-generator.d.ts.map +1 -0
  33. package/dist/codegen/type-generator.js +62 -0
  34. package/dist/codegen/type-generator.js.map +1 -0
  35. package/dist/commands/data.d.ts +6 -0
  36. package/dist/commands/data.d.ts.map +1 -0
  37. package/dist/commands/data.js +85 -0
  38. package/dist/commands/data.js.map +1 -0
  39. package/dist/commands/dev.d.ts +6 -0
  40. package/dist/commands/dev.d.ts.map +1 -0
  41. package/dist/commands/dev.js +81 -0
  42. package/dist/commands/dev.js.map +1 -0
  43. package/dist/commands/generate.d.ts +13 -0
  44. package/dist/commands/generate.d.ts.map +1 -0
  45. package/dist/commands/generate.js +69 -0
  46. package/dist/commands/generate.js.map +1 -0
  47. package/dist/commands/init.d.ts +6 -0
  48. package/dist/commands/init.d.ts.map +1 -0
  49. package/dist/commands/init.js +82 -0
  50. package/dist/commands/init.js.map +1 -0
  51. package/dist/commands/login.d.ts +6 -0
  52. package/dist/commands/login.d.ts.map +1 -0
  53. package/dist/commands/login.js +68 -0
  54. package/dist/commands/login.js.map +1 -0
  55. package/dist/commands/logout.d.ts +6 -0
  56. package/dist/commands/logout.d.ts.map +1 -0
  57. package/dist/commands/logout.js +33 -0
  58. package/dist/commands/logout.js.map +1 -0
  59. package/dist/commands/schema/create.d.ts +6 -0
  60. package/dist/commands/schema/create.d.ts.map +1 -0
  61. package/dist/commands/schema/create.js +466 -0
  62. package/dist/commands/schema/create.js.map +1 -0
  63. package/dist/commands/schema/delete.d.ts +6 -0
  64. package/dist/commands/schema/delete.d.ts.map +1 -0
  65. package/dist/commands/schema/delete.js +50 -0
  66. package/dist/commands/schema/delete.js.map +1 -0
  67. package/dist/commands/schema/diff.d.ts +6 -0
  68. package/dist/commands/schema/diff.d.ts.map +1 -0
  69. package/dist/commands/schema/diff.js +144 -0
  70. package/dist/commands/schema/diff.js.map +1 -0
  71. package/dist/commands/schema/export.d.ts +6 -0
  72. package/dist/commands/schema/export.d.ts.map +1 -0
  73. package/dist/commands/schema/export.js +120 -0
  74. package/dist/commands/schema/export.js.map +1 -0
  75. package/dist/commands/schema/index.d.ts +8 -0
  76. package/dist/commands/schema/index.d.ts.map +1 -0
  77. package/dist/commands/schema/index.js +32 -0
  78. package/dist/commands/schema/index.js.map +1 -0
  79. package/dist/commands/schema/migrate.d.ts +6 -0
  80. package/dist/commands/schema/migrate.d.ts.map +1 -0
  81. package/dist/commands/schema/migrate.js +70 -0
  82. package/dist/commands/schema/migrate.js.map +1 -0
  83. package/dist/commands/schema/schema-file.d.ts +43 -0
  84. package/dist/commands/schema/schema-file.d.ts.map +1 -0
  85. package/dist/commands/schema/schema-file.js +106 -0
  86. package/dist/commands/schema/schema-file.js.map +1 -0
  87. package/dist/commands/schema/show.d.ts +15 -0
  88. package/dist/commands/schema/show.d.ts.map +1 -0
  89. package/dist/commands/schema/show.js +100 -0
  90. package/dist/commands/schema/show.js.map +1 -0
  91. package/dist/commands/schema/template.d.ts +6 -0
  92. package/dist/commands/schema/template.d.ts.map +1 -0
  93. package/dist/commands/schema/template.js +110 -0
  94. package/dist/commands/schema/template.js.map +1 -0
  95. package/dist/commands/schema/validation.d.ts +87 -0
  96. package/dist/commands/schema/validation.d.ts.map +1 -0
  97. package/dist/commands/schema/validation.js +281 -0
  98. package/dist/commands/schema/validation.js.map +1 -0
  99. package/dist/commands/schema/versions.d.ts +6 -0
  100. package/dist/commands/schema/versions.d.ts.map +1 -0
  101. package/dist/commands/schema/versions.js +64 -0
  102. package/dist/commands/schema/versions.js.map +1 -0
  103. package/dist/commands/whoami.d.ts +6 -0
  104. package/dist/commands/whoami.d.ts.map +1 -0
  105. package/dist/commands/whoami.js +58 -0
  106. package/dist/commands/whoami.js.map +1 -0
  107. package/dist/config/loader.d.ts +23 -0
  108. package/dist/config/loader.d.ts.map +1 -0
  109. package/dist/config/loader.js +47 -0
  110. package/dist/config/loader.js.map +1 -0
  111. package/dist/config/types.d.ts +24 -0
  112. package/dist/config/types.d.ts.map +1 -0
  113. package/dist/config/types.js +5 -0
  114. package/dist/config/types.js.map +1 -0
  115. package/dist/index.d.ts +6 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +33 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/ui/logger.d.ts +16 -0
  120. package/dist/ui/logger.d.ts.map +1 -0
  121. package/dist/ui/logger.js +18 -0
  122. package/dist/ui/logger.js.map +1 -0
  123. package/dist/ui/prompts.d.ts +6 -0
  124. package/dist/ui/prompts.d.ts.map +1 -0
  125. package/dist/ui/prompts.js +6 -0
  126. package/dist/ui/prompts.js.map +1 -0
  127. package/dist/ui/table.d.ts +11 -0
  128. package/dist/ui/table.d.ts.map +1 -0
  129. package/dist/ui/table.js +25 -0
  130. package/dist/ui/table.js.map +1 -0
  131. package/dist/watcher/schema-watcher.d.ts +30 -0
  132. package/dist/watcher/schema-watcher.d.ts.map +1 -0
  133. package/dist/watcher/schema-watcher.js +53 -0
  134. package/dist/watcher/schema-watcher.js.map +1 -0
  135. package/package.json +62 -0
@@ -0,0 +1,466 @@
1
+ /**
2
+ * flxbl schema create — Interactive wizard + file import for schema creation
3
+ */
4
+ import { FieldType, RelationshipCardinality, SchemaStatus, } from '@flxbl-dev/shared';
5
+ import { log, spinner, chalk } from '../../ui/logger.js';
6
+ import { loadFlxblConfig } from '../../config/loader.js';
7
+ import { resolveAuth } from '../../codegen/schema-fetcher.js';
8
+ import { input, select, confirm } from '../../ui/prompts.js';
9
+ import { validateSchema } from './validation.js';
10
+ import { parseSchemaFile } from './schema-file.js';
11
+ import { renderTree } from './show.js';
12
+ export function registerCreateCommand(parent) {
13
+ parent
14
+ .command('create')
15
+ .description('Create a new schema interactively or from a JSON file')
16
+ .option('-f, --file <path>', 'Import schema from a JSON file')
17
+ .option('--activate', 'Activate the schema after creation')
18
+ .option('--instance <url>', 'FLXBL instance URL')
19
+ .option('--api-key <key>', 'API key for authentication')
20
+ .action(createAction);
21
+ }
22
+ async function createAction(opts) {
23
+ const loaded = await loadFlxblConfig();
24
+ const config = loaded?.config;
25
+ const instanceUrl = opts.instance || process.env.FLXBL_INSTANCE_URL || config?.instanceUrl;
26
+ if (!instanceUrl) {
27
+ log.error('No FLXBL instance URL configured.');
28
+ process.exit(1);
29
+ }
30
+ const { client } = await resolveAuth({
31
+ apiKey: opts.apiKey,
32
+ instanceUrl,
33
+ });
34
+ let request;
35
+ if (opts.file) {
36
+ // Non-interactive: load from file
37
+ try {
38
+ request = parseSchemaFile(opts.file);
39
+ log.info(`Loaded schema from ${chalk.bold(opts.file)}`);
40
+ }
41
+ catch (error) {
42
+ log.error(error instanceof Error ? error.message : String(error));
43
+ process.exit(1);
44
+ }
45
+ }
46
+ else {
47
+ // Interactive wizard
48
+ request = await runWizard();
49
+ }
50
+ // Validate
51
+ const validation = validateSchema(request.entities || [], request.relationships);
52
+ if (validation.warnings.length > 0) {
53
+ log.plain('');
54
+ log.warn('Warnings:');
55
+ for (const w of validation.warnings) {
56
+ log.plain(` ${chalk.yellow('!')} ${w.message}`);
57
+ }
58
+ }
59
+ if (!validation.valid) {
60
+ log.plain('');
61
+ log.error('Schema validation failed:');
62
+ for (const e of validation.errors) {
63
+ log.plain(` ${chalk.red('x')} ${e.message}`);
64
+ }
65
+ process.exit(1);
66
+ }
67
+ // Check if active schema exists for versioning
68
+ const s = spinner('Creating schema...').start();
69
+ try {
70
+ let activeSchema = await client.getActiveSchema();
71
+ if (activeSchema) {
72
+ // Create a new version of the existing schema
73
+ s.text = 'Creating new schema version...';
74
+ const versionResult = await client.createSchemaVersion(activeSchema.id, {
75
+ name: request.name,
76
+ description: request.description,
77
+ entities: request.entities || [],
78
+ relationships: request.relationships,
79
+ });
80
+ s.succeed(`Schema version ${chalk.bold(versionResult.newSchemaVersion)} created`);
81
+ if (versionResult.breakingChanges && versionResult.breakingChanges.length > 0) {
82
+ log.warn('Breaking changes detected:');
83
+ for (const bc of versionResult.breakingChanges) {
84
+ log.plain(` ${chalk.yellow('!')} ${bc.message}`);
85
+ }
86
+ }
87
+ log.dim(`Migration ID: ${versionResult.migrationId}`);
88
+ log.dim(`Status: ${versionResult.status}`);
89
+ if (opts.activate && !versionResult.requiresConfirmation) {
90
+ const activateSpinner = spinner('Activating schema...').start();
91
+ try {
92
+ await client.activateSchema(versionResult.newSchemaId);
93
+ activateSpinner.succeed('Schema activated');
94
+ }
95
+ catch (error) {
96
+ activateSpinner.fail('Failed to activate');
97
+ log.error(error instanceof Error ? error.message : String(error));
98
+ }
99
+ }
100
+ }
101
+ else {
102
+ // Create a brand new schema
103
+ const created = await client.createSchema(request);
104
+ s.succeed(`Schema ${chalk.bold(created.name)} created`);
105
+ if (opts.activate) {
106
+ const activateSpinner = spinner('Activating schema...').start();
107
+ try {
108
+ await client.activateSchema(created.id);
109
+ activateSpinner.succeed('Schema activated');
110
+ }
111
+ catch (error) {
112
+ activateSpinner.fail('Failed to activate');
113
+ log.error(error instanceof Error ? error.message : String(error));
114
+ }
115
+ }
116
+ else {
117
+ log.dim(`Schema ID: ${created.id}`);
118
+ log.dim('Run `flxbl schema create --activate` or activate from the dashboard.');
119
+ }
120
+ }
121
+ }
122
+ catch (error) {
123
+ s.fail('Failed to create schema');
124
+ log.error(error instanceof Error ? error.message : String(error));
125
+ process.exit(1);
126
+ }
127
+ }
128
+ // ==================== Interactive Wizard ====================
129
+ async function runWizard() {
130
+ log.plain(chalk.bold('\nSchema Creation Wizard\n'));
131
+ // Step 1: Choose creation mode
132
+ const mode = await select({
133
+ message: 'How would you like to create your schema?',
134
+ choices: [
135
+ { name: 'Start from scratch', value: 'scratch' },
136
+ { name: 'Use a template', value: 'template' },
137
+ { name: 'Import from file (JSON)', value: 'file' },
138
+ ],
139
+ });
140
+ if (mode === 'file') {
141
+ const filePath = await input({
142
+ message: 'Path to schema JSON file:',
143
+ validate: (v) => (v.trim().length > 0 ? true : 'File path is required'),
144
+ });
145
+ return parseSchemaFile(filePath);
146
+ }
147
+ if (mode === 'template') {
148
+ return await createFromTemplate();
149
+ }
150
+ // Step 2: Schema basics
151
+ const name = await input({
152
+ message: 'Schema name:',
153
+ validate: (v) => {
154
+ if (!v.trim())
155
+ return 'Name is required';
156
+ if (!/^[A-Za-z][A-Za-z0-9]*$/.test(v))
157
+ return 'Use PascalCase (letters and numbers only)';
158
+ return true;
159
+ },
160
+ });
161
+ const description = await input({
162
+ message: 'Description (optional):',
163
+ });
164
+ // Step 3: Entity loop
165
+ const entities = [];
166
+ let addEntity = true;
167
+ while (addEntity) {
168
+ const entity = await promptEntity();
169
+ entities.push(entity);
170
+ addEntity = await confirm({
171
+ message: 'Add another entity?',
172
+ default: false,
173
+ });
174
+ }
175
+ // Step 4: Relationship loop (only if 2+ entities)
176
+ let relationships;
177
+ if (entities.length >= 2) {
178
+ const wantRelationships = await confirm({
179
+ message: 'Add a relationship?',
180
+ default: false,
181
+ });
182
+ if (wantRelationships) {
183
+ relationships = [];
184
+ let addRel = true;
185
+ while (addRel) {
186
+ const rel = await promptRelationship(entities);
187
+ relationships.push(rel);
188
+ addRel = await confirm({
189
+ message: 'Add another relationship?',
190
+ default: false,
191
+ });
192
+ }
193
+ }
194
+ }
195
+ // Step 5: Review
196
+ log.plain(chalk.bold('\nSchema Preview:\n'));
197
+ const previewSchema = {
198
+ id: '',
199
+ tenantId: '',
200
+ name,
201
+ version: '1',
202
+ description: description || undefined,
203
+ isActive: false,
204
+ status: SchemaStatus.PENDING_MIGRATION,
205
+ entities: entities.map((e, i) => ({
206
+ ...e,
207
+ id: String(i),
208
+ entityId: String(i),
209
+ schemaId: '',
210
+ createdAt: '',
211
+ updatedAt: '',
212
+ fields: e.fields.map((f, j) => ({
213
+ ...f,
214
+ id: String(j),
215
+ entityId: String(i),
216
+ createdAt: '',
217
+ updatedAt: '',
218
+ })),
219
+ })),
220
+ relationships: (relationships || []).map((r, i) => ({
221
+ ...r,
222
+ id: String(i),
223
+ sourceEntityId: '',
224
+ targetEntityId: '',
225
+ schemaId: '',
226
+ fields: [],
227
+ createdAt: '',
228
+ updatedAt: '',
229
+ })),
230
+ migrations: [],
231
+ createdAt: '',
232
+ updatedAt: '',
233
+ };
234
+ renderTree(previewSchema);
235
+ // Step 6: Confirm
236
+ const proceed = await confirm({
237
+ message: 'Create this schema?',
238
+ default: true,
239
+ });
240
+ if (!proceed) {
241
+ log.info('Aborted.');
242
+ process.exit(0);
243
+ }
244
+ return {
245
+ name,
246
+ description: description || undefined,
247
+ entities,
248
+ relationships,
249
+ };
250
+ }
251
+ async function promptEntity() {
252
+ const name = await input({
253
+ message: 'Entity name:',
254
+ validate: (v) => {
255
+ if (!v.trim())
256
+ return 'Name is required';
257
+ if (!/^[A-Z][a-zA-Z0-9]*$/.test(v))
258
+ return 'Use PascalCase (e.g., "UserProfile")';
259
+ return true;
260
+ },
261
+ });
262
+ const description = await input({
263
+ message: `Description for ${name} (optional):`,
264
+ });
265
+ const isIdentity = await confirm({
266
+ message: 'Is this an identity entity (for end-user auth)?',
267
+ default: false,
268
+ });
269
+ let identifierField;
270
+ if (isIdentity) {
271
+ identifierField = await input({
272
+ message: 'Identifier field name (used for login):',
273
+ default: 'email',
274
+ });
275
+ }
276
+ // Field loop
277
+ const fields = [];
278
+ let addField = true;
279
+ while (addField) {
280
+ const field = await promptField(name);
281
+ fields.push(field);
282
+ addField = await confirm({
283
+ message: 'Add another field?',
284
+ default: true,
285
+ });
286
+ }
287
+ return {
288
+ name,
289
+ description: description || undefined,
290
+ fields,
291
+ isIdentity: isIdentity || undefined,
292
+ identifierField,
293
+ };
294
+ }
295
+ async function promptField(entityName) {
296
+ const fieldName = await input({
297
+ message: `Field name for ${entityName}:`,
298
+ validate: (v) => {
299
+ if (!v.trim())
300
+ return 'Name is required';
301
+ if (!/^[a-z][a-zA-Z0-9]*$/.test(v))
302
+ return 'Use camelCase (e.g., "firstName")';
303
+ return true;
304
+ },
305
+ });
306
+ const fieldTypeChoices = Object.values(FieldType).map((t) => ({
307
+ name: t,
308
+ value: t,
309
+ }));
310
+ const type = await select({
311
+ message: `Field type for ${fieldName}:`,
312
+ choices: fieldTypeChoices,
313
+ });
314
+ let enumValues;
315
+ if (type === FieldType.ENUM) {
316
+ const values = await input({
317
+ message: 'Enum values (comma-separated):',
318
+ validate: (v) => v.trim().length > 0 ? true : 'At least one value is required',
319
+ });
320
+ enumValues = values.split(',').map((v) => v.trim());
321
+ }
322
+ let vectorDimensions;
323
+ if (type === FieldType.VECTOR) {
324
+ const dims = await input({
325
+ message: 'Vector dimensions (1-4096):',
326
+ default: '384',
327
+ validate: (v) => {
328
+ const n = parseInt(v, 10);
329
+ if (isNaN(n) || n < 1 || n > 4096)
330
+ return 'Must be 1-4096';
331
+ return true;
332
+ },
333
+ });
334
+ vectorDimensions = parseInt(dims, 10);
335
+ }
336
+ let searchable;
337
+ if (type === FieldType.STRING || type === FieldType.TEXT) {
338
+ const wantSearch = await confirm({
339
+ message: 'Enable full-text search?',
340
+ default: false,
341
+ });
342
+ if (wantSearch)
343
+ searchable = true;
344
+ }
345
+ const required = await confirm({
346
+ message: 'Required?',
347
+ default: true,
348
+ });
349
+ return {
350
+ name: fieldName,
351
+ type,
352
+ required,
353
+ enumValues,
354
+ searchable,
355
+ vectorDimensions,
356
+ };
357
+ }
358
+ async function promptRelationship(entities) {
359
+ const entityChoices = entities.map((e) => ({ name: e.name, value: e.name }));
360
+ const name = await input({
361
+ message: 'Relationship name:',
362
+ validate: (v) => {
363
+ if (!v.trim())
364
+ return 'Name is required';
365
+ if (!/^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/.test(v))
366
+ return 'Use SCREAMING_SNAKE_CASE (e.g., "BELONGS_TO")';
367
+ return true;
368
+ },
369
+ });
370
+ const sourceEntityName = await select({
371
+ message: 'Source entity:',
372
+ choices: entityChoices,
373
+ });
374
+ const targetEntityName = await select({
375
+ message: 'Target entity:',
376
+ choices: entityChoices,
377
+ });
378
+ const cardinality = await select({
379
+ message: 'Cardinality:',
380
+ choices: [
381
+ { name: 'ONE_TO_ONE', value: RelationshipCardinality.ONE_TO_ONE },
382
+ { name: 'ONE_TO_MANY', value: RelationshipCardinality.ONE_TO_MANY },
383
+ { name: 'MANY_TO_MANY', value: RelationshipCardinality.MANY_TO_MANY },
384
+ ],
385
+ });
386
+ let fields;
387
+ const wantProperties = await confirm({
388
+ message: 'Add properties to this relationship?',
389
+ default: false,
390
+ });
391
+ if (wantProperties) {
392
+ fields = [];
393
+ let addField = true;
394
+ while (addField) {
395
+ const field = await promptField(name);
396
+ fields.push(field);
397
+ addField = await confirm({
398
+ message: 'Add another relationship property?',
399
+ default: false,
400
+ });
401
+ }
402
+ }
403
+ return {
404
+ name,
405
+ sourceEntityName,
406
+ targetEntityName,
407
+ cardinality,
408
+ fields,
409
+ };
410
+ }
411
+ async function createFromTemplate() {
412
+ const s = spinner('Loading templates...').start();
413
+ // Temporarily resolve auth to fetch templates
414
+ const loaded = await loadFlxblConfig();
415
+ const config = loaded?.config;
416
+ const instanceUrl = process.env.FLXBL_INSTANCE_URL || config?.instanceUrl;
417
+ if (!instanceUrl) {
418
+ s.fail('No instance URL');
419
+ process.exit(1);
420
+ }
421
+ const { client } = await resolveAuth({ instanceUrl });
422
+ let templates;
423
+ try {
424
+ templates = await client.listTemplates();
425
+ s.stop();
426
+ }
427
+ catch (error) {
428
+ s.fail('Failed to load templates');
429
+ log.error(error instanceof Error ? error.message : String(error));
430
+ process.exit(1);
431
+ }
432
+ if (templates.length === 0) {
433
+ log.warn('No templates available. Starting from scratch instead.');
434
+ return runWizardFromScratch();
435
+ }
436
+ const templateId = await select({
437
+ message: 'Choose a template:',
438
+ choices: templates.map((t) => ({
439
+ name: `${t.name} — ${t.description}`,
440
+ value: t.id,
441
+ })),
442
+ });
443
+ const name = await input({
444
+ message: 'Schema name (or press Enter to use template default):',
445
+ });
446
+ const description = await input({
447
+ message: 'Description (optional):',
448
+ });
449
+ return {
450
+ name: name || undefined,
451
+ description: description || undefined,
452
+ templateId,
453
+ };
454
+ }
455
+ async function runWizardFromScratch() {
456
+ const name = await input({
457
+ message: 'Schema name:',
458
+ validate: (v) => {
459
+ if (!v.trim())
460
+ return 'Name is required';
461
+ return true;
462
+ },
463
+ });
464
+ return { name, entities: [] };
465
+ }
466
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/schema/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * flxbl schema delete — Delete a schema by ID
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerDeleteCommand(parent: Command): void;
6
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/schema/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAQ3D"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * flxbl schema delete — Delete a schema by ID
3
+ */
4
+ import { log, spinner, chalk } from '../../ui/logger.js';
5
+ import { loadFlxblConfig } from '../../config/loader.js';
6
+ import { resolveAuth } from '../../codegen/schema-fetcher.js';
7
+ import { confirm } from '../../ui/prompts.js';
8
+ export function registerDeleteCommand(parent) {
9
+ parent
10
+ .command('delete <schemaId>')
11
+ .description('Delete a schema by ID')
12
+ .option('--force', 'Skip confirmation prompt')
13
+ .option('--instance <url>', 'FLXBL instance URL')
14
+ .option('--api-key <key>', 'API key for authentication')
15
+ .action(deleteAction);
16
+ }
17
+ async function deleteAction(schemaId, opts) {
18
+ const loaded = await loadFlxblConfig();
19
+ const config = loaded?.config;
20
+ const instanceUrl = opts.instance || process.env.FLXBL_INSTANCE_URL || config?.instanceUrl;
21
+ if (!instanceUrl) {
22
+ log.error('No FLXBL instance URL configured.');
23
+ process.exit(1);
24
+ }
25
+ if (!opts.force) {
26
+ const confirmed = await confirm({
27
+ message: `Are you sure you want to delete schema ${chalk.bold(schemaId)}? This cannot be undone.`,
28
+ default: false,
29
+ });
30
+ if (!confirmed) {
31
+ log.info('Aborted.');
32
+ return;
33
+ }
34
+ }
35
+ const s = spinner('Deleting schema...').start();
36
+ try {
37
+ const { client } = await resolveAuth({
38
+ apiKey: opts.apiKey,
39
+ instanceUrl,
40
+ });
41
+ await client.deleteSchema(schemaId);
42
+ s.succeed('Schema deleted');
43
+ }
44
+ catch (error) {
45
+ s.fail('Failed to delete schema');
46
+ log.error(error instanceof Error ? error.message : String(error));
47
+ process.exit(1);
48
+ }
49
+ }
50
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/schema/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,IAIC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAE9B,MAAM,WAAW,GACf,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,EAAE,WAAW,CAAC;IAEzE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,0CAA0C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B;YACjG,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEpC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * flxbl schema diff — Compare a local JSON schema file against the remote active schema
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerDiffCommand(parent: Command): void;
6
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/commands/schema/diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAQzD"}