@atproto/lexicon 0.6.1 → 0.7.0-next.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/CHANGELOG.md +28 -0
- package/dist/blob-refs.d.ts +4 -4
- package/dist/blob-refs.d.ts.map +1 -1
- package/dist/blob-refs.js +20 -46
- package/dist/blob-refs.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -20
- package/dist/index.js.map +1 -1
- package/dist/lexicons.d.ts +1 -1
- package/dist/lexicons.d.ts.map +1 -1
- package/dist/lexicons.js +40 -54
- package/dist/lexicons.js.map +1 -1
- package/dist/serialize.d.ts.map +1 -1
- package/dist/serialize.js +22 -32
- package/dist/serialize.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +193 -204
- package/dist/types.js.map +1 -1
- package/dist/util.js +6 -10
- package/dist/util.js.map +1 -1
- package/dist/validation.d.ts +2 -2
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +10 -17
- package/dist/validation.js.map +1 -1
- package/dist/validators/blob.d.ts +2 -2
- package/dist/validators/blob.d.ts.map +1 -1
- package/dist/validators/blob.js +5 -8
- package/dist/validators/blob.js.map +1 -1
- package/dist/validators/complex.d.ts +2 -2
- package/dist/validators/complex.d.ts.map +1 -1
- package/dist/validators/complex.js +20 -26
- package/dist/validators/complex.js.map +1 -1
- package/dist/validators/formats.d.ts +1 -1
- package/dist/validators/formats.d.ts.map +1 -1
- package/dist/validators/formats.js +38 -51
- package/dist/validators/formats.js.map +1 -1
- package/dist/validators/primitives.d.ts +2 -2
- package/dist/validators/primitives.d.ts.map +1 -1
- package/dist/validators/primitives.js +33 -69
- package/dist/validators/primitives.js.map +1 -1
- package/dist/validators/xrpc.d.ts +2 -2
- package/dist/validators/xrpc.d.ts.map +1 -1
- package/dist/validators/xrpc.js +6 -42
- package/dist/validators/xrpc.js.map +1 -1
- package/{jest.config.js → jest.config.cjs} +8 -1
- package/package.json +17 -9
- package/src/blob-refs.ts +0 -2
- package/src/index.ts +4 -4
- package/src/lexicons.ts +4 -4
- package/src/serialize.ts +1 -3
- package/src/types.ts +1 -3
- package/src/validation.ts +4 -4
- package/src/validators/blob.ts +3 -3
- package/src/validators/complex.ts +5 -5
- package/src/validators/formats.ts +3 -4
- package/src/validators/primitives.ts +3 -3
- package/src/validators/xrpc.ts +8 -4
- package/tests/_scaffolds/lexicons.ts +1 -1
- package/tests/general.test.ts +5 -5
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/types.js
CHANGED
|
@@ -1,37 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.isObj = isObj;
|
|
7
|
-
exports.isDiscriminatedObject = isDiscriminatedObject;
|
|
8
|
-
exports.parseLexiconDoc = parseLexiconDoc;
|
|
9
|
-
const zod_1 = require("zod");
|
|
10
|
-
const common_web_1 = require("@atproto/common-web");
|
|
11
|
-
const syntax_1 = require("@atproto/syntax");
|
|
12
|
-
const util_1 = require("./util");
|
|
13
|
-
exports.languageSchema = zod_1.z
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { validateLanguage } from '@atproto/common-web';
|
|
3
|
+
import { isValidNsid } from '@atproto/syntax';
|
|
4
|
+
import { requiredPropertiesRefinement } from './util.js';
|
|
5
|
+
export const languageSchema = z
|
|
14
6
|
.string()
|
|
15
|
-
.refine(
|
|
16
|
-
|
|
7
|
+
.refine(validateLanguage, 'Invalid BCP47 language tag');
|
|
8
|
+
export const lexLang = z.record(languageSchema, z.string().optional());
|
|
17
9
|
// primitives
|
|
18
10
|
// =
|
|
19
|
-
|
|
20
|
-
type:
|
|
21
|
-
description:
|
|
22
|
-
default:
|
|
23
|
-
const:
|
|
11
|
+
export const lexBoolean = z.object({
|
|
12
|
+
type: z.literal('boolean'),
|
|
13
|
+
description: z.string().optional(),
|
|
14
|
+
default: z.boolean().optional(),
|
|
15
|
+
const: z.boolean().optional(),
|
|
24
16
|
});
|
|
25
|
-
|
|
26
|
-
type:
|
|
27
|
-
description:
|
|
28
|
-
default:
|
|
29
|
-
minimum:
|
|
30
|
-
maximum:
|
|
31
|
-
enum:
|
|
32
|
-
const:
|
|
17
|
+
export const lexInteger = z.object({
|
|
18
|
+
type: z.literal('integer'),
|
|
19
|
+
description: z.string().optional(),
|
|
20
|
+
default: z.number().int().optional(),
|
|
21
|
+
minimum: z.number().int().optional(),
|
|
22
|
+
maximum: z.number().int().optional(),
|
|
23
|
+
enum: z.number().int().array().optional(),
|
|
24
|
+
const: z.number().int().optional(),
|
|
33
25
|
});
|
|
34
|
-
|
|
26
|
+
export const lexStringFormat = z.enum([
|
|
35
27
|
'datetime',
|
|
36
28
|
'uri',
|
|
37
29
|
'at-uri',
|
|
@@ -44,199 +36,199 @@ exports.lexStringFormat = zod_1.z.enum([
|
|
|
44
36
|
'tid',
|
|
45
37
|
'record-key',
|
|
46
38
|
]);
|
|
47
|
-
|
|
48
|
-
type:
|
|
49
|
-
format:
|
|
50
|
-
description:
|
|
51
|
-
default:
|
|
52
|
-
minLength:
|
|
53
|
-
maxLength:
|
|
54
|
-
minGraphemes:
|
|
55
|
-
maxGraphemes:
|
|
56
|
-
enum:
|
|
57
|
-
const:
|
|
58
|
-
knownValues:
|
|
39
|
+
export const lexString = z.object({
|
|
40
|
+
type: z.literal('string'),
|
|
41
|
+
format: lexStringFormat.optional(),
|
|
42
|
+
description: z.string().optional(),
|
|
43
|
+
default: z.string().optional(),
|
|
44
|
+
minLength: z.number().int().optional(),
|
|
45
|
+
maxLength: z.number().int().optional(),
|
|
46
|
+
minGraphemes: z.number().int().optional(),
|
|
47
|
+
maxGraphemes: z.number().int().optional(),
|
|
48
|
+
enum: z.string().array().optional(),
|
|
49
|
+
const: z.string().optional(),
|
|
50
|
+
knownValues: z.string().array().optional(),
|
|
59
51
|
});
|
|
60
|
-
|
|
61
|
-
type:
|
|
62
|
-
description:
|
|
52
|
+
export const lexUnknown = z.object({
|
|
53
|
+
type: z.literal('unknown'),
|
|
54
|
+
description: z.string().optional(),
|
|
63
55
|
});
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
export const lexPrimitive = z.discriminatedUnion('type', [
|
|
57
|
+
lexBoolean,
|
|
58
|
+
lexInteger,
|
|
59
|
+
lexString,
|
|
60
|
+
lexUnknown,
|
|
69
61
|
]);
|
|
70
62
|
// ipld types
|
|
71
63
|
// =
|
|
72
|
-
|
|
73
|
-
type:
|
|
74
|
-
description:
|
|
75
|
-
maxLength:
|
|
76
|
-
minLength:
|
|
64
|
+
export const lexBytes = z.object({
|
|
65
|
+
type: z.literal('bytes'),
|
|
66
|
+
description: z.string().optional(),
|
|
67
|
+
maxLength: z.number().optional(),
|
|
68
|
+
minLength: z.number().optional(),
|
|
77
69
|
});
|
|
78
|
-
|
|
79
|
-
type:
|
|
80
|
-
description:
|
|
70
|
+
export const lexCidLink = z.object({
|
|
71
|
+
type: z.literal('cid-link'),
|
|
72
|
+
description: z.string().optional(),
|
|
81
73
|
});
|
|
82
|
-
|
|
74
|
+
export const lexIpldType = z.discriminatedUnion('type', [lexBytes, lexCidLink]);
|
|
83
75
|
// references
|
|
84
76
|
// =
|
|
85
|
-
|
|
86
|
-
type:
|
|
87
|
-
description:
|
|
88
|
-
ref:
|
|
77
|
+
export const lexRef = z.object({
|
|
78
|
+
type: z.literal('ref'),
|
|
79
|
+
description: z.string().optional(),
|
|
80
|
+
ref: z.string(),
|
|
89
81
|
});
|
|
90
|
-
|
|
91
|
-
type:
|
|
92
|
-
description:
|
|
93
|
-
refs:
|
|
94
|
-
closed:
|
|
82
|
+
export const lexRefUnion = z.object({
|
|
83
|
+
type: z.literal('union'),
|
|
84
|
+
description: z.string().optional(),
|
|
85
|
+
refs: z.string().array(),
|
|
86
|
+
closed: z.boolean().optional(),
|
|
95
87
|
});
|
|
96
|
-
|
|
88
|
+
export const lexRefVariant = z.discriminatedUnion('type', [lexRef, lexRefUnion]);
|
|
97
89
|
// blobs
|
|
98
90
|
// =
|
|
99
|
-
|
|
100
|
-
type:
|
|
101
|
-
description:
|
|
102
|
-
accept:
|
|
103
|
-
maxSize:
|
|
91
|
+
export const lexBlob = z.object({
|
|
92
|
+
type: z.literal('blob'),
|
|
93
|
+
description: z.string().optional(),
|
|
94
|
+
accept: z.string().array().optional(),
|
|
95
|
+
maxSize: z.number().optional(),
|
|
104
96
|
});
|
|
105
97
|
// complex types
|
|
106
98
|
// =
|
|
107
|
-
|
|
108
|
-
type:
|
|
109
|
-
description:
|
|
110
|
-
items:
|
|
99
|
+
export const lexArray = z.object({
|
|
100
|
+
type: z.literal('array'),
|
|
101
|
+
description: z.string().optional(),
|
|
102
|
+
items: z.discriminatedUnion('type', [
|
|
111
103
|
// lexPrimitive
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
lexBoolean,
|
|
105
|
+
lexInteger,
|
|
106
|
+
lexString,
|
|
107
|
+
lexUnknown,
|
|
116
108
|
// lexIpldType
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
lexBytes,
|
|
110
|
+
lexCidLink,
|
|
119
111
|
// lexRefVariant
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
lexRef,
|
|
113
|
+
lexRefUnion,
|
|
122
114
|
// other
|
|
123
|
-
|
|
115
|
+
lexBlob,
|
|
124
116
|
]),
|
|
125
|
-
minLength:
|
|
126
|
-
maxLength:
|
|
117
|
+
minLength: z.number().int().optional(),
|
|
118
|
+
maxLength: z.number().int().optional(),
|
|
127
119
|
});
|
|
128
|
-
|
|
129
|
-
items:
|
|
120
|
+
export const lexPrimitiveArray = lexArray.merge(z.object({
|
|
121
|
+
items: lexPrimitive,
|
|
130
122
|
}));
|
|
131
|
-
|
|
132
|
-
type:
|
|
133
|
-
description:
|
|
123
|
+
export const lexToken = z.object({
|
|
124
|
+
type: z.literal('token'),
|
|
125
|
+
description: z.string().optional(),
|
|
134
126
|
});
|
|
135
|
-
|
|
127
|
+
export const lexObject = z
|
|
136
128
|
.object({
|
|
137
|
-
type:
|
|
138
|
-
description:
|
|
139
|
-
required:
|
|
140
|
-
nullable:
|
|
141
|
-
properties:
|
|
142
|
-
|
|
129
|
+
type: z.literal('object'),
|
|
130
|
+
description: z.string().optional(),
|
|
131
|
+
required: z.string().array().optional(),
|
|
132
|
+
nullable: z.string().array().optional(),
|
|
133
|
+
properties: z.record(z.string(), z.discriminatedUnion('type', [
|
|
134
|
+
lexArray,
|
|
143
135
|
// lexPrimitive
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
136
|
+
lexBoolean,
|
|
137
|
+
lexInteger,
|
|
138
|
+
lexString,
|
|
139
|
+
lexUnknown,
|
|
148
140
|
// lexIpldType
|
|
149
|
-
|
|
150
|
-
|
|
141
|
+
lexBytes,
|
|
142
|
+
lexCidLink,
|
|
151
143
|
// lexRefVariant
|
|
152
|
-
|
|
153
|
-
|
|
144
|
+
lexRef,
|
|
145
|
+
lexRefUnion,
|
|
154
146
|
// other
|
|
155
|
-
|
|
147
|
+
lexBlob,
|
|
156
148
|
])),
|
|
157
149
|
})
|
|
158
|
-
.superRefine(
|
|
150
|
+
.superRefine(requiredPropertiesRefinement);
|
|
159
151
|
// permissions
|
|
160
152
|
// =
|
|
161
|
-
const lexPermission =
|
|
162
|
-
type:
|
|
163
|
-
resource:
|
|
164
|
-
}),
|
|
153
|
+
const lexPermission = z.intersection(z.object({
|
|
154
|
+
type: z.literal('permission'),
|
|
155
|
+
resource: z.string().nonempty(),
|
|
156
|
+
}), z.record(z.string(), z
|
|
165
157
|
.union([
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
158
|
+
z.array(z.union([z.string(), z.number().int(), z.boolean()])),
|
|
159
|
+
z.boolean(),
|
|
160
|
+
z.number().int(),
|
|
161
|
+
z.string(),
|
|
170
162
|
])
|
|
171
163
|
.optional()));
|
|
172
|
-
|
|
173
|
-
type:
|
|
174
|
-
description:
|
|
175
|
-
title:
|
|
176
|
-
'title:lang':
|
|
177
|
-
detail:
|
|
178
|
-
'detail:lang':
|
|
179
|
-
permissions:
|
|
164
|
+
export const lexPermissionSet = z.object({
|
|
165
|
+
type: z.literal('permission-set'),
|
|
166
|
+
description: z.string().optional(),
|
|
167
|
+
title: z.string().optional(),
|
|
168
|
+
'title:lang': lexLang.optional(),
|
|
169
|
+
detail: z.string().optional(),
|
|
170
|
+
'detail:lang': lexLang.optional(),
|
|
171
|
+
permissions: z.array(lexPermission),
|
|
180
172
|
});
|
|
181
173
|
// xrpc
|
|
182
174
|
// =
|
|
183
|
-
|
|
175
|
+
export const lexXrpcParameters = z
|
|
184
176
|
.object({
|
|
185
|
-
type:
|
|
186
|
-
description:
|
|
187
|
-
required:
|
|
188
|
-
properties:
|
|
189
|
-
|
|
177
|
+
type: z.literal('params'),
|
|
178
|
+
description: z.string().optional(),
|
|
179
|
+
required: z.string().array().optional(),
|
|
180
|
+
properties: z.record(z.string(), z.discriminatedUnion('type', [
|
|
181
|
+
lexPrimitiveArray,
|
|
190
182
|
// lexPrimitive
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
183
|
+
lexBoolean,
|
|
184
|
+
lexInteger,
|
|
185
|
+
lexString,
|
|
186
|
+
lexUnknown,
|
|
195
187
|
])),
|
|
196
188
|
})
|
|
197
|
-
.superRefine(
|
|
198
|
-
|
|
199
|
-
description:
|
|
200
|
-
encoding:
|
|
189
|
+
.superRefine(requiredPropertiesRefinement);
|
|
190
|
+
export const lexXrpcBody = z.object({
|
|
191
|
+
description: z.string().optional(),
|
|
192
|
+
encoding: z.string(),
|
|
201
193
|
// @NOTE using discriminatedUnion with a refined schema requires zod >= 4
|
|
202
|
-
schema:
|
|
194
|
+
schema: z.union([lexRefVariant, lexObject]).optional(),
|
|
203
195
|
});
|
|
204
|
-
|
|
205
|
-
name:
|
|
206
|
-
description:
|
|
196
|
+
export const lexXrpcError = z.object({
|
|
197
|
+
name: z.string(),
|
|
198
|
+
description: z.string().optional(),
|
|
207
199
|
});
|
|
208
|
-
|
|
209
|
-
type:
|
|
210
|
-
description:
|
|
211
|
-
parameters:
|
|
212
|
-
output:
|
|
213
|
-
errors:
|
|
200
|
+
export const lexXrpcQuery = z.object({
|
|
201
|
+
type: z.literal('query'),
|
|
202
|
+
description: z.string().optional(),
|
|
203
|
+
parameters: lexXrpcParameters.optional(),
|
|
204
|
+
output: lexXrpcBody.optional(),
|
|
205
|
+
errors: lexXrpcError.array().optional(),
|
|
214
206
|
});
|
|
215
|
-
|
|
216
|
-
type:
|
|
217
|
-
description:
|
|
218
|
-
parameters:
|
|
219
|
-
input:
|
|
220
|
-
output:
|
|
221
|
-
errors:
|
|
207
|
+
export const lexXrpcProcedure = z.object({
|
|
208
|
+
type: z.literal('procedure'),
|
|
209
|
+
description: z.string().optional(),
|
|
210
|
+
parameters: lexXrpcParameters.optional(),
|
|
211
|
+
input: lexXrpcBody.optional(),
|
|
212
|
+
output: lexXrpcBody.optional(),
|
|
213
|
+
errors: lexXrpcError.array().optional(),
|
|
222
214
|
});
|
|
223
|
-
|
|
224
|
-
type:
|
|
225
|
-
description:
|
|
226
|
-
parameters:
|
|
227
|
-
message:
|
|
228
|
-
description:
|
|
229
|
-
schema:
|
|
215
|
+
export const lexXrpcSubscription = z.object({
|
|
216
|
+
type: z.literal('subscription'),
|
|
217
|
+
description: z.string().optional(),
|
|
218
|
+
parameters: lexXrpcParameters.optional(),
|
|
219
|
+
message: z.object({
|
|
220
|
+
description: z.string().optional(),
|
|
221
|
+
schema: lexRefUnion,
|
|
230
222
|
}),
|
|
231
|
-
errors:
|
|
223
|
+
errors: lexXrpcError.array().optional(),
|
|
232
224
|
});
|
|
233
225
|
// database
|
|
234
226
|
// =
|
|
235
|
-
|
|
236
|
-
type:
|
|
237
|
-
description:
|
|
238
|
-
key:
|
|
239
|
-
record:
|
|
227
|
+
export const lexRecord = z.object({
|
|
228
|
+
type: z.literal('record'),
|
|
229
|
+
description: z.string().optional(),
|
|
230
|
+
key: z.string().optional(),
|
|
231
|
+
record: lexObject,
|
|
240
232
|
});
|
|
241
233
|
// core
|
|
242
234
|
// =
|
|
@@ -244,7 +236,7 @@ exports.lexRecord = zod_1.z.object({
|
|
|
244
236
|
// lexXrpcProperty and lexObject are refined
|
|
245
237
|
// `z.union` would work, but it's too slow
|
|
246
238
|
// see #915 for details
|
|
247
|
-
|
|
239
|
+
export const lexUserType = z.custom((val) => {
|
|
248
240
|
if (!val || typeof val !== 'object') {
|
|
249
241
|
return;
|
|
250
242
|
}
|
|
@@ -253,35 +245,35 @@ exports.lexUserType = zod_1.z.custom((val) => {
|
|
|
253
245
|
}
|
|
254
246
|
switch (val['type']) {
|
|
255
247
|
case 'record':
|
|
256
|
-
return
|
|
248
|
+
return lexRecord.parse(val);
|
|
257
249
|
case 'permission-set':
|
|
258
|
-
return
|
|
250
|
+
return lexPermissionSet.parse(val);
|
|
259
251
|
case 'query':
|
|
260
|
-
return
|
|
252
|
+
return lexXrpcQuery.parse(val);
|
|
261
253
|
case 'procedure':
|
|
262
|
-
return
|
|
254
|
+
return lexXrpcProcedure.parse(val);
|
|
263
255
|
case 'subscription':
|
|
264
|
-
return
|
|
256
|
+
return lexXrpcSubscription.parse(val);
|
|
265
257
|
case 'blob':
|
|
266
|
-
return
|
|
258
|
+
return lexBlob.parse(val);
|
|
267
259
|
case 'array':
|
|
268
|
-
return
|
|
260
|
+
return lexArray.parse(val);
|
|
269
261
|
case 'token':
|
|
270
|
-
return
|
|
262
|
+
return lexToken.parse(val);
|
|
271
263
|
case 'object':
|
|
272
|
-
return
|
|
264
|
+
return lexObject.parse(val);
|
|
273
265
|
case 'boolean':
|
|
274
|
-
return
|
|
266
|
+
return lexBoolean.parse(val);
|
|
275
267
|
case 'integer':
|
|
276
|
-
return
|
|
268
|
+
return lexInteger.parse(val);
|
|
277
269
|
case 'string':
|
|
278
|
-
return
|
|
270
|
+
return lexString.parse(val);
|
|
279
271
|
case 'bytes':
|
|
280
|
-
return
|
|
272
|
+
return lexBytes.parse(val);
|
|
281
273
|
case 'cid-link':
|
|
282
|
-
return
|
|
274
|
+
return lexCidLink.parse(val);
|
|
283
275
|
case 'unknown':
|
|
284
|
-
return
|
|
276
|
+
return lexUnknown.parse(val);
|
|
285
277
|
}
|
|
286
278
|
}, (val) => {
|
|
287
279
|
if (!val || typeof val !== 'object') {
|
|
@@ -307,15 +299,15 @@ exports.lexUserType = zod_1.z.custom((val) => {
|
|
|
307
299
|
fatal: true,
|
|
308
300
|
};
|
|
309
301
|
});
|
|
310
|
-
|
|
302
|
+
export const lexiconDoc = z
|
|
311
303
|
.object({
|
|
312
|
-
lexicon:
|
|
313
|
-
id:
|
|
304
|
+
lexicon: z.literal(1),
|
|
305
|
+
id: z.string().refine(isValidNsid, {
|
|
314
306
|
message: 'Must be a valid NSID',
|
|
315
307
|
}),
|
|
316
|
-
revision:
|
|
317
|
-
description:
|
|
318
|
-
defs:
|
|
308
|
+
revision: z.number().optional(),
|
|
309
|
+
description: z.string().optional(),
|
|
310
|
+
defs: z.record(z.string(), lexUserType),
|
|
319
311
|
})
|
|
320
312
|
.refine((doc) => {
|
|
321
313
|
for (const [defId, def] of Object.entries(doc.defs)) {
|
|
@@ -334,26 +326,23 @@ exports.lexiconDoc = zod_1.z
|
|
|
334
326
|
});
|
|
335
327
|
// helpers
|
|
336
328
|
// =
|
|
337
|
-
function isValidLexiconDoc(v) {
|
|
338
|
-
return
|
|
329
|
+
export function isValidLexiconDoc(v) {
|
|
330
|
+
return lexiconDoc.safeParse(v).success;
|
|
339
331
|
}
|
|
340
|
-
function isObj(v) {
|
|
332
|
+
export function isObj(v) {
|
|
341
333
|
return v != null && typeof v === 'object';
|
|
342
334
|
}
|
|
343
|
-
function isDiscriminatedObject(v) {
|
|
335
|
+
export function isDiscriminatedObject(v) {
|
|
344
336
|
return isObj(v) && '$type' in v && typeof v.$type === 'string';
|
|
345
337
|
}
|
|
346
|
-
function parseLexiconDoc(v) {
|
|
347
|
-
|
|
338
|
+
export function parseLexiconDoc(v) {
|
|
339
|
+
lexiconDoc.parse(v);
|
|
348
340
|
return v;
|
|
349
341
|
}
|
|
350
|
-
class ValidationError extends Error {
|
|
342
|
+
export class ValidationError extends Error {
|
|
351
343
|
}
|
|
352
|
-
|
|
353
|
-
class InvalidLexiconError extends Error {
|
|
344
|
+
export class InvalidLexiconError extends Error {
|
|
354
345
|
}
|
|
355
|
-
|
|
356
|
-
class LexiconDefNotFoundError extends Error {
|
|
346
|
+
export class LexiconDefNotFoundError extends Error {
|
|
357
347
|
}
|
|
358
|
-
exports.LexiconDefNotFoundError = LexiconDefNotFoundError;
|
|
359
348
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport { z } from 'zod'\nimport { validateLanguage } from '@atproto/common-web'\nimport { isValidNsid } from '@atproto/syntax'\nimport { requiredPropertiesRefinement } from './util'\n\nexport const languageSchema = z\n .string()\n .refine(validateLanguage, 'Invalid BCP47 language tag')\n\nexport const lexLang = z.record(languageSchema, z.string().optional())\n\nexport type LexLang = z.infer<typeof lexLang>\n\n// primitives\n// =\n\nexport const lexBoolean = z.object({\n type: z.literal('boolean'),\n description: z.string().optional(),\n default: z.boolean().optional(),\n const: z.boolean().optional(),\n})\nexport type LexBoolean = z.infer<typeof lexBoolean>\n\nexport const lexInteger = z.object({\n type: z.literal('integer'),\n description: z.string().optional(),\n default: z.number().int().optional(),\n minimum: z.number().int().optional(),\n maximum: z.number().int().optional(),\n enum: z.number().int().array().optional(),\n const: z.number().int().optional(),\n})\nexport type LexInteger = z.infer<typeof lexInteger>\n\nexport const lexStringFormat = z.enum([\n 'datetime',\n 'uri',\n 'at-uri',\n 'did',\n 'handle',\n 'at-identifier',\n 'nsid',\n 'cid',\n 'language',\n 'tid',\n 'record-key',\n])\nexport type LexStringFormat = z.infer<typeof lexStringFormat>\n\nexport const lexString = z.object({\n type: z.literal('string'),\n format: lexStringFormat.optional(),\n description: z.string().optional(),\n default: z.string().optional(),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n minGraphemes: z.number().int().optional(),\n maxGraphemes: z.number().int().optional(),\n enum: z.string().array().optional(),\n const: z.string().optional(),\n knownValues: z.string().array().optional(),\n})\nexport type LexString = z.infer<typeof lexString>\n\nexport const lexUnknown = z.object({\n type: z.literal('unknown'),\n description: z.string().optional(),\n})\nexport type LexUnknown = z.infer<typeof lexUnknown>\n\nexport const lexPrimitive = z.discriminatedUnion('type', [\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n])\nexport type LexPrimitive = z.infer<typeof lexPrimitive>\n\n// ipld types\n// =\n\nexport const lexBytes = z.object({\n type: z.literal('bytes'),\n description: z.string().optional(),\n maxLength: z.number().optional(),\n minLength: z.number().optional(),\n})\nexport type LexBytes = z.infer<typeof lexBytes>\n\nexport const lexCidLink = z.object({\n type: z.literal('cid-link'),\n description: z.string().optional(),\n})\nexport type LexCidLink = z.infer<typeof lexCidLink>\n\nexport const lexIpldType = z.discriminatedUnion('type', [lexBytes, lexCidLink])\nexport type LexIpldType = z.infer<typeof lexIpldType>\n\n// references\n// =\n\nexport const lexRef = z.object({\n type: z.literal('ref'),\n description: z.string().optional(),\n ref: z.string(),\n})\nexport type LexRef = z.infer<typeof lexRef>\n\nexport const lexRefUnion = z.object({\n type: z.literal('union'),\n description: z.string().optional(),\n refs: z.string().array(),\n closed: z.boolean().optional(),\n})\nexport type LexRefUnion = z.infer<typeof lexRefUnion>\n\nexport const lexRefVariant = z.discriminatedUnion('type', [lexRef, lexRefUnion])\nexport type LexRefVariant = z.infer<typeof lexRefVariant>\n\n// blobs\n// =\n\nexport const lexBlob = z.object({\n type: z.literal('blob'),\n description: z.string().optional(),\n accept: z.string().array().optional(),\n maxSize: z.number().optional(),\n})\nexport type LexBlob = z.infer<typeof lexBlob>\n\n// complex types\n// =\n\nexport const lexArray = z.object({\n type: z.literal('array'),\n description: z.string().optional(),\n items: z.discriminatedUnion('type', [\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n // lexIpldType\n lexBytes,\n lexCidLink,\n // lexRefVariant\n lexRef,\n lexRefUnion,\n // other\n lexBlob,\n ]),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n})\nexport type LexArray = z.infer<typeof lexArray>\n\nexport const lexPrimitiveArray = lexArray.merge(\n z.object({\n items: lexPrimitive,\n }),\n)\nexport type LexPrimitiveArray = z.infer<typeof lexPrimitiveArray>\n\nexport const lexToken = z.object({\n type: z.literal('token'),\n description: z.string().optional(),\n})\nexport type LexToken = z.infer<typeof lexToken>\n\nexport const lexObject = z\n .object({\n type: z.literal('object'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n nullable: z.string().array().optional(),\n properties: z.record(\n z.string(),\n z.discriminatedUnion('type', [\n lexArray,\n\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n // lexIpldType\n lexBytes,\n lexCidLink,\n // lexRefVariant\n lexRef,\n lexRefUnion,\n // other\n lexBlob,\n ]),\n ),\n })\n .superRefine(requiredPropertiesRefinement)\nexport type LexObject = z.infer<typeof lexObject>\n\n// permissions\n// =\n\nconst lexPermission = z.intersection(\n z.object({\n type: z.literal('permission'),\n resource: z.string().nonempty(),\n }),\n z.record(\n z.string(),\n z\n .union([\n z.array(z.union([z.string(), z.number().int(), z.boolean()])),\n\n z.boolean(),\n z.number().int(),\n z.string(),\n ])\n .optional(),\n ),\n)\n\nexport type LexPermission = z.infer<typeof lexPermission>\n\nexport const lexPermissionSet = z.object({\n type: z.literal('permission-set'),\n description: z.string().optional(),\n title: z.string().optional(),\n 'title:lang': lexLang.optional(),\n detail: z.string().optional(),\n 'detail:lang': lexLang.optional(),\n permissions: z.array(lexPermission),\n})\n\nexport type LexPermissionSet = z.infer<typeof lexPermissionSet>\n\n// xrpc\n// =\n\nexport const lexXrpcParameters = z\n .object({\n type: z.literal('params'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n properties: z.record(\n z.string(),\n z.discriminatedUnion('type', [\n lexPrimitiveArray,\n\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n ]),\n ),\n })\n .superRefine(requiredPropertiesRefinement)\nexport type LexXrpcParameters = z.infer<typeof lexXrpcParameters>\n\nexport const lexXrpcBody = z.object({\n description: z.string().optional(),\n encoding: z.string(),\n // @NOTE using discriminatedUnion with a refined schema requires zod >= 4\n schema: z.union([lexRefVariant, lexObject]).optional(),\n})\nexport type LexXrpcBody = z.infer<typeof lexXrpcBody>\n\nexport const lexXrpcError = z.object({\n name: z.string(),\n description: z.string().optional(),\n})\nexport type LexXrpcError = z.infer<typeof lexXrpcError>\n\nexport const lexXrpcQuery = z.object({\n type: z.literal('query'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcQuery = z.infer<typeof lexXrpcQuery>\n\nexport const lexXrpcProcedure = z.object({\n type: z.literal('procedure'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n input: lexXrpcBody.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcProcedure = z.infer<typeof lexXrpcProcedure>\n\nexport const lexXrpcSubscription = z.object({\n type: z.literal('subscription'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n message: z.object({\n description: z.string().optional(),\n schema: lexRefUnion,\n }),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcSubscription = z.infer<typeof lexXrpcSubscription>\n\n// database\n// =\n\nexport const lexRecord = z.object({\n type: z.literal('record'),\n description: z.string().optional(),\n key: z.string().optional(),\n record: lexObject,\n})\nexport type LexRecord = z.infer<typeof lexRecord>\n\n// core\n// =\n\n// We need to use `z.custom` here because\n// lexXrpcProperty and lexObject are refined\n// `z.union` would work, but it's too slow\n// see #915 for details\nexport const lexUserType = z.custom<\n | LexRecord\n | LexPermissionSet\n | LexXrpcQuery\n | LexXrpcProcedure\n | LexXrpcSubscription\n | LexBlob\n | LexArray\n | LexToken\n | LexObject\n | LexBoolean\n | LexInteger\n | LexString\n | LexBytes\n | LexCidLink\n | LexUnknown\n>(\n (val) => {\n if (!val || typeof val !== 'object') {\n return\n }\n\n if (val['type'] === undefined) {\n return\n }\n\n switch (val['type']) {\n case 'record':\n return lexRecord.parse(val)\n\n case 'permission-set':\n return lexPermissionSet.parse(val)\n\n case 'query':\n return lexXrpcQuery.parse(val)\n case 'procedure':\n return lexXrpcProcedure.parse(val)\n case 'subscription':\n return lexXrpcSubscription.parse(val)\n\n case 'blob':\n return lexBlob.parse(val)\n\n case 'array':\n return lexArray.parse(val)\n case 'token':\n return lexToken.parse(val)\n case 'object':\n return lexObject.parse(val)\n\n case 'boolean':\n return lexBoolean.parse(val)\n case 'integer':\n return lexInteger.parse(val)\n case 'string':\n return lexString.parse(val)\n case 'bytes':\n return lexBytes.parse(val)\n case 'cid-link':\n return lexCidLink.parse(val)\n case 'unknown':\n return lexUnknown.parse(val)\n }\n },\n (val) => {\n if (!val || typeof val !== 'object') {\n return {\n message: 'Must be an object',\n fatal: true,\n }\n }\n\n if (val['type'] === undefined) {\n return {\n message: 'Must have a type',\n fatal: true,\n }\n }\n\n if (typeof val['type'] !== 'string') {\n return {\n message: 'Type property must be a string',\n fatal: true,\n }\n }\n\n return {\n message: `Invalid type: ${val['type']} must be one of: record, query, procedure, subscription, blob, array, token, object, boolean, integer, string, bytes, cid-link, unknown`,\n fatal: true,\n }\n },\n)\nexport type LexUserType = z.infer<typeof lexUserType>\n\nexport const lexiconDoc = z\n .object({\n lexicon: z.literal(1),\n id: z.string().refine(isValidNsid, {\n message: 'Must be a valid NSID',\n }),\n revision: z.number().optional(),\n description: z.string().optional(),\n defs: z.record(z.string(), lexUserType),\n })\n .refine(\n (doc) => {\n for (const [defId, def] of Object.entries(doc.defs)) {\n if (\n defId !== 'main' &&\n (def.type === 'record' ||\n def.type === 'permission-set' ||\n def.type === 'procedure' ||\n def.type === 'query' ||\n def.type === 'subscription')\n ) {\n return false\n }\n }\n return true\n },\n {\n message: `Records, permission sets, procedures, queries, and subscriptions must be the main definition.`,\n },\n )\nexport type LexiconDoc = z.infer<typeof lexiconDoc>\n\n// helpers\n// =\n\nexport function isValidLexiconDoc(v: unknown): v is LexiconDoc {\n return lexiconDoc.safeParse(v).success\n}\n\nexport function isObj<V>(v: V): v is V & object {\n return v != null && typeof v === 'object'\n}\n\nexport type DiscriminatedObject = { $type: string }\nexport function isDiscriminatedObject(v: unknown): v is DiscriminatedObject {\n return isObj(v) && '$type' in v && typeof v.$type === 'string'\n}\n\nexport function parseLexiconDoc(v: unknown): LexiconDoc {\n lexiconDoc.parse(v)\n return v as LexiconDoc\n}\n\nexport type ValidationResult<V = unknown> =\n | {\n success: true\n value: V\n }\n | {\n success: false\n error: ValidationError\n }\n\nexport class ValidationError extends Error {}\nexport class InvalidLexiconError extends Error {}\nexport class LexiconDefNotFoundError extends Error {}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AAItE,aAAa;AACb,IAAI;AAEJ,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,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;CAC9B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,UAAU;IACV,KAAK;IACL,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,eAAe;IACf,MAAM;IACN,KAAK;IACL,UAAU;IACV,KAAK;IACL,YAAY;CACb,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACvD,UAAU;IACV,UAAU;IACV,SAAS;IACT,UAAU;CACX,CAAC,CAAA;AAGF,aAAa;AACb,IAAI;AAEJ,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AAG/E,aAAa;AACb,IAAI;AAEJ,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,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;CAChB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AAGhF,QAAQ;AACR,IAAI;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAA;AAGF,gBAAgB;AAChB,IAAI;AAEJ,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAClC,eAAe;QACf,UAAU;QACV,UAAU;QACV,SAAS;QACT,UAAU;QACV,cAAc;QACd,QAAQ;QACR,UAAU;QACV,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,QAAQ;QACR,OAAO;KACR,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAC7C,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,YAAY;CACpB,CAAC,CACH,CAAA;AAGD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,CAClB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAC3B,QAAQ;QAER,eAAe;QACf,UAAU;QACV,UAAU;QACV,SAAS;QACT,UAAU;QACV,cAAc;QACd,QAAQ;QACR,UAAU;QACV,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,QAAQ;QACR,OAAO;KACR,CAAC,CACH;CACF,CAAC;KACD,WAAW,CAAC,4BAA4B,CAAC,CAAA;AAG5C,cAAc;AACd,IAAI;AAEJ,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAClC,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,EACF,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,MAAM,EAAE,EACV,CAAC;KACE,KAAK,CAAC;IACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAE7D,CAAC,CAAC,OAAO,EAAE;IACX,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAChB,CAAC,CAAC,MAAM,EAAE;CACX,CAAC;KACD,QAAQ,EAAE,CACd,CACF,CAAA;AAID,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;CACpC,CAAC,CAAA;AAIF,OAAO;AACP,IAAI;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,CAClB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAC3B,iBAAiB;QAEjB,eAAe;QACf,UAAU;QACV,UAAU;QACV,SAAS;QACT,UAAU;KACX,CAAC,CACH;CACF,CAAC;KACD,WAAW,CAAC,4BAA4B,CAAC,CAAA;AAG5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,yEAAyE;IACzE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,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,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACxC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,MAAM,EAAE,WAAW;KACpB,CAAC;IACF,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,WAAW;AACX,IAAI;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,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,SAAS;CAClB,CAAC,CAAA;AAGF,OAAO;AACP,IAAI;AAEJ,yCAAyC;AACzC,4CAA4C;AAC5C,0CAA0C;AAC1C,uBAAuB;AACvB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAiBjC,CAAC,GAAG,EAAE,EAAE;IACN,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAM;IACR,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAM;IACR,CAAC;IAED,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE7B,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEpC,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChC,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,KAAK,cAAc;YACjB,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEvC,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE3B,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE7B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,KAAK,UAAU;YACb,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;AACH,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;IACN,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,gCAAgC;YACzC,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,iBAAiB,GAAG,CAAC,MAAM,CAAC,yIAAyI;QAC9K,KAAK,EAAE,IAAI;KACZ,CAAA;AACH,CAAC,CACF,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;QACjC,OAAO,EAAE,sBAAsB;KAChC,CAAC;IACF,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,MAAM,EAAE,EAAE,WAAW,CAAC;CACxC,CAAC;KACD,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;IACN,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IACE,KAAK,KAAK,MAAM;YAChB,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ;gBACpB,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBAC7B,GAAG,CAAC,IAAI,KAAK,WAAW;gBACxB,GAAG,CAAC,IAAI,KAAK,OAAO;gBACpB,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,EAC9B,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,EACD;IACE,OAAO,EAAE,+FAA+F;CACzG,CACF,CAAA;AAGH,UAAU;AACV,IAAI;AAEJ,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC1C,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,CAAI;IAC3B,OAAO,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAA;AAC3C,CAAC;AAGD,MAAM,UAAU,qBAAqB,CAAC,CAAU;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,OAAO,CAAe,CAAA;AACxB,CAAC;AAYD,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG;AAC7C,MAAM,OAAO,mBAAoB,SAAQ,KAAK;CAAG;AACjD,MAAM,OAAO,uBAAwB,SAAQ,KAAK;CAAG","sourcesContent":["import { z } from 'zod'\nimport { validateLanguage } from '@atproto/common-web'\nimport { isValidNsid } from '@atproto/syntax'\nimport { requiredPropertiesRefinement } from './util.js'\n\nexport const languageSchema = z\n .string()\n .refine(validateLanguage, 'Invalid BCP47 language tag')\n\nexport const lexLang = z.record(languageSchema, z.string().optional())\n\nexport type LexLang = z.infer<typeof lexLang>\n\n// primitives\n// =\n\nexport const lexBoolean = z.object({\n type: z.literal('boolean'),\n description: z.string().optional(),\n default: z.boolean().optional(),\n const: z.boolean().optional(),\n})\nexport type LexBoolean = z.infer<typeof lexBoolean>\n\nexport const lexInteger = z.object({\n type: z.literal('integer'),\n description: z.string().optional(),\n default: z.number().int().optional(),\n minimum: z.number().int().optional(),\n maximum: z.number().int().optional(),\n enum: z.number().int().array().optional(),\n const: z.number().int().optional(),\n})\nexport type LexInteger = z.infer<typeof lexInteger>\n\nexport const lexStringFormat = z.enum([\n 'datetime',\n 'uri',\n 'at-uri',\n 'did',\n 'handle',\n 'at-identifier',\n 'nsid',\n 'cid',\n 'language',\n 'tid',\n 'record-key',\n])\nexport type LexStringFormat = z.infer<typeof lexStringFormat>\n\nexport const lexString = z.object({\n type: z.literal('string'),\n format: lexStringFormat.optional(),\n description: z.string().optional(),\n default: z.string().optional(),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n minGraphemes: z.number().int().optional(),\n maxGraphemes: z.number().int().optional(),\n enum: z.string().array().optional(),\n const: z.string().optional(),\n knownValues: z.string().array().optional(),\n})\nexport type LexString = z.infer<typeof lexString>\n\nexport const lexUnknown = z.object({\n type: z.literal('unknown'),\n description: z.string().optional(),\n})\nexport type LexUnknown = z.infer<typeof lexUnknown>\n\nexport const lexPrimitive = z.discriminatedUnion('type', [\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n])\nexport type LexPrimitive = z.infer<typeof lexPrimitive>\n\n// ipld types\n// =\n\nexport const lexBytes = z.object({\n type: z.literal('bytes'),\n description: z.string().optional(),\n maxLength: z.number().optional(),\n minLength: z.number().optional(),\n})\nexport type LexBytes = z.infer<typeof lexBytes>\n\nexport const lexCidLink = z.object({\n type: z.literal('cid-link'),\n description: z.string().optional(),\n})\nexport type LexCidLink = z.infer<typeof lexCidLink>\n\nexport const lexIpldType = z.discriminatedUnion('type', [lexBytes, lexCidLink])\nexport type LexIpldType = z.infer<typeof lexIpldType>\n\n// references\n// =\n\nexport const lexRef = z.object({\n type: z.literal('ref'),\n description: z.string().optional(),\n ref: z.string(),\n})\nexport type LexRef = z.infer<typeof lexRef>\n\nexport const lexRefUnion = z.object({\n type: z.literal('union'),\n description: z.string().optional(),\n refs: z.string().array(),\n closed: z.boolean().optional(),\n})\nexport type LexRefUnion = z.infer<typeof lexRefUnion>\n\nexport const lexRefVariant = z.discriminatedUnion('type', [lexRef, lexRefUnion])\nexport type LexRefVariant = z.infer<typeof lexRefVariant>\n\n// blobs\n// =\n\nexport const lexBlob = z.object({\n type: z.literal('blob'),\n description: z.string().optional(),\n accept: z.string().array().optional(),\n maxSize: z.number().optional(),\n})\nexport type LexBlob = z.infer<typeof lexBlob>\n\n// complex types\n// =\n\nexport const lexArray = z.object({\n type: z.literal('array'),\n description: z.string().optional(),\n items: z.discriminatedUnion('type', [\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n // lexIpldType\n lexBytes,\n lexCidLink,\n // lexRefVariant\n lexRef,\n lexRefUnion,\n // other\n lexBlob,\n ]),\n minLength: z.number().int().optional(),\n maxLength: z.number().int().optional(),\n})\nexport type LexArray = z.infer<typeof lexArray>\n\nexport const lexPrimitiveArray = lexArray.merge(\n z.object({\n items: lexPrimitive,\n }),\n)\nexport type LexPrimitiveArray = z.infer<typeof lexPrimitiveArray>\n\nexport const lexToken = z.object({\n type: z.literal('token'),\n description: z.string().optional(),\n})\nexport type LexToken = z.infer<typeof lexToken>\n\nexport const lexObject = z\n .object({\n type: z.literal('object'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n nullable: z.string().array().optional(),\n properties: z.record(\n z.string(),\n z.discriminatedUnion('type', [\n lexArray,\n\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n // lexIpldType\n lexBytes,\n lexCidLink,\n // lexRefVariant\n lexRef,\n lexRefUnion,\n // other\n lexBlob,\n ]),\n ),\n })\n .superRefine(requiredPropertiesRefinement)\nexport type LexObject = z.infer<typeof lexObject>\n\n// permissions\n// =\n\nconst lexPermission = z.intersection(\n z.object({\n type: z.literal('permission'),\n resource: z.string().nonempty(),\n }),\n z.record(\n z.string(),\n z\n .union([\n z.array(z.union([z.string(), z.number().int(), z.boolean()])),\n\n z.boolean(),\n z.number().int(),\n z.string(),\n ])\n .optional(),\n ),\n)\n\nexport type LexPermission = z.infer<typeof lexPermission>\n\nexport const lexPermissionSet = z.object({\n type: z.literal('permission-set'),\n description: z.string().optional(),\n title: z.string().optional(),\n 'title:lang': lexLang.optional(),\n detail: z.string().optional(),\n 'detail:lang': lexLang.optional(),\n permissions: z.array(lexPermission),\n})\n\nexport type LexPermissionSet = z.infer<typeof lexPermissionSet>\n\n// xrpc\n// =\n\nexport const lexXrpcParameters = z\n .object({\n type: z.literal('params'),\n description: z.string().optional(),\n required: z.string().array().optional(),\n properties: z.record(\n z.string(),\n z.discriminatedUnion('type', [\n lexPrimitiveArray,\n\n // lexPrimitive\n lexBoolean,\n lexInteger,\n lexString,\n lexUnknown,\n ]),\n ),\n })\n .superRefine(requiredPropertiesRefinement)\nexport type LexXrpcParameters = z.infer<typeof lexXrpcParameters>\n\nexport const lexXrpcBody = z.object({\n description: z.string().optional(),\n encoding: z.string(),\n // @NOTE using discriminatedUnion with a refined schema requires zod >= 4\n schema: z.union([lexRefVariant, lexObject]).optional(),\n})\nexport type LexXrpcBody = z.infer<typeof lexXrpcBody>\n\nexport const lexXrpcError = z.object({\n name: z.string(),\n description: z.string().optional(),\n})\nexport type LexXrpcError = z.infer<typeof lexXrpcError>\n\nexport const lexXrpcQuery = z.object({\n type: z.literal('query'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcQuery = z.infer<typeof lexXrpcQuery>\n\nexport const lexXrpcProcedure = z.object({\n type: z.literal('procedure'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n input: lexXrpcBody.optional(),\n output: lexXrpcBody.optional(),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcProcedure = z.infer<typeof lexXrpcProcedure>\n\nexport const lexXrpcSubscription = z.object({\n type: z.literal('subscription'),\n description: z.string().optional(),\n parameters: lexXrpcParameters.optional(),\n message: z.object({\n description: z.string().optional(),\n schema: lexRefUnion,\n }),\n errors: lexXrpcError.array().optional(),\n})\nexport type LexXrpcSubscription = z.infer<typeof lexXrpcSubscription>\n\n// database\n// =\n\nexport const lexRecord = z.object({\n type: z.literal('record'),\n description: z.string().optional(),\n key: z.string().optional(),\n record: lexObject,\n})\nexport type LexRecord = z.infer<typeof lexRecord>\n\n// core\n// =\n\n// We need to use `z.custom` here because\n// lexXrpcProperty and lexObject are refined\n// `z.union` would work, but it's too slow\n// see #915 for details\nexport const lexUserType = z.custom<\n | LexRecord\n | LexPermissionSet\n | LexXrpcQuery\n | LexXrpcProcedure\n | LexXrpcSubscription\n | LexBlob\n | LexArray\n | LexToken\n | LexObject\n | LexBoolean\n | LexInteger\n | LexString\n | LexBytes\n | LexCidLink\n | LexUnknown\n>(\n (val) => {\n if (!val || typeof val !== 'object') {\n return\n }\n\n if (val['type'] === undefined) {\n return\n }\n\n switch (val['type']) {\n case 'record':\n return lexRecord.parse(val)\n\n case 'permission-set':\n return lexPermissionSet.parse(val)\n\n case 'query':\n return lexXrpcQuery.parse(val)\n case 'procedure':\n return lexXrpcProcedure.parse(val)\n case 'subscription':\n return lexXrpcSubscription.parse(val)\n\n case 'blob':\n return lexBlob.parse(val)\n\n case 'array':\n return lexArray.parse(val)\n case 'token':\n return lexToken.parse(val)\n case 'object':\n return lexObject.parse(val)\n\n case 'boolean':\n return lexBoolean.parse(val)\n case 'integer':\n return lexInteger.parse(val)\n case 'string':\n return lexString.parse(val)\n case 'bytes':\n return lexBytes.parse(val)\n case 'cid-link':\n return lexCidLink.parse(val)\n case 'unknown':\n return lexUnknown.parse(val)\n }\n },\n (val) => {\n if (!val || typeof val !== 'object') {\n return {\n message: 'Must be an object',\n fatal: true,\n }\n }\n\n if (val['type'] === undefined) {\n return {\n message: 'Must have a type',\n fatal: true,\n }\n }\n\n if (typeof val['type'] !== 'string') {\n return {\n message: 'Type property must be a string',\n fatal: true,\n }\n }\n\n return {\n message: `Invalid type: ${val['type']} must be one of: record, query, procedure, subscription, blob, array, token, object, boolean, integer, string, bytes, cid-link, unknown`,\n fatal: true,\n }\n },\n)\nexport type LexUserType = z.infer<typeof lexUserType>\n\nexport const lexiconDoc = z\n .object({\n lexicon: z.literal(1),\n id: z.string().refine(isValidNsid, {\n message: 'Must be a valid NSID',\n }),\n revision: z.number().optional(),\n description: z.string().optional(),\n defs: z.record(z.string(), lexUserType),\n })\n .refine(\n (doc) => {\n for (const [defId, def] of Object.entries(doc.defs)) {\n if (\n defId !== 'main' &&\n (def.type === 'record' ||\n def.type === 'permission-set' ||\n def.type === 'procedure' ||\n def.type === 'query' ||\n def.type === 'subscription')\n ) {\n return false\n }\n }\n return true\n },\n {\n message: `Records, permission sets, procedures, queries, and subscriptions must be the main definition.`,\n },\n )\nexport type LexiconDoc = z.infer<typeof lexiconDoc>\n\n// helpers\n// =\n\nexport function isValidLexiconDoc(v: unknown): v is LexiconDoc {\n return lexiconDoc.safeParse(v).success\n}\n\nexport function isObj<V>(v: V): v is V & object {\n return v != null && typeof v === 'object'\n}\n\nexport type DiscriminatedObject = { $type: string }\nexport function isDiscriminatedObject(v: unknown): v is DiscriminatedObject {\n return isObj(v) && '$type' in v && typeof v.$type === 'string'\n}\n\nexport function parseLexiconDoc(v: unknown): LexiconDoc {\n lexiconDoc.parse(v)\n return v as LexiconDoc\n}\n\nexport type ValidationResult<V = unknown> =\n | {\n success: true\n value: V\n }\n | {\n success: false\n error: ValidationError\n }\n\nexport class ValidationError extends Error {}\nexport class InvalidLexiconError extends Error {}\nexport class LexiconDefNotFoundError extends Error {}\n"]}
|