@danielfgray/pg-sourcerer 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/bin/pgsourcerer +2 -0
  2. package/dist/__tests__/fixtures/index.d.ts +15 -0
  3. package/dist/__tests__/fixtures/index.d.ts.map +1 -0
  4. package/dist/__tests__/fixtures/index.js +19 -0
  5. package/dist/__tests__/fixtures/index.js.map +1 -0
  6. package/dist/__tests__/fixtures/introspection.json +40522 -0
  7. package/dist/cli.d.ts +0 -1
  8. package/dist/cli.js +7 -46
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +38 -5
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +13 -2
  13. package/dist/config.js.map +1 -1
  14. package/dist/{lib/conjure.d.ts → conjure/index.d.ts} +62 -3
  15. package/dist/conjure/index.d.ts.map +1 -0
  16. package/dist/{lib/conjure.js → conjure/index.js} +124 -3
  17. package/dist/conjure/index.js.map +1 -0
  18. package/dist/conjure/signature.d.ts +85 -0
  19. package/dist/conjure/signature.d.ts.map +1 -0
  20. package/dist/conjure/signature.js +130 -0
  21. package/dist/conjure/signature.js.map +1 -0
  22. package/dist/conjure/types.d.ts +97 -0
  23. package/dist/conjure/types.d.ts.map +1 -0
  24. package/dist/conjure/types.js +206 -0
  25. package/dist/conjure/types.js.map +1 -0
  26. package/dist/errors.d.ts +114 -139
  27. package/dist/errors.d.ts.map +1 -1
  28. package/dist/errors.js +82 -36
  29. package/dist/errors.js.map +1 -1
  30. package/dist/generate.d.ts +45 -46
  31. package/dist/generate.d.ts.map +1 -1
  32. package/dist/generate.js +86 -59
  33. package/dist/generate.js.map +1 -1
  34. package/dist/hex/builder.d.ts +12 -0
  35. package/dist/hex/builder.d.ts.map +1 -0
  36. package/dist/hex/builder.js +64 -0
  37. package/dist/hex/builder.js.map +1 -0
  38. package/dist/hex/ddl.d.ts +53 -0
  39. package/dist/hex/ddl.d.ts.map +1 -0
  40. package/dist/hex/ddl.js +306 -0
  41. package/dist/hex/ddl.js.map +1 -0
  42. package/dist/hex/index.d.ts +105 -0
  43. package/dist/hex/index.d.ts.map +1 -0
  44. package/dist/hex/index.js +81 -0
  45. package/dist/hex/index.js.map +1 -0
  46. package/dist/hex/primitives.d.ts +23 -0
  47. package/dist/hex/primitives.d.ts.map +1 -0
  48. package/dist/hex/primitives.js +38 -0
  49. package/dist/hex/primitives.js.map +1 -0
  50. package/dist/hex/query.d.ts +116 -0
  51. package/dist/hex/query.d.ts.map +1 -0
  52. package/dist/hex/query.js +219 -0
  53. package/dist/hex/query.js.map +1 -0
  54. package/dist/hex/types.d.ts +287 -0
  55. package/dist/hex/types.d.ts.map +1 -0
  56. package/dist/hex/types.js +431 -0
  57. package/dist/hex/types.js.map +1 -0
  58. package/dist/index.d.ts +17 -25
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +33 -44
  61. package/dist/index.js.map +1 -1
  62. package/dist/init.d.ts.map +1 -1
  63. package/dist/init.js +76 -140
  64. package/dist/init.js.map +1 -1
  65. package/dist/ir/extensions/queries.d.ts +6 -6
  66. package/dist/ir/extensions/queries.d.ts.map +1 -1
  67. package/dist/ir/extensions/queries.js +6 -4
  68. package/dist/ir/extensions/queries.js.map +1 -1
  69. package/dist/ir/extensions/schema-builder.d.ts.map +1 -1
  70. package/dist/ir/extensions/schema-builder.js.map +1 -1
  71. package/dist/ir/index.d.ts.map +1 -1
  72. package/dist/ir/index.js.map +1 -1
  73. package/dist/ir/relation-graph.d.ts.map +1 -1
  74. package/dist/ir/relation-graph.js +8 -8
  75. package/dist/ir/relation-graph.js.map +1 -1
  76. package/dist/ir/semantic-ir.d.ts +38 -0
  77. package/dist/ir/semantic-ir.d.ts.map +1 -1
  78. package/dist/ir/semantic-ir.js +50 -2
  79. package/dist/ir/semantic-ir.js.map +1 -1
  80. package/dist/ir/smart-tags.d.ts.map +1 -1
  81. package/dist/ir/smart-tags.js.map +1 -1
  82. package/dist/lib/field-utils.d.ts.map +1 -1
  83. package/dist/lib/field-utils.js +7 -7
  84. package/dist/lib/field-utils.js.map +1 -1
  85. package/dist/lib/join-graph.d.ts +95 -0
  86. package/dist/lib/join-graph.d.ts.map +1 -0
  87. package/dist/lib/join-graph.js +305 -0
  88. package/dist/lib/join-graph.js.map +1 -0
  89. package/dist/lib/picker.d.ts +60 -0
  90. package/dist/lib/picker.d.ts.map +1 -0
  91. package/dist/lib/picker.js +325 -0
  92. package/dist/lib/picker.js.map +1 -0
  93. package/dist/plugins/arktype.d.ts +20 -24
  94. package/dist/plugins/arktype.d.ts.map +1 -1
  95. package/dist/plugins/arktype.js +462 -386
  96. package/dist/plugins/arktype.js.map +1 -1
  97. package/dist/plugins/effect/http.d.ts +7 -0
  98. package/dist/plugins/effect/http.d.ts.map +1 -0
  99. package/dist/plugins/effect/http.js +460 -0
  100. package/dist/plugins/effect/http.js.map +1 -0
  101. package/dist/plugins/effect/index.d.ts +22 -0
  102. package/dist/plugins/effect/index.d.ts.map +1 -0
  103. package/dist/plugins/effect/index.js +65 -0
  104. package/dist/plugins/effect/index.js.map +1 -0
  105. package/dist/plugins/effect/models.d.ts +6 -0
  106. package/dist/plugins/effect/models.d.ts.map +1 -0
  107. package/dist/plugins/effect/models.js +116 -0
  108. package/dist/plugins/effect/models.js.map +1 -0
  109. package/dist/plugins/effect/repos.d.ts +21 -0
  110. package/dist/plugins/effect/repos.d.ts.map +1 -0
  111. package/dist/plugins/effect/repos.js +131 -0
  112. package/dist/plugins/effect/repos.js.map +1 -0
  113. package/dist/plugins/effect/schemas.d.ts +7 -0
  114. package/dist/plugins/effect/schemas.d.ts.map +1 -0
  115. package/dist/plugins/effect/schemas.js +75 -0
  116. package/dist/plugins/effect/schemas.js.map +1 -0
  117. package/dist/plugins/effect/shared.d.ts +116 -0
  118. package/dist/plugins/effect/shared.d.ts.map +1 -0
  119. package/dist/plugins/effect/shared.js +164 -0
  120. package/dist/plugins/effect/shared.js.map +1 -0
  121. package/dist/plugins/http-elysia.d.ts +20 -27
  122. package/dist/plugins/http-elysia.d.ts.map +1 -1
  123. package/dist/plugins/http-elysia.js +350 -475
  124. package/dist/plugins/http-elysia.js.map +1 -1
  125. package/dist/plugins/http-express.d.ts +20 -31
  126. package/dist/plugins/http-express.d.ts.map +1 -1
  127. package/dist/plugins/http-express.js +281 -268
  128. package/dist/plugins/http-express.js.map +1 -1
  129. package/dist/plugins/http-hono.d.ts +17 -33
  130. package/dist/plugins/http-hono.d.ts.map +1 -1
  131. package/dist/plugins/http-hono.js +317 -341
  132. package/dist/plugins/http-hono.js.map +1 -1
  133. package/dist/plugins/http-orpc.d.ts +34 -33
  134. package/dist/plugins/http-orpc.d.ts.map +1 -1
  135. package/dist/plugins/http-orpc.js +345 -257
  136. package/dist/plugins/http-orpc.js.map +1 -1
  137. package/dist/plugins/http-trpc.d.ts +33 -35
  138. package/dist/plugins/http-trpc.d.ts.map +1 -1
  139. package/dist/plugins/http-trpc.js +337 -241
  140. package/dist/plugins/http-trpc.js.map +1 -1
  141. package/dist/plugins/kysely.d.ts +54 -59
  142. package/dist/plugins/kysely.d.ts.map +1 -1
  143. package/dist/plugins/kysely.js +826 -687
  144. package/dist/plugins/kysely.js.map +1 -1
  145. package/dist/plugins/sql-queries.d.ts +38 -44
  146. package/dist/plugins/sql-queries.d.ts.map +1 -1
  147. package/dist/plugins/sql-queries.js +497 -897
  148. package/dist/plugins/sql-queries.js.map +1 -1
  149. package/dist/plugins/types.d.ts +12 -20
  150. package/dist/plugins/types.d.ts.map +1 -1
  151. package/dist/plugins/types.js +84 -227
  152. package/dist/plugins/types.js.map +1 -1
  153. package/dist/plugins/valibot.d.ts +7 -44
  154. package/dist/plugins/valibot.d.ts.map +1 -1
  155. package/dist/plugins/valibot.js +376 -382
  156. package/dist/plugins/valibot.js.map +1 -1
  157. package/dist/plugins/zod.d.ts +20 -24
  158. package/dist/plugins/zod.d.ts.map +1 -1
  159. package/dist/plugins/zod.js +370 -367
  160. package/dist/plugins/zod.js.map +1 -1
  161. package/dist/runtime/emit.d.ts +64 -0
  162. package/dist/runtime/emit.d.ts.map +1 -0
  163. package/dist/runtime/emit.js +445 -0
  164. package/dist/runtime/emit.js.map +1 -0
  165. package/dist/runtime/errors.d.ts +36 -0
  166. package/dist/runtime/errors.d.ts.map +1 -0
  167. package/dist/runtime/errors.js +29 -0
  168. package/dist/runtime/errors.js.map +1 -0
  169. package/dist/runtime/file-assignment.d.ts +161 -0
  170. package/dist/runtime/file-assignment.d.ts.map +1 -0
  171. package/dist/runtime/file-assignment.js +195 -0
  172. package/dist/runtime/file-assignment.js.map +1 -0
  173. package/dist/runtime/orchestrator.d.ts +62 -0
  174. package/dist/runtime/orchestrator.d.ts.map +1 -0
  175. package/dist/runtime/orchestrator.js +99 -0
  176. package/dist/runtime/orchestrator.js.map +1 -0
  177. package/dist/runtime/registry.d.ts +268 -0
  178. package/dist/runtime/registry.d.ts.map +1 -0
  179. package/dist/runtime/registry.js +436 -0
  180. package/dist/runtime/registry.js.map +1 -0
  181. package/dist/runtime/types.d.ts +182 -0
  182. package/dist/runtime/types.d.ts.map +1 -0
  183. package/dist/runtime/types.js +2 -0
  184. package/dist/runtime/types.js.map +1 -0
  185. package/dist/runtime/validation.d.ts +41 -0
  186. package/dist/runtime/validation.d.ts.map +1 -0
  187. package/dist/runtime/validation.js +70 -0
  188. package/dist/runtime/validation.js.map +1 -0
  189. package/dist/services/config-loader.d.ts.map +1 -1
  190. package/dist/services/config-loader.js +15 -6
  191. package/dist/services/config-loader.js.map +1 -1
  192. package/dist/services/config.d.ts +55 -25
  193. package/dist/services/config.d.ts.map +1 -1
  194. package/dist/services/config.js +60 -34
  195. package/dist/services/config.js.map +1 -1
  196. package/dist/services/file-writer.d.ts +3 -3
  197. package/dist/services/file-writer.d.ts.map +1 -1
  198. package/dist/services/file-writer.js +6 -8
  199. package/dist/services/file-writer.js.map +1 -1
  200. package/dist/services/inflection.d.ts +126 -27
  201. package/dist/services/inflection.d.ts.map +1 -1
  202. package/dist/services/inflection.js +300 -72
  203. package/dist/services/inflection.js.map +1 -1
  204. package/dist/services/introspection.d.ts.map +1 -1
  205. package/dist/services/introspection.js +6 -6
  206. package/dist/services/introspection.js.map +1 -1
  207. package/dist/services/ir-builder.d.ts.map +1 -1
  208. package/dist/services/ir-builder.js +73 -77
  209. package/dist/services/ir-builder.js.map +1 -1
  210. package/dist/services/ir.d.ts.map +1 -1
  211. package/dist/services/ir.js.map +1 -1
  212. package/dist/services/pg-types.d.ts.map +1 -1
  213. package/dist/services/pg-types.js +3 -3
  214. package/dist/services/pg-types.js.map +1 -1
  215. package/dist/services/smart-tags-parser.d.ts.map +1 -1
  216. package/dist/services/smart-tags-parser.js +4 -4
  217. package/dist/services/smart-tags-parser.js.map +1 -1
  218. package/dist/services/type-hints.d.ts.map +1 -1
  219. package/dist/services/type-hints.js +1 -1
  220. package/dist/services/type-hints.js.map +1 -1
  221. package/dist/services/user-module-parser.d.ts +46 -0
  222. package/dist/services/user-module-parser.d.ts.map +1 -0
  223. package/dist/services/user-module-parser.js +181 -0
  224. package/dist/services/user-module-parser.js.map +1 -0
  225. package/dist/shared/converters.d.ts +60 -0
  226. package/dist/shared/converters.d.ts.map +1 -0
  227. package/dist/shared/converters.js +168 -0
  228. package/dist/shared/converters.js.map +1 -0
  229. package/dist/shared/query-types.d.ts +95 -0
  230. package/dist/shared/query-types.d.ts.map +1 -0
  231. package/dist/shared/query-types.js +9 -0
  232. package/dist/shared/query-types.js.map +1 -0
  233. package/dist/testing.d.ts +125 -37
  234. package/dist/testing.d.ts.map +1 -1
  235. package/dist/testing.js +134 -42
  236. package/dist/testing.js.map +1 -1
  237. package/dist/user-module.d.ts +86 -0
  238. package/dist/user-module.d.ts.map +1 -0
  239. package/dist/user-module.js +55 -0
  240. package/dist/user-module.js.map +1 -0
  241. package/package.json +10 -6
  242. package/dist/lib/conjure.d.ts.map +0 -1
  243. package/dist/lib/conjure.js.map +0 -1
  244. package/dist/lib/hex.d.ts +0 -119
  245. package/dist/lib/hex.d.ts.map +0 -1
  246. package/dist/lib/hex.js +0 -188
  247. package/dist/lib/hex.js.map +0 -1
  248. package/dist/plugins/effect.d.ts +0 -53
  249. package/dist/plugins/effect.d.ts.map +0 -1
  250. package/dist/plugins/effect.js +0 -1074
  251. package/dist/plugins/effect.js.map +0 -1
  252. package/dist/plugins/kysely/queries.d.ts +0 -92
  253. package/dist/plugins/kysely/queries.d.ts.map +0 -1
  254. package/dist/plugins/kysely/queries.js +0 -1169
  255. package/dist/plugins/kysely/queries.js.map +0 -1
  256. package/dist/plugins/kysely/shared.d.ts +0 -59
  257. package/dist/plugins/kysely/shared.d.ts.map +0 -1
  258. package/dist/plugins/kysely/shared.js +0 -247
  259. package/dist/plugins/kysely/shared.js.map +0 -1
  260. package/dist/plugins/kysely/types.d.ts +0 -22
  261. package/dist/plugins/kysely/types.d.ts.map +0 -1
  262. package/dist/plugins/kysely/types.js +0 -428
  263. package/dist/plugins/kysely/types.js.map +0 -1
  264. package/dist/services/artifact-store.d.ts +0 -65
  265. package/dist/services/artifact-store.d.ts.map +0 -1
  266. package/dist/services/artifact-store.js +0 -57
  267. package/dist/services/artifact-store.js.map +0 -1
  268. package/dist/services/core-providers.d.ts +0 -15
  269. package/dist/services/core-providers.d.ts.map +0 -1
  270. package/dist/services/core-providers.js +0 -23
  271. package/dist/services/core-providers.js.map +0 -1
  272. package/dist/services/emissions.d.ts +0 -103
  273. package/dist/services/emissions.d.ts.map +0 -1
  274. package/dist/services/emissions.js +0 -241
  275. package/dist/services/emissions.js.map +0 -1
  276. package/dist/services/execution.d.ts +0 -35
  277. package/dist/services/execution.d.ts.map +0 -1
  278. package/dist/services/execution.js +0 -86
  279. package/dist/services/execution.js.map +0 -1
  280. package/dist/services/file-builder.d.ts +0 -85
  281. package/dist/services/file-builder.d.ts.map +0 -1
  282. package/dist/services/file-builder.js +0 -112
  283. package/dist/services/file-builder.js.map +0 -1
  284. package/dist/services/plugin-meta.d.ts +0 -33
  285. package/dist/services/plugin-meta.d.ts.map +0 -1
  286. package/dist/services/plugin-meta.js +0 -24
  287. package/dist/services/plugin-meta.js.map +0 -1
  288. package/dist/services/plugin-runner.d.ts +0 -42
  289. package/dist/services/plugin-runner.d.ts.map +0 -1
  290. package/dist/services/plugin-runner.js +0 -84
  291. package/dist/services/plugin-runner.js.map +0 -1
  292. package/dist/services/plugin.d.ts +0 -421
  293. package/dist/services/plugin.d.ts.map +0 -1
  294. package/dist/services/plugin.js +0 -197
  295. package/dist/services/plugin.js.map +0 -1
  296. package/dist/services/resolution.d.ts +0 -38
  297. package/dist/services/resolution.d.ts.map +0 -1
  298. package/dist/services/resolution.js +0 -242
  299. package/dist/services/resolution.js.map +0 -1
  300. package/dist/services/service-registry.d.ts +0 -74
  301. package/dist/services/service-registry.d.ts.map +0 -1
  302. package/dist/services/service-registry.js +0 -61
  303. package/dist/services/service-registry.js.map +0 -1
  304. package/dist/services/symbols.d.ts +0 -144
  305. package/dist/services/symbols.d.ts.map +0 -1
  306. package/dist/services/symbols.js +0 -144
  307. package/dist/services/symbols.js.map +0 -1
@@ -1,103 +0,0 @@
1
- /**
2
- * Emission Buffer Service
3
- *
4
- * Buffers code emissions from plugins before writing to disk.
5
- * Supports both string content and AST nodes (serialized by the plugin runner).
6
- * AST emissions to the same file are merged automatically.
7
- */
8
- import { Context, Effect, Layer } from "effect";
9
- import type { namedTypes as n } from "ast-types";
10
- import { EmitConflict } from "../errors.js";
11
- import type { ImportRef } from "./file-builder.js";
12
- import type { SymbolRegistry } from "./symbols.js";
13
- /**
14
- * Emission entry - a single file to be written
15
- */
16
- export interface EmissionEntry {
17
- readonly path: string;
18
- readonly content: string;
19
- readonly plugin: string;
20
- }
21
- /**
22
- * AST emission entry - buffered until serialization
23
- */
24
- export interface AstEmissionEntry {
25
- readonly path: string;
26
- readonly ast: n.Program;
27
- readonly plugin: string;
28
- /** Optional header to prepend (e.g., comments) */
29
- readonly header?: string;
30
- /** Import requests to resolve during serialization */
31
- readonly imports?: readonly ImportRef[];
32
- }
33
- /**
34
- * Unresolved symbol reference - tracked during import resolution
35
- */
36
- export interface UnresolvedRef {
37
- readonly capability: string;
38
- readonly entity: string;
39
- readonly shape?: string;
40
- readonly plugin: string;
41
- readonly file: string;
42
- }
43
- /**
44
- * Emission buffer interface
45
- */
46
- export interface EmissionBuffer {
47
- /**
48
- * Emit string content to a file (buffered)
49
- */
50
- readonly emit: (path: string, content: string, plugin: string) => void;
51
- /**
52
- * Emit an AST program to a file (buffered, serialized later by runner)
53
- * Multiple emissions to the same path are merged automatically.
54
- */
55
- readonly emitAst: (path: string, ast: n.Program, plugin: string, header?: string, imports?: readonly ImportRef[]) => void;
56
- /**
57
- * Append to an already-emitted file (same plugin only, string emissions only)
58
- */
59
- readonly appendEmit: (path: string, content: string, plugin: string) => void;
60
- /**
61
- * Get all string emissions
62
- */
63
- readonly getAll: () => readonly EmissionEntry[];
64
- /**
65
- * Get all AST emissions (for serialization by runner)
66
- */
67
- readonly getAstEmissions: () => readonly AstEmissionEntry[];
68
- /**
69
- * Serialize all AST emissions to string emissions.
70
- * Called by the plugin runner after all plugins have run.
71
- * Resolves imports via the provided SymbolRegistry.
72
- */
73
- readonly serializeAst: (serialize: (ast: n.Program) => string, symbols: SymbolRegistry) => void;
74
- /**
75
- * Check for conflicts (same path from different plugins for string emissions)
76
- * Note: AST emissions are merged, not conflicted.
77
- */
78
- readonly validate: () => Effect.Effect<void, EmitConflict>;
79
- /**
80
- * Get unresolved symbol references (populated during serializeAst)
81
- */
82
- readonly getUnresolvedRefs: () => readonly UnresolvedRef[];
83
- /**
84
- * Clear all emissions
85
- */
86
- readonly clear: () => void;
87
- }
88
- declare const Emissions_base: Context.TagClass<Emissions, "Emissions", EmissionBuffer>;
89
- /**
90
- * EmissionBuffer service tag
91
- */
92
- export declare class Emissions extends Emissions_base {
93
- }
94
- /**
95
- * Create a new emission buffer
96
- */
97
- export declare function createEmissionBuffer(): EmissionBuffer;
98
- /**
99
- * Live layer - creates fresh emission buffer per use
100
- */
101
- export declare const EmissionsLive: Layer.Layer<Emissions, never, never>;
102
- export {};
103
- //# sourceMappingURL=emissions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emissions.d.ts","sourceRoot":"","sources":["../../src/services/emissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAEL,OAAO,EACP,MAAM,EACN,KAAK,EAKN,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;AAOjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,CAAC,OAAO,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,KAC3B,IAAI,CAAC;IAEV;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7E;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAEhD;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,SAAS,gBAAgB,EAAE,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAEhG;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAAqD;CAAG;AA0MvF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CA+IrD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,sCAAsD,CAAC"}
@@ -1,241 +0,0 @@
1
- /**
2
- * Emission Buffer Service
3
- *
4
- * Buffers code emissions from plugins before writing to disk.
5
- * Supports both string content and AST nodes (serialized by the plugin runner).
6
- * AST emissions to the same file are merged automatically.
7
- */
8
- import { Array as Arr, Context, Effect, Layer, MutableHashMap, MutableHashSet, Option, pipe, } from "effect";
9
- import { EmitConflict } from "../errors.js";
10
- /**
11
- * EmissionBuffer service tag
12
- */
13
- export class Emissions extends Context.Tag("Emissions")() {
14
- }
15
- // =============================================================================
16
- // Import Resolution Helpers
17
- // =============================================================================
18
- import recast from "recast";
19
- const b = recast.types.builders;
20
- /** Normalize path for comparison (remove leading ./) */
21
- const normalizePath = (path) => path.replace(/^\.\//, "");
22
- /** Resolve an ImportRef to source/named/types/default/namespace */
23
- function resolveImportRef(ref, forFile, symbols, onUnresolved) {
24
- switch (ref.kind) {
25
- case "symbol": {
26
- const symbol = symbols.resolve(ref.ref);
27
- if (!symbol) {
28
- onUnresolved?.(ref, forFile);
29
- return undefined;
30
- }
31
- // Skip import if symbol is in the same file (already declared locally)
32
- if (normalizePath(symbol.file) === normalizePath(forFile))
33
- return undefined;
34
- const importStmt = symbols.importFor(symbol, forFile);
35
- const base = {
36
- source: importStmt.from,
37
- named: [...importStmt.named],
38
- types: [...importStmt.types],
39
- };
40
- return importStmt.default !== undefined
41
- ? { ...base, defaultImport: importStmt.default }
42
- : base;
43
- }
44
- case "package":
45
- case "relative": {
46
- const base = {
47
- source: ref.from,
48
- named: ref.names ? [...ref.names] : [],
49
- types: ref.types ? [...ref.types] : [],
50
- namespace: ref.namespace,
51
- };
52
- return ref.default !== undefined ? { ...base, defaultImport: ref.default } : base;
53
- }
54
- }
55
- }
56
- /**
57
- * Resolve imports and prepend import statements to AST
58
- */
59
- function prependImports(ast, imports, forFile, symbols, onUnresolved) {
60
- // Group imports by source path for merging
61
- const bySource = pipe(imports, Arr.reduce(new Map(), (map, ref) => {
62
- const resolved = resolveImportRef(ref, forFile, symbols, onUnresolved);
63
- if (!resolved)
64
- return map;
65
- const { source, named, types, defaultImport, namespace } = resolved;
66
- const existing = map.get(source) ?? { named: new Set(), types: new Set() };
67
- named.forEach(n => existing.named.add(n));
68
- types.forEach(t => existing.types.add(t));
69
- if (defaultImport)
70
- existing.default = defaultImport;
71
- if (namespace)
72
- existing.namespace = namespace;
73
- map.set(source, existing);
74
- return map;
75
- }));
76
- const statements = pipe([...bySource.entries()], Arr.flatMap(([source, { named, types, default: defaultImport, namespace }]) => {
77
- const result = [];
78
- // Namespace import: import * as foo from "..."
79
- if (namespace) {
80
- const namespaceSpecifier = b.importNamespaceSpecifier(b.identifier(namespace));
81
- result.push(b.importDeclaration([namespaceSpecifier], b.stringLiteral(source)));
82
- }
83
- // Value imports (default + named) - only if no namespace import for this source
84
- if (!namespace) {
85
- const valueSpecifiers = [
86
- ...(defaultImport ? [b.importDefaultSpecifier(b.identifier(defaultImport))] : []),
87
- ...pipe([...named], Arr.map(name => b.importSpecifier(b.identifier(name), b.identifier(name)))),
88
- ];
89
- if (valueSpecifiers.length > 0) {
90
- result.push(b.importDeclaration(valueSpecifiers, b.stringLiteral(source)));
91
- }
92
- }
93
- // Type imports as a separate type-only import declaration
94
- if (types.size > 0) {
95
- const typeSpecifiers = pipe([...types], Arr.map(name => b.importSpecifier(b.identifier(name), b.identifier(name))));
96
- const typeImport = b.importDeclaration(typeSpecifiers, b.stringLiteral(source));
97
- typeImport.importKind = "type";
98
- result.push(typeImport);
99
- }
100
- return result;
101
- }));
102
- // Prepend imports to program body
103
- return b.program([...statements, ...ast.body]);
104
- }
105
- // =============================================================================
106
- // AST Emission Merging (Pure Functions)
107
- // =============================================================================
108
- /** Merge two import arrays */
109
- const mergeImports = (a, b) => [
110
- ...(a ?? []),
111
- ...(b ?? []),
112
- ];
113
- /** Merge two plugin attribution strings */
114
- const mergePluginAttribution = (a, b) => `${a}, ${b}`;
115
- /** Create an AST entry, only including optional fields when defined */
116
- const makeAstEntry = (path, ast, plugin, header, imports) => pipe({ path, ast, plugin }, entry => (header !== undefined ? { ...entry, header } : entry), entry => (imports && imports.length > 0 ? { ...entry, imports } : entry));
117
- /** Merge a new emission into an existing one (keeps first header) */
118
- const mergeAstEntries = (existing, ast, plugin, _header, imports) => makeAstEntry(existing.path, b.program([...existing.ast.body, ...ast.body]), mergePluginAttribution(existing.plugin, plugin), existing.header, mergeImports(existing.imports, imports));
119
- // =============================================================================
120
- // Output Formatting (Pure Functions)
121
- // =============================================================================
122
- /** Ensure exactly one blank line before each export statement */
123
- const ensureBlankLinesBeforeExports = (code) => code
124
- .split("\n")
125
- .reduce((acc, line) => {
126
- const prevLine = acc[acc.length - 1];
127
- const needsBlankLine = line.startsWith("export ") && prevLine !== undefined && prevLine !== "";
128
- return needsBlankLine ? [...acc, "", line] : [...acc, line];
129
- }, [])
130
- .join("\n");
131
- // =============================================================================
132
- // Emission Buffer Implementation
133
- // =============================================================================
134
- /**
135
- * Create a new emission buffer
136
- */
137
- export function createEmissionBuffer() {
138
- const emissions = MutableHashMap.empty();
139
- const astEmissions = MutableHashMap.empty();
140
- // Track plugins per path for string emission conflict detection
141
- const stringEmitPlugins = MutableHashMap.empty();
142
- // Track unresolved symbol references during import resolution
143
- const unresolvedRefs = [];
144
- return {
145
- emit: (path, content, plugin) => {
146
- // Track plugin for conflict detection
147
- MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
148
- onNone: () => Option.some(MutableHashSet.make(plugin)),
149
- onSome: set => Option.some(MutableHashSet.add(set, plugin)),
150
- }));
151
- MutableHashMap.set(emissions, path, { path, content, plugin });
152
- },
153
- emitAst: (path, ast, plugin, header, imports) => {
154
- MutableHashMap.modifyAt(astEmissions, path, Option.match({
155
- onNone: () => Option.some(makeAstEntry(path, ast, plugin, header, imports)),
156
- onSome: existing => Option.some(mergeAstEntries(existing, ast, plugin, header, imports)),
157
- }));
158
- },
159
- appendEmit: (path, content, plugin) => {
160
- pipe(MutableHashMap.get(emissions, path), Option.match({
161
- onNone: () => {
162
- MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
163
- onNone: () => Option.some(MutableHashSet.make(plugin)),
164
- onSome: set => Option.some(MutableHashSet.add(set, plugin)),
165
- }));
166
- MutableHashMap.set(emissions, path, { path, content, plugin });
167
- },
168
- onSome: existing => {
169
- if (existing.plugin === plugin) {
170
- MutableHashMap.set(emissions, path, {
171
- path,
172
- content: existing.content + content,
173
- plugin,
174
- });
175
- }
176
- else {
177
- // Track conflict for validation
178
- MutableHashMap.modifyAt(stringEmitPlugins, path, Option.match({
179
- onNone: () => Option.some(MutableHashSet.make(plugin)),
180
- onSome: set => Option.some(MutableHashSet.add(set, plugin)),
181
- }));
182
- }
183
- },
184
- }));
185
- },
186
- getAll: () => MutableHashMap.values(emissions),
187
- getAstEmissions: () => MutableHashMap.values(astEmissions),
188
- serializeAst: (serialize, symbols) => {
189
- for (const entry of MutableHashMap.values(astEmissions)) {
190
- // Generate import statements as code first
191
- const importCode = entry.imports && entry.imports.length > 0
192
- ? serialize(prependImports(recast.types.builders.program([]), entry.imports, entry.path, symbols,
193
- // Track unresolved refs with plugin context
194
- (ref, file) => {
195
- unresolvedRefs.push({
196
- capability: ref.ref.capability,
197
- entity: ref.ref.entity,
198
- shape: ref.ref.shape,
199
- plugin: entry.plugin,
200
- file,
201
- });
202
- })) + "\n\n"
203
- : "";
204
- // Serialize the main AST body and ensure blank lines before exports
205
- const bodyCode = serialize(entry.ast);
206
- const formattedBody = ensureBlankLinesBeforeExports(bodyCode);
207
- // Order: header → imports → body
208
- const content = (entry.header ? entry.header : "") + importCode + formattedBody;
209
- MutableHashMap.set(emissions, entry.path, {
210
- path: entry.path,
211
- content,
212
- plugin: entry.plugin,
213
- });
214
- }
215
- MutableHashMap.clear(astEmissions);
216
- },
217
- validate: () => pipe([...stringEmitPlugins], Arr.findFirst(([_, plugins]) => MutableHashSet.size(plugins) > 1), Option.match({
218
- onNone: () => Effect.void,
219
- onSome: ([path, plugins]) => {
220
- const pluginList = [...plugins].join(", ");
221
- return Effect.fail(new EmitConflict({
222
- message: `Multiple plugins emitted to the same file: ${path} (plugins: ${pluginList})`,
223
- path,
224
- plugins: [...plugins],
225
- }));
226
- },
227
- })),
228
- getUnresolvedRefs: () => [...unresolvedRefs],
229
- clear: () => {
230
- MutableHashMap.clear(emissions);
231
- MutableHashMap.clear(astEmissions);
232
- MutableHashMap.clear(stringEmitPlugins);
233
- unresolvedRefs.length = 0;
234
- },
235
- };
236
- }
237
- /**
238
- * Live layer - creates fresh emission buffer per use
239
- */
240
- export const EmissionsLive = Layer.sync(Emissions, () => createEmissionBuffer());
241
- //# sourceMappingURL=emissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emissions.js","sourceRoot":"","sources":["../../src/services/emissions.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Execution Phase
3
- *
4
- * Executes providers in topological order, populating deferred resources.
5
- */
6
- import { Effect } from "effect";
7
- import type { FileBuilder } from "./file-builder.js";
8
- import type { SymbolRegistry } from "./symbols.js";
9
- import type { SemanticIR } from "../ir/semantic-ir.js";
10
- import type { TypeHintRegistry } from "./type-hints.js";
11
- import type { CoreInflection } from "./inflection.js";
12
- import type { ServiceRegistry } from "./service-registry.js";
13
- import { type PluginRegistry, PluginExecutionFailed } from "./plugin.js";
14
- import { type ExecutionPlan } from "./resolution.js";
15
- /**
16
- * Services needed for execution.
17
- */
18
- export interface ExecutionServices {
19
- readonly fileBuilder: (path: string) => FileBuilder;
20
- readonly symbols: SymbolRegistry;
21
- readonly ir: SemanticIR;
22
- readonly typeHints: TypeHintRegistry;
23
- readonly inflection: CoreInflection;
24
- readonly serviceRegistry: ServiceRegistry;
25
- }
26
- /**
27
- * Execute all providers in the execution plan.
28
- *
29
- * @param plan - Topologically sorted execution plan from resolution phase
30
- * @param registry - Provider registry with pending requests
31
- * @param services - File builder and symbol registry
32
- * @returns Effect that completes when all providers have executed
33
- */
34
- export declare const execute: (plan: ExecutionPlan, registry: PluginRegistry, services: ExecutionServices) => Effect.Effect<void, PluginExecutionFailed>;
35
- //# sourceMappingURL=execution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAQ,MAAM,EAAyB,MAAM,QAAQ,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAIL,KAAK,cAAc,EAEnB,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,iBAAiB,CAAA;AAoB1E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;CAC1C;AAsFD;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAClB,MAAM,aAAa,EACnB,UAAU,cAAc,EACxB,UAAU,iBAAiB,KAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAgBzC,CAAA"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Execution Phase
3
- *
4
- * Executes providers in topological order, populating deferred resources.
5
- */
6
- import { Data, Effect, HashMap, Option, pipe } from "effect";
7
- import { PluginExecutionFailed, } from "./plugin.js";
8
- const makeResultKey = (kind, params) => Data.struct({
9
- kind,
10
- paramsJson: JSON.stringify(params ?? {}),
11
- });
12
- // ============================================================================
13
- // Execution
14
- // ============================================================================
15
- /**
16
- * Execute a single provider step.
17
- */
18
- const executeStep = (step, resultCache, services) => {
19
- // Gather dependency results
20
- const depResults = step.dependencies.map((dep) => {
21
- const key = makeResultKey(dep.kind, dep.params);
22
- return pipe(HashMap.get(resultCache, key), Option.getOrThrow // Dependencies should already be resolved
23
- );
24
- });
25
- // Build provider context
26
- const ctx = {
27
- ir: services.ir,
28
- typeHints: services.typeHints,
29
- inflection: services.inflection,
30
- registerHandler: (kind, handler) => {
31
- // Store handler in the service registry
32
- // We wrap it to make it callable via services.get()
33
- services.serviceRegistry.register(kind, handler);
34
- },
35
- request: (kind, params) => {
36
- // First check if there's a registered handler
37
- const handler = services.serviceRegistry.get(kind);
38
- if (handler) {
39
- return handler(params, ctx);
40
- }
41
- // Fall back to static result cache
42
- const key = makeResultKey(kind, params);
43
- return pipe(HashMap.get(resultCache, key), Option.getOrThrow);
44
- },
45
- file: services.fileBuilder,
46
- symbols: services.symbols,
47
- };
48
- // Execute the plugin
49
- return Effect.try({
50
- try: () => step.provider.provide(step.params, depResults, ctx),
51
- catch: (cause) => new PluginExecutionFailed({
52
- message: `Plugin "${step.provider.name}" failed: ${cause instanceof Error ? cause.message : String(cause)}`,
53
- plugin: step.provider.name,
54
- kind: step.kind,
55
- params: step.params,
56
- cause,
57
- }),
58
- });
59
- };
60
- /**
61
- * Populate deferred resources from the result cache.
62
- */
63
- const populateDeferreds = (pendingRequests, resultCache) => {
64
- for (const req of pendingRequests) {
65
- const key = makeResultKey(req.kind, req.params);
66
- const result = pipe(HashMap.get(resultCache, key), Option.getOrUndefined);
67
- if (result !== undefined) {
68
- const mutable = req.deferred;
69
- mutable.resolved = true;
70
- mutable.value = result;
71
- }
72
- }
73
- };
74
- /**
75
- * Execute all providers in the execution plan.
76
- *
77
- * @param plan - Topologically sorted execution plan from resolution phase
78
- * @param registry - Provider registry with pending requests
79
- * @param services - File builder and symbol registry
80
- * @returns Effect that completes when all providers have executed
81
- */
82
- export const execute = (plan, registry, services) => Effect.reduce(plan.steps, HashMap.empty(), (cache, step) => executeStep(step, cache, services).pipe(Effect.map((result) => {
83
- const key = makeResultKey(step.kind, step.params);
84
- return HashMap.set(cache, key, result);
85
- }))).pipe(Effect.tap((cache) => Effect.sync(() => populateDeferreds(registry.getPendingRequests(), cache))), Effect.asVoid);
86
- //# sourceMappingURL=execution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- import type { namedTypes as n } from "ast-types";
2
- import type { SymbolProgram } from "../lib/conjure.js";
3
- import type { EmissionBuffer } from "./emissions.js";
4
- import type { SymbolRegistry } from "./symbols.js";
5
- /**
6
- * Reference to a symbol from another file (resolved via SymbolRegistry)
7
- */
8
- export interface SymbolImportRef {
9
- readonly kind: "symbol";
10
- readonly ref: {
11
- readonly capability: string;
12
- readonly entity: string;
13
- readonly shape?: string;
14
- };
15
- }
16
- /**
17
- * Import from an external package
18
- */
19
- export interface PackageImportRef {
20
- readonly kind: "package";
21
- readonly names?: readonly string[];
22
- readonly types?: readonly string[];
23
- readonly default?: string;
24
- /** Namespace import: import * as <namespace> from "..." */
25
- readonly namespace?: string;
26
- readonly from: string;
27
- }
28
- /**
29
- * Import from a relative path (not tracked in SymbolRegistry)
30
- */
31
- export interface RelativeImportRef {
32
- readonly kind: "relative";
33
- readonly names?: readonly string[];
34
- readonly types?: readonly string[];
35
- readonly default?: string;
36
- /** Namespace import: import * as <namespace> from "..." */
37
- readonly namespace?: string;
38
- readonly from: string;
39
- }
40
- /**
41
- * All import reference types
42
- */
43
- export type ImportRef = SymbolImportRef | PackageImportRef | RelativeImportRef;
44
- /**
45
- * Fluent builder for constructing files with imports, headers, and AST content
46
- */
47
- export interface FileBuilder {
48
- /**
49
- * Add a header comment or statements to the file
50
- * Can be called multiple times - headers are concatenated
51
- */
52
- header(content: string | readonly n.Statement[]): FileBuilder;
53
- /**
54
- * Request an import (resolved after all plugins run)
55
- */
56
- import(ref: ImportRef): FileBuilder;
57
- /**
58
- * Add AST content to the file
59
- * Can be called multiple times - bodies are concatenated
60
- * Extracts symbols from SymbolProgram automatically
61
- */
62
- ast(program: n.Program | SymbolProgram): FileBuilder;
63
- /**
64
- * Add raw string content (mutually exclusive with ast())
65
- */
66
- content(text: string): FileBuilder;
67
- /**
68
- * Finalize and emit the file
69
- * Registers symbols and queues for serialization
70
- */
71
- emit(): void;
72
- }
73
- /**
74
- * Create a FileBuilder instance
75
- */
76
- export declare function createFileBuilder(path: string, plugin: string, emissions: EmissionBuffer, symbolRegistry: SymbolRegistry): FileBuilder;
77
- /**
78
- * Factory function type for creating FileBuilders
79
- */
80
- export type FileBuilderFactory = (path: string) => FileBuilder;
81
- /**
82
- * Create a factory that produces FileBuilders with shared context
83
- */
84
- export declare function createFileBuilderFactory(plugin: string, emissions: EmissionBuffer, symbolRegistry: SymbolRegistry): FileBuilderFactory;
85
- //# sourceMappingURL=file-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-builder.d.ts","sourceRoot":"","sources":["../../src/services/file-builder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,cAAc,CAAA;AAM1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;AAM9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAA;IAE7D;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAA;IAEnC;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,aAAa,GAAG,WAAW,CAAA;IAEpD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAElC;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAA;CACb;AA0BD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,cAAc,GAC7B,WAAW,CA2Gb;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAA;AAE9D;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,cAAc,GAC7B,kBAAkB,CAGpB"}