@mirascript/typed 0.1.78 → 0.1.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/json/impl.d.ts +8 -0
- package/dist/json/impl.d.ts.map +1 -0
- package/dist/json/impl.js +51 -0
- package/dist/json/impl.js.map +1 -0
- package/dist/{json.d.ts → json/index.d.ts} +2 -2
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +17 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/literal.d.ts +9 -0
- package/dist/json/literal.d.ts.map +1 -0
- package/dist/json/literal.js +16 -0
- package/dist/json/literal.js.map +1 -0
- package/dist/json/record.d.ts +6 -0
- package/dist/json/record.d.ts.map +1 -0
- package/dist/json/record.js +66 -0
- package/dist/json/record.js.map +1 -0
- package/dist/json/string.d.ts +5 -0
- package/dist/json/string.d.ts.map +1 -0
- package/dist/json/string.js +28 -0
- package/dist/json/string.js.map +1 -0
- package/dist/json/template.d.ts +8 -0
- package/dist/json/template.d.ts.map +1 -0
- package/dist/json/template.js +72 -0
- package/dist/json/template.js.map +1 -0
- package/dist/json/tuple.d.ts +8 -0
- package/dist/json/tuple.d.ts.map +1 -0
- package/dist/json/tuple.js +52 -0
- package/dist/json/tuple.js.map +1 -0
- package/dist/json/union-intersection.d.ts +8 -0
- package/dist/json/union-intersection.d.ts.map +1 -0
- package/dist/json/union-intersection.js +40 -0
- package/dist/json/union-intersection.js.map +1 -0
- package/dist/simplifier/dedup.d.ts +4 -0
- package/dist/simplifier/dedup.d.ts.map +1 -0
- package/dist/simplifier/dedup.js +61 -0
- package/dist/simplifier/dedup.js.map +1 -0
- package/dist/simplifier/impl.d.ts +7 -0
- package/dist/simplifier/impl.d.ts.map +1 -0
- package/dist/simplifier/impl.js +51 -0
- package/dist/simplifier/impl.js.map +1 -0
- package/dist/{simplifier.d.ts → simplifier/index.d.ts} +3 -5
- package/dist/simplifier/index.d.ts.map +1 -0
- package/dist/simplifier/index.js +22 -0
- package/dist/simplifier/index.js.map +1 -0
- package/dist/simplifier/intersection.d.ts +5 -0
- package/dist/simplifier/intersection.d.ts.map +1 -0
- package/dist/simplifier/intersection.js +126 -0
- package/dist/simplifier/intersection.js.map +1 -0
- package/dist/simplifier/record.d.ts +5 -0
- package/dist/simplifier/record.d.ts.map +1 -0
- package/dist/simplifier/record.js +24 -0
- package/dist/simplifier/record.js.map +1 -0
- package/dist/simplifier/top-type.d.ts +5 -0
- package/dist/simplifier/top-type.d.ts.map +1 -0
- package/dist/simplifier/top-type.js +9 -0
- package/dist/simplifier/top-type.js.map +1 -0
- package/dist/simplifier/tuple.d.ts +5 -0
- package/dist/simplifier/tuple.d.ts.map +1 -0
- package/dist/simplifier/tuple.js +17 -0
- package/dist/simplifier/tuple.js.map +1 -0
- package/dist/simplifier/union.d.ts +5 -0
- package/dist/simplifier/union.d.ts.map +1 -0
- package/dist/simplifier/union.js +47 -0
- package/dist/simplifier/union.js.map +1 -0
- package/dist/simplifier/utils.d.ts +12 -0
- package/dist/simplifier/utils.d.ts.map +1 -0
- package/dist/simplifier/utils.js +17 -0
- package/dist/simplifier/utils.js.map +1 -0
- package/package.json +5 -5
- package/src/index.ts +2 -2
- package/src/json/impl.ts +57 -0
- package/src/json/index.ts +28 -0
- package/src/json/literal.ts +20 -0
- package/src/json/record.ts +70 -0
- package/src/json/string.ts +30 -0
- package/src/json/template.ts +71 -0
- package/src/json/tuple.ts +52 -0
- package/src/json/union-intersection.ts +43 -0
- package/src/simplifier/dedup.ts +61 -0
- package/src/simplifier/impl.ts +64 -0
- package/src/simplifier/index.ts +67 -0
- package/src/simplifier/intersection.ts +129 -0
- package/src/simplifier/record.ts +24 -0
- package/src/simplifier/top-type.ts +9 -0
- package/src/simplifier/tuple.ts +20 -0
- package/src/simplifier/union.ts +45 -0
- package/src/simplifier/utils.ts +21 -0
- package/dist/json.d.ts.map +0 -1
- package/dist/json.js +0 -314
- package/dist/json.js.map +0 -1
- package/dist/simplifier.d.ts.map +0 -1
- package/dist/simplifier.js +0 -332
- package/dist/simplifier.js.map +0 -1
- package/src/json.ts +0 -323
- package/src/simplifier.ts +0 -404
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Type, UnionType } from '../parser.js';
|
|
2
|
+
import { deduplicateTypeMembers } from './dedup.js';
|
|
3
|
+
import { simplifyImpl, type SimplifyImplOptions } from './impl.js';
|
|
4
|
+
import { resolveTopTypes } from './top-type.js';
|
|
5
|
+
import { isTypeObject } from './utils.js';
|
|
6
|
+
|
|
7
|
+
/** Flattens nested union nodes when the corresponding option is enabled. */
|
|
8
|
+
function flattenUnionTypes(type: UnionType, options: SimplifyImplOptions): Type[] {
|
|
9
|
+
const types = type.types.map((item) => simplifyImpl(item, options));
|
|
10
|
+
if (!options.flattenUnions) return types;
|
|
11
|
+
const result: Type[] = [];
|
|
12
|
+
for (const type of types) {
|
|
13
|
+
if (isTypeObject(type) && type.kind === 'union') {
|
|
14
|
+
result.push(...flattenUnionTypes(type, options));
|
|
15
|
+
} else {
|
|
16
|
+
result.push(type);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Simplifies a union recursively. */
|
|
23
|
+
export function simplifyUnion(type: UnionType, options: SimplifyImplOptions): Type {
|
|
24
|
+
let simplifiedTypes = flattenUnionTypes(type, options);
|
|
25
|
+
|
|
26
|
+
// Top-type elimination: unknown | T → unknown, any | T → any, T | never → T
|
|
27
|
+
const topTypes = resolveTopTypes(options.simplifyTopTypesInUnions);
|
|
28
|
+
if (topTypes.length > 0) {
|
|
29
|
+
if (topTypes.includes('any') && simplifiedTypes.includes('any')) return 'any';
|
|
30
|
+
if (topTypes.includes('unknown') && simplifiedTypes.includes('unknown')) return 'unknown';
|
|
31
|
+
if (topTypes.includes('never')) {
|
|
32
|
+
simplifiedTypes = simplifiedTypes.filter((t) => t !== 'never');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (options.deduplicateUnions) {
|
|
37
|
+
simplifiedTypes = deduplicateTypeMembers(simplifiedTypes);
|
|
38
|
+
}
|
|
39
|
+
if (options.unwrapSingleUnion) {
|
|
40
|
+
if (simplifiedTypes.length === 1) return simplifiedTypes[0]!;
|
|
41
|
+
if (simplifiedTypes.length === 0) return 'never';
|
|
42
|
+
}
|
|
43
|
+
type.types = simplifiedTypes;
|
|
44
|
+
return type;
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Type, GenericType, RecordField, RecordType, UnionType, IntersectionType } from '../parser.js';
|
|
2
|
+
|
|
3
|
+
/** Checks whether a type is represented by an object node. */
|
|
4
|
+
export function isTypeObject(type: Type): type is Exclude<Type, GenericType | string> {
|
|
5
|
+
return typeof type === 'object';
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/** Checks whether a type is union. */
|
|
9
|
+
export function isUnionType(type: Type): type is UnionType {
|
|
10
|
+
return isTypeObject(type) && type.kind === 'union';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Checks whether a type is intersection. */
|
|
14
|
+
export function isIntersectionType(type: Type): type is IntersectionType {
|
|
15
|
+
return isTypeObject(type) && type.kind === 'intersection';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Checks whether a record type uses the explicit fields form. */
|
|
19
|
+
export function isFieldRecordType(type: Type): type is Extract<RecordType, { fields: RecordField[] }> {
|
|
20
|
+
return isTypeObject(type) && type.kind === 'record' && 'fields' in type;
|
|
21
|
+
}
|
package/dist/json.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,KAAK,EAAmD,IAAI,EAAE,MAAM,aAAa,CAAC;AAEzF,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA4HpD,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AA8KD,8CAA8C;AAC9C,wBAAgB,YAAY,CACxB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,mBAAmB,GAC9B,UAAU,CAAC,SAAS,GAAG;IAAE,OAAO,EAAE,OAAO,OAAO,CAAA;CAAE,CAWpD"}
|
package/dist/json.js
DELETED
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
import { $schema } from 'json-schema-typed';
|
|
2
|
-
import { REG_NUMBER } from '@mirascript/constants';
|
|
3
|
-
import { simplify } from './simplifier.js';
|
|
4
|
-
/** Converts a KnownType or NamedType into JSON Schema */
|
|
5
|
-
function string(type) {
|
|
6
|
-
switch (type) {
|
|
7
|
-
case 'string':
|
|
8
|
-
return { type: 'string' };
|
|
9
|
-
case 'number':
|
|
10
|
-
return { type: 'number' };
|
|
11
|
-
case 'boolean':
|
|
12
|
-
return { type: 'boolean' };
|
|
13
|
-
case 'nil':
|
|
14
|
-
return { type: 'null' };
|
|
15
|
-
case 'array':
|
|
16
|
-
return { type: 'array', items: true };
|
|
17
|
-
case 'record':
|
|
18
|
-
return { type: 'object' };
|
|
19
|
-
case 'extern':
|
|
20
|
-
return true;
|
|
21
|
-
case 'any':
|
|
22
|
-
return true;
|
|
23
|
-
case 'unknown':
|
|
24
|
-
return true;
|
|
25
|
-
case 'never':
|
|
26
|
-
return false;
|
|
27
|
-
default:
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/** Escapes a literal string for use in a regular expression */
|
|
32
|
-
function escapeRegex(value) {
|
|
33
|
-
return value.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
|
|
34
|
-
}
|
|
35
|
-
const RE_ANY = '.*?';
|
|
36
|
-
const RE_NUMBER = REG_NUMBER.source;
|
|
37
|
-
const RE_BOOLEAN = 'true|false';
|
|
38
|
-
/** Converts a template interpolation part into a regex pattern fragment */
|
|
39
|
-
function templatePartPattern(part, grouping) {
|
|
40
|
-
let result;
|
|
41
|
-
if (typeof part === 'symbol') {
|
|
42
|
-
result = RE_ANY;
|
|
43
|
-
}
|
|
44
|
-
else if (typeof part === 'string') {
|
|
45
|
-
switch (part) {
|
|
46
|
-
case 'number':
|
|
47
|
-
result = RE_NUMBER;
|
|
48
|
-
break;
|
|
49
|
-
case 'boolean':
|
|
50
|
-
result = RE_BOOLEAN;
|
|
51
|
-
break;
|
|
52
|
-
case 'nil':
|
|
53
|
-
case 'never':
|
|
54
|
-
result = '';
|
|
55
|
-
break;
|
|
56
|
-
case 'array':
|
|
57
|
-
case 'record':
|
|
58
|
-
case 'extern':
|
|
59
|
-
case 'any':
|
|
60
|
-
case 'unknown':
|
|
61
|
-
case 'string':
|
|
62
|
-
default:
|
|
63
|
-
result = RE_ANY;
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else if (part.kind === 'literal') {
|
|
68
|
-
if (typeof part.value === 'boolean') {
|
|
69
|
-
result = String(part.value);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
result = escapeRegex(part.value);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else if (part.kind === 'union') {
|
|
76
|
-
const patterns = new Set(part.types.map((p) => templatePartPattern(p, false)));
|
|
77
|
-
if (patterns.has(RE_ANY)) {
|
|
78
|
-
result = RE_ANY;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
const hasEmpty = patterns.delete('');
|
|
82
|
-
result = Array.from(patterns).join('|');
|
|
83
|
-
if (hasEmpty) {
|
|
84
|
-
result = `(${result})?`;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else if (part.kind === 'intersection') {
|
|
89
|
-
// Regex intersection is not representable in general; keep behavior conservative.
|
|
90
|
-
result = RE_ANY;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
result = RE_ANY;
|
|
94
|
-
}
|
|
95
|
-
if (!grouping)
|
|
96
|
-
return result;
|
|
97
|
-
if (result.startsWith('('))
|
|
98
|
-
return result;
|
|
99
|
-
return `(${result})`;
|
|
100
|
-
}
|
|
101
|
-
/** Converts a TemplateType into a JSON Schema pattern */
|
|
102
|
-
function templatePattern(type) {
|
|
103
|
-
return `^${type.parts
|
|
104
|
-
.map((p) => {
|
|
105
|
-
if (typeof p == 'object' && p.kind === 'literal' && typeof p.value === 'string') {
|
|
106
|
-
return templatePartPattern(p, false);
|
|
107
|
-
}
|
|
108
|
-
return templatePartPattern(p, true);
|
|
109
|
-
})
|
|
110
|
-
.join('')}$`;
|
|
111
|
-
}
|
|
112
|
-
/** Converts a LiteralType into JSON Schema */
|
|
113
|
-
function literal(type) {
|
|
114
|
-
return { const: type.value };
|
|
115
|
-
}
|
|
116
|
-
/** Converts a union of LiteralTypes into a single JSON Schema enum */
|
|
117
|
-
function literalEnum(types) {
|
|
118
|
-
const schema = {
|
|
119
|
-
enum: types.map((t) => t.value),
|
|
120
|
-
};
|
|
121
|
-
return schema;
|
|
122
|
-
}
|
|
123
|
-
/** Type guard for LiteralType */
|
|
124
|
-
function isLiteralType(type) {
|
|
125
|
-
return typeof type == 'object' && type.kind === 'literal';
|
|
126
|
-
}
|
|
127
|
-
/** Converts a Type object into JSON Schema */
|
|
128
|
-
function toJSONSchemaImpl(type, options) {
|
|
129
|
-
const { loose } = options;
|
|
130
|
-
const simplified = simplify(type);
|
|
131
|
-
if (typeof simplified == 'symbol') {
|
|
132
|
-
return {};
|
|
133
|
-
}
|
|
134
|
-
if (typeof simplified == 'string') {
|
|
135
|
-
return string(simplified);
|
|
136
|
-
}
|
|
137
|
-
if (simplified.kind === 'array') {
|
|
138
|
-
return {
|
|
139
|
-
type: 'array',
|
|
140
|
-
items: toJSONSchemaImpl(simplified.element, options),
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
if (simplified.kind === 'union') {
|
|
144
|
-
const anyOf = [];
|
|
145
|
-
const literals = [];
|
|
146
|
-
for (const t of simplified.types) {
|
|
147
|
-
if (isLiteralType(t)) {
|
|
148
|
-
literals.push(t);
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
const child = toJSONSchemaImpl(t, options);
|
|
152
|
-
if (child === true) {
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
if (child === false) {
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
anyOf.push(child);
|
|
159
|
-
}
|
|
160
|
-
if (literals.length > 0) {
|
|
161
|
-
anyOf.push(literalEnum(literals));
|
|
162
|
-
}
|
|
163
|
-
if (anyOf.length === 0) {
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
if (anyOf.length === 1) {
|
|
167
|
-
return anyOf[0];
|
|
168
|
-
}
|
|
169
|
-
return { anyOf };
|
|
170
|
-
}
|
|
171
|
-
if (simplified.kind === 'intersection') {
|
|
172
|
-
const allOf = simplified.types.map((t) => toJSONSchemaImpl(t, options));
|
|
173
|
-
if (allOf.length === 1) {
|
|
174
|
-
return allOf[0];
|
|
175
|
-
}
|
|
176
|
-
return { allOf };
|
|
177
|
-
}
|
|
178
|
-
if (simplified.kind === 'record') {
|
|
179
|
-
if ('fields' in simplified) {
|
|
180
|
-
const properties = {};
|
|
181
|
-
const required = [];
|
|
182
|
-
for (const field of simplified.fields) {
|
|
183
|
-
properties[field.name] = toJSONSchemaImpl(field.type, options);
|
|
184
|
-
if (!loose && !field.optional) {
|
|
185
|
-
required.push(field.name);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
const schema = {
|
|
189
|
-
type: 'object',
|
|
190
|
-
properties,
|
|
191
|
-
additionalProperties: loose,
|
|
192
|
-
};
|
|
193
|
-
if (required.length > 0) {
|
|
194
|
-
schema.required = required;
|
|
195
|
-
}
|
|
196
|
-
return schema;
|
|
197
|
-
}
|
|
198
|
-
const valueSchema = toJSONSchemaImpl(simplified.value, options);
|
|
199
|
-
if (simplified.key == null) {
|
|
200
|
-
return {
|
|
201
|
-
type: 'object',
|
|
202
|
-
additionalProperties: valueSchema,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
if (typeof simplified.key == 'object') {
|
|
206
|
-
if (isLiteralType(simplified.key)) {
|
|
207
|
-
const schema = {
|
|
208
|
-
type: 'object',
|
|
209
|
-
properties: { [String(simplified.key.value)]: valueSchema },
|
|
210
|
-
additionalProperties: loose,
|
|
211
|
-
};
|
|
212
|
-
return schema;
|
|
213
|
-
}
|
|
214
|
-
else if (simplified.key.kind === 'union' && simplified.key.types.every(isLiteralType)) {
|
|
215
|
-
const schema = {
|
|
216
|
-
type: 'object',
|
|
217
|
-
properties: Object.fromEntries(simplified.key.types.map((t) => [String(t.value), valueSchema])),
|
|
218
|
-
additionalProperties: loose,
|
|
219
|
-
};
|
|
220
|
-
return schema;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
const pattern = templatePartPattern(simplified.key, false);
|
|
224
|
-
if (pattern === RE_ANY) {
|
|
225
|
-
return {
|
|
226
|
-
type: 'object',
|
|
227
|
-
additionalProperties: valueSchema,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
const schema = {
|
|
231
|
-
type: 'object',
|
|
232
|
-
patternProperties: { [`^${pattern}$`]: valueSchema },
|
|
233
|
-
additionalProperties: loose,
|
|
234
|
-
};
|
|
235
|
-
return schema;
|
|
236
|
-
}
|
|
237
|
-
if (simplified.kind === 'literal') {
|
|
238
|
-
return literal(simplified);
|
|
239
|
-
}
|
|
240
|
-
if (simplified.kind === 'function') {
|
|
241
|
-
return false;
|
|
242
|
-
}
|
|
243
|
-
if (simplified.kind === 'template') {
|
|
244
|
-
return { type: 'string', pattern: templatePattern(simplified) };
|
|
245
|
-
}
|
|
246
|
-
if (simplified.kind === 'tuple') {
|
|
247
|
-
// Collect element schemas, unwrapping array from rest elements (..T[] → T).
|
|
248
|
-
// Non-array rest (e.g. ..string) is treated as any ({}).
|
|
249
|
-
const elementSchemas = simplified.elements.map((e) => {
|
|
250
|
-
const t = e.type;
|
|
251
|
-
if (!e.spread)
|
|
252
|
-
return toJSONSchemaImpl(t, options);
|
|
253
|
-
if (typeof t == 'object' && t.kind === 'array') {
|
|
254
|
-
return toJSONSchemaImpl(t.element, options);
|
|
255
|
-
}
|
|
256
|
-
return true;
|
|
257
|
-
});
|
|
258
|
-
const prefixItems = [];
|
|
259
|
-
let i = 0;
|
|
260
|
-
for (; i < elementSchemas.length; i++) {
|
|
261
|
-
const el = simplified.elements[i];
|
|
262
|
-
if (el.spread)
|
|
263
|
-
break;
|
|
264
|
-
prefixItems.push(elementSchemas[i]);
|
|
265
|
-
}
|
|
266
|
-
const items = [];
|
|
267
|
-
let hasAny = false;
|
|
268
|
-
for (; i < elementSchemas.length; i++) {
|
|
269
|
-
const schema = elementSchemas[i];
|
|
270
|
-
items.push(schema);
|
|
271
|
-
if (schema === true) {
|
|
272
|
-
hasAny = true;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
const schema = { type: 'array' };
|
|
276
|
-
if (prefixItems.length > 0) {
|
|
277
|
-
schema.prefixItems = prefixItems;
|
|
278
|
-
}
|
|
279
|
-
if (hasAny) {
|
|
280
|
-
schema.items = true;
|
|
281
|
-
}
|
|
282
|
-
else if (items.length > 1) {
|
|
283
|
-
schema.items = { anyOf: items };
|
|
284
|
-
}
|
|
285
|
-
else if (items.length === 1) {
|
|
286
|
-
schema.items = items[0];
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
schema.items = loose;
|
|
290
|
-
}
|
|
291
|
-
return schema;
|
|
292
|
-
}
|
|
293
|
-
if (simplified.kind === 'reflection') {
|
|
294
|
-
return true;
|
|
295
|
-
}
|
|
296
|
-
/* c8 ignore next 3 */
|
|
297
|
-
simplified;
|
|
298
|
-
return true;
|
|
299
|
-
}
|
|
300
|
-
/** Converts a Type object into JSON Schema */
|
|
301
|
-
export function toJSONSchema(type, options) {
|
|
302
|
-
let schema = toJSONSchemaImpl(type, { loose: options?.loose ?? false });
|
|
303
|
-
if (schema === true) {
|
|
304
|
-
schema = {};
|
|
305
|
-
}
|
|
306
|
-
else if (schema === false) {
|
|
307
|
-
schema = { not: true };
|
|
308
|
-
}
|
|
309
|
-
return {
|
|
310
|
-
...schema,
|
|
311
|
-
$schema,
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK3C,yDAAyD;AACzD,SAAS,MAAM,CAAC,IAA2B;IACvC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ;YACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,KAAK,QAAQ;YACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,KAAK,SAAS;YACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/B,KAAK,KAAK;YACN,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC5B,KAAK,OAAO;YACR,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1C,KAAK,QAAQ;YACT,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC;QAChB,KAAK,KAAK;YACN,OAAO,IAAI,CAAC;QAChB,KAAK,SAAS;YACV,OAAO,IAAI,CAAC;QAChB,KAAK,OAAO;YACR,OAAO,KAAK,CAAC;QACjB;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,SAAS,WAAW,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAA,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,MAAM,GAAG,KAAK,CAAC;AACrB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,2EAA2E;AAC3E,SAAS,mBAAmB,CAAC,IAAU,EAAE,QAAiB;IACtD,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,QAAQ;gBACT,MAAM,GAAG,SAAS,CAAC;gBACnB,MAAM;YACV,KAAK,SAAS;gBACV,MAAM,GAAG,UAAU,CAAC;gBACpB,MAAM;YACV,KAAK,KAAK,CAAC;YACX,KAAK,OAAO;gBACR,MAAM,GAAG,EAAE,CAAC;gBACZ,MAAM;YACV,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK,CAAC;YACX,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC;YACd;gBACI,MAAM,GAAG,MAAM,CAAC;gBAChB,MAAM;QACd,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACtC,kFAAkF;QAClF,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,IAAI,MAAM,GAAG,CAAC;AACzB,CAAC;AAED,yDAAyD;AACzD,SAAS,eAAe,CAAC,IAAkB;IACvC,OAAO,IAAI,IAAI,CAAC,KAAK;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACP,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9E,OAAO,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;AACrB,CAAC;AAED,8CAA8C;AAC9C,SAAS,OAAO,CAAC,IAAiB;IAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,sEAAsE;AACtE,SAAS,WAAW,CAAC,KAAoB;IACrC,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;KAClC,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,iCAAiC;AACjC,SAAS,aAAa,CAAC,IAAU;IAC7B,OAAO,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9D,CAAC;AAQD,8CAA8C;AAC9C,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAsC;IACxE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO;YACH,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;SACvD,CAAC;IACN,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAClB,SAAS;YACb,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,UAAU,GAA+B,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAe;gBACvB,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,oBAAoB,EAAE,KAAK;aAC9B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC/B,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,WAAW;aACpC,CAAC;QACN,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAe;oBACvB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE;oBAC3D,oBAAoB,EAAE,KAAK;iBAC9B,CAAC;gBACF,OAAO,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtF,MAAM,MAAM,GAAe;oBACvB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC/F,oBAAoB,EAAE,KAAK;iBAC9B,CAAC;gBACF,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,WAAW;aACpC,CAAC;QACN,CAAC;QACD,MAAM,MAAM,GAAe;YACvB,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE,EAAE,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,WAAW,EAAE;YACpD,oBAAoB,EAAE,KAAK;SAC9B,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,yDAAyD;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,CAAC,MAAM;gBAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7C,OAAO,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,EAAE,CAAC,MAAM;gBAAE,MAAM;YACrB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,IAAI,CAAC;YAClB,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,sBAAsB;IACtB,UAA0B,CAAC;IAC3B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CACxB,IAAU,EACV,OAA6B;IAE7B,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACxE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO;QACH,GAAG,MAAM;QACT,OAAO;KACV,CAAC;AACN,CAAC"}
|
package/dist/simplifier.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simplifier.d.ts","sourceRoot":"","sources":["../src/simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9E,qEAAqE;AACrE,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE3C,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC5B,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,4CAA4C;IAC5C,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC/C;;;;;;OAMG;IACH,+BAA+B,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IACtD,qEAAqE;IACrE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAkWD,4FAA4F;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAGpE"}
|