@cicore/cli 1.0.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 (337) hide show
  1. package/bin/ci.js +13 -0
  2. package/dist/commands/addon/api-actions.d.ts +45 -0
  3. package/dist/commands/addon/api-actions.d.ts.map +1 -0
  4. package/dist/commands/addon/api-actions.js +281 -0
  5. package/dist/commands/addon/api-actions.js.map +1 -0
  6. package/dist/commands/addon/build.d.ts +11 -0
  7. package/dist/commands/addon/build.d.ts.map +1 -0
  8. package/dist/commands/addon/build.js +182 -0
  9. package/dist/commands/addon/build.js.map +1 -0
  10. package/dist/commands/addon/create.d.ts +11 -0
  11. package/dist/commands/addon/create.d.ts.map +1 -0
  12. package/dist/commands/addon/create.js +1186 -0
  13. package/dist/commands/addon/create.js.map +1 -0
  14. package/dist/commands/addon/delete.d.ts +13 -0
  15. package/dist/commands/addon/delete.d.ts.map +1 -0
  16. package/dist/commands/addon/delete.js +83 -0
  17. package/dist/commands/addon/delete.js.map +1 -0
  18. package/dist/commands/addon/deploy.d.ts +27 -0
  19. package/dist/commands/addon/deploy.d.ts.map +1 -0
  20. package/dist/commands/addon/deploy.js +459 -0
  21. package/dist/commands/addon/deploy.js.map +1 -0
  22. package/dist/commands/addon/dev-deploy.d.ts +31 -0
  23. package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
  24. package/dist/commands/addon/dev-deploy.js +128 -0
  25. package/dist/commands/addon/dev-deploy.js.map +1 -0
  26. package/dist/commands/addon/dev.d.ts +36 -0
  27. package/dist/commands/addon/dev.d.ts.map +1 -0
  28. package/dist/commands/addon/dev.js +323 -0
  29. package/dist/commands/addon/dev.js.map +1 -0
  30. package/dist/commands/addon/extract-classes.d.ts +23 -0
  31. package/dist/commands/addon/extract-classes.d.ts.map +1 -0
  32. package/dist/commands/addon/extract-classes.js +281 -0
  33. package/dist/commands/addon/extract-classes.js.map +1 -0
  34. package/dist/commands/addon/generate-safelist.d.ts +24 -0
  35. package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
  36. package/dist/commands/addon/generate-safelist.js +276 -0
  37. package/dist/commands/addon/generate-safelist.js.map +1 -0
  38. package/dist/commands/addon/index.d.ts +19 -0
  39. package/dist/commands/addon/index.d.ts.map +1 -0
  40. package/dist/commands/addon/index.js +296 -0
  41. package/dist/commands/addon/index.js.map +1 -0
  42. package/dist/commands/addon/init-repo.d.ts +25 -0
  43. package/dist/commands/addon/init-repo.d.ts.map +1 -0
  44. package/dist/commands/addon/init-repo.js +171 -0
  45. package/dist/commands/addon/init-repo.js.map +1 -0
  46. package/dist/commands/addon/install.d.ts +23 -0
  47. package/dist/commands/addon/install.d.ts.map +1 -0
  48. package/dist/commands/addon/install.js +84 -0
  49. package/dist/commands/addon/install.js.map +1 -0
  50. package/dist/commands/addon/list.d.ts +10 -0
  51. package/dist/commands/addon/list.d.ts.map +1 -0
  52. package/dist/commands/addon/list.js +102 -0
  53. package/dist/commands/addon/list.js.map +1 -0
  54. package/dist/commands/addon/manifest-refresh.d.ts +17 -0
  55. package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
  56. package/dist/commands/addon/manifest-refresh.js +48 -0
  57. package/dist/commands/addon/manifest-refresh.js.map +1 -0
  58. package/dist/commands/addon/migrate.d.ts +40 -0
  59. package/dist/commands/addon/migrate.d.ts.map +1 -0
  60. package/dist/commands/addon/migrate.js +236 -0
  61. package/dist/commands/addon/migrate.js.map +1 -0
  62. package/dist/commands/addon/publish.d.ts +33 -0
  63. package/dist/commands/addon/publish.d.ts.map +1 -0
  64. package/dist/commands/addon/publish.js +236 -0
  65. package/dist/commands/addon/publish.js.map +1 -0
  66. package/dist/commands/addon/scaffold-quality.d.ts +21 -0
  67. package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
  68. package/dist/commands/addon/scaffold-quality.js +90 -0
  69. package/dist/commands/addon/scaffold-quality.js.map +1 -0
  70. package/dist/commands/addon/sign.d.ts +9 -0
  71. package/dist/commands/addon/sign.d.ts.map +1 -0
  72. package/dist/commands/addon/sign.js +83 -0
  73. package/dist/commands/addon/sign.js.map +1 -0
  74. package/dist/commands/addon/toggle.d.ts +6 -0
  75. package/dist/commands/addon/toggle.d.ts.map +1 -0
  76. package/dist/commands/addon/toggle.js +46 -0
  77. package/dist/commands/addon/toggle.js.map +1 -0
  78. package/dist/commands/agent/index.d.ts +34 -0
  79. package/dist/commands/agent/index.d.ts.map +1 -0
  80. package/dist/commands/agent/index.js +564 -0
  81. package/dist/commands/agent/index.js.map +1 -0
  82. package/dist/commands/brand/index.d.ts +54 -0
  83. package/dist/commands/brand/index.d.ts.map +1 -0
  84. package/dist/commands/brand/index.js +367 -0
  85. package/dist/commands/brand/index.js.map +1 -0
  86. package/dist/commands/build/index.d.ts +53 -0
  87. package/dist/commands/build/index.d.ts.map +1 -0
  88. package/dist/commands/build/index.js +726 -0
  89. package/dist/commands/build/index.js.map +1 -0
  90. package/dist/commands/cache/flush-local.d.ts +31 -0
  91. package/dist/commands/cache/flush-local.d.ts.map +1 -0
  92. package/dist/commands/cache/flush-local.js +161 -0
  93. package/dist/commands/cache/flush-local.js.map +1 -0
  94. package/dist/commands/cache/index.d.ts +14 -0
  95. package/dist/commands/cache/index.d.ts.map +1 -0
  96. package/dist/commands/cache/index.js +453 -0
  97. package/dist/commands/cache/index.js.map +1 -0
  98. package/dist/commands/check/index.d.ts +8 -0
  99. package/dist/commands/check/index.d.ts.map +1 -0
  100. package/dist/commands/check/index.js +1316 -0
  101. package/dist/commands/check/index.js.map +1 -0
  102. package/dist/commands/cloudflare/index.d.ts +8 -0
  103. package/dist/commands/cloudflare/index.d.ts.map +1 -0
  104. package/dist/commands/cloudflare/index.js +453 -0
  105. package/dist/commands/cloudflare/index.js.map +1 -0
  106. package/dist/commands/core/create.d.ts +12 -0
  107. package/dist/commands/core/create.d.ts.map +1 -0
  108. package/dist/commands/core/create.js +206 -0
  109. package/dist/commands/core/create.js.map +1 -0
  110. package/dist/commands/core/delete.d.ts +11 -0
  111. package/dist/commands/core/delete.d.ts.map +1 -0
  112. package/dist/commands/core/delete.js +64 -0
  113. package/dist/commands/core/delete.js.map +1 -0
  114. package/dist/commands/core/env.d.ts +12 -0
  115. package/dist/commands/core/env.d.ts.map +1 -0
  116. package/dist/commands/core/env.js +95 -0
  117. package/dist/commands/core/env.js.map +1 -0
  118. package/dist/commands/core/health.d.ts +6 -0
  119. package/dist/commands/core/health.d.ts.map +1 -0
  120. package/dist/commands/core/health.js +215 -0
  121. package/dist/commands/core/health.js.map +1 -0
  122. package/dist/commands/core/index.d.ts +15 -0
  123. package/dist/commands/core/index.d.ts.map +1 -0
  124. package/dist/commands/core/index.js +86 -0
  125. package/dist/commands/core/index.js.map +1 -0
  126. package/dist/commands/core/list.d.ts +11 -0
  127. package/dist/commands/core/list.d.ts.map +1 -0
  128. package/dist/commands/core/list.js +58 -0
  129. package/dist/commands/core/list.js.map +1 -0
  130. package/dist/commands/core/rebuild.d.ts +13 -0
  131. package/dist/commands/core/rebuild.d.ts.map +1 -0
  132. package/dist/commands/core/rebuild.js +119 -0
  133. package/dist/commands/core/rebuild.js.map +1 -0
  134. package/dist/commands/db/index.d.ts +23 -0
  135. package/dist/commands/db/index.d.ts.map +1 -0
  136. package/dist/commands/db/index.js +355 -0
  137. package/dist/commands/db/index.js.map +1 -0
  138. package/dist/commands/db/promote-silo.d.ts +320 -0
  139. package/dist/commands/db/promote-silo.d.ts.map +1 -0
  140. package/dist/commands/db/promote-silo.js +930 -0
  141. package/dist/commands/db/promote-silo.js.map +1 -0
  142. package/dist/commands/db/relocate.d.ts +41 -0
  143. package/dist/commands/db/relocate.d.ts.map +1 -0
  144. package/dist/commands/db/relocate.js +482 -0
  145. package/dist/commands/db/relocate.js.map +1 -0
  146. package/dist/commands/db/rollback-silo.d.ts +44 -0
  147. package/dist/commands/db/rollback-silo.d.ts.map +1 -0
  148. package/dist/commands/db/rollback-silo.js +402 -0
  149. package/dist/commands/db/rollback-silo.js.map +1 -0
  150. package/dist/commands/deploy/index.d.ts +26 -0
  151. package/dist/commands/deploy/index.d.ts.map +1 -0
  152. package/dist/commands/deploy/index.js +107 -0
  153. package/dist/commands/deploy/index.js.map +1 -0
  154. package/dist/commands/devops/index.d.ts +6 -0
  155. package/dist/commands/devops/index.d.ts.map +1 -0
  156. package/dist/commands/devops/index.js +220 -0
  157. package/dist/commands/devops/index.js.map +1 -0
  158. package/dist/commands/domain/index.d.ts +8 -0
  159. package/dist/commands/domain/index.d.ts.map +1 -0
  160. package/dist/commands/domain/index.js +386 -0
  161. package/dist/commands/domain/index.js.map +1 -0
  162. package/dist/commands/image/index.d.ts +8 -0
  163. package/dist/commands/image/index.d.ts.map +1 -0
  164. package/dist/commands/image/index.js +308 -0
  165. package/dist/commands/image/index.js.map +1 -0
  166. package/dist/commands/install/factory-reset.d.ts +21 -0
  167. package/dist/commands/install/factory-reset.d.ts.map +1 -0
  168. package/dist/commands/install/factory-reset.js +83 -0
  169. package/dist/commands/install/factory-reset.js.map +1 -0
  170. package/dist/commands/install/index.d.ts +17 -0
  171. package/dist/commands/install/index.d.ts.map +1 -0
  172. package/dist/commands/install/index.js +44 -0
  173. package/dist/commands/install/index.js.map +1 -0
  174. package/dist/commands/install/install.d.ts +35 -0
  175. package/dist/commands/install/install.d.ts.map +1 -0
  176. package/dist/commands/install/install.js +171 -0
  177. package/dist/commands/install/install.js.map +1 -0
  178. package/dist/commands/login/index.d.ts +15 -0
  179. package/dist/commands/login/index.d.ts.map +1 -0
  180. package/dist/commands/login/index.js +58 -0
  181. package/dist/commands/login/index.js.map +1 -0
  182. package/dist/commands/nginx/index.d.ts +11 -0
  183. package/dist/commands/nginx/index.d.ts.map +1 -0
  184. package/dist/commands/nginx/index.js +580 -0
  185. package/dist/commands/nginx/index.js.map +1 -0
  186. package/dist/commands/server/bootstrap.d.ts +25 -0
  187. package/dist/commands/server/bootstrap.d.ts.map +1 -0
  188. package/dist/commands/server/bootstrap.js +260 -0
  189. package/dist/commands/server/bootstrap.js.map +1 -0
  190. package/dist/commands/server/index.d.ts +8 -0
  191. package/dist/commands/server/index.d.ts.map +1 -0
  192. package/dist/commands/server/index.js +2524 -0
  193. package/dist/commands/server/index.js.map +1 -0
  194. package/dist/commands/setup/index.d.ts +34 -0
  195. package/dist/commands/setup/index.d.ts.map +1 -0
  196. package/dist/commands/setup/index.js +423 -0
  197. package/dist/commands/setup/index.js.map +1 -0
  198. package/dist/commands/ssl/index.d.ts +8 -0
  199. package/dist/commands/ssl/index.d.ts.map +1 -0
  200. package/dist/commands/ssl/index.js +275 -0
  201. package/dist/commands/ssl/index.js.map +1 -0
  202. package/dist/commands/superadmin/index.d.ts +16 -0
  203. package/dist/commands/superadmin/index.d.ts.map +1 -0
  204. package/dist/commands/superadmin/index.js +81 -0
  205. package/dist/commands/superadmin/index.js.map +1 -0
  206. package/dist/commands/tenant/index.d.ts +6 -0
  207. package/dist/commands/tenant/index.d.ts.map +1 -0
  208. package/dist/commands/tenant/index.js +192 -0
  209. package/dist/commands/tenant/index.js.map +1 -0
  210. package/dist/index.d.ts +11 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +107 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/lib/addon-sign.d.ts +23 -0
  215. package/dist/lib/addon-sign.d.ts.map +1 -0
  216. package/dist/lib/addon-sign.js +39 -0
  217. package/dist/lib/addon-sign.js.map +1 -0
  218. package/dist/lib/addon-sign.test.d.ts +2 -0
  219. package/dist/lib/addon-sign.test.d.ts.map +1 -0
  220. package/dist/lib/addon-sign.test.js +27 -0
  221. package/dist/lib/addon-sign.test.js.map +1 -0
  222. package/dist/lib/cdn.d.ts +25 -0
  223. package/dist/lib/cdn.d.ts.map +1 -0
  224. package/dist/lib/cdn.js +131 -0
  225. package/dist/lib/cdn.js.map +1 -0
  226. package/dist/lib/cloudflare.d.ts +133 -0
  227. package/dist/lib/cloudflare.d.ts.map +1 -0
  228. package/dist/lib/cloudflare.js +435 -0
  229. package/dist/lib/cloudflare.js.map +1 -0
  230. package/dist/lib/config.d.ts +96 -0
  231. package/dist/lib/config.d.ts.map +1 -0
  232. package/dist/lib/config.js +132 -0
  233. package/dist/lib/config.js.map +1 -0
  234. package/dist/lib/env.d.ts +8 -0
  235. package/dist/lib/env.d.ts.map +1 -0
  236. package/dist/lib/env.js +64 -0
  237. package/dist/lib/env.js.map +1 -0
  238. package/dist/lib/hosts.d.ts +194 -0
  239. package/dist/lib/hosts.d.ts.map +1 -0
  240. package/dist/lib/hosts.js +183 -0
  241. package/dist/lib/hosts.js.map +1 -0
  242. package/dist/lib/logger.d.ts +68 -0
  243. package/dist/lib/logger.d.ts.map +1 -0
  244. package/dist/lib/logger.js +130 -0
  245. package/dist/lib/logger.js.map +1 -0
  246. package/dist/lib/nginx-config.d.ts +78 -0
  247. package/dist/lib/nginx-config.d.ts.map +1 -0
  248. package/dist/lib/nginx-config.js +736 -0
  249. package/dist/lib/nginx-config.js.map +1 -0
  250. package/dist/lib/ops/addon-dev.d.ts +93 -0
  251. package/dist/lib/ops/addon-dev.d.ts.map +1 -0
  252. package/dist/lib/ops/addon-dev.js +237 -0
  253. package/dist/lib/ops/addon-dev.js.map +1 -0
  254. package/dist/lib/ops/addon-quality.d.ts +38 -0
  255. package/dist/lib/ops/addon-quality.d.ts.map +1 -0
  256. package/dist/lib/ops/addon-quality.js +338 -0
  257. package/dist/lib/ops/addon-quality.js.map +1 -0
  258. package/dist/lib/ops/addon-routes.d.ts +49 -0
  259. package/dist/lib/ops/addon-routes.d.ts.map +1 -0
  260. package/dist/lib/ops/addon-routes.js +189 -0
  261. package/dist/lib/ops/addon-routes.js.map +1 -0
  262. package/dist/lib/ops/addon.d.ts +120 -0
  263. package/dist/lib/ops/addon.d.ts.map +1 -0
  264. package/dist/lib/ops/addon.js +260 -0
  265. package/dist/lib/ops/addon.js.map +1 -0
  266. package/dist/lib/ops/cdn.d.ts +87 -0
  267. package/dist/lib/ops/cdn.d.ts.map +1 -0
  268. package/dist/lib/ops/cdn.js +170 -0
  269. package/dist/lib/ops/cdn.js.map +1 -0
  270. package/dist/lib/ops/cf.d.ts +36 -0
  271. package/dist/lib/ops/cf.d.ts.map +1 -0
  272. package/dist/lib/ops/cf.js +114 -0
  273. package/dist/lib/ops/cf.js.map +1 -0
  274. package/dist/lib/ops/compose.d.ts +95 -0
  275. package/dist/lib/ops/compose.d.ts.map +1 -0
  276. package/dist/lib/ops/compose.js +165 -0
  277. package/dist/lib/ops/compose.js.map +1 -0
  278. package/dist/lib/ops/core.d.ts +117 -0
  279. package/dist/lib/ops/core.d.ts.map +1 -0
  280. package/dist/lib/ops/core.js +322 -0
  281. package/dist/lib/ops/core.js.map +1 -0
  282. package/dist/lib/ops/db.d.ts +116 -0
  283. package/dist/lib/ops/db.d.ts.map +1 -0
  284. package/dist/lib/ops/db.js +351 -0
  285. package/dist/lib/ops/db.js.map +1 -0
  286. package/dist/lib/ops/dns.d.ts +111 -0
  287. package/dist/lib/ops/dns.d.ts.map +1 -0
  288. package/dist/lib/ops/dns.js +306 -0
  289. package/dist/lib/ops/dns.js.map +1 -0
  290. package/dist/lib/ops/image.d.ts +94 -0
  291. package/dist/lib/ops/image.d.ts.map +1 -0
  292. package/dist/lib/ops/image.js +159 -0
  293. package/dist/lib/ops/image.js.map +1 -0
  294. package/dist/lib/ops/nginx.d.ts +114 -0
  295. package/dist/lib/ops/nginx.d.ts.map +1 -0
  296. package/dist/lib/ops/nginx.js +388 -0
  297. package/dist/lib/ops/nginx.js.map +1 -0
  298. package/dist/lib/ops/redis.d.ts +7 -0
  299. package/dist/lib/ops/redis.d.ts.map +1 -0
  300. package/dist/lib/ops/redis.js +35 -0
  301. package/dist/lib/ops/redis.js.map +1 -0
  302. package/dist/lib/ops/ssh.d.ts +127 -0
  303. package/dist/lib/ops/ssh.d.ts.map +1 -0
  304. package/dist/lib/ops/ssh.js +269 -0
  305. package/dist/lib/ops/ssh.js.map +1 -0
  306. package/dist/lib/prompts.d.ts +46 -0
  307. package/dist/lib/prompts.d.ts.map +1 -0
  308. package/dist/lib/prompts.js +113 -0
  309. package/dist/lib/prompts.js.map +1 -0
  310. package/dist/lib/sast.d.ts +43 -0
  311. package/dist/lib/sast.d.ts.map +1 -0
  312. package/dist/lib/sast.js +79 -0
  313. package/dist/lib/sast.js.map +1 -0
  314. package/dist/lib/sast.test.d.ts +2 -0
  315. package/dist/lib/sast.test.d.ts.map +1 -0
  316. package/dist/lib/sast.test.js +33 -0
  317. package/dist/lib/sast.test.js.map +1 -0
  318. package/dist/lib/shell.d.ts +61 -0
  319. package/dist/lib/shell.d.ts.map +1 -0
  320. package/dist/lib/shell.js +183 -0
  321. package/dist/lib/shell.js.map +1 -0
  322. package/dist/lib/ssh-config.d.ts +37 -0
  323. package/dist/lib/ssh-config.d.ts.map +1 -0
  324. package/dist/lib/ssh-config.js +122 -0
  325. package/dist/lib/ssh-config.js.map +1 -0
  326. package/dist/lib/tenant-scope.d.ts +38 -0
  327. package/dist/lib/tenant-scope.d.ts.map +1 -0
  328. package/dist/lib/tenant-scope.js +129 -0
  329. package/dist/lib/tenant-scope.js.map +1 -0
  330. package/dist/lib/tenant-scope.test.d.ts +2 -0
  331. package/dist/lib/tenant-scope.test.d.ts.map +1 -0
  332. package/dist/lib/tenant-scope.test.js +223 -0
  333. package/dist/lib/tenant-scope.test.js.map +1 -0
  334. package/package.json +58 -0
  335. package/templates/bootstrap/.env.template +54 -0
  336. package/templates/bootstrap/docker-compose.yml +145 -0
  337. package/templates/vhost.conf.tmpl +446 -0
@@ -0,0 +1,320 @@
1
+ /**
2
+ * CiCore CLI — `ci db promote-silo` (F5 / Faz 6).
3
+ *
4
+ * 9-step orchestrator that promotes a pool-tier brand to a dedicated silo DB.
5
+ * LOCKED spec: docs/planning/2026-06-01-faz6-promote-silo.md.
6
+ *
7
+ * Mustafa LOCK'ları (mimari sözleşme — bypass YASAK):
8
+ * K1 — COPY pipe + FK-aware sıralama (parents→children) veya post-load
9
+ * constraints VALIDATE. FK ihlali = sessiz kayıp.
10
+ * K2 — Otomatik tablo discovery + child FK kapsama. Manifest üretilir +
11
+ * --confirm-manifest gate (insan-gözden-geçirme; CI'da --yes ile bypass).
12
+ * K3 — Pool RLS bypass (superuser) AMA her COPY EXPLICIT `WHERE brand_id=:b`.
13
+ * Kapalı RLS'e güvenme; her COPY filtre TAŞIR.
14
+ * + Anti-sızıntı assertion (Step 7): silo'da brand_id != :b satır = 0.
15
+ * K4 — Per-step idempotent guard; cp_provisioning_jobs.steps jsonb resumable.
16
+ * Mevcut provision-agent çatısını REUSE et.
17
+ *
18
+ * INVARIANT (zorunlu):
19
+ * INV-1 — Cutover (Step 8) YALNIZ Step 7 verify YEŞİL ise. Pool-filtered
20
+ * row-count + checksum eşitliği; geçmezse cutover YOK.
21
+ * INV-2 — Promote başarılı olsa bile pool verisi SİLİNMEZ. Cleanup ayrı
22
+ * job (Faz 6.1, 14 gün retention). Geri-dönülebilir.
23
+ *
24
+ * Bu komut iki şapkada koşar:
25
+ * 1) Standalone: `ci db promote-silo --brand <slug> --host <alias>` —
26
+ * operator debug + apply dry-run + ilk tatbikat.
27
+ * 2) Agent dispatch: `ci agent run` `db_promote_silo` job tipini gördüğünde
28
+ * bu komut spawn edilir (mevcut spawn pattern; agent index.ts dispatch).
29
+ *
30
+ * Bu turun KAPSAM DIŞI: gerçek child-FK discovery + COPY pipe data-plane
31
+ * implementation. v1 skeleton: validate → discovery (brand_id kolonu olan
32
+ * tablolar + FK child genişletme) → silo CREATE + schema clone → manifest
33
+ * jsonb logging → verify gate iskeleti + INV-1/INV-2 guard. Gerçek data
34
+ * migrate adımları Faz 6 apply tatbikatı sırasında refinement görür (mkt
35
+ * sentinel brand test ile).
36
+ */
37
+ import { Command } from 'commander';
38
+ import { type HostConfig } from '../../lib/hosts.js';
39
+ export declare function registerPromoteSilo(db: Command): void;
40
+ export interface PromoteOpts {
41
+ readonly brand: string;
42
+ readonly host?: string;
43
+ readonly jobId?: string;
44
+ readonly confirmManifest?: boolean;
45
+ readonly dryRun?: boolean;
46
+ }
47
+ export interface StepState {
48
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
49
+ startedAt?: string;
50
+ finishedAt?: string;
51
+ detail?: Record<string, unknown>;
52
+ error?: string;
53
+ }
54
+ export interface OrchCtx {
55
+ readonly cfg: HostConfig;
56
+ readonly brand: string;
57
+ readonly jobId: string | null;
58
+ readonly confirmManifest: boolean;
59
+ readonly dryRun: boolean;
60
+ readonly steps: StepState[];
61
+ }
62
+ /** Brand row from cp_brands. */
63
+ export interface BrandRow {
64
+ readonly id: string;
65
+ readonly slug: string;
66
+ readonly db_tier: string;
67
+ readonly is_default: string | boolean;
68
+ readonly status: string;
69
+ readonly placement_region: string | null;
70
+ }
71
+ /** Pool DB locator (cp_databases owner=core + tier=pool). */
72
+ export interface PoolDbRow {
73
+ readonly db_host: string;
74
+ readonly db_port: number;
75
+ readonly db_name: string;
76
+ readonly db_user: string;
77
+ }
78
+ /**
79
+ * Discovery manifest entry — one table to migrate.
80
+ *
81
+ * Predicate alanı SQL fragment'idir; WHERE'den sonra yazılır. Brand ID
82
+ * substitution'ı caller'da (parametre prepared statement yerine literal
83
+ * SQL string — promote-silo nadir batch op, dış input yok; brand id UUID
84
+ * regex'le valide ediliyor). Örnekler:
85
+ * direct: "brand_id = '<uuid>'"
86
+ * fk-1: "order_id IN (SELECT id FROM public.orders WHERE brand_id = '<uuid>')"
87
+ * fk-2: "line_id IN (SELECT id FROM public.lines WHERE order_id IN (...))"
88
+ */
89
+ export interface TableEntry {
90
+ readonly schema: string;
91
+ readonly table: string;
92
+ /** 'direct' = brand_id kolonu var; 'fk' = parent zinciri ile bağlı (en az 1 atlama). */
93
+ readonly via: 'direct' | 'fk';
94
+ /** FK zinciri (en yakın parent en başta, en uzak parent sonda). 'direct' için boş. */
95
+ readonly fkPath: string[];
96
+ /** WHERE clause fragment (brand id literal'i ile). Caller `WHERE ${predicate}` olarak kullanır. */
97
+ readonly predicate: string;
98
+ /** Topological sort sırası (0 = parent-most, daha büyük = daha derin child). */
99
+ readonly depth: number;
100
+ /** Row count in pool filtered by brand_id (where applicable). */
101
+ readonly poolCount?: number;
102
+ }
103
+ /**
104
+ * Reference table — brand-closure'un FK ile ulaştığı ama closure DIŞINDA
105
+ * kalan global/shared parent (örn. countries, currencies). INV-4: bunlar
106
+ * Step 6'da brand-scoped COPY'den ÖNCE filtresiz tam-kopyalanır; aksi
107
+ * takdirde silo'da dangling FK kalır (kırık referential integrity).
108
+ */
109
+ export interface ReferenceEntry {
110
+ readonly schema: string;
111
+ readonly table: string;
112
+ /** Hangi brand-scoped tablolar buna FK ile bağlı (operator triage için). */
113
+ readonly referrers: string[];
114
+ }
115
+ /** Step 2 dönüşü — brand-scoped tablolar + global reference tabloları. */
116
+ export interface DiscoveryResult {
117
+ readonly tables: TableEntry[];
118
+ readonly references: ReferenceEntry[];
119
+ }
120
+ export declare function runOrchestrator(ctx: OrchCtx): Promise<boolean>;
121
+ /** Generic per-step wrapper: idempotent guard + state log + audit. */
122
+ export declare function step<T>(ctx: OrchCtx, idx: number, name: string, body: () => Promise<T>): Promise<T>;
123
+ /** Step 1 — VALIDATE: brand var + tier=pool + sentinel değil + en az 1 satır. */
124
+ export declare function doValidate(ctx: OrchCtx): Promise<BrandRow>;
125
+ /**
126
+ * Step 2 — DISCOVERY: tablo manifest üretimi (GERÇEK, K2 tamlık).
127
+ *
128
+ * Akış:
129
+ * 1. `direct[]` — public şemada `brand_id` kolonu olan tablolar.
130
+ * 2. `fkEdges[]` — pg_catalog'tan TÜM single-column FK ilişkileri
131
+ * (child.fk_col → parent.pk_col). Composite FK'lar (nadir; addon
132
+ * tarafından nadiren) — sadece ilk kolon kullanılır + uyarı logla.
133
+ * 3. **BFS closure** — direct tablolardan başlayıp FK arc'larıyla
134
+ * ulaşılabilen tüm child tabloları depth-tagged topla. brand-reachable
135
+ * hiçbir tablo sessizce atlanmaz (Mustafa K2 tamlık zorunluluğu).
136
+ * 4. **Predicate composition** — her tablo için WHERE fragment'i üret:
137
+ * direct → `brand_id = '<uuid>'`
138
+ * fk → `<fk_col> IN (SELECT <parent_pk> FROM <parent> WHERE <parent_predicate>)`
139
+ * Recursive: çok-seviyeli FK'lar nested SUBQUERY ile zincirlenir.
140
+ * 5. **Topological sort** — `depth` artan sırada (parents → children).
141
+ * İki yönlü cycle (FK cycle, postgres'te ON DELETE CASCADE arası nadir)
142
+ * → cycle hatası fırlat (operator manuel müdahalesi).
143
+ *
144
+ * `--confirm-manifest` flag yoksa manifest dökümü + DUR (insan-gözden-geçirme).
145
+ * CI/agent mode (panel enqueue) flag'i her zaman geçer.
146
+ */
147
+ export declare function doDiscovery(ctx: OrchCtx, brand: BrandRow, pool: PoolDbRow): Promise<DiscoveryResult>;
148
+ /**
149
+ * Reference tabloları arası FK varsa: parents-first topological sort.
150
+ * Kahn's algoritması. Cycle → throw (operator manuel müdahalesi; nadir).
151
+ * Stable: in-degree 0 küme alfabetik sırayla pop'lanır.
152
+ */
153
+ export declare function topoSortReferences(refs: ReferenceEntry[], fkRows: FkEdgeRow[]): ReferenceEntry[];
154
+ /** pg_catalog FK row tipi. */
155
+ export interface FkEdgeRow {
156
+ readonly child_schema: string;
157
+ readonly child_table: string;
158
+ readonly child_column: string;
159
+ readonly parent_schema: string;
160
+ readonly parent_table: string;
161
+ readonly parent_column: string;
162
+ readonly col_count: number | string;
163
+ }
164
+ /** Postgres identifier'ı çift tırnağa al (reserved keyword + case-sensitive korumalı). */
165
+ export declare function quoteIdent(name: string): string;
166
+ /** "schema.table" → "schema"."table" */
167
+ export declare function quoteQualified(qualified: string): string;
168
+ /** Step 3 — PROVISION SILO DB (idempotent: var ise atla). */
169
+ export declare function doProvisionSilo(ctx: OrchCtx, brand: BrandRow): Promise<PoolDbRow>;
170
+ /** Step 4 — SCHEMA MIGRATE: pool schema-only dump → silo restore. İdempotent. */
171
+ export declare function doSchemaMigrate(ctx: OrchCtx, pool: PoolDbRow, silo: PoolDbRow): Promise<{
172
+ ok: true;
173
+ }>;
174
+ /** Step 5 — MARK MIGRATING: cp_brands.status='migrating' (UI uyarısı). */
175
+ export declare function doMarkMigrating(ctx: OrchCtx, brand: BrandRow): Promise<{
176
+ status: string;
177
+ }>;
178
+ /**
179
+ * Step 6 — DATA MIGRATE (GERÇEK COPY pipe).
180
+ *
181
+ * Mustafa kilitleri:
182
+ * K1 — FK koruması: per-table COPY pipe iki tarafta da
183
+ * `SET session_replication_role = replica` ile çalışır
184
+ * (trigger + FK constraint suspend; PostgreSQL replication
185
+ * pattern'i, "data restore için güvenli"). Topolojik manifest
186
+ * sırası (parents→children) zaten doğru sırayı sağlıyor; replica
187
+ * mode "belt + suspenders" — composite veya cycle gibi nadir
188
+ * senaryolarda sessiz FK hatasını imkansızlaştırır.
189
+ * K3 — Sızıntı koruması: her COPY pool tarafı SELECT'inde manifest'in
190
+ * ürettiği EXPLICIT predicate'i taşır (kapalı RLS'e güvenme;
191
+ * statik discovery garantisi).
192
+ *
193
+ * İdempotency / resumability:
194
+ * - silo_count == pool_predicate_count → atla (resume).
195
+ * - silo_count == 0 → TRUNCATE skip, doğrudan COPY.
196
+ * - 0 < silo_count != pool_predicate_count → partial copy: TRUNCATE
197
+ * RESTART IDENTITY (silo yeni DB; CASCADE değil, downstream entry'ler
198
+ * manifest sırasında zaten ele alınacak) + COPY.
199
+ *
200
+ * Subprocess seçimi (Mustafa "sen seç + gerekçesini doc'a yaz"):
201
+ * psql subprocess pipe seçildi. Gerekçe: (a) mevcut altyapı CLI→SSH→
202
+ * docker exec; Node↔postgres direct connection mevcut değil (VPN ardı,
203
+ * credentials .env'de host-side). (b) pg-copy-streams ek Node bağımlı;
204
+ * credential + connection lifecycle managemnt overhead. (c) psql streaming
205
+ * pipe production-tested pattern (pg_dump | psql; pgBackRest internal).
206
+ * (d) Tek bağımlılık: docker + psql (zaten kurulu). (e) Hata yönetimi:
207
+ * pipefail + ON_ERROR_STOP=1 + exit code; stderr parse.
208
+ *
209
+ * Format: TEXT (default). BINARY daha hızlı ama type compatibility +
210
+ * version sensitivity riski; sentinel tatbikatı sonrası BINARY'ye geçiş
211
+ * düşünülebilir.
212
+ */
213
+ export declare function doDataMigrate(ctx: OrchCtx, brand: BrandRow, manifest: TableEntry[], references: ReferenceEntry[], pool: PoolDbRow, silo: PoolDbRow): Promise<{
214
+ migrated: number;
215
+ skipped: number;
216
+ rows: number;
217
+ refsCopied: number;
218
+ refsRows: number;
219
+ }>;
220
+ /** Helper — pool tarafında `count(*) WHERE <entry.predicate>`. */
221
+ export declare function countWithPredicate(ctx: OrchCtx, dbName: string, t: TableEntry): Promise<number>;
222
+ /** Helper — `count(*) WHERE <where>` (silo tarafında `1=1` veya brand_id!=X). */
223
+ export declare function countWhere(ctx: OrchCtx, dbName: string, schema: string, table: string, where: string): Promise<number>;
224
+ /** Helper — silo'da partial copy artığı varsa temizle. */
225
+ export declare function truncateTable(ctx: OrchCtx, dbName: string, schema: string, table: string): Promise<void>;
226
+ /**
227
+ * Helper — pool'dan silo'ya bir tablonun WHERE-filtreli verisini COPY pipe ile
228
+ * taşı. psql subprocess pipe: pool TO STDOUT | silo FROM STDIN. session_
229
+ * replication_role=replica iki tarafta da (FK + trigger bypass).
230
+ */
231
+ export declare function copyTableWithPredicate(ctx: OrchCtx, poolDb: string, siloDb: string, t: TableEntry): Promise<void>;
232
+ /**
233
+ * SQL string'ini docker exec bash -lc içinde tek-tırnak literal olarak güvenli
234
+ * geç. Bash double-quote escape değil — outer single-quote içinde inner
235
+ * single-quote'lara `'\''` ile çıkış yapıyoruz; tüm shq() pattern'iyle aynı.
236
+ */
237
+ export declare function sshSqlArg(sql: string): string;
238
+ /**
239
+ * Step 7 — VERIFY (GERÇEK INV-1 cutover gate + K3 anti-sızıntı).
240
+ *
241
+ * Üç gate, her tablo için:
242
+ * 1. **COUNT eşitliği** (ZORUNLU): pool WHERE predicate == silo WHERE 1=1.
243
+ * 2. **CHECKSUM** (ölçeklenebilir): per-row md5 → string_agg ORDER BY pk →
244
+ * outer md5. PK yoksa checksum atlanır (uyarı + count-only fallback);
245
+ * sentinel tatbikatlı tablo şemalarında her tablonun PK'sı olmalı.
246
+ * Pragmatik MD5 seçimi: tek SELECT'le çalışır, postgres 9+; bit_xor
247
+ * modern (postgres 14+) ama version uyumluluğu için MD5 + string_agg
248
+ * seçildi. Büyük tablo (>~1M satır) → string_agg server-side bellek
249
+ * mertebesi MB; sentinel için sorun değil. Gerçek müşteri büyük
250
+ * tablolarda bit_xor opt M3.
251
+ * 3. **Anti-sızıntı** (K3, direct entry'lerde): silo WHERE brand_id != :b
252
+ * == 0. fk-only tablolarda brand_id yok → bu gate'i atla (parent
253
+ * predicate zaten sızıntıyı engelliyor).
254
+ *
255
+ * Herhangi biri FAIL → THROW (Step 8 atomic flip ÇALIŞMAZ; INV-1 koruması).
256
+ * Pool intakt (INV-2); silo forensic için kalır (operator inceleyip
257
+ * Faz 6.2 rollback ile temiz geri alabilir veya manuel fix).
258
+ */
259
+ export declare function doVerify(ctx: OrchCtx, brand: BrandRow, manifest: TableEntry[], references: ReferenceEntry[], pool: PoolDbRow, silo: PoolDbRow): Promise<{
260
+ tables: number;
261
+ mismatches: number;
262
+ leakage: number;
263
+ checksumsSkipped: number;
264
+ orphans: number;
265
+ }>;
266
+ /**
267
+ * Silo'da FK dangling sayısı (INV-4).
268
+ *
269
+ * Akış: brand-scoped tabloların TÜM single-column FK'leri için
270
+ * SELECT count(*) FROM <child> WHERE <fk_col> IS NOT NULL
271
+ * AND NOT EXISTS (SELECT 1 FROM <parent> WHERE <pk> = <child>.<fk_col>)
272
+ * Reference tablolarını da kapsar (zaten silo'da olmaları gerek; eğer
273
+ * eksiksizse orphan = 0). Parent'ın silo'da varlığı şart değil — eğer
274
+ * yoksa NOT EXISTS true döner ve orphan artar.
275
+ *
276
+ * Composite FK'lar Step 2'de zaten ilk kolonla logged-warning + indirgendi;
277
+ * bu FK orphan check de ilk kolonu kontrol eder.
278
+ */
279
+ export declare function checkFkOrphans(ctx: OrchCtx, dbName: string, manifest: TableEntry[]): Promise<number>;
280
+ /**
281
+ * Tabloda WHERE-filtreli md5 checksum hesapla.
282
+ * md5(coalesce(string_agg(md5(t::text), '' ORDER BY <pk>), ''))
283
+ * Sıralama: PK kolonları (deterministik). Empty result → empty-string md5
284
+ * (constant); pool == silo eşitliği boş tabloda da tutar.
285
+ */
286
+ export declare function tableChecksum(ctx: OrchCtx, dbName: string, schema: string, table: string, where: string, orderBy: string): Promise<string>;
287
+ /**
288
+ * Tablonun PK kolonlarını sırayla döndür. PK yoksa boş array.
289
+ * pg_index.indisprimary + pg_attribute join.
290
+ */
291
+ export declare function fetchPrimaryKeyColumns(ctx: OrchCtx, dbName: string, schema: string, table: string): Promise<string[]>;
292
+ /**
293
+ * Step 8 — REGISTRY FLIP (atomic single-txn).
294
+ *
295
+ * Insert silo into cp_databases AND update cp_brands tier+data_db_name
296
+ * in ONE transaction. INV-2: pool data UNTOUCHED.
297
+ */
298
+ export declare function doRegistryFlip(ctx: OrchCtx, brand: BrandRow, silo: PoolDbRow): Promise<{
299
+ silo_id: string;
300
+ tier: string;
301
+ }>;
302
+ /**
303
+ * Step 9 — CACHE INVALIDATE + AUDIT END.
304
+ *
305
+ * In-process cache invalidate (TenantDbResolver::invalidate) PHP-side; CLI
306
+ * burada yalnız cp_audit_log'a tamamlanma kaydı düşer + finished_at güncel.
307
+ * Multi-instance Redis pub/sub M3 perf milestone.
308
+ */
309
+ export declare function doCacheInvalidate(ctx: OrchCtx, brand: BrandRow): Promise<{
310
+ logged: true;
311
+ }>;
312
+ export declare function fetchPoolDb(ctx: OrchCtx): Promise<PoolDbRow>;
313
+ export declare function persistSteps(ctx: OrchCtx, status: 'running' | 'failed', err: string | null): Promise<void>;
314
+ export declare function currentStepIndex(ctx: OrchCtx): number;
315
+ export declare function blankSteps(n: number): StepState[];
316
+ export declare function shortHash(s: string): string;
317
+ export declare function sanitizeForJson(value: unknown): Record<string, unknown>;
318
+ export declare function resolveHost(alias: string | undefined): HostConfig;
319
+ export declare function sqlLit(s: string): string;
320
+ //# sourceMappingURL=promote-silo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote-silo.d.ts","sourceRoot":"","sources":["../../../src/commands/db/promote-silo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAenE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAwBrD;AAMD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAC5B;AAED,gCAAgC;AAChC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CACzC;AAED,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,wFAAwF;IACxF,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;IACzB,mGAAmG;IACnG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CACtC;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAkDpE;AAED,sEAAsE;AACtE,wBAAsB,IAAI,CAAC,CAAC,EAC1B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAMD,iFAAiF;AACjF,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAchE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAC7C,OAAO,CAAC,eAAe,CAAC,CA4L1B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAqDhG;AAED,8BAA8B;AAC9B,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,6DAA6D;AAC7D,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAkCvF;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAmB3G;AAED,0EAA0E;AAC1E,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EACnF,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA6FpG;AAED,kEAAkE;AAClE,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrG;AAED,iFAAiF;AACjF,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5H;AAED,0DAA0D;AAC1D,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9G;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAC1D,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EACnF,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAC/B,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAC3C,CAAC,CA6ED;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GACnD,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAC1F,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC1D,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAC7C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAe5C;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC,CAQhG;AAMD,wBAAsB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAUlE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAShH;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKrD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAEjD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAKjE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAiC"}