@atcute/lex-cli 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +107 -10
  2. package/dist/cli.js +10 -168
  3. package/dist/cli.js.map +1 -1
  4. package/dist/codegen.d.ts.map +1 -1
  5. package/dist/codegen.js +76 -78
  6. package/dist/codegen.js.map +1 -1
  7. package/dist/commands/export.d.ts +17 -0
  8. package/dist/commands/export.d.ts.map +1 -0
  9. package/dist/commands/export.js +76 -0
  10. package/dist/commands/export.js.map +1 -0
  11. package/dist/commands/generate.d.ts +17 -0
  12. package/dist/commands/generate.d.ts.map +1 -0
  13. package/dist/commands/generate.js +136 -0
  14. package/dist/commands/generate.js.map +1 -0
  15. package/dist/commands/pull.d.ts +17 -0
  16. package/dist/commands/pull.d.ts.map +1 -0
  17. package/dist/{pull.js → commands/pull.js} +35 -81
  18. package/dist/commands/pull.js.map +1 -0
  19. package/dist/config.d.ts +68 -6
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +54 -3
  22. package/dist/config.js.map +1 -1
  23. package/dist/git.d.ts.map +1 -1
  24. package/dist/git.js.map +1 -1
  25. package/dist/index.d.ts +65 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/lexicon-loader.d.ts +17 -0
  29. package/dist/lexicon-loader.d.ts.map +1 -0
  30. package/dist/lexicon-loader.js +167 -0
  31. package/dist/lexicon-loader.js.map +1 -0
  32. package/dist/lexicon-metadata.js.map +1 -1
  33. package/dist/pull-sources/atproto.d.ts +17 -0
  34. package/dist/pull-sources/atproto.d.ts.map +1 -0
  35. package/dist/pull-sources/atproto.js +192 -0
  36. package/dist/pull-sources/atproto.js.map +1 -0
  37. package/dist/pull-sources/git.d.ts +15 -0
  38. package/dist/pull-sources/git.d.ts.map +1 -0
  39. package/dist/pull-sources/git.js +80 -0
  40. package/dist/pull-sources/git.js.map +1 -0
  41. package/dist/pull-sources/types.d.ts +16 -0
  42. package/dist/pull-sources/types.d.ts.map +1 -0
  43. package/dist/pull-sources/types.js +2 -0
  44. package/dist/pull-sources/types.js.map +1 -0
  45. package/dist/shared-options.d.ts +6 -0
  46. package/dist/shared-options.d.ts.map +1 -0
  47. package/dist/shared-options.js +11 -0
  48. package/dist/shared-options.js.map +1 -0
  49. package/package.json +12 -9
  50. package/src/cli.ts +9 -210
  51. package/src/codegen.ts +90 -88
  52. package/src/commands/export.ts +106 -0
  53. package/src/commands/generate.ts +170 -0
  54. package/src/{pull.ts → commands/pull.ts} +49 -116
  55. package/src/config.ts +67 -4
  56. package/src/lexicon-loader.ts +201 -0
  57. package/src/pull-sources/atproto.ts +243 -0
  58. package/src/pull-sources/git.ts +103 -0
  59. package/src/pull-sources/types.ts +18 -0
  60. package/src/shared-options.ts +13 -0
  61. package/dist/pull.d.ts +0 -7
  62. package/dist/pull.d.ts.map +0 -1
  63. package/dist/pull.js.map +0 -1
package/dist/codegen.js CHANGED
@@ -1,6 +1,23 @@
1
1
  import { dirname as getDirname, relative as getRelativePath } from 'node:path/posix';
2
2
  import * as prettier from 'prettier';
3
3
  const lit = JSON.stringify;
4
+ const toLexUri = (path) => {
5
+ const { nsid, defId } = path;
6
+ return defId === 'main' ? nsid : `${nsid}#${defId}`;
7
+ };
8
+ const resolvePath = (from, ref) => {
9
+ const index = ref.indexOf('#');
10
+ // nsid (no hash)
11
+ if (index === -1) {
12
+ return { nsid: ref, defId: 'main' };
13
+ }
14
+ // #defId (local ref)
15
+ if (index === 0) {
16
+ return { nsid: from.nsid, defId: ref.slice(1) };
17
+ }
18
+ // nsid#defId (full ref)
19
+ return { nsid: ref.slice(0, index), defId: ref.slice(index + 1) };
20
+ };
4
21
  const resolveExternalImport = (nsid, mappings) => {
5
22
  return mappings.find((mapping) => {
6
23
  return mapping.nsid.some((pattern) => {
@@ -51,57 +68,57 @@ export const generateLexiconApi = async (opts) => {
51
68
  });
52
69
  for (const defId of sortedDefIds) {
53
70
  const def = doc.defs[defId];
54
- const defUri = `${doc.id}#${defId}`;
71
+ const path = { nsid: doc.id, defId };
55
72
  const camelcased = toCamelCase(defId);
56
73
  const varname = `${camelcased}Schema`;
57
74
  let result;
58
75
  switch (def.type) {
59
76
  case 'query': {
60
- result = generateXrpcQuery(imports, defUri, def);
77
+ result = generateXrpcQuery(imports, path, def);
61
78
  file.imports += `import type {} from '@atcute/lexicons/ambient';\n`;
62
79
  file.ambients += `declare module '@atcute/lexicons/ambient' {\n`;
63
80
  file.ambients += ` interface XRPCQueries {\n`;
64
- file.ambients += ` ${lit(stripMainHash(defUri))}: ${camelcased}Schema;\n`;
81
+ file.ambients += ` ${lit(toLexUri(path))}: ${camelcased}Schema;\n`;
65
82
  file.ambients += ` }\n`;
66
83
  file.ambients += `}`;
67
84
  break;
68
85
  }
69
86
  case 'procedure': {
70
- result = generateXrpcProcedure(imports, defUri, def);
87
+ result = generateXrpcProcedure(imports, path, def);
71
88
  file.imports += `import type {} from '@atcute/lexicons/ambient';\n`;
72
89
  file.ambients += `declare module '@atcute/lexicons/ambient' {\n`;
73
90
  file.ambients += ` interface XRPCProcedures {\n`;
74
- file.ambients += ` ${lit(stripMainHash(defUri))}: ${camelcased}Schema;\n`;
91
+ file.ambients += ` ${lit(toLexUri(path))}: ${camelcased}Schema;\n`;
75
92
  file.ambients += ` }\n`;
76
93
  file.ambients += `}`;
77
94
  break;
78
95
  }
79
96
  case 'subscription': {
80
- result = generateXrpcSubscription(imports, defUri, def);
97
+ result = generateXrpcSubscription(imports, path, def);
81
98
  file.imports += `import type {} from '@atcute/lexicons/ambient';\n`;
82
99
  file.ambients += `declare module '@atcute/lexicons/ambient' {\n`;
83
100
  file.ambients += ` interface XRPCSubscriptions {\n`;
84
- file.ambients += ` ${lit(stripMainHash(defUri))}: ${camelcased}Schema;\n`;
101
+ file.ambients += ` ${lit(toLexUri(path))}: ${camelcased}Schema;\n`;
85
102
  file.ambients += ` }\n`;
86
103
  file.ambients += `}`;
87
104
  break;
88
105
  }
89
106
  case 'object': {
90
- result = generateObject(imports, defUri, def);
107
+ result = generateObject(imports, path, def);
91
108
  break;
92
109
  }
93
110
  case 'record': {
94
- result = generateRecord(imports, defUri, def);
111
+ result = generateRecord(imports, path, def);
95
112
  file.imports += `import type {} from '@atcute/lexicons/ambient';\n`;
96
113
  file.ambients += `declare module '@atcute/lexicons/ambient' {\n`;
97
114
  file.ambients += ` interface Records {\n`;
98
- file.ambients += ` ${lit(stripMainHash(defUri))}: ${camelcased}Schema;\n`;
115
+ file.ambients += ` ${lit(toLexUri(path))}: ${camelcased}Schema;\n`;
99
116
  file.ambients += ` }\n`;
100
117
  file.ambients += `}`;
101
118
  break;
102
119
  }
103
120
  case 'token': {
104
- result = `${PURE} v.literal(${lit(stripMainHash(defUri))})`;
121
+ result = `${PURE} v.literal(${lit(toLexUri(path))})`;
105
122
  break;
106
123
  }
107
124
  case 'permission-set': {
@@ -109,7 +126,7 @@ export const generateLexiconApi = async (opts) => {
109
126
  continue;
110
127
  }
111
128
  default: {
112
- result = generateType(imports, defUri, def);
129
+ result = generateType(imports, path, def);
113
130
  break;
114
131
  }
115
132
  }
@@ -279,32 +296,32 @@ export const generateLexiconApi = async (opts) => {
279
296
  }
280
297
  return { files };
281
298
  };
282
- const generateXrpcQuery = (imports, defUri, spec) => {
283
- const params = generateXrpcParameters(imports, defUri, spec.parameters);
284
- const output = generateXrpcBody(imports, defUri, spec.output);
285
- return `${PURE} v.query(${lit(stripMainHash(defUri))}, {\n"params": ${params}, "output": ${output} })`;
299
+ const generateXrpcQuery = (imports, path, spec) => {
300
+ const params = generateXrpcParameters(imports, path, spec.parameters);
301
+ const output = generateXrpcBody(imports, path, spec.output);
302
+ return `${PURE} v.query(${lit(toLexUri(path))}, {\n"params": ${params}, "output": ${output} })`;
286
303
  };
287
- const generateXrpcProcedure = (imports, defUri, spec) => {
288
- const params = generateXrpcParameters(imports, defUri, spec.parameters);
289
- const input = generateXrpcBody(imports, defUri, spec.input);
290
- const output = generateXrpcBody(imports, defUri, spec.output);
291
- return `${PURE} v.procedure(${lit(stripMainHash(defUri))}, {\n"params": ${params}, "input": ${input}, "output": ${output} })`;
304
+ const generateXrpcProcedure = (imports, path, spec) => {
305
+ const params = generateXrpcParameters(imports, path, spec.parameters);
306
+ const input = generateXrpcBody(imports, path, spec.input);
307
+ const output = generateXrpcBody(imports, path, spec.output);
308
+ return `${PURE} v.procedure(${lit(toLexUri(path))}, {\n"params": ${params}, "input": ${input}, "output": ${output} })`;
292
309
  };
293
- const generateXrpcSubscription = (imports, defUri, spec) => {
310
+ const generateXrpcSubscription = (imports, path, spec) => {
294
311
  const schema = spec.message?.schema;
295
- const params = generateXrpcParameters(imports, defUri, spec.parameters);
312
+ const params = generateXrpcParameters(imports, path, spec.parameters);
296
313
  let inner = ``;
297
314
  inner += `"params": ${params},`;
298
315
  if (schema) {
299
- const res = generateType(imports, defUri, schema);
316
+ const res = generateType(imports, path, schema);
300
317
  inner += `get "message" () { return ${res} },`;
301
318
  }
302
319
  else {
303
320
  inner += `"message": null,`;
304
321
  }
305
- return `${PURE} v.subscription(${lit(stripMainHash(defUri))}, {\n${inner}})`;
322
+ return `${PURE} v.subscription(${lit(toLexUri(path))}, {\n${inner}})`;
306
323
  };
307
- const generateXrpcBody = (imports, defUri, spec) => {
324
+ const generateXrpcBody = (imports, path, spec) => {
308
325
  if (spec === undefined) {
309
326
  return `null`;
310
327
  }
@@ -314,11 +331,11 @@ const generateXrpcBody = (imports, defUri, spec) => {
314
331
  let inner = ``;
315
332
  inner += `"type": "lex",`;
316
333
  if (schema.type === 'object') {
317
- const res = generateObject(imports, defUri, schema, 'none');
334
+ const res = generateObject(imports, path, schema, 'none');
318
335
  inner += `"schema": ${res},`;
319
336
  }
320
337
  else {
321
- const res = generateType(imports, defUri, schema);
338
+ const res = generateType(imports, path, schema);
322
339
  inner += `get "schema" () { return ${res} },`;
323
340
  }
324
341
  return `{\n${inner}}`;
@@ -334,7 +351,7 @@ const generateXrpcBody = (imports, defUri, spec) => {
334
351
  }
335
352
  return `null`;
336
353
  };
337
- const generateXrpcParameters = (imports, defUri, spec) => {
354
+ const generateXrpcParameters = (imports, path, spec) => {
338
355
  if (spec === undefined) {
339
356
  return `null`;
340
357
  }
@@ -363,10 +380,10 @@ const generateXrpcParameters = (imports, defUri, spec) => {
363
380
  required: spec.required,
364
381
  properties: transformedProperties ?? originalProperties,
365
382
  };
366
- return generateObject(imports, defUri, mask, 'none');
383
+ return generateObject(imports, path, mask, 'none');
367
384
  };
368
- const generateRecord = (imports, defUri, spec) => {
369
- const schema = generateObject(imports, defUri, spec.record, 'required');
385
+ const generateRecord = (imports, path, spec) => {
386
+ const schema = generateObject(imports, path, spec.record, 'required');
370
387
  let key = `${PURE} v.string()`;
371
388
  if (spec.key) {
372
389
  if (spec.key === 'tid') {
@@ -381,17 +398,17 @@ const generateRecord = (imports, defUri, spec) => {
381
398
  }
382
399
  return `${PURE} v.record(${key}, ${schema})`;
383
400
  };
384
- const generateObject = (imports, defUri, spec, writeType = 'optional') => {
401
+ const generateObject = (imports, path, spec, writeType = 'optional') => {
385
402
  const required = new Set(spec.required);
386
403
  const nullable = new Set(spec.nullable);
387
404
  let inner = ``;
388
405
  switch (writeType) {
389
406
  case 'optional': {
390
- inner += `"$type": ${PURE} v.optional(${PURE} v.literal(${lit(stripMainHash(defUri))})),`;
407
+ inner += `"$type": ${PURE} v.optional(${PURE} v.literal(${lit(toLexUri(path))})),`;
391
408
  break;
392
409
  }
393
410
  case 'required': {
394
- inner += `"$type": ${PURE} v.literal(${lit(stripMainHash(defUri))}),`;
411
+ inner += `"$type": ${PURE} v.literal(${lit(toLexUri(path))}),`;
395
412
  break;
396
413
  }
397
414
  }
@@ -406,9 +423,9 @@ const generateObject = (imports, defUri, spec, writeType = 'optional') => {
406
423
  });
407
424
  for (const [prop, propSpec] of sortedEntries) {
408
425
  const lazy = isRefVariant(propSpec.type === 'array' ? propSpec.items : propSpec);
409
- const optional = !required.has(prop) && !('default' in propSpec);
426
+ const optional = !required.has(prop) && !('default' in propSpec && propSpec.default !== undefined);
410
427
  const nulled = nullable.has(prop);
411
- let call = generateType(imports, defUri, propSpec, lazy);
428
+ let call = generateType(imports, path, propSpec, lazy);
412
429
  if (nulled) {
413
430
  call = `${PURE} v.nullable(${call})`;
414
431
  }
@@ -524,53 +541,44 @@ const generateJsdocField = (spec) => {
524
541
  }
525
542
  return res;
526
543
  };
527
- const generateType = (imports, defUri, spec, lazy = false) => {
544
+ const generateType = (imports, path, spec, lazy = false) => {
528
545
  switch (spec.type) {
529
546
  // LexRefVariant
530
547
  case 'ref': {
531
- const ref = spec.ref;
532
- if (ref.startsWith('#')) {
533
- const id = ref.slice(1);
534
- return `${toCamelCase(id)}Schema`;
535
- }
536
- else {
537
- const [ns, id = 'main'] = ref.split('#');
538
- if (ns === stripHash(defUri)) {
539
- return `${toCamelCase(id)}Schema`;
540
- }
541
- imports.add(ns);
542
- return `${toTitleCase(ns)}.${toCamelCase(id)}Schema`;
548
+ const refPath = resolvePath(path, spec.ref);
549
+ if (refPath.nsid === path.nsid) {
550
+ return `${toCamelCase(refPath.defId)}Schema`;
543
551
  }
552
+ imports.add(refPath.nsid);
553
+ return `${toTitleCase(refPath.nsid)}.${toCamelCase(refPath.defId)}Schema`;
544
554
  }
545
555
  case 'union': {
546
- const normalizedRefs = spec.refs
556
+ const refs = spec.refs
547
557
  .map((ref) => {
548
- if (ref.startsWith('#')) {
549
- return ref;
558
+ const refPath = resolvePath(path, ref);
559
+ return { path: refPath, uri: toLexUri(refPath) };
560
+ })
561
+ .sort((a, b) => {
562
+ if (a.uri < b.uri) {
563
+ return -1;
550
564
  }
551
- const [ns, id = 'main'] = ref.split('#');
552
- if (ns === stripHash(defUri)) {
553
- return `#${id}`;
565
+ if (a.uri > b.uri) {
566
+ return 1;
554
567
  }
555
- return `${ns}#${id}`;
568
+ return 0;
556
569
  })
557
- .sort();
558
- const refs = normalizedRefs.map((ref) => {
559
- if (ref.startsWith('#')) {
560
- const id = ref.slice(1);
561
- return `${toCamelCase(id)}Schema`;
562
- }
563
- else {
564
- const [ns, id = 'main'] = ref.split('#');
565
- imports.add(ns);
566
- return `${toTitleCase(ns)}.${toCamelCase(id)}Schema`;
570
+ .map(({ path: refPath }) => {
571
+ if (refPath.nsid === path.nsid) {
572
+ return `${toCamelCase(refPath.defId)}Schema`;
567
573
  }
574
+ imports.add(refPath.nsid);
575
+ return `${toTitleCase(refPath.nsid)}.${toCamelCase(refPath.defId)}Schema`;
568
576
  });
569
577
  return `${PURE} v.variant([${refs.join(', ')}]${spec.closed ? `, true` : ``})`;
570
578
  }
571
579
  // LexArray
572
580
  case 'array': {
573
- let item = generateType(imports, defUri, spec.items);
581
+ let item = generateType(imports, path, spec.items);
574
582
  if (!lazy && (spec.items.type === 'ref' || spec.items.type === 'union')) {
575
583
  item = `(() => { return ${item}; })`;
576
584
  }
@@ -740,16 +748,6 @@ const isRefVariant = (spec) => {
740
748
  const type = spec.type;
741
749
  return type === 'ref' || type === 'union';
742
750
  };
743
- const stripHash = (defUri) => {
744
- const index = defUri.indexOf('#');
745
- if (index === -1) {
746
- return defUri;
747
- }
748
- return defUri.slice(0, index);
749
- };
750
- const stripMainHash = (defUri) => {
751
- return defUri.endsWith('#main') ? defUri.slice(0, -'#main'.length) : defUri;
752
- };
753
751
  const toTitleCase = (v) => {
754
752
  v = v.replace(/^([a-z])/gi, (_, g) => g.toUpperCase());
755
753
  v = v.replace(/[.#-]([a-z])/gi, (_, g) => g.toUpperCase());
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type InferValue } from '@optique/core/parser';
2
+ export declare const exportCommandSchema: import("@optique/core/parser").Parser<{
3
+ readonly type: "export";
4
+ } & {
5
+ readonly config: string | undefined;
6
+ }, ["matched", string] | ["parsing", Record<string | symbol, unknown>] | undefined>;
7
+ export type ExportCommand = InferValue<typeof exportCommandSchema>;
8
+ /**
9
+ * runs the export command to write lexicon documents as JSON files
10
+ * @param args parsed command arguments
11
+ */
12
+ export declare const runExport: (args: {
13
+ readonly type: "export";
14
+ } & {
15
+ readonly config: string | undefined;
16
+ }) => Promise<void>;
17
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD,eAAO,MAAM,mBAAmB;;;;mFAY/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AA0CnE;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;mBA8BrB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { merge, object } from '@optique/core/constructs';
4
+ import { message } from '@optique/core/message';
5
+ import {} from '@optique/core/parser';
6
+ import { command, constant } from '@optique/core/primitives';
7
+ import pc from 'picocolors';
8
+ import prettier from 'prettier';
9
+ import { loadConfig } from '../config.js';
10
+ import { loadLexicons } from '../lexicon-loader.js';
11
+ import { sharedOptions } from '../shared-options.js';
12
+ export const exportCommandSchema = command('export', merge(object({
13
+ type: constant('export'),
14
+ }), sharedOptions), {
15
+ brief: message `export lexicon documents as JSON files`,
16
+ description: message `exports lexicon documents (from JSON or builder files) to JSON format for publishing or distribution.`,
17
+ });
18
+ /**
19
+ * ensures export configuration is present
20
+ * @param config the normalized config
21
+ * @returns the export config
22
+ */
23
+ const ensureExportConfig = (config) => {
24
+ if (!config.export) {
25
+ console.error(pc.bold(pc.red(`export configuration missing`)));
26
+ process.exit(1);
27
+ }
28
+ return config.export;
29
+ };
30
+ /**
31
+ * writes a lexicon document to disk as formatted JSON
32
+ * @param outdir output directory
33
+ * @param nsid the NSID of the lexicon
34
+ * @param doc the lexicon document
35
+ * @param prettierConfig prettier configuration
36
+ */
37
+ const writeLexicon = async (outdir, nsid, doc, prettierConfig) => {
38
+ const nsidPath = nsid.replaceAll('.', '/');
39
+ const target = path.join(outdir, `${nsidPath}.json`);
40
+ const dirname = path.dirname(target);
41
+ const code = await prettier.format(JSON.stringify(doc, null, 2), {
42
+ ...(prettierConfig ?? {}),
43
+ parser: 'json',
44
+ });
45
+ await fs.mkdir(dirname, { recursive: true });
46
+ await fs.writeFile(target, code);
47
+ };
48
+ /**
49
+ * runs the export command to write lexicon documents as JSON files
50
+ * @param args parsed command arguments
51
+ */
52
+ export const runExport = async (args) => {
53
+ const config = await loadConfig(args.config);
54
+ const exportConfig = ensureExportConfig(config);
55
+ // use export.files if specified, otherwise fall back to root files config
56
+ const files = exportConfig.files ?? config.files;
57
+ const outdir = path.resolve(config.root, exportConfig.outdir);
58
+ const prettierConfig = await prettier.resolveConfig(config.root, { editorconfig: true });
59
+ // load lexicons from files
60
+ const loaded = await loadLexicons(files, config.root);
61
+ if (loaded.length === 0) {
62
+ console.warn(pc.yellow(`warning: no lexicons found to export`));
63
+ return;
64
+ }
65
+ // clean output directory if requested
66
+ if (exportConfig.clean) {
67
+ await fs.rm(outdir, { recursive: true, force: true });
68
+ }
69
+ await fs.mkdir(outdir, { recursive: true });
70
+ // write each lexicon as JSON
71
+ for (const { nsid, doc } of loaded) {
72
+ await writeLexicon(outdir, nsid, doc, prettierConfig);
73
+ }
74
+ console.log(pc.green(`exported ${loaded.length} lexicon(s) to ${outdir}`));
75
+ };
76
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type InferValue } from '@optique/core/parser';
2
+ export declare const generateCommandSchema: import("@optique/core/parser").Parser<{
3
+ readonly type: "generate";
4
+ } & {
5
+ readonly config: string | undefined;
6
+ }, ["matched", string] | ["parsing", Record<string | symbol, unknown>] | undefined>;
7
+ export type GenerateCommand = InferValue<typeof generateCommandSchema>;
8
+ /**
9
+ * runs the generate command to create type definitions from lexicon documents
10
+ * @param args parsed command arguments
11
+ */
12
+ export declare const runGenerate: (args: {
13
+ readonly type: "generate";
14
+ } & {
15
+ readonly config: string | undefined;
16
+ }) => Promise<void>;
17
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAiHvD,eAAO,MAAM,qBAAqB;;;;mFAYjC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;mBA+BvB,CAAC"}