@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/cli.mjs +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +77 -0
- package/dist/cli.js.map +1 -0
- package/dist/codegen.d.ts +23 -0
- package/dist/codegen.js +552 -0
- package/dist/codegen.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.js +3 -125
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +817 -1945
- package/dist/schema.js +152 -113
- package/dist/schema.js.map +1 -1
- package/package.json +9 -5
- package/src/cli.ts +100 -0
- package/src/codegen.ts +726 -0
- package/src/index.ts +9 -150
- package/src/schema.ts +396 -176
- package/dist/generator.d.ts +0 -7
- package/dist/generator.js +0 -579
- package/dist/generator.js.map +0 -1
- package/src/generator.ts +0 -664
package/dist/schema.js
CHANGED
|
@@ -1,194 +1,233 @@
|
|
|
1
1
|
import * as v from '@badrap/valita';
|
|
2
|
-
|
|
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((
|
|
5
|
-
|
|
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
|
|
15
|
+
export const lexBoolean = _lexBoolean;
|
|
16
|
+
const _lexInteger = v.object({
|
|
12
17
|
type: v.literal('integer'),
|
|
13
18
|
description: v.string().optional(),
|
|
14
|
-
default:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
21
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
60
|
-
|
|
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
|
-
|
|
64
|
-
|
|
52
|
+
minLength: integer.optional(),
|
|
53
|
+
maxLength: integer.optional(),
|
|
65
54
|
});
|
|
66
|
-
export const
|
|
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
|
|
71
|
-
|
|
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:
|
|
68
|
+
ref: refString,
|
|
75
69
|
});
|
|
76
|
-
export const
|
|
77
|
-
|
|
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(
|
|
74
|
+
refs: v.array(refString),
|
|
81
75
|
closed: v.boolean().optional(() => false),
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
export const
|
|
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:
|
|
84
|
+
maxSize: integer.optional(),
|
|
90
85
|
});
|
|
91
|
-
export const
|
|
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(
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
items: v.union(lexPrimitive, lexIpldType, lexRefVariant, lexBlob),
|
|
91
|
+
minLength: integer.optional(),
|
|
92
|
+
maxLength: integer.optional(),
|
|
97
93
|
});
|
|
98
|
-
export const
|
|
99
|
-
|
|
94
|
+
export const lexArray = _lexArray;
|
|
95
|
+
const _lexPrimitiveArray = lexArray.extend({
|
|
96
|
+
items: lexPrimitive,
|
|
100
97
|
});
|
|
101
|
-
export const
|
|
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
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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(
|
|
131
|
+
return v.ok(input);
|
|
112
132
|
};
|
|
113
|
-
|
|
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(
|
|
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(
|
|
122
|
-
export const
|
|
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(
|
|
147
|
+
required: v.array(v.string()).optional(),
|
|
148
|
+
properties: v.record(v.union(lexPrimitive, lexPrimitiveArray)).optional(),
|
|
128
149
|
})
|
|
129
|
-
.chain(
|
|
130
|
-
export const
|
|
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(
|
|
155
|
+
schema: v.union(lexRefVariant, lexObject).optional(),
|
|
134
156
|
});
|
|
135
|
-
export const
|
|
157
|
+
export const lexXrpcBody = _lexXrpcBody;
|
|
158
|
+
const _lexXrpcSubscriptionMessage = v.object({
|
|
136
159
|
description: v.string().optional(),
|
|
137
|
-
schema: v.union(
|
|
160
|
+
schema: v.union(lexRefVariant, lexObject).optional(),
|
|
138
161
|
});
|
|
139
|
-
export const
|
|
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
|
|
167
|
+
export const lexXrpcError = _lexXrpcError;
|
|
168
|
+
const _lexXrpcQuery = v.object({
|
|
144
169
|
type: v.literal('query'),
|
|
145
170
|
description: v.string().optional(),
|
|
146
|
-
parameters:
|
|
147
|
-
output:
|
|
148
|
-
errors: v.array(
|
|
171
|
+
parameters: lexXrpcParameters.optional(),
|
|
172
|
+
output: lexXrpcBody.optional(),
|
|
173
|
+
errors: v.array(lexXrpcError).optional(),
|
|
149
174
|
});
|
|
150
|
-
export const
|
|
175
|
+
export const lexXrpcQuery = _lexXrpcQuery;
|
|
176
|
+
const _lexXrpcProcedure = v.object({
|
|
151
177
|
type: v.literal('procedure'),
|
|
152
178
|
description: v.string().optional(),
|
|
153
|
-
parameters:
|
|
154
|
-
input:
|
|
155
|
-
output:
|
|
156
|
-
errors: v.array(
|
|
179
|
+
parameters: lexXrpcParameters.optional(),
|
|
180
|
+
input: lexXrpcBody.optional(),
|
|
181
|
+
output: lexXrpcBody.optional(),
|
|
182
|
+
errors: v.array(lexXrpcError).optional(),
|
|
157
183
|
});
|
|
158
|
-
export const
|
|
184
|
+
export const lexXrpcProcedure = _lexXrpcProcedure;
|
|
185
|
+
const _lexXrpcSubscription = v.object({
|
|
159
186
|
type: v.literal('subscription'),
|
|
160
187
|
description: v.string().optional(),
|
|
161
|
-
parameters:
|
|
162
|
-
message:
|
|
163
|
-
errors: v.array(
|
|
188
|
+
parameters: lexXrpcParameters.optional(),
|
|
189
|
+
message: lexXrpcSubscriptionMessage.optional(),
|
|
190
|
+
errors: v.array(lexXrpcError).optional(),
|
|
164
191
|
});
|
|
165
|
-
export const
|
|
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
|
|
169
|
-
|
|
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
|
|
172
|
-
const
|
|
173
|
-
const
|
|
174
|
-
|
|
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:
|
|
178
|
-
revision:
|
|
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(
|
|
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((
|
|
183
|
-
const defs =
|
|
184
|
-
for (const
|
|
185
|
-
const def = defs[
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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(
|
|
230
|
+
return v.ok(input);
|
|
193
231
|
});
|
|
232
|
+
export const lexiconDoc = _lexiconDoc;
|
|
194
233
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,MAAM,
|
|
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": "
|
|
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.
|
|
21
|
-
"@externdefs/collider": "^0.
|
|
23
|
+
"@badrap/valita": "^0.4.4",
|
|
24
|
+
"@externdefs/collider": "^0.3.0",
|
|
22
25
|
"picocolors": "^1.1.1",
|
|
23
|
-
"prettier": "^3.
|
|
26
|
+
"prettier": "^3.5.3"
|
|
24
27
|
},
|
|
25
28
|
"devDependencies": {
|
|
26
|
-
"@types/node": "^22.
|
|
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;
|