@atcute/lex-cli 2.0.0 → 2.0.2

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.
package/dist/cli.js CHANGED
@@ -2,8 +2,8 @@ import * as fs from 'node:fs/promises';
2
2
  import * as path from 'node:path';
3
3
  import { Builtins, Command, Option, Program } from '@externdefs/collider';
4
4
  import pc from 'picocolors';
5
+ import { lexiconDoc } from '@atcute/lexicon-doc';
5
6
  import { generateLexiconApi } from './codegen.js';
6
- import { lexiconDoc } from './schema.js';
7
7
  const program = new Program({ binaryName: 'lex-cli' });
8
8
  program.register(Builtins.HelpCommand);
9
9
  program.register(class GenerateCommand extends Command {
@@ -51,6 +51,7 @@ program.register(class GenerateCommand extends Command {
51
51
  const result = lexiconDoc.try(json, { mode: 'strip' });
52
52
  if (!result.ok) {
53
53
  console.error(pc.bold(pc.red(`schema validation failed for "${filename}"`)));
54
+ console.error(result.message);
54
55
  for (const issue of result.issues) {
55
56
  console.log(`- ${issue.code} at .${issue.path.join('.')}`);
56
57
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AAEvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEvC,OAAO,CAAC,QAAQ,CACf,MAAM,eAAgB,SAAQ,OAAO;IACpC,MAAM,CAAU,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAU,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACrC,WAAW,EAAE,6BAA6B;KAC1C,CAAC,CAAC;IAEH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;QAC1C,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,aAAa;KAC1B,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAA+B,CAAC;YACvF,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnB,OAAO,CAAC,CAAC;QACV,CAAC;QAED,MAAM,SAAS,GAAiB,EAAE,CAAC;QAEnC,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAC5E,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACJ,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnB,OAAO,CAAC,CAAC;YACV,CAAC;YAED,IAAI,IAAa,CAAC;YAClB,IAAI,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,wBAAwB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnB,OAAO,CAAC,CAAC;YACV,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE7E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAED,OAAO,CAAC,CAAC;YACV,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACvC,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,QAAQ,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;CACD,CACD,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/codegen.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { LexiconDoc } from './schema.js';
1
+ import type { LexiconDoc } from '@atcute/lexicon-doc';
2
2
  export interface SourceFile {
3
3
  filename: string;
4
4
  code: string;
package/dist/codegen.js CHANGED
@@ -259,7 +259,13 @@ const generateXrpcBody = (imports, defUri, spec) => {
259
259
  return `{\n${inner}}`;
260
260
  }
261
261
  if (encoding) {
262
- return `{\n"type": "blob" }`;
262
+ const types = encoding.split(',').map((type) => type.trim());
263
+ let inner = ``;
264
+ inner += `"type": "blob",`;
265
+ if (types.length > 1 || types[0] !== '*/*') {
266
+ inner += `"encoding": ${lit(types)},`;
267
+ }
268
+ return `{\n${inner}}`;
263
269
  }
264
270
  return `null`;
265
271
  };
@@ -305,7 +311,16 @@ const generateObject = (imports, defUri, spec, writeType = 'optional') => {
305
311
  break;
306
312
  }
307
313
  }
308
- for (const [prop, propSpec] of Object.entries(spec.properties ?? {})) {
314
+ const sortedEntries = Object.entries(spec.properties ?? {}).toSorted(([keyA], [keyB]) => {
315
+ if (keyA < keyB) {
316
+ return -1;
317
+ }
318
+ if (keyA > keyB) {
319
+ return 1;
320
+ }
321
+ return 0;
322
+ });
323
+ for (const [prop, propSpec] of sortedEntries) {
309
324
  const lazy = isRefVariant(propSpec.type === 'array' ? propSpec.items : propSpec);
310
325
  const optional = !required.has(prop) && !('default' in propSpec);
311
326
  const nulled = nullable.has(prop);
@@ -344,16 +359,25 @@ const generateType = (imports, defUri, spec, lazy = false) => {
344
359
  }
345
360
  }
346
361
  case 'union': {
347
- const refs = spec.refs.map((ref) => {
362
+ const normalizedRefs = spec.refs
363
+ .map((ref) => {
364
+ if (ref.startsWith('#')) {
365
+ return ref;
366
+ }
367
+ const [ns, id = 'main'] = ref.split('#');
368
+ if (ns === stripHash(defUri)) {
369
+ return `#${id}`;
370
+ }
371
+ return `${ns}#${id}`;
372
+ })
373
+ .sort();
374
+ const refs = normalizedRefs.map((ref) => {
348
375
  if (ref.startsWith('#')) {
349
376
  const id = ref.slice(1);
350
377
  return `${toCamelCase(id)}Schema`;
351
378
  }
352
379
  else {
353
380
  const [ns, id = 'main'] = ref.split('#');
354
- if (ns === stripHash(defUri)) {
355
- return `${toCamelCase(id)}Schema`;
356
- }
357
381
  imports.add(ns);
358
382
  return `${toTitleCase(ns)}.${toCamelCase(id)}Schema`;
359
383
  }
@@ -375,12 +399,11 @@ const generateType = (imports, defUri, spec, lazy = false) => {
375
399
  pipe.push(`${PURE} v.arrayLength(${lit(spec.minLength ?? 0)}, ${lit(spec.maxLength)})`);
376
400
  }
377
401
  }
378
- if (pipe.length === 0) {
379
- return `${PURE} v.array(${item})`;
380
- }
381
- else {
382
- return `${PURE} v.constrain(v.array(${item}), [ ${pipe.join(', ')} ])`;
402
+ let call = `${PURE} v.array(${item})`;
403
+ if (pipe.length !== 0) {
404
+ call = `${PURE} v.constrain(${call}, [ ${pipe.join(', ')} ])`;
383
405
  }
406
+ return call;
384
407
  }
385
408
  // LexPrimitive
386
409
  case 'boolean': {
@@ -398,7 +421,7 @@ const generateType = (imports, defUri, spec, lazy = false) => {
398
421
  return `${PURE} v.literal(${lit(spec.const)})`;
399
422
  }
400
423
  if (spec.enum !== undefined) {
401
- return `${PURE} v.literalEnum(${lit(spec.enum)})`;
424
+ return `${PURE} v.literalEnum(${lit(spec.enum.toSorted())})`;
402
425
  }
403
426
  let pipe = [];
404
427
  if ((spec.minimum ?? 0) > 0 || spec.maximum !== undefined) {
@@ -423,7 +446,7 @@ const generateType = (imports, defUri, spec, lazy = false) => {
423
446
  return `${PURE} v.literal(${lit(spec.const)})`;
424
447
  }
425
448
  if (spec.enum !== undefined) {
426
- return `${PURE} v.literalEnum(${lit(spec.enum)})`;
449
+ return `${PURE} v.literalEnum(${lit(spec.enum.toSorted())})`;
427
450
  }
428
451
  let pipe = [];
429
452
  if ((spec.minLength ?? 0) > 0 || spec.maxLength !== undefined) {
@@ -444,7 +467,7 @@ const generateType = (imports, defUri, spec, lazy = false) => {
444
467
  }
445
468
  let call = `${PURE} v.string()`;
446
469
  if (spec.knownValues?.length) {
447
- call = `${PURE} v.string<${spec.knownValues.map(lit).join(' | ')} | (string & {})>()`;
470
+ call = `${PURE} v.string<${spec.knownValues.toSorted().map(lit).join(' | ')} | (string & {})>()`;
448
471
  }
449
472
  switch (spec.format) {
450
473
  case 'at-identifier': {
@@ -455,6 +478,10 @@ const generateType = (imports, defUri, spec, lazy = false) => {
455
478
  call = `${PURE} v.resourceUriString()`;
456
479
  break;
457
480
  }
481
+ case 'cid': {
482
+ call = `${PURE} v.cidString()`;
483
+ break;
484
+ }
458
485
  case 'datetime': {
459
486
  call = `${PURE} v.datetimeString()`;
460
487
  break;
@@ -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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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@atcute/lex-cli",
4
- "version": "2.0.0",
4
+ "version": "2.0.2",
5
5
  "description": "cli tool to generate type definitions for atcute",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "url": "https://github.com/mary-ext/atcute",
9
- "directory": "packages/core/lex-cli"
9
+ "directory": "packages/lexicons/lex-cli"
10
10
  },
11
11
  "files": [
12
12
  "dist/",
@@ -23,11 +23,12 @@
23
23
  "@badrap/valita": "^0.4.4",
24
24
  "@externdefs/collider": "^0.3.0",
25
25
  "picocolors": "^1.1.1",
26
- "prettier": "^3.5.3"
26
+ "prettier": "^3.5.3",
27
+ "@atcute/lexicon-doc": "^1.0.1"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/node": "^22.15.17",
30
- "@atcute/lexicons": "^1.0.0"
31
+ "@atcute/lexicons": "^1.0.2"
31
32
  },
32
33
  "scripts": {
33
34
  "build": "tsc",
package/src/cli.ts CHANGED
@@ -4,9 +4,10 @@ import * as path from 'node:path';
4
4
  import { Builtins, Command, Option, Program } from '@externdefs/collider';
5
5
  import pc from 'picocolors';
6
6
 
7
+ import { lexiconDoc, type LexiconDoc } from '@atcute/lexicon-doc';
8
+
7
9
  import { generateLexiconApi } from './codegen.js';
8
10
  import type { LexiconConfig } from './index.js';
9
- import { lexiconDoc, type LexiconDoc } from './schema.js';
10
11
 
11
12
  const program = new Program({ binaryName: 'lex-cli' });
12
13
 
@@ -66,6 +67,7 @@ program.register(
66
67
  const result = lexiconDoc.try(json, { mode: 'strip' });
67
68
  if (!result.ok) {
68
69
  console.error(pc.bold(pc.red(`schema validation failed for "${filename}"`)));
70
+ console.error(result.message);
69
71
 
70
72
  for (const issue of result.issues) {
71
73
  console.log(`- ${issue.code} at .${issue.path.join('.')}`);
package/src/codegen.ts CHANGED
@@ -16,7 +16,7 @@ import type {
16
16
  LexXrpcProcedure,
17
17
  LexXrpcQuery,
18
18
  LexXrpcSubscription,
19
- } from './schema.js';
19
+ } from '@atcute/lexicon-doc';
20
20
 
21
21
  export interface SourceFile {
22
22
  filename: string;
@@ -367,7 +367,17 @@ const generateXrpcBody = (imports: ImportSet, defUri: string, spec: LexXrpcBody
367
367
  }
368
368
 
369
369
  if (encoding) {
370
- return `{\n"type": "blob" }`;
370
+ const types = encoding.split(',').map((type) => type.trim());
371
+
372
+ let inner = ``;
373
+
374
+ inner += `"type": "blob",`;
375
+
376
+ if (types.length > 1 || types[0] !== '*/*') {
377
+ inner += `"encoding": ${lit(types)},`;
378
+ }
379
+
380
+ return `{\n${inner}}`;
371
381
  }
372
382
 
373
383
  return `null`;
@@ -431,7 +441,18 @@ const generateObject = (
431
441
  }
432
442
  }
433
443
 
434
- for (const [prop, propSpec] of Object.entries(spec.properties ?? {})) {
444
+ const sortedEntries = Object.entries(spec.properties ?? {}).toSorted(([keyA], [keyB]) => {
445
+ if (keyA < keyB) {
446
+ return -1;
447
+ }
448
+ if (keyA > keyB) {
449
+ return 1;
450
+ }
451
+
452
+ return 0;
453
+ });
454
+
455
+ for (const [prop, propSpec] of sortedEntries) {
435
456
  const lazy = isRefVariant(propSpec.type === 'array' ? propSpec.items : propSpec);
436
457
  const optional = !required.has(prop) && !('default' in propSpec);
437
458
  const nulled = nullable.has(prop);
@@ -483,17 +504,28 @@ const generateType = (
483
504
  }
484
505
  }
485
506
  case 'union': {
486
- const refs = spec.refs.map((ref): string => {
507
+ const normalizedRefs = spec.refs
508
+ .map((ref): string => {
509
+ if (ref.startsWith('#')) {
510
+ return ref;
511
+ }
512
+
513
+ const [ns, id = 'main'] = ref.split('#');
514
+ if (ns === stripHash(defUri)) {
515
+ return `#${id}`;
516
+ }
517
+
518
+ return `${ns}#${id}`;
519
+ })
520
+ .sort();
521
+
522
+ const refs = normalizedRefs.map((ref): string => {
487
523
  if (ref.startsWith('#')) {
488
524
  const id = ref.slice(1);
489
525
 
490
526
  return `${toCamelCase(id)}Schema`;
491
527
  } else {
492
528
  const [ns, id = 'main'] = ref.split('#');
493
- if (ns === stripHash(defUri)) {
494
- return `${toCamelCase(id)}Schema`;
495
- }
496
-
497
529
  imports.add(ns);
498
530
 
499
531
  return `${toTitleCase(ns)}.${toCamelCase(id)}Schema`;
@@ -520,11 +552,13 @@ const generateType = (
520
552
  }
521
553
  }
522
554
 
523
- if (pipe.length === 0) {
524
- return `${PURE} v.array(${item})`;
525
- } else {
526
- return `${PURE} v.constrain(v.array(${item}), [ ${pipe.join(', ')} ])`;
555
+ let call = `${PURE} v.array(${item})`;
556
+
557
+ if (pipe.length !== 0) {
558
+ call = `${PURE} v.constrain(${call}, [ ${pipe.join(', ')} ])`;
527
559
  }
560
+
561
+ return call;
528
562
  }
529
563
 
530
564
  // LexPrimitive
@@ -547,7 +581,7 @@ const generateType = (
547
581
  }
548
582
 
549
583
  if (spec.enum !== undefined) {
550
- return `${PURE} v.literalEnum(${lit(spec.enum)})`;
584
+ return `${PURE} v.literalEnum(${lit(spec.enum.toSorted())})`;
551
585
  }
552
586
 
553
587
  let pipe: string[] = [];
@@ -578,7 +612,7 @@ const generateType = (
578
612
  }
579
613
 
580
614
  if (spec.enum !== undefined) {
581
- return `${PURE} v.literalEnum(${lit(spec.enum)})`;
615
+ return `${PURE} v.literalEnum(${lit(spec.enum.toSorted())})`;
582
616
  }
583
617
 
584
618
  let pipe: string[] = [];
@@ -602,7 +636,7 @@ const generateType = (
602
636
  let call = `${PURE} v.string()`;
603
637
 
604
638
  if (spec.knownValues?.length) {
605
- call = `${PURE} v.string<${spec.knownValues.map(lit).join(' | ')} | (string & {})>()`;
639
+ call = `${PURE} v.string<${spec.knownValues.toSorted().map(lit).join(' | ')} | (string & {})>()`;
606
640
  }
607
641
 
608
642
  switch (spec.format) {
@@ -614,6 +648,10 @@ const generateType = (
614
648
  call = `${PURE} v.resourceUriString()`;
615
649
  break;
616
650
  }
651
+ case 'cid': {
652
+ call = `${PURE} v.cidString()`;
653
+ break;
654
+ }
617
655
  case 'datetime': {
618
656
  call = `${PURE} v.datetimeString()`;
619
657
  break;