adorn-api 1.0.12 → 1.0.14

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 (171) hide show
  1. package/dist/adapter/express/auth.d.ts +8 -0
  2. package/dist/adapter/express/auth.d.ts.map +1 -1
  3. package/dist/adapter/express/bootstrap.d.ts +12 -0
  4. package/dist/adapter/express/bootstrap.d.ts.map +1 -1
  5. package/dist/adapter/express/coercion.d.ts +81 -1
  6. package/dist/adapter/express/coercion.d.ts.map +1 -1
  7. package/dist/adapter/express/index.d.ts +1 -0
  8. package/dist/adapter/express/index.d.ts.map +1 -1
  9. package/dist/adapter/express/merge.d.ts +17 -0
  10. package/dist/adapter/express/merge.d.ts.map +1 -1
  11. package/dist/adapter/express/openapi.d.ts +55 -0
  12. package/dist/adapter/express/openapi.d.ts.map +1 -1
  13. package/dist/adapter/express/router.d.ts +6 -0
  14. package/dist/adapter/express/router.d.ts.map +1 -1
  15. package/dist/adapter/express/swagger.d.ts +6 -0
  16. package/dist/adapter/express/swagger.d.ts.map +1 -1
  17. package/dist/adapter/express/types.d.ts +26 -0
  18. package/dist/adapter/express/types.d.ts.map +1 -1
  19. package/dist/adapter/express/validation.d.ts +19 -2
  20. package/dist/adapter/express/validation.d.ts.map +1 -1
  21. package/dist/cli.cjs +1016 -445
  22. package/dist/cli.cjs.map +1 -1
  23. package/dist/cli.js +1016 -445
  24. package/dist/cli.js.map +1 -1
  25. package/dist/compiler/analyze/index.d.ts +5 -0
  26. package/dist/compiler/analyze/index.d.ts.map +1 -0
  27. package/dist/compiler/analyze/scanControllers.d.ts +52 -0
  28. package/dist/compiler/analyze/scanControllers.d.ts.map +1 -1
  29. package/dist/compiler/cache/isStale.d.ts +26 -0
  30. package/dist/compiler/cache/isStale.d.ts.map +1 -1
  31. package/dist/compiler/cache/loadArtifacts.d.ts +36 -0
  32. package/dist/compiler/cache/loadArtifacts.d.ts.map +1 -1
  33. package/dist/compiler/cache/schema.d.ts +14 -0
  34. package/dist/compiler/cache/schema.d.ts.map +1 -1
  35. package/dist/compiler/cache/writeCache.d.ts +6 -0
  36. package/dist/compiler/cache/writeCache.d.ts.map +1 -1
  37. package/dist/compiler/gems.d.ts +75 -0
  38. package/dist/compiler/gems.d.ts.map +1 -0
  39. package/dist/compiler/generator/index.d.ts +7 -0
  40. package/dist/compiler/generator/index.d.ts.map +1 -0
  41. package/dist/compiler/generator/manifest.d.ts +23 -0
  42. package/dist/compiler/generator/manifest.d.ts.map +1 -0
  43. package/dist/compiler/generator/openapi.d.ts +118 -0
  44. package/dist/compiler/generator/openapi.d.ts.map +1 -0
  45. package/dist/compiler/graph/builder.d.ts +24 -0
  46. package/dist/compiler/graph/builder.d.ts.map +1 -0
  47. package/dist/compiler/graph/index.d.ts +7 -0
  48. package/dist/compiler/graph/index.d.ts.map +1 -0
  49. package/dist/compiler/graph/schemaGraph.d.ts +67 -0
  50. package/dist/compiler/graph/schemaGraph.d.ts.map +1 -0
  51. package/dist/compiler/graph/types.d.ts +203 -0
  52. package/dist/compiler/graph/types.d.ts.map +1 -0
  53. package/dist/compiler/index.d.ts +12 -0
  54. package/dist/compiler/index.d.ts.map +1 -0
  55. package/dist/compiler/ir/index.d.ts +7 -0
  56. package/dist/compiler/ir/index.d.ts.map +1 -0
  57. package/dist/compiler/ir/pipeline.d.ts +82 -0
  58. package/dist/compiler/ir/pipeline.d.ts.map +1 -0
  59. package/dist/compiler/ir/stages.d.ts +40 -0
  60. package/dist/compiler/ir/stages.d.ts.map +1 -0
  61. package/dist/compiler/ir/visitor.d.ts +98 -0
  62. package/dist/compiler/ir/visitor.d.ts.map +1 -0
  63. package/dist/compiler/manifest/emit.d.ts +14 -0
  64. package/dist/compiler/manifest/emit.d.ts.map +1 -1
  65. package/dist/compiler/manifest/format.d.ts +42 -0
  66. package/dist/compiler/manifest/format.d.ts.map +1 -1
  67. package/dist/compiler/manifest/index.d.ts +6 -0
  68. package/dist/compiler/manifest/index.d.ts.map +1 -0
  69. package/dist/compiler/runner/createProgram.d.ts +16 -0
  70. package/dist/compiler/runner/createProgram.d.ts.map +1 -1
  71. package/dist/compiler/runner/index.d.ts +5 -0
  72. package/dist/compiler/runner/index.d.ts.map +1 -0
  73. package/dist/compiler/schema/extractAnnotations.d.ts +47 -0
  74. package/dist/compiler/schema/extractAnnotations.d.ts.map +1 -1
  75. package/dist/compiler/schema/index.d.ts +6 -0
  76. package/dist/compiler/schema/index.d.ts.map +1 -0
  77. package/dist/compiler/schema/intersectionHandler.d.ts +44 -0
  78. package/dist/compiler/schema/intersectionHandler.d.ts.map +1 -0
  79. package/dist/compiler/schema/objectHandler.d.ts +106 -0
  80. package/dist/compiler/schema/objectHandler.d.ts.map +1 -0
  81. package/dist/compiler/schema/openapi.d.ts +16 -1
  82. package/dist/compiler/schema/openapi.d.ts.map +1 -1
  83. package/dist/compiler/schema/parameters.d.ts +90 -0
  84. package/dist/compiler/schema/parameters.d.ts.map +1 -0
  85. package/dist/compiler/schema/primitives.d.ts +68 -0
  86. package/dist/compiler/schema/primitives.d.ts.map +1 -0
  87. package/dist/compiler/schema/typeToJsonSchema.d.ts +22 -51
  88. package/dist/compiler/schema/typeToJsonSchema.d.ts.map +1 -1
  89. package/dist/compiler/schema/types.d.ts +69 -0
  90. package/dist/compiler/schema/types.d.ts.map +1 -0
  91. package/dist/compiler/schema/unionHandler.d.ts +70 -0
  92. package/dist/compiler/schema/unionHandler.d.ts.map +1 -0
  93. package/dist/compiler/transform/dedup.d.ts +35 -0
  94. package/dist/compiler/transform/dedup.d.ts.map +1 -0
  95. package/dist/compiler/transform/flatten.d.ts +50 -0
  96. package/dist/compiler/transform/flatten.d.ts.map +1 -0
  97. package/dist/compiler/transform/index.d.ts +7 -0
  98. package/dist/compiler/transform/index.d.ts.map +1 -0
  99. package/dist/compiler/transform/inline.d.ts +46 -0
  100. package/dist/compiler/transform/inline.d.ts.map +1 -0
  101. package/dist/compiler/validation/emitPrecompiledValidators.d.ts +16 -0
  102. package/dist/compiler/validation/emitPrecompiledValidators.d.ts.map +1 -1
  103. package/dist/compiler/validation/index.d.ts +5 -0
  104. package/dist/compiler/validation/index.d.ts.map +1 -0
  105. package/dist/decorators/Auth.d.ts +17 -0
  106. package/dist/decorators/Auth.d.ts.map +1 -1
  107. package/dist/decorators/Controller.d.ts +15 -0
  108. package/dist/decorators/Controller.d.ts.map +1 -1
  109. package/dist/decorators/Public.d.ts +13 -0
  110. package/dist/decorators/Public.d.ts.map +1 -1
  111. package/dist/decorators/Use.d.ts +18 -0
  112. package/dist/decorators/Use.d.ts.map +1 -1
  113. package/dist/decorators/methods.d.ts +20 -0
  114. package/dist/decorators/methods.d.ts.map +1 -1
  115. package/dist/express.cjs +73 -54
  116. package/dist/express.cjs.map +1 -1
  117. package/dist/express.js +73 -54
  118. package/dist/express.js.map +1 -1
  119. package/dist/http.d.ts +1 -2
  120. package/dist/http.d.ts.map +1 -1
  121. package/dist/index.cjs +161 -4
  122. package/dist/index.cjs.map +1 -1
  123. package/dist/index.d.ts +2 -0
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +156 -3
  126. package/dist/index.js.map +1 -1
  127. package/dist/metal/applyListQuery.d.ts +73 -0
  128. package/dist/metal/applyListQuery.d.ts.map +1 -1
  129. package/dist/metal/index.cjs +2 -2
  130. package/dist/metal/index.cjs.map +1 -1
  131. package/dist/metal/index.d.ts +4 -0
  132. package/dist/metal/index.d.ts.map +1 -1
  133. package/dist/metal/index.js +2 -2
  134. package/dist/metal/index.js.map +1 -1
  135. package/dist/metal/listQuery.d.ts +19 -0
  136. package/dist/metal/listQuery.d.ts.map +1 -1
  137. package/dist/metal/queryOptions.d.ts +8 -0
  138. package/dist/metal/queryOptions.d.ts.map +1 -1
  139. package/dist/metal/readMetalBag.d.ts +36 -0
  140. package/dist/metal/readMetalBag.d.ts.map +1 -1
  141. package/dist/metal/registerMetalEntities.d.ts +20 -0
  142. package/dist/metal/registerMetalEntities.d.ts.map +1 -1
  143. package/dist/metal/schemaFromEntity.d.ts +30 -0
  144. package/dist/metal/schemaFromEntity.d.ts.map +1 -1
  145. package/dist/metal/searchWhere.d.ts +39 -0
  146. package/dist/metal/searchWhere.d.ts.map +1 -1
  147. package/dist/metal/symbolMetadata.d.ts +6 -0
  148. package/dist/metal/symbolMetadata.d.ts.map +1 -1
  149. package/dist/runtime/auth/runtime.d.ts +155 -6
  150. package/dist/runtime/auth/runtime.d.ts.map +1 -1
  151. package/dist/runtime/metadata/bucket.d.ts +1 -2
  152. package/dist/runtime/metadata/bucket.d.ts.map +1 -1
  153. package/dist/runtime/metadata/key.d.ts +1 -1
  154. package/dist/runtime/metadata/key.d.ts.map +1 -1
  155. package/dist/runtime/metadata/read.d.ts +1 -2
  156. package/dist/runtime/metadata/read.d.ts.map +1 -1
  157. package/dist/runtime/metadata/types.d.ts +74 -0
  158. package/dist/runtime/metadata/types.d.ts.map +1 -1
  159. package/dist/runtime/polyfill.d.ts +1 -1
  160. package/dist/runtime/polyfill.d.ts.map +1 -1
  161. package/dist/runtime/upload.d.ts +37 -0
  162. package/dist/runtime/upload.d.ts.map +1 -1
  163. package/dist/runtime/validation/ajv.d.ts +100 -0
  164. package/dist/runtime/validation/ajv.d.ts.map +1 -1
  165. package/dist/runtime/validation/index.d.ts +9 -0
  166. package/dist/runtime/validation/index.d.ts.map +1 -1
  167. package/dist/scripts/adorn-example.cjs +238 -6
  168. package/dist/scripts/adorn-example.cjs.map +1 -1
  169. package/dist/utils/port.d.ts +9 -0
  170. package/dist/utils/port.d.ts.map +1 -0
  171. package/package.json +4 -1
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Union type handling module.
3
+ * Converts TypeScript union types to JSON Schema anyOf/oneOf constructs.
4
+ */
5
+ import ts from "typescript";
6
+ import type { JsonSchema, DiscriminatorObject, SchemaContext } from "./types.js";
7
+ /**
8
+ * Handles TypeScript union types and converts them to JSON Schema.
9
+ * Creates anyOf schemas with optional discriminator for union members.
10
+ *
11
+ * @param type - The union type to convert
12
+ * @param ctx - The schema generation context
13
+ * @param typeNode - Optional type node for additional context
14
+ * @returns The generated JSON Schema
15
+ */
16
+ export declare function handleUnion(type: ts.UnionType, ctx: SchemaContext, typeNode?: ts.TypeNode): JsonSchema;
17
+ /**
18
+ * Detects if a union type forms a discriminated union.
19
+ * A discriminated union has a common property with literal values that can be used for discrimination.
20
+ *
21
+ * @param types - The constituent types of the union
22
+ * @param ctx - The schema generation context
23
+ * @param branches - The generated schemas for each branch (unused in current impl)
24
+ * @returns Discriminator object if discriminated union detected, null otherwise
25
+ */
26
+ export declare function detectDiscriminatedUnion(types: readonly ts.Type[], ctx: SchemaContext, _branches: JsonSchema[]): DiscriminatorObject | null;
27
+ /**
28
+ * Finds property names that are common across all types in a union.
29
+ *
30
+ * @param checker - TypeScript type checker for property lookup
31
+ * @param types - The types to analyze
32
+ * @returns Array of property names present in all types
33
+ */
34
+ export declare function findCommonPropertyNames(checker: ts.TypeChecker, types: readonly ts.Type[]): string[];
35
+ /**
36
+ * Checks if a property is required (non-optional) in a given type.
37
+ *
38
+ * @param checker - TypeScript type checker for symbol analysis
39
+ * @param type - The type to check
40
+ * @param propName - The property name to check
41
+ * @returns True if the property is required
42
+ */
43
+ export declare function isRequiredProperty(checker: ts.TypeChecker, type: ts.Type, propName: string): boolean;
44
+ /**
45
+ * Gets the literal string values of a property across a type.
46
+ * Used for detecting discriminated unions.
47
+ *
48
+ * @param checker - TypeScript type checker for property type analysis
49
+ * @param type - The type to check
50
+ * @param propName - The property name to get values for
51
+ * @returns Set of literal values, or null if not a literal union
52
+ */
53
+ export declare function getPropertyLiteralValues(checker: ts.TypeChecker, type: ts.Type, propName: string): Set<string> | null;
54
+ /**
55
+ * Checks if multiple sets are pairwise disjoint (have no common elements).
56
+ *
57
+ * @param sets - Array of sets to check for disjointness
58
+ * @returns True if all sets are pairwise disjoint
59
+ */
60
+ export declare function areSetsDisjoint(sets: Array<Set<string>>): boolean;
61
+ /**
62
+ * Gets the schema name for a union branch type.
63
+ * Used for discriminator mapping.
64
+ *
65
+ * @param type - The type to get name for
66
+ * @param ctx - The schema generation context
67
+ * @returns The schema name, or generated anonymous name
68
+ */
69
+ export declare function getBranchSchemaName(type: ts.Type, ctx: SchemaContext): string;
70
+ //# sourceMappingURL=unionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unionHandler.d.ts","sourceRoot":"","sources":["../../../src/compiler/schema/unionHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGjF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,EAAE,CAAC,SAAS,EAClB,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,GACrB,UAAU,CA6DZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EACzB,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,UAAU,EAAE,GACtB,mBAAmB,GAAG,IAAI,CA0B5B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAOpG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAapG;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAoBrH;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CASjE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAY7E"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Deduplication transformation for removing duplicate type definitions.
3
+ * Merges identical types and updates references.
4
+ */
5
+ import type { Graph, NodeId } from "../graph/types.js";
6
+ import type { NodeTransformer } from "../ir/visitor.js";
7
+ /**
8
+ * Type similarity comparison result
9
+ */
10
+ interface TypeSimilarity {
11
+ score: number;
12
+ identical: boolean;
13
+ }
14
+ /**
15
+ * Deduplication transformation result
16
+ */
17
+ export interface DeduplicationResult {
18
+ mergedNodes: Map<NodeId, NodeId>;
19
+ removedCount: number;
20
+ duplicatesFound: number;
21
+ }
22
+ /**
23
+ * Type deduplication transformer
24
+ */
25
+ export declare function createDeduplicationTransformer(): NodeTransformer;
26
+ /**
27
+ * Apply deduplication to graph
28
+ */
29
+ export declare function applyDeduplication(graph: Graph): DeduplicationResult;
30
+ /**
31
+ * Find structurally similar types
32
+ */
33
+ export declare function findSimilarTypes(graph: Graph, threshold?: number): Array<[NodeId, NodeId, TypeSimilarity]>;
34
+ export {};
35
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../../src/compiler/transform/dedup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAGV,KAAK,EACL,MAAM,EACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,eAAe,CAkBhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,CA+CpE;AA0CD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAwBzC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Flattening transformation for simplifying nested type structures.
3
+ * Flattens deeply nested object types into shallower structures.
4
+ */
5
+ import type { Graph, NodeId } from "../graph/types.js";
6
+ import type { NodeTransformer } from "../ir/visitor.js";
7
+ /**
8
+ * Flattening configuration
9
+ */
10
+ export interface FlattenConfig {
11
+ maxNestingLevel: number;
12
+ preserveNaming: boolean;
13
+ prefix: string;
14
+ mergeOverlapping: boolean;
15
+ maxProperties: number;
16
+ }
17
+ /**
18
+ * Default flattening configuration
19
+ */
20
+ export declare const DEFAULT_FLATTEN_CONFIG: FlattenConfig;
21
+ /**
22
+ * Flattening transformation result
23
+ */
24
+ export interface FlattenResult {
25
+ flattenedNodes: NodeId[];
26
+ propertiesFlattened: number;
27
+ conflictsResolved: number;
28
+ }
29
+ /**
30
+ * Create flattening transformer
31
+ */
32
+ export declare function createFlattenTransformer(config?: Partial<FlattenConfig>): NodeTransformer;
33
+ /**
34
+ * Apply flattening to graph
35
+ */
36
+ export declare function applyFlattening(graph: Graph, config?: Partial<FlattenConfig>): FlattenResult;
37
+ /**
38
+ * Find deeply nested types that could benefit from flattening
39
+ */
40
+ export declare function findNestedTypes(graph: Graph, config?: Partial<FlattenConfig>): NodeId[];
41
+ /**
42
+ * Analyze flattening impact on the graph
43
+ */
44
+ export declare function analyzeFlatteningImpact(graph: Graph, config?: Partial<FlattenConfig>): {
45
+ nodesAffected: number;
46
+ propertiesFlattened: number;
47
+ avgNestingLevelBefore: number;
48
+ avgNestingLevelAfter: number;
49
+ };
50
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/compiler/transform/flatten.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAGV,KAAK,EACL,MAAM,EACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,eAAe,CAajB;AA4BD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,aAAa,CAwBf;AAuHD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,MAAM,EAAE,CAqBV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CA0BA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Graph transformations
3
+ */
4
+ export * from './dedup.js';
5
+ export * from './inline.js';
6
+ export * from './flatten.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compiler/transform/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Reference inlining transformation.
3
+ * Inlines small type definitions to reduce schema complexity.
4
+ */
5
+ import type { AnyNode, Graph, NodeId } from "../graph/types.js";
6
+ import type { VisitorContext } from "../ir/visitor.js";
7
+ /**
8
+ * Inlining configuration
9
+ */
10
+ export interface InliningConfig {
11
+ maxDepth: number;
12
+ maxNodes: number;
13
+ inlinePrimitives: boolean;
14
+ inlineSmallTypes: boolean;
15
+ smallTypeThreshold: number;
16
+ excludePatterns: RegExp[];
17
+ }
18
+ /**
19
+ * Default inlining configuration
20
+ */
21
+ export declare const DEFAULT_INLINING_CONFIG: InliningConfig;
22
+ /**
23
+ * Inlining transformation result
24
+ */
25
+ export interface InliningResult {
26
+ inlinedNodes: NodeId[];
27
+ inlinedEdges: number;
28
+ nodesRemoved: number;
29
+ }
30
+ /**
31
+ * Create inlining transformer with custom config
32
+ */
33
+ export declare function createInliningTransformer(config?: Partial<InliningConfig>): (node: AnyNode, context: VisitorContext) => AnyNode | null;
34
+ /**
35
+ * Apply inlining to graph
36
+ */
37
+ export declare function applyInlining(graph: Graph, config?: Partial<InliningConfig>): InliningResult;
38
+ /**
39
+ * Calculate inlining depth for a node
40
+ */
41
+ export declare function calculateInliningDepth(graph: Graph, nodeId: NodeId, visited?: Set<NodeId>): number;
42
+ /**
43
+ * Find potential inline candidates
44
+ */
45
+ export declare function findInlineCandidates(graph: Graph, config?: Partial<InliningConfig>): NodeId[];
46
+ //# sourceMappingURL=inline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../../../src/compiler/transform/inline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,MAAM,EAEP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAOrC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,IAGpE,MAAM,OAAO,EAAE,SAAS,cAAc,KAAG,OAAO,GAAG,IAAI,CAYhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,cAAc,CAsBhB;AA0KD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,MAAM,EAAE,CAkBV"}
@@ -1,9 +1,15 @@
1
+ /**
2
+ * OpenAPI specification interface for validator generation.
3
+ */
1
4
  interface OpenApi {
2
5
  openapi: string;
3
6
  components?: {
4
7
  schemas?: Record<string, unknown>;
5
8
  };
6
9
  }
10
+ /**
11
+ * Manifest interface for validator generation.
12
+ */
7
13
  interface Manifest {
8
14
  manifestVersion: number;
9
15
  controllers: Array<{
@@ -30,6 +36,9 @@ interface Manifest {
30
36
  }>;
31
37
  }>;
32
38
  }
39
+ /**
40
+ * Options for emitting precompiled validators.
41
+ */
33
42
  export interface EmitPrecompiledValidatorsOptions {
34
43
  outDir: string;
35
44
  openapi: OpenApi;
@@ -37,6 +46,13 @@ export interface EmitPrecompiledValidatorsOptions {
37
46
  strict?: "off" | "log" | "error";
38
47
  formatsMode?: "fast" | "full";
39
48
  }
49
+ /**
50
+ * Emits precompiled validators for the API.
51
+ * Generates standalone validation code using AJV for optimal performance.
52
+ *
53
+ * @param opts - Options including output directory, OpenAPI spec, manifest, and validation settings
54
+ * @returns Promise resolving to paths of generated validator files and a content hash
55
+ */
40
56
  export declare function emitPrecompiledValidators(opts: EmitPrecompiledValidatorsOptions): Promise<{
41
57
  validatorsCjsPath: string;
42
58
  validatorsEsmPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"emitPrecompiledValidators.d.ts","sourceRoot":"","sources":["../../../src/compiler/validation/emitPrecompiledValidators.ts"],"names":[],"mappings":"AAQA,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH;AAED,UAAU,QAAQ;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,KAAK,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE;gBACJ,IAAI,CAAC,EAAE;oBACL,SAAS,EAAE,MAAM,CAAC;oBAClB,WAAW,EAAE,MAAM,CAAC;iBACrB,GAAG,IAAI,CAAC;gBACT,QAAQ,CAAC,EAAE,KAAK,CAAC;oBACf,MAAM,EAAE,MAAM,CAAC;oBACf,WAAW,EAAE,MAAM,CAAC;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAC;iBACpB,CAAC,CAAC;aACJ,CAAC;YACF,SAAS,EAAE,KAAK,CAAC;gBACf,MAAM,EAAE,MAAM,CAAC;gBACf,WAAW,EAAE,MAAM,CAAC;gBACpB,SAAS,EAAE,MAAM,CAAC;aACnB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AA4CD,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC;IAC/F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAyGD"}
1
+ {"version":3,"file":"emitPrecompiledValidators.d.ts","sourceRoot":"","sources":["../../../src/compiler/validation/emitPrecompiledValidators.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH;AAED;;GAEG;AACH,UAAU,QAAQ;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,KAAK,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE;gBACJ,IAAI,CAAC,EAAE;oBACL,SAAS,EAAE,MAAM,CAAC;oBAClB,WAAW,EAAE,MAAM,CAAC;iBACrB,GAAG,IAAI,CAAC;gBACT,QAAQ,CAAC,EAAE,KAAK,CAAC;oBACf,MAAM,EAAE,MAAM,CAAC;oBACf,WAAW,EAAE,MAAM,CAAC;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAC;iBACpB,CAAC,CAAC;aACJ,CAAC;YACF,SAAS,EAAE,KAAK,CAAC;gBACf,MAAM,EAAE,MAAM,CAAC;gBACf,WAAW,EAAE,MAAM,CAAC;gBACpB,SAAS,EAAE,MAAM,CAAC;aACnB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AA4CD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC;IAC/F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAyGD"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Validation module exports
3
+ */
4
+ export { emitPrecompiledValidators } from './emitPrecompiledValidators.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compiler/validation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * Decorator to mark a method as requiring authentication.
3
+ *
4
+ * @param scheme - The authentication scheme to use (e.g., "Bearer", "Basic")
5
+ * @param options - Optional authentication configuration
6
+ * @param options.scopes - Required permission scopes for this endpoint
7
+ * @param options.optional - If true, authentication is optional (useful for mixed auth endpoints)
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * @Auth("Bearer", { scopes: ["admin"] })
12
+ * @Delete("/users/:id")
13
+ * deleteUser() {
14
+ * // Implementation
15
+ * }
16
+ * ```
17
+ */
1
18
  export declare function Auth(scheme: string, options?: {
2
19
  scopes?: string[];
3
20
  optional?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.d.ts","sourceRoot":"","sources":["../../src/decorators/Auth.ts"],"names":[],"mappings":"AAGA,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,IAEpF,QAAQ,GAAG,EACX,SAAS,2BAA2B,UAwBvC"}
1
+ {"version":3,"file":"Auth.d.ts","sourceRoot":"","sources":["../../src/decorators/Auth.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,IAEpF,QAAQ,GAAG,EACX,SAAS,2BAA2B,UAwBvC"}
@@ -1,2 +1,17 @@
1
+ /**
2
+ * Decorator to mark a class as a controller with a base path.
3
+ * All methods in the controller will be relative to this base path.
4
+ *
5
+ * @param basePath - The base path for all routes in this controller
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * @Controller("/users")
10
+ * export class UsersController {
11
+ * @Get("/:id")
12
+ * getUser() { }
13
+ * }
14
+ * ```
15
+ */
1
16
  export declare function Controller(basePath: string): <T extends new (...args: any[]) => any>(target: T, context: ClassDecoratorContext<T>) => T | void;
2
17
  //# sourceMappingURL=Controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/decorators/Controller.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,IACxB,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACpD,QAAQ,CAAC,EACT,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAChC,CAAC,GAAG,IAAI,CAIZ"}
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/decorators/Controller.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,IACxB,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACpD,QAAQ,CAAC,EACT,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAChC,CAAC,GAAG,IAAI,CAIZ"}
@@ -1,2 +1,15 @@
1
+ /**
2
+ * Decorator to mark a method as public (no authentication required).
3
+ * Use this to explicitly allow unauthenticated access to specific endpoints.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * @Public()
8
+ * @Get("/health")
9
+ * healthCheck() {
10
+ * return { status: "ok" };
11
+ * }
12
+ * ```
13
+ */
1
14
  export declare function Public(): (target: any, context: ClassMethodDecoratorContext) => void;
2
15
  //# sourceMappingURL=Public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Public.d.ts","sourceRoot":"","sources":["../../src/decorators/Public.ts"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,KAElB,QAAQ,GAAG,EACX,SAAS,2BAA2B,UAoBvC"}
1
+ {"version":3,"file":"Public.d.ts","sourceRoot":"","sources":["../../src/decorators/Public.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,KAElB,QAAQ,GAAG,EACX,SAAS,2BAA2B,UAoBvC"}
@@ -1,5 +1,23 @@
1
1
  import type { ExpressMw } from "../runtime/metadata/types.js";
2
2
  type UseTarget = string | ExpressMw;
3
+ /**
4
+ * Decorator to apply middleware to a controller class or individual methods.
5
+ *
6
+ * @param middleware - One or more middleware functions or paths (for path-specific middleware)
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // Apply to entire controller
11
+ * @Use(cors(), helmet())
12
+ * @Controller("/api")
13
+ * class ApiController { }
14
+ *
15
+ * // Apply to specific method
16
+ * @Use(express.json())
17
+ * @Post("/upload")
18
+ * uploadFile() { }
19
+ * ```
20
+ */
3
21
  export declare function Use(...middleware: UseTarget[]): (target: any, context: ClassDecoratorContext | ClassMethodDecoratorContext) => void;
4
22
  export {};
5
23
  //# sourceMappingURL=Use.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Use.d.ts","sourceRoot":"","sources":["../../src/decorators/Use.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,8BAA8B,CAAC;AAE1E,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpC,wBAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,IAE1C,QAAQ,GAAG,EACX,SAAS,qBAAqB,GAAG,2BAA2B,UA4B/D"}
1
+ {"version":3,"file":"Use.d.ts","sourceRoot":"","sources":["../../src/decorators/Use.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,8BAA8B,CAAC;AAE1E,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,IAE1C,QAAQ,GAAG,EACX,SAAS,qBAAqB,GAAG,2BAA2B,UA4B/D"}
@@ -1,6 +1,26 @@
1
+ /**
2
+ * Creates a method decorator for HTTP GET requests.
3
+ * @param path - The route path for this endpoint
4
+ */
1
5
  export declare const Get: (path: string) => <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext<any, T>) => T | void;
6
+ /**
7
+ * Creates a method decorator for HTTP POST requests.
8
+ * @param path - The route path for this endpoint
9
+ */
2
10
  export declare const Post: (path: string) => <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext<any, T>) => T | void;
11
+ /**
12
+ * Creates a method decorator for HTTP PUT requests.
13
+ * @param path - The route path for this endpoint
14
+ */
3
15
  export declare const Put: (path: string) => <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext<any, T>) => T | void;
16
+ /**
17
+ * Creates a method decorator for HTTP PATCH requests.
18
+ * @param path - The route path for this endpoint
19
+ */
4
20
  export declare const Patch: (path: string) => <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext<any, T>) => T | void;
21
+ /**
22
+ * Creates a method decorator for HTTP DELETE requests.
23
+ * @param path - The route path for this endpoint
24
+ */
5
25
  export declare const Delete: (path: string) => <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext<any, T>) => T | void;
6
26
  //# sourceMappingURL=methods.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../src/decorators/methods.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,MA1Bb,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAuB8D,CAAC;AACxE,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,MA3Bd,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAwBgE,CAAC;AAC1E,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,MA5Bb,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAyB8D,CAAC;AACxE,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,MA7Bf,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IA0BkE,CAAC;AAC5E,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,MA9BhB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IA2BoE,CAAC"}
1
+ {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../src/decorators/methods.ts"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,MA9Bb,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IA2B8D,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,MApCd,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAiCgE,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,MA1Cb,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAuC8D,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,MAhDf,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IA6CkE,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,MAtDhB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,UACxC,CAAC,WACA,2BAA2B,CAAC,GAAG,EAAE,CAAC,CAAC,KAC3C,CAAC,GAAG,IAmDoE,CAAC"}