@quereus/quereus 4.11.0 → 4.12.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 (451) hide show
  1. package/dist/src/common/type-inference.d.ts +12 -6
  2. package/dist/src/common/type-inference.d.ts.map +1 -1
  3. package/dist/src/common/type-inference.js +12 -24
  4. package/dist/src/common/type-inference.js.map +1 -1
  5. package/dist/src/core/database-assertions.d.ts.map +1 -1
  6. package/dist/src/core/database-assertions.js +7 -5
  7. package/dist/src/core/database-assertions.js.map +1 -1
  8. package/dist/src/core/database-events.d.ts +4 -3
  9. package/dist/src/core/database-events.d.ts.map +1 -1
  10. package/dist/src/core/database-events.js +4 -3
  11. package/dist/src/core/database-events.js.map +1 -1
  12. package/dist/src/core/database-materialized-views-analysis.d.ts +1 -3
  13. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
  14. package/dist/src/core/database-materialized-views-analysis.js +1 -11
  15. package/dist/src/core/database-materialized-views-analysis.js.map +1 -1
  16. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.js +12 -10
  18. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  19. package/dist/src/core/database.d.ts.map +1 -1
  20. package/dist/src/core/database.js +13 -2
  21. package/dist/src/core/database.js.map +1 -1
  22. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  23. package/dist/src/core/derived-row-validator.js +14 -2
  24. package/dist/src/core/derived-row-validator.js.map +1 -1
  25. package/dist/src/core/param.d.ts +9 -0
  26. package/dist/src/core/param.d.ts.map +1 -1
  27. package/dist/src/core/param.js +21 -1
  28. package/dist/src/core/param.js.map +1 -1
  29. package/dist/src/core/statement.d.ts.map +1 -1
  30. package/dist/src/core/statement.js +38 -15
  31. package/dist/src/core/statement.js.map +1 -1
  32. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  33. package/dist/src/func/builtins/aggregate.js +7 -2
  34. package/dist/src/func/builtins/aggregate.js.map +1 -1
  35. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  36. package/dist/src/func/builtins/builtin-window-functions.js +27 -11
  37. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  38. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  39. package/dist/src/func/builtins/datetime.js +8 -3
  40. package/dist/src/func/builtins/datetime.js.map +1 -1
  41. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  42. package/dist/src/func/builtins/explain.js +9 -29
  43. package/dist/src/func/builtins/explain.js.map +1 -1
  44. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
  45. package/dist/src/func/builtins/json-tvf.js +14 -7
  46. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  47. package/dist/src/func/builtins/return-types.d.ts +29 -0
  48. package/dist/src/func/builtins/return-types.d.ts.map +1 -1
  49. package/dist/src/func/builtins/return-types.js +4 -1
  50. package/dist/src/func/builtins/return-types.js.map +1 -1
  51. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  52. package/dist/src/func/builtins/scalar.js +22 -67
  53. package/dist/src/func/builtins/scalar.js.map +1 -1
  54. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  55. package/dist/src/func/builtins/schema.js +26 -16
  56. package/dist/src/func/builtins/schema.js.map +1 -1
  57. package/dist/src/index.d.ts +1 -1
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +6 -1
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parser/parser.d.ts.map +1 -1
  62. package/dist/src/parser/parser.js +5 -3
  63. package/dist/src/parser/parser.js.map +1 -1
  64. package/dist/src/parser/visitor.d.ts +16 -0
  65. package/dist/src/parser/visitor.d.ts.map +1 -1
  66. package/dist/src/parser/visitor.js +16 -0
  67. package/dist/src/parser/visitor.js.map +1 -1
  68. package/dist/src/planner/analysis/assertion-plan.d.ts +33 -0
  69. package/dist/src/planner/analysis/assertion-plan.d.ts.map +1 -0
  70. package/dist/src/planner/analysis/assertion-plan.js +39 -0
  71. package/dist/src/planner/analysis/assertion-plan.js.map +1 -0
  72. package/dist/src/planner/analysis/binary-operator-class.d.ts +55 -0
  73. package/dist/src/planner/analysis/binary-operator-class.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/binary-operator-class.js +57 -0
  75. package/dist/src/planner/analysis/binary-operator-class.js.map +1 -0
  76. package/dist/src/planner/analysis/binding-extractor.d.ts +9 -3
  77. package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/binding-extractor.js +11 -16
  79. package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/change-scope.js +19 -6
  82. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  83. package/dist/src/planner/analysis/check-extraction.d.ts +1 -7
  84. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  85. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  86. package/dist/src/planner/analysis/comparison-collation.d.ts +17 -0
  87. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  88. package/dist/src/planner/analysis/comparison-collation.js +17 -5
  89. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  90. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  91. package/dist/src/planner/analysis/constraint-extractor.js +18 -18
  92. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  93. package/dist/src/planner/analysis/coverage-prover.d.ts +11 -7
  94. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  95. package/dist/src/planner/analysis/coverage-prover.js +11 -7
  96. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  97. package/dist/src/planner/analysis/equi-correlation.d.ts +1 -1
  98. package/dist/src/planner/analysis/equi-correlation.js +1 -1
  99. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  100. package/dist/src/planner/analysis/expression-fingerprint.js +0 -2
  101. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  102. package/dist/src/planner/analysis/key-filter.d.ts.map +1 -1
  103. package/dist/src/planner/analysis/key-filter.js +2 -3
  104. package/dist/src/planner/analysis/key-filter.js.map +1 -1
  105. package/dist/src/planner/analysis/relation-key.d.ts +104 -0
  106. package/dist/src/planner/analysis/relation-key.d.ts.map +1 -0
  107. package/dist/src/planner/analysis/relation-key.js +121 -0
  108. package/dist/src/planner/analysis/relation-key.js.map +1 -0
  109. package/dist/src/planner/analysis/scalar-param-usage.d.ts.map +1 -1
  110. package/dist/src/planner/analysis/scalar-param-usage.js +12 -4
  111. package/dist/src/planner/analysis/scalar-param-usage.js.map +1 -1
  112. package/dist/src/planner/analysis/set-op-type-merge.d.ts +9 -3
  113. package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -1
  114. package/dist/src/planner/analysis/set-op-type-merge.js +22 -8
  115. package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -1
  116. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  117. package/dist/src/planner/building/alter-table.js +31 -23
  118. package/dist/src/planner/building/alter-table.js.map +1 -1
  119. package/dist/src/planner/building/analyze.d.ts.map +1 -1
  120. package/dist/src/planner/building/analyze.js +21 -0
  121. package/dist/src/planner/building/analyze.js.map +1 -1
  122. package/dist/src/planner/building/block.d.ts.map +1 -1
  123. package/dist/src/planner/building/block.js +222 -82
  124. package/dist/src/planner/building/block.js.map +1 -1
  125. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  126. package/dist/src/planner/building/constraint-builder.js +5 -3
  127. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  128. package/dist/src/planner/building/delete.js +1 -1
  129. package/dist/src/planner/building/delete.js.map +1 -1
  130. package/dist/src/planner/building/expression.d.ts.map +1 -1
  131. package/dist/src/planner/building/expression.js +11 -3
  132. package/dist/src/planner/building/expression.js.map +1 -1
  133. package/dist/src/planner/building/foreign-key-builder.d.ts +16 -6
  134. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  135. package/dist/src/planner/building/foreign-key-builder.js +43 -20
  136. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  137. package/dist/src/planner/building/generated-column-scope.d.ts +58 -0
  138. package/dist/src/planner/building/generated-column-scope.d.ts.map +1 -0
  139. package/dist/src/planner/building/generated-column-scope.js +117 -0
  140. package/dist/src/planner/building/generated-column-scope.js.map +1 -0
  141. package/dist/src/planner/building/insert.d.ts.map +1 -1
  142. package/dist/src/planner/building/insert.js +20 -28
  143. package/dist/src/planner/building/insert.js.map +1 -1
  144. package/dist/src/planner/building/select-aggregates.d.ts +73 -132
  145. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  146. package/dist/src/planner/building/select-aggregates.js +405 -81
  147. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  148. package/dist/src/planner/building/select-modifiers.d.ts +37 -8
  149. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  150. package/dist/src/planner/building/select-modifiers.js +8 -9
  151. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  152. package/dist/src/planner/building/select-ordinal.d.ts +6 -0
  153. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  154. package/dist/src/planner/building/select-ordinal.js +1 -1
  155. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  156. package/dist/src/planner/building/select-window.d.ts +2 -2
  157. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  158. package/dist/src/planner/building/select-window.js +82 -101
  159. package/dist/src/planner/building/select-window.js.map +1 -1
  160. package/dist/src/planner/building/select.d.ts.map +1 -1
  161. package/dist/src/planner/building/select.js +78 -33
  162. package/dist/src/planner/building/select.js.map +1 -1
  163. package/dist/src/planner/building/update.d.ts.map +1 -1
  164. package/dist/src/planner/building/update.js +14 -8
  165. package/dist/src/planner/building/update.js.map +1 -1
  166. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  167. package/dist/src/planner/building/view-mutation-builder.js +329 -14
  168. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  169. package/dist/src/planner/building/with.d.ts +6 -0
  170. package/dist/src/planner/building/with.d.ts.map +1 -1
  171. package/dist/src/planner/building/with.js +52 -3
  172. package/dist/src/planner/building/with.js.map +1 -1
  173. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  174. package/dist/src/planner/cache/correlation-detector.js +44 -17
  175. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  176. package/dist/src/planner/framework/physical-utils.d.ts +6 -0
  177. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  178. package/dist/src/planner/framework/physical-utils.js +6 -0
  179. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  180. package/dist/src/planner/mutation/lens-enforcement.d.ts +123 -0
  181. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  182. package/dist/src/planner/mutation/lens-enforcement.js +362 -5
  183. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  184. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  185. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  186. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  187. package/dist/src/planner/nodes/alter-table-node.d.ts +15 -11
  188. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  189. package/dist/src/planner/nodes/alter-table-node.js +5 -0
  190. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  191. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/bloom-join-node.js +7 -0
  193. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  194. package/dist/src/planner/nodes/constraint-check-node.d.ts +16 -0
  195. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  197. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
  198. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/plan-node-type.js +1 -1
  200. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  201. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/pragma.js +5 -2
  203. package/dist/src/planner/nodes/pragma.js.map +1 -1
  204. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/reference.js +9 -1
  206. package/dist/src/planner/nodes/reference.js.map +1 -1
  207. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  208. package/dist/src/planner/nodes/scalar.js +117 -91
  209. package/dist/src/planner/nodes/scalar.js.map +1 -1
  210. package/dist/src/planner/nodes/sequence-node.d.ts +50 -0
  211. package/dist/src/planner/nodes/sequence-node.d.ts.map +1 -0
  212. package/dist/src/planner/nodes/sequence-node.js +96 -0
  213. package/dist/src/planner/nodes/sequence-node.js.map +1 -0
  214. package/dist/src/planner/nodes/values-node.d.ts +8 -0
  215. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  216. package/dist/src/planner/nodes/values-node.js +29 -6
  217. package/dist/src/planner/nodes/values-node.js.map +1 -1
  218. package/dist/src/planner/nodes/view-mutation-node.d.ts +43 -1
  219. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  220. package/dist/src/planner/nodes/view-mutation-node.js +27 -6
  221. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  222. package/dist/src/planner/nodes/window-node.d.ts +33 -4
  223. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  224. package/dist/src/planner/nodes/window-node.js +80 -36
  225. package/dist/src/planner/nodes/window-node.js.map +1 -1
  226. package/dist/src/planner/planning-context.d.ts +38 -1
  227. package/dist/src/planner/planning-context.d.ts.map +1 -1
  228. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  229. package/dist/src/planner/rules/access/rule-key-set-seek.js +8 -3
  230. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  231. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +18 -12
  232. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  233. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
  234. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  235. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  236. package/dist/src/planner/rules/window/rule-monotonic-window.js +6 -0
  237. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  238. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  239. package/dist/src/planner/scopes/param.js +10 -5
  240. package/dist/src/planner/scopes/param.js.map +1 -1
  241. package/dist/src/planner/util/ind-utils.d.ts +25 -8
  242. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  243. package/dist/src/planner/util/ind-utils.js +53 -10
  244. package/dist/src/planner/util/ind-utils.js.map +1 -1
  245. package/dist/src/planner/util/key-utils.d.ts +7 -7
  246. package/dist/src/planner/util/key-utils.js +9 -9
  247. package/dist/src/planner/util/key-utils.js.map +1 -1
  248. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  249. package/dist/src/runtime/delta-executor.js +7 -2
  250. package/dist/src/runtime/delta-executor.js.map +1 -1
  251. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  252. package/dist/src/runtime/emit/add-constraint.js +50 -15
  253. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  254. package/dist/src/runtime/emit/alter-schema-event.d.ts +2 -43
  255. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/alter-schema-event.js +2 -53
  257. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -1
  258. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/alter-table.js +59 -24
  260. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  261. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  262. package/dist/src/runtime/emit/analyze.js +7 -0
  263. package/dist/src/runtime/emit/analyze.js.map +1 -1
  264. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
  265. package/dist/src/runtime/emit/assertion-rename-helpers.js +2 -3
  266. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
  267. package/dist/src/runtime/emit/binary.d.ts +5 -0
  268. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  269. package/dist/src/runtime/emit/binary.js +22 -22
  270. package/dist/src/runtime/emit/binary.js.map +1 -1
  271. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  272. package/dist/src/runtime/emit/block.js +9 -3
  273. package/dist/src/runtime/emit/block.js.map +1 -1
  274. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  275. package/dist/src/runtime/emit/constraint-check.js +5 -6
  276. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  277. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  278. package/dist/src/runtime/emit/create-assertion.js +71 -70
  279. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  280. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  281. package/dist/src/runtime/emit/create-index.js +8 -3
  282. package/dist/src/runtime/emit/create-index.js.map +1 -1
  283. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/create-table.js +20 -10
  285. package/dist/src/runtime/emit/create-table.js.map +1 -1
  286. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/create-view.js +51 -44
  288. package/dist/src/runtime/emit/create-view.js.map +1 -1
  289. package/dist/src/runtime/emit/ddl-event-scope.d.ts +71 -0
  290. package/dist/src/runtime/emit/ddl-event-scope.d.ts.map +1 -0
  291. package/dist/src/runtime/emit/ddl-event-scope.js +80 -0
  292. package/dist/src/runtime/emit/ddl-event-scope.js.map +1 -0
  293. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  294. package/dist/src/runtime/emit/dml-executor.js +23 -23
  295. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  296. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  297. package/dist/src/runtime/emit/drop-assertion.js +23 -17
  298. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  299. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  300. package/dist/src/runtime/emit/drop-index.js +7 -2
  301. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  302. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  303. package/dist/src/runtime/emit/drop-table.js +16 -10
  304. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  305. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/drop-view.js +50 -43
  307. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  308. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  309. package/dist/src/runtime/emit/insert.js +2 -1
  310. package/dist/src/runtime/emit/insert.js.map +1 -1
  311. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  312. package/dist/src/runtime/emit/materialized-view.js +87 -67
  313. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  314. package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
  315. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  316. package/dist/src/runtime/emit/schema-declarative.js +128 -25
  317. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  318. package/dist/src/runtime/emit/sequence.d.ts +17 -0
  319. package/dist/src/runtime/emit/sequence.d.ts.map +1 -0
  320. package/dist/src/runtime/emit/sequence.js +40 -0
  321. package/dist/src/runtime/emit/sequence.js.map +1 -0
  322. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  323. package/dist/src/runtime/emit/set-object-tags.js +40 -32
  324. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  325. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  326. package/dist/src/runtime/emit/table-valued-function.js +3 -2
  327. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  328. package/dist/src/runtime/emit/update.js +3 -3
  329. package/dist/src/runtime/emit/update.js.map +1 -1
  330. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  331. package/dist/src/runtime/emit/view-mutation.js +45 -3
  332. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  333. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  334. package/dist/src/runtime/foreign-key-actions.js +9 -10
  335. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  336. package/dist/src/runtime/register.d.ts.map +1 -1
  337. package/dist/src/runtime/register.js +3 -2
  338. package/dist/src/runtime/register.js.map +1 -1
  339. package/dist/src/runtime/row-constraints.d.ts +14 -8
  340. package/dist/src/runtime/row-constraints.d.ts.map +1 -1
  341. package/dist/src/runtime/row-constraints.js +41 -15
  342. package/dist/src/runtime/row-constraints.js.map +1 -1
  343. package/dist/src/runtime/strict-representation.d.ts +11 -6
  344. package/dist/src/runtime/strict-representation.d.ts.map +1 -1
  345. package/dist/src/runtime/strict-representation.js +1 -44
  346. package/dist/src/runtime/strict-representation.js.map +1 -1
  347. package/dist/src/schema/assertion.d.ts +25 -2
  348. package/dist/src/schema/assertion.d.ts.map +1 -1
  349. package/dist/src/schema/assertion.js.map +1 -1
  350. package/dist/src/schema/catalog-rendering.d.ts +38 -0
  351. package/dist/src/schema/catalog-rendering.d.ts.map +1 -0
  352. package/dist/src/schema/catalog-rendering.js +171 -0
  353. package/dist/src/schema/catalog-rendering.js.map +1 -0
  354. package/dist/src/schema/catalog.d.ts +69 -3
  355. package/dist/src/schema/catalog.d.ts.map +1 -1
  356. package/dist/src/schema/catalog.js +124 -19
  357. package/dist/src/schema/catalog.js.map +1 -1
  358. package/dist/src/schema/column-source-resolver.d.ts +9 -5
  359. package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
  360. package/dist/src/schema/column-source-resolver.js +9 -5
  361. package/dist/src/schema/column-source-resolver.js.map +1 -1
  362. package/dist/src/schema/constraint-builder.d.ts +13 -10
  363. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  364. package/dist/src/schema/constraint-builder.js +45 -17
  365. package/dist/src/schema/constraint-builder.js.map +1 -1
  366. package/dist/src/schema/declared-schema-manager.d.ts +50 -0
  367. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  368. package/dist/src/schema/declared-schema-manager.js +52 -0
  369. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  370. package/dist/src/schema/expr-scope/frame.d.ts +65 -0
  371. package/dist/src/schema/expr-scope/frame.d.ts.map +1 -0
  372. package/dist/src/schema/expr-scope/frame.js +104 -0
  373. package/dist/src/schema/expr-scope/frame.js.map +1 -0
  374. package/dist/src/schema/expr-scope/walk.d.ts +40 -0
  375. package/dist/src/schema/expr-scope/walk.d.ts.map +1 -0
  376. package/dist/src/schema/expr-scope/walk.js +260 -0
  377. package/dist/src/schema/expr-scope/walk.js.map +1 -0
  378. package/dist/src/schema/generated-column-refs.d.ts +41 -0
  379. package/dist/src/schema/generated-column-refs.d.ts.map +1 -0
  380. package/dist/src/schema/generated-column-refs.js +124 -0
  381. package/dist/src/schema/generated-column-refs.js.map +1 -0
  382. package/dist/src/schema/lens-ack.d.ts.map +1 -1
  383. package/dist/src/schema/lens-ack.js +5 -2
  384. package/dist/src/schema/lens-ack.js.map +1 -1
  385. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  386. package/dist/src/schema/lens-compiler.js +9 -1
  387. package/dist/src/schema/lens-compiler.js.map +1 -1
  388. package/dist/src/schema/lens-prover.d.ts +7 -2
  389. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  390. package/dist/src/schema/lens-prover.js +105 -11
  391. package/dist/src/schema/lens-prover.js.map +1 -1
  392. package/dist/src/schema/lens.d.ts +12 -0
  393. package/dist/src/schema/lens.d.ts.map +1 -1
  394. package/dist/src/schema/lens.js +10 -0
  395. package/dist/src/schema/lens.js.map +1 -1
  396. package/dist/src/schema/manager.d.ts +35 -1
  397. package/dist/src/schema/manager.d.ts.map +1 -1
  398. package/dist/src/schema/manager.js +125 -26
  399. package/dist/src/schema/manager.js.map +1 -1
  400. package/dist/src/schema/rename/self-qualifier-strip.d.ts +16 -10
  401. package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -1
  402. package/dist/src/schema/rename/self-qualifier-strip.js +30 -213
  403. package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -1
  404. package/dist/src/schema/rename-rewriter.d.ts +4 -3
  405. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  406. package/dist/src/schema/rename-rewriter.js +4 -3
  407. package/dist/src/schema/rename-rewriter.js.map +1 -1
  408. package/dist/src/schema/schema-differ.d.ts +54 -6
  409. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  410. package/dist/src/schema/schema-differ.js +108 -42
  411. package/dist/src/schema/schema-differ.js.map +1 -1
  412. package/dist/src/schema/schema-hasher.d.ts +12 -0
  413. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  414. package/dist/src/schema/schema-hasher.js +28 -10
  415. package/dist/src/schema/schema-hasher.js.map +1 -1
  416. package/dist/src/schema/table.d.ts +74 -19
  417. package/dist/src/schema/table.d.ts.map +1 -1
  418. package/dist/src/schema/table.js +133 -71
  419. package/dist/src/schema/table.js.map +1 -1
  420. package/dist/src/types/comparison-coercion.d.ts +5 -1
  421. package/dist/src/types/comparison-coercion.d.ts.map +1 -1
  422. package/dist/src/types/comparison-coercion.js +21 -5
  423. package/dist/src/types/comparison-coercion.js.map +1 -1
  424. package/dist/src/types/representation.d.ts +65 -0
  425. package/dist/src/types/representation.d.ts.map +1 -0
  426. package/dist/src/types/representation.js +63 -0
  427. package/dist/src/types/representation.js.map +1 -0
  428. package/dist/src/types/validation.d.ts +76 -22
  429. package/dist/src/types/validation.d.ts.map +1 -1
  430. package/dist/src/types/validation.js +110 -31
  431. package/dist/src/types/validation.js.map +1 -1
  432. package/dist/src/vtab/best-access-plan.d.ts +10 -0
  433. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  434. package/dist/src/vtab/best-access-plan.js +16 -0
  435. package/dist/src/vtab/best-access-plan.js.map +1 -1
  436. package/dist/src/vtab/capabilities.d.ts +72 -4
  437. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  438. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  439. package/dist/src/vtab/memory/layer/manager.js +17 -13
  440. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  441. package/dist/src/vtab/module.d.ts +13 -7
  442. package/dist/src/vtab/module.d.ts.map +1 -1
  443. package/package.json +3 -3
  444. package/dist/src/planner/nodes/array-index-node.d.ts +0 -22
  445. package/dist/src/planner/nodes/array-index-node.d.ts.map +0 -1
  446. package/dist/src/planner/nodes/array-index-node.js +0 -41
  447. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  448. package/dist/src/runtime/emit/array-index.d.ts +0 -5
  449. package/dist/src/runtime/emit/array-index.d.ts.map +0 -1
  450. package/dist/src/runtime/emit/array-index.js +0 -22
  451. package/dist/src/runtime/emit/array-index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"declared-schema-manager.d.ts","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzD,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,QAAQ,CAAqD;IACrE,+FAA+F;IAC/F,OAAO,CAAC,gBAAgB,CAA+C;IACvE;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB,CAA4C;IACzE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB,CAA4C;IAEvE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,iBAAiB,GAAG,IAAI;IAK/E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,iBAAiB,GAAG,SAAS;IAIxE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI;IAU5E;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,GAAG,SAAS;IAM5E;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;IAI7D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAS9C;;;;OAIG;IACH,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI;IAKrF,sEAAsE;IACtE,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,SAAS;IAI9E;;;;OAIG;IACH,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAO7F,gGAAgG;IAChG,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIjF;;;;OAIG;IACH,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIhF,4EAA4E;IAC5E,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAG9E"}
1
+ {"version":3,"file":"declared-schema-manager.d.ts","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createLogger } from '../common/logger.js';
2
+ import { renderDeclaredSchemaCanonical } from './schema-hasher.js';
2
3
  const log = createLogger('schema:declared');
3
4
  /**
4
5
  * Manages declared schemas and their associated seed data
@@ -24,13 +25,60 @@ export class DeclaredSchemaManager {
24
25
  * advisories. Errors never reach here — they throw atomically during deploy.
25
26
  */
26
27
  deployedLensReports = new Map();
28
+ /**
29
+ * Memoized `renderDeclaredSchemaCanonical` per lowercased schema name. Paid
30
+ * once per `declare schema`, on the first apply after it — the apply that is
31
+ * going to do real work anyway.
32
+ */
33
+ declaredRenderings = new Map();
34
+ /** Applied-state snapshots per lowercased schema name; see {@link AppliedSchemaSnapshot}. */
35
+ appliedSnapshots = new Map();
27
36
  /**
28
37
  * Stores a declared schema
29
38
  */
30
39
  setDeclaredSchema(schemaName, declaration) {
31
40
  this.declaredSchemas.set(schemaName.toLowerCase(), declaration);
41
+ // Invalidate the memoized rendering — it describes the PREVIOUS declaration.
42
+ //
43
+ // The applied snapshot deliberately SURVIVES a re-declare. It records what
44
+ // both sides rendered to, and the next apply re-renders the new declaration
45
+ // and compares; a re-`declare schema` of byte-identical text therefore still
46
+ // takes the fast path, while any real edit fails the compare. Clearing it
47
+ // here would throw that away for no soundness gain.
48
+ this.declaredRenderings.delete(schemaName.toLowerCase());
32
49
  log('Stored declared schema for: %s', schemaName);
33
50
  }
51
+ /**
52
+ * Canonical, **tags-inclusive** rendering of the stored declaration for
53
+ * `schemaName` (memoized), or `undefined` when nothing is declared. This is
54
+ * the declared half of the applied-state snapshot compare — NOT the version
55
+ * hash, which strips tags (see {@link renderDeclaredSchemaCanonical}).
56
+ */
57
+ getDeclaredRendering(schemaName) {
58
+ const key = schemaName.toLowerCase();
59
+ const cached = this.declaredRenderings.get(key);
60
+ if (cached !== undefined)
61
+ return cached;
62
+ const declaration = this.declaredSchemas.get(key);
63
+ if (!declaration)
64
+ return undefined;
65
+ const rendering = renderDeclaredSchemaCanonical(declaration);
66
+ this.declaredRenderings.set(key, rendering);
67
+ return rendering;
68
+ }
69
+ /** The applied-state snapshot for `schemaName`, or `undefined` if none recorded. */
70
+ getAppliedSnapshot(schemaName) {
71
+ return this.appliedSnapshots.get(schemaName.toLowerCase());
72
+ }
73
+ /**
74
+ * Records the applied-state snapshot for `schemaName`. Callers must only do
75
+ * this after an apply that both succeeded and produced an empty migration
76
+ * plan — see the write site in `runtime/emit/schema-declarative.ts`.
77
+ */
78
+ setAppliedSnapshot(schemaName, snapshot) {
79
+ this.appliedSnapshots.set(schemaName.toLowerCase(), snapshot);
80
+ log('Recorded applied-state snapshot for: %s', schemaName);
81
+ }
34
82
  /**
35
83
  * Retrieves a declared schema
36
84
  */
@@ -83,6 +131,10 @@ export class DeclaredSchemaManager {
83
131
  removeDeclaredSchema(schemaName) {
84
132
  this.declaredSchemas.delete(schemaName.toLowerCase());
85
133
  this.seedData.delete(schemaName.toLowerCase());
134
+ // Both derived caches go with the declaration: with nothing declared there is
135
+ // nothing for a later apply to compare a surviving snapshot against.
136
+ this.declaredRenderings.delete(schemaName.toLowerCase());
137
+ this.appliedSnapshots.delete(schemaName.toLowerCase());
86
138
  this.lensDeclarations.delete(schemaName.toLowerCase());
87
139
  this.deployedLensSnapshots.delete(schemaName.toLowerCase());
88
140
  this.deployedLensReports.delete(schemaName.toLowerCase());
@@ -1 +1 @@
1
- {"version":3,"file":"declared-schema-manager.js","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declared-schema-manager.js","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ /** One FROM nesting level for a conservative scope walk. */
3
+ export interface ScopeFrame {
4
+ /** Lowercase qualifier names this frame's FROM binds (table names, aliases, CTE names). */
5
+ bound: Set<string>;
6
+ /** Real-table sources, askable via the catalog callback for unqualified capture. */
7
+ realSources: Array<{
8
+ schema: string;
9
+ name: string;
10
+ }>;
11
+ /**
12
+ * Frame contains sources whose column sets cannot be analyzed
13
+ * (subquery / function / CTE sources), or marks a context that must be
14
+ * treated as categorically unanalysable (CTE / derived-table bodies).
15
+ */
16
+ hasOpaque: boolean;
17
+ /**
18
+ * Marks a subtree whose names resolve in a naming environment this walk does not
19
+ * model at all (view write-through metadata: a result column's `with inverse`
20
+ * clause, a select's trailing `with defaults` clause, both evaluated against the
21
+ * written view row where `new.<output column>` is the naming environment).
22
+ * NOTHING below a sealed frame can reach the seed — not even the `new.` /
23
+ * owning-table spellings that an opaque frame still lets through, since the
24
+ * classifiers check those AFTER the frame loop. Implies {@link hasOpaque}.
25
+ */
26
+ sealed: boolean;
27
+ /** Lowercase CTE names declared at this level (consulted by nested FROMs). */
28
+ cteNames: Set<string>;
29
+ }
30
+ export declare function emptyScopeFrame(): ScopeFrame;
31
+ /** A frame that binds nothing but blocks every unqualified-capture question. */
32
+ export declare function opaqueScopeFrame(): ScopeFrame;
33
+ /**
34
+ * A frame nothing below can see past — see {@link ScopeFrame.sealed}.
35
+ *
36
+ * NOTE: nothing forces a NEW view write-through clause to be sealed. The two that
37
+ * exist (`with inverse`, `with defaults`) are sealed by hand in `./walk.ts`; a third
38
+ * would default to ordinary scope rules and its `new.<col>` refs would come back
39
+ * `'own'`, inventing a dependency on the table being defined. Unlike the expression
40
+ * node kinds — which the walk spec's `EXPRESSION_KINDS` ledger forces a decision for —
41
+ * "clauses resolved in the written-row environment" is not an enumerable set on the
42
+ * AST. If a third one lands, give it a ledger of its own here.
43
+ */
44
+ export declare function sealedScopeFrame(): ScopeFrame;
45
+ /**
46
+ * Whether any frame above the seed is sealed. A flat scan of `stack[1..]` rather
47
+ * than a position-relative check, which is correct precisely because a sealed
48
+ * frame blocks UNCONDITIONALLY: it is only ever on the stack while the walk is
49
+ * inside such a subtree.
50
+ */
51
+ export declare function hasSealedFrame(stack: ReadonlyArray<ScopeFrame>): boolean;
52
+ /** Whether any frame on the stack declares `name` (lowercase) as a CTE. */
53
+ export declare function isCteNameInScope(stack: ReadonlyArray<ScopeFrame>, name: string): boolean;
54
+ /**
55
+ * Record one FROM item's bindings into `frame`. A table source whose bare name
56
+ * is a CTE in scope (and carries no schema qualifier) is opaque — its column
57
+ * set is not analyzed; every other table source is a real source the catalog
58
+ * callback can be asked about. Subquery and function sources are opaque.
59
+ */
60
+ export declare function collectScopeBindings(item: AST.FromClause, defaultSchema: string, stack: ReadonlyArray<ScopeFrame>, frame: ScopeFrame): void;
61
+ /** Build the frame for a select body's FROM list. */
62
+ export declare function buildScopeFrame(from: AST.FromClause[] | undefined, defaultSchema: string, stack: ReadonlyArray<ScopeFrame>): ScopeFrame;
63
+ /** Run `fn` with `frame` pushed on `stack`, popping it after. */
64
+ export declare function withScopeFrame<T>(stack: ScopeFrame[], frame: ScopeFrame, fn: () => T): T;
65
+ //# sourceMappingURL=frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../../src/schema/expr-scope/frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAchD,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IAC1B,2FAA2F;IAC3F,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,oFAAoF;IACpF,WAAW,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,UAAU,CAI7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAI7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAKxE;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,UAAU,GACf,IAAI,CAgCN;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAC9B,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,UAAU,CAIZ;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAOxF"}
@@ -0,0 +1,104 @@
1
+ export function emptyScopeFrame() {
2
+ return { bound: new Set(), realSources: [], hasOpaque: false, sealed: false, cteNames: new Set() };
3
+ }
4
+ /** A frame that binds nothing but blocks every unqualified-capture question. */
5
+ export function opaqueScopeFrame() {
6
+ const frame = emptyScopeFrame();
7
+ frame.hasOpaque = true;
8
+ return frame;
9
+ }
10
+ /**
11
+ * A frame nothing below can see past — see {@link ScopeFrame.sealed}.
12
+ *
13
+ * NOTE: nothing forces a NEW view write-through clause to be sealed. The two that
14
+ * exist (`with inverse`, `with defaults`) are sealed by hand in `./walk.ts`; a third
15
+ * would default to ordinary scope rules and its `new.<col>` refs would come back
16
+ * `'own'`, inventing a dependency on the table being defined. Unlike the expression
17
+ * node kinds — which the walk spec's `EXPRESSION_KINDS` ledger forces a decision for —
18
+ * "clauses resolved in the written-row environment" is not an enumerable set on the
19
+ * AST. If a third one lands, give it a ledger of its own here.
20
+ */
21
+ export function sealedScopeFrame() {
22
+ const frame = opaqueScopeFrame();
23
+ frame.sealed = true;
24
+ return frame;
25
+ }
26
+ /**
27
+ * Whether any frame above the seed is sealed. A flat scan of `stack[1..]` rather
28
+ * than a position-relative check, which is correct precisely because a sealed
29
+ * frame blocks UNCONDITIONALLY: it is only ever on the stack while the walk is
30
+ * inside such a subtree.
31
+ */
32
+ export function hasSealedFrame(stack) {
33
+ for (let i = 1; i < stack.length; i++) {
34
+ if (stack[i].sealed)
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ /** Whether any frame on the stack declares `name` (lowercase) as a CTE. */
40
+ export function isCteNameInScope(stack, name) {
41
+ for (const frame of stack) {
42
+ if (frame.cteNames.has(name))
43
+ return true;
44
+ }
45
+ return false;
46
+ }
47
+ /**
48
+ * Record one FROM item's bindings into `frame`. A table source whose bare name
49
+ * is a CTE in scope (and carries no schema qualifier) is opaque — its column
50
+ * set is not analyzed; every other table source is a real source the catalog
51
+ * callback can be asked about. Subquery and function sources are opaque.
52
+ */
53
+ export function collectScopeBindings(item, defaultSchema, stack, frame) {
54
+ switch (item.type) {
55
+ case 'table': {
56
+ const ts = item;
57
+ const name = ts.table.name.toLowerCase();
58
+ frame.bound.add(ts.alias ? ts.alias.toLowerCase() : name);
59
+ if (ts.table.schema === undefined && isCteNameInScope(stack, name)) {
60
+ // CTE source — column set not analyzed.
61
+ frame.hasOpaque = true;
62
+ }
63
+ else {
64
+ frame.realSources.push({ schema: (ts.table.schema ?? defaultSchema).toLowerCase(), name });
65
+ }
66
+ break;
67
+ }
68
+ case 'join': {
69
+ const join = item;
70
+ collectScopeBindings(join.left, defaultSchema, stack, frame);
71
+ collectScopeBindings(join.right, defaultSchema, stack, frame);
72
+ break;
73
+ }
74
+ case 'subquerySource': {
75
+ frame.bound.add(item.alias.toLowerCase());
76
+ frame.hasOpaque = true;
77
+ break;
78
+ }
79
+ case 'functionSource': {
80
+ const fs = item;
81
+ if (fs.alias)
82
+ frame.bound.add(fs.alias.toLowerCase());
83
+ frame.hasOpaque = true;
84
+ break;
85
+ }
86
+ }
87
+ }
88
+ /** Build the frame for a select body's FROM list. */
89
+ export function buildScopeFrame(from, defaultSchema, stack) {
90
+ const frame = emptyScopeFrame();
91
+ (from ?? []).forEach(item => collectScopeBindings(item, defaultSchema, stack, frame));
92
+ return frame;
93
+ }
94
+ /** Run `fn` with `frame` pushed on `stack`, popping it after. */
95
+ export function withScopeFrame(stack, frame, fn) {
96
+ stack.push(frame);
97
+ try {
98
+ return fn();
99
+ }
100
+ finally {
101
+ stack.pop();
102
+ }
103
+ }
104
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../src/schema/expr-scope/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ import { type ScopeFrame } from './frame.js';
3
+ /** What a scope walk does when it reaches a name-bearing leaf. */
4
+ export interface ScopeWalkHandlers {
5
+ /**
6
+ * Every `column` node reached. `stack[0]` is always the seed frame.
7
+ *
8
+ * The stack is the walk's LIVE array, handed over as a read-only view — it is
9
+ * mutated as the walk unwinds, so a handler must read what it needs during the
10
+ * call and never retain the reference.
11
+ */
12
+ onColumn(col: AST.ColumnExpr, stack: ReadonlyArray<ScopeFrame>): void;
13
+ /**
14
+ * Every bare `identifier` node reached in expression position. Omit when the
15
+ * analysis has nothing to say about them (the self-qualifier strip). Same
16
+ * do-not-retain rule for `stack` as {@link onColumn}.
17
+ */
18
+ onIdentifier?(ident: AST.IdentifierExpr, stack: ReadonlyArray<ScopeFrame>): void;
19
+ }
20
+ export interface ScopeWalkOptions {
21
+ /**
22
+ * Lowercase schema an unqualified FROM table source belongs to — the owning
23
+ * object's schema, NOT a search path. `main.t.qty` inside an expression on
24
+ * `temp.t` is not a self-reference, and no resolver lookup happens here.
25
+ */
26
+ readonly defaultSchema: string;
27
+ /** Lowercase names the implicit seed frame binds (the owning table's name). */
28
+ readonly seedBindings: ReadonlyArray<string>;
29
+ }
30
+ /**
31
+ * Walk `root` with the conservative FROM-frame model, invoking `handlers` at
32
+ * every name-bearing leaf. The walk mirrors SQL shadowing rules: a qualifier
33
+ * rebound by an inner FROM is visible to the handler as a binding frame above
34
+ * the seed, and contexts that cannot correlate to the written row (CTE bodies,
35
+ * derived-table bodies, DML statements) sit under an opaque barrier frame.
36
+ *
37
+ * A missing `root` returns without touching the handlers.
38
+ */
39
+ export declare function walkSchemaExpressionScope(root: AST.AstNode | undefined, options: ScopeWalkOptions, handlers: ScopeWalkHandlers): void;
40
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../../../src/schema/expr-scope/walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAwF,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAmCnI,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACtE;;;;OAIG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AASD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,GAAG,CAAC,OAAO,GAAG,SAAS,EAC7B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,iBAAiB,GACzB,IAAI,CAMN"}
@@ -0,0 +1,260 @@
1
+ import { buildScopeFrame, emptyScopeFrame, opaqueScopeFrame, sealedScopeFrame, withScopeFrame } from './frame.js';
2
+ /**
3
+ * Walk `root` with the conservative FROM-frame model, invoking `handlers` at
4
+ * every name-bearing leaf. The walk mirrors SQL shadowing rules: a qualifier
5
+ * rebound by an inner FROM is visible to the handler as a binding frame above
6
+ * the seed, and contexts that cannot correlate to the written row (CTE bodies,
7
+ * derived-table bodies, DML statements) sit under an opaque barrier frame.
8
+ *
9
+ * A missing `root` returns without touching the handlers.
10
+ */
11
+ export function walkSchemaExpressionScope(root, options, handlers) {
12
+ if (!root)
13
+ return;
14
+ const state = { options, handlers, stack: [] };
15
+ const seed = emptyScopeFrame();
16
+ for (const name of options.seedBindings)
17
+ seed.bound.add(name);
18
+ withScopeFrame(state.stack, seed, () => visit(root, state));
19
+ }
20
+ /** Visit a node whose scope cannot be analyzed (CTE / derived-table / DML bodies). */
21
+ function visitBarrier(node, state) {
22
+ withScopeFrame(state.stack, opaqueScopeFrame(), () => visit(node, state));
23
+ }
24
+ /**
25
+ * Visit a node whose names resolve in a naming environment this walk does not
26
+ * model at all — view write-through metadata (`with inverse (…)` /
27
+ * `with defaults (…)`), evaluated against the written view row. Stronger than a
28
+ * barrier: not even `new.<col>` may reach the seed from in here.
29
+ */
30
+ function visitSealed(node, state) {
31
+ withScopeFrame(state.stack, sealedScopeFrame(), () => visit(node, state));
32
+ }
33
+ function visit(node, state) {
34
+ if (!node)
35
+ return;
36
+ switch (node.type) {
37
+ case 'select':
38
+ visitSelect(node, state);
39
+ break;
40
+ case 'insert':
41
+ case 'update':
42
+ case 'delete':
43
+ visitDml(node, state);
44
+ break;
45
+ case 'values': {
46
+ node.values.forEach(row => row.forEach(v => visit(v, state)));
47
+ break;
48
+ }
49
+ case 'join': {
50
+ const join = node;
51
+ visit(join.left, state);
52
+ visit(join.right, state);
53
+ visit(join.condition, state);
54
+ break;
55
+ }
56
+ case 'functionSource': {
57
+ node.args.forEach(a => visit(a, state));
58
+ break;
59
+ }
60
+ case 'subquerySource': {
61
+ // A derived table's body cannot correlate to the written row — barrier.
62
+ visitBarrier(node.subquery, state);
63
+ break;
64
+ }
65
+ case 'binary': {
66
+ const e = node;
67
+ visit(e.left, state);
68
+ visit(e.right, state);
69
+ break;
70
+ }
71
+ case 'unary':
72
+ case 'cast':
73
+ case 'collate':
74
+ visit(node.expr, state);
75
+ break;
76
+ case 'function':
77
+ node.args.forEach(a => visit(a, state));
78
+ break;
79
+ case 'subquery':
80
+ visit(node.query, state);
81
+ break;
82
+ case 'windowFunction': {
83
+ const wf = node;
84
+ visit(wf.function, state);
85
+ visit(wf.window, state);
86
+ break;
87
+ }
88
+ case 'windowDefinition':
89
+ visitWindowDefinition(node, state);
90
+ break;
91
+ case 'case': {
92
+ const ce = node;
93
+ visit(ce.baseExpr, state);
94
+ ce.whenThenClauses.forEach(wt => {
95
+ visit(wt.when, state);
96
+ visit(wt.then, state);
97
+ });
98
+ visit(ce.elseExpr, state);
99
+ break;
100
+ }
101
+ case 'in': {
102
+ const ie = node;
103
+ visit(ie.expr, state);
104
+ (ie.values ?? []).forEach(v => visit(v, state));
105
+ visit(ie.subquery, state);
106
+ break;
107
+ }
108
+ case 'exists':
109
+ visit(node.subquery, state);
110
+ break;
111
+ case 'between': {
112
+ const be = node;
113
+ visit(be.expr, state);
114
+ visit(be.lower, state);
115
+ visit(be.upper, state);
116
+ break;
117
+ }
118
+ case 'column':
119
+ state.handlers.onColumn(node, state.stack);
120
+ break;
121
+ case 'identifier':
122
+ // Terminal either way — an analysis with nothing to say about bare
123
+ // identifiers (the strip) simply supplies no handler.
124
+ state.handlers.onIdentifier?.(node, state.stack);
125
+ break;
126
+ default:
127
+ // Silently ignored, unlike `traverseAst`'s warn: a schema expression
128
+ // legitimately holds `literal` / `parameter` / `table` nodes that carry
129
+ // no name for a handler to see.
130
+ break;
131
+ }
132
+ }
133
+ function visitSelect(stmt, state) {
134
+ const withFrame = emptyScopeFrame();
135
+ withScopeFrame(state.stack, withFrame, () => {
136
+ for (const cte of stmt.withClause?.ctes ?? []) {
137
+ // A CTE body cannot correlate to the written row — no analysis inside.
138
+ // Its name is registered only AFTER its own body is visited, so a
139
+ // non-recursive CTE cannot see itself; swapping the order silently
140
+ // changes which sources `collectScopeBindings` treats as opaque.
141
+ visitBarrier(cte.query, state);
142
+ withFrame.cteNames.add(cte.name.toLowerCase());
143
+ }
144
+ const frame = buildScopeFrame(stmt.from, state.options.defaultSchema, state.stack);
145
+ withScopeFrame(state.stack, frame, () => {
146
+ visitResultColumns(stmt.columns, state);
147
+ // Trailing `with defaults (col = expr, …)` — view write-through metadata,
148
+ // sealed like a result column's `with inverse (…)`. Position in this list is
149
+ // semantically irrelevant (the seal blocks everything); kept next to the
150
+ // result-column visit so the two write-through clauses read together.
151
+ (stmt.defaults ?? []).forEach(d => visitSealed(d.expr, state));
152
+ (stmt.from ?? []).forEach(f => visit(f, state));
153
+ visit(stmt.where, state);
154
+ (stmt.groupBy ?? []).forEach(g => visit(g, state));
155
+ visit(stmt.having, state);
156
+ // NOTE: on a compound these bind to the WHOLE compound, not the leading
157
+ // leg, so visiting them inside the leading leg's FROM frame can let that
158
+ // leg's sources capture a name that should fall through. Left as-is: it is
159
+ // conditional, not wrong for a non-compound select, and untangling it needs
160
+ // the AST to distinguish leg-level from compound-level clauses, which it
161
+ // does not (the parser folds a compound's trailing ORDER BY / LIMIT onto the
162
+ // leading leg — see `parseTrailingOrderLimit`).
163
+ (stmt.orderBy ?? []).forEach(o => visit(o.expr, state));
164
+ visit(stmt.limit, state);
165
+ visit(stmt.offset, state);
166
+ });
167
+ // Each compound leg is a self-contained relation that builds its OWN FROM
168
+ // frame, so the legs are visited outside the leading leg's frame — otherwise a
169
+ // bare name in the second leg could be captured by the first leg's sources and
170
+ // come back `'foreign'`, costing the generated-column analysis a dependency
171
+ // edge. Still inside `withFrame`: a leading `with` clause scopes over the whole
172
+ // compound, a `from` clause does not.
173
+ visit(stmt.union, state);
174
+ if (stmt.compound)
175
+ visit(stmt.compound.select, state);
176
+ });
177
+ }
178
+ /**
179
+ * Result columns of a select or of a DML `returning` list. A column's
180
+ * `with inverse (col = expr, …)` clause is view write-through metadata — visited
181
+ * under a seal, since it resolves against the written view row.
182
+ */
183
+ function visitResultColumns(columns, state) {
184
+ (columns ?? []).forEach(c => {
185
+ if (c.type !== 'column')
186
+ return;
187
+ visit(c.expr, state);
188
+ (c.inverse ?? []).forEach(inv => visitSealed(inv.expr, state));
189
+ });
190
+ }
191
+ /**
192
+ * DML bodies (reachable via a subquery source / scalar subquery over
193
+ * `insert … returning` etc.) bind names against their target table in ways this
194
+ * walk does not model — everything below descends under one barrier, so refs
195
+ * inside are undecidable rather than falsely attributed to the written row.
196
+ *
197
+ * The barrier makes every leaf here `'unknown'`, which is NOT inert for the
198
+ * generated-column pre-flight: `validateAddColumnGeneratedRefs` (`../table.ts`)
199
+ * treats an `'unknown'` binding of the column being added as a self-cycle, same
200
+ * as an `'own'` one. So `alter table t add column g generated always as (…)`
201
+ * whose body names `g` inside an inner DML's `returning` / upsert / context
202
+ * assignments is a cyclic-dependency error rather than silently accepted — the
203
+ * same answer the emitter's own re-analysis reaches once it sees the reference.
204
+ */
205
+ function visitDml(stmt, state) {
206
+ withScopeFrame(state.stack, opaqueScopeFrame(), () => {
207
+ // NOTE: a DML-attached CTE's NAME is never registered on a frame (unlike
208
+ // `visitSelect`'s `withFrame`), so a `from <cte>` below reads as an askable
209
+ // real table source of that name. Inert only because the enclosing opaque
210
+ // frame already makes every leaf below undecidable / unstrippable; if the
211
+ // DML barrier is ever narrowed to something less than the whole statement,
212
+ // register the names on a frame here first.
213
+ stmt.withClause?.ctes.forEach(cte => visitBarrier(cte.query, state));
214
+ switch (stmt.type) {
215
+ case 'insert':
216
+ visit(stmt.source, state);
217
+ (stmt.upsertClauses ?? []).forEach(u => {
218
+ (u.assignments ?? []).forEach(a => visit(a.value, state));
219
+ visit(u.where, state);
220
+ });
221
+ break;
222
+ case 'update':
223
+ visit(stmt.targetSource, state);
224
+ stmt.assignments.forEach(a => visit(a.value, state));
225
+ visit(stmt.where, state);
226
+ break;
227
+ case 'delete':
228
+ visit(stmt.targetSource, state);
229
+ visit(stmt.where, state);
230
+ break;
231
+ }
232
+ visitResultColumns(stmt.returning, state);
233
+ (stmt.contextValues ?? []).forEach(cv => visit(cv.value, state));
234
+ });
235
+ }
236
+ function visitWindowDefinition(wd, state) {
237
+ (wd.partitionBy ?? []).forEach(p => visit(p, state));
238
+ (wd.orderBy ?? []).forEach(o => visit(o.expr, state));
239
+ // A frame bound is an ordinary correlated expression, so it belongs in the same
240
+ // frame as `partition by` / `order by` — no barrier and no seal. `WindowFrame`
241
+ // and `WindowFrameBound` do not extend `AstNode` (a frame's `type` is
242
+ // `'rows' | 'range'`, not a node kind), so they cannot go through `visit`'s
243
+ // switch; only the bound kinds that CARRY an expression have a `value`.
244
+ // NOTE: no schema-time analysis of a frame bound is observable today — the planner
245
+ // rejects any bound that is not a constant numeric literal ("Window frame offsets
246
+ // must be constant numeric literals"), so a bound naming a column never executes
247
+ // whether or not an edge was recorded for it. Reaching them is completeness, and
248
+ // the walk-level spec is the only place it can be asserted. If constant-foldable or
249
+ // correlated bounds are ever accepted, that changes and SQL-level cases become
250
+ // writable — the same shape as § 13 of `test/logic/41-generated-column-scope.sqllogic`.
251
+ visitWindowFrameBound(wd.frame?.start, state);
252
+ visitWindowFrameBound(wd.frame?.end ?? undefined, state);
253
+ }
254
+ function visitWindowFrameBound(bound, state) {
255
+ if (!bound)
256
+ return;
257
+ if (bound.type === 'preceding' || bound.type === 'following')
258
+ visit(bound.value, state);
259
+ }
260
+ //# sourceMappingURL=walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../../../src/schema/expr-scope/walk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAuEnI;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACxC,IAA6B,EAC7B,OAAyB,EACzB,QAA2B;IAE3B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,KAAK,GAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,YAAY;QAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9D,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,sFAAsF;AACtF,SAAS,YAAY,CAAC,IAA6B,EAAE,KAAgB;IACpE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAA6B,EAAE,KAAgB;IACnE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,KAAK,CAAC,IAA6B,EAAE,KAAgB;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACZ,WAAW,CAAC,IAAsB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACZ,QAAQ,CAAC,IAAwD,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM;QACP,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM;QACP,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,IAAsB,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7B,MAAM;QACP,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAChE,MAAM;QACP,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACvB,wEAAwE;YACxE,YAAY,CAAE,IAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM;QACP,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,IAAsB,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtB,MAAM;QACP,CAAC;QACD,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACb,KAAK,CAAE,IAAuD,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM;QACP,KAAK,UAAU;YACb,IAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9D,MAAM;QACP,KAAK,UAAU;YACd,KAAK,CAAE,IAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM;QACP,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,IAA8B,CAAC;YAC1C,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxB,MAAM;QACP,CAAC;QACD,KAAK,kBAAkB;YACtB,qBAAqB,CAAC,IAA4B,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM;QACP,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,GAAG,IAAoB,CAAC;YAChC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC/B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,MAAM;QACP,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,GAAG,IAAkB,CAAC;YAC9B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,MAAM;QACP,CAAC;QACD,KAAK,QAAQ;YACZ,KAAK,CAAE,IAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM;QACP,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,IAAuB,CAAC;YACnC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvB,MAAM;QACP,CAAC;QACD,KAAK,QAAQ;YACZ,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAsB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM;QACP,KAAK,YAAY;YAChB,mEAAmE;YACnE,sDAAsD;YACtD,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAA0B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM;QACP;YACC,qEAAqE;YACrE,wEAAwE;YACxE,gCAAgC;YAChC,MAAM;IACR,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,IAAoB,EAAE,KAAgB;IAC1D,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YAC/C,uEAAuE;YACvE,kEAAkE;YAClE,mEAAmE;YACnE,iEAAiE;YACjE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACnF,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACxC,0EAA0E;YAC1E,6EAA6E;YAC7E,yEAAyE;YACzE,sEAAsE;YACtE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1B,wEAAwE;YACxE,yEAAyE;YACzE,2EAA2E;YAC3E,4EAA4E;YAC5E,yEAAyE;YACzE,6EAA6E;YAC7E,gDAAgD;YAChD,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,0EAA0E;QAC1E,+EAA+E;QAC/E,+EAA+E;QAC/E,4EAA4E;QAC5E,gFAAgF;QAChF,sCAAsC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAoD,EAAE,KAAgB;IACjG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAChC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,QAAQ,CAAC,IAAsD,EAAE,KAAgB;IACzF,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE;QACpD,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,4CAA4C;QAC5C,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACZ,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC1B,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC1D,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;gBACH,MAAM;YACP,KAAK,QAAQ;gBACZ,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzB,MAAM;YACP,KAAK,QAAQ;gBACZ,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzB,MAAM;QACR,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAwB,EAAE,KAAgB;IACxE,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,gFAAgF;IAChF,+EAA+E;IAC/E,sEAAsE;IACtE,4EAA4E;IAC5E,wEAAwE;IACxE,mFAAmF;IACnF,kFAAkF;IAClF,iFAAiF;IACjF,iFAAiF;IACjF,oFAAoF;IACpF,+EAA+E;IAC/E,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAuC,EAAE,KAAgB;IACvF,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzF,CAAC"}