@formspec/build 0.1.0-alpha.10 → 0.1.0-alpha.11

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.
Files changed (107) hide show
  1. package/dist/browser.cjs +549 -0
  2. package/dist/browser.cjs.map +1 -0
  3. package/dist/browser.d.ts +4 -2
  4. package/dist/browser.d.ts.map +1 -1
  5. package/dist/browser.js +498 -45
  6. package/dist/browser.js.map +1 -1
  7. package/dist/build.d.ts +343 -33
  8. package/dist/cli.cjs +2267 -0
  9. package/dist/cli.cjs.map +1 -0
  10. package/dist/cli.js +2204 -101
  11. package/dist/cli.js.map +1 -1
  12. package/dist/generators/class-schema.d.ts +5 -9
  13. package/dist/generators/class-schema.d.ts.map +1 -1
  14. package/dist/index.cjs +2093 -0
  15. package/dist/index.cjs.map +1 -0
  16. package/dist/index.d.ts +4 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2024 -114
  19. package/dist/index.js.map +1 -1
  20. package/dist/internals.cjs +1345 -0
  21. package/dist/internals.cjs.map +1 -0
  22. package/dist/internals.d.ts +1 -0
  23. package/dist/internals.d.ts.map +1 -1
  24. package/dist/internals.js +1297 -21
  25. package/dist/internals.js.map +1 -1
  26. package/dist/json-schema/generator.d.ts.map +1 -1
  27. package/dist/json-schema/schema.d.ts +16 -0
  28. package/dist/json-schema/schema.d.ts.map +1 -0
  29. package/dist/ui-schema/generator.d.ts +15 -0
  30. package/dist/ui-schema/generator.d.ts.map +1 -1
  31. package/dist/ui-schema/schema.d.ts +357 -0
  32. package/dist/ui-schema/schema.d.ts.map +1 -0
  33. package/dist/ui-schema/types.d.ts +8 -73
  34. package/dist/ui-schema/types.d.ts.map +1 -1
  35. package/package.json +14 -9
  36. package/dist/__tests__/analyzer-edge-cases.test.js +0 -376
  37. package/dist/__tests__/analyzer-edge-cases.test.js.map +0 -1
  38. package/dist/__tests__/analyzer.test.js +0 -190
  39. package/dist/__tests__/analyzer.test.js.map +0 -1
  40. package/dist/__tests__/cli.test.js +0 -178
  41. package/dist/__tests__/cli.test.js.map +0 -1
  42. package/dist/__tests__/codegen.test.js +0 -506
  43. package/dist/__tests__/codegen.test.js.map +0 -1
  44. package/dist/__tests__/decorator-pipeline.test.js +0 -460
  45. package/dist/__tests__/decorator-pipeline.test.js.map +0 -1
  46. package/dist/__tests__/edge-cases.test.js +0 -215
  47. package/dist/__tests__/edge-cases.test.js.map +0 -1
  48. package/dist/__tests__/fixtures/edge-cases.js +0 -137
  49. package/dist/__tests__/fixtures/edge-cases.js.map +0 -1
  50. package/dist/__tests__/fixtures/example-a-builtins.js +0 -100
  51. package/dist/__tests__/fixtures/example-a-builtins.js.map +0 -1
  52. package/dist/__tests__/fixtures/example-b-decorators.js +0 -5
  53. package/dist/__tests__/fixtures/example-b-decorators.js.map +0 -1
  54. package/dist/__tests__/fixtures/example-b-extended.js +0 -60
  55. package/dist/__tests__/fixtures/example-b-extended.js.map +0 -1
  56. package/dist/__tests__/fixtures/example-c-custom.js +0 -61
  57. package/dist/__tests__/fixtures/example-c-custom.js.map +0 -1
  58. package/dist/__tests__/fixtures/example-c-decorators.js +0 -4
  59. package/dist/__tests__/fixtures/example-c-decorators.js.map +0 -1
  60. package/dist/__tests__/fixtures/example-d-mixed-decorators.js +0 -75
  61. package/dist/__tests__/fixtures/example-d-mixed-decorators.js.map +0 -1
  62. package/dist/__tests__/fixtures/example-e-decorators.js +0 -10
  63. package/dist/__tests__/fixtures/example-e-decorators.js.map +0 -1
  64. package/dist/__tests__/fixtures/example-e-no-namespace.js +0 -61
  65. package/dist/__tests__/fixtures/example-e-no-namespace.js.map +0 -1
  66. package/dist/__tests__/fixtures/example-interface-types.js +0 -8
  67. package/dist/__tests__/fixtures/example-interface-types.js.map +0 -1
  68. package/dist/__tests__/fixtures/example-jsdoc-constraints.js +0 -98
  69. package/dist/__tests__/fixtures/example-jsdoc-constraints.js.map +0 -1
  70. package/dist/__tests__/fixtures/example-nested-class.js +0 -248
  71. package/dist/__tests__/fixtures/example-nested-class.js.map +0 -1
  72. package/dist/__tests__/fixtures/sample-forms.js +0 -78
  73. package/dist/__tests__/fixtures/sample-forms.js.map +0 -1
  74. package/dist/__tests__/generator.test.js +0 -234
  75. package/dist/__tests__/generator.test.js.map +0 -1
  76. package/dist/__tests__/integration.test.js +0 -161
  77. package/dist/__tests__/integration.test.js.map +0 -1
  78. package/dist/__tests__/interface-types.test.js +0 -404
  79. package/dist/__tests__/interface-types.test.js.map +0 -1
  80. package/dist/__tests__/jsdoc-constraints.test.js +0 -465
  81. package/dist/__tests__/jsdoc-constraints.test.js.map +0 -1
  82. package/dist/__tests__/write-schemas.test.js +0 -198
  83. package/dist/__tests__/write-schemas.test.js.map +0 -1
  84. package/dist/analyzer/class-analyzer.js +0 -377
  85. package/dist/analyzer/class-analyzer.js.map +0 -1
  86. package/dist/analyzer/decorator-extractor.js +0 -336
  87. package/dist/analyzer/decorator-extractor.js.map +0 -1
  88. package/dist/analyzer/jsdoc-constraints.js +0 -153
  89. package/dist/analyzer/jsdoc-constraints.js.map +0 -1
  90. package/dist/analyzer/program.js +0 -114
  91. package/dist/analyzer/program.js.map +0 -1
  92. package/dist/analyzer/type-converter.js +0 -474
  93. package/dist/analyzer/type-converter.js.map +0 -1
  94. package/dist/codegen/index.js +0 -597
  95. package/dist/codegen/index.js.map +0 -1
  96. package/dist/generators/class-schema.js +0 -140
  97. package/dist/generators/class-schema.js.map +0 -1
  98. package/dist/generators/method-schema.js +0 -108
  99. package/dist/generators/method-schema.js.map +0 -1
  100. package/dist/json-schema/generator.js +0 -166
  101. package/dist/json-schema/generator.js.map +0 -1
  102. package/dist/json-schema/types.js +0 -33
  103. package/dist/json-schema/types.js.map +0 -1
  104. package/dist/ui-schema/generator.js +0 -148
  105. package/dist/ui-schema/generator.js.map +0 -1
  106. package/dist/ui-schema/types.js +0 -8
  107. package/dist/ui-schema/types.js.map +0 -1
@@ -1,474 +0,0 @@
1
- /**
2
- * Type converter for transforming TypeScript types to JSON Schema and FormSpec.
3
- *
4
- * Converts TypeScript types (extracted via type checker) to:
5
- * - JSON Schema definitions
6
- * - FormSpec field definitions
7
- */
8
- import * as ts from "typescript";
9
- import { analyzeField, analyzeInterfaceProperty } from "./class-analyzer.js";
10
- import { setSchemaExtension } from "../json-schema/types.js";
11
- /**
12
- * Given a ts.Type for a named type (class, interface, or type alias with
13
- * a type literal body), navigates to its declaration and returns a Map
14
- * from property name to its fully analyzed FieldInfo.
15
- *
16
- * - **Classes**: uses `analyzeField` to extract decorators + JSDoc constraints
17
- * - **Interfaces**: extracts `@Field_displayName`, `@Field_description`, and constraint tags
18
- * - **Type aliases** (object literals): same as interfaces
19
- *
20
- * Returns null for unnamed types (inline objects, mapped types, etc.),
21
- * preserving existing structural-only behavior for those cases.
22
- */
23
- function getNamedTypeFieldInfoMap(type, checker) {
24
- // Check both direct symbol and alias symbol — type aliases resolve to
25
- // an anonymous __type symbol, with the original alias on type.aliasSymbol.
26
- const symbols = [type.getSymbol(), type.aliasSymbol].filter((s) => s?.declarations != null && s.declarations.length > 0);
27
- for (const symbol of symbols) {
28
- const declarations = symbol.declarations;
29
- if (!declarations)
30
- continue;
31
- // Try class declaration
32
- const classDecl = declarations.find(ts.isClassDeclaration);
33
- if (classDecl) {
34
- const map = new Map();
35
- for (const member of classDecl.members) {
36
- if (ts.isPropertyDeclaration(member) && ts.isIdentifier(member.name)) {
37
- const fieldInfo = analyzeField(member, checker);
38
- if (fieldInfo)
39
- map.set(fieldInfo.name, fieldInfo);
40
- }
41
- }
42
- return map;
43
- }
44
- // Try interface declaration
45
- const interfaceDecl = declarations.find(ts.isInterfaceDeclaration);
46
- if (interfaceDecl) {
47
- return buildFieldInfoMapFromSignatures(interfaceDecl.members, checker);
48
- }
49
- // Try type alias with type literal body: type X = { ... }
50
- const typeAliasDecl = declarations.find(ts.isTypeAliasDeclaration);
51
- if (typeAliasDecl && ts.isTypeLiteralNode(typeAliasDecl.type)) {
52
- return buildFieldInfoMapFromSignatures(typeAliasDecl.type.members, checker);
53
- }
54
- }
55
- return null;
56
- }
57
- /**
58
- * Builds a FieldInfo map from interface/type-literal property signatures,
59
- * delegating to {@link analyzeInterfaceProperty} for JSDoc extraction.
60
- */
61
- function buildFieldInfoMapFromSignatures(members, checker) {
62
- const map = new Map();
63
- for (const member of members) {
64
- if (ts.isPropertySignature(member)) {
65
- const fieldInfo = analyzeInterfaceProperty(member, checker);
66
- if (fieldInfo) {
67
- map.set(fieldInfo.name, fieldInfo);
68
- }
69
- }
70
- }
71
- return map;
72
- }
73
- /**
74
- * Iterates the properties of an object type and resolves each property's
75
- * type, optionality, and class-level field info (decorators/JSDoc).
76
- *
77
- * This is the single source of truth for nested property analysis, used
78
- * by both the JSON Schema and FormSpec field generation paths.
79
- */
80
- function getObjectPropertyInfos(type, checker) {
81
- const fieldInfoMap = getNamedTypeFieldInfoMap(type, checker);
82
- const result = [];
83
- for (const prop of type.getProperties()) {
84
- const declaration = prop.valueDeclaration ?? prop.declarations?.[0];
85
- if (!declaration)
86
- continue;
87
- const propType = checker.getTypeOfSymbolAtLocation(prop, declaration);
88
- const optional = !!(prop.flags & ts.SymbolFlags.Optional);
89
- const fieldInfo = fieldInfoMap?.get(prop.name) ?? undefined;
90
- result.push({ name: prop.name, type: propType, optional, fieldInfo });
91
- }
92
- return result;
93
- }
94
- /**
95
- * Converts a TypeScript type to JSON Schema and FormSpec field type.
96
- *
97
- * @param type - The TypeScript type to convert
98
- * @param checker - TypeScript type checker
99
- * @returns Conversion result with JSON Schema and FormSpec type
100
- */
101
- export function convertType(type, checker) {
102
- return convertTypeInternal(type, checker, new Set());
103
- }
104
- function convertTypeInternal(type, checker, visiting) {
105
- // Handle primitive types
106
- if (type.flags & ts.TypeFlags.String) {
107
- return { jsonSchema: { type: "string" }, formSpecFieldType: "text" };
108
- }
109
- if (type.flags & ts.TypeFlags.Number) {
110
- return { jsonSchema: { type: "number" }, formSpecFieldType: "number" };
111
- }
112
- if (type.flags & ts.TypeFlags.Boolean) {
113
- return { jsonSchema: { type: "boolean" }, formSpecFieldType: "boolean" };
114
- }
115
- if (type.flags & ts.TypeFlags.Null) {
116
- return { jsonSchema: { type: "null" }, formSpecFieldType: "null" };
117
- }
118
- if (type.flags & ts.TypeFlags.Undefined) {
119
- return { jsonSchema: {}, formSpecFieldType: "undefined" };
120
- }
121
- // Handle literal types
122
- if (type.isStringLiteral()) {
123
- return {
124
- jsonSchema: { const: type.value },
125
- formSpecFieldType: "enum",
126
- };
127
- }
128
- if (type.isNumberLiteral()) {
129
- return {
130
- jsonSchema: { const: type.value },
131
- formSpecFieldType: "number",
132
- };
133
- }
134
- // Handle union types (including string literal unions for enums)
135
- if (type.isUnion()) {
136
- return convertUnionType(type, checker, visiting);
137
- }
138
- // Handle array types
139
- if (checker.isArrayType(type)) {
140
- return convertArrayType(type, checker, visiting);
141
- }
142
- // Handle object types
143
- if (type.flags & ts.TypeFlags.Object) {
144
- return convertObjectType(type, checker, visiting);
145
- }
146
- // Fallback
147
- return { jsonSchema: {}, formSpecFieldType: "unknown" };
148
- }
149
- /**
150
- * Converts a union type to JSON Schema.
151
- */
152
- function convertUnionType(type, checker, visiting) {
153
- const types = type.types;
154
- // Filter out null and undefined for analysis
155
- // Note: undefined is filtered out since JSON Schema doesn't have an undefined type
156
- // Optional fields are handled via the 'required' array, not the type
157
- const nonNullTypes = types.filter((t) => !(t.flags & (ts.TypeFlags.Null | ts.TypeFlags.Undefined)));
158
- const hasNull = types.some((t) => t.flags & ts.TypeFlags.Null);
159
- // Check if this is a boolean type (true | false in TypeScript)
160
- // TypeScript represents `boolean` as a union of `true | false` literal types
161
- const isBooleanUnion = nonNullTypes.length === 2 && nonNullTypes.every((t) => t.flags & ts.TypeFlags.BooleanLiteral);
162
- if (isBooleanUnion) {
163
- const result = {
164
- jsonSchema: { type: "boolean" },
165
- formSpecFieldType: "boolean",
166
- };
167
- if (hasNull) {
168
- result.jsonSchema = { oneOf: [{ type: "boolean" }, { type: "null" }] };
169
- }
170
- return result;
171
- }
172
- // Check if all types are string literals (enum pattern)
173
- const allStringLiterals = nonNullTypes.every((t) => t.isStringLiteral());
174
- if (allStringLiterals && nonNullTypes.length > 0) {
175
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TypeScript doesn't narrow array types from `every` predicate
176
- const enumValues = nonNullTypes.map((t) => t.value);
177
- const result = {
178
- jsonSchema: { enum: enumValues },
179
- formSpecFieldType: "enum",
180
- };
181
- if (hasNull) {
182
- result.jsonSchema = { oneOf: [{ enum: enumValues }, { type: "null" }] };
183
- }
184
- return result;
185
- }
186
- // Check if all types are number literals
187
- const allNumberLiterals = nonNullTypes.every((t) => t.isNumberLiteral());
188
- if (allNumberLiterals && nonNullTypes.length > 0) {
189
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TypeScript doesn't narrow array types from `every` predicate
190
- const enumValues = nonNullTypes.map((t) => t.value);
191
- const result = {
192
- jsonSchema: { enum: enumValues },
193
- formSpecFieldType: "enum",
194
- };
195
- if (hasNull) {
196
- result.jsonSchema = { oneOf: [{ enum: enumValues }, { type: "null" }] };
197
- }
198
- return result;
199
- }
200
- // Handle nullable types (T | null or T | undefined) with single non-null type
201
- if (nonNullTypes.length === 1 && nonNullTypes[0]) {
202
- const result = convertTypeInternal(nonNullTypes[0], checker, visiting);
203
- // Make it nullable in JSON Schema
204
- if (hasNull) {
205
- result.jsonSchema = { oneOf: [result.jsonSchema, { type: "null" }] };
206
- }
207
- return result;
208
- }
209
- // General union - use oneOf (filter out undefined which isn't valid in JSON Schema)
210
- const schemas = nonNullTypes.map((t) => convertTypeInternal(t, checker, visiting).jsonSchema);
211
- if (hasNull) {
212
- schemas.push({ type: "null" });
213
- }
214
- return {
215
- jsonSchema: { oneOf: schemas },
216
- formSpecFieldType: "union",
217
- };
218
- }
219
- /**
220
- * Converts an array type to JSON Schema.
221
- */
222
- function convertArrayType(type, checker, visiting) {
223
- const typeArgs = type.typeArguments;
224
- const elementType = typeArgs?.[0];
225
- const itemSchema = elementType
226
- ? convertTypeInternal(elementType, checker, visiting).jsonSchema
227
- : {};
228
- return {
229
- jsonSchema: {
230
- type: "array",
231
- items: itemSchema,
232
- },
233
- formSpecFieldType: "array",
234
- };
235
- }
236
- /**
237
- * Converts an object type to JSON Schema.
238
- */
239
- function convertObjectType(type, checker, visiting) {
240
- // Circular reference guard
241
- if (visiting.has(type)) {
242
- return { jsonSchema: { type: "object" }, formSpecFieldType: "object" };
243
- }
244
- visiting.add(type);
245
- const properties = {};
246
- const required = [];
247
- for (const propInfo of getObjectPropertyInfos(type, checker)) {
248
- const propSchema = convertTypeInternal(propInfo.type, checker, visiting).jsonSchema;
249
- // Apply decorator/JSDoc constraints from the class declaration if available
250
- properties[propInfo.name] = propInfo.fieldInfo
251
- ? applyDecoratorsToSchema(propSchema, propInfo.fieldInfo.decorators, propInfo.fieldInfo)
252
- : propSchema;
253
- if (!propInfo.optional) {
254
- required.push(propInfo.name);
255
- }
256
- }
257
- visiting.delete(type);
258
- return {
259
- jsonSchema: {
260
- type: "object",
261
- properties,
262
- ...(required.length > 0 ? { required } : {}),
263
- },
264
- formSpecFieldType: "object",
265
- };
266
- }
267
- /**
268
- * Creates a FormSpec field definition from a field's type and decorators.
269
- *
270
- * @param fieldName - The field name
271
- * @param type - The TypeScript type
272
- * @param decorators - Decorators applied to the field
273
- * @param optional - Whether the field is optional
274
- * @param checker - TypeScript type checker
275
- * @returns FormSpec field definition
276
- */
277
- export function createFormSpecField(fieldName, type, decorators, optional, checker, visitedTypes = new Set()) {
278
- const { formSpecFieldType } = convertType(type, checker);
279
- const field = {
280
- _field: formSpecFieldType,
281
- id: fieldName,
282
- };
283
- // Apply optionality
284
- if (!optional) {
285
- field.required = true;
286
- }
287
- // For object types, recursively add nested fields.
288
- // Note: visitedTypes guards against circular references independently from
289
- // the `visiting` set in convertTypeInternal — they protect different recursion
290
- // paths (FormSpec field generation vs JSON Schema generation).
291
- if (formSpecFieldType === "object" && type.flags & ts.TypeFlags.Object) {
292
- if (!visitedTypes.has(type)) {
293
- visitedTypes.add(type);
294
- const nestedFields = [];
295
- for (const propInfo of getObjectPropertyInfos(type, checker)) {
296
- nestedFields.push(createFormSpecField(propInfo.name, propInfo.type, propInfo.fieldInfo?.decorators ?? [], propInfo.optional, checker, visitedTypes));
297
- }
298
- visitedTypes.delete(type);
299
- if (nestedFields.length > 0) {
300
- field.fields = nestedFields;
301
- }
302
- }
303
- }
304
- // Apply decorator values
305
- for (const dec of decorators) {
306
- applyDecoratorToField(field, dec);
307
- }
308
- return field;
309
- }
310
- /**
311
- * Applies a decorator's values to a FormSpec field.
312
- *
313
- * Note: Custom decorator extensions (x-formspec-*) are only emitted in JSON Schema
314
- * via `applyDecoratorsToSchema`, not here. The FormSpecField interface does not
315
- * carry extension data — extensions are a schema-level concern.
316
- *
317
- * @param field - The FormSpec field to modify
318
- * @param decorator - The decorator information to apply
319
- */
320
- function applyDecoratorToField(field, decorator) {
321
- const { args } = decorator;
322
- const resolved = decorator.resolved;
323
- // If this is an extended decorator, map it to the built-in it extends
324
- const effectiveName = resolved?.extendsBuiltin ?? decorator.name;
325
- switch (effectiveName) {
326
- case "Field": {
327
- // Field takes an object with displayName, description, placeholder
328
- const opts = args[0];
329
- if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
330
- if (typeof opts["displayName"] === "string") {
331
- field.label = opts["displayName"];
332
- }
333
- if (typeof opts["description"] === "string") {
334
- field.description = opts["description"];
335
- }
336
- if (typeof opts["placeholder"] === "string") {
337
- field.placeholder = opts["placeholder"];
338
- }
339
- }
340
- break;
341
- }
342
- case "Minimum":
343
- if (typeof args[0] === "number") {
344
- field.min = args[0];
345
- }
346
- break;
347
- case "Maximum":
348
- if (typeof args[0] === "number") {
349
- field.max = args[0];
350
- }
351
- break;
352
- case "MinLength":
353
- if (typeof args[0] === "number") {
354
- field.minLength = args[0];
355
- }
356
- break;
357
- case "MaxLength":
358
- if (typeof args[0] === "number") {
359
- field.maxLength = args[0];
360
- }
361
- break;
362
- case "Pattern":
363
- if (typeof args[0] === "string") {
364
- field.pattern = args[0];
365
- }
366
- break;
367
- case "EnumOptions":
368
- if (Array.isArray(args[0])) {
369
- field.options = args[0];
370
- }
371
- break;
372
- case "ShowWhen":
373
- if (typeof args[0] === "object" && args[0] !== null) {
374
- field.showWhen = args[0];
375
- }
376
- break;
377
- case "Group":
378
- if (typeof args[0] === "string") {
379
- field.group = args[0];
380
- }
381
- break;
382
- }
383
- }
384
- /**
385
- * Applies decorator constraints to a JSON Schema.
386
- *
387
- * @param schema - The base JSON Schema
388
- * @param decorators - Decorators to apply
389
- * @param fieldInfo - Optional field info for deprecated/default values
390
- * @returns Modified JSON Schema with constraints
391
- */
392
- export function applyDecoratorsToSchema(schema, decorators, fieldInfo) {
393
- const result = { ...schema };
394
- for (const dec of decorators) {
395
- const { args } = dec;
396
- const resolved = dec.resolved;
397
- // If this is an extended decorator, map it to the built-in it extends
398
- const effectiveName = resolved?.extendsBuiltin ?? dec.name;
399
- switch (effectiveName) {
400
- case "Field": {
401
- // Field takes an object: { displayName, description?, placeholder? }
402
- const opts = args[0];
403
- if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
404
- if (typeof opts["displayName"] === "string") {
405
- result.title = opts["displayName"];
406
- }
407
- if (typeof opts["description"] === "string") {
408
- result.description = opts["description"];
409
- }
410
- }
411
- break;
412
- }
413
- case "Minimum":
414
- if (typeof args[0] === "number") {
415
- result.minimum = args[0];
416
- }
417
- break;
418
- case "Maximum":
419
- if (typeof args[0] === "number") {
420
- result.maximum = args[0];
421
- }
422
- break;
423
- case "ExclusiveMinimum":
424
- if (typeof args[0] === "number") {
425
- result.exclusiveMinimum = args[0];
426
- }
427
- break;
428
- case "ExclusiveMaximum":
429
- if (typeof args[0] === "number") {
430
- result.exclusiveMaximum = args[0];
431
- }
432
- break;
433
- case "MinLength":
434
- if (typeof args[0] === "number") {
435
- result.minLength = args[0];
436
- }
437
- break;
438
- case "MaxLength":
439
- if (typeof args[0] === "number") {
440
- result.maxLength = args[0];
441
- }
442
- break;
443
- case "Pattern":
444
- if (typeof args[0] === "string") {
445
- result.pattern = args[0];
446
- }
447
- break;
448
- }
449
- // Emit x-formspec-* for custom decorators with a valid extensionName.
450
- // Extension names must be lowercase alphanumeric with hyphens (e.g., "title-field", "priority").
451
- if (resolved?.extensionName && /^[a-z][a-z0-9-]*$/.test(resolved.extensionName)) {
452
- const key = `x-formspec-${resolved.extensionName}`;
453
- if (resolved.isMarker) {
454
- setSchemaExtension(result, key, true);
455
- }
456
- else {
457
- // Parameterized: use first argument as value
458
- setSchemaExtension(result, key, args[0] ?? true);
459
- }
460
- }
461
- }
462
- // Apply deprecated and default from FieldInfo
463
- if (fieldInfo) {
464
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- `deprecated` is a FieldInfo flag tracking @deprecated JSDoc, not itself deprecated
465
- if (fieldInfo.deprecated) {
466
- result.deprecated = true;
467
- }
468
- if (fieldInfo.defaultValue !== undefined) {
469
- result.default = fieldInfo.defaultValue;
470
- }
471
- }
472
- return result;
473
- }
474
- //# sourceMappingURL=type-converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-converter.js","sourceRoot":"","sources":["../../src/analyzer/type-converter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAkB,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAA4B,MAAM,yBAAyB,CAAC;AAoCvF;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAC/B,IAAa,EACb,OAAuB;IAEvB,sEAAsE;IACtE,2EAA2E;IAC3E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CACzD,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,EAAE,YAAY,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAC5E,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,wBAAwB;QACxB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;YACzC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAChD,IAAI,SAAS;wBAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,4BAA4B;QAC5B,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,+BAA+B,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,0DAA0D;QAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACnE,IAAI,aAAa,IAAI,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,+BAA+B,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,+BAA+B,CACtC,OAAqC,EACrC,OAAuB;IAEvB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAoBD;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,IAAmB,EACnB,OAAuB;IAEvB,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QAE5D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,OAAuB;IAChE,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAa,EACb,OAAuB,EACvB,QAAsB;IAEtB,yBAAyB;IACzB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACzE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC3E,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;IAC5D,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QAC3B,OAAO;YACL,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACjC,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QAC3B,OAAO;YACL,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACjC,iBAAiB,EAAE,QAAQ;SAC5B,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,iBAAiB,CAAC,IAAqB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,WAAW;IACX,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAkB,EAClB,OAAuB,EACvB,QAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,6CAA6C;IAC7C,mFAAmF;IACnF,qEAAqE;IACrE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CACjE,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/D,+DAA+D;IAC/D,6EAA6E;IAC7E,MAAM,cAAc,GAClB,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhG,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAyB;YACnC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,iBAAiB,EAAE,SAAS;SAC7B,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wDAAwD;IACxD,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACzE,IAAI,iBAAiB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,4IAA4I;QAC5I,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAA0B,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAyB;YACnC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAChC,iBAAiB,EAAE,MAAM;SAC1B,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACzE,IAAI,iBAAiB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,4IAA4I;QAC5I,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAA0B,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAyB;YACnC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAChC,iBAAiB,EAAE,MAAM;SAC1B,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,kCAAkC;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9F,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO;QACL,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9B,iBAAiB,EAAE,OAAO;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAa,EACb,OAAuB,EACvB,QAAsB;IAEtB,MAAM,QAAQ,GAAI,IAAyB,CAAC,aAAa,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAElC,MAAM,UAAU,GAAG,WAAW;QAC5B,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,UAAU;QAChE,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,UAAU;SAClB;QACD,iBAAiB,EAAE,OAAO;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,IAAmB,EACnB,OAAuB,EACvB,QAAsB;IAEtB,2BAA2B;IAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACzE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEnB,MAAM,UAAU,GAAwC,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC;QAEpF,4EAA4E;QAC5E,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS;YAC5C,CAAC,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;YACxF,CAAC,CAAC,UAAU,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO;QACL,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C;QACD,iBAAiB,EAAE,QAAQ;KAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,IAAa,EACb,UAA2B,EAC3B,QAAiB,EACjB,OAAuB,EACvB,eAAe,IAAI,GAAG,EAAW;IAEjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAkB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,EAAE,EAAE,SAAS;KACd,CAAC;IAEF,oBAAoB;IACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,mDAAmD;IACnD,2EAA2E;IAC3E,+EAA+E;IAC/E,+DAA+D;IAC/D,IAAI,iBAAiB,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEvB,MAAM,YAAY,GAAoB,EAAE,CAAC;YACzC,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAAC,IAAqB,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC9E,YAAY,CAAC,IAAI,CACf,mBAAmB,CACjB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,EACpC,QAAQ,CAAC,QAAQ,EACjB,OAAO,EACP,YAAY,CACb,CACF,CAAC;YACJ,CAAC;YAED,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE1B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,KAAoB,EAAE,SAAwB;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IAEpC,sEAAsE;IACtE,MAAM,aAAa,GAAG,QAAQ,EAAE,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC;IAEjE,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,mEAAmE;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC5C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC5C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC5C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS;YACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YACD,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YACD,MAAM;QAER,KAAK,WAAW;YACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM;QAER,KAAK,WAAW;YACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM;QAER,KAAK,aAAa;YAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAA+C,CAAC;YACxE,CAAC;YACD,MAAM;QAER,KAAK,UAAU;YACb,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;YACrC,CAAC;YACD,MAAM;QAER,KAAK,OAAO;YACV,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;YACD,MAAM;IACV,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA2B,EAC3B,UAA2B,EAC3B,SAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE9B,sEAAsE;QACtE,MAAM,aAAa,GAAG,QAAQ,EAAE,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC;QAE3D,QAAQ,aAAa,EAAE,CAAC;YACtB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,qEAAqE;gBACrE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtE,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC5C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;oBACrC,CAAC;oBACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC5C,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,SAAS;gBACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM;YAER,KAAK,kBAAkB;gBACrB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM;YAER,KAAK,kBAAkB;gBACrB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;gBACD,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;gBACD,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM;QACV,CAAC;QAED,sEAAsE;QACtE,iGAAiG;QACjG,IAAI,QAAQ,EAAE,aAAa,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAChF,MAAM,GAAG,GAAG,cAAc,QAAQ,CAAC,aAAa,EAAW,CAAC;YAC5D,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,kJAAkJ;QAClJ,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}