@atcute/lexicons 1.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/LICENSE +17 -0
- package/README.md +11 -0
- package/dist/ambient.d.ts +8 -0
- package/dist/ambient.js +2 -0
- package/dist/ambient.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/blob.d.ts +20 -0
- package/dist/interfaces/blob.js +20 -0
- package/dist/interfaces/blob.js.map +1 -0
- package/dist/interfaces/bytes.d.ts +23 -0
- package/dist/interfaces/bytes.js +21 -0
- package/dist/interfaces/bytes.js.map +1 -0
- package/dist/interfaces/cid-link.d.ts +24 -0
- package/dist/interfaces/cid-link.js +13 -0
- package/dist/interfaces/cid-link.js.map +1 -0
- package/dist/interfaces/index.d.ts +3 -0
- package/dist/interfaces/index.js +4 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/syntax/at-identifier.d.ts +8 -0
- package/dist/syntax/at-identifier.js +7 -0
- package/dist/syntax/at-identifier.js.map +1 -0
- package/dist/syntax/at-uri.d.ts +46 -0
- package/dist/syntax/at-uri.js +64 -0
- package/dist/syntax/at-uri.js.map +1 -0
- package/dist/syntax/cid.d.ts +5 -0
- package/dist/syntax/cid.js +10 -0
- package/dist/syntax/cid.js.map +1 -0
- package/dist/syntax/datetime.d.ts +2 -0
- package/dist/syntax/datetime.js +6 -0
- package/dist/syntax/datetime.js.map +1 -0
- package/dist/syntax/did.d.ts +9 -0
- package/dist/syntax/did.js +6 -0
- package/dist/syntax/did.js.map +1 -0
- package/dist/syntax/handle.d.ts +6 -0
- package/dist/syntax/handle.js +6 -0
- package/dist/syntax/handle.js.map +1 -0
- package/dist/syntax/index.d.ts +11 -0
- package/dist/syntax/index.js +12 -0
- package/dist/syntax/index.js.map +1 -0
- package/dist/syntax/language.d.ts +2 -0
- package/dist/syntax/language.js +6 -0
- package/dist/syntax/language.js.map +1 -0
- package/dist/syntax/nsid.d.ts +5 -0
- package/dist/syntax/nsid.js +6 -0
- package/dist/syntax/nsid.js.map +1 -0
- package/dist/syntax/record-key.d.ts +5 -0
- package/dist/syntax/record-key.js +6 -0
- package/dist/syntax/record-key.js.map +1 -0
- package/dist/syntax/tid.d.ts +5 -0
- package/dist/syntax/tid.js +6 -0
- package/dist/syntax/tid.js.map +1 -0
- package/dist/syntax/uri.d.ts +5 -0
- package/dist/syntax/uri.js +6 -0
- package/dist/syntax/uri.js.map +1 -0
- package/dist/types/brand.d.ts +13 -0
- package/dist/types/brand.js +2 -0
- package/dist/types/brand.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.js +12 -0
- package/dist/utils.js.map +1 -0
- package/dist/validations/index.d.ts +409 -0
- package/dist/validations/index.js +1003 -0
- package/dist/validations/index.js.map +1 -0
- package/dist/validations/utils.d.ts +8 -0
- package/dist/validations/utils.js +54 -0
- package/dist/validations/utils.js.map +1 -0
- package/lib/ambient.ts +7 -0
- package/lib/index.ts +38 -0
- package/lib/interfaces/blob.ts +47 -0
- package/lib/interfaces/bytes.ts +45 -0
- package/lib/interfaces/cid-link.ts +36 -0
- package/lib/interfaces/index.ts +3 -0
- package/lib/syntax/at-identifier.ts +13 -0
- package/lib/syntax/at-uri.ts +117 -0
- package/lib/syntax/cid.ts +16 -0
- package/lib/syntax/datetime.ts +9 -0
- package/lib/syntax/did.ts +16 -0
- package/lib/syntax/handle.ts +13 -0
- package/lib/syntax/index.ts +11 -0
- package/lib/syntax/language.ts +9 -0
- package/lib/syntax/nsid.ts +12 -0
- package/lib/syntax/record-key.ts +11 -0
- package/lib/syntax/tid.ts +11 -0
- package/lib/syntax/uri.ts +11 -0
- package/lib/types/brand.ts +11 -0
- package/lib/utils.ts +15 -0
- package/lib/validations/index.ts +1749 -0
- package/lib/validations/utils.ts +62 -0
- package/package.json +35 -0
package/dist/utils.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const assert = (condition, message) => {
|
|
2
|
+
if (!condition) {
|
|
3
|
+
if (import.meta.env.DEV) {
|
|
4
|
+
throw new Error(`Assertion failed` + (message ? `: ${message}` : ``));
|
|
5
|
+
}
|
|
6
|
+
throw new Error(`Assertion failed`);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
export const assertNever = (_, message) => {
|
|
10
|
+
assert(false, message);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAA8D,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;IACvG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,OAAgB,EAAS,EAAE;IAChE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import * as syntax from '../syntax/index.js';
|
|
2
|
+
import * as interfaces from '../interfaces/index.js';
|
|
3
|
+
import type { $type } from '../types/brand.js';
|
|
4
|
+
type Identity<T> = T;
|
|
5
|
+
type Flatten<T> = Identity<{
|
|
6
|
+
[K in keyof T]: T[K];
|
|
7
|
+
}>;
|
|
8
|
+
type InputType = 'unknown' | 'null' | 'undefined' | 'string' | 'integer' | 'boolean' | 'blob' | 'bytes' | 'cid-link' | 'object' | 'array';
|
|
9
|
+
type StringFormatMap = {
|
|
10
|
+
'at-identifier': syntax.ActorIdentifier;
|
|
11
|
+
'at-uri': syntax.ResourceUri;
|
|
12
|
+
cid: syntax.Cid;
|
|
13
|
+
datetime: syntax.Datetime;
|
|
14
|
+
did: syntax.Did;
|
|
15
|
+
handle: syntax.Handle;
|
|
16
|
+
language: syntax.LanguageCode;
|
|
17
|
+
nsid: syntax.Nsid;
|
|
18
|
+
'record-key': syntax.RecordKey;
|
|
19
|
+
tid: syntax.Tid;
|
|
20
|
+
uri: syntax.GenericUri;
|
|
21
|
+
};
|
|
22
|
+
export type StringFormat = keyof StringFormatMap;
|
|
23
|
+
type Literal = string | number | boolean;
|
|
24
|
+
type Key = string | number;
|
|
25
|
+
export type IssueLeaf = {
|
|
26
|
+
ok: false;
|
|
27
|
+
code: 'missing_value';
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
code: 'invalid_literal';
|
|
31
|
+
expected: readonly Literal[];
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
code: 'invalid_type';
|
|
35
|
+
expected: InputType;
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
code: 'invalid_variant';
|
|
39
|
+
expected: string[];
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
code: 'invalid_integer_range';
|
|
43
|
+
min: number;
|
|
44
|
+
max: number;
|
|
45
|
+
} | {
|
|
46
|
+
ok: false;
|
|
47
|
+
code: 'invalid_string_format';
|
|
48
|
+
expected: StringFormat;
|
|
49
|
+
} | {
|
|
50
|
+
ok: false;
|
|
51
|
+
code: 'invalid_string_graphemes';
|
|
52
|
+
minGraphemes: number;
|
|
53
|
+
maxGraphemes: number;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
code: 'invalid_string_length';
|
|
57
|
+
minLength: number;
|
|
58
|
+
maxLength: number;
|
|
59
|
+
} | {
|
|
60
|
+
ok: false;
|
|
61
|
+
code: 'invalid_array_length';
|
|
62
|
+
minLength: number;
|
|
63
|
+
maxLength: number;
|
|
64
|
+
} | {
|
|
65
|
+
ok: false;
|
|
66
|
+
code: 'invalid_bytes_size';
|
|
67
|
+
minSize: number;
|
|
68
|
+
maxSize: number;
|
|
69
|
+
};
|
|
70
|
+
export type IssueTree = IssueLeaf | {
|
|
71
|
+
ok: false;
|
|
72
|
+
code: 'prepend';
|
|
73
|
+
key: Key;
|
|
74
|
+
tree: IssueTree;
|
|
75
|
+
} | {
|
|
76
|
+
ok: false;
|
|
77
|
+
code: 'join';
|
|
78
|
+
left: IssueTree;
|
|
79
|
+
right: IssueTree;
|
|
80
|
+
};
|
|
81
|
+
export type Issue = {
|
|
82
|
+
code: 'missing_value';
|
|
83
|
+
path: Key[];
|
|
84
|
+
} | {
|
|
85
|
+
code: 'invalid_literal';
|
|
86
|
+
path: Key[];
|
|
87
|
+
expected: readonly Literal[];
|
|
88
|
+
} | {
|
|
89
|
+
code: 'invalid_type';
|
|
90
|
+
path: Key[];
|
|
91
|
+
expected: InputType;
|
|
92
|
+
} | {
|
|
93
|
+
code: 'invalid_variant';
|
|
94
|
+
path: Key[];
|
|
95
|
+
expected: string[];
|
|
96
|
+
} | {
|
|
97
|
+
code: 'invalid_integer_range';
|
|
98
|
+
path: Key[];
|
|
99
|
+
min: number;
|
|
100
|
+
max: number;
|
|
101
|
+
} | {
|
|
102
|
+
code: 'invalid_string_format';
|
|
103
|
+
path: Key[];
|
|
104
|
+
expected: StringFormat;
|
|
105
|
+
} | {
|
|
106
|
+
code: 'invalid_string_graphemes';
|
|
107
|
+
path: Key[];
|
|
108
|
+
minGraphemes: number;
|
|
109
|
+
maxGraphemes: number;
|
|
110
|
+
} | {
|
|
111
|
+
code: 'invalid_string_length';
|
|
112
|
+
path: Key[];
|
|
113
|
+
minLength: number;
|
|
114
|
+
maxLength: number;
|
|
115
|
+
} | {
|
|
116
|
+
code: 'invalid_array_length';
|
|
117
|
+
path: Key[];
|
|
118
|
+
minLength: number;
|
|
119
|
+
maxLength: number;
|
|
120
|
+
} | {
|
|
121
|
+
code: 'invalid_bytes_size';
|
|
122
|
+
path: Key[];
|
|
123
|
+
minSize: number;
|
|
124
|
+
maxSize: number;
|
|
125
|
+
};
|
|
126
|
+
export type Ok<T> = {
|
|
127
|
+
ok: true;
|
|
128
|
+
value: T;
|
|
129
|
+
};
|
|
130
|
+
export type Err = {
|
|
131
|
+
ok: false;
|
|
132
|
+
readonly message: string;
|
|
133
|
+
readonly issues: readonly Issue[];
|
|
134
|
+
throw(): never;
|
|
135
|
+
};
|
|
136
|
+
export type ValidationResult<T> = Ok<T> | Err;
|
|
137
|
+
declare const kType: unique symbol;
|
|
138
|
+
type kType = typeof kType;
|
|
139
|
+
declare const kObjectType: unique symbol;
|
|
140
|
+
type kObjectType = typeof kObjectType;
|
|
141
|
+
export declare const FLAG_EMPTY = 0;
|
|
142
|
+
export declare const FLAG_ABORT_EARLY: number;
|
|
143
|
+
type MatcherResult = undefined | Ok<unknown> | IssueTree;
|
|
144
|
+
type Matcher = (this: void, input: unknown, flags: number) => MatcherResult;
|
|
145
|
+
export interface BaseSchema<TInput = unknown, TOutput = TInput> {
|
|
146
|
+
readonly kind: 'schema';
|
|
147
|
+
readonly type: string;
|
|
148
|
+
readonly '~run': Matcher;
|
|
149
|
+
readonly [kType]?: {
|
|
150
|
+
in: TInput;
|
|
151
|
+
out: TOutput;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export type InferInput<T extends BaseSchema> = T extends {
|
|
155
|
+
[kObjectType]?: any;
|
|
156
|
+
} ? NonNullable<T[kObjectType]>['in'] : NonNullable<T[kType]>['in'];
|
|
157
|
+
export type InferOutput<T extends BaseSchema> = T extends {
|
|
158
|
+
[kObjectType]?: any;
|
|
159
|
+
} ? NonNullable<T[kObjectType]>['out'] : NonNullable<T[kType]>['out'];
|
|
160
|
+
export declare class ValidationError extends Error {
|
|
161
|
+
#private;
|
|
162
|
+
readonly name = "ValidationError";
|
|
163
|
+
constructor(issueTree: IssueTree);
|
|
164
|
+
get message(): string;
|
|
165
|
+
get issues(): readonly Issue[];
|
|
166
|
+
}
|
|
167
|
+
export declare const is: <const TSchema extends BaseSchema>(schema: TSchema, input: unknown) => input is InferInput<TSchema>;
|
|
168
|
+
export declare const safeParse: <const TSchema extends BaseSchema>(schema: TSchema, input: unknown) => ValidationResult<InferOutput<TSchema>>;
|
|
169
|
+
export declare const parse: <const TSchema extends BaseSchema>(schema: TSchema, input: unknown) => InferOutput<TSchema>;
|
|
170
|
+
export interface BaseConstraint<TType = unknown> {
|
|
171
|
+
readonly kind: 'constraint';
|
|
172
|
+
readonly type: string;
|
|
173
|
+
readonly '~run': (input: TType, flags: number) => MatcherResult;
|
|
174
|
+
}
|
|
175
|
+
type ConstraintTuple<T> = readonly [BaseConstraint<T>, ...BaseConstraint<T>[]];
|
|
176
|
+
export type SchemaWithConstraint<TItem extends BaseSchema, TConstraints extends ConstraintTuple<InferOutput<TItem>>> = TItem & {
|
|
177
|
+
readonly constraints: TConstraints;
|
|
178
|
+
};
|
|
179
|
+
export declare const constrain: <TItem extends BaseSchema, const TConstraints extends ConstraintTuple<InferOutput<TItem>>>(base: TItem, constraints: TConstraints) => SchemaWithConstraint<TItem, TConstraints>;
|
|
180
|
+
export interface BaseMetadata {
|
|
181
|
+
readonly kind: 'metadata';
|
|
182
|
+
readonly type: string;
|
|
183
|
+
}
|
|
184
|
+
export interface LiteralSchema<T extends Literal = Literal> extends BaseSchema<T> {
|
|
185
|
+
readonly type: 'literal';
|
|
186
|
+
readonly expected: T;
|
|
187
|
+
}
|
|
188
|
+
export declare const literal: <T extends Literal>(value: T) => LiteralSchema<T>;
|
|
189
|
+
export interface LiteralEnumSchema<TEnums extends readonly Literal[] = []> extends BaseSchema<TEnums[number]> {
|
|
190
|
+
readonly type: 'literal_enum';
|
|
191
|
+
readonly expected: TEnums;
|
|
192
|
+
}
|
|
193
|
+
export declare const literalEnum: <const TEnums extends readonly Literal[]>(values: TEnums) => LiteralEnumSchema<TEnums>;
|
|
194
|
+
export interface BooleanSchema extends BaseSchema<boolean> {
|
|
195
|
+
readonly type: 'boolean';
|
|
196
|
+
}
|
|
197
|
+
export declare const boolean: () => BooleanSchema;
|
|
198
|
+
export interface IntegerSchema extends BaseSchema<number> {
|
|
199
|
+
readonly type: 'integer';
|
|
200
|
+
}
|
|
201
|
+
export declare const integer: () => IntegerSchema;
|
|
202
|
+
export interface IntegerRangeConstraint<TMin extends number = number, TMax extends number = number> extends BaseConstraint<number> {
|
|
203
|
+
readonly type: 'integer_range';
|
|
204
|
+
readonly min: TMin;
|
|
205
|
+
readonly max: TMax;
|
|
206
|
+
}
|
|
207
|
+
export declare const integerRange: {
|
|
208
|
+
<const TMin extends number>(min: TMin): IntegerRangeConstraint<TMin>;
|
|
209
|
+
<const TMin extends number, const TMax extends number>(min: TMin, max: TMax): IntegerRangeConstraint<TMin, TMax>;
|
|
210
|
+
};
|
|
211
|
+
export interface StringSchema<T extends string = string> extends BaseSchema<T> {
|
|
212
|
+
readonly type: 'string';
|
|
213
|
+
readonly format: null;
|
|
214
|
+
}
|
|
215
|
+
export interface FormattedStringSchema<TFormat extends keyof StringFormatMap = keyof StringFormatMap> extends BaseSchema<StringFormatMap[TFormat]> {
|
|
216
|
+
readonly type: 'string';
|
|
217
|
+
readonly format: TFormat;
|
|
218
|
+
}
|
|
219
|
+
export declare const string: <T extends string = string>() => StringSchema<T>;
|
|
220
|
+
export declare const actorIdentifierString: () => FormattedStringSchema<"at-identifier">;
|
|
221
|
+
export declare const resourceUriString: () => FormattedStringSchema<"at-uri">;
|
|
222
|
+
export declare const cidString: () => FormattedStringSchema<"cid">;
|
|
223
|
+
export declare const datetimeString: () => FormattedStringSchema<"datetime">;
|
|
224
|
+
export declare const didString: () => FormattedStringSchema<"did">;
|
|
225
|
+
export declare const handleString: () => FormattedStringSchema<"handle">;
|
|
226
|
+
export declare const languageCodeString: () => FormattedStringSchema<"language">;
|
|
227
|
+
export declare const nsidString: () => FormattedStringSchema<"nsid">;
|
|
228
|
+
export declare const recordKeyString: () => FormattedStringSchema<"record-key">;
|
|
229
|
+
export declare const tidString: () => FormattedStringSchema<"tid">;
|
|
230
|
+
export declare const genericUriString: () => FormattedStringSchema<"uri">;
|
|
231
|
+
export interface StringLengthConstraint<TMinLength extends number = number, TMaxLength extends number = number> extends BaseConstraint<string> {
|
|
232
|
+
readonly type: 'string_length';
|
|
233
|
+
readonly minLength: TMinLength;
|
|
234
|
+
readonly maxLength: TMaxLength;
|
|
235
|
+
}
|
|
236
|
+
export declare const stringLength: {
|
|
237
|
+
<const TMinLength extends number>(min: TMinLength): StringLengthConstraint<TMinLength>;
|
|
238
|
+
<const TMinLength extends number, const TMaxLength extends number>(min: TMinLength, max: TMaxLength): StringLengthConstraint<TMinLength, TMaxLength>;
|
|
239
|
+
};
|
|
240
|
+
export interface StringGraphemesConstraint<TMinGraphemes extends number = number, TMaxGraphemes extends number = number> extends BaseConstraint<string> {
|
|
241
|
+
readonly type: 'string_graphemes';
|
|
242
|
+
readonly minGraphemes: TMinGraphemes;
|
|
243
|
+
readonly maxGraphemes: TMaxGraphemes;
|
|
244
|
+
}
|
|
245
|
+
export declare const stringGraphemes: {
|
|
246
|
+
<const TMinGraphemes extends number>(min: TMinGraphemes): StringGraphemesConstraint<TMinGraphemes>;
|
|
247
|
+
<const TMinGraphemes extends number, const TMaxGraphemes extends number>(min: TMinGraphemes, max: TMaxGraphemes): StringGraphemesConstraint<TMinGraphemes, TMaxGraphemes>;
|
|
248
|
+
};
|
|
249
|
+
export interface BlobSchema extends BaseSchema<interfaces.Blob | interfaces.LegacyBlob, interfaces.Blob> {
|
|
250
|
+
readonly type: 'blob';
|
|
251
|
+
}
|
|
252
|
+
export declare const blob: () => BlobSchema;
|
|
253
|
+
export interface BytesSchema extends BaseSchema<interfaces.Bytes, interfaces.Bytes> {
|
|
254
|
+
readonly type: 'bytes';
|
|
255
|
+
}
|
|
256
|
+
export declare const bytes: () => BytesSchema;
|
|
257
|
+
export interface BytesSizeConstraint<TMinLength extends number = number, TMaxLength extends number = number> extends BaseConstraint<interfaces.Bytes> {
|
|
258
|
+
readonly type: 'bytes_size';
|
|
259
|
+
readonly minSize: TMinLength;
|
|
260
|
+
readonly maxSize: TMaxLength;
|
|
261
|
+
}
|
|
262
|
+
export declare const bytesSize: {
|
|
263
|
+
<const TMinLength extends number>(min: TMinLength): BytesSizeConstraint<TMinLength>;
|
|
264
|
+
<const TMinLength extends number, const TMaxLength extends number>(min: TMinLength, max: TMaxLength): BytesSizeConstraint<TMinLength, TMaxLength>;
|
|
265
|
+
};
|
|
266
|
+
export interface CidLinkSchema extends BaseSchema<interfaces.CidLink, interfaces.CidLink> {
|
|
267
|
+
readonly type: 'cid_link';
|
|
268
|
+
}
|
|
269
|
+
export declare const cidLink: () => CidLinkSchema;
|
|
270
|
+
export interface NullableSchema<TItem extends BaseSchema> extends BaseSchema<InferInput<TItem> | null, InferOutput<TItem> | null> {
|
|
271
|
+
readonly type: 'nullable';
|
|
272
|
+
readonly wrapped: TItem;
|
|
273
|
+
}
|
|
274
|
+
export declare const nullable: <TItem extends BaseSchema>(wrapped: TItem) => NullableSchema<TItem>;
|
|
275
|
+
export type DefaultValue<TItem extends BaseSchema> = InferOutput<TItem> | (() => InferOutput<TItem>) | undefined;
|
|
276
|
+
export type InferOptionalOutput<TItem extends BaseSchema, TDefault extends DefaultValue<TItem>> = undefined extends TDefault ? InferOutput<TItem> | undefined : InferOutput<TItem>;
|
|
277
|
+
export interface OptionalSchema<TItem extends BaseSchema, TDefault extends DefaultValue<TItem>> extends BaseSchema<InferInput<TItem> | undefined, InferOptionalOutput<TItem, TDefault>> {
|
|
278
|
+
readonly type: 'optional';
|
|
279
|
+
readonly wrapped: TItem;
|
|
280
|
+
readonly default: TDefault;
|
|
281
|
+
}
|
|
282
|
+
export declare const optional: {
|
|
283
|
+
<TItem extends BaseSchema>(wrapped: TItem): OptionalSchema<TItem, undefined>;
|
|
284
|
+
<TItem extends BaseSchema, TDefault extends DefaultValue<TItem>>(wrapped: TItem, defaultValue: TDefault): OptionalSchema<TItem, TDefault>;
|
|
285
|
+
};
|
|
286
|
+
export interface ArraySchema<TItem extends BaseSchema> extends BaseSchema<unknown[], unknown[]> {
|
|
287
|
+
readonly type: 'array';
|
|
288
|
+
readonly item: TItem;
|
|
289
|
+
readonly [kObjectType]?: {
|
|
290
|
+
in: InferInput<TItem>[];
|
|
291
|
+
out: InferOutput<TItem>[];
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
export declare const array: <TItem extends BaseSchema>(item: TItem | (() => TItem)) => ArraySchema<TItem>;
|
|
295
|
+
export interface ArrayLengthConstraint<TMinLength extends number = number, TMaxLength extends number = number> extends BaseConstraint<unknown[]> {
|
|
296
|
+
readonly type: 'array_length';
|
|
297
|
+
readonly minLength: TMinLength;
|
|
298
|
+
readonly maxLength: TMaxLength;
|
|
299
|
+
}
|
|
300
|
+
export declare const arrayLength: {
|
|
301
|
+
<const TMinLength extends number>(min: TMinLength): ArrayLengthConstraint<TMinLength>;
|
|
302
|
+
<const TMinLength extends number, const TMaxLength extends number>(min: TMinLength, max: TMaxLength): ArrayLengthConstraint<TMinLength, TMaxLength>;
|
|
303
|
+
};
|
|
304
|
+
export type LooseObjectShape = Record<string, any>;
|
|
305
|
+
export type ObjectShape = Record<string, BaseSchema>;
|
|
306
|
+
export type OptionalObjectInputKeys<TShape extends ObjectShape> = {
|
|
307
|
+
[Key in keyof TShape]: TShape[Key] extends OptionalSchema<any, any> ? Key : never;
|
|
308
|
+
}[keyof TShape];
|
|
309
|
+
export type OptionalObjectOutputKeys<TShape extends ObjectShape> = {
|
|
310
|
+
[Key in keyof TShape]: TShape[Key] extends OptionalSchema<any, infer Default> ? undefined extends Default ? Key : never : never;
|
|
311
|
+
}[keyof TShape];
|
|
312
|
+
type InferObjectInput<TShape extends ObjectShape> = Flatten<{
|
|
313
|
+
-readonly [Key in Exclude<keyof TShape, OptionalObjectInputKeys<TShape>>]: InferInput<TShape[Key]>;
|
|
314
|
+
} & {
|
|
315
|
+
-readonly [Key in OptionalObjectInputKeys<TShape>]?: InferInput<TShape[Key]>;
|
|
316
|
+
}>;
|
|
317
|
+
type InferObjectOutput<TShape extends ObjectShape> = Flatten<{
|
|
318
|
+
-readonly [Key in Exclude<keyof TShape, OptionalObjectOutputKeys<TShape>>]: InferOutput<TShape[Key]>;
|
|
319
|
+
} & {
|
|
320
|
+
-readonly [Key in OptionalObjectOutputKeys<TShape>]?: InferOutput<TShape[Key]>;
|
|
321
|
+
}>;
|
|
322
|
+
export interface ObjectSchema<TShape extends LooseObjectShape = LooseObjectShape> extends BaseSchema<Record<string, unknown>> {
|
|
323
|
+
readonly type: 'object';
|
|
324
|
+
readonly shape: Readonly<TShape>;
|
|
325
|
+
readonly [kObjectType]?: {
|
|
326
|
+
in: InferObjectInput<TShape>;
|
|
327
|
+
out: InferObjectOutput<TShape>;
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
export declare const object: <TShape extends LooseObjectShape>(shape: TShape) => ObjectSchema<TShape>;
|
|
331
|
+
export type RecordObjectShape = {
|
|
332
|
+
$type: LiteralSchema<syntax.Nsid>;
|
|
333
|
+
[key: string]: BaseSchema;
|
|
334
|
+
};
|
|
335
|
+
export type RecordKeySchema = StringSchema | FormattedStringSchema | LiteralSchema<string>;
|
|
336
|
+
export type RecordObjectSchema = ObjectSchema<RecordObjectShape>;
|
|
337
|
+
export interface RecordSchema<TObject extends ObjectSchema, TKey extends RecordKeySchema> extends BaseSchema<Record<string, unknown>> {
|
|
338
|
+
readonly type: 'record';
|
|
339
|
+
readonly key: TKey;
|
|
340
|
+
readonly object: TObject;
|
|
341
|
+
readonly [kObjectType]?: {
|
|
342
|
+
in: InferInput<TObject>;
|
|
343
|
+
out: InferOutput<TObject>;
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
export declare const record: <TKey extends RecordKeySchema, TObject extends ObjectSchema>(key: TKey, object: TObject) => RecordSchema<TObject, TKey>;
|
|
347
|
+
type VariantTuple = readonly ObjectSchema<any>[];
|
|
348
|
+
type InferVariantInput<TMembers extends VariantTuple> = $type.enforce<InferInput<TMembers[number]>>;
|
|
349
|
+
type InferVariantOutput<TMembers extends VariantTuple> = $type.enforce<InferOutput<TMembers[number]>>;
|
|
350
|
+
export interface VariantSchema<TMembers extends VariantTuple = VariantTuple, TClosed extends boolean = boolean> extends BaseSchema<Record<string, unknown>> {
|
|
351
|
+
readonly type: 'variant';
|
|
352
|
+
readonly members: TMembers;
|
|
353
|
+
readonly closed: TClosed;
|
|
354
|
+
readonly [kObjectType]?: {
|
|
355
|
+
in: InferVariantInput<TMembers>;
|
|
356
|
+
out: InferVariantOutput<TMembers>;
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
export declare const variant: {
|
|
360
|
+
<const TMembers extends VariantTuple>(members: TMembers): VariantSchema<TMembers>;
|
|
361
|
+
<const TMembers extends VariantTuple, TClosed extends boolean>(members: TMembers, closed: TClosed): VariantSchema<TMembers, TClosed>;
|
|
362
|
+
};
|
|
363
|
+
export interface UnknownSchema extends BaseSchema<Record<string, unknown>> {
|
|
364
|
+
readonly type: 'unknown';
|
|
365
|
+
}
|
|
366
|
+
export declare const unknown: () => UnknownSchema;
|
|
367
|
+
export interface XRPCLexBodyParam<TSchema extends ObjectSchema | VariantSchema = ObjectSchema | VariantSchema> {
|
|
368
|
+
readonly type: 'lex';
|
|
369
|
+
readonly schema: TSchema;
|
|
370
|
+
}
|
|
371
|
+
export interface XRPCBlobBodyParam {
|
|
372
|
+
readonly type: 'blob';
|
|
373
|
+
}
|
|
374
|
+
export type XRPCBodyParam = XRPCLexBodyParam | XRPCBlobBodyParam | null;
|
|
375
|
+
export type InferXRPCBodyInput<T extends XRPCBodyParam> = T extends XRPCLexBodyParam<infer Schema> ? InferInput<Schema> : T extends XRPCBlobBodyParam ? Blob : T extends null ? void : never;
|
|
376
|
+
export type InferXRPCBodyOutput<T extends XRPCBodyParam> = T extends XRPCLexBodyParam<infer Schema> ? InferOutput<Schema> : T extends XRPCBlobBodyParam ? Blob : T extends null ? void : never;
|
|
377
|
+
export interface XRPCProcedureMetadata<TParams extends ObjectSchema | null, TInput extends XRPCBodyParam, TOutput extends XRPCBodyParam, TNsid extends syntax.Nsid> extends BaseMetadata {
|
|
378
|
+
readonly type: 'xrpc_procedure';
|
|
379
|
+
readonly nsid: TNsid;
|
|
380
|
+
readonly params: TParams;
|
|
381
|
+
readonly input: TInput;
|
|
382
|
+
readonly output: TOutput;
|
|
383
|
+
}
|
|
384
|
+
export declare const procedure: <TNsid extends syntax.Nsid, TParams extends ObjectSchema | null, TInput extends XRPCBodyParam, TOutput extends XRPCBodyParam>(nsid: TNsid, options: {
|
|
385
|
+
params: TParams;
|
|
386
|
+
input: TInput;
|
|
387
|
+
output: TOutput;
|
|
388
|
+
}) => XRPCProcedureMetadata<TParams, TInput, TOutput, TNsid>;
|
|
389
|
+
export interface XRPCQueryMetadata<TParams extends ObjectSchema | null, TOutput extends XRPCBodyParam, TNsid extends syntax.Nsid> extends BaseMetadata {
|
|
390
|
+
readonly type: 'xrpc_query';
|
|
391
|
+
readonly nsid: TNsid;
|
|
392
|
+
readonly params: TParams;
|
|
393
|
+
readonly output: TOutput;
|
|
394
|
+
}
|
|
395
|
+
export declare const query: <TNsid extends syntax.Nsid, TParams extends ObjectSchema | null, TOutput extends XRPCBodyParam>(nsid: TNsid, options: {
|
|
396
|
+
params: TParams;
|
|
397
|
+
output: TOutput;
|
|
398
|
+
}) => XRPCQueryMetadata<TParams, TOutput, TNsid>;
|
|
399
|
+
export interface XRPCSubscriptionMetadata<TParams extends ObjectSchema | null, TMessage extends ObjectSchema<any> | VariantSchema<any, any> | null, TNsid extends syntax.Nsid> extends BaseMetadata {
|
|
400
|
+
readonly type: 'xrpc_subscription';
|
|
401
|
+
readonly nsid: TNsid;
|
|
402
|
+
readonly params: TParams;
|
|
403
|
+
readonly message: TMessage;
|
|
404
|
+
}
|
|
405
|
+
export declare const subscription: <TNsid extends syntax.Nsid, TParams extends ObjectSchema | null, TMessage extends ObjectSchema<any> | VariantSchema<any, any> | null>(nsid: TNsid, options: {
|
|
406
|
+
params: TParams;
|
|
407
|
+
readonly message: TMessage;
|
|
408
|
+
}) => XRPCSubscriptionMetadata<TParams, TMessage, TNsid>;
|
|
409
|
+
export {};
|