@formspec/build 0.1.0-alpha.5 → 0.1.0-alpha.51

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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -93
  3. package/dist/analyzer/class-analyzer.d.ts +135 -0
  4. package/dist/analyzer/class-analyzer.d.ts.map +1 -0
  5. package/dist/analyzer/jsdoc-constraints.d.ts +53 -0
  6. package/dist/analyzer/jsdoc-constraints.d.ts.map +1 -0
  7. package/dist/analyzer/program.d.ts +97 -0
  8. package/dist/analyzer/program.d.ts.map +1 -0
  9. package/dist/analyzer/tsdoc-parser.d.ts +124 -0
  10. package/dist/analyzer/tsdoc-parser.d.ts.map +1 -0
  11. package/dist/browser.cjs +2212 -0
  12. package/dist/browser.cjs.map +1 -0
  13. package/dist/browser.d.ts +74 -0
  14. package/dist/browser.d.ts.map +1 -0
  15. package/dist/browser.js +2167 -0
  16. package/dist/browser.js.map +1 -0
  17. package/dist/build-alpha.d.ts +2408 -0
  18. package/dist/build-beta.d.ts +2408 -0
  19. package/dist/build-internal.d.ts +2408 -0
  20. package/dist/build.d.ts +2209 -151
  21. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts +22 -0
  22. package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -0
  23. package/dist/canonicalize/index.d.ts +8 -0
  24. package/dist/canonicalize/index.d.ts.map +1 -0
  25. package/dist/canonicalize/tsdoc-canonicalizer.d.ts +38 -0
  26. package/dist/canonicalize/tsdoc-canonicalizer.d.ts.map +1 -0
  27. package/dist/cli.cjs +7111 -0
  28. package/dist/cli.cjs.map +1 -0
  29. package/dist/cli.js +7070 -103
  30. package/dist/cli.js.map +1 -1
  31. package/dist/extensions/index.d.ts +8 -0
  32. package/dist/extensions/index.d.ts.map +1 -0
  33. package/dist/extensions/registry.d.ts +142 -0
  34. package/dist/extensions/registry.d.ts.map +1 -0
  35. package/dist/extensions/resolve-custom-type.d.ts +37 -0
  36. package/dist/extensions/resolve-custom-type.d.ts.map +1 -0
  37. package/dist/extensions/symbol-registry.d.ts +33 -0
  38. package/dist/extensions/symbol-registry.d.ts.map +1 -0
  39. package/dist/extensions/ts-type-utils.d.ts +40 -0
  40. package/dist/extensions/ts-type-utils.d.ts.map +1 -0
  41. package/dist/generators/class-schema.d.ts +392 -0
  42. package/dist/generators/class-schema.d.ts.map +1 -0
  43. package/dist/generators/discovered-schema.d.ts +152 -0
  44. package/dist/generators/discovered-schema.d.ts.map +1 -0
  45. package/dist/generators/method-schema.d.ts +72 -0
  46. package/dist/generators/method-schema.d.ts.map +1 -0
  47. package/dist/generators/mixed-authoring.d.ts +52 -0
  48. package/dist/generators/mixed-authoring.d.ts.map +1 -0
  49. package/dist/index.cjs +6786 -0
  50. package/dist/index.cjs.map +1 -0
  51. package/dist/index.d.ts +51 -8
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +6751 -107
  54. package/dist/index.js.map +1 -1
  55. package/dist/internals.cjs +5736 -0
  56. package/dist/internals.cjs.map +1 -0
  57. package/dist/internals.d.ts +32 -0
  58. package/dist/internals.d.ts.map +1 -0
  59. package/dist/internals.js +5706 -0
  60. package/dist/internals.js.map +1 -0
  61. package/dist/json-schema/generator.d.ts +32 -6
  62. package/dist/json-schema/generator.d.ts.map +1 -1
  63. package/dist/json-schema/ir-generator.d.ts +149 -0
  64. package/dist/json-schema/ir-generator.d.ts.map +1 -0
  65. package/dist/json-schema/schema.d.ts +23 -0
  66. package/dist/json-schema/schema.d.ts.map +1 -0
  67. package/dist/json-schema/types.d.ts +76 -2
  68. package/dist/json-schema/types.d.ts.map +1 -1
  69. package/dist/metadata/collision-guards.d.ts +3 -0
  70. package/dist/metadata/collision-guards.d.ts.map +1 -0
  71. package/dist/metadata/index.d.ts +7 -0
  72. package/dist/metadata/index.d.ts.map +1 -0
  73. package/dist/metadata/policy.d.ts +12 -0
  74. package/dist/metadata/policy.d.ts.map +1 -0
  75. package/dist/metadata/resolve.d.ts +21 -0
  76. package/dist/metadata/resolve.d.ts.map +1 -0
  77. package/dist/static-build.d.ts +61 -0
  78. package/dist/static-build.d.ts.map +1 -0
  79. package/dist/ui-schema/generator.d.ts +18 -2
  80. package/dist/ui-schema/generator.d.ts.map +1 -1
  81. package/dist/ui-schema/ir-generator.d.ts +54 -0
  82. package/dist/ui-schema/ir-generator.d.ts.map +1 -0
  83. package/dist/ui-schema/schema.d.ts +429 -0
  84. package/dist/ui-schema/schema.d.ts.map +1 -0
  85. package/dist/ui-schema/types.d.ts +179 -35
  86. package/dist/ui-schema/types.d.ts.map +1 -1
  87. package/dist/validate/constraint-validator.d.ts +85 -0
  88. package/dist/validate/constraint-validator.d.ts.map +1 -0
  89. package/dist/validate/index.d.ts +9 -0
  90. package/dist/validate/index.d.ts.map +1 -0
  91. package/package.json +30 -11
  92. package/dist/__tests__/cli.test.d.ts +0 -2
  93. package/dist/__tests__/cli.test.d.ts.map +0 -1
  94. package/dist/__tests__/cli.test.js +0 -178
  95. package/dist/__tests__/cli.test.js.map +0 -1
  96. package/dist/__tests__/edge-cases.test.d.ts +0 -7
  97. package/dist/__tests__/edge-cases.test.d.ts.map +0 -1
  98. package/dist/__tests__/edge-cases.test.js +0 -217
  99. package/dist/__tests__/edge-cases.test.js.map +0 -1
  100. package/dist/__tests__/generator.test.d.ts +0 -2
  101. package/dist/__tests__/generator.test.d.ts.map +0 -1
  102. package/dist/__tests__/generator.test.js +0 -234
  103. package/dist/__tests__/generator.test.js.map +0 -1
  104. package/dist/__tests__/integration.test.d.ts +0 -8
  105. package/dist/__tests__/integration.test.d.ts.map +0 -1
  106. package/dist/__tests__/integration.test.js +0 -163
  107. package/dist/__tests__/integration.test.js.map +0 -1
  108. package/dist/__tests__/write-schemas.test.d.ts +0 -2
  109. package/dist/__tests__/write-schemas.test.d.ts.map +0 -1
  110. package/dist/__tests__/write-schemas.test.js +0 -196
  111. package/dist/__tests__/write-schemas.test.js.map +0 -1
  112. package/dist/json-schema/generator.js +0 -167
  113. package/dist/json-schema/generator.js.map +0 -1
  114. package/dist/json-schema/types.js +0 -7
  115. package/dist/json-schema/types.js.map +0 -1
  116. package/dist/ui-schema/generator.js +0 -150
  117. package/dist/ui-schema/generator.js.map +0 -1
  118. package/dist/ui-schema/types.js +0 -8
  119. package/dist/ui-schema/types.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * TypeScript program setup for static analysis.
3
+ *
4
+ * Creates a TypeScript program with type checker from a source file,
5
+ * using the project's tsconfig.json for compiler options.
6
+ */
7
+ import * as ts from "typescript";
8
+ import type { ConstraintSemanticDiagnostic } from "@formspec/analysis/internal";
9
+ import { type DiscriminatorResolutionOptions, type IRClassAnalysis } from "./class-analyzer.js";
10
+ import type { ExtensionRegistry } from "../extensions/index.js";
11
+ import type { MetadataPolicyInput } from "@formspec/core";
12
+ /**
13
+ * Result of creating a TypeScript program for analysis.
14
+ */
15
+ export interface ProgramContext {
16
+ /** The TypeScript program */
17
+ program: ts.Program;
18
+ /** Type checker for resolving types */
19
+ checker: ts.TypeChecker;
20
+ /** The source file being analyzed */
21
+ sourceFile: ts.SourceFile;
22
+ }
23
+ export type AnalyzeNamedTypeToIRDetailedResult = {
24
+ readonly ok: true;
25
+ readonly analysis: IRClassAnalysis;
26
+ } | {
27
+ readonly ok: false;
28
+ readonly diagnostics: readonly ConstraintSemanticDiagnostic[];
29
+ };
30
+ /**
31
+ * Resolves a source file and checker from an existing TypeScript program.
32
+ *
33
+ * @param program - Existing TypeScript program supplied by the host
34
+ * @param filePath - Absolute or relative path to the TypeScript source file
35
+ * @returns Program context with checker and source file
36
+ */
37
+ export declare function createProgramContextFromProgram(program: ts.Program, filePath: string): ProgramContext;
38
+ /**
39
+ * Creates a TypeScript program for analyzing a source file.
40
+ *
41
+ * Looks for tsconfig.json in the file's directory or parent directories.
42
+ * Falls back to default compiler options if no config is found.
43
+ *
44
+ * @param filePath - Absolute path to the TypeScript source file
45
+ * @param additionalFiles - Optional additional files to include in the program
46
+ * (e.g., the FormSpec config file for symbol-based custom type detection).
47
+ * Duplicates are silently removed.
48
+ * @returns Program context with checker and source file
49
+ */
50
+ export declare function createProgramContext(filePath: string, additionalFiles?: readonly string[]): ProgramContext;
51
+ /**
52
+ * Finds a class declaration by name in a source file.
53
+ *
54
+ * @param sourceFile - The source file to search
55
+ * @param className - Name of the class to find
56
+ * @returns The class declaration node, or null if not found
57
+ */
58
+ export declare function findClassByName(sourceFile: ts.SourceFile, className: string): ts.ClassDeclaration | null;
59
+ /**
60
+ * Finds an interface declaration by name in a source file.
61
+ *
62
+ * @param sourceFile - The source file to search
63
+ * @param interfaceName - Name of the interface to find
64
+ * @returns The interface declaration node, or null if not found
65
+ */
66
+ export declare function findInterfaceByName(sourceFile: ts.SourceFile, interfaceName: string): ts.InterfaceDeclaration | null;
67
+ /**
68
+ * Finds a type alias declaration by name in a source file.
69
+ *
70
+ * @param sourceFile - The source file to search
71
+ * @param aliasName - Name of the type alias to find
72
+ * @returns The type alias declaration node, or null if not found
73
+ */
74
+ export declare function findTypeAliasByName(sourceFile: ts.SourceFile, aliasName: string): ts.TypeAliasDeclaration | null;
75
+ /**
76
+ * Analyzes a named type (class, interface, or type alias) from a TypeScript
77
+ * source file and returns an `IRClassAnalysis`.
78
+ *
79
+ * Tries each declaration kind in order: class → interface → type alias.
80
+ * Throws if the name is not found or if the type alias analysis fails.
81
+ *
82
+ * @param filePath - Absolute or relative path to the TypeScript source file (resolved internally)
83
+ * @param typeName - Name of the class, interface, or type alias to analyze
84
+ * @param extensionRegistry - Optional extension registry for custom type handling
85
+ * @returns IR analysis result
86
+ */
87
+ export declare function analyzeNamedTypeToIR(filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): IRClassAnalysis;
88
+ /**
89
+ * Analyzes a named type from an existing program context and returns either an
90
+ * `IRClassAnalysis` or structured diagnostics instead of throwing.
91
+ */
92
+ export declare function analyzeNamedTypeToIRFromProgramContextDetailed(ctx: ProgramContext, filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): AnalyzeNamedTypeToIRDetailedResult;
93
+ /**
94
+ * Analyzes a named type from an existing program context and returns an `IRClassAnalysis`.
95
+ */
96
+ export declare function analyzeNamedTypeToIRFromProgramContext(ctx: ProgramContext, filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): IRClassAnalysis;
97
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/analyzer/program.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EASL,KAAK,8BAA8B,EACnC,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,qCAAqC;IACrC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CAC3B;AAED,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D,CAAC;AAEN;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,QAAQ,EAAE,MAAM,GACf,cAAc,CAahB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,cAAc,CA8DhB;AA6BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,MAAM,GAChB,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,aAAa,EAAE,MAAM,GACpB,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAEhC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,MAAM,GAChB,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAEhC;AAoID;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,eAAe,CAUjB;AAED;;;GAGG;AACH,wBAAgB,8CAA8C,CAC5D,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,kCAAkC,CA0IpC;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,eAAe,CAcjB"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * TSDoc-based structured tag parser.
3
+ *
4
+ * Bridges the TypeScript compiler AST with the official `@microsoft/tsdoc`
5
+ * parser to extract constraint and annotation tags from JSDoc comments
6
+ * on class/interface/type-alias properties.
7
+ *
8
+ * The parser recognises two categories of tags:
9
+ *
10
+ * 1. **Constraint tags** (all alphanumeric, TSDoc-compliant):
11
+ * `@minimum`, `@maximum`, `@exclusiveMinimum`, `@exclusiveMaximum`,
12
+ * `@multipleOf`, `@minLength`, `@maxLength`, `@minItems`, `@maxItems`,
13
+ * `@uniqueItems`, `@pattern`, `@enumOptions`, `@const`
14
+ * — Parsed via TSDocParser as custom block tags.
15
+ * Both camelCase and PascalCase forms are accepted (e.g., `@Minimum`).
16
+ *
17
+ * 2. **Metadata and annotation tags** (`@apiName`, `@displayName`,
18
+ * `@format`, `@placeholder`):
19
+ * These are parsed as structured custom block tags so summary extraction
20
+ * stops at recognized FormSpec tags. `@displayName`, `@format`, and
21
+ * `@placeholder` also map onto annotation IR nodes, while `@apiName`
22
+ * remains metadata-only and is resolved separately by the class analyzer.
23
+ *
24
+ * The `@deprecated` tag is a standard TSDoc block tag, parsed structurally.
25
+ *
26
+ * Description and remarks extraction (spec 002 §2.3):
27
+ * - Summary text (bare text before the first block tag) → `description` annotation
28
+ * - `@remarks` block → `remarks` annotation (separate channel)
29
+ * - `@description` is NOT supported (not a standard TSDoc tag)
30
+ *
31
+ * **Fallback strategy**: TSDoc treats `{` / `}` as inline tag delimiters and
32
+ * `@` as a tag prefix, so content containing these characters (e.g. JSON
33
+ * objects in `@EnumOptions`, regex patterns with `@` in `@Pattern`) gets
34
+ * mangled by the TSDoc parser. The shared comment syntax parser is the
35
+ * primary source for these payloads; the TS compiler's `ts.getJSDocTags()`
36
+ * API remains as a fallback when a raw payload cannot be recovered from the
37
+ * shared parse.
38
+ */
39
+ import * as ts from "typescript";
40
+ import { type ConstraintSemanticDiagnostic } from "@formspec/analysis/internal";
41
+ import { type ConstraintNode, type AnnotationNode, type PathTarget, type TypeNode } from "@formspec/core/internals";
42
+ import type { ExtensionRegistry } from "../extensions/index.js";
43
+ /**
44
+ * Result of parsing a single JSDoc comment attached to a TS AST node.
45
+ */
46
+ export interface TSDocParseResult {
47
+ /** Constraint IR nodes extracted from custom block tags. */
48
+ readonly constraints: readonly ConstraintNode[];
49
+ /** Annotation IR nodes extracted from canonical TSDoc block tags. */
50
+ readonly annotations: readonly AnnotationNode[];
51
+ /** Compiler-backed extraction diagnostics for invalid tag applications. */
52
+ readonly diagnostics: readonly ConstraintSemanticDiagnostic[];
53
+ }
54
+ /**
55
+ * Optional extension-aware parsing inputs for TSDoc extraction.
56
+ */
57
+ export interface ParseTSDocOptions {
58
+ /**
59
+ * Extension registry used to resolve custom tags and custom-type-specific
60
+ * broadening of built-in constraint tags.
61
+ */
62
+ readonly extensionRegistry?: ExtensionRegistry;
63
+ /**
64
+ * Effective field/type node for the declaration being parsed. Required when
65
+ * built-in tags may broaden onto a custom type.
66
+ */
67
+ readonly fieldType?: TypeNode;
68
+ /** Type checker used for compiler-backed placement and type validation. */
69
+ readonly checker?: ts.TypeChecker;
70
+ /** The declaration type that the parsed tag applies to. */
71
+ readonly subjectType?: ts.Type;
72
+ /** Optional enclosing host type for future cross-field signature checks. */
73
+ readonly hostType?: ts.Type;
74
+ }
75
+ /**
76
+ * Display-name metadata extracted from a node's JSDoc tags.
77
+ *
78
+ * The root display name is returned separately from member-target labels so
79
+ * callers can apply the former to the enclosing type/form and the latter to
80
+ * enum members.
81
+ */
82
+ export interface DisplayNameMetadata {
83
+ readonly displayName?: string;
84
+ readonly memberDisplayNames: ReadonlyMap<string, string>;
85
+ }
86
+ /**
87
+ * Parses the JSDoc comment attached to a TypeScript AST node using the
88
+ * unified comment parser and returns canonical IR constraint and annotation
89
+ * nodes.
90
+ *
91
+ * For constraint tags (`@minimum`, `@pattern`, `@enumOptions`, etc.),
92
+ * the unified parser provides aligned span and TSDoc block information.
93
+ * Canonical annotation tags (`@displayName`) are also parsed structurally.
94
+ * Summary text and `@remarks` are extracted as separate annotation nodes.
95
+ *
96
+ * @param node - The TS AST node to inspect (PropertyDeclaration, PropertySignature, etc.)
97
+ * @param file - Absolute source file path for provenance
98
+ * @returns Parsed constraint and annotation nodes
99
+ */
100
+ export declare function parseTSDocTags(node: ts.Node, file?: string, options?: ParseTSDocOptions): TSDocParseResult;
101
+ /**
102
+ * Checks if a TS AST node has a `@deprecated` tag using the unified parser.
103
+ */
104
+ export declare function hasDeprecatedTagTSDoc(node: ts.Node): boolean;
105
+ /**
106
+ * Extracts root and member-target display-name metadata from a node's JSDoc tags.
107
+ *
108
+ * Member-target display-name tags use the syntax `@displayName :member Label`.
109
+ * The first non-target `@displayName` is returned as the root display name.
110
+ */
111
+ export declare function extractDisplayNameMetadata(node: ts.Node): DisplayNameMetadata;
112
+ /**
113
+ * Extracts a path-target prefix (`:fieldName`) from constraint tag text.
114
+ * Returns the parsed PathTarget and remaining text, or null if no path target.
115
+ *
116
+ * @example
117
+ * extractPathTarget(":value 0") // → { path: { segments: ["value"] }, remainingText: "0" }
118
+ * extractPathTarget("42") // → null
119
+ */
120
+ export declare function extractPathTarget(text: string): {
121
+ path: PathTarget;
122
+ remainingText: string;
123
+ } | null;
124
+ //# sourceMappingURL=tsdoc-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsdoc-parser.d.ts","sourceRoot":"","sources":["../../src/analyzer/tsdoc-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAcL,KAAK,4BAA4B,EAIlC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA6vBhE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D;AA2DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,IAAI,SAAK,EACT,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAyNlB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAkB5D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAmC7E;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAEpD"}