@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/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # @atcute/lex-cli
2
2
 
3
- command line tool for generating TypeScript schemas out of lexicon documents
3
+ generate TypeScript schemas from lexicon documents.
4
+
5
+ ```sh
6
+ npm install @atcute/lex-cli
7
+ ```
4
8
 
5
9
  ## quick start
6
10
 
@@ -17,22 +21,88 @@ export default defineLexiconConfig({
17
21
  });
18
22
  ```
19
23
 
20
- then run the tool:
24
+ then run the tool (it automatically finds `lex.config.js` or `lex.config.ts`):
21
25
 
22
26
  ```
23
- npm exec lex-cli generate -c ./lex.config.js
27
+ npm exec lex-cli generate
28
+ ```
29
+
30
+ ## authoring lexicons with TypeScript
31
+
32
+ instead of writing lexicons as JSON documents, you can author them programmatically using the
33
+ builder functions from `@atcute/lexicon-doc/builder`.
34
+
35
+ ```ts
36
+ // file: lexicons-src/com/example/bookmark.ts
37
+ import { array, document, object, record, required, string } from '@atcute/lexicon-doc/builder';
38
+
39
+ export default document({
40
+ id: 'com.example.bookmark',
41
+ defs: {
42
+ main: record({
43
+ key: 'tid',
44
+ description: 'a saved link to come back to later',
45
+ record: object({
46
+ properties: {
47
+ subject: required(string({ format: 'uri' })),
48
+ createdAt: required(string({ format: 'datetime' })),
49
+ tags: array({ items: string(), description: 'tags for organizing bookmarks' }),
50
+ },
51
+ }),
52
+ }),
53
+ },
54
+ });
55
+ ```
56
+
57
+ update your config to point to TypeScript files:
58
+
59
+ ```ts
60
+ // file: lex.config.js
61
+ import { defineLexiconConfig } from '@atcute/lex-cli';
62
+
63
+ export default defineLexiconConfig({
64
+ files: ['lexicons-src/**/*.ts'],
65
+ outdir: 'src/lexicons/',
66
+ });
67
+ ```
68
+
69
+ ### exporting lexicons to JSON
70
+
71
+ if you need the actual JSON lexicon documents (e.g., for publishing or sharing), configure the
72
+ export command:
73
+
74
+ ```ts
75
+ export default defineLexiconConfig({
76
+ files: ['lexicons-src/**/*.ts'],
77
+ outdir: 'src/lexicons/',
78
+ export: {
79
+ outdir: 'lexicons/',
80
+ clean: true,
81
+ },
82
+ });
83
+ ```
84
+
85
+ then run:
86
+
87
+ ```
88
+ npm exec lex-cli export
24
89
  ```
25
90
 
26
91
  ## pulling lexicons
27
92
 
28
- configure sources to be pulled locally before code generation. pulled files are written using their
29
- nsids (e.g., `app.bsky.feed.post` becomes `app/bsky/feed/post.json`).
93
+ you can pull lexicon files from other sources.
94
+
95
+ ### git sources
96
+
97
+ pull lexicons from git repositories using sparse checkout:
30
98
 
31
99
  ```ts
32
100
  // file: lex.config.js
33
101
  import { defineLexiconConfig } from '@atcute/lex-cli';
34
102
 
35
103
  export default defineLexiconConfig({
104
+ files: ['lexicons/**/*.json'],
105
+ outdir: 'src/lexicons/',
36
106
  pull: {
37
107
  outdir: 'lexicons/',
38
108
  clean: true,
@@ -45,23 +115,50 @@ export default defineLexiconConfig({
45
115
  },
46
116
  ],
47
117
  },
118
+ });
119
+ ```
120
+
121
+ ### atproto sources
122
+
123
+ pull lexicons directly from the AT Protocol network.
124
+
125
+ ```ts
126
+ export default defineLexiconConfig({
48
127
  files: ['lexicons/**/*.json'],
49
128
  outdir: 'src/lexicons/',
129
+ pull: {
130
+ outdir: 'lexicons/',
131
+ sources: [
132
+ {
133
+ type: 'atproto',
134
+ mode: 'nsids',
135
+ nsids: ['app.bsky.feed.post', 'app.bsky.actor.profile'],
136
+ },
137
+ {
138
+ type: 'atproto',
139
+ mode: 'authority',
140
+ authority: 'atproto-lexicons.bsky.social',
141
+ pattern: ['com.atproto.*'], // optional
142
+ },
143
+ ],
144
+ },
50
145
  });
51
146
  ```
52
147
 
148
+ ### running the pull command
149
+
53
150
  pull the lexicons to disk, then generate types from them:
54
151
 
55
152
  ```
56
- npm exec lex-cli pull -c ./lex.config.js
57
- npm exec lex-cli generate -c ./lex.config.js
153
+ npm exec lex-cli pull
154
+ npm exec lex-cli generate
58
155
  ```
59
156
 
60
157
  ## publishing your schemas
61
158
 
62
- if you're packaging your generated schemas as a publishable library, add the `atcute:lexicons`
63
- field to your package.json. this allows other projects to automatically discover and import your
64
- schemas without manual configuration.
159
+ if you're packaging your generated schemas as a publishable library, add the `atcute:lexicons` field
160
+ to your package.json. this allows other projects to automatically discover and import your schemas
161
+ without manual configuration.
65
162
 
66
163
  ```json
67
164
  {
package/dist/cli.js CHANGED
@@ -1,175 +1,17 @@
1
- import * as fs from 'node:fs/promises';
2
- import * as path from 'node:path';
3
- import { lexiconDoc, refineLexiconDoc } from '@atcute/lexicon-doc';
4
- import { object } from '@optique/core/constructs';
5
- import { command, constant, option } from '@optique/core/primitives';
6
1
  import { or } from '@optique/core/constructs';
7
2
  import { run } from '@optique/run';
8
- import { path as pathParser } from '@optique/run/valueparser';
9
- import pc from 'picocolors';
10
- import { generateLexiconApi } from './codegen.js';
11
- import { loadConfig } from './config.js';
12
- import { packageJsonSchema } from './lexicon-metadata.js';
13
- import { runPull } from './pull.js';
14
- /**
15
- * Resolves package imports to ImportMapping[]
16
- */
17
- const resolveImportsToMappings = async (imports, configDirname) => {
18
- const mappings = [];
19
- for (const packageName of imports) {
20
- // Walk up from config directory to find package in node_modules
21
- let packageJson;
22
- let currentDir = configDirname;
23
- let found = false;
24
- while (currentDir !== path.dirname(currentDir)) {
25
- const candidatePath = path.join(currentDir, 'node_modules', packageName, 'package.json');
26
- try {
27
- const content = await fs.readFile(candidatePath, 'utf8');
28
- packageJson = JSON.parse(content);
29
- found = true;
30
- break;
31
- }
32
- catch (err) {
33
- // Only continue to parent if file not found
34
- if (err.code !== 'ENOENT') {
35
- console.error(pc.bold(pc.red(`failed to read package.json for "${packageName}":`)));
36
- console.error(err);
37
- process.exit(1);
38
- }
39
- // Not found, try parent directory
40
- currentDir = path.dirname(currentDir);
41
- }
42
- }
43
- if (!found) {
44
- console.error(pc.bold(pc.red(`failed to resolve package "${packageName}"`)));
45
- console.error(`Could not find package in node_modules starting from ${configDirname}`);
46
- process.exit(1);
47
- }
48
- // Validate package.json
49
- const result = packageJsonSchema.try(packageJson, { mode: 'passthrough' });
50
- if (!result.ok) {
51
- console.error(pc.bold(pc.red(`invalid atcute:lexicons in "${packageName}":`)));
52
- console.error(result.message);
53
- for (const issue of result.issues) {
54
- console.log(`- ${issue.code} at .${issue.path.join('.')}`);
55
- }
56
- process.exit(1);
57
- }
58
- const lexicons = result.value['atcute:lexicons'];
59
- if (!lexicons?.mappings) {
60
- continue;
61
- }
62
- // Convert mapping to ImportMapping[]
63
- for (const [pattern, entry] of Object.entries(lexicons.mappings)) {
64
- const isWildcard = pattern.endsWith('.*');
65
- mappings.push({
66
- nsid: [pattern],
67
- imports: (nsid) => {
68
- // Check if pattern matches
69
- if (isWildcard) {
70
- if (!nsid.startsWith(pattern.slice(0, -1))) {
71
- throw new Error(`NSID ${nsid} does not match pattern ${pattern}`);
72
- }
73
- }
74
- else {
75
- if (nsid !== pattern) {
76
- throw new Error(`NSID ${nsid} does not match pattern ${pattern}`);
77
- }
78
- }
79
- const nsidPrefix = isWildcard ? pattern.slice(0, -2) : pattern;
80
- const nsidRemainder = isWildcard ? nsid.slice(nsidPrefix.length + 1) : '';
81
- let expandedPath = entry.path
82
- .replaceAll('{{nsid}}', nsid.replaceAll('.', '/'))
83
- .replaceAll('{{nsid_remainder}}', nsidRemainder.replaceAll('.', '/'))
84
- .replaceAll('{{nsid_prefix}}', nsidPrefix.replaceAll('.', '/'));
85
- if (expandedPath === '.') {
86
- expandedPath = packageName;
87
- }
88
- else if (expandedPath.startsWith('./')) {
89
- expandedPath = `${packageName}/${expandedPath.slice(2)}`;
90
- }
91
- return {
92
- type: entry.type,
93
- from: expandedPath,
94
- };
95
- },
96
- });
97
- }
98
- }
99
- return mappings;
100
- };
101
- const parser = or(command('generate', object({
102
- type: constant('generate'),
103
- config: option('-c', '--config', pathParser({ metavar: 'CONFIG' })),
104
- })), command('pull', object({
105
- type: constant('pull'),
106
- config: option('-c', '--config', pathParser({ metavar: 'CONFIG' })),
107
- })));
108
- const result = run(parser, { programName: 'lex-cli' });
3
+ import { exportCommandSchema, runExport } from './commands/export.js';
4
+ import { generateCommandSchema, runGenerate } from './commands/generate.js';
5
+ import { pullCommandSchema, runPull } from './commands/pull.js';
6
+ const parser = or(generateCommandSchema, pullCommandSchema, exportCommandSchema);
7
+ const result = run(parser, { programName: 'lex-cli', help: 'both' });
109
8
  if (result.type === 'generate') {
110
- const config = await loadConfig(result.config);
111
- // Resolve imports to mappings
112
- const importMappings = config.imports ? await resolveImportsToMappings(config.imports, config.root) : [];
113
- const allMappings = [...importMappings, ...(config.mappings ?? [])];
114
- const documents = [];
115
- for await (const filename of fs.glob(config.files, { cwd: config.root })) {
116
- let source;
117
- try {
118
- source = await fs.readFile(path.join(config.root, filename), 'utf8');
119
- }
120
- catch (err) {
121
- console.error(pc.bold(pc.red(`file read error with "${filename}"`)));
122
- console.error(err);
123
- process.exit(1);
124
- }
125
- let json;
126
- try {
127
- json = JSON.parse(source);
128
- }
129
- catch (err) {
130
- console.error(pc.bold(pc.red(`json parse error in "${filename}"`)));
131
- console.error(err);
132
- process.exit(1);
133
- }
134
- const result = lexiconDoc.try(json, { mode: 'strip' });
135
- if (!result.ok) {
136
- console.error(pc.bold(pc.red(`schema validation failed for "${filename}"`)));
137
- console.error(result.message);
138
- for (const issue of result.issues) {
139
- console.log(`- ${issue.code} at .${issue.path.join('.')}`);
140
- }
141
- process.exit(1);
142
- }
143
- const issues = refineLexiconDoc(result.value, true);
144
- if (issues.length > 0) {
145
- console.error(pc.bold(pc.red(`lint validation failed for "${filename}"`)));
146
- for (const issue of issues) {
147
- console.log(`- ${issue.message} at .${issue.path.join('.')}`);
148
- }
149
- process.exit(1);
150
- }
151
- documents.push(result.value);
152
- }
153
- const generationResult = await generateLexiconApi({
154
- documents: documents,
155
- mappings: allMappings,
156
- modules: {
157
- importSuffix: config.modules?.importSuffix ?? '.js',
158
- },
159
- prettier: {
160
- cwd: process.cwd(),
161
- },
162
- });
163
- const outdir = path.join(config.root, config.outdir);
164
- for (const file of generationResult.files) {
165
- const filename = path.join(outdir, file.filename);
166
- const dirname = path.dirname(filename);
167
- await fs.mkdir(dirname, { recursive: true });
168
- await fs.writeFile(filename, file.code);
169
- }
9
+ await runGenerate(result);
170
10
  }
171
11
  else if (result.type === 'pull') {
172
- const config = await loadConfig(result.config);
173
- await runPull(config);
12
+ await runPull(result);
13
+ }
14
+ else if (result.type === 'export') {
15
+ await runExport(result);
174
16
  }
175
17
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,MAAM,GAAG,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAEjF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAErE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;IAChC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;KAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IACnC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;KAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;IACrC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,UAAU,EAWV,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,UAAU,EAAE,CAAC;CACpB;AAuBD,eAAO,MAAM,kBAAkB,GAAU,MAAM,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,CAmT1F,CAAC"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEX,UAAU,EAWV,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,UAAU,EAAE,CAAC;CACpB;AAkDD,eAAO,MAAM,kBAAkB,wDAmT9B,CAAC"}