uql-orm 0.1.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 (540) hide show
  1. package/CHANGELOG.md +521 -0
  2. package/LICENSE.md +22 -0
  3. package/README.md +560 -0
  4. package/dist/browser/cc-BEf4wTUm.js +535 -0
  5. package/dist/browser/cc-BEf4wTUm.js.map +1 -0
  6. package/dist/browser/http/bus.d.ts +4 -0
  7. package/dist/browser/http/bus.d.ts.map +1 -0
  8. package/dist/browser/http/bus.js +14 -0
  9. package/dist/browser/http/bus.js.map +1 -0
  10. package/dist/browser/http/http.d.ts +7 -0
  11. package/dist/browser/http/http.d.ts.map +1 -0
  12. package/dist/browser/http/http.js +45 -0
  13. package/dist/browser/http/http.js.map +1 -0
  14. package/dist/browser/http/index.d.ts +3 -0
  15. package/dist/browser/http/index.d.ts.map +1 -0
  16. package/dist/browser/http/index.js +3 -0
  17. package/dist/browser/http/index.js.map +1 -0
  18. package/dist/browser/index.d.ts +5 -0
  19. package/dist/browser/index.d.ts.map +1 -0
  20. package/dist/browser/index.js +5 -0
  21. package/dist/browser/index.js.map +1 -0
  22. package/dist/browser/options.d.ts +5 -0
  23. package/dist/browser/options.d.ts.map +1 -0
  24. package/dist/browser/options.js +14 -0
  25. package/dist/browser/options.js.map +1 -0
  26. package/dist/browser/querier/httpQuerier.d.ts +20 -0
  27. package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
  28. package/dist/browser/querier/httpQuerier.js +68 -0
  29. package/dist/browser/querier/httpQuerier.js.map +1 -0
  30. package/dist/browser/querier/index.d.ts +3 -0
  31. package/dist/browser/querier/index.d.ts.map +1 -0
  32. package/dist/browser/querier/index.js +3 -0
  33. package/dist/browser/querier/index.js.map +1 -0
  34. package/dist/browser/querier/querier.util.d.ts +3 -0
  35. package/dist/browser/querier/querier.util.d.ts.map +1 -0
  36. package/dist/browser/querier/querier.util.js +17 -0
  37. package/dist/browser/querier/querier.util.js.map +1 -0
  38. package/dist/browser/type/clientQuerier.d.ts +24 -0
  39. package/dist/browser/type/clientQuerier.d.ts.map +1 -0
  40. package/dist/browser/type/clientQuerier.js +2 -0
  41. package/dist/browser/type/clientQuerier.js.map +1 -0
  42. package/dist/browser/type/clientQuerierPool.d.ts +5 -0
  43. package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
  44. package/dist/browser/type/clientQuerierPool.js +2 -0
  45. package/dist/browser/type/clientQuerierPool.js.map +1 -0
  46. package/dist/browser/type/index.d.ts +4 -0
  47. package/dist/browser/type/index.d.ts.map +1 -0
  48. package/dist/browser/type/index.js +4 -0
  49. package/dist/browser/type/index.js.map +1 -0
  50. package/dist/browser/type/request.d.ts +29 -0
  51. package/dist/browser/type/request.d.ts.map +1 -0
  52. package/dist/browser/type/request.js +2 -0
  53. package/dist/browser/type/request.js.map +1 -0
  54. package/dist/browser/uql-browser.min.js +4818 -0
  55. package/dist/browser/uql-browser.min.js.map +1 -0
  56. package/dist/d1/d1Querier.d.ts +45 -0
  57. package/dist/d1/d1Querier.d.ts.map +1 -0
  58. package/dist/d1/d1Querier.js +31 -0
  59. package/dist/d1/d1Querier.js.map +1 -0
  60. package/dist/d1/d1QuerierPool.d.ts +10 -0
  61. package/dist/d1/d1QuerierPool.d.ts.map +1 -0
  62. package/dist/d1/d1QuerierPool.js +16 -0
  63. package/dist/d1/d1QuerierPool.js.map +1 -0
  64. package/dist/d1/index.d.ts +3 -0
  65. package/dist/d1/index.d.ts.map +1 -0
  66. package/dist/d1/index.js +3 -0
  67. package/dist/d1/index.js.map +1 -0
  68. package/dist/dialect/abstractDialect.d.ts +22 -0
  69. package/dist/dialect/abstractDialect.d.ts.map +1 -0
  70. package/dist/dialect/abstractDialect.js +37 -0
  71. package/dist/dialect/abstractDialect.js.map +1 -0
  72. package/dist/dialect/abstractSqlDialect.d.ts +140 -0
  73. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
  74. package/dist/dialect/abstractSqlDialect.js +957 -0
  75. package/dist/dialect/abstractSqlDialect.js.map +1 -0
  76. package/dist/dialect/dialectConfig.d.ts +23 -0
  77. package/dist/dialect/dialectConfig.d.ts.map +1 -0
  78. package/dist/dialect/dialectConfig.js +96 -0
  79. package/dist/dialect/dialectConfig.js.map +1 -0
  80. package/dist/dialect/index.d.ts +5 -0
  81. package/dist/dialect/index.d.ts.map +1 -0
  82. package/dist/dialect/index.js +5 -0
  83. package/dist/dialect/index.js.map +1 -0
  84. package/dist/dialect/queryContext.d.ts +49 -0
  85. package/dist/dialect/queryContext.d.ts.map +1 -0
  86. package/dist/dialect/queryContext.js +65 -0
  87. package/dist/dialect/queryContext.js.map +1 -0
  88. package/dist/entity/decorator/definition.d.ts +11 -0
  89. package/dist/entity/decorator/definition.d.ts.map +1 -0
  90. package/dist/entity/decorator/definition.js +247 -0
  91. package/dist/entity/decorator/definition.js.map +1 -0
  92. package/dist/entity/decorator/entity.d.ts +3 -0
  93. package/dist/entity/decorator/entity.d.ts.map +1 -0
  94. package/dist/entity/decorator/entity.js +7 -0
  95. package/dist/entity/decorator/entity.js.map +1 -0
  96. package/dist/entity/decorator/field.d.ts +3 -0
  97. package/dist/entity/decorator/field.d.ts.map +1 -0
  98. package/dist/entity/decorator/field.js +8 -0
  99. package/dist/entity/decorator/field.js.map +1 -0
  100. package/dist/entity/decorator/hook.d.ts +8 -0
  101. package/dist/entity/decorator/hook.d.ts.map +1 -0
  102. package/dist/entity/decorator/hook.js +15 -0
  103. package/dist/entity/decorator/hook.js.map +1 -0
  104. package/dist/entity/decorator/id.d.ts +3 -0
  105. package/dist/entity/decorator/id.d.ts.map +1 -0
  106. package/dist/entity/decorator/id.js +8 -0
  107. package/dist/entity/decorator/id.js.map +1 -0
  108. package/dist/entity/decorator/index-decorator.d.ts +36 -0
  109. package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
  110. package/dist/entity/decorator/index-decorator.js +52 -0
  111. package/dist/entity/decorator/index-decorator.js.map +1 -0
  112. package/dist/entity/decorator/index.d.ts +8 -0
  113. package/dist/entity/decorator/index.d.ts.map +1 -0
  114. package/dist/entity/decorator/index.js +8 -0
  115. package/dist/entity/decorator/index.js.map +1 -0
  116. package/dist/entity/decorator/relation.d.ts +9 -0
  117. package/dist/entity/decorator/relation.d.ts.map +1 -0
  118. package/dist/entity/decorator/relation.js +20 -0
  119. package/dist/entity/decorator/relation.js.map +1 -0
  120. package/dist/entity/index.d.ts +2 -0
  121. package/dist/entity/index.d.ts.map +1 -0
  122. package/dist/entity/index.js +2 -0
  123. package/dist/entity/index.js.map +1 -0
  124. package/dist/express/index.d.ts +3 -0
  125. package/dist/express/index.d.ts.map +1 -0
  126. package/dist/express/index.js +3 -0
  127. package/dist/express/index.js.map +1 -0
  128. package/dist/express/querierMiddleware.d.ts +26 -0
  129. package/dist/express/querierMiddleware.d.ts.map +1 -0
  130. package/dist/express/querierMiddleware.js +149 -0
  131. package/dist/express/querierMiddleware.js.map +1 -0
  132. package/dist/express/query.util.d.ts +7 -0
  133. package/dist/express/query.util.d.ts.map +1 -0
  134. package/dist/express/query.util.js +28 -0
  135. package/dist/express/query.util.js.map +1 -0
  136. package/dist/index.d.ts +8 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +8 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/libsql/index.d.ts +3 -0
  141. package/dist/libsql/index.d.ts.map +1 -0
  142. package/dist/libsql/index.js +3 -0
  143. package/dist/libsql/index.js.map +1 -0
  144. package/dist/libsql/libsqlQuerier.d.ts +17 -0
  145. package/dist/libsql/libsqlQuerier.d.ts.map +1 -0
  146. package/dist/libsql/libsqlQuerier.js +71 -0
  147. package/dist/libsql/libsqlQuerier.js.map +1 -0
  148. package/dist/libsql/libsqlQuerierPool.d.ts +12 -0
  149. package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -0
  150. package/dist/libsql/libsqlQuerierPool.js +19 -0
  151. package/dist/libsql/libsqlQuerierPool.js.map +1 -0
  152. package/dist/maria/index.d.ts +4 -0
  153. package/dist/maria/index.d.ts.map +1 -0
  154. package/dist/maria/index.js +4 -0
  155. package/dist/maria/index.js.map +1 -0
  156. package/dist/maria/mariaDialect.d.ts +10 -0
  157. package/dist/maria/mariaDialect.d.ts.map +1 -0
  158. package/dist/maria/mariaDialect.js +41 -0
  159. package/dist/maria/mariaDialect.js.map +1 -0
  160. package/dist/maria/mariadbQuerier.d.ts +10 -0
  161. package/dist/maria/mariadbQuerier.d.ts.map +1 -0
  162. package/dist/maria/mariadbQuerier.js +20 -0
  163. package/dist/maria/mariadbQuerier.js.map +1 -0
  164. package/dist/maria/mariadbQuerierPool.d.ts +11 -0
  165. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
  166. package/dist/maria/mariadbQuerierPool.js +17 -0
  167. package/dist/maria/mariadbQuerierPool.js.map +1 -0
  168. package/dist/migrate/bin.d.ts +3 -0
  169. package/dist/migrate/bin.d.ts.map +1 -0
  170. package/dist/migrate/bin.js +7 -0
  171. package/dist/migrate/bin.js.map +1 -0
  172. package/dist/migrate/builder/columnBuilder.d.ts +79 -0
  173. package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
  174. package/dist/migrate/builder/columnBuilder.js +159 -0
  175. package/dist/migrate/builder/columnBuilder.js.map +1 -0
  176. package/dist/migrate/builder/expressions.d.ts +87 -0
  177. package/dist/migrate/builder/expressions.d.ts.map +1 -0
  178. package/dist/migrate/builder/expressions.js +150 -0
  179. package/dist/migrate/builder/expressions.js.map +1 -0
  180. package/dist/migrate/builder/index.d.ts +6 -0
  181. package/dist/migrate/builder/index.d.ts.map +1 -0
  182. package/dist/migrate/builder/index.js +6 -0
  183. package/dist/migrate/builder/index.js.map +1 -0
  184. package/dist/migrate/builder/migrationBuilder.d.ts +109 -0
  185. package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
  186. package/dist/migrate/builder/migrationBuilder.js +463 -0
  187. package/dist/migrate/builder/migrationBuilder.js.map +1 -0
  188. package/dist/migrate/builder/tableBuilder.d.ts +51 -0
  189. package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
  190. package/dist/migrate/builder/tableBuilder.js +291 -0
  191. package/dist/migrate/builder/tableBuilder.js.map +1 -0
  192. package/dist/migrate/builder/types.d.ts +466 -0
  193. package/dist/migrate/builder/types.d.ts.map +1 -0
  194. package/dist/migrate/builder/types.js +8 -0
  195. package/dist/migrate/builder/types.js.map +1 -0
  196. package/dist/migrate/cli-config.d.ts +3 -0
  197. package/dist/migrate/cli-config.d.ts.map +1 -0
  198. package/dist/migrate/cli-config.js +35 -0
  199. package/dist/migrate/cli-config.js.map +1 -0
  200. package/dist/migrate/cli.d.ts +16 -0
  201. package/dist/migrate/cli.d.ts.map +1 -0
  202. package/dist/migrate/cli.js +394 -0
  203. package/dist/migrate/cli.js.map +1 -0
  204. package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
  205. package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
  206. package/dist/migrate/codegen/entityCodeGenerator.js +405 -0
  207. package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
  208. package/dist/migrate/codegen/entityMerger.d.ts +115 -0
  209. package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
  210. package/dist/migrate/codegen/entityMerger.js +294 -0
  211. package/dist/migrate/codegen/entityMerger.js.map +1 -0
  212. package/dist/migrate/codegen/index.d.ts +10 -0
  213. package/dist/migrate/codegen/index.d.ts.map +1 -0
  214. package/dist/migrate/codegen/index.js +14 -0
  215. package/dist/migrate/codegen/index.js.map +1 -0
  216. package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
  217. package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
  218. package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
  219. package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
  220. package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
  221. package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
  222. package/dist/migrate/codegen/smartRelationDetector.js +135 -0
  223. package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
  224. package/dist/migrate/drift/driftDetector.d.ts +81 -0
  225. package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
  226. package/dist/migrate/drift/driftDetector.js +248 -0
  227. package/dist/migrate/drift/driftDetector.js.map +1 -0
  228. package/dist/migrate/drift/index.d.ts +7 -0
  229. package/dist/migrate/drift/index.d.ts.map +1 -0
  230. package/dist/migrate/drift/index.js +7 -0
  231. package/dist/migrate/drift/index.js.map +1 -0
  232. package/dist/migrate/generator/index.d.ts +3 -0
  233. package/dist/migrate/generator/index.d.ts.map +1 -0
  234. package/dist/migrate/generator/index.js +3 -0
  235. package/dist/migrate/generator/index.js.map +1 -0
  236. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +39 -0
  237. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
  238. package/dist/migrate/generator/mongoSchemaGenerator.js +183 -0
  239. package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
  240. package/dist/migrate/index.d.ts +13 -0
  241. package/dist/migrate/index.d.ts.map +1 -0
  242. package/dist/migrate/index.js +20 -0
  243. package/dist/migrate/index.js.map +1 -0
  244. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +77 -0
  245. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -0
  246. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +156 -0
  247. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -0
  248. package/dist/migrate/introspection/baseSqlIntrospector.d.ts +28 -0
  249. package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
  250. package/dist/migrate/introspection/baseSqlIntrospector.js +135 -0
  251. package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
  252. package/dist/migrate/introspection/index.d.ts +6 -0
  253. package/dist/migrate/introspection/index.d.ts.map +1 -0
  254. package/dist/migrate/introspection/index.js +6 -0
  255. package/dist/migrate/introspection/index.js.map +1 -0
  256. package/dist/migrate/introspection/mongoIntrospector.d.ts +15 -0
  257. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
  258. package/dist/migrate/introspection/mongoIntrospector.js +100 -0
  259. package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
  260. package/dist/migrate/introspection/mysqlIntrospector.d.ts +59 -0
  261. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
  262. package/dist/migrate/introspection/mysqlIntrospector.js +175 -0
  263. package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
  264. package/dist/migrate/introspection/postgresIntrospector.d.ts +55 -0
  265. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
  266. package/dist/migrate/introspection/postgresIntrospector.js +226 -0
  267. package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
  268. package/dist/migrate/introspection/sqliteIntrospector.d.ts +60 -0
  269. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
  270. package/dist/migrate/introspection/sqliteIntrospector.js +180 -0
  271. package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
  272. package/dist/migrate/migrator.d.ts +176 -0
  273. package/dist/migrate/migrator.d.ts.map +1 -0
  274. package/dist/migrate/migrator.js +624 -0
  275. package/dist/migrate/migrator.js.map +1 -0
  276. package/dist/migrate/schemaGenerator.d.ts +132 -0
  277. package/dist/migrate/schemaGenerator.d.ts.map +1 -0
  278. package/dist/migrate/schemaGenerator.js +628 -0
  279. package/dist/migrate/schemaGenerator.js.map +1 -0
  280. package/dist/migrate/storage/databaseStorage.d.ts +25 -0
  281. package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
  282. package/dist/migrate/storage/databaseStorage.js +77 -0
  283. package/dist/migrate/storage/databaseStorage.js.map +1 -0
  284. package/dist/migrate/storage/index.d.ts +3 -0
  285. package/dist/migrate/storage/index.d.ts.map +1 -0
  286. package/dist/migrate/storage/index.js +3 -0
  287. package/dist/migrate/storage/index.js.map +1 -0
  288. package/dist/migrate/storage/jsonStorage.d.ts +16 -0
  289. package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
  290. package/dist/migrate/storage/jsonStorage.js +43 -0
  291. package/dist/migrate/storage/jsonStorage.js.map +1 -0
  292. package/dist/migrate/sync/index.d.ts +7 -0
  293. package/dist/migrate/sync/index.d.ts.map +1 -0
  294. package/dist/migrate/sync/index.js +7 -0
  295. package/dist/migrate/sync/index.js.map +1 -0
  296. package/dist/migrate/sync/schemaSync.d.ts +132 -0
  297. package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
  298. package/dist/migrate/sync/schemaSync.js +260 -0
  299. package/dist/migrate/sync/schemaSync.js.map +1 -0
  300. package/dist/mongo/index.d.ts +4 -0
  301. package/dist/mongo/index.d.ts.map +1 -0
  302. package/dist/mongo/index.js +4 -0
  303. package/dist/mongo/index.js.map +1 -0
  304. package/dist/mongo/mongoDialect.d.ts +47 -0
  305. package/dist/mongo/mongoDialect.d.ts.map +1 -0
  306. package/dist/mongo/mongoDialect.js +299 -0
  307. package/dist/mongo/mongoDialect.js.map +1 -0
  308. package/dist/mongo/mongodbQuerier.d.ts +32 -0
  309. package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
  310. package/dist/mongo/mongodbQuerier.js +267 -0
  311. package/dist/mongo/mongodbQuerier.js.map +1 -0
  312. package/dist/mongo/mongodbQuerierPool.d.ts +11 -0
  313. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
  314. package/dist/mongo/mongodbQuerierPool.js +20 -0
  315. package/dist/mongo/mongodbQuerierPool.js.map +1 -0
  316. package/dist/mysql/index.d.ts +4 -0
  317. package/dist/mysql/index.d.ts.map +1 -0
  318. package/dist/mysql/index.js +4 -0
  319. package/dist/mysql/index.js.map +1 -0
  320. package/dist/mysql/mysql2Querier.d.ts +14 -0
  321. package/dist/mysql/mysql2Querier.d.ts.map +1 -0
  322. package/dist/mysql/mysql2Querier.js +25 -0
  323. package/dist/mysql/mysql2Querier.js.map +1 -0
  324. package/dist/mysql/mysql2QuerierPool.d.ts +11 -0
  325. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
  326. package/dist/mysql/mysql2QuerierPool.js +17 -0
  327. package/dist/mysql/mysql2QuerierPool.js.map +1 -0
  328. package/dist/mysql/mysqlDialect.d.ts +19 -0
  329. package/dist/mysql/mysqlDialect.d.ts.map +1 -0
  330. package/dist/mysql/mysqlDialect.js +97 -0
  331. package/dist/mysql/mysqlDialect.js.map +1 -0
  332. package/dist/namingStrategy/defaultNamingStrategy.d.ts +10 -0
  333. package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
  334. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  335. package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
  336. package/dist/namingStrategy/index.d.ts +3 -0
  337. package/dist/namingStrategy/index.d.ts.map +1 -0
  338. package/dist/namingStrategy/index.js +3 -0
  339. package/dist/namingStrategy/index.js.map +1 -0
  340. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +9 -0
  341. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
  342. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  343. package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
  344. package/dist/neon/index.d.ts +3 -0
  345. package/dist/neon/index.d.ts.map +1 -0
  346. package/dist/neon/index.js +3 -0
  347. package/dist/neon/index.js.map +1 -0
  348. package/dist/neon/neonQuerier.d.ts +10 -0
  349. package/dist/neon/neonQuerier.d.ts.map +1 -0
  350. package/dist/neon/neonQuerier.js +20 -0
  351. package/dist/neon/neonQuerier.js.map +1 -0
  352. package/dist/neon/neonQuerierPool.d.ts +11 -0
  353. package/dist/neon/neonQuerierPool.d.ts.map +1 -0
  354. package/dist/neon/neonQuerierPool.js +17 -0
  355. package/dist/neon/neonQuerierPool.js.map +1 -0
  356. package/dist/options.d.ts +5 -0
  357. package/dist/options.d.ts.map +1 -0
  358. package/dist/options.js +14 -0
  359. package/dist/options.js.map +1 -0
  360. package/dist/postgres/index.d.ts +4 -0
  361. package/dist/postgres/index.d.ts.map +1 -0
  362. package/dist/postgres/index.js +4 -0
  363. package/dist/postgres/index.js.map +1 -0
  364. package/dist/postgres/pgQuerier.d.ts +10 -0
  365. package/dist/postgres/pgQuerier.d.ts.map +1 -0
  366. package/dist/postgres/pgQuerier.js +20 -0
  367. package/dist/postgres/pgQuerier.js.map +1 -0
  368. package/dist/postgres/pgQuerierPool.d.ts +11 -0
  369. package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
  370. package/dist/postgres/pgQuerierPool.js +17 -0
  371. package/dist/postgres/pgQuerierPool.js.map +1 -0
  372. package/dist/postgres/postgresDialect.d.ts +36 -0
  373. package/dist/postgres/postgresDialect.d.ts.map +1 -0
  374. package/dist/postgres/postgresDialect.js +201 -0
  375. package/dist/postgres/postgresDialect.js.map +1 -0
  376. package/dist/querier/abstractPoolQuerier.d.ts +13 -0
  377. package/dist/querier/abstractPoolQuerier.d.ts.map +1 -0
  378. package/dist/querier/abstractPoolQuerier.js +25 -0
  379. package/dist/querier/abstractPoolQuerier.js.map +1 -0
  380. package/dist/querier/abstractQuerier.d.ts +109 -0
  381. package/dist/querier/abstractQuerier.d.ts.map +1 -0
  382. package/dist/querier/abstractQuerier.js +378 -0
  383. package/dist/querier/abstractQuerier.js.map +1 -0
  384. package/dist/querier/abstractQuerierPool.d.ts +23 -0
  385. package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
  386. package/dist/querier/abstractQuerierPool.js +28 -0
  387. package/dist/querier/abstractQuerierPool.js.map +1 -0
  388. package/dist/querier/abstractSqlQuerier.d.ts +38 -0
  389. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
  390. package/dist/querier/abstractSqlQuerier.js +169 -0
  391. package/dist/querier/abstractSqlQuerier.js.map +1 -0
  392. package/dist/querier/decorator/index.d.ts +5 -0
  393. package/dist/querier/decorator/index.d.ts.map +1 -0
  394. package/dist/querier/decorator/index.js +5 -0
  395. package/dist/querier/decorator/index.js.map +1 -0
  396. package/dist/querier/decorator/injectQuerier.d.ts +4 -0
  397. package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
  398. package/dist/querier/decorator/injectQuerier.js +33 -0
  399. package/dist/querier/decorator/injectQuerier.js.map +1 -0
  400. package/dist/querier/decorator/log.d.ts +7 -0
  401. package/dist/querier/decorator/log.d.ts.map +1 -0
  402. package/dist/querier/decorator/log.js +27 -0
  403. package/dist/querier/decorator/log.js.map +1 -0
  404. package/dist/querier/decorator/serialized.d.ts +7 -0
  405. package/dist/querier/decorator/serialized.d.ts.map +1 -0
  406. package/dist/querier/decorator/serialized.js +14 -0
  407. package/dist/querier/decorator/serialized.js.map +1 -0
  408. package/dist/querier/decorator/transactional.d.ts +6 -0
  409. package/dist/querier/decorator/transactional.d.ts.map +1 -0
  410. package/dist/querier/decorator/transactional.js +48 -0
  411. package/dist/querier/decorator/transactional.js.map +1 -0
  412. package/dist/querier/index.d.ts +5 -0
  413. package/dist/querier/index.d.ts.map +1 -0
  414. package/dist/querier/index.js +5 -0
  415. package/dist/querier/index.js.map +1 -0
  416. package/dist/schema/canonicalType.d.ts +42 -0
  417. package/dist/schema/canonicalType.d.ts.map +1 -0
  418. package/dist/schema/canonicalType.js +524 -0
  419. package/dist/schema/canonicalType.js.map +1 -0
  420. package/dist/schema/index.d.ts +28 -0
  421. package/dist/schema/index.d.ts.map +1 -0
  422. package/dist/schema/index.js +29 -0
  423. package/dist/schema/index.js.map +1 -0
  424. package/dist/schema/schemaAST.d.ts +155 -0
  425. package/dist/schema/schemaAST.d.ts.map +1 -0
  426. package/dist/schema/schemaAST.js +496 -0
  427. package/dist/schema/schemaAST.js.map +1 -0
  428. package/dist/schema/schemaASTBuilder.d.ts +58 -0
  429. package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
  430. package/dist/schema/schemaASTBuilder.js +224 -0
  431. package/dist/schema/schemaASTBuilder.js.map +1 -0
  432. package/dist/schema/schemaASTDiffer.d.ts +84 -0
  433. package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
  434. package/dist/schema/schemaASTDiffer.js +431 -0
  435. package/dist/schema/schemaASTDiffer.js.map +1 -0
  436. package/dist/schema/types.d.ts +347 -0
  437. package/dist/schema/types.d.ts.map +1 -0
  438. package/dist/schema/types.js +11 -0
  439. package/dist/schema/types.js.map +1 -0
  440. package/dist/sqlite/abstractSqliteQuerier.d.ts +6 -0
  441. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -0
  442. package/dist/sqlite/abstractSqliteQuerier.js +13 -0
  443. package/dist/sqlite/abstractSqliteQuerier.js.map +1 -0
  444. package/dist/sqlite/index.d.ts +4 -0
  445. package/dist/sqlite/index.d.ts.map +1 -0
  446. package/dist/sqlite/index.js +4 -0
  447. package/dist/sqlite/index.js.map +1 -0
  448. package/dist/sqlite/sqliteDialect.d.ts +42 -0
  449. package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
  450. package/dist/sqlite/sqliteDialect.js +129 -0
  451. package/dist/sqlite/sqliteDialect.js.map +1 -0
  452. package/dist/sqlite/sqliteQuerier.d.ts +12 -0
  453. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
  454. package/dist/sqlite/sqliteQuerier.js +25 -0
  455. package/dist/sqlite/sqliteQuerier.js.map +1 -0
  456. package/dist/sqlite/sqliteQuerierPool.d.ts +13 -0
  457. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
  458. package/dist/sqlite/sqliteQuerierPool.js +34 -0
  459. package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
  460. package/dist/type/config.d.ts +46 -0
  461. package/dist/type/config.d.ts.map +1 -0
  462. package/dist/type/config.js +2 -0
  463. package/dist/type/config.js.map +1 -0
  464. package/dist/type/entity.d.ts +289 -0
  465. package/dist/type/entity.d.ts.map +1 -0
  466. package/dist/type/entity.js +5 -0
  467. package/dist/type/entity.js.map +1 -0
  468. package/dist/type/index.d.ts +11 -0
  469. package/dist/type/index.d.ts.map +1 -0
  470. package/dist/type/index.js +11 -0
  471. package/dist/type/index.js.map +1 -0
  472. package/dist/type/logger.d.ts +61 -0
  473. package/dist/type/logger.d.ts.map +1 -0
  474. package/dist/type/logger.js +2 -0
  475. package/dist/type/logger.js.map +1 -0
  476. package/dist/type/migration.d.ts +268 -0
  477. package/dist/type/migration.d.ts.map +1 -0
  478. package/dist/type/migration.js +2 -0
  479. package/dist/type/migration.js.map +1 -0
  480. package/dist/type/namingStrategy.d.ts +18 -0
  481. package/dist/type/namingStrategy.d.ts.map +1 -0
  482. package/dist/type/namingStrategy.js +2 -0
  483. package/dist/type/namingStrategy.js.map +1 -0
  484. package/dist/type/querier.d.ts +154 -0
  485. package/dist/type/querier.d.ts.map +1 -0
  486. package/dist/type/querier.js +11 -0
  487. package/dist/type/querier.js.map +1 -0
  488. package/dist/type/querierPool.d.ts +31 -0
  489. package/dist/type/querierPool.d.ts.map +1 -0
  490. package/dist/type/querierPool.js +2 -0
  491. package/dist/type/querierPool.js.map +1 -0
  492. package/dist/type/query.d.ts +475 -0
  493. package/dist/type/query.d.ts.map +1 -0
  494. package/dist/type/query.js +11 -0
  495. package/dist/type/query.js.map +1 -0
  496. package/dist/type/universalQuerier.d.ts +120 -0
  497. package/dist/type/universalQuerier.d.ts.map +1 -0
  498. package/dist/type/universalQuerier.js +2 -0
  499. package/dist/type/universalQuerier.js.map +1 -0
  500. package/dist/type/utility.d.ts +33 -0
  501. package/dist/type/utility.d.ts.map +1 -0
  502. package/dist/type/utility.js +2 -0
  503. package/dist/type/utility.js.map +1 -0
  504. package/dist/util/dialect.util.d.ts +13 -0
  505. package/dist/util/dialect.util.d.ts.map +1 -0
  506. package/dist/util/dialect.util.js +82 -0
  507. package/dist/util/dialect.util.js.map +1 -0
  508. package/dist/util/field.util.d.ts +14 -0
  509. package/dist/util/field.util.d.ts.map +1 -0
  510. package/dist/util/field.util.js +57 -0
  511. package/dist/util/field.util.js.map +1 -0
  512. package/dist/util/hook.util.d.ts +15 -0
  513. package/dist/util/hook.util.d.ts.map +1 -0
  514. package/dist/util/hook.util.js +20 -0
  515. package/dist/util/hook.util.js.map +1 -0
  516. package/dist/util/index.d.ts +9 -0
  517. package/dist/util/index.d.ts.map +1 -0
  518. package/dist/util/index.js +9 -0
  519. package/dist/util/index.js.map +1 -0
  520. package/dist/util/logger.d.ts +34 -0
  521. package/dist/util/logger.d.ts.map +1 -0
  522. package/dist/util/logger.js +129 -0
  523. package/dist/util/logger.js.map +1 -0
  524. package/dist/util/object.util.d.ts +8 -0
  525. package/dist/util/object.util.d.ts.map +1 -0
  526. package/dist/util/object.util.js +19 -0
  527. package/dist/util/object.util.js.map +1 -0
  528. package/dist/util/raw.d.ts +9 -0
  529. package/dist/util/raw.d.ts.map +1 -0
  530. package/dist/util/raw.js +11 -0
  531. package/dist/util/raw.js.map +1 -0
  532. package/dist/util/sql.util.d.ts +22 -0
  533. package/dist/util/sql.util.d.ts.map +1 -0
  534. package/dist/util/sql.util.js +88 -0
  535. package/dist/util/sql.util.js.map +1 -0
  536. package/dist/util/string.util.d.ts +29 -0
  537. package/dist/util/string.util.d.ts.map +1 -0
  538. package/dist/util/string.util.js +91 -0
  539. package/dist/util/string.util.js.map +1 -0
  540. package/package.json +146 -0
@@ -0,0 +1,628 @@
1
+ import { AbstractDialect } from '../dialect/index.js';
2
+ import { getMeta } from '../entity/index.js';
3
+ import { areTypesEqual, canonicalToSql, fieldOptionsToCanonical, sqlToCanonical } from '../schema/canonicalType.js';
4
+ import { SchemaASTBuilder } from '../schema/schemaASTBuilder.js';
5
+ import { escapeSqlId, getKeys, isAutoIncrement } from '../util/index.js';
6
+ import { formatDefaultValue } from './builder/expressions.js';
7
+ /**
8
+ * Unified SQL schema generator.
9
+ * Parameterized by dialect to handle Postgres, MySQL, MariaDB, and SQLite.
10
+ */
11
+ export class SqlSchemaGenerator extends AbstractDialect {
12
+ /**
13
+ * Escape an identifier (table name, column name, etc.)
14
+ */
15
+ escapeId(identifier) {
16
+ return escapeSqlId(identifier, this.config.quoteChar);
17
+ }
18
+ /**
19
+ * Primary key type for auto-increment integer IDs
20
+ */
21
+ get serialPrimaryKeyType() {
22
+ return this.config.serialPrimaryKey;
23
+ }
24
+ // ============================================================================
25
+ // CanonicalType Integration (Unified Type System)
26
+ // ============================================================================
27
+ /**
28
+ * Convert FieldOptions to CanonicalType using the unified type system.
29
+ */
30
+ getCanonicalType(field, fieldType) {
31
+ return fieldOptionsToCanonical(field, fieldType);
32
+ }
33
+ /**
34
+ * Convert CanonicalType to SQL type string for this dialect.
35
+ * Also handles legacy string types for backward compatibility.
36
+ */
37
+ canonicalTypeToSql(type) {
38
+ // Handle legacy string types
39
+ if (typeof type === 'string') {
40
+ return type;
41
+ }
42
+ return canonicalToSql(type, this.dialect);
43
+ }
44
+ // ============================================================================
45
+ // SchemaGenerator Implementation
46
+ // ============================================================================
47
+ generateCreateTable(entity, options = {}) {
48
+ const builder = new SchemaASTBuilder(this.namingStrategy);
49
+ const ast = builder.fromEntities([entity], {
50
+ resolveTableName: this.resolveTableName.bind(this),
51
+ resolveColumnName: this.resolveColumnName.bind(this),
52
+ });
53
+ const tableNode = ast.getTables()[0];
54
+ return this.generateCreateTableFromNode(tableNode, options);
55
+ }
56
+ generateDropTable(entity) {
57
+ const meta = getMeta(entity);
58
+ const tableName = this.resolveTableName(entity, meta);
59
+ return `DROP TABLE IF EXISTS ${this.escapeId(tableName)};`;
60
+ }
61
+ generateAlterTable(diff) {
62
+ const statements = [];
63
+ const tableName = this.escapeId(diff.tableName);
64
+ // Add new columns
65
+ if (diff.columnsToAdd?.length) {
66
+ for (const column of diff.columnsToAdd) {
67
+ const colDef = this.generateColumnDefinitionFromSchema(column);
68
+ statements.push(`ALTER TABLE ${tableName} ADD COLUMN ${colDef};`);
69
+ }
70
+ }
71
+ // Alter existing columns
72
+ if (diff.columnsToAlter?.length) {
73
+ for (const { to } of diff.columnsToAlter) {
74
+ const colDef = this.generateColumnDefinitionFromSchema(to);
75
+ const colStatements = this.generateAlterColumnStatements(diff.tableName, to, colDef);
76
+ statements.push(...colStatements);
77
+ }
78
+ }
79
+ // Drop columns
80
+ if (diff.columnsToDrop?.length) {
81
+ for (const columnName of diff.columnsToDrop) {
82
+ statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(columnName)};`);
83
+ }
84
+ }
85
+ // Add indexes
86
+ if (diff.indexesToAdd?.length) {
87
+ for (const index of diff.indexesToAdd) {
88
+ statements.push(this.generateCreateIndex(diff.tableName, index));
89
+ }
90
+ }
91
+ // Drop indexes
92
+ if (diff.indexesToDrop?.length) {
93
+ for (const indexName of diff.indexesToDrop) {
94
+ statements.push(this.generateDropIndex(diff.tableName, indexName));
95
+ }
96
+ }
97
+ return statements;
98
+ }
99
+ generateAlterTableDown(diff) {
100
+ const statements = [];
101
+ const tableName = this.escapeId(diff.tableName);
102
+ // Reverse column additions by dropping them
103
+ if (diff.columnsToAdd?.length) {
104
+ for (const column of diff.columnsToAdd) {
105
+ statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(column.name)};`);
106
+ }
107
+ }
108
+ // Reverse column alterations by restoring original schema
109
+ if (diff.columnsToAlter?.length) {
110
+ for (const { from } of diff.columnsToAlter) {
111
+ const colDef = this.generateColumnDefinitionFromSchema(from, { includePrimaryKey: false });
112
+ const colStatements = this.generateAlterColumnStatements(diff.tableName, from, colDef);
113
+ statements.push(...colStatements);
114
+ }
115
+ }
116
+ // Reverse index additions by dropping them
117
+ if (diff.indexesToAdd?.length) {
118
+ for (const index of diff.indexesToAdd) {
119
+ statements.push(this.generateDropIndex(diff.tableName, index.name));
120
+ }
121
+ }
122
+ if (diff.columnsToDrop?.length || diff.indexesToDrop?.length) {
123
+ statements.push(`-- TODO: Manual reversal needed for dropped columns/indexes`);
124
+ }
125
+ return statements;
126
+ }
127
+ generateCreateIndex(tableName, index) {
128
+ const unique = index.unique ? 'UNIQUE ' : '';
129
+ const columns = index.columns.map((c) => this.escapeId(c)).join(', ');
130
+ const ifNotExists = this.config.features.indexIfNotExists ? 'IF NOT EXISTS ' : '';
131
+ return `CREATE ${unique}INDEX ${ifNotExists}${this.escapeId(index.name)} ON ${this.escapeId(tableName)} (${columns});`;
132
+ }
133
+ generateDropIndex(tableName, indexName) {
134
+ if (this.dialect === 'mysql' || this.dialect === 'mariadb') {
135
+ return `DROP INDEX ${this.escapeId(indexName)} ON ${this.escapeId(tableName)};`;
136
+ }
137
+ return `DROP INDEX IF EXISTS ${this.escapeId(indexName)};`;
138
+ }
139
+ /**
140
+ * Generate column definition from a ColumnSchema object
141
+ */
142
+ generateColumnDefinitionFromSchema(column, options = {}) {
143
+ const { includePrimaryKey = true, includeUnique = true } = options;
144
+ let type = column.type;
145
+ if (!type.includes('(')) {
146
+ if (column.precision !== undefined) {
147
+ if (column.scale !== undefined) {
148
+ type += `(${column.precision}, ${column.scale})`;
149
+ }
150
+ else {
151
+ type += `(${column.precision})`;
152
+ }
153
+ }
154
+ else if (column.length !== undefined) {
155
+ type += `(${column.length})`;
156
+ }
157
+ }
158
+ if (!includePrimaryKey) {
159
+ type = type.replace(/\s+PRIMARY\s+KEY/i, '');
160
+ }
161
+ let definition = `${this.escapeId(column.name)} ${type}`;
162
+ if (includePrimaryKey && column.isPrimaryKey && !type.includes('PRIMARY KEY')) {
163
+ definition += ' PRIMARY KEY';
164
+ }
165
+ if (!column.nullable && !column.isPrimaryKey) {
166
+ definition += ' NOT NULL';
167
+ }
168
+ if (includeUnique && column.isUnique && !column.isPrimaryKey) {
169
+ definition += ' UNIQUE';
170
+ }
171
+ if (column.defaultValue !== undefined) {
172
+ definition += ` DEFAULT ${this.formatDefaultValue(column.defaultValue)}`;
173
+ }
174
+ if (column.comment) {
175
+ definition += this.generateColumnComment(column.name, column.comment);
176
+ }
177
+ return definition;
178
+ }
179
+ getSqlType(field, fieldType) {
180
+ // If field has a reference, inherit type from the target primary key
181
+ const reference = field.references ?? field.reference;
182
+ if (reference) {
183
+ const refEntity = reference();
184
+ const refMeta = getMeta(refEntity);
185
+ const refIdField = refMeta.fields[refMeta.id];
186
+ return this.getSqlType({ ...refIdField, references: undefined, reference: undefined, isId: undefined, autoIncrement: false }, refIdField.type);
187
+ }
188
+ // Get canonical type and convert to SQL
189
+ const canonical = this.getCanonicalType(field, fieldType);
190
+ // Special case for serial primary keys
191
+ if (isAutoIncrement(field, field.isId === true)) {
192
+ return this.serialPrimaryKeyType;
193
+ }
194
+ return this.canonicalTypeToSql(canonical);
195
+ }
196
+ /**
197
+ * Get the boolean type for this database
198
+ */
199
+ getBooleanType() {
200
+ return this.canonicalTypeToSql({ category: 'boolean' });
201
+ }
202
+ /**
203
+ * Generate ALTER COLUMN statements (database-specific)
204
+ */
205
+ generateAlterColumnStatements(tableName, column, newDefinition) {
206
+ const table = this.escapeId(tableName);
207
+ const colName = this.escapeId(column.name);
208
+ if (this.config.alterColumnSyntax === 'none') {
209
+ throw new Error(`${this.dialect}: Cannot alter column "${column.name}" - you must recreate the table. ` +
210
+ `This database does not support ALTER COLUMN.`);
211
+ }
212
+ if (this.dialect === 'postgres') {
213
+ const statements = [];
214
+ // PostgreSQL uses separate ALTER COLUMN clauses for different changes
215
+ // 1. Change type
216
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} TYPE ${column.type};`);
217
+ // 2. Change nullability
218
+ if (column.nullable) {
219
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} DROP NOT NULL;`);
220
+ }
221
+ else {
222
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} SET NOT NULL;`);
223
+ }
224
+ // 3. Change default value
225
+ if (column.defaultValue !== undefined) {
226
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} SET DEFAULT ${this.formatDefaultValue(column.defaultValue)};`);
227
+ }
228
+ else {
229
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} DROP DEFAULT;`);
230
+ }
231
+ return statements;
232
+ }
233
+ return [`ALTER TABLE ${table} ${this.config.alterColumnSyntax} ${newDefinition};`];
234
+ }
235
+ /**
236
+ * Get table options (e.g., ENGINE for MySQL)
237
+ */
238
+ getTableOptions(_meta) {
239
+ return this.config.tableOptions ? ` ${this.config.tableOptions}` : '';
240
+ }
241
+ /**
242
+ * Generate column comment clause (if supported)
243
+ */
244
+ generateColumnComment(columnName, comment) {
245
+ if (this.dialect === 'mysql' || this.dialect === 'mariadb') {
246
+ const escapedComment = comment.replace(/'/g, "''");
247
+ return ` COMMENT '${escapedComment}'`;
248
+ }
249
+ return '';
250
+ }
251
+ /**
252
+ * Format a default value for SQL
253
+ */
254
+ formatDefaultValue(value) {
255
+ if (this.dialect === 'sqlite' && typeof value === 'boolean') {
256
+ return value ? '1' : '0';
257
+ }
258
+ return formatDefaultValue(value);
259
+ }
260
+ /**
261
+ * Compare an entity with a database table node and return the differences.
262
+ */
263
+ diffSchema(entity, currentTable) {
264
+ const meta = getMeta(entity);
265
+ if (!currentTable) {
266
+ return {
267
+ tableName: this.resolveTableName(entity, meta),
268
+ type: 'create',
269
+ };
270
+ }
271
+ const columnsToAdd = [];
272
+ const columnsToAlter = [];
273
+ const columnsToDrop = [];
274
+ const currentColumns = new Map(currentTable.columns);
275
+ const fieldKeys = getKeys(meta.fields);
276
+ for (const key of fieldKeys) {
277
+ const field = meta.fields[key];
278
+ if (!field || field.virtual)
279
+ continue;
280
+ const columnName = this.resolveColumnName(key, field);
281
+ const currentColumn = currentColumns.get(columnName);
282
+ if (!currentColumn) {
283
+ columnsToAdd.push(this.fieldToColumnSchema(key, field, meta));
284
+ }
285
+ else {
286
+ const desiredColumn = this.fieldToColumnSchema(key, field, meta);
287
+ const currentColumnSchema = this.columnNodeToSchema(currentColumn);
288
+ if (this.columnsNeedAlteration(currentColumnSchema, desiredColumn)) {
289
+ columnsToAlter.push({ from: currentColumnSchema, to: desiredColumn });
290
+ }
291
+ }
292
+ currentColumns.delete(columnName);
293
+ }
294
+ for (const [name] of currentColumns) {
295
+ columnsToDrop.push(name);
296
+ }
297
+ if (columnsToAdd.length === 0 && columnsToAlter.length === 0 && columnsToDrop.length === 0) {
298
+ return undefined;
299
+ }
300
+ return {
301
+ tableName: this.resolveTableName(entity, meta),
302
+ type: 'alter',
303
+ columnsToAdd: columnsToAdd.length > 0 ? columnsToAdd : undefined,
304
+ columnsToAlter: columnsToAlter.length > 0 ? columnsToAlter : undefined,
305
+ columnsToDrop: columnsToDrop.length > 0 ? columnsToDrop : undefined,
306
+ };
307
+ }
308
+ columnNodeToSchema(col) {
309
+ return {
310
+ name: col.name,
311
+ type: this.canonicalTypeToSql(col.type),
312
+ nullable: col.nullable,
313
+ defaultValue: col.defaultValue,
314
+ isPrimaryKey: col.isPrimaryKey,
315
+ isAutoIncrement: col.isAutoIncrement,
316
+ isUnique: col.isUnique,
317
+ comment: col.comment,
318
+ };
319
+ }
320
+ /**
321
+ * Convert field options to ColumnSchema
322
+ */
323
+ fieldToColumnSchema(fieldKey, field, meta) {
324
+ const isPrimaryKey = field.isId === true && meta.id === fieldKey;
325
+ return {
326
+ name: this.resolveColumnName(fieldKey, field),
327
+ type: this.getSqlType(field, field.type),
328
+ nullable: field.nullable ?? !isPrimaryKey,
329
+ defaultValue: field.defaultValue,
330
+ isPrimaryKey,
331
+ isAutoIncrement: isAutoIncrement(field, isPrimaryKey),
332
+ isUnique: field.unique ?? false,
333
+ length: field.length,
334
+ precision: field.precision,
335
+ scale: field.scale,
336
+ comment: field.comment,
337
+ };
338
+ }
339
+ /**
340
+ * Check if two columns differ enough to require alteration
341
+ */
342
+ columnsNeedAlteration(current, desired) {
343
+ if (current.isPrimaryKey && desired.isPrimaryKey) {
344
+ return false;
345
+ }
346
+ if (current.isPrimaryKey !== desired.isPrimaryKey)
347
+ return true;
348
+ if (current.nullable !== desired.nullable)
349
+ return true;
350
+ if (current.isUnique !== desired.isUnique)
351
+ return true;
352
+ if (!this.isTypeEqual(current, desired))
353
+ return true;
354
+ if (!this.isDefaultValueEqual(current.defaultValue, desired.defaultValue))
355
+ return true;
356
+ return false;
357
+ }
358
+ /**
359
+ * Compare two column types for equality using the canonical type system
360
+ */
361
+ isTypeEqual(current, desired) {
362
+ const typeA = sqlToCanonical(current.type);
363
+ const typeB = sqlToCanonical(desired.type);
364
+ return areTypesEqual(typeA, typeB);
365
+ }
366
+ /**
367
+ * Compare two default values for equality
368
+ */
369
+ isDefaultValueEqual(current, desired) {
370
+ if (current === desired)
371
+ return true;
372
+ if (current === undefined || desired === undefined)
373
+ return current === desired;
374
+ const normalize = (val) => {
375
+ if (val === null)
376
+ return 'null';
377
+ if (typeof val === 'string') {
378
+ let s = val.replace(/::[a-z_]+(\s+[a-z_]+)*(\[\])?$/i, '');
379
+ s = s.replace(/^'(.*)'$/, '$1');
380
+ if (s.toLowerCase() === 'null')
381
+ return 'null';
382
+ return s;
383
+ }
384
+ return typeof val === 'object' ? JSON.stringify(val) : String(val);
385
+ };
386
+ return normalize(current) === normalize(desired);
387
+ }
388
+ // ============================================================================
389
+ // SchemaAST Support Methods
390
+ // ============================================================================
391
+ /**
392
+ * Generate CREATE TABLE SQL from a TableNode.
393
+ */
394
+ generateCreateTableFromNode(table, options = {}) {
395
+ const columns = [];
396
+ const constraints = [];
397
+ for (const col of table.columns.values()) {
398
+ const colDef = this.generateColumnFromNode(col);
399
+ columns.push(colDef);
400
+ }
401
+ if (table.primaryKey.length > 1) {
402
+ const pkCols = table.primaryKey.map((c) => this.escapeId(c.name)).join(', ');
403
+ constraints.push(`PRIMARY KEY (${pkCols})`);
404
+ }
405
+ // Add table-level foreign keys if any
406
+ for (const rel of table.outgoingRelations) {
407
+ if (rel.from.columns.length > 0) {
408
+ const fromCols = rel.from.columns.map((c) => this.escapeId(c.name)).join(', ');
409
+ const toCols = rel.to.columns.map((c) => this.escapeId(c.name)).join(', ');
410
+ const constraintName = rel.name ? `CONSTRAINT ${this.escapeId(rel.name)} ` : '';
411
+ constraints.push(`${constraintName}FOREIGN KEY (${fromCols}) REFERENCES ${this.escapeId(rel.to.table.name)} (${toCols})` +
412
+ ` ON DELETE ${rel.onDelete ?? this.defaultForeignKeyAction} ON UPDATE ${rel.onUpdate ?? this.defaultForeignKeyAction}`);
413
+ }
414
+ }
415
+ const ifNotExists = options.ifNotExists && this.config.features.ifNotExists ? 'IF NOT EXISTS ' : '';
416
+ let sql = `CREATE TABLE ${ifNotExists}${this.escapeId(table.name)} (\n`;
417
+ sql += columns.map((col) => ` ${col}`).join(',\n');
418
+ if (constraints.length > 0) {
419
+ sql += ',\n';
420
+ sql += constraints.map((c) => ` ${c}`).join(',\n');
421
+ }
422
+ sql += '\n)';
423
+ if (this.config.tableOptions) {
424
+ sql += ` ${this.config.tableOptions}`;
425
+ }
426
+ sql += ';';
427
+ // Generate indexes as separate statements
428
+ const indexStatements = table.indexes.map((idx) => this.generateCreateIndexFromNode(idx, options)).join('\n');
429
+ return indexStatements ? `${sql}\n${indexStatements}` : sql;
430
+ }
431
+ /**
432
+ * Generate a column definition from a ColumnNode.
433
+ */
434
+ generateColumnFromNode(col) {
435
+ const colName = this.escapeId(col.name);
436
+ let sqlType = this.canonicalTypeToSql(col.type);
437
+ if (col.isPrimaryKey && col.isAutoIncrement) {
438
+ sqlType = this.serialPrimaryKeyType;
439
+ }
440
+ let def = `${colName} ${sqlType}`;
441
+ if (!col.nullable && !col.isPrimaryKey) {
442
+ def += ' NOT NULL';
443
+ }
444
+ if (col.isPrimaryKey && col.table.primaryKey.length === 1 && !sqlType.includes('PRIMARY KEY')) {
445
+ def += ' PRIMARY KEY';
446
+ }
447
+ if (col.isUnique && !col.isPrimaryKey) {
448
+ def += ' UNIQUE';
449
+ }
450
+ if (col.defaultValue !== undefined) {
451
+ def += ` DEFAULT ${this.formatDefaultValue(col.defaultValue)}`;
452
+ }
453
+ if (col.comment) {
454
+ def += this.generateColumnComment(col.name, col.comment);
455
+ }
456
+ return def;
457
+ }
458
+ /**
459
+ * Generate CREATE INDEX SQL from an IndexNode.
460
+ */
461
+ generateCreateIndexFromNode(index, options = {}) {
462
+ const uniqueStr = index.unique ? 'UNIQUE ' : '';
463
+ const columns = index.columns.map((c) => this.escapeId(c.name)).join(', ');
464
+ const tableName = this.escapeId(index.table.name);
465
+ const ifNotExists = options.ifNotExists && this.config.features.indexIfNotExists ? 'IF NOT EXISTS ' : '';
466
+ return `CREATE ${uniqueStr}INDEX ${ifNotExists}${this.escapeId(index.name)} ON ${tableName} (${columns});`;
467
+ }
468
+ /**
469
+ * Generate DROP TABLE SQL from a TableNode.
470
+ */
471
+ generateDropTableFromNode(table, options = {}) {
472
+ const ifExists = options.ifExists ? 'IF EXISTS ' : '';
473
+ return `DROP TABLE ${ifExists}${this.escapeId(table.name)};`;
474
+ }
475
+ // ============================================================================
476
+ // Phase 3: Builder Operation Methods (Moved forward for unification)
477
+ // ============================================================================
478
+ generateCreateTableFromDefinition(table, options = {}) {
479
+ const tableNode = this.tableDefinitionToNode(table);
480
+ return this.generateCreateTableFromNode(tableNode, options);
481
+ }
482
+ generateDropTableSql(tableName, options) {
483
+ const ifExists = options?.ifExists ? 'IF EXISTS ' : '';
484
+ // Use dialect-specific cascade support from config
485
+ const cascade = options?.cascade && this.config.features.dropTableCascade ? ' CASCADE' : '';
486
+ return `DROP TABLE ${ifExists}${this.escapeId(tableName)}${cascade};`;
487
+ }
488
+ generateRenameTableSql(oldName, newName) {
489
+ if (this.dialect === 'mysql' || this.dialect === 'mariadb') {
490
+ return `RENAME TABLE ${this.escapeId(oldName)} TO ${this.escapeId(newName)};`;
491
+ }
492
+ return `ALTER TABLE ${this.escapeId(oldName)} RENAME TO ${this.escapeId(newName)};`;
493
+ }
494
+ generateAddColumnSql(tableName, column) {
495
+ const colSql = this.generateColumnFromNode(this.fullColumnDefinitionToNode(column, tableName));
496
+ return `ALTER TABLE ${this.escapeId(tableName)} ADD COLUMN ${colSql};`;
497
+ }
498
+ generateAlterColumnSql(tableName, columnName, column) {
499
+ const colSql = this.generateColumnFromNode(this.fullColumnDefinitionToNode(column, tableName));
500
+ return this.generateAlterColumnStatements(tableName, { name: columnName, type: '' }, colSql).join('\n');
501
+ }
502
+ generateDropColumnSql(tableName, columnName) {
503
+ return `ALTER TABLE ${this.escapeId(tableName)} DROP COLUMN ${this.escapeId(columnName)};`;
504
+ }
505
+ generateRenameColumnSql(tableName, oldName, newName) {
506
+ return `ALTER TABLE ${this.escapeId(tableName)} RENAME COLUMN ${this.escapeId(oldName)} TO ${this.escapeId(newName)};`;
507
+ }
508
+ generateCreateIndexSql(tableName, index) {
509
+ return this.generateCreateIndex(tableName, index);
510
+ }
511
+ generateDropIndexSql(tableName, indexName) {
512
+ return this.generateDropIndex(tableName, indexName);
513
+ }
514
+ generateAddForeignKeySql(tableName, foreignKey) {
515
+ const fkCols = foreignKey.columns.map((c) => this.escapeId(c)).join(', ');
516
+ const refCols = foreignKey.referencesColumns.map((c) => this.escapeId(c)).join(', ');
517
+ const constraintName = foreignKey.name
518
+ ? this.escapeId(foreignKey.name)
519
+ : this.escapeId(`fk_${tableName}_${foreignKey.columns.join('_')}`);
520
+ if (!this.config.features.foreignKeyAlter) {
521
+ throw new Error(`Dialect ${this.dialect} does not support adding foreign keys to existing tables`);
522
+ }
523
+ return (`ALTER TABLE ${this.escapeId(tableName)} ADD CONSTRAINT ${constraintName} ` +
524
+ `FOREIGN KEY (${fkCols}) REFERENCES ${this.escapeId(foreignKey.referencesTable)} (${refCols}) ` +
525
+ `ON DELETE ${foreignKey.onDelete ?? this.defaultForeignKeyAction} ON UPDATE ${foreignKey.onUpdate ?? this.defaultForeignKeyAction};`);
526
+ }
527
+ generateDropForeignKeySql(tableName, constraintName) {
528
+ return `ALTER TABLE ${this.escapeId(tableName)} ${this.config.dropForeignKeySyntax} ${this.escapeId(constraintName)};`;
529
+ }
530
+ tableDefinitionToNode(def) {
531
+ const columns = new Map();
532
+ const pkNodes = [];
533
+ const table = {
534
+ name: def.name,
535
+ columns,
536
+ primaryKey: [], // placeholder
537
+ indexes: [],
538
+ schema: { tables: new Map(), relationships: [], indexes: [] },
539
+ incomingRelations: [],
540
+ outgoingRelations: [],
541
+ comment: def.comment,
542
+ };
543
+ for (const colDef of def.columns) {
544
+ const node = this.fullColumnDefinitionToNode(colDef, def.name);
545
+ node.table = table;
546
+ columns.set(node.name, node);
547
+ if (node.isPrimaryKey) {
548
+ pkNodes.push(node);
549
+ }
550
+ }
551
+ const finalPrimaryKey = def.primaryKey
552
+ ? def.primaryKey.map((name) => columns.get(name)).filter((c) => c !== undefined)
553
+ : pkNodes;
554
+ table.primaryKey = finalPrimaryKey;
555
+ for (const idxDef of def.indexes) {
556
+ const indexNode = {
557
+ name: idxDef.name,
558
+ table,
559
+ columns: idxDef.columns.map((name) => columns.get(name)).filter((c) => c !== undefined),
560
+ unique: idxDef.unique,
561
+ };
562
+ table.indexes.push(indexNode);
563
+ }
564
+ for (const fkDef of def.foreignKeys) {
565
+ const relNode = {
566
+ name: fkDef.name ?? `fk_${def.name}_${fkDef.columns.join('_')}`,
567
+ type: 'ManyToOne', // Builder default
568
+ from: {
569
+ table,
570
+ columns: fkDef.columns.map((name) => columns.get(name)).filter((c) => c !== undefined),
571
+ },
572
+ to: {
573
+ table: { name: fkDef.referencesTable },
574
+ columns: fkDef.referencesColumns.map((name) => ({ name })),
575
+ },
576
+ onDelete: fkDef.onDelete,
577
+ onUpdate: fkDef.onUpdate,
578
+ };
579
+ table.outgoingRelations.push(relNode);
580
+ }
581
+ return table;
582
+ }
583
+ fullColumnDefinitionToNode(col, tableName) {
584
+ return {
585
+ name: col.name,
586
+ type: col.type,
587
+ nullable: col.nullable,
588
+ defaultValue: col.defaultValue,
589
+ isPrimaryKey: col.primaryKey,
590
+ isAutoIncrement: col.autoIncrement,
591
+ isUnique: col.unique,
592
+ comment: col.comment,
593
+ table: { name: tableName },
594
+ referencedBy: [],
595
+ references: col.foreignKey
596
+ ? {
597
+ name: `fk_${tableName}_${col.name}`,
598
+ type: 'ManyToOne',
599
+ from: { table: { name: tableName }, columns: [] },
600
+ to: {
601
+ table: { name: col.foreignKey.table },
602
+ columns: col.foreignKey.columns.map((name) => ({ name })),
603
+ },
604
+ onDelete: col.foreignKey.onDelete,
605
+ onUpdate: col.foreignKey.onUpdate,
606
+ }
607
+ : undefined,
608
+ };
609
+ }
610
+ }
611
+ import { MongoSchemaGenerator } from './generator/mongoSchemaGenerator.js';
612
+ export { MongoSchemaGenerator };
613
+ /**
614
+ * Factory function to create a SchemaGenerator for a specific dialect.
615
+ * Returns undefined for unsupported dialects.
616
+ */
617
+ export function createSchemaGenerator(dialect, namingStrategy, defaultForeignKeyAction) {
618
+ if (dialect === 'mongodb') {
619
+ return new MongoSchemaGenerator(namingStrategy, defaultForeignKeyAction);
620
+ }
621
+ // Check if dialect is supported (has config)
622
+ const supportedDialects = ['postgres', 'mysql', 'mariadb', 'sqlite'];
623
+ if (!supportedDialects.includes(dialect)) {
624
+ return undefined;
625
+ }
626
+ return new SqlSchemaGenerator(dialect, namingStrategy, defaultForeignKeyAction);
627
+ }
628
+ //# sourceMappingURL=schemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaGenerator.js","sourceRoot":"","sources":["../../src/migrate/schemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBjE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD;;OAEG;IACO,QAAQ,CAAC,UAAkB;QACnC,OAAO,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,IAAc,oBAAoB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,kDAAkD;IAClD,+EAA+E;IAE/E;;OAEG;IACO,gBAAgB,CAAC,KAAmB,EAAE,SAAmB;QACjE,OAAO,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACO,kBAAkB,CAAC,IAA4B;QACvD,6BAA6B;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E,mBAAmB,CAAI,MAAe,EAAE,UAAqC,EAAE;QAC7E,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE;YACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACrD,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,iBAAiB,CAAI,MAAe;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;IAC7D,CAAC;IAED,kBAAkB,CAAC,IAAgB;QACjC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhD,kBAAkB;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;gBAC/D,UAAU,CAAC,IAAI,CAAC,eAAe,SAAS,eAAe,MAAM,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;gBAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;gBACrF,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC5C,UAAU,CAAC,IAAI,CAAC,eAAe,SAAS,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,cAAc;QACd,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,sBAAsB,CAAC,IAAgB;QACrC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhD,4CAA4C;QAC5C,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,eAAe,SAAS,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACvF,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAC7D,UAAU,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mBAAmB,CAAC,SAAiB,EAAE,KAAkB;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,UAAU,MAAM,SAAS,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,OAAO,IAAI,CAAC;IACzH,CAAC;IAED,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;QACpD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3D,OAAO,cAAc,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;QAClF,CAAC;QACD,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,kCAAkC,CACvC,MAAoB,EACpB,UAAoE,EAAE;QAEtE,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAEnE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;gBAClC,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvC,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,UAAU,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAEzD,IAAI,iBAAiB,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9E,UAAU,IAAI,cAAc,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7C,UAAU,IAAI,WAAW,CAAC;QAC5B,CAAC;QAED,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7D,UAAU,IAAI,SAAS,CAAC;QAC1B,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,IAAI,YAAY,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3E,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,UAAU,CAAC,KAAmB,EAAE,SAAmB;QACxD,qEAAqE;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,UAAU,CACpB,EAAE,GAAG,UAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,EACtG,UAAW,CAAC,IAAI,CACjB,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE1D,uCAAuC;QACvC,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,oBAAoB,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,6BAA6B,CAAC,SAAiB,EAAE,MAAoB,EAAE,aAAqB;QACjG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,OAAO,0BAA0B,MAAM,CAAC,IAAI,mCAAmC;gBACrF,8CAA8C,CACjD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,sEAAsE;YACtE,iBAAiB;YACjB,UAAU,CAAC,IAAI,CAAC,eAAe,KAAK,iBAAiB,OAAO,SAAS,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAErF,wBAAwB;YACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,UAAU,CAAC,IAAI,CAAC,eAAe,KAAK,iBAAiB,OAAO,iBAAiB,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,eAAe,KAAK,iBAAiB,OAAO,gBAAgB,CAAC,CAAC;YAChF,CAAC;YAED,0BAA0B;YAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CACb,eAAe,KAAK,iBAAiB,OAAO,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAC5G,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,eAAe,KAAK,iBAAiB,OAAO,gBAAgB,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,aAAa,GAAG,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACI,eAAe,CAAI,KAAoB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,UAAkB,EAAE,OAAe;QAC9D,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,aAAa,cAAc,GAAG,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,KAAc;QACtC,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC;QACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,UAAU,CAAI,MAAe,EAAE,YAAmC;QAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9C,IAAI,EAAE,QAAQ;aACf,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAmB,EAAE,CAAC;QACxC,MAAM,cAAc,GAA+C,EAAE,CAAC;QACtE,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAqB,YAAY,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAkB,CAAC;QAExD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;gBAAE,SAAS;YAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAErD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjE,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,CAAC;oBACnE,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;YACpC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;YAC9C,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAChE,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACtE,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,GAAe;QACxC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAI,QAAgB,EAAE,KAAmB,EAAE,IAAmB;QACzF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC;QAEjE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;YACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,YAAY;YACzC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY;YACZ,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;YACrD,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;YAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,OAAqB,EAAE,OAAqB;QAC1E,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvF,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,OAAqB,EAAE,OAAqB;QAChE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,OAAgB,EAAE,OAAgB;QAC9D,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,KAAK,OAAO,CAAC;QAE/E,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE;YACzC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAC9C,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,+EAA+E;IAC/E,4BAA4B;IAC5B,+EAA+E;IAE/E;;OAEG;IACH,2BAA2B,CAAC,KAAgB,EAAE,UAAqC,EAAE;QACnF,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,WAAW,CAAC,IAAI,CAAC,gBAAgB,MAAM,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3E,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,WAAW,CAAC,IAAI,CACd,GAAG,cAAc,gBAAgB,QAAQ,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG;oBACrG,cAAc,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,cAAc,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,EAAE,CACzH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,IAAI,GAAG,GAAG,gBAAgB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACxE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,GAAG,IAAI,KAAK,CAAC;YACb,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,GAAG,IAAI,KAAK,CAAC;QAEb,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,CAAC;QAED,GAAG,IAAI,GAAG,CAAC;QAEX,0CAA0C;QAC1C,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9G,OAAO,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9D,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,GAAe;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACvC,GAAG,IAAI,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9F,GAAG,IAAI,cAAc,CAAC;QACxB,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtC,GAAG,IAAI,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnC,GAAG,IAAI,YAAY,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,2BAA2B,CAAC,KAAgB,EAAE,UAAqC,EAAE;QACnF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzG,OAAO,UAAU,SAAS,SAAS,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,KAAK,OAAO,IAAI,CAAC;IAC7G,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,KAAgB,EAAE,UAAkC,EAAE;QAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,cAAc,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/D,CAAC;IAED,+EAA+E;IAC/E,qEAAqE;IACrE,+EAA+E;IAE/E,iCAAiC,CAAC,KAAsB,EAAE,UAAqC,EAAE;QAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB,CAAC,SAAiB,EAAE,OAAmD;QACzF,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,mDAAmD;QACnD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,OAAO,cAAc,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,CAAC;IACxE,CAAC;IAED,sBAAsB,CAAC,OAAe,EAAE,OAAe;QACrD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3D,OAAO,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAChF,CAAC;QACD,OAAO,eAAe,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IACtF,CAAC;IAED,oBAAoB,CAAC,SAAiB,EAAE,MAA4B;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/F,OAAO,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,MAAM,GAAG,CAAC;IACzE,CAAC;IAED,sBAAsB,CAAC,SAAiB,EAAE,UAAkB,EAAE,MAA4B;QACxF,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,6BAA6B,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAkB,EAAE,MAAM,CAAC,CAAC,IAAI,CAC/G,IAAI,CACL,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,SAAiB,EAAE,UAAkB;QACzD,OAAO,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7F,CAAC;IAED,uBAAuB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAe;QACzE,OAAO,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IACzH,CAAC;IAED,sBAAsB,CAAC,SAAiB,EAAE,KAAkB;QAC1D,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,wBAAwB,CAAC,SAAiB,EAAE,UAAqC;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI;YACpC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,0DAA0D,CAAC,CAAC;QACrG,CAAC;QAED,OAAO,CACL,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,cAAc,GAAG;YAC3E,gBAAgB,MAAM,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,OAAO,IAAI;YAC/F,aAAa,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,cAAc,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,GAAG,CACrI,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,SAAiB,EAAE,cAAsB;QACjE,OAAO,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;IACzH,CAAC;IAEO,qBAAqB,CAAC,GAAoB;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC9C,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO;YACP,UAAU,EAAE,EAAE,EAAE,cAAc;YAC9B,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7D,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,EAAE;YACrB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9D,IAA6B,CAAC,KAAK,GAAG,KAAK,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,GAAG,CAAC,UAAU;YACpC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;YACjG,CAAC,CAAC,OAAO,CAAC;QAEX,KAAsC,CAAC,UAAU,GAAG,eAAe,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,SAAS,GAAc;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;gBACxG,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,OAAO,GAAqB;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC/D,IAAI,EAAE,WAAW,EAAE,kBAAkB;gBACrC,IAAI,EAAE;oBACJ,KAAK;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;iBACxG;gBACD,EAAE,EAAE;oBACF,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAe;oBACnD,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAe,CAAC;iBACzE;gBACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC;YACF,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,0BAA0B,CAAC,GAAyB,EAAE,SAAiB;QAC7E,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,YAAY,EAAE,GAAG,CAAC,UAAU;YAC5B,eAAe,EAAE,GAAG,CAAC,aAAa;YAClC,QAAQ,EAAE,GAAG,CAAC,MAAM;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAe;YACvC,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU;gBACxB,CAAC,CAAC;oBACE,IAAI,EAAE,MAAM,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE;oBACnC,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAe,EAAE,OAAO,EAAE,EAAE,EAAE;oBAC9D,EAAE,EAAE;wBACF,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,EAAe;wBAClD,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAe,CAAC;qBACxE;oBACD,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ;oBACjC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ;iBAClC;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgB,EAChB,cAA+B,EAC/B,uBAA0C;IAE1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,IAAI,oBAAoB,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;IAC3E,CAAC;IACD,6CAA6C;IAC7C,MAAM,iBAAiB,GAAc,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAClF,CAAC"}