@atcute/lex-cli 1.1.1 → 2.0.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.
package/dist/schema.js CHANGED
@@ -1,194 +1,233 @@
1
1
  import * as v from '@badrap/valita';
2
- const integerType = v
2
+ // tsc dislikes this schema with the amount of type expansion that happens here.
3
+ // the interface declaration allows tsc to just reference it instead of
4
+ // expanding on every type reference.
5
+ const _integer = v
3
6
  .number()
4
- .assert((v) => Number.isInteger(v) && v >= 0, 'Number is expected to be a positive integer');
5
- export const booleanSchema = v.object({
7
+ .assert((input) => input >= 0 && Number.isSafeInteger(input), `expected non-negative integer`);
8
+ const integer = _integer;
9
+ const _lexBoolean = v.object({
6
10
  type: v.literal('boolean'),
7
11
  description: v.string().optional(),
8
12
  default: v.boolean().optional(),
9
13
  const: v.boolean().optional(),
10
14
  });
11
- export const integerSchema = v.object({
15
+ export const lexBoolean = _lexBoolean;
16
+ const _lexInteger = v.object({
12
17
  type: v.literal('integer'),
13
18
  description: v.string().optional(),
14
- default: integerType.optional(),
15
- const: integerType.optional(),
16
- enum: v.array(v.number()).optional(),
17
- maximum: integerType.optional(),
18
- minimum: integerType.optional(),
19
+ default: integer.optional(),
20
+ minimum: integer.optional(),
21
+ maximum: integer.optional(),
22
+ enum: v.array(integer).optional(),
23
+ const: integer.optional(),
19
24
  });
20
- export const stringSchema = v
21
- .object({
25
+ export const lexInteger = _lexInteger;
26
+ const _lexStringFormat = v.union(v.literal('datetime'), v.literal('uri'), v.literal('at-uri'), v.literal('did'), v.literal('handle'), v.literal('at-identifier'), v.literal('nsid'), v.literal('cid'), v.literal('language'), v.literal('tid'), v.literal('record-key'));
27
+ export const lexStringFormat = _lexStringFormat;
28
+ const _lexString = v.object({
22
29
  type: v.literal('string'),
30
+ format: lexStringFormat.optional(),
23
31
  description: v.string().optional(),
24
- format: v
25
- .union(v.literal('at-identifier'), v.literal('at-uri'), v.literal('cid'), v.literal('datetime'), v.literal('did'), v.literal('handle'), v.literal('language'), v.literal('nsid'), v.literal('record-key'), v.literal('tid'), v.literal('uri'))
26
- .optional(),
27
32
  default: v.string().optional(),
28
- const: v.string().optional(),
33
+ minLength: integer.optional(),
34
+ maxLength: integer.optional(),
35
+ minGraphemes: integer.optional(),
36
+ maxGraphemes: integer.optional(),
29
37
  enum: v.array(v.string()).optional(),
38
+ const: v.string().optional(),
30
39
  knownValues: v.array(v.string()).optional(),
31
- maxLength: integerType.optional(),
32
- minLength: integerType.optional(),
33
- maxGraphemes: integerType.optional(),
34
- minGraphemes: integerType.optional(),
35
- })
36
- .chain((obj) => {
37
- const format = obj.format;
38
- if (format !== undefined && format !== 'uri') {
39
- // `com.atproto.repo.applyWrites#create` has `maxLength` for compatibility reasons
40
- // if (obj.maxLength !== undefined) {
41
- // return v.err(`${format} format can't be used with maxLength`);
42
- // }
43
- if (obj.minLength !== undefined) {
44
- return v.err(`${format} format can't be used with minLength`);
45
- }
46
- if (obj.maxGraphemes !== undefined) {
47
- return v.err(`${format} format can't be used with maxGraphemes`);
48
- }
49
- if (obj.minGraphemes !== undefined) {
50
- return v.err(`${format} format can't be used with minGraphemes`);
51
- }
52
- }
53
- return v.ok(obj);
54
40
  });
55
- export const unknownSchema = v.object({
41
+ export const lexString = _lexString;
42
+ const _lexUnknown = v.object({
56
43
  type: v.literal('unknown'),
57
44
  description: v.string().optional(),
58
45
  });
59
- export const primitiveSchema = v.union(booleanSchema, integerSchema, stringSchema, unknownSchema);
60
- export const bytesSchema = v.object({
46
+ export const lexUnknown = _lexUnknown;
47
+ const _lexPrimitive = v.union(lexBoolean, lexInteger, lexString, lexUnknown);
48
+ export const lexPrimitive = _lexPrimitive;
49
+ const _lexBytes = v.object({
61
50
  type: v.literal('bytes'),
62
51
  description: v.string().optional(),
63
- maxLength: integerType.optional(),
64
- minLength: integerType.optional(),
52
+ minLength: integer.optional(),
53
+ maxLength: integer.optional(),
65
54
  });
66
- export const cidLinkSchema = v.object({
55
+ export const lexBytes = _lexBytes;
56
+ const _lexCidLink = v.object({
67
57
  type: v.literal('cid-link'),
68
58
  description: v.string().optional(),
69
59
  });
70
- export const ipldTypeSchema = v.union(bytesSchema, cidLinkSchema);
71
- export const refSchema = v.object({
60
+ export const lexCidLink = _lexCidLink;
61
+ const _lexIpldType = v.union(lexBytes, lexCidLink);
62
+ export const lexIpldType = _lexIpldType;
63
+ const REF_RE = /^(?=.)(?:[a-zA-Z](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+\.[a-zA-Z][a-zA-Z0-9]{0,62}?)?(?:#[a-zA-Z][a-zA-Z0-9_]{0,62}?)?$/;
64
+ const refString = v.string().assert((input) => REF_RE.test(input));
65
+ const _lexRef = v.object({
72
66
  type: v.literal('ref'),
73
67
  description: v.string().optional(),
74
- ref: v.string(),
68
+ ref: refString,
75
69
  });
76
- export const refUnionSchema = v
77
- .object({
70
+ export const lexRef = _lexRef;
71
+ const _lexRefUnion = v.object({
78
72
  type: v.literal('union'),
79
73
  description: v.string().optional(),
80
- refs: v.array(v.string()),
74
+ refs: v.array(refString),
81
75
  closed: v.boolean().optional(() => false),
82
- })
83
- .assert((v) => !v.closed || v.refs.length > 0, `A closed union can't have empty refs list`);
84
- export const refVariantSchema = v.union(refSchema, refUnionSchema);
85
- export const blobSchema = v.object({
76
+ });
77
+ export const lexRefUnion = _lexRefUnion;
78
+ const _lexRefVariant = v.union(lexRef, lexRefUnion);
79
+ export const lexRefVariant = _lexRefVariant;
80
+ const _lexBlob = v.object({
86
81
  type: v.literal('blob'),
87
82
  description: v.string().optional(),
88
83
  accept: v.array(v.string()).optional(),
89
- maxSize: integerType.optional(),
84
+ maxSize: integer.optional(),
90
85
  });
91
- export const arraySchema = v.object({
86
+ export const lexBlob = _lexBlob;
87
+ const _lexArray = v.object({
92
88
  type: v.literal('array'),
93
89
  description: v.string().optional(),
94
- items: v.union(primitiveSchema, ipldTypeSchema, blobSchema, refVariantSchema),
95
- maxLength: integerType.optional(),
96
- minLength: integerType.optional(),
90
+ items: v.union(lexPrimitive, lexIpldType, lexRefVariant, lexBlob),
91
+ minLength: integer.optional(),
92
+ maxLength: integer.optional(),
97
93
  });
98
- export const primitiveArraySchema = arraySchema.extend({
99
- items: primitiveSchema,
94
+ export const lexArray = _lexArray;
95
+ const _lexPrimitiveArray = lexArray.extend({
96
+ items: lexPrimitive,
100
97
  });
101
- export const tokenSchema = v.object({
98
+ export const lexPrimitiveArray = _lexPrimitiveArray;
99
+ const _lexToken = v.object({
102
100
  type: v.literal('token'),
103
101
  description: v.string().optional(),
104
102
  });
105
- const refineRequiredProperties = (obj) => {
106
- for (const field of obj.required) {
107
- if (obj.properties[field] === undefined) {
108
- return v.err(`Required field "${field}" not defined`);
103
+ export const lexToken = _lexToken;
104
+ const KEY_RE = /^[a-zA-Z][a-zA-Z0-9_]{0,62}?$/;
105
+ const refineObjectProperties = (input) => {
106
+ const { required = [], properties } = input;
107
+ for (const key in properties) {
108
+ if (!KEY_RE.test(key)) {
109
+ return v.err({
110
+ message: `invalid property key`,
111
+ path: ['properties', key],
112
+ });
113
+ }
114
+ }
115
+ if (required.length > 0) {
116
+ if (properties === undefined) {
117
+ return v.err({
118
+ message: `required fields specified but no properties defined`,
119
+ path: ['properties'],
120
+ });
121
+ }
122
+ for (const key of required) {
123
+ if (properties[key] === undefined) {
124
+ return v.err({
125
+ message: `required fields not defined`,
126
+ path: ['properties', key],
127
+ });
128
+ }
109
129
  }
110
130
  }
111
- return v.ok(obj);
131
+ return v.ok(input);
112
132
  };
113
- export const objectSchema = v
133
+ const _lexObject = v
114
134
  .object({
115
135
  type: v.literal('object'),
116
136
  description: v.string().optional(),
117
- required: v.array(v.string()).optional(() => []),
118
- nullable: v.array(v.string()).optional(() => []),
119
- properties: v.record(v.union(refVariantSchema, ipldTypeSchema, arraySchema, blobSchema, primitiveSchema)),
137
+ required: v.array(v.string()).optional(),
138
+ nullable: v.array(v.string()).optional(),
139
+ properties: v.record(v.union(lexArray, lexPrimitive, lexIpldType, lexRefVariant, lexBlob)).optional(),
120
140
  })
121
- .chain(refineRequiredProperties);
122
- export const xrpcParametersSchema = v
141
+ .chain(refineObjectProperties);
142
+ export const lexObject = _lexObject;
143
+ const _lexXrpcParameters = v
123
144
  .object({
124
145
  type: v.literal('params'),
125
146
  description: v.string().optional(),
126
- required: v.array(v.string()).optional(() => []),
127
- properties: v.record(v.union(primitiveSchema, primitiveArraySchema)),
147
+ required: v.array(v.string()).optional(),
148
+ properties: v.record(v.union(lexPrimitive, lexPrimitiveArray)).optional(),
128
149
  })
129
- .chain(refineRequiredProperties);
130
- export const xrpcBodySchema = v.object({
150
+ .chain(refineObjectProperties);
151
+ export const lexXrpcParameters = _lexXrpcParameters;
152
+ const _lexXrpcBody = v.object({
131
153
  description: v.string().optional(),
132
154
  encoding: v.string(),
133
- schema: v.union(refVariantSchema, objectSchema).optional(),
155
+ schema: v.union(lexRefVariant, lexObject).optional(),
134
156
  });
135
- export const xrpcSubscriptionMessageSchema = v.object({
157
+ export const lexXrpcBody = _lexXrpcBody;
158
+ const _lexXrpcSubscriptionMessage = v.object({
136
159
  description: v.string().optional(),
137
- schema: v.union(refVariantSchema, objectSchema).optional(),
160
+ schema: v.union(lexRefVariant, lexObject).optional(),
138
161
  });
139
- export const xrpcErrorSchema = v.object({
162
+ export const lexXrpcSubscriptionMessage = _lexXrpcSubscriptionMessage;
163
+ const _lexXrpcError = v.object({
140
164
  name: v.string(),
141
165
  description: v.string().optional(),
142
166
  });
143
- export const xrpcQuerySchema = v.object({
167
+ export const lexXrpcError = _lexXrpcError;
168
+ const _lexXrpcQuery = v.object({
144
169
  type: v.literal('query'),
145
170
  description: v.string().optional(),
146
- parameters: xrpcParametersSchema.optional(),
147
- output: xrpcBodySchema.optional(),
148
- errors: v.array(xrpcErrorSchema).optional(),
171
+ parameters: lexXrpcParameters.optional(),
172
+ output: lexXrpcBody.optional(),
173
+ errors: v.array(lexXrpcError).optional(),
149
174
  });
150
- export const xrpcProcedureSchema = v.object({
175
+ export const lexXrpcQuery = _lexXrpcQuery;
176
+ const _lexXrpcProcedure = v.object({
151
177
  type: v.literal('procedure'),
152
178
  description: v.string().optional(),
153
- parameters: xrpcParametersSchema.optional(),
154
- input: xrpcBodySchema.optional(),
155
- output: xrpcBodySchema.optional(),
156
- errors: v.array(xrpcErrorSchema).optional(),
179
+ parameters: lexXrpcParameters.optional(),
180
+ input: lexXrpcBody.optional(),
181
+ output: lexXrpcBody.optional(),
182
+ errors: v.array(lexXrpcError).optional(),
157
183
  });
158
- export const xrpcSubscriptionSchema = v.object({
184
+ export const lexXrpcProcedure = _lexXrpcProcedure;
185
+ const _lexXrpcSubscription = v.object({
159
186
  type: v.literal('subscription'),
160
187
  description: v.string().optional(),
161
- parameters: xrpcParametersSchema.optional(),
162
- message: xrpcSubscriptionMessageSchema.optional(),
163
- errors: v.array(xrpcErrorSchema).optional(),
188
+ parameters: lexXrpcParameters.optional(),
189
+ message: lexXrpcSubscriptionMessage.optional(),
190
+ errors: v.array(lexXrpcError).optional(),
164
191
  });
165
- export const recordSchema = v.object({
192
+ export const lexXrpcSubscription = _lexXrpcSubscription;
193
+ const LITERAL_KEY_RE = /^literal:(.+)$/;
194
+ const _lexRecord = v.object({
166
195
  type: v.literal('record'),
167
196
  description: v.string().optional(),
168
- key: v.string().optional(),
169
- record: objectSchema,
197
+ key: v
198
+ .union(v.literal('tid'), v.literal('nsid'), v.literal('any'), v.string().assert((input) => LITERAL_KEY_RE.test(input)))
199
+ .optional(() => 'any'),
200
+ record: lexObject,
170
201
  });
171
- export const userTypeSchema = v.union(recordSchema, xrpcQuerySchema, xrpcProcedureSchema, xrpcSubscriptionSchema, blobSchema, arraySchema, tokenSchema, objectSchema, booleanSchema, integerSchema, stringSchema, bytesSchema, cidLinkSchema, unknownSchema);
172
- const NSID_RE = /^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\.[a-zA-Z]([a-zA-Z]{0,61}[a-zA-Z])?)$/;
173
- const nsidType = v.string().assert((v) => NSID_RE.test(v), `string doesn't match nsid format`);
174
- export const documentSchema = v
202
+ export const lexRecord = _lexRecord;
203
+ const _lexUserType = v.union(lexRecord, lexXrpcQuery, lexXrpcProcedure, lexXrpcSubscription, lexObject, lexArray, lexToken, lexIpldType, lexBlob, lexPrimitive);
204
+ export const lexUserType = _lexUserType;
205
+ const NSID_RE = /^[a-zA-Z](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\.[a-zA-Z](?:[a-zA-Z0-9]{0,62})?)$/;
206
+ const _lexiconDoc = v
175
207
  .object({
176
208
  lexicon: v.literal(1),
177
- id: nsidType,
178
- revision: v.number().optional(),
209
+ id: v.string().assert((input) => NSID_RE.test(input), `must be valid nsid`),
210
+ revision: integer.optional(),
179
211
  description: v.string().optional(),
180
- defs: v.record(userTypeSchema),
212
+ // defs: v.record(v.pipe(v.string(), v.regex(/^[a-zA-Z][a-zA-Z0-9_]{0,62}?$/)), lexUserType),
213
+ defs: v.record(lexUserType),
181
214
  })
182
- .chain((doc) => {
183
- const defs = doc.defs;
184
- for (const id in defs) {
185
- const def = defs[id];
186
- const type = def.type;
187
- if (id !== 'main' &&
188
- (type === 'record' || type === 'query' || type === 'procedure' || type === 'subscription')) {
189
- return v.err({ message: `${type} must be the \`main\` definition`, path: ['defs', id] });
215
+ .chain((input) => {
216
+ const { defs } = input;
217
+ for (const key in defs) {
218
+ const def = defs[key];
219
+ if (key !== 'main' &&
220
+ (def.type === 'record' ||
221
+ def.type === 'procedure' ||
222
+ def.type === 'query' ||
223
+ def.type === 'subscription')) {
224
+ return v.err({
225
+ message: `records, procedures, queries and subscriptions must be the main definition`,
226
+ path: ['defs', key],
227
+ });
190
228
  }
191
229
  }
192
- return v.ok(doc);
230
+ return v.ok(input);
193
231
  });
232
+ export const lexiconDoc = _lexiconDoc;
194
233
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,MAAM,WAAW,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,6CAA6C,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC;SACP,KAAK,CACL,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAC1B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EACvB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAChB;SACA,QAAQ,EAAE;IACZ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;CACpC,CAAC;KACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC9C,kFAAkF;QAClF,qCAAqC;QACrC,kEAAkE;QAClE,IAAI;QACJ,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,sCAAsC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,yCAAyC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,yCAAyC,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAIJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AAIlG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAIlE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC7B,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;CACzC,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,2CAA2C,CAAC,CAAC;AAI7F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAInE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,CAAC;IAC7E,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC;IACtD,KAAK,EAAE,eAAe;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,MAAM,wBAAwB,GAAG,CAChC,GAAM,EACc,EAAE;IACtB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,CAAC,CAAC,GAAG,CAAC,mBAAmB,KAAK,eAAe,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;CACzG,CAAC;KACD,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAIlC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KACnC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;CACpE,CAAC;KACD,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAIlC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IAC3C,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IAC3C,OAAO,EAAE,6BAA6B,CAAC,QAAQ,EAAE;IACjD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,YAAY;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CACpC,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,CACb,CAAC;AAIF,MAAM,OAAO,GACZ,iIAAiI,CAAC;AACnI,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC7B,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;CAC9B,CAAC;KACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtB,IACC,EAAE,KAAK,MAAM;YACb,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,cAAc,CAAC,EACzF,CAAC;YACF,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,kCAAkC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACF,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@atcute/lex-cli",
4
- "version": "1.1.1",
4
+ "version": "2.0.0",
5
5
  "description": "cli tool to generate type definitions for atcute",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -16,14 +16,18 @@
16
16
  "cli.mjs"
17
17
  ],
18
18
  "bin": "./cli.mjs",
19
+ "exports": {
20
+ ".": "./dist/index.js"
21
+ },
19
22
  "dependencies": {
20
- "@badrap/valita": "^0.4.2",
21
- "@externdefs/collider": "^0.1.0",
23
+ "@badrap/valita": "^0.4.4",
24
+ "@externdefs/collider": "^0.3.0",
22
25
  "picocolors": "^1.1.1",
23
- "prettier": "^3.4.2"
26
+ "prettier": "^3.5.3"
24
27
  },
25
28
  "devDependencies": {
26
- "@types/node": "^22.12.0"
29
+ "@types/node": "^22.15.17",
30
+ "@atcute/lexicons": "^1.0.0"
27
31
  },
28
32
  "scripts": {
29
33
  "build": "tsc",
package/src/cli.ts ADDED
@@ -0,0 +1,100 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+
4
+ import { Builtins, Command, Option, Program } from '@externdefs/collider';
5
+ import pc from 'picocolors';
6
+
7
+ import { generateLexiconApi } from './codegen.js';
8
+ import type { LexiconConfig } from './index.js';
9
+ import { lexiconDoc, type LexiconDoc } from './schema.js';
10
+
11
+ const program = new Program({ binaryName: 'lex-cli' });
12
+
13
+ program.register(Builtins.HelpCommand);
14
+
15
+ program.register(
16
+ class GenerateCommand extends Command {
17
+ static override paths = [['generate']];
18
+
19
+ static override usage = Command.Usage({
20
+ description: `Generates TypeScript schema`,
21
+ });
22
+
23
+ config = Option.String(['-c', '--config'], {
24
+ required: true,
25
+ description: `Config file`,
26
+ });
27
+
28
+ async execute(): Promise<number | void> {
29
+ const configFilename = path.resolve(this.config);
30
+ const configDirname = path.dirname(configFilename);
31
+
32
+ let config: LexiconConfig;
33
+ try {
34
+ const mod = (await import(path.resolve(configFilename))) as { default: LexiconConfig };
35
+ config = mod.default;
36
+ } catch (err) {
37
+ console.error(pc.bold(pc.red(`failed to import config:`)));
38
+ console.error(err);
39
+
40
+ return 1;
41
+ }
42
+
43
+ const documents: LexiconDoc[] = [];
44
+
45
+ for await (const filename of fs.glob(config.files, { cwd: configDirname })) {
46
+ let source: string;
47
+ try {
48
+ source = await fs.readFile(path.join(configDirname, filename), 'utf8');
49
+ } catch (err) {
50
+ console.error(pc.bold(pc.red(`file read error with "${filename}"`)));
51
+ console.error(err);
52
+
53
+ return 1;
54
+ }
55
+
56
+ let json: unknown;
57
+ try {
58
+ json = JSON.parse(source);
59
+ } catch (err) {
60
+ console.error(pc.bold(pc.red(`json parse error in "${filename}"`)));
61
+ console.error(err);
62
+
63
+ return 1;
64
+ }
65
+
66
+ const result = lexiconDoc.try(json, { mode: 'strip' });
67
+ if (!result.ok) {
68
+ console.error(pc.bold(pc.red(`schema validation failed for "${filename}"`)));
69
+
70
+ for (const issue of result.issues) {
71
+ console.log(`- ${issue.code} at .${issue.path.join('.')}`);
72
+ }
73
+
74
+ return 1;
75
+ }
76
+
77
+ documents.push(result.value);
78
+ }
79
+
80
+ const result = await generateLexiconApi({
81
+ documents: documents,
82
+ mappings: config.mappings ?? [],
83
+ prettier: {},
84
+ });
85
+
86
+ const outdir = path.join(configDirname, config.outdir);
87
+
88
+ for (const file of result.files) {
89
+ const filename = path.join(outdir, file.filename);
90
+ const dirname = path.dirname(filename);
91
+
92
+ await fs.mkdir(dirname, { recursive: true });
93
+ await fs.writeFile(filename, file.code);
94
+ }
95
+ }
96
+ },
97
+ );
98
+
99
+ const exitCode = await program.run(process.argv.slice(2));
100
+ process.exitCode = exitCode;