@hexclave/shared 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 (1144) hide show
  1. package/LICENSE +7 -0
  2. package/dist/ai/image-limits.d.ts +24 -0
  3. package/dist/ai/image-limits.d.ts.map +1 -0
  4. package/dist/ai/image-limits.js +61 -0
  5. package/dist/ai/image-limits.js.map +1 -0
  6. package/dist/ai/unified-prompts/reminders.d.ts +5 -0
  7. package/dist/ai/unified-prompts/reminders.d.ts.map +1 -0
  8. package/dist/ai/unified-prompts/reminders.js +33 -0
  9. package/dist/ai/unified-prompts/reminders.js.map +1 -0
  10. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts +11 -0
  11. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -0
  12. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +851 -0
  13. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -0
  14. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts +5 -0
  15. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts.map +1 -0
  16. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js +12 -0
  17. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -0
  18. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts +5 -0
  19. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts.map +1 -0
  20. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +12 -0
  21. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -0
  22. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts +5 -0
  23. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts.map +1 -0
  24. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +12 -0
  25. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -0
  26. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts +5 -0
  27. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts.map +1 -0
  28. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +12 -0
  29. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -0
  30. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts +5 -0
  31. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts.map +1 -0
  32. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +12 -0
  33. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -0
  34. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts +5 -0
  35. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -0
  36. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +64 -0
  37. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -0
  38. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts +5 -0
  39. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts.map +1 -0
  40. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +12 -0
  41. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -0
  42. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts +5 -0
  43. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts.map +1 -0
  44. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +12 -0
  45. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -0
  46. package/dist/ai/unified-prompts/skill-site-prompt.d.ts +5 -0
  47. package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -0
  48. package/dist/ai/unified-prompts/skill-site-prompt.js +75 -0
  49. package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -0
  50. package/dist/apps/apps-config.d.ts +168 -0
  51. package/dist/apps/apps-config.d.ts.map +1 -0
  52. package/dist/apps/apps-config.js +157 -0
  53. package/dist/apps/apps-config.js.map +1 -0
  54. package/dist/apps/apps-ui.d.ts +45 -0
  55. package/dist/apps/apps-ui.d.ts.map +1 -0
  56. package/dist/apps/apps-ui.js +109 -0
  57. package/dist/apps/apps-ui.js.map +1 -0
  58. package/dist/chunk-BE-pF4vm.js +34 -0
  59. package/dist/config/db-sync-mappings.d.ts +193 -0
  60. package/dist/config/db-sync-mappings.d.ts.map +1 -0
  61. package/dist/config/db-sync-mappings.js +2255 -0
  62. package/dist/config/db-sync-mappings.js.map +1 -0
  63. package/dist/config/format.d.ts +61 -0
  64. package/dist/config/format.d.ts.map +1 -0
  65. package/dist/config/format.js +337 -0
  66. package/dist/config/format.js.map +1 -0
  67. package/dist/config/migrate-catalogs-to-product-lines.d.ts +14 -0
  68. package/dist/config/migrate-catalogs-to-product-lines.d.ts.map +1 -0
  69. package/dist/config/migrate-catalogs-to-product-lines.js +379 -0
  70. package/dist/config/migrate-catalogs-to-product-lines.js.map +1 -0
  71. package/dist/config/schema-fuzzer.test.d.ts +1 -0
  72. package/dist/config/schema-fuzzer.test.js +401 -0
  73. package/dist/config/schema-fuzzer.test.js.map +1 -0
  74. package/dist/config/schema.d.ts +2315 -0
  75. package/dist/config/schema.d.ts.map +1 -0
  76. package/dist/config/schema.js +1085 -0
  77. package/dist/config/schema.js.map +1 -0
  78. package/dist/config-authoring.d.ts +12 -0
  79. package/dist/config-authoring.d.ts.map +1 -0
  80. package/dist/config-authoring.js +12 -0
  81. package/dist/config-authoring.js.map +1 -0
  82. package/dist/config-authoring.test.d.ts +1 -0
  83. package/dist/config-authoring.test.js +29 -0
  84. package/dist/config-authoring.test.js.map +1 -0
  85. package/dist/config-rendering.d.ts +17 -0
  86. package/dist/config-rendering.d.ts.map +1 -0
  87. package/dist/config-rendering.js +114 -0
  88. package/dist/config-rendering.js.map +1 -0
  89. package/dist/crud.d.ts +98 -0
  90. package/dist/crud.d.ts.map +1 -0
  91. package/dist/crud.js +129 -0
  92. package/dist/crud.js.map +1 -0
  93. package/dist/esm/ai/image-limits.d.ts +24 -0
  94. package/dist/esm/ai/image-limits.d.ts.map +1 -0
  95. package/dist/esm/ai/image-limits.js +53 -0
  96. package/dist/esm/ai/image-limits.js.map +1 -0
  97. package/dist/esm/ai/unified-prompts/reminders.d.ts +5 -0
  98. package/dist/esm/ai/unified-prompts/reminders.d.ts.map +1 -0
  99. package/dist/esm/ai/unified-prompts/reminders.js +31 -0
  100. package/dist/esm/ai/unified-prompts/reminders.js.map +1 -0
  101. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts +11 -0
  102. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -0
  103. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +843 -0
  104. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -0
  105. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts +5 -0
  106. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts.map +1 -0
  107. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js +10 -0
  108. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -0
  109. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts +5 -0
  110. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts.map +1 -0
  111. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +10 -0
  112. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -0
  113. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts +5 -0
  114. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts.map +1 -0
  115. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +10 -0
  116. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -0
  117. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts +5 -0
  118. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts.map +1 -0
  119. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +10 -0
  120. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -0
  121. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts +5 -0
  122. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts.map +1 -0
  123. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +10 -0
  124. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -0
  125. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts +5 -0
  126. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -0
  127. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +61 -0
  128. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -0
  129. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts +5 -0
  130. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts.map +1 -0
  131. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +10 -0
  132. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -0
  133. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts +5 -0
  134. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts.map +1 -0
  135. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +10 -0
  136. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -0
  137. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts +5 -0
  138. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -0
  139. package/dist/esm/ai/unified-prompts/skill-site-prompt.js +73 -0
  140. package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -0
  141. package/dist/esm/apps/apps-config.d.ts +168 -0
  142. package/dist/esm/apps/apps-config.d.ts.map +1 -0
  143. package/dist/esm/apps/apps-config.js +154 -0
  144. package/dist/esm/apps/apps-config.js.map +1 -0
  145. package/dist/esm/apps/apps-ui.d.ts +45 -0
  146. package/dist/esm/apps/apps-ui.d.ts.map +1 -0
  147. package/dist/esm/apps/apps-ui.js +104 -0
  148. package/dist/esm/apps/apps-ui.js.map +1 -0
  149. package/dist/esm/config/db-sync-mappings.d.ts +193 -0
  150. package/dist/esm/config/db-sync-mappings.d.ts.map +1 -0
  151. package/dist/esm/config/db-sync-mappings.js +2253 -0
  152. package/dist/esm/config/db-sync-mappings.js.map +1 -0
  153. package/dist/esm/config/format.d.ts +61 -0
  154. package/dist/esm/config/format.d.ts.map +1 -0
  155. package/dist/esm/config/format.js +327 -0
  156. package/dist/esm/config/format.js.map +1 -0
  157. package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts +14 -0
  158. package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts.map +1 -0
  159. package/dist/esm/config/migrate-catalogs-to-product-lines.js +377 -0
  160. package/dist/esm/config/migrate-catalogs-to-product-lines.js.map +1 -0
  161. package/dist/esm/config/schema-fuzzer.test.d.ts +1 -0
  162. package/dist/esm/config/schema-fuzzer.test.js +401 -0
  163. package/dist/esm/config/schema-fuzzer.test.js.map +1 -0
  164. package/dist/esm/config/schema.d.ts +2315 -0
  165. package/dist/esm/config/schema.d.ts.map +1 -0
  166. package/dist/esm/config/schema.js +1065 -0
  167. package/dist/esm/config/schema.js.map +1 -0
  168. package/dist/esm/config-authoring.d.ts +12 -0
  169. package/dist/esm/config-authoring.d.ts.map +1 -0
  170. package/dist/esm/config-authoring.js +9 -0
  171. package/dist/esm/config-authoring.js.map +1 -0
  172. package/dist/esm/config-authoring.test.d.ts +1 -0
  173. package/dist/esm/config-authoring.test.js +29 -0
  174. package/dist/esm/config-authoring.test.js.map +1 -0
  175. package/dist/esm/config-rendering.d.ts +17 -0
  176. package/dist/esm/config-rendering.d.ts.map +1 -0
  177. package/dist/esm/config-rendering.js +108 -0
  178. package/dist/esm/config-rendering.js.map +1 -0
  179. package/dist/esm/crud.d.ts +98 -0
  180. package/dist/esm/crud.d.ts.map +1 -0
  181. package/dist/esm/crud.js +127 -0
  182. package/dist/esm/crud.js.map +1 -0
  183. package/dist/esm/global.d.ts +1 -0
  184. package/dist/esm/helpers/emails.d.ts +69 -0
  185. package/dist/esm/helpers/emails.d.ts.map +1 -0
  186. package/dist/esm/helpers/emails.js +243 -0
  187. package/dist/esm/helpers/emails.js.map +1 -0
  188. package/dist/esm/helpers/init-prompt.d.ts +5 -0
  189. package/dist/esm/helpers/init-prompt.d.ts.map +1 -0
  190. package/dist/esm/helpers/init-prompt.js +40 -0
  191. package/dist/esm/helpers/init-prompt.js.map +1 -0
  192. package/dist/esm/helpers/password.d.ts +7 -0
  193. package/dist/esm/helpers/password.d.ts.map +1 -0
  194. package/dist/esm/helpers/password.js +13 -0
  195. package/dist/esm/helpers/password.js.map +1 -0
  196. package/dist/esm/helpers/production-mode.d.ts +11 -0
  197. package/dist/esm/helpers/production-mode.d.ts.map +1 -0
  198. package/dist/esm/helpers/production-mode.js +46 -0
  199. package/dist/esm/helpers/production-mode.js.map +1 -0
  200. package/dist/esm/helpers/support-sla.d.ts +48 -0
  201. package/dist/esm/helpers/support-sla.d.ts.map +1 -0
  202. package/dist/esm/helpers/support-sla.js +65 -0
  203. package/dist/esm/helpers/support-sla.js.map +1 -0
  204. package/dist/esm/helpers/support-sla.test.d.ts +1 -0
  205. package/dist/esm/helpers/support-sla.test.js +102 -0
  206. package/dist/esm/helpers/support-sla.test.js.map +1 -0
  207. package/dist/esm/helpers/vault/client-side.d.ts +16 -0
  208. package/dist/esm/helpers/vault/client-side.d.ts.map +1 -0
  209. package/dist/esm/helpers/vault/client-side.js +69 -0
  210. package/dist/esm/helpers/vault/client-side.js.map +1 -0
  211. package/dist/esm/helpers/vault/server-side.d.ts +9 -0
  212. package/dist/esm/helpers/vault/server-side.d.ts.map +1 -0
  213. package/dist/esm/helpers/vault/server-side.js +123 -0
  214. package/dist/esm/helpers/vault/server-side.js.map +1 -0
  215. package/dist/esm/hooks/use-async-callback.d.ts +8 -0
  216. package/dist/esm/hooks/use-async-callback.d.ts.map +1 -0
  217. package/dist/esm/hooks/use-async-callback.js +38 -0
  218. package/dist/esm/hooks/use-async-callback.js.map +1 -0
  219. package/dist/esm/hooks/use-async-external-store.d.ts +9 -0
  220. package/dist/esm/hooks/use-async-external-store.d.ts.map +1 -0
  221. package/dist/esm/hooks/use-async-external-store.js +20 -0
  222. package/dist/esm/hooks/use-async-external-store.js.map +1 -0
  223. package/dist/esm/hooks/use-hash.d.ts +5 -0
  224. package/dist/esm/hooks/use-hash.d.ts.map +1 -0
  225. package/dist/esm/hooks/use-hash.js +15 -0
  226. package/dist/esm/hooks/use-hash.js.map +1 -0
  227. package/dist/esm/hooks/use-hover.d.ts +8 -0
  228. package/dist/esm/hooks/use-hover.d.ts.map +1 -0
  229. package/dist/esm/hooks/use-hover.js +59 -0
  230. package/dist/esm/hooks/use-hover.js.map +1 -0
  231. package/dist/esm/hooks/use-strict-memo.d.ts +10 -0
  232. package/dist/esm/hooks/use-strict-memo.d.ts.map +1 -0
  233. package/dist/esm/hooks/use-strict-memo.js +119 -0
  234. package/dist/esm/hooks/use-strict-memo.js.map +1 -0
  235. package/dist/esm/index.d.ts +5 -0
  236. package/dist/esm/index.js +6 -0
  237. package/dist/esm/interface/admin-interface.d.ts +308 -0
  238. package/dist/esm/interface/admin-interface.d.ts.map +1 -0
  239. package/dist/esm/interface/admin-interface.js +463 -0
  240. package/dist/esm/interface/admin-interface.js.map +1 -0
  241. package/dist/esm/interface/admin-metrics.d.ts +597 -0
  242. package/dist/esm/interface/admin-metrics.d.ts.map +1 -0
  243. package/dist/esm/interface/admin-metrics.js +134 -0
  244. package/dist/esm/interface/admin-metrics.js.map +1 -0
  245. package/dist/esm/interface/client-interface.d.ts +447 -0
  246. package/dist/esm/interface/client-interface.d.ts.map +1 -0
  247. package/dist/esm/interface/client-interface.js +1946 -0
  248. package/dist/esm/interface/client-interface.js.map +1 -0
  249. package/dist/esm/interface/client-interface.test.d.ts +1 -0
  250. package/dist/esm/interface/client-interface.test.js +559 -0
  251. package/dist/esm/interface/client-interface.test.js.map +1 -0
  252. package/dist/esm/interface/conversations.d.ts +314 -0
  253. package/dist/esm/interface/conversations.d.ts.map +1 -0
  254. package/dist/esm/interface/conversations.js +108 -0
  255. package/dist/esm/interface/conversations.js.map +1 -0
  256. package/dist/esm/interface/crud/analytics.d.ts +14 -0
  257. package/dist/esm/interface/crud/analytics.d.ts.map +1 -0
  258. package/dist/esm/interface/crud/analytics.js +1 -0
  259. package/dist/esm/interface/crud/connected-accounts.d.ts +69 -0
  260. package/dist/esm/interface/crud/connected-accounts.d.ts.map +1 -0
  261. package/dist/esm/interface/crud/connected-accounts.js +35 -0
  262. package/dist/esm/interface/crud/connected-accounts.js.map +1 -0
  263. package/dist/esm/interface/crud/contact-channels.d.ts +182 -0
  264. package/dist/esm/interface/crud/contact-channels.d.ts.map +1 -0
  265. package/dist/esm/interface/crud/contact-channels.js +68 -0
  266. package/dist/esm/interface/crud/contact-channels.js.map +1 -0
  267. package/dist/esm/interface/crud/current-user.d.ts +286 -0
  268. package/dist/esm/interface/crud/current-user.d.ts.map +1 -0
  269. package/dist/esm/interface/crud/current-user.js +69 -0
  270. package/dist/esm/interface/crud/current-user.js.map +1 -0
  271. package/dist/esm/interface/crud/email-outbox.d.ts +1466 -0
  272. package/dist/esm/interface/crud/email-outbox.d.ts.map +1 -0
  273. package/dist/esm/interface/crud/email-outbox.js +190 -0
  274. package/dist/esm/interface/crud/email-outbox.js.map +1 -0
  275. package/dist/esm/interface/crud/email-templates.d.ts +86 -0
  276. package/dist/esm/interface/crud/email-templates.d.ts.map +1 -0
  277. package/dist/esm/interface/crud/email-templates.js +46 -0
  278. package/dist/esm/interface/crud/email-templates.js.map +1 -0
  279. package/dist/esm/interface/crud/emails.d.ts +42 -0
  280. package/dist/esm/interface/crud/emails.d.ts.map +1 -0
  281. package/dist/esm/interface/crud/emails.js +19 -0
  282. package/dist/esm/interface/crud/emails.js.map +1 -0
  283. package/dist/esm/interface/crud/internal-api-keys.d.ts +141 -0
  284. package/dist/esm/interface/crud/internal-api-keys.d.ts.map +1 -0
  285. package/dist/esm/interface/crud/internal-api-keys.js +49 -0
  286. package/dist/esm/interface/crud/internal-api-keys.js.map +1 -0
  287. package/dist/esm/interface/crud/invoices.d.ts +43 -0
  288. package/dist/esm/interface/crud/invoices.d.ts.map +1 -0
  289. package/dist/esm/interface/crud/invoices.js +25 -0
  290. package/dist/esm/interface/crud/invoices.js.map +1 -0
  291. package/dist/esm/interface/crud/items.d.ts +31 -0
  292. package/dist/esm/interface/crud/items.d.ts.map +1 -0
  293. package/dist/esm/interface/crud/items.js +23 -0
  294. package/dist/esm/interface/crud/items.js.map +1 -0
  295. package/dist/esm/interface/crud/notification-preferences.d.ts +39 -0
  296. package/dist/esm/interface/crud/notification-preferences.d.ts.map +1 -0
  297. package/dist/esm/interface/crud/notification-preferences.js +31 -0
  298. package/dist/esm/interface/crud/notification-preferences.js.map +1 -0
  299. package/dist/esm/interface/crud/oauth-providers.d.ts +187 -0
  300. package/dist/esm/interface/crud/oauth-providers.d.ts.map +1 -0
  301. package/dist/esm/interface/crud/oauth-providers.js +75 -0
  302. package/dist/esm/interface/crud/oauth-providers.js.map +1 -0
  303. package/dist/esm/interface/crud/products.d.ts +182 -0
  304. package/dist/esm/interface/crud/products.d.ts.map +1 -0
  305. package/dist/esm/interface/crud/products.js +29 -0
  306. package/dist/esm/interface/crud/products.js.map +1 -0
  307. package/dist/esm/interface/crud/project-api-keys.d.ts +204 -0
  308. package/dist/esm/interface/crud/project-api-keys.d.ts.map +1 -0
  309. package/dist/esm/interface/crud/project-api-keys.js +72 -0
  310. package/dist/esm/interface/crud/project-api-keys.js.map +1 -0
  311. package/dist/esm/interface/crud/project-permissions.d.ts +162 -0
  312. package/dist/esm/interface/crud/project-permissions.d.ts.map +1 -0
  313. package/dist/esm/interface/crud/project-permissions.js +104 -0
  314. package/dist/esm/interface/crud/project-permissions.js.map +1 -0
  315. package/dist/esm/interface/crud/projects.d.ts +852 -0
  316. package/dist/esm/interface/crud/projects.d.ts.map +1 -0
  317. package/dist/esm/interface/crud/projects.js +193 -0
  318. package/dist/esm/interface/crud/projects.js.map +1 -0
  319. package/dist/esm/interface/crud/session-replays.d.ts +83 -0
  320. package/dist/esm/interface/crud/session-replays.d.ts.map +1 -0
  321. package/dist/esm/interface/crud/session-replays.js +1 -0
  322. package/dist/esm/interface/crud/sessions.d.ts +151 -0
  323. package/dist/esm/interface/crud/sessions.d.ts.map +1 -0
  324. package/dist/esm/interface/crud/sessions.js +56 -0
  325. package/dist/esm/interface/crud/sessions.js.map +1 -0
  326. package/dist/esm/interface/crud/sign-up-rules.d.ts +15 -0
  327. package/dist/esm/interface/crud/sign-up-rules.d.ts.map +1 -0
  328. package/dist/esm/interface/crud/sign-up-rules.js +1 -0
  329. package/dist/esm/interface/crud/svix-token.d.ts +32 -0
  330. package/dist/esm/interface/crud/svix-token.d.ts.map +1 -0
  331. package/dist/esm/interface/crud/svix-token.js +18 -0
  332. package/dist/esm/interface/crud/svix-token.js.map +1 -0
  333. package/dist/esm/interface/crud/team-invitation-details.d.ts +32 -0
  334. package/dist/esm/interface/crud/team-invitation-details.d.ts.map +1 -0
  335. package/dist/esm/interface/crud/team-invitation-details.js +21 -0
  336. package/dist/esm/interface/crud/team-invitation-details.js.map +1 -0
  337. package/dist/esm/interface/crud/team-invitation.d.ts +55 -0
  338. package/dist/esm/interface/crud/team-invitation.d.ts.map +1 -0
  339. package/dist/esm/interface/crud/team-invitation.js +37 -0
  340. package/dist/esm/interface/crud/team-invitation.js.map +1 -0
  341. package/dist/esm/interface/crud/team-member-profiles.d.ts +287 -0
  342. package/dist/esm/interface/crud/team-member-profiles.d.ts.map +1 -0
  343. package/dist/esm/interface/crud/team-member-profiles.js +58 -0
  344. package/dist/esm/interface/crud/team-member-profiles.js.map +1 -0
  345. package/dist/esm/interface/crud/team-memberships.d.ts +76 -0
  346. package/dist/esm/interface/crud/team-memberships.d.ts.map +1 -0
  347. package/dist/esm/interface/crud/team-memberships.js +54 -0
  348. package/dist/esm/interface/crud/team-memberships.js.map +1 -0
  349. package/dist/esm/interface/crud/team-permissions.d.ts +170 -0
  350. package/dist/esm/interface/crud/team-permissions.d.ts.map +1 -0
  351. package/dist/esm/interface/crud/team-permissions.js +105 -0
  352. package/dist/esm/interface/crud/team-permissions.js.map +1 -0
  353. package/dist/esm/interface/crud/teams.d.ts +300 -0
  354. package/dist/esm/interface/crud/teams.d.ts.map +1 -0
  355. package/dist/esm/interface/crud/teams.js +129 -0
  356. package/dist/esm/interface/crud/teams.js.map +1 -0
  357. package/dist/esm/interface/crud/transactions.d.ts +183 -0
  358. package/dist/esm/interface/crud/transactions.d.ts.map +1 -0
  359. package/dist/esm/interface/crud/transactions.js +85 -0
  360. package/dist/esm/interface/crud/transactions.js.map +1 -0
  361. package/dist/esm/interface/crud/users.d.ts +654 -0
  362. package/dist/esm/interface/crud/users.d.ts.map +1 -0
  363. package/dist/esm/interface/crud/users.js +181 -0
  364. package/dist/esm/interface/crud/users.js.map +1 -0
  365. package/dist/esm/interface/handler-urls.d.ts +51 -0
  366. package/dist/esm/interface/handler-urls.d.ts.map +1 -0
  367. package/dist/esm/interface/handler-urls.js +3 -0
  368. package/dist/esm/interface/page-component-versions.d.ts +25 -0
  369. package/dist/esm/interface/page-component-versions.d.ts.map +1 -0
  370. package/dist/esm/interface/page-component-versions.js +1661 -0
  371. package/dist/esm/interface/page-component-versions.js.map +1 -0
  372. package/dist/esm/interface/server-interface.d.ts +255 -0
  373. package/dist/esm/interface/server-interface.d.ts.map +1 -0
  374. package/dist/esm/interface/server-interface.js +459 -0
  375. package/dist/esm/interface/server-interface.js.map +1 -0
  376. package/dist/esm/interface/webhooks.d.ts +326 -0
  377. package/dist/esm/interface/webhooks.d.ts.map +1 -0
  378. package/dist/esm/interface/webhooks.js +22 -0
  379. package/dist/esm/interface/webhooks.js.map +1 -0
  380. package/dist/esm/known-errors.d.ts +575 -0
  381. package/dist/esm/known-errors.d.ts.map +1 -0
  382. package/dist/esm/known-errors.js +791 -0
  383. package/dist/esm/known-errors.js.map +1 -0
  384. package/dist/esm/local-emulator.d.ts +6 -0
  385. package/dist/esm/local-emulator.d.ts.map +1 -0
  386. package/dist/esm/local-emulator.js +7 -0
  387. package/dist/esm/local-emulator.js.map +1 -0
  388. package/dist/esm/payments/payment-methods.d.ts +64 -0
  389. package/dist/esm/payments/payment-methods.d.ts.map +1 -0
  390. package/dist/esm/payments/payment-methods.js +205 -0
  391. package/dist/esm/payments/payment-methods.js.map +1 -0
  392. package/dist/esm/payments/stripe-limits.d.ts +17 -0
  393. package/dist/esm/payments/stripe-limits.d.ts.map +1 -0
  394. package/dist/esm/payments/stripe-limits.js +17 -0
  395. package/dist/esm/payments/stripe-limits.js.map +1 -0
  396. package/dist/esm/plans.d.ts +72 -0
  397. package/dist/esm/plans.d.ts.map +1 -0
  398. package/dist/esm/plans.js +81 -0
  399. package/dist/esm/plans.js.map +1 -0
  400. package/dist/esm/schema-fields.d.ts +472 -0
  401. package/dist/esm/schema-fields.d.ts.map +1 -0
  402. package/dist/esm/schema-fields.js +1009 -0
  403. package/dist/esm/schema-fields.js.map +1 -0
  404. package/dist/esm/sessions.d.ts +165 -0
  405. package/dist/esm/sessions.d.ts.map +1 -0
  406. package/dist/esm/sessions.js +226 -0
  407. package/dist/esm/sessions.js.map +1 -0
  408. package/dist/esm/stack-config-file.d.ts +15 -0
  409. package/dist/esm/stack-config-file.d.ts.map +1 -0
  410. package/dist/esm/stack-config-file.js +76 -0
  411. package/dist/esm/stack-config-file.js.map +1 -0
  412. package/dist/esm/utils/api-keys.d.ts +26 -0
  413. package/dist/esm/utils/api-keys.d.ts.map +1 -0
  414. package/dist/esm/utils/api-keys.js +77 -0
  415. package/dist/esm/utils/api-keys.js.map +1 -0
  416. package/dist/esm/utils/arrays.d.ts +25 -0
  417. package/dist/esm/utils/arrays.d.ts.map +1 -0
  418. package/dist/esm/utils/arrays.js +552 -0
  419. package/dist/esm/utils/arrays.js.map +1 -0
  420. package/dist/esm/utils/auth-methods.d.ts +6 -0
  421. package/dist/esm/utils/auth-methods.d.ts.map +1 -0
  422. package/dist/esm/utils/auth-methods.js +11 -0
  423. package/dist/esm/utils/auth-methods.js.map +1 -0
  424. package/dist/esm/utils/base64.d.ts +6 -0
  425. package/dist/esm/utils/base64.d.ts.map +1 -0
  426. package/dist/esm/utils/base64.js +25 -0
  427. package/dist/esm/utils/base64.js.map +1 -0
  428. package/dist/esm/utils/booleans.d.ts +8 -0
  429. package/dist/esm/utils/booleans.d.ts.map +1 -0
  430. package/dist/esm/utils/booleans.js +35 -0
  431. package/dist/esm/utils/booleans.js.map +1 -0
  432. package/dist/esm/utils/browser-compat.d.ts +10 -0
  433. package/dist/esm/utils/browser-compat.d.ts.map +1 -0
  434. package/dist/esm/utils/browser-compat.js +21 -0
  435. package/dist/esm/utils/browser-compat.js.map +1 -0
  436. package/dist/esm/utils/bytes.d.ts +17 -0
  437. package/dist/esm/utils/bytes.d.ts.map +1 -0
  438. package/dist/esm/utils/bytes.js +290 -0
  439. package/dist/esm/utils/bytes.js.map +1 -0
  440. package/dist/esm/utils/caches.d.ts +102 -0
  441. package/dist/esm/utils/caches.d.ts.map +1 -0
  442. package/dist/esm/utils/caches.js +185 -0
  443. package/dist/esm/utils/caches.js.map +1 -0
  444. package/dist/esm/utils/cel-fields.d.ts +23 -0
  445. package/dist/esm/utils/cel-fields.d.ts.map +1 -0
  446. package/dist/esm/utils/cel-fields.js +99 -0
  447. package/dist/esm/utils/cel-fields.js.map +1 -0
  448. package/dist/esm/utils/compile-time.d.ts +10 -0
  449. package/dist/esm/utils/compile-time.d.ts.map +1 -0
  450. package/dist/esm/utils/compile-time.js +14 -0
  451. package/dist/esm/utils/compile-time.js.map +1 -0
  452. package/dist/esm/utils/country-codes.d.ts +11 -0
  453. package/dist/esm/utils/country-codes.d.ts.map +1 -0
  454. package/dist/esm/utils/country-codes.js +36 -0
  455. package/dist/esm/utils/country-codes.js.map +1 -0
  456. package/dist/esm/utils/crypto.d.ts +48 -0
  457. package/dist/esm/utils/crypto.d.ts.map +1 -0
  458. package/dist/esm/utils/crypto.js +208 -0
  459. package/dist/esm/utils/crypto.js.map +1 -0
  460. package/dist/esm/utils/currencies.d.ts +8 -0
  461. package/dist/esm/utils/currencies.d.ts.map +1 -0
  462. package/dist/esm/utils/currencies.js +50 -0
  463. package/dist/esm/utils/currencies.js.map +1 -0
  464. package/dist/esm/utils/currency-constants.d.ts +39 -0
  465. package/dist/esm/utils/currency-constants.d.ts.map +1 -0
  466. package/dist/esm/utils/currency-constants.js +42 -0
  467. package/dist/esm/utils/currency-constants.js.map +1 -0
  468. package/dist/esm/utils/dates.d.ts +23 -0
  469. package/dist/esm/utils/dates.d.ts.map +1 -0
  470. package/dist/esm/utils/dates.js +167 -0
  471. package/dist/esm/utils/dates.js.map +1 -0
  472. package/dist/esm/utils/dev-env-state-path.d.ts +6 -0
  473. package/dist/esm/utils/dev-env-state-path.d.ts.map +1 -0
  474. package/dist/esm/utils/dev-env-state-path.js +15 -0
  475. package/dist/esm/utils/dev-env-state-path.js.map +1 -0
  476. package/dist/esm/utils/dom.d.ts +5 -0
  477. package/dist/esm/utils/dom.d.ts.map +1 -0
  478. package/dist/esm/utils/dom.js +11 -0
  479. package/dist/esm/utils/dom.js.map +1 -0
  480. package/dist/esm/utils/env.d.ts +25 -0
  481. package/dist/esm/utils/env.d.ts.map +1 -0
  482. package/dist/esm/utils/env.js +78 -0
  483. package/dist/esm/utils/env.js.map +1 -0
  484. package/dist/esm/utils/errors.d.ts +231 -0
  485. package/dist/esm/utils/errors.d.ts.map +1 -0
  486. package/dist/esm/utils/errors.js +385 -0
  487. package/dist/esm/utils/errors.js.map +1 -0
  488. package/dist/esm/utils/esbuild.d.ts +16 -0
  489. package/dist/esm/utils/esbuild.d.ts.map +1 -0
  490. package/dist/esm/utils/esbuild.js +182 -0
  491. package/dist/esm/utils/esbuild.js.map +1 -0
  492. package/dist/esm/utils/featurebase.d.ts +30 -0
  493. package/dist/esm/utils/featurebase.d.ts.map +1 -0
  494. package/dist/esm/utils/featurebase.js +166 -0
  495. package/dist/esm/utils/featurebase.js.map +1 -0
  496. package/dist/esm/utils/fs.d.ts +9 -0
  497. package/dist/esm/utils/fs.d.ts.map +1 -0
  498. package/dist/esm/utils/fs.js +25 -0
  499. package/dist/esm/utils/fs.js.map +1 -0
  500. package/dist/esm/utils/functions.d.ts +6 -0
  501. package/dist/esm/utils/functions.d.ts.map +1 -0
  502. package/dist/esm/utils/functions.js +34 -0
  503. package/dist/esm/utils/functions.js.map +1 -0
  504. package/dist/esm/utils/geo.d.ts +24 -0
  505. package/dist/esm/utils/geo.d.ts.map +1 -0
  506. package/dist/esm/utils/geo.js +16 -0
  507. package/dist/esm/utils/geo.js.map +1 -0
  508. package/dist/esm/utils/globals.d.ts +13 -0
  509. package/dist/esm/utils/globals.d.ts.map +1 -0
  510. package/dist/esm/utils/globals.js +34 -0
  511. package/dist/esm/utils/globals.js.map +1 -0
  512. package/dist/esm/utils/hashes.d.ts +9 -0
  513. package/dist/esm/utils/hashes.d.ts.map +1 -0
  514. package/dist/esm/utils/hashes.js +40 -0
  515. package/dist/esm/utils/hashes.js.map +1 -0
  516. package/dist/esm/utils/html.d.ts +7 -0
  517. package/dist/esm/utils/html.d.ts.map +1 -0
  518. package/dist/esm/utils/html.js +33 -0
  519. package/dist/esm/utils/html.js.map +1 -0
  520. package/dist/esm/utils/http.d.ts +45 -0
  521. package/dist/esm/utils/http.d.ts.map +1 -0
  522. package/dist/esm/utils/http.js +75 -0
  523. package/dist/esm/utils/http.js.map +1 -0
  524. package/dist/esm/utils/ips.d.ts +8 -0
  525. package/dist/esm/utils/ips.d.ts.map +1 -0
  526. package/dist/esm/utils/ips.js +36 -0
  527. package/dist/esm/utils/ips.js.map +1 -0
  528. package/dist/esm/utils/json.d.ts +15 -0
  529. package/dist/esm/utils/json.d.ts.map +1 -0
  530. package/dist/esm/utils/json.js +178 -0
  531. package/dist/esm/utils/json.js.map +1 -0
  532. package/dist/esm/utils/jsx-editable-transpiler.d.ts +68 -0
  533. package/dist/esm/utils/jsx-editable-transpiler.d.ts.map +1 -0
  534. package/dist/esm/utils/jsx-editable-transpiler.js +216 -0
  535. package/dist/esm/utils/jsx-editable-transpiler.js.map +1 -0
  536. package/dist/esm/utils/jsx-editable-transpiler.test.d.ts +1 -0
  537. package/dist/esm/utils/jsx-editable-transpiler.test.js +122 -0
  538. package/dist/esm/utils/jsx-editable-transpiler.test.js.map +1 -0
  539. package/dist/esm/utils/jwt.d.ts +79 -0
  540. package/dist/esm/utils/jwt.d.ts.map +1 -0
  541. package/dist/esm/utils/jwt.js +102 -0
  542. package/dist/esm/utils/jwt.js.map +1 -0
  543. package/dist/esm/utils/locks.d.ts +17 -0
  544. package/dist/esm/utils/locks.d.ts.map +1 -0
  545. package/dist/esm/utils/locks.js +54 -0
  546. package/dist/esm/utils/locks.js.map +1 -0
  547. package/dist/esm/utils/maps.d.ts +61 -0
  548. package/dist/esm/utils/maps.d.ts.map +1 -0
  549. package/dist/esm/utils/maps.js +297 -0
  550. package/dist/esm/utils/maps.js.map +1 -0
  551. package/dist/esm/utils/math.d.ts +8 -0
  552. package/dist/esm/utils/math.d.ts.map +1 -0
  553. package/dist/esm/utils/math.js +21 -0
  554. package/dist/esm/utils/math.js.map +1 -0
  555. package/dist/esm/utils/monkey-patch.d.ts +7 -0
  556. package/dist/esm/utils/monkey-patch.d.ts.map +1 -0
  557. package/dist/esm/utils/monkey-patch.js +21 -0
  558. package/dist/esm/utils/monkey-patch.js.map +1 -0
  559. package/dist/esm/utils/node-http.d.ts +17 -0
  560. package/dist/esm/utils/node-http.d.ts.map +1 -0
  561. package/dist/esm/utils/node-http.js +38 -0
  562. package/dist/esm/utils/node-http.js.map +1 -0
  563. package/dist/esm/utils/numbers.d.ts +7 -0
  564. package/dist/esm/utils/numbers.d.ts.map +1 -0
  565. package/dist/esm/utils/numbers.js +75 -0
  566. package/dist/esm/utils/numbers.js.map +1 -0
  567. package/dist/esm/utils/oauth.d.ts +11 -0
  568. package/dist/esm/utils/oauth.d.ts.map +1 -0
  569. package/dist/esm/utils/oauth.js +27 -0
  570. package/dist/esm/utils/oauth.js.map +1 -0
  571. package/dist/esm/utils/objects.d.ts +59 -0
  572. package/dist/esm/utils/objects.d.ts.map +1 -0
  573. package/dist/esm/utils/objects.js +818 -0
  574. package/dist/esm/utils/objects.js.map +1 -0
  575. package/dist/esm/utils/paginated-lists.d.ts +442 -0
  576. package/dist/esm/utils/paginated-lists.d.ts.map +1 -0
  577. package/dist/esm/utils/paginated-lists.js +411 -0
  578. package/dist/esm/utils/paginated-lists.js.map +1 -0
  579. package/dist/esm/utils/paginated-lists.test.d.ts +1 -0
  580. package/dist/esm/utils/paginated-lists.test.js +1304 -0
  581. package/dist/esm/utils/paginated-lists.test.js.map +1 -0
  582. package/dist/esm/utils/passkey.d.ts +2 -0
  583. package/dist/esm/utils/passkey.js +1 -0
  584. package/dist/esm/utils/promises.d.ts +80 -0
  585. package/dist/esm/utils/promises.d.ts.map +1 -0
  586. package/dist/esm/utils/promises.js +333 -0
  587. package/dist/esm/utils/promises.js.map +1 -0
  588. package/dist/esm/utils/proxies.d.ts +13 -0
  589. package/dist/esm/utils/proxies.d.ts.map +1 -0
  590. package/dist/esm/utils/proxies.js +197 -0
  591. package/dist/esm/utils/proxies.js.map +1 -0
  592. package/dist/esm/utils/react.d.ts +61 -0
  593. package/dist/esm/utils/react.d.ts.map +1 -0
  594. package/dist/esm/utils/react.js +229 -0
  595. package/dist/esm/utils/react.js.map +1 -0
  596. package/dist/esm/utils/redirect-urls.d.ts +30 -0
  597. package/dist/esm/utils/redirect-urls.d.ts.map +1 -0
  598. package/dist/esm/utils/redirect-urls.js +215 -0
  599. package/dist/esm/utils/redirect-urls.js.map +1 -0
  600. package/dist/esm/utils/regex.d.ts +5 -0
  601. package/dist/esm/utils/regex.d.ts.map +1 -0
  602. package/dist/esm/utils/regex.js +13 -0
  603. package/dist/esm/utils/regex.js.map +1 -0
  604. package/dist/esm/utils/results.d.ts +70 -0
  605. package/dist/esm/utils/results.d.ts.map +1 -0
  606. package/dist/esm/utils/results.js +339 -0
  607. package/dist/esm/utils/results.js.map +1 -0
  608. package/dist/esm/utils/sentry.d.ts +13 -0
  609. package/dist/esm/utils/sentry.d.ts.map +1 -0
  610. package/dist/esm/utils/sentry.js +14 -0
  611. package/dist/esm/utils/sentry.js.map +1 -0
  612. package/dist/esm/utils/stores.d.ts +104 -0
  613. package/dist/esm/utils/stores.d.ts.map +1 -0
  614. package/dist/esm/utils/stores.js +175 -0
  615. package/dist/esm/utils/stores.js.map +1 -0
  616. package/dist/esm/utils/strings.d.ts +76 -0
  617. package/dist/esm/utils/strings.d.ts.map +1 -0
  618. package/dist/esm/utils/strings.js +530 -0
  619. package/dist/esm/utils/strings.js.map +1 -0
  620. package/dist/esm/utils/strings.nicify.test.d.ts +1 -0
  621. package/dist/esm/utils/strings.nicify.test.js +243 -0
  622. package/dist/esm/utils/strings.nicify.test.js.map +1 -0
  623. package/dist/esm/utils/telemetry.d.ts +15 -0
  624. package/dist/esm/utils/telemetry.d.ts.map +1 -0
  625. package/dist/esm/utils/telemetry.js +31 -0
  626. package/dist/esm/utils/telemetry.js.map +1 -0
  627. package/dist/esm/utils/turnstile-browser.d.ts +32 -0
  628. package/dist/esm/utils/turnstile-browser.d.ts.map +1 -0
  629. package/dist/esm/utils/turnstile-browser.js +61 -0
  630. package/dist/esm/utils/turnstile-browser.js.map +1 -0
  631. package/dist/esm/utils/turnstile-flow.d.ts +29 -0
  632. package/dist/esm/utils/turnstile-flow.d.ts.map +1 -0
  633. package/dist/esm/utils/turnstile-flow.js +219 -0
  634. package/dist/esm/utils/turnstile-flow.js.map +1 -0
  635. package/dist/esm/utils/turnstile-flow.test.d.ts +1 -0
  636. package/dist/esm/utils/turnstile-flow.test.js +75 -0
  637. package/dist/esm/utils/turnstile-flow.test.js.map +1 -0
  638. package/dist/esm/utils/turnstile.d.ts +17 -0
  639. package/dist/esm/utils/turnstile.d.ts.map +1 -0
  640. package/dist/esm/utils/turnstile.js +25 -0
  641. package/dist/esm/utils/turnstile.js.map +1 -0
  642. package/dist/esm/utils/typed-arrays.d.ts +14 -0
  643. package/dist/esm/utils/typed-arrays.d.ts.map +1 -0
  644. package/dist/esm/utils/typed-arrays.js +20 -0
  645. package/dist/esm/utils/typed-arrays.js.map +1 -0
  646. package/dist/esm/utils/types.d.ts +77 -0
  647. package/dist/esm/utils/types.d.ts.map +1 -0
  648. package/dist/esm/utils/types.js +55 -0
  649. package/dist/esm/utils/types.js.map +1 -0
  650. package/dist/esm/utils/unicode.d.ts +5 -0
  651. package/dist/esm/utils/unicode.d.ts.map +1 -0
  652. package/dist/esm/utils/unicode.js +24 -0
  653. package/dist/esm/utils/unicode.js.map +1 -0
  654. package/dist/esm/utils/urls.d.ts +28 -0
  655. package/dist/esm/utils/urls.d.ts.map +1 -0
  656. package/dist/esm/utils/urls.js +259 -0
  657. package/dist/esm/utils/urls.js.map +1 -0
  658. package/dist/esm/utils/uuids.d.ts +6 -0
  659. package/dist/esm/utils/uuids.d.ts.map +1 -0
  660. package/dist/esm/utils/uuids.js +36 -0
  661. package/dist/esm/utils/uuids.js.map +1 -0
  662. package/dist/global.d.d.ts +0 -0
  663. package/dist/global.d.ts +1 -0
  664. package/dist/helpers/emails.d.ts +69 -0
  665. package/dist/helpers/emails.d.ts.map +1 -0
  666. package/dist/helpers/emails.js +252 -0
  667. package/dist/helpers/emails.js.map +1 -0
  668. package/dist/helpers/init-prompt.d.ts +5 -0
  669. package/dist/helpers/init-prompt.d.ts.map +1 -0
  670. package/dist/helpers/init-prompt.js +42 -0
  671. package/dist/helpers/init-prompt.js.map +1 -0
  672. package/dist/helpers/password.d.ts +6 -0
  673. package/dist/helpers/password.d.ts.map +1 -0
  674. package/dist/helpers/password.js +15 -0
  675. package/dist/helpers/password.js.map +1 -0
  676. package/dist/helpers/production-mode.d.ts +11 -0
  677. package/dist/helpers/production-mode.d.ts.map +1 -0
  678. package/dist/helpers/production-mode.js +48 -0
  679. package/dist/helpers/production-mode.js.map +1 -0
  680. package/dist/helpers/support-sla.d.ts +48 -0
  681. package/dist/helpers/support-sla.d.ts.map +1 -0
  682. package/dist/helpers/support-sla.js +72 -0
  683. package/dist/helpers/support-sla.js.map +1 -0
  684. package/dist/helpers/support-sla.test.d.ts +1 -0
  685. package/dist/helpers/support-sla.test.js +102 -0
  686. package/dist/helpers/support-sla.test.js.map +1 -0
  687. package/dist/helpers/vault/client-side.d.ts +16 -0
  688. package/dist/helpers/vault/client-side.d.ts.map +1 -0
  689. package/dist/helpers/vault/client-side.js +73 -0
  690. package/dist/helpers/vault/client-side.js.map +1 -0
  691. package/dist/helpers/vault/server-side.d.ts +9 -0
  692. package/dist/helpers/vault/server-side.d.ts.map +1 -0
  693. package/dist/helpers/vault/server-side.js +126 -0
  694. package/dist/helpers/vault/server-side.js.map +1 -0
  695. package/dist/hooks/use-async-callback.d.ts +8 -0
  696. package/dist/hooks/use-async-callback.d.ts.map +1 -0
  697. package/dist/hooks/use-async-callback.js +42 -0
  698. package/dist/hooks/use-async-callback.js.map +1 -0
  699. package/dist/hooks/use-async-external-store.d.ts +9 -0
  700. package/dist/hooks/use-async-external-store.d.ts.map +1 -0
  701. package/dist/hooks/use-async-external-store.js +22 -0
  702. package/dist/hooks/use-async-external-store.js.map +1 -0
  703. package/dist/hooks/use-hash.d.ts +5 -0
  704. package/dist/hooks/use-hash.d.ts.map +1 -0
  705. package/dist/hooks/use-hash.js +17 -0
  706. package/dist/hooks/use-hash.js.map +1 -0
  707. package/dist/hooks/use-hover.d.ts +8 -0
  708. package/dist/hooks/use-hover.d.ts.map +1 -0
  709. package/dist/hooks/use-hover.js +61 -0
  710. package/dist/hooks/use-hover.js.map +1 -0
  711. package/dist/hooks/use-strict-memo.d.ts +10 -0
  712. package/dist/hooks/use-strict-memo.d.ts.map +1 -0
  713. package/dist/hooks/use-strict-memo.js +121 -0
  714. package/dist/hooks/use-strict-memo.js.map +1 -0
  715. package/dist/index-D9ysacya.d.ts +153 -0
  716. package/dist/index-D9ysacya.d.ts.map +1 -0
  717. package/dist/index.d.ts +5 -0
  718. package/dist/index.js +37 -0
  719. package/dist/interface/admin-interface.d.ts +308 -0
  720. package/dist/interface/admin-interface.d.ts.map +1 -0
  721. package/dist/interface/admin-interface.js +465 -0
  722. package/dist/interface/admin-interface.js.map +1 -0
  723. package/dist/interface/admin-metrics.d.ts +597 -0
  724. package/dist/interface/admin-metrics.d.ts.map +1 -0
  725. package/dist/interface/admin-metrics.js +153 -0
  726. package/dist/interface/admin-metrics.js.map +1 -0
  727. package/dist/interface/client-interface.d.ts +447 -0
  728. package/dist/interface/client-interface.d.ts.map +1 -0
  729. package/dist/interface/client-interface.js +1948 -0
  730. package/dist/interface/client-interface.js.map +1 -0
  731. package/dist/interface/client-interface.test.d.ts +1 -0
  732. package/dist/interface/client-interface.test.js +559 -0
  733. package/dist/interface/client-interface.test.js.map +1 -0
  734. package/dist/interface/conversations.d.ts +314 -0
  735. package/dist/interface/conversations.d.ts.map +1 -0
  736. package/dist/interface/conversations.js +121 -0
  737. package/dist/interface/conversations.js.map +1 -0
  738. package/dist/interface/crud/analytics.d.ts +14 -0
  739. package/dist/interface/crud/analytics.d.ts.map +1 -0
  740. package/dist/interface/crud/analytics.js +0 -0
  741. package/dist/interface/crud/connected-accounts.d.ts +68 -0
  742. package/dist/interface/crud/connected-accounts.d.ts.map +1 -0
  743. package/dist/interface/crud/connected-accounts.js +41 -0
  744. package/dist/interface/crud/connected-accounts.js.map +1 -0
  745. package/dist/interface/crud/contact-channels.d.ts +181 -0
  746. package/dist/interface/crud/contact-channels.d.ts.map +1 -0
  747. package/dist/interface/crud/contact-channels.js +76 -0
  748. package/dist/interface/crud/contact-channels.js.map +1 -0
  749. package/dist/interface/crud/current-user.d.ts +285 -0
  750. package/dist/interface/crud/current-user.d.ts.map +1 -0
  751. package/dist/interface/crud/current-user.js +71 -0
  752. package/dist/interface/crud/current-user.js.map +1 -0
  753. package/dist/interface/crud/email-outbox.d.ts +1465 -0
  754. package/dist/interface/crud/email-outbox.d.ts.map +1 -0
  755. package/dist/interface/crud/email-outbox.js +195 -0
  756. package/dist/interface/crud/email-outbox.js.map +1 -0
  757. package/dist/interface/crud/email-templates.d.ts +85 -0
  758. package/dist/interface/crud/email-templates.d.ts.map +1 -0
  759. package/dist/interface/crud/email-templates.js +53 -0
  760. package/dist/interface/crud/email-templates.js.map +1 -0
  761. package/dist/interface/crud/emails.d.ts +41 -0
  762. package/dist/interface/crud/emails.d.ts.map +1 -0
  763. package/dist/interface/crud/emails.js +23 -0
  764. package/dist/interface/crud/emails.js.map +1 -0
  765. package/dist/interface/crud/internal-api-keys.d.ts +140 -0
  766. package/dist/interface/crud/internal-api-keys.d.ts.map +1 -0
  767. package/dist/interface/crud/internal-api-keys.js +56 -0
  768. package/dist/interface/crud/internal-api-keys.js.map +1 -0
  769. package/dist/interface/crud/invoices.d.ts +43 -0
  770. package/dist/interface/crud/invoices.d.ts.map +1 -0
  771. package/dist/interface/crud/invoices.js +28 -0
  772. package/dist/interface/crud/invoices.js.map +1 -0
  773. package/dist/interface/crud/items.d.ts +30 -0
  774. package/dist/interface/crud/items.d.ts.map +1 -0
  775. package/dist/interface/crud/items.js +25 -0
  776. package/dist/interface/crud/items.js.map +1 -0
  777. package/dist/interface/crud/notification-preferences.d.ts +38 -0
  778. package/dist/interface/crud/notification-preferences.d.ts.map +1 -0
  779. package/dist/interface/crud/notification-preferences.js +33 -0
  780. package/dist/interface/crud/notification-preferences.js.map +1 -0
  781. package/dist/interface/crud/oauth-providers.d.ts +186 -0
  782. package/dist/interface/crud/oauth-providers.d.ts.map +1 -0
  783. package/dist/interface/crud/oauth-providers.js +83 -0
  784. package/dist/interface/crud/oauth-providers.js.map +1 -0
  785. package/dist/interface/crud/products.d.ts +182 -0
  786. package/dist/interface/crud/products.d.ts.map +1 -0
  787. package/dist/interface/crud/products.js +32 -0
  788. package/dist/interface/crud/products.js.map +1 -0
  789. package/dist/interface/crud/project-api-keys.d.ts +203 -0
  790. package/dist/interface/crud/project-api-keys.d.ts.map +1 -0
  791. package/dist/interface/crud/project-api-keys.js +79 -0
  792. package/dist/interface/crud/project-api-keys.js.map +1 -0
  793. package/dist/interface/crud/project-permissions.d.ts +161 -0
  794. package/dist/interface/crud/project-permissions.d.ts.map +1 -0
  795. package/dist/interface/crud/project-permissions.js +116 -0
  796. package/dist/interface/crud/project-permissions.js.map +1 -0
  797. package/dist/interface/crud/projects.d.ts +851 -0
  798. package/dist/interface/crud/projects.d.ts.map +1 -0
  799. package/dist/interface/crud/projects.js +204 -0
  800. package/dist/interface/crud/projects.js.map +1 -0
  801. package/dist/interface/crud/session-replays.d.ts +83 -0
  802. package/dist/interface/crud/session-replays.d.ts.map +1 -0
  803. package/dist/interface/crud/session-replays.js +0 -0
  804. package/dist/interface/crud/sessions.d.ts +150 -0
  805. package/dist/interface/crud/sessions.d.ts.map +1 -0
  806. package/dist/interface/crud/sessions.js +62 -0
  807. package/dist/interface/crud/sessions.js.map +1 -0
  808. package/dist/interface/crud/sign-up-rules.d.ts +15 -0
  809. package/dist/interface/crud/sign-up-rules.d.ts.map +1 -0
  810. package/dist/interface/crud/sign-up-rules.js +0 -0
  811. package/dist/interface/crud/svix-token.d.ts +31 -0
  812. package/dist/interface/crud/svix-token.d.ts.map +1 -0
  813. package/dist/interface/crud/svix-token.js +22 -0
  814. package/dist/interface/crud/svix-token.js.map +1 -0
  815. package/dist/interface/crud/team-invitation-details.d.ts +31 -0
  816. package/dist/interface/crud/team-invitation-details.d.ts.map +1 -0
  817. package/dist/interface/crud/team-invitation-details.js +24 -0
  818. package/dist/interface/crud/team-invitation-details.js.map +1 -0
  819. package/dist/interface/crud/team-invitation.d.ts +54 -0
  820. package/dist/interface/crud/team-invitation.d.ts.map +1 -0
  821. package/dist/interface/crud/team-invitation.js +40 -0
  822. package/dist/interface/crud/team-invitation.js.map +1 -0
  823. package/dist/interface/crud/team-member-profiles.d.ts +286 -0
  824. package/dist/interface/crud/team-member-profiles.d.ts.map +1 -0
  825. package/dist/interface/crud/team-member-profiles.js +63 -0
  826. package/dist/interface/crud/team-member-profiles.js.map +1 -0
  827. package/dist/interface/crud/team-memberships.d.ts +75 -0
  828. package/dist/interface/crud/team-memberships.d.ts.map +1 -0
  829. package/dist/interface/crud/team-memberships.js +61 -0
  830. package/dist/interface/crud/team-memberships.js.map +1 -0
  831. package/dist/interface/crud/team-permissions.d.ts +169 -0
  832. package/dist/interface/crud/team-permissions.d.ts.map +1 -0
  833. package/dist/interface/crud/team-permissions.js +117 -0
  834. package/dist/interface/crud/team-permissions.js.map +1 -0
  835. package/dist/interface/crud/teams.d.ts +299 -0
  836. package/dist/interface/crud/teams.d.ts.map +1 -0
  837. package/dist/interface/crud/teams.js +142 -0
  838. package/dist/interface/crud/teams.js.map +1 -0
  839. package/dist/interface/crud/transactions.d.ts +183 -0
  840. package/dist/interface/crud/transactions.d.ts.map +1 -0
  841. package/dist/interface/crud/transactions.js +89 -0
  842. package/dist/interface/crud/transactions.js.map +1 -0
  843. package/dist/interface/crud/users.d.ts +653 -0
  844. package/dist/interface/crud/users.d.ts.map +1 -0
  845. package/dist/interface/crud/users.js +193 -0
  846. package/dist/interface/crud/users.js.map +1 -0
  847. package/dist/interface/handler-urls.d.ts +51 -0
  848. package/dist/interface/handler-urls.d.ts.map +1 -0
  849. package/dist/interface/handler-urls.js +16 -0
  850. package/dist/interface/page-component-versions.d.ts +25 -0
  851. package/dist/interface/page-component-versions.d.ts.map +1 -0
  852. package/dist/interface/page-component-versions.js +1664 -0
  853. package/dist/interface/page-component-versions.js.map +1 -0
  854. package/dist/interface/server-interface.d.ts +255 -0
  855. package/dist/interface/server-interface.d.ts.map +1 -0
  856. package/dist/interface/server-interface.js +461 -0
  857. package/dist/interface/server-interface.js.map +1 -0
  858. package/dist/interface/webhooks.d.ts +326 -0
  859. package/dist/interface/webhooks.d.ts.map +1 -0
  860. package/dist/interface/webhooks.js +24 -0
  861. package/dist/interface/webhooks.js.map +1 -0
  862. package/dist/known-errors.d.ts +575 -0
  863. package/dist/known-errors.d.ts.map +1 -0
  864. package/dist/known-errors.js +794 -0
  865. package/dist/known-errors.js.map +1 -0
  866. package/dist/local-emulator.d.ts +6 -0
  867. package/dist/local-emulator.d.ts.map +1 -0
  868. package/dist/local-emulator.js +10 -0
  869. package/dist/local-emulator.js.map +1 -0
  870. package/dist/payments/payment-methods.d.ts +64 -0
  871. package/dist/payments/payment-methods.d.ts.map +1 -0
  872. package/dist/payments/payment-methods.js +216 -0
  873. package/dist/payments/payment-methods.js.map +1 -0
  874. package/dist/payments/stripe-limits.d.ts +17 -0
  875. package/dist/payments/stripe-limits.d.ts.map +1 -0
  876. package/dist/payments/stripe-limits.js +20 -0
  877. package/dist/payments/stripe-limits.js.map +1 -0
  878. package/dist/plans.d.ts +72 -0
  879. package/dist/plans.d.ts.map +1 -0
  880. package/dist/plans.js +88 -0
  881. package/dist/plans.js.map +1 -0
  882. package/dist/schema-fields.d.ts +472 -0
  883. package/dist/schema-fields.d.ts.map +1 -0
  884. package/dist/schema-fields.js +1188 -0
  885. package/dist/schema-fields.js.map +1 -0
  886. package/dist/sessions.d.ts +165 -0
  887. package/dist/sessions.d.ts.map +1 -0
  888. package/dist/sessions.js +231 -0
  889. package/dist/sessions.js.map +1 -0
  890. package/dist/stack-config-file.d.ts +15 -0
  891. package/dist/stack-config-file.d.ts.map +1 -0
  892. package/dist/stack-config-file.js +82 -0
  893. package/dist/stack-config-file.js.map +1 -0
  894. package/dist/utils/api-keys.d.ts +26 -0
  895. package/dist/utils/api-keys.d.ts.map +1 -0
  896. package/dist/utils/api-keys.js +82 -0
  897. package/dist/utils/api-keys.js.map +1 -0
  898. package/dist/utils/arrays.d.ts +25 -0
  899. package/dist/utils/arrays.d.ts.map +1 -0
  900. package/dist/utils/arrays.js +569 -0
  901. package/dist/utils/arrays.js.map +1 -0
  902. package/dist/utils/auth-methods.d.ts +6 -0
  903. package/dist/utils/auth-methods.d.ts.map +1 -0
  904. package/dist/utils/auth-methods.js +13 -0
  905. package/dist/utils/auth-methods.js.map +1 -0
  906. package/dist/utils/base64.d.ts +6 -0
  907. package/dist/utils/base64.d.ts.map +1 -0
  908. package/dist/utils/base64.js +28 -0
  909. package/dist/utils/base64.js.map +1 -0
  910. package/dist/utils/booleans.d.ts +8 -0
  911. package/dist/utils/booleans.d.ts.map +1 -0
  912. package/dist/utils/booleans.js +38 -0
  913. package/dist/utils/booleans.js.map +1 -0
  914. package/dist/utils/browser-compat.d.ts +10 -0
  915. package/dist/utils/browser-compat.d.ts.map +1 -0
  916. package/dist/utils/browser-compat.js +23 -0
  917. package/dist/utils/browser-compat.js.map +1 -0
  918. package/dist/utils/bytes.d.ts +17 -0
  919. package/dist/utils/bytes.d.ts.map +1 -0
  920. package/dist/utils/bytes.js +304 -0
  921. package/dist/utils/bytes.js.map +1 -0
  922. package/dist/utils/caches.d.ts +102 -0
  923. package/dist/utils/caches.d.ts.map +1 -0
  924. package/dist/utils/caches.js +188 -0
  925. package/dist/utils/caches.js.map +1 -0
  926. package/dist/utils/cel-fields.d.ts +23 -0
  927. package/dist/utils/cel-fields.d.ts.map +1 -0
  928. package/dist/utils/cel-fields.js +108 -0
  929. package/dist/utils/cel-fields.js.map +1 -0
  930. package/dist/utils/compile-time.d.ts +10 -0
  931. package/dist/utils/compile-time.d.ts.map +1 -0
  932. package/dist/utils/compile-time.js +16 -0
  933. package/dist/utils/compile-time.js.map +1 -0
  934. package/dist/utils/country-codes.d.ts +11 -0
  935. package/dist/utils/country-codes.d.ts.map +1 -0
  936. package/dist/utils/country-codes.js +40 -0
  937. package/dist/utils/country-codes.js.map +1 -0
  938. package/dist/utils/crypto.d.ts +48 -0
  939. package/dist/utils/crypto.d.ts.map +1 -0
  940. package/dist/utils/crypto.js +215 -0
  941. package/dist/utils/crypto.js.map +1 -0
  942. package/dist/utils/currencies.d.ts +8 -0
  943. package/dist/utils/currencies.d.ts.map +1 -0
  944. package/dist/utils/currencies.js +52 -0
  945. package/dist/utils/currencies.js.map +1 -0
  946. package/dist/utils/currency-constants.d.ts +39 -0
  947. package/dist/utils/currency-constants.d.ts.map +1 -0
  948. package/dist/utils/currency-constants.js +44 -0
  949. package/dist/utils/currency-constants.js.map +1 -0
  950. package/dist/utils/dates.d.ts +23 -0
  951. package/dist/utils/dates.d.ts.map +1 -0
  952. package/dist/utils/dates.js +176 -0
  953. package/dist/utils/dates.js.map +1 -0
  954. package/dist/utils/dev-env-state-path.d.ts +6 -0
  955. package/dist/utils/dev-env-state-path.d.ts.map +1 -0
  956. package/dist/utils/dev-env-state-path.js +18 -0
  957. package/dist/utils/dev-env-state-path.js.map +1 -0
  958. package/dist/utils/dom.d.ts +5 -0
  959. package/dist/utils/dom.d.ts.map +1 -0
  960. package/dist/utils/dom.js +13 -0
  961. package/dist/utils/dom.js.map +1 -0
  962. package/dist/utils/env.d.ts +25 -0
  963. package/dist/utils/env.d.ts.map +1 -0
  964. package/dist/utils/env.js +85 -0
  965. package/dist/utils/env.js.map +1 -0
  966. package/dist/utils/errors.d.ts +231 -0
  967. package/dist/utils/errors.d.ts.map +1 -0
  968. package/dist/utils/errors.js +393 -0
  969. package/dist/utils/errors.js.map +1 -0
  970. package/dist/utils/esbuild.d.ts +16 -0
  971. package/dist/utils/esbuild.d.ts.map +1 -0
  972. package/dist/utils/esbuild.js +186 -0
  973. package/dist/utils/esbuild.js.map +1 -0
  974. package/dist/utils/featurebase.d.ts +30 -0
  975. package/dist/utils/featurebase.d.ts.map +1 -0
  976. package/dist/utils/featurebase.js +168 -0
  977. package/dist/utils/featurebase.js.map +1 -0
  978. package/dist/utils/fs.d.ts +9 -0
  979. package/dist/utils/fs.d.ts.map +1 -0
  980. package/dist/utils/fs.js +31 -0
  981. package/dist/utils/fs.js.map +1 -0
  982. package/dist/utils/functions.d.ts +6 -0
  983. package/dist/utils/functions.d.ts.map +1 -0
  984. package/dist/utils/functions.js +37 -0
  985. package/dist/utils/functions.js.map +1 -0
  986. package/dist/utils/geo.d.ts +24 -0
  987. package/dist/utils/geo.d.ts.map +1 -0
  988. package/dist/utils/geo.js +18 -0
  989. package/dist/utils/geo.js.map +1 -0
  990. package/dist/utils/globals.d.ts +13 -0
  991. package/dist/utils/globals.d.ts.map +1 -0
  992. package/dist/utils/globals.js +40 -0
  993. package/dist/utils/globals.js.map +1 -0
  994. package/dist/utils/hashes.d.ts +9 -0
  995. package/dist/utils/hashes.d.ts.map +1 -0
  996. package/dist/utils/hashes.js +47 -0
  997. package/dist/utils/hashes.js.map +1 -0
  998. package/dist/utils/html.d.ts +7 -0
  999. package/dist/utils/html.d.ts.map +1 -0
  1000. package/dist/utils/html.js +37 -0
  1001. package/dist/utils/html.js.map +1 -0
  1002. package/dist/utils/http.d.ts +45 -0
  1003. package/dist/utils/http.d.ts.map +1 -0
  1004. package/dist/utils/http.js +79 -0
  1005. package/dist/utils/http.js.map +1 -0
  1006. package/dist/utils/ips.d.ts +8 -0
  1007. package/dist/utils/ips.d.ts.map +1 -0
  1008. package/dist/utils/ips.js +40 -0
  1009. package/dist/utils/ips.js.map +1 -0
  1010. package/dist/utils/json.d.ts +15 -0
  1011. package/dist/utils/json.d.ts.map +1 -0
  1012. package/dist/utils/json.js +182 -0
  1013. package/dist/utils/json.js.map +1 -0
  1014. package/dist/utils/jsx-editable-transpiler.d.ts +68 -0
  1015. package/dist/utils/jsx-editable-transpiler.d.ts.map +1 -0
  1016. package/dist/utils/jsx-editable-transpiler.js +223 -0
  1017. package/dist/utils/jsx-editable-transpiler.js.map +1 -0
  1018. package/dist/utils/jsx-editable-transpiler.test.d.ts +1 -0
  1019. package/dist/utils/jsx-editable-transpiler.test.js +122 -0
  1020. package/dist/utils/jsx-editable-transpiler.test.js.map +1 -0
  1021. package/dist/utils/jwt.d.ts +79 -0
  1022. package/dist/utils/jwt.d.ts.map +1 -0
  1023. package/dist/utils/jwt.js +112 -0
  1024. package/dist/utils/jwt.js.map +1 -0
  1025. package/dist/utils/locks.d.ts +17 -0
  1026. package/dist/utils/locks.d.ts.map +1 -0
  1027. package/dist/utils/locks.js +56 -0
  1028. package/dist/utils/locks.js.map +1 -0
  1029. package/dist/utils/maps.d.ts +61 -0
  1030. package/dist/utils/maps.d.ts.map +1 -0
  1031. package/dist/utils/maps.js +302 -0
  1032. package/dist/utils/maps.js.map +1 -0
  1033. package/dist/utils/math.d.ts +8 -0
  1034. package/dist/utils/math.d.ts.map +1 -0
  1035. package/dist/utils/math.js +23 -0
  1036. package/dist/utils/math.js.map +1 -0
  1037. package/dist/utils/monkey-patch.d.ts +7 -0
  1038. package/dist/utils/monkey-patch.d.ts.map +1 -0
  1039. package/dist/utils/monkey-patch.js +25 -0
  1040. package/dist/utils/monkey-patch.js.map +1 -0
  1041. package/dist/utils/node-http.d.ts +17 -0
  1042. package/dist/utils/node-http.d.ts.map +1 -0
  1043. package/dist/utils/node-http.js +40 -0
  1044. package/dist/utils/node-http.js.map +1 -0
  1045. package/dist/utils/numbers.d.ts +7 -0
  1046. package/dist/utils/numbers.d.ts.map +1 -0
  1047. package/dist/utils/numbers.js +79 -0
  1048. package/dist/utils/numbers.js.map +1 -0
  1049. package/dist/utils/oauth.d.ts +11 -0
  1050. package/dist/utils/oauth.d.ts.map +1 -0
  1051. package/dist/utils/oauth.js +32 -0
  1052. package/dist/utils/oauth.js.map +1 -0
  1053. package/dist/utils/objects.d.ts +59 -0
  1054. package/dist/utils/objects.d.ts.map +1 -0
  1055. package/dist/utils/objects.js +846 -0
  1056. package/dist/utils/objects.js.map +1 -0
  1057. package/dist/utils/paginated-lists.d.ts +442 -0
  1058. package/dist/utils/paginated-lists.d.ts.map +1 -0
  1059. package/dist/utils/paginated-lists.js +414 -0
  1060. package/dist/utils/paginated-lists.js.map +1 -0
  1061. package/dist/utils/paginated-lists.test.d.ts +1 -0
  1062. package/dist/utils/paginated-lists.test.js +1304 -0
  1063. package/dist/utils/paginated-lists.test.js.map +1 -0
  1064. package/dist/utils/passkey.d.ts +2 -0
  1065. package/dist/utils/passkey.js +0 -0
  1066. package/dist/utils/promises.d.ts +80 -0
  1067. package/dist/utils/promises.d.ts.map +1 -0
  1068. package/dist/utils/promises.js +349 -0
  1069. package/dist/utils/promises.js.map +1 -0
  1070. package/dist/utils/proxies.d.ts +13 -0
  1071. package/dist/utils/proxies.d.ts.map +1 -0
  1072. package/dist/utils/proxies.js +201 -0
  1073. package/dist/utils/proxies.js.map +1 -0
  1074. package/dist/utils/react.d.ts +61 -0
  1075. package/dist/utils/react.d.ts.map +1 -0
  1076. package/dist/utils/react.js +243 -0
  1077. package/dist/utils/react.js.map +1 -0
  1078. package/dist/utils/redirect-urls.d.ts +30 -0
  1079. package/dist/utils/redirect-urls.d.ts.map +1 -0
  1080. package/dist/utils/redirect-urls.js +222 -0
  1081. package/dist/utils/redirect-urls.js.map +1 -0
  1082. package/dist/utils/regex.d.ts +5 -0
  1083. package/dist/utils/regex.d.ts.map +1 -0
  1084. package/dist/utils/regex.js +15 -0
  1085. package/dist/utils/regex.js.map +1 -0
  1086. package/dist/utils/results.d.ts +70 -0
  1087. package/dist/utils/results.d.ts.map +1 -0
  1088. package/dist/utils/results.js +342 -0
  1089. package/dist/utils/results.js.map +1 -0
  1090. package/dist/utils/sentry.d.ts +13 -0
  1091. package/dist/utils/sentry.d.ts.map +1 -0
  1092. package/dist/utils/sentry.js +16 -0
  1093. package/dist/utils/sentry.js.map +1 -0
  1094. package/dist/utils/stores.d.ts +104 -0
  1095. package/dist/utils/stores.d.ts.map +1 -0
  1096. package/dist/utils/stores.js +179 -0
  1097. package/dist/utils/stores.js.map +1 -0
  1098. package/dist/utils/strings.d.ts +76 -0
  1099. package/dist/utils/strings.d.ts.map +1 -0
  1100. package/dist/utils/strings.js +549 -0
  1101. package/dist/utils/strings.js.map +1 -0
  1102. package/dist/utils/strings.nicify.test.d.ts +1 -0
  1103. package/dist/utils/strings.nicify.test.js +243 -0
  1104. package/dist/utils/strings.nicify.test.js.map +1 -0
  1105. package/dist/utils/telemetry.d.ts +15 -0
  1106. package/dist/utils/telemetry.d.ts.map +1 -0
  1107. package/dist/utils/telemetry.js +35 -0
  1108. package/dist/utils/telemetry.js.map +1 -0
  1109. package/dist/utils/turnstile-browser.d.ts +32 -0
  1110. package/dist/utils/turnstile-browser.d.ts.map +1 -0
  1111. package/dist/utils/turnstile-browser.js +65 -0
  1112. package/dist/utils/turnstile-browser.js.map +1 -0
  1113. package/dist/utils/turnstile-flow.d.ts +29 -0
  1114. package/dist/utils/turnstile-flow.d.ts.map +1 -0
  1115. package/dist/utils/turnstile-flow.js +225 -0
  1116. package/dist/utils/turnstile-flow.js.map +1 -0
  1117. package/dist/utils/turnstile-flow.test.d.ts +1 -0
  1118. package/dist/utils/turnstile-flow.test.js +75 -0
  1119. package/dist/utils/turnstile-flow.test.js.map +1 -0
  1120. package/dist/utils/turnstile.d.ts +17 -0
  1121. package/dist/utils/turnstile.d.ts.map +1 -0
  1122. package/dist/utils/turnstile.js +31 -0
  1123. package/dist/utils/turnstile.js.map +1 -0
  1124. package/dist/utils/typed-arrays.d.ts +14 -0
  1125. package/dist/utils/typed-arrays.d.ts.map +1 -0
  1126. package/dist/utils/typed-arrays.js +22 -0
  1127. package/dist/utils/typed-arrays.js.map +1 -0
  1128. package/dist/utils/types.d.ts +77 -0
  1129. package/dist/utils/types.d.ts.map +1 -0
  1130. package/dist/utils/types.js +59 -0
  1131. package/dist/utils/types.js.map +1 -0
  1132. package/dist/utils/unicode.d.ts +5 -0
  1133. package/dist/utils/unicode.d.ts.map +1 -0
  1134. package/dist/utils/unicode.js +26 -0
  1135. package/dist/utils/unicode.js.map +1 -0
  1136. package/dist/utils/urls.d.ts +28 -0
  1137. package/dist/utils/urls.d.ts.map +1 -0
  1138. package/dist/utils/urls.js +274 -0
  1139. package/dist/utils/urls.js.map +1 -0
  1140. package/dist/utils/uuids.d.ts +6 -0
  1141. package/dist/utils/uuids.d.ts.map +1 -0
  1142. package/dist/utils/uuids.js +39 -0
  1143. package/dist/utils/uuids.js.map +1 -0
  1144. package/package.json +99 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-sync-mappings.js","names":[],"sources":["../../../src/config/db-sync-mappings.ts"],"sourcesContent":["export const DEFAULT_DB_SYNC_MAPPINGS = {\n \"users\": {\n sourceTables: { \"ProjectUser\": \"ProjectUser\" },\n targetTable: \"users\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"users\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"display_name\" text,\n \"profile_image_url\" text,\n \"primary_email\" text,\n \"primary_email_verified\" boolean NOT NULL DEFAULT false,\n \"signed_up_at\" timestamp without time zone NOT NULL,\n \"client_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb,\n \"client_read_only_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb,\n \"server_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb,\n \"is_anonymous\" boolean NOT NULL DEFAULT false\n );\n REVOKE ALL ON \"users\" FROM PUBLIC;\n GRANT SELECT ON \"users\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.users (\n project_id String,\n branch_id String,\n id UUID,\n display_name Nullable(String),\n profile_image_url Nullable(String),\n primary_email Nullable(String),\n primary_email_verified UInt8,\n signed_up_at DateTime64(3, 'UTC'),\n client_metadata String,\n client_read_only_metadata String,\n server_metadata String,\n is_anonymous UInt8,\n restricted_by_admin UInt8,\n restricted_by_admin_reason Nullable(String),\n restricted_by_admin_private_details Nullable(String),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(signed_up_at)\n ORDER BY (project_id, branch_id, id);\n\n CREATE TABLE IF NOT EXISTS analytics_internal._stack_sync_metadata (\n tenancy_id UUID,\n mapping_name String,\n last_synced_sequence_id Int64,\n updated_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(updated_at)\n ORDER BY (tenancy_id, mapping_name);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"ProjectUser\".\"projectUserId\" AS \"id\",\n \"ProjectUser\".\"displayName\" AS \"display_name\",\n \"ProjectUser\".\"profileImageUrl\" AS \"profile_image_url\",\n (\n SELECT \"ContactChannel\".\"value\"\n FROM \"ContactChannel\"\n WHERE \"ContactChannel\".\"projectUserId\" = \"ProjectUser\".\"projectUserId\"\n AND \"ContactChannel\".\"tenancyId\" = \"ProjectUser\".\"tenancyId\"\n AND \"ContactChannel\".\"type\" = 'EMAIL'\n AND \"ContactChannel\".\"isPrimary\" = 'TRUE'\n LIMIT 1\n ) AS \"primary_email\",\n COALESCE(\n (\n SELECT \"ContactChannel\".\"isVerified\"\n FROM \"ContactChannel\"\n WHERE \"ContactChannel\".\"projectUserId\" = \"ProjectUser\".\"projectUserId\"\n AND \"ContactChannel\".\"tenancyId\" = \"ProjectUser\".\"tenancyId\"\n AND \"ContactChannel\".\"type\" = 'EMAIL'\n AND \"ContactChannel\".\"isPrimary\" = 'TRUE'\n LIMIT 1\n ),\n false\n ) AS \"primary_email_verified\",\n COALESCE(\"ProjectUser\".\"signedUpAt\", \"ProjectUser\".\"createdAt\") AS \"signed_up_at\",\n COALESCE(\"ProjectUser\".\"clientMetadata\", '{}'::jsonb) AS \"client_metadata\",\n COALESCE(\"ProjectUser\".\"clientReadOnlyMetadata\", '{}'::jsonb) AS \"client_read_only_metadata\",\n COALESCE(\"ProjectUser\".\"serverMetadata\", '{}'::jsonb) AS \"server_metadata\",\n \"ProjectUser\".\"isAnonymous\" AS \"is_anonymous\",\n \"ProjectUser\".\"restrictedByAdmin\" AS \"restricted_by_admin\",\n \"ProjectUser\".\"restrictedByAdminReason\" AS \"restricted_by_admin_reason\",\n \"ProjectUser\".\"restrictedByAdminPrivateDetails\" AS \"restricted_by_admin_private_details\",\n \"ProjectUser\".\"sequenceId\" AS \"sync_sequence_id\",\n \"ProjectUser\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"ProjectUser\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"ProjectUser\".\"tenancyId\"\n WHERE \"ProjectUser\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n NULL::text AS \"primary_email\",\n false AS \"primary_email_verified\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"signed_up_at\",\n '{}'::jsonb AS \"client_metadata\",\n '{}'::jsonb AS \"client_read_only_metadata\",\n '{}'::jsonb AS \"server_metadata\",\n false AS \"is_anonymous\",\n false AS \"restricted_by_admin\",\n NULL::text AS \"restricted_by_admin_reason\",\n NULL::text AS \"restricted_by_admin_private_details\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUser'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"ProjectUser\".\"projectUserId\" AS \"id\",\n \"ProjectUser\".\"displayName\" AS \"display_name\",\n \"ProjectUser\".\"profileImageUrl\" AS \"profile_image_url\",\n (\n SELECT \"ContactChannel\".\"value\"\n FROM \"ContactChannel\"\n WHERE \"ContactChannel\".\"projectUserId\" = \"ProjectUser\".\"projectUserId\"\n AND \"ContactChannel\".\"tenancyId\" = \"ProjectUser\".\"tenancyId\"\n AND \"ContactChannel\".\"type\" = 'EMAIL'\n AND \"ContactChannel\".\"isPrimary\" = 'TRUE'\n LIMIT 1\n ) AS \"primary_email\",\n COALESCE(\n (\n SELECT \"ContactChannel\".\"isVerified\"\n FROM \"ContactChannel\"\n WHERE \"ContactChannel\".\"projectUserId\" = \"ProjectUser\".\"projectUserId\"\n AND \"ContactChannel\".\"tenancyId\" = \"ProjectUser\".\"tenancyId\"\n AND \"ContactChannel\".\"type\" = 'EMAIL'\n AND \"ContactChannel\".\"isPrimary\" = 'TRUE'\n LIMIT 1\n ),\n false\n ) AS \"primary_email_verified\",\n COALESCE(\"ProjectUser\".\"signedUpAt\", \"ProjectUser\".\"createdAt\") AS \"signed_up_at\",\n COALESCE(\"ProjectUser\".\"clientMetadata\", '{}'::jsonb) AS \"client_metadata\",\n COALESCE(\"ProjectUser\".\"clientReadOnlyMetadata\", '{}'::jsonb) AS \"client_read_only_metadata\",\n COALESCE(\"ProjectUser\".\"serverMetadata\", '{}'::jsonb) AS \"server_metadata\",\n \"ProjectUser\".\"isAnonymous\" AS \"is_anonymous\",\n \"ProjectUser\".\"sequenceId\" AS \"sequence_id\",\n \"ProjectUser\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"ProjectUser\"\n WHERE \"ProjectUser\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n NULL::text AS \"primary_email\",\n false AS \"primary_email_verified\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"signed_up_at\",\n '{}'::jsonb AS \"client_metadata\",\n '{}'::jsonb AS \"client_read_only_metadata\",\n '{}'::jsonb AS \"server_metadata\",\n false AS \"is_anonymous\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUser'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n // Last parameter = mapping_name (for metadata tracking)\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::text AS \"display_name\",\n $3::text AS \"profile_image_url\",\n $4::text AS \"primary_email\",\n $5::boolean AS \"primary_email_verified\",\n $6::timestamp without time zone AS \"signed_up_at\",\n $7::jsonb AS \"client_metadata\",\n $8::jsonb AS \"client_read_only_metadata\",\n $9::jsonb AS \"server_metadata\",\n $10::boolean AS \"is_anonymous\",\n $11::bigint AS \"sequence_id\",\n $12::boolean AS \"is_deleted\",\n $13::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"users\" u\n USING params p\n WHERE p.\"is_deleted\" = true AND u.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"users\" (\n \"id\",\n \"display_name\",\n \"profile_image_url\",\n \"primary_email\",\n \"primary_email_verified\",\n \"signed_up_at\",\n \"client_metadata\",\n \"client_read_only_metadata\",\n \"server_metadata\",\n \"is_anonymous\"\n )\n SELECT\n p.\"id\",\n p.\"display_name\",\n p.\"profile_image_url\",\n p.\"primary_email\",\n p.\"primary_email_verified\",\n p.\"signed_up_at\",\n p.\"client_metadata\",\n p.\"client_read_only_metadata\",\n p.\"server_metadata\",\n p.\"is_anonymous\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"display_name\" = EXCLUDED.\"display_name\",\n \"profile_image_url\" = EXCLUDED.\"profile_image_url\",\n \"primary_email\" = EXCLUDED.\"primary_email\",\n \"primary_email_verified\" = EXCLUDED.\"primary_email_verified\",\n \"signed_up_at\" = EXCLUDED.\"signed_up_at\",\n \"client_metadata\" = EXCLUDED.\"client_metadata\",\n \"client_read_only_metadata\" = EXCLUDED.\"client_read_only_metadata\",\n \"server_metadata\" = EXCLUDED.\"server_metadata\",\n \"is_anonymous\" = EXCLUDED.\"is_anonymous\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"contact_channels\": {\n sourceTables: { \"ContactChannel\": \"ContactChannel\" },\n targetTable: \"contact_channels\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"contact_channels\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"type\" text NOT NULL,\n \"value\" text NOT NULL,\n \"is_primary\" boolean NOT NULL DEFAULT false,\n \"is_verified\" boolean NOT NULL DEFAULT false,\n \"used_for_auth\" boolean NOT NULL DEFAULT false,\n \"created_at\" timestamp without time zone NOT NULL\n );\n REVOKE ALL ON \"contact_channels\" FROM PUBLIC;\n GRANT SELECT ON \"contact_channels\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.contact_channels (\n project_id String,\n branch_id String,\n id UUID,\n user_id UUID,\n type LowCardinality(String),\n value String,\n is_primary UInt8,\n is_verified UInt8,\n used_for_auth UInt8,\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"ContactChannel\".\"id\" AS \"id\",\n \"ContactChannel\".\"projectUserId\" AS \"user_id\",\n \"ContactChannel\".\"type\"::text AS \"type\",\n \"ContactChannel\".\"value\" AS \"value\",\n CASE WHEN \"ContactChannel\".\"isPrimary\" = 'TRUE' THEN true ELSE false END AS \"is_primary\",\n \"ContactChannel\".\"isVerified\" AS \"is_verified\",\n CASE WHEN \"ContactChannel\".\"usedForAuth\" = 'TRUE' THEN true ELSE false END AS \"used_for_auth\",\n \"ContactChannel\".\"createdAt\" AS \"created_at\",\n \"ContactChannel\".\"sequenceId\" AS \"sync_sequence_id\",\n \"ContactChannel\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"ContactChannel\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"ContactChannel\".\"tenancyId\"\n WHERE \"ContactChannel\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n NULL::text AS \"type\",\n NULL::text AS \"value\",\n false AS \"is_primary\",\n false AS \"is_verified\",\n false AS \"used_for_auth\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ContactChannel'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"ContactChannel\".\"id\" AS \"id\",\n \"ContactChannel\".\"projectUserId\" AS \"user_id\",\n \"ContactChannel\".\"type\"::text AS \"type\",\n \"ContactChannel\".\"value\" AS \"value\",\n CASE WHEN \"ContactChannel\".\"isPrimary\" = 'TRUE' THEN true ELSE false END AS \"is_primary\",\n \"ContactChannel\".\"isVerified\" AS \"is_verified\",\n CASE WHEN \"ContactChannel\".\"usedForAuth\" = 'TRUE' THEN true ELSE false END AS \"used_for_auth\",\n \"ContactChannel\".\"createdAt\" AS \"created_at\",\n \"ContactChannel\".\"sequenceId\" AS \"sequence_id\",\n \"ContactChannel\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"ContactChannel\"\n WHERE \"ContactChannel\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n NULL::text AS \"type\",\n NULL::text AS \"value\",\n false AS \"is_primary\",\n false AS \"is_verified\",\n false AS \"used_for_auth\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ContactChannel'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::uuid AS \"user_id\",\n $3::text AS \"type\",\n $4::text AS \"value\",\n $5::boolean AS \"is_primary\",\n $6::boolean AS \"is_verified\",\n $7::boolean AS \"used_for_auth\",\n $8::timestamp without time zone AS \"created_at\",\n $9::bigint AS \"sequence_id\",\n $10::boolean AS \"is_deleted\",\n $11::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"contact_channels\" c\n USING params p\n WHERE p.\"is_deleted\" = true AND c.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"contact_channels\" (\n \"id\",\n \"user_id\",\n \"type\",\n \"value\",\n \"is_primary\",\n \"is_verified\",\n \"used_for_auth\",\n \"created_at\"\n )\n SELECT\n p.\"id\",\n p.\"user_id\",\n p.\"type\",\n p.\"value\",\n p.\"is_primary\",\n p.\"is_verified\",\n p.\"used_for_auth\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"user_id\" = EXCLUDED.\"user_id\",\n \"type\" = EXCLUDED.\"type\",\n \"value\" = EXCLUDED.\"value\",\n \"is_primary\" = EXCLUDED.\"is_primary\",\n \"is_verified\" = EXCLUDED.\"is_verified\",\n \"used_for_auth\" = EXCLUDED.\"used_for_auth\",\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"teams\": {\n sourceTables: { \"Team\": \"Team\" },\n targetTable: \"teams\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"teams\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"display_name\" text NOT NULL,\n \"profile_image_url\" text,\n \"created_at\" timestamp without time zone NOT NULL,\n \"client_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb,\n \"client_read_only_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb,\n \"server_metadata\" jsonb NOT NULL DEFAULT '{}'::jsonb\n );\n REVOKE ALL ON \"teams\" FROM PUBLIC;\n GRANT SELECT ON \"teams\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.teams (\n project_id String,\n branch_id String,\n id UUID,\n display_name String,\n profile_image_url Nullable(String),\n created_at DateTime64(3, 'UTC'),\n client_metadata String,\n client_read_only_metadata String,\n server_metadata String,\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"Team\".\"teamId\" AS \"id\",\n \"Team\".\"displayName\" AS \"display_name\",\n \"Team\".\"profileImageUrl\" AS \"profile_image_url\",\n \"Team\".\"createdAt\" AS \"created_at\",\n COALESCE(\"Team\".\"clientMetadata\", '{}'::jsonb) AS \"client_metadata\",\n COALESCE(\"Team\".\"clientReadOnlyMetadata\", '{}'::jsonb) AS \"client_read_only_metadata\",\n COALESCE(\"Team\".\"serverMetadata\", '{}'::jsonb) AS \"server_metadata\",\n \"Team\".\"sequenceId\" AS \"sync_sequence_id\",\n \"Team\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"Team\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"Team\".\"tenancyId\"\n WHERE \"Team\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n '{}'::jsonb AS \"client_metadata\",\n '{}'::jsonb AS \"client_read_only_metadata\",\n '{}'::jsonb AS \"server_metadata\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'Team'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"Team\".\"teamId\" AS \"id\",\n \"Team\".\"displayName\" AS \"display_name\",\n \"Team\".\"profileImageUrl\" AS \"profile_image_url\",\n \"Team\".\"createdAt\" AS \"created_at\",\n COALESCE(\"Team\".\"clientMetadata\", '{}'::jsonb) AS \"client_metadata\",\n COALESCE(\"Team\".\"clientReadOnlyMetadata\", '{}'::jsonb) AS \"client_read_only_metadata\",\n COALESCE(\"Team\".\"serverMetadata\", '{}'::jsonb) AS \"server_metadata\",\n \"Team\".\"sequenceId\" AS \"sequence_id\",\n \"Team\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"Team\"\n WHERE \"Team\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n '{}'::jsonb AS \"client_metadata\",\n '{}'::jsonb AS \"client_read_only_metadata\",\n '{}'::jsonb AS \"server_metadata\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'Team'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::text AS \"display_name\",\n $3::text AS \"profile_image_url\",\n $4::timestamp without time zone AS \"created_at\",\n $5::jsonb AS \"client_metadata\",\n $6::jsonb AS \"client_read_only_metadata\",\n $7::jsonb AS \"server_metadata\",\n $8::bigint AS \"sequence_id\",\n $9::boolean AS \"is_deleted\",\n $10::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"teams\" t\n USING params p\n WHERE p.\"is_deleted\" = true AND t.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"teams\" (\n \"id\",\n \"display_name\",\n \"profile_image_url\",\n \"created_at\",\n \"client_metadata\",\n \"client_read_only_metadata\",\n \"server_metadata\"\n )\n SELECT\n p.\"id\",\n p.\"display_name\",\n p.\"profile_image_url\",\n p.\"created_at\",\n p.\"client_metadata\",\n p.\"client_read_only_metadata\",\n p.\"server_metadata\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"display_name\" = EXCLUDED.\"display_name\",\n \"profile_image_url\" = EXCLUDED.\"profile_image_url\",\n \"created_at\" = EXCLUDED.\"created_at\",\n \"client_metadata\" = EXCLUDED.\"client_metadata\",\n \"client_read_only_metadata\" = EXCLUDED.\"client_read_only_metadata\",\n \"server_metadata\" = EXCLUDED.\"server_metadata\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"team_member_profiles\": {\n sourceTables: { \"TeamMember\": \"TeamMember\" },\n targetTable: \"team_member_profiles\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"team_member_profiles\" (\n \"team_id\" uuid NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"display_name\" text,\n \"profile_image_url\" text,\n \"created_at\" timestamp without time zone NOT NULL,\n PRIMARY KEY (\"team_id\", \"user_id\")\n );\n REVOKE ALL ON \"team_member_profiles\" FROM PUBLIC;\n GRANT SELECT ON \"team_member_profiles\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.team_member_profiles (\n project_id String,\n branch_id String,\n team_id UUID,\n user_id UUID,\n display_name Nullable(String),\n profile_image_url Nullable(String),\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, team_id, user_id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"TeamMember\".\"teamId\" AS \"team_id\",\n \"TeamMember\".\"projectUserId\" AS \"user_id\",\n \"TeamMember\".\"displayName\" AS \"display_name\",\n \"TeamMember\".\"profileImageUrl\" AS \"profile_image_url\",\n \"TeamMember\".\"createdAt\" AS \"created_at\",\n \"TeamMember\".\"sequenceId\" AS \"sync_sequence_id\",\n \"TeamMember\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"TeamMember\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"TeamMember\".\"tenancyId\"\n WHERE \"TeamMember\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"team_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'TeamMember'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"TeamMember\".\"teamId\" AS \"team_id\",\n \"TeamMember\".\"projectUserId\" AS \"user_id\",\n \"TeamMember\".\"displayName\" AS \"display_name\",\n \"TeamMember\".\"profileImageUrl\" AS \"profile_image_url\",\n \"TeamMember\".\"createdAt\" AS \"created_at\",\n \"TeamMember\".\"sequenceId\" AS \"sequence_id\",\n \"TeamMember\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"TeamMember\"\n WHERE \"TeamMember\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"team_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n NULL::text AS \"display_name\",\n NULL::text AS \"profile_image_url\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'TeamMember'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"team_id\",\n $2::uuid AS \"user_id\",\n $3::text AS \"display_name\",\n $4::text AS \"profile_image_url\",\n $5::timestamp without time zone AS \"created_at\",\n $6::bigint AS \"sequence_id\",\n $7::boolean AS \"is_deleted\",\n $8::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"team_member_profiles\" tm\n USING params p\n WHERE p.\"is_deleted\" = true AND tm.\"team_id\" = p.\"team_id\" AND tm.\"user_id\" = p.\"user_id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"team_member_profiles\" (\n \"team_id\",\n \"user_id\",\n \"display_name\",\n \"profile_image_url\",\n \"created_at\"\n )\n SELECT\n p.\"team_id\",\n p.\"user_id\",\n p.\"display_name\",\n p.\"profile_image_url\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"team_id\", \"user_id\") DO UPDATE SET\n \"display_name\" = EXCLUDED.\"display_name\",\n \"profile_image_url\" = EXCLUDED.\"profile_image_url\",\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"team_permissions\": {\n sourceTables: { \"TeamMemberDirectPermission\": \"TeamMemberDirectPermission\" },\n targetTable: \"team_permissions\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"team_permissions\" (\n \"team_id\" uuid NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"permission_id\" text NOT NULL,\n \"created_at\" timestamp without time zone NOT NULL,\n PRIMARY KEY (\"team_id\", \"user_id\", \"permission_id\")\n );\n REVOKE ALL ON \"team_permissions\" FROM PUBLIC;\n GRANT SELECT ON \"team_permissions\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.team_permissions (\n project_id String,\n branch_id String,\n team_id UUID,\n user_id UUID,\n id String,\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, team_id, user_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"TeamMemberDirectPermission\".\"teamId\" AS \"team_id\",\n \"TeamMemberDirectPermission\".\"projectUserId\" AS \"user_id\",\n \"TeamMemberDirectPermission\".\"permissionId\" AS \"id\",\n \"TeamMemberDirectPermission\".\"createdAt\" AS \"created_at\",\n \"TeamMemberDirectPermission\".\"sequenceId\" AS \"sync_sequence_id\",\n \"TeamMemberDirectPermission\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"TeamMemberDirectPermission\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"TeamMemberDirectPermission\".\"tenancyId\"\n WHERE \"TeamMemberDirectPermission\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"team_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"primaryKey\"->>'permissionId' AS \"id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'TeamMemberDirectPermission'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"TeamMemberDirectPermission\".\"teamId\" AS \"team_id\",\n \"TeamMemberDirectPermission\".\"projectUserId\" AS \"user_id\",\n \"TeamMemberDirectPermission\".\"permissionId\" AS \"permission_id\",\n \"TeamMemberDirectPermission\".\"createdAt\" AS \"created_at\",\n \"TeamMemberDirectPermission\".\"sequenceId\" AS \"sequence_id\",\n \"TeamMemberDirectPermission\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"TeamMemberDirectPermission\"\n WHERE \"TeamMemberDirectPermission\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'teamId')::uuid AS \"team_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"primaryKey\"->>'permissionId' AS \"id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'TeamMemberDirectPermission'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"team_id\",\n $2::uuid AS \"user_id\",\n $3::text AS \"permission_id\",\n $4::timestamp without time zone AS \"created_at\",\n $5::bigint AS \"sequence_id\",\n $6::boolean AS \"is_deleted\",\n $7::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"team_permissions\" tp\n USING params p\n WHERE p.\"is_deleted\" = true AND tp.\"team_id\" = p.\"team_id\" AND tp.\"user_id\" = p.\"user_id\" AND tp.\"permission_id\" = p.\"permission_id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"team_permissions\" (\n \"team_id\",\n \"user_id\",\n \"permission_id\",\n \"created_at\"\n )\n SELECT\n p.\"team_id\",\n p.\"user_id\",\n p.\"permission_id\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"team_id\", \"user_id\", \"permission_id\") DO UPDATE SET\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"team_invitations\": {\n sourceTables: { \"VerificationCode\": \"VerificationCode\" },\n targetTable: \"team_invitations\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"team_invitations\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"team_id\" uuid NOT NULL,\n \"team_display_name\" text NOT NULL,\n \"recipient_email\" text NOT NULL,\n \"expires_at_millis\" bigint NOT NULL,\n \"created_at\" timestamp without time zone NOT NULL\n );\n REVOKE ALL ON \"team_invitations\" FROM PUBLIC;\n GRANT SELECT ON \"team_invitations\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.team_invitations (\n project_id String,\n branch_id String,\n id UUID,\n team_id UUID,\n team_display_name String,\n recipient_email String,\n expires_at_millis Int64,\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"VerificationCode\".\"id\"::uuid AS \"id\",\n (\"VerificationCode\".\"data\"->>'team_id')::uuid AS \"team_id\",\n \"Team\".\"displayName\" AS \"team_display_name\",\n \"VerificationCode\".\"method\"->>'email' AS \"recipient_email\",\n FLOOR(EXTRACT(EPOCH FROM \"VerificationCode\".\"expiresAt\") * 1000)::bigint AS \"expires_at_millis\",\n \"VerificationCode\".\"createdAt\" AS \"created_at\",\n \"VerificationCode\".\"sequenceId\" AS \"sync_sequence_id\",\n \"Tenancy\".\"id\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"VerificationCode\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"projectId\" = \"VerificationCode\".\"projectId\"\n AND \"Tenancy\".\"branchId\" = \"VerificationCode\".\"branchId\"\n LEFT JOIN \"Team\" ON \"Team\".\"teamId\" = (\"VerificationCode\".\"data\"->>'team_id')::uuid\n AND \"Team\".\"tenancyId\" = \"Tenancy\".\"id\"\n WHERE \"Tenancy\".\"id\" = $1::uuid\n AND \"VerificationCode\".\"type\" = 'TEAM_INVITATION'\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n '00000000-0000-0000-0000-000000000000'::uuid AS \"team_id\",\n ''::text AS \"team_display_name\",\n ''::text AS \"recipient_email\",\n 0::bigint AS \"expires_at_millis\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'VerificationCode_TEAM_INVITATION'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"VerificationCode\".\"id\"::uuid AS \"id\",\n (\"VerificationCode\".\"data\"->>'team_id')::uuid AS \"team_id\",\n \"Team\".\"displayName\" AS \"team_display_name\",\n \"VerificationCode\".\"method\"->>'email' AS \"recipient_email\",\n FLOOR(EXTRACT(EPOCH FROM \"VerificationCode\".\"expiresAt\") * 1000)::bigint AS \"expires_at_millis\",\n \"VerificationCode\".\"createdAt\" AS \"created_at\",\n \"VerificationCode\".\"sequenceId\" AS \"sequence_id\",\n \"Tenancy\".\"id\" AS \"tenancyId\",\n false AS \"is_deleted\"\n FROM \"VerificationCode\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"projectId\" = \"VerificationCode\".\"projectId\"\n AND \"Tenancy\".\"branchId\" = \"VerificationCode\".\"branchId\"\n LEFT JOIN \"Team\" ON \"Team\".\"teamId\" = (\"VerificationCode\".\"data\"->>'team_id')::uuid\n AND \"Team\".\"tenancyId\" = \"Tenancy\".\"id\"\n WHERE \"Tenancy\".\"id\" = $1::uuid\n AND \"VerificationCode\".\"type\" = 'TEAM_INVITATION'\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n '00000000-0000-0000-0000-000000000000'::uuid AS \"team_id\",\n ''::text AS \"team_display_name\",\n ''::text AS \"recipient_email\",\n 0::bigint AS \"expires_at_millis\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'VerificationCode_TEAM_INVITATION'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::uuid AS \"team_id\",\n $3::text AS \"team_display_name\",\n $4::text AS \"recipient_email\",\n $5::bigint AS \"expires_at_millis\",\n $6::timestamp without time zone AS \"created_at\",\n $7::bigint AS \"sequence_id\",\n $8::boolean AS \"is_deleted\",\n $9::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"team_invitations\" ti\n USING params p\n WHERE p.\"is_deleted\" = true AND ti.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"team_invitations\" (\n \"id\",\n \"team_id\",\n \"team_display_name\",\n \"recipient_email\",\n \"expires_at_millis\",\n \"created_at\"\n )\n SELECT\n p.\"id\",\n p.\"team_id\",\n p.\"team_display_name\",\n p.\"recipient_email\",\n p.\"expires_at_millis\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"team_id\" = EXCLUDED.\"team_id\",\n \"team_display_name\" = EXCLUDED.\"team_display_name\",\n \"recipient_email\" = EXCLUDED.\"recipient_email\",\n \"expires_at_millis\" = EXCLUDED.\"expires_at_millis\",\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"email_outboxes\": {\n sourceTables: { \"EmailOutbox\": \"EmailOutbox\" },\n targetTable: \"email_outboxes\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"email_outboxes\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"status\" text NOT NULL,\n \"simple_status\" text NOT NULL,\n \"created_with\" text NOT NULL,\n \"email_draft_id\" text,\n \"email_programmatic_call_template_id\" text,\n \"theme_id\" text,\n \"is_high_priority\" boolean NOT NULL DEFAULT false,\n \"rendered_is_transactional\" boolean,\n \"rendered_subject\" text,\n \"rendered_notification_category_id\" text,\n \"started_rendering_at\" timestamp without time zone,\n \"finished_rendering_at\" timestamp without time zone,\n \"render_error\" text,\n \"scheduled_at\" timestamp without time zone NOT NULL,\n \"created_at\" timestamp without time zone NOT NULL,\n \"started_sending_at\" timestamp without time zone,\n \"finished_sending_at\" timestamp without time zone,\n \"server_error\" text,\n \"sent_at\" timestamp without time zone,\n \"delivered_at\" timestamp without time zone,\n \"opened_at\" timestamp without time zone,\n \"clicked_at\" timestamp without time zone,\n \"unsubscribed_at\" timestamp without time zone,\n \"marked_as_spam_at\" timestamp without time zone,\n \"bounced_at\" timestamp without time zone,\n \"delivery_delayed_at\" timestamp without time zone,\n \"can_have_delivery_info\" boolean,\n \"skipped_reason\" text,\n \"skipped_details\" jsonb,\n \"send_retries\" integer NOT NULL DEFAULT 0,\n \"is_paused\" boolean NOT NULL DEFAULT false\n );\n REVOKE ALL ON \"email_outboxes\" FROM PUBLIC;\n GRANT SELECT ON \"email_outboxes\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.email_outboxes (\n project_id String,\n branch_id String,\n id UUID,\n status LowCardinality(String),\n simple_status LowCardinality(String),\n created_with LowCardinality(String),\n email_draft_id Nullable(String),\n email_programmatic_call_template_id Nullable(String),\n theme_id Nullable(String),\n is_high_priority UInt8,\n is_transactional Nullable(UInt8),\n subject Nullable(String),\n notification_category_id Nullable(String),\n started_rendering_at Nullable(DateTime64(3, 'UTC')),\n rendered_at Nullable(DateTime64(3, 'UTC')),\n render_error Nullable(String),\n scheduled_at DateTime64(3, 'UTC'),\n created_at DateTime64(3, 'UTC'),\n updated_at DateTime64(3, 'UTC'),\n started_sending_at Nullable(DateTime64(3, 'UTC')),\n server_error Nullable(String),\n delivered_at Nullable(DateTime64(3, 'UTC')),\n opened_at Nullable(DateTime64(3, 'UTC')),\n clicked_at Nullable(DateTime64(3, 'UTC')),\n unsubscribed_at Nullable(DateTime64(3, 'UTC')),\n marked_as_spam_at Nullable(DateTime64(3, 'UTC')),\n bounced_at Nullable(DateTime64(3, 'UTC')),\n delivery_delayed_at Nullable(DateTime64(3, 'UTC')),\n can_have_delivery_info Nullable(UInt8),\n skipped_reason LowCardinality(Nullable(String)),\n skipped_details Nullable(String),\n send_retries Int32,\n is_paused UInt8,\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"EmailOutbox\".\"id\" AS \"id\",\n LOWER(REPLACE(\"EmailOutbox\".\"status\"::text, '_', '-')) AS \"status\",\n LOWER(REPLACE(\"EmailOutbox\".\"simpleStatus\"::text, '_', '-')) AS \"simple_status\",\n CASE WHEN \"EmailOutbox\".\"createdWith\"::text = 'DRAFT' THEN 'draft' ELSE 'programmatic-call' END AS \"created_with\",\n \"EmailOutbox\".\"emailDraftId\" AS \"email_draft_id\",\n \"EmailOutbox\".\"emailProgrammaticCallTemplateId\" AS \"email_programmatic_call_template_id\",\n \"EmailOutbox\".\"themeId\" AS \"theme_id\",\n \"EmailOutbox\".\"isHighPriority\" AS \"is_high_priority\",\n \"EmailOutbox\".\"renderedIsTransactional\" AS \"is_transactional\",\n \"EmailOutbox\".\"renderedSubject\" AS \"subject\",\n \"EmailOutbox\".\"renderedNotificationCategoryId\" AS \"notification_category_id\",\n \"EmailOutbox\".\"startedRenderingAt\" AS \"started_rendering_at\",\n \"EmailOutbox\".\"finishedRenderingAt\" AS \"rendered_at\",\n \"EmailOutbox\".\"renderErrorExternalMessage\" AS \"render_error\",\n \"EmailOutbox\".\"scheduledAt\" AS \"scheduled_at\",\n \"EmailOutbox\".\"createdAt\" AS \"created_at\",\n \"EmailOutbox\".\"updatedAt\" AS \"updated_at\",\n \"EmailOutbox\".\"startedSendingAt\" AS \"started_sending_at\",\n \"EmailOutbox\".\"sendServerErrorExternalMessage\" AS \"server_error\",\n \"EmailOutbox\".\"deliveredAt\" AS \"delivered_at\",\n \"EmailOutbox\".\"openedAt\" AS \"opened_at\",\n \"EmailOutbox\".\"clickedAt\" AS \"clicked_at\",\n \"EmailOutbox\".\"unsubscribedAt\" AS \"unsubscribed_at\",\n \"EmailOutbox\".\"markedAsSpamAt\" AS \"marked_as_spam_at\",\n \"EmailOutbox\".\"bouncedAt\" AS \"bounced_at\",\n \"EmailOutbox\".\"deliveryDelayedAt\" AS \"delivery_delayed_at\",\n \"EmailOutbox\".\"canHaveDeliveryInfo\" AS \"can_have_delivery_info\",\n LOWER(REPLACE(\"EmailOutbox\".\"skippedReason\"::text, '_', '-')) AS \"skipped_reason\",\n \"EmailOutbox\".\"skippedDetails\" AS \"skipped_details\",\n \"EmailOutbox\".\"sendRetries\" AS \"send_retries\",\n \"EmailOutbox\".\"isPaused\" AS \"is_paused\",\n \"EmailOutbox\".\"sequenceId\" AS \"sync_sequence_id\",\n \"EmailOutbox\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"EmailOutbox\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"EmailOutbox\".\"tenancyId\"\n WHERE \"EmailOutbox\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n ''::text AS \"status\",\n ''::text AS \"simple_status\",\n ''::text AS \"created_with\",\n NULL::text AS \"email_draft_id\",\n NULL::text AS \"email_programmatic_call_template_id\",\n NULL::text AS \"theme_id\",\n false AS \"is_high_priority\",\n NULL::boolean AS \"is_transactional\",\n NULL::text AS \"subject\",\n NULL::text AS \"notification_category_id\",\n NULL::timestamp without time zone AS \"started_rendering_at\",\n NULL::timestamp without time zone AS \"rendered_at\",\n NULL::text AS \"render_error\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"scheduled_at\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"updated_at\",\n NULL::timestamp without time zone AS \"started_sending_at\",\n NULL::text AS \"server_error\",\n NULL::timestamp without time zone AS \"delivered_at\",\n NULL::timestamp without time zone AS \"opened_at\",\n NULL::timestamp without time zone AS \"clicked_at\",\n NULL::timestamp without time zone AS \"unsubscribed_at\",\n NULL::timestamp without time zone AS \"marked_as_spam_at\",\n NULL::timestamp without time zone AS \"bounced_at\",\n NULL::timestamp without time zone AS \"delivery_delayed_at\",\n NULL::boolean AS \"can_have_delivery_info\",\n NULL::text AS \"skipped_reason\",\n NULL::jsonb AS \"skipped_details\",\n 0 AS \"send_retries\",\n false AS \"is_paused\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'EmailOutbox'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"EmailOutbox\".\"id\" AS \"id\",\n \"EmailOutbox\".\"status\"::text AS \"status\",\n \"EmailOutbox\".\"simpleStatus\"::text AS \"simple_status\",\n \"EmailOutbox\".\"createdWith\"::text AS \"created_with\",\n \"EmailOutbox\".\"emailDraftId\" AS \"email_draft_id\",\n \"EmailOutbox\".\"emailProgrammaticCallTemplateId\" AS \"email_programmatic_call_template_id\",\n \"EmailOutbox\".\"themeId\" AS \"theme_id\",\n \"EmailOutbox\".\"isHighPriority\" AS \"is_high_priority\",\n \"EmailOutbox\".\"renderedIsTransactional\" AS \"rendered_is_transactional\",\n \"EmailOutbox\".\"renderedSubject\" AS \"rendered_subject\",\n \"EmailOutbox\".\"renderedNotificationCategoryId\" AS \"rendered_notification_category_id\",\n \"EmailOutbox\".\"startedRenderingAt\" AS \"started_rendering_at\",\n \"EmailOutbox\".\"finishedRenderingAt\" AS \"finished_rendering_at\",\n \"EmailOutbox\".\"renderErrorExternalMessage\" AS \"render_error\",\n \"EmailOutbox\".\"scheduledAt\" AS \"scheduled_at\",\n \"EmailOutbox\".\"createdAt\" AS \"created_at\",\n \"EmailOutbox\".\"startedSendingAt\" AS \"started_sending_at\",\n \"EmailOutbox\".\"finishedSendingAt\" AS \"finished_sending_at\",\n \"EmailOutbox\".\"sendServerErrorExternalMessage\" AS \"server_error\",\n \"EmailOutbox\".\"sentAt\" AS \"sent_at\",\n \"EmailOutbox\".\"deliveredAt\" AS \"delivered_at\",\n \"EmailOutbox\".\"openedAt\" AS \"opened_at\",\n \"EmailOutbox\".\"clickedAt\" AS \"clicked_at\",\n \"EmailOutbox\".\"unsubscribedAt\" AS \"unsubscribed_at\",\n \"EmailOutbox\".\"markedAsSpamAt\" AS \"marked_as_spam_at\",\n \"EmailOutbox\".\"bouncedAt\" AS \"bounced_at\",\n \"EmailOutbox\".\"deliveryDelayedAt\" AS \"delivery_delayed_at\",\n \"EmailOutbox\".\"canHaveDeliveryInfo\" AS \"can_have_delivery_info\",\n \"EmailOutbox\".\"skippedReason\"::text AS \"skipped_reason\",\n \"EmailOutbox\".\"skippedDetails\" AS \"skipped_details\",\n \"EmailOutbox\".\"sendRetries\" AS \"send_retries\",\n \"EmailOutbox\".\"isPaused\" AS \"is_paused\",\n \"EmailOutbox\".\"sequenceId\" AS \"sequence_id\",\n \"EmailOutbox\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"EmailOutbox\"\n WHERE \"EmailOutbox\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n ''::text AS \"status\",\n ''::text AS \"simple_status\",\n ''::text AS \"created_with\",\n NULL::text AS \"email_draft_id\",\n NULL::text AS \"email_programmatic_call_template_id\",\n NULL::text AS \"theme_id\",\n false AS \"is_high_priority\",\n NULL::boolean AS \"rendered_is_transactional\",\n NULL::text AS \"rendered_subject\",\n NULL::text AS \"rendered_notification_category_id\",\n NULL::timestamp without time zone AS \"started_rendering_at\",\n NULL::timestamp without time zone AS \"finished_rendering_at\",\n NULL::text AS \"render_error\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"scheduled_at\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n NULL::timestamp without time zone AS \"started_sending_at\",\n NULL::timestamp without time zone AS \"finished_sending_at\",\n NULL::text AS \"server_error\",\n NULL::timestamp without time zone AS \"sent_at\",\n NULL::timestamp without time zone AS \"delivered_at\",\n NULL::timestamp without time zone AS \"opened_at\",\n NULL::timestamp without time zone AS \"clicked_at\",\n NULL::timestamp without time zone AS \"unsubscribed_at\",\n NULL::timestamp without time zone AS \"marked_as_spam_at\",\n NULL::timestamp without time zone AS \"bounced_at\",\n NULL::timestamp without time zone AS \"delivery_delayed_at\",\n NULL::boolean AS \"can_have_delivery_info\",\n NULL::text AS \"skipped_reason\",\n NULL::jsonb AS \"skipped_details\",\n 0 AS \"send_retries\",\n false AS \"is_paused\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'EmailOutbox'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::text AS \"status\",\n $3::text AS \"simple_status\",\n $4::text AS \"created_with\",\n $5::text AS \"email_draft_id\",\n $6::text AS \"email_programmatic_call_template_id\",\n $7::text AS \"theme_id\",\n $8::boolean AS \"is_high_priority\",\n $9::boolean AS \"rendered_is_transactional\",\n $10::text AS \"rendered_subject\",\n $11::text AS \"rendered_notification_category_id\",\n $12::timestamp without time zone AS \"started_rendering_at\",\n $13::timestamp without time zone AS \"finished_rendering_at\",\n $14::text AS \"render_error\",\n $15::timestamp without time zone AS \"scheduled_at\",\n $16::timestamp without time zone AS \"created_at\",\n $17::timestamp without time zone AS \"started_sending_at\",\n $18::timestamp without time zone AS \"finished_sending_at\",\n $19::text AS \"server_error\",\n $20::timestamp without time zone AS \"sent_at\",\n $21::timestamp without time zone AS \"delivered_at\",\n $22::timestamp without time zone AS \"opened_at\",\n $23::timestamp without time zone AS \"clicked_at\",\n $24::timestamp without time zone AS \"unsubscribed_at\",\n $25::timestamp without time zone AS \"marked_as_spam_at\",\n $26::timestamp without time zone AS \"bounced_at\",\n $27::timestamp without time zone AS \"delivery_delayed_at\",\n $28::boolean AS \"can_have_delivery_info\",\n $29::text AS \"skipped_reason\",\n $30::jsonb AS \"skipped_details\",\n $31::integer AS \"send_retries\",\n $32::boolean AS \"is_paused\",\n $33::bigint AS \"sequence_id\",\n $34::boolean AS \"is_deleted\",\n $35::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"email_outboxes\" eo\n USING params p\n WHERE p.\"is_deleted\" = true AND eo.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"email_outboxes\" (\n \"id\",\n \"status\",\n \"simple_status\",\n \"created_with\",\n \"email_draft_id\",\n \"email_programmatic_call_template_id\",\n \"theme_id\",\n \"is_high_priority\",\n \"rendered_is_transactional\",\n \"rendered_subject\",\n \"rendered_notification_category_id\",\n \"started_rendering_at\",\n \"finished_rendering_at\",\n \"render_error\",\n \"scheduled_at\",\n \"created_at\",\n \"started_sending_at\",\n \"finished_sending_at\",\n \"server_error\",\n \"sent_at\",\n \"delivered_at\",\n \"opened_at\",\n \"clicked_at\",\n \"unsubscribed_at\",\n \"marked_as_spam_at\",\n \"bounced_at\",\n \"delivery_delayed_at\",\n \"can_have_delivery_info\",\n \"skipped_reason\",\n \"skipped_details\",\n \"send_retries\",\n \"is_paused\"\n )\n SELECT\n p.\"id\",\n p.\"status\",\n p.\"simple_status\",\n p.\"created_with\",\n p.\"email_draft_id\",\n p.\"email_programmatic_call_template_id\",\n p.\"theme_id\",\n p.\"is_high_priority\",\n p.\"rendered_is_transactional\",\n p.\"rendered_subject\",\n p.\"rendered_notification_category_id\",\n p.\"started_rendering_at\",\n p.\"finished_rendering_at\",\n p.\"render_error\",\n p.\"scheduled_at\",\n p.\"created_at\",\n p.\"started_sending_at\",\n p.\"finished_sending_at\",\n p.\"server_error\",\n p.\"sent_at\",\n p.\"delivered_at\",\n p.\"opened_at\",\n p.\"clicked_at\",\n p.\"unsubscribed_at\",\n p.\"marked_as_spam_at\",\n p.\"bounced_at\",\n p.\"delivery_delayed_at\",\n p.\"can_have_delivery_info\",\n p.\"skipped_reason\",\n p.\"skipped_details\",\n p.\"send_retries\",\n p.\"is_paused\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"status\" = EXCLUDED.\"status\",\n \"simple_status\" = EXCLUDED.\"simple_status\",\n \"created_with\" = EXCLUDED.\"created_with\",\n \"email_draft_id\" = EXCLUDED.\"email_draft_id\",\n \"email_programmatic_call_template_id\" = EXCLUDED.\"email_programmatic_call_template_id\",\n \"theme_id\" = EXCLUDED.\"theme_id\",\n \"is_high_priority\" = EXCLUDED.\"is_high_priority\",\n \"rendered_is_transactional\" = EXCLUDED.\"rendered_is_transactional\",\n \"rendered_subject\" = EXCLUDED.\"rendered_subject\",\n \"rendered_notification_category_id\" = EXCLUDED.\"rendered_notification_category_id\",\n \"started_rendering_at\" = EXCLUDED.\"started_rendering_at\",\n \"finished_rendering_at\" = EXCLUDED.\"finished_rendering_at\",\n \"render_error\" = EXCLUDED.\"render_error\",\n \"scheduled_at\" = EXCLUDED.\"scheduled_at\",\n \"created_at\" = EXCLUDED.\"created_at\",\n \"started_sending_at\" = EXCLUDED.\"started_sending_at\",\n \"finished_sending_at\" = EXCLUDED.\"finished_sending_at\",\n \"server_error\" = EXCLUDED.\"server_error\",\n \"sent_at\" = EXCLUDED.\"sent_at\",\n \"delivered_at\" = EXCLUDED.\"delivered_at\",\n \"opened_at\" = EXCLUDED.\"opened_at\",\n \"clicked_at\" = EXCLUDED.\"clicked_at\",\n \"unsubscribed_at\" = EXCLUDED.\"unsubscribed_at\",\n \"marked_as_spam_at\" = EXCLUDED.\"marked_as_spam_at\",\n \"bounced_at\" = EXCLUDED.\"bounced_at\",\n \"delivery_delayed_at\" = EXCLUDED.\"delivery_delayed_at\",\n \"can_have_delivery_info\" = EXCLUDED.\"can_have_delivery_info\",\n \"skipped_reason\" = EXCLUDED.\"skipped_reason\",\n \"skipped_details\" = EXCLUDED.\"skipped_details\",\n \"send_retries\" = EXCLUDED.\"send_retries\",\n \"is_paused\" = EXCLUDED.\"is_paused\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"project_permissions\": {\n sourceTables: { \"ProjectUserDirectPermission\": \"ProjectUserDirectPermission\" },\n targetTable: \"project_permissions\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"project_permissions\" (\n \"user_id\" uuid NOT NULL,\n \"permission_id\" text NOT NULL,\n \"created_at\" timestamp without time zone NOT NULL,\n PRIMARY KEY (\"user_id\", \"permission_id\")\n );\n REVOKE ALL ON \"project_permissions\" FROM PUBLIC;\n GRANT SELECT ON \"project_permissions\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.project_permissions (\n project_id String,\n branch_id String,\n user_id UUID,\n id String,\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, user_id, id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"ProjectUserDirectPermission\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserDirectPermission\".\"permissionId\" AS \"id\",\n \"ProjectUserDirectPermission\".\"createdAt\" AS \"created_at\",\n \"ProjectUserDirectPermission\".\"sequenceId\" AS \"sync_sequence_id\",\n \"ProjectUserDirectPermission\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"ProjectUserDirectPermission\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"ProjectUserDirectPermission\".\"tenancyId\"\n WHERE \"ProjectUserDirectPermission\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"primaryKey\"->>'permissionId' AS \"id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserDirectPermission'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"ProjectUserDirectPermission\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserDirectPermission\".\"permissionId\" AS \"permission_id\",\n \"ProjectUserDirectPermission\".\"createdAt\" AS \"created_at\",\n \"ProjectUserDirectPermission\".\"sequenceId\" AS \"sequence_id\",\n \"ProjectUserDirectPermission\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"ProjectUserDirectPermission\"\n WHERE \"ProjectUserDirectPermission\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"primaryKey\"->>'permissionId' AS \"id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserDirectPermission'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"user_id\",\n $2::text AS \"permission_id\",\n $3::timestamp without time zone AS \"created_at\",\n $4::bigint AS \"sequence_id\",\n $5::boolean AS \"is_deleted\",\n $6::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"project_permissions\" pp\n USING params p\n WHERE p.\"is_deleted\" = true AND pp.\"user_id\" = p.\"user_id\" AND pp.\"permission_id\" = p.\"permission_id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"project_permissions\" (\n \"user_id\",\n \"permission_id\",\n \"created_at\"\n )\n SELECT\n p.\"user_id\",\n p.\"permission_id\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"user_id\", \"permission_id\") DO UPDATE SET\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"notification_preferences\": {\n sourceTables: { \"UserNotificationPreference\": \"UserNotificationPreference\" },\n targetTable: \"notification_preferences\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"notification_preferences\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"notification_category_id\" text NOT NULL,\n \"enabled\" boolean NOT NULL DEFAULT true\n );\n REVOKE ALL ON \"notification_preferences\" FROM PUBLIC;\n GRANT SELECT ON \"notification_preferences\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.notification_preferences (\n project_id String,\n branch_id String,\n user_id UUID,\n notification_category_id String,\n enabled UInt8,\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n ORDER BY (project_id, branch_id, user_id, notification_category_id);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"UserNotificationPreference\".\"projectUserId\" AS \"user_id\",\n \"UserNotificationPreference\".\"notificationCategoryId\" AS \"notification_category_id\",\n \"UserNotificationPreference\".\"enabled\" AS \"enabled\",\n \"UserNotificationPreference\".\"sequenceId\" AS \"sync_sequence_id\",\n \"UserNotificationPreference\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"UserNotificationPreference\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"UserNotificationPreference\".\"tenancyId\"\n WHERE \"UserNotificationPreference\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n (\"DeletedRow\".\"data\"->>'notificationCategoryId')::uuid AS \"notification_category_id\",\n (\"DeletedRow\".\"data\"->>'enabled')::boolean AS \"enabled\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'UserNotificationPreference'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"UserNotificationPreference\".\"id\" AS \"id\",\n \"UserNotificationPreference\".\"projectUserId\" AS \"user_id\",\n \"UserNotificationPreference\".\"notificationCategoryId\" AS \"notification_category_id\",\n \"UserNotificationPreference\".\"enabled\" AS \"enabled\",\n \"UserNotificationPreference\".\"sequenceId\" AS \"sequence_id\",\n \"UserNotificationPreference\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"UserNotificationPreference\"\n WHERE \"UserNotificationPreference\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n (\"DeletedRow\".\"data\"->>'notificationCategoryId')::uuid AS \"notification_category_id\",\n (\"DeletedRow\".\"data\"->>'enabled')::boolean AS \"enabled\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'UserNotificationPreference'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::uuid AS \"user_id\",\n $3::text AS \"notification_category_id\",\n $4::boolean AS \"enabled\",\n $5::bigint AS \"sequence_id\",\n $6::boolean AS \"is_deleted\",\n $7::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"notification_preferences\" np\n USING params p\n WHERE p.\"is_deleted\" = true AND np.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"notification_preferences\" (\n \"id\",\n \"user_id\",\n \"notification_category_id\",\n \"enabled\"\n )\n SELECT\n p.\"id\",\n p.\"user_id\",\n p.\"notification_category_id\",\n p.\"enabled\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"user_id\" = EXCLUDED.\"user_id\",\n \"notification_category_id\" = EXCLUDED.\"notification_category_id\",\n \"enabled\" = EXCLUDED.\"enabled\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"refresh_tokens\": {\n sourceTables: { \"ProjectUserRefreshToken\": \"ProjectUserRefreshToken\" },\n targetTable: \"refresh_tokens\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"refresh_tokens\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"created_at\" timestamp without time zone NOT NULL,\n \"last_used_at\" timestamp without time zone NOT NULL,\n \"is_impersonation\" boolean NOT NULL DEFAULT false,\n \"expires_at\" timestamp without time zone\n );\n REVOKE ALL ON \"refresh_tokens\" FROM PUBLIC;\n GRANT SELECT ON \"refresh_tokens\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.refresh_tokens (\n project_id String,\n branch_id String,\n id UUID,\n user_id UUID,\n created_at DateTime64(3, 'UTC'),\n last_used_at DateTime64(3, 'UTC'),\n is_impersonation UInt8,\n expires_at Nullable(DateTime64(3, 'UTC')),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, id);\n\n CREATE TABLE IF NOT EXISTS analytics_internal._stack_sync_metadata (\n tenancy_id UUID,\n mapping_name String,\n last_synced_sequence_id Int64,\n updated_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(updated_at)\n ORDER BY (tenancy_id, mapping_name);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"ProjectUserRefreshToken\".\"id\" AS \"id\",\n \"ProjectUserRefreshToken\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserRefreshToken\".\"createdAt\" AS \"created_at\",\n \"ProjectUserRefreshToken\".\"lastActiveAt\" AS \"last_used_at\",\n \"ProjectUserRefreshToken\".\"isImpersonation\" AS \"is_impersonation\",\n \"ProjectUserRefreshToken\".\"expiresAt\" AS \"expires_at\",\n \"ProjectUserRefreshToken\".\"sequenceId\" AS \"sync_sequence_id\",\n \"ProjectUserRefreshToken\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"ProjectUserRefreshToken\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"ProjectUserRefreshToken\".\"tenancyId\"\n WHERE \"ProjectUserRefreshToken\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"last_used_at\",\n false AS \"is_impersonation\",\n NULL::timestamp without time zone AS \"expires_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserRefreshToken'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"ProjectUserRefreshToken\".\"id\" AS \"id\",\n \"ProjectUserRefreshToken\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserRefreshToken\".\"createdAt\" AS \"created_at\",\n \"ProjectUserRefreshToken\".\"lastActiveAt\" AS \"last_used_at\",\n \"ProjectUserRefreshToken\".\"isImpersonation\" AS \"is_impersonation\",\n \"ProjectUserRefreshToken\".\"expiresAt\" AS \"expires_at\",\n \"ProjectUserRefreshToken\".\"sequenceId\" AS \"sequence_id\",\n \"ProjectUserRefreshToken\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"ProjectUserRefreshToken\"\n WHERE \"ProjectUserRefreshToken\".\"tenancyId\" = $1::uuid\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"last_used_at\",\n false AS \"is_impersonation\",\n NULL::timestamp without time zone AS \"expires_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserRefreshToken'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::uuid AS \"user_id\",\n $3::timestamp without time zone AS \"created_at\",\n $4::timestamp without time zone AS \"last_used_at\",\n $5::boolean AS \"is_impersonation\",\n $6::timestamp without time zone AS \"expires_at\",\n $7::bigint AS \"sequence_id\",\n $8::boolean AS \"is_deleted\",\n $9::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"refresh_tokens\" rt\n USING params p\n WHERE p.\"is_deleted\" = true AND rt.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"refresh_tokens\" (\n \"id\",\n \"user_id\",\n \"created_at\",\n \"last_used_at\",\n \"is_impersonation\",\n \"expires_at\"\n )\n SELECT\n p.\"id\",\n p.\"user_id\",\n p.\"created_at\",\n p.\"last_used_at\",\n p.\"is_impersonation\",\n p.\"expires_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"user_id\" = EXCLUDED.\"user_id\",\n \"created_at\" = EXCLUDED.\"created_at\",\n \"last_used_at\" = EXCLUDED.\"last_used_at\",\n \"is_impersonation\" = EXCLUDED.\"is_impersonation\",\n \"expires_at\" = EXCLUDED.\"expires_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n \"connected_accounts\": {\n sourceTables: { \"ProjectUserOAuthAccount\": \"ProjectUserOAuthAccount\" },\n targetTable: \"connected_accounts\",\n targetTableSchemas: {\n postgres: `\n CREATE TABLE IF NOT EXISTS \"connected_accounts\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"user_id\" uuid NOT NULL,\n \"provider\" text NOT NULL,\n \"provider_account_id\" text NOT NULL,\n \"email\" text,\n \"created_at\" timestamp without time zone NOT NULL\n );\n REVOKE ALL ON \"connected_accounts\" FROM PUBLIC;\n GRANT SELECT ON \"connected_accounts\" TO PUBLIC;\n\n CREATE TABLE IF NOT EXISTS \"_stack_sync_metadata\" (\n \"mapping_name\" text PRIMARY KEY NOT NULL,\n \"last_synced_sequence_id\" bigint NOT NULL DEFAULT -1,\n \"updated_at\" timestamp without time zone NOT NULL DEFAULT now()\n );\n `.trim(),\n clickhouse: `\n CREATE TABLE IF NOT EXISTS analytics_internal.connected_accounts (\n project_id String,\n branch_id String,\n user_id UUID,\n provider String,\n provider_account_id String,\n created_at DateTime64(3, 'UTC'),\n sync_sequence_id Int64,\n sync_is_deleted UInt8,\n sync_created_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(sync_sequence_id)\n PARTITION BY toYYYYMM(created_at)\n ORDER BY (project_id, branch_id, user_id, provider, provider_account_id);\n\n CREATE TABLE IF NOT EXISTS analytics_internal._stack_sync_metadata (\n tenancy_id UUID,\n mapping_name String,\n last_synced_sequence_id Int64,\n updated_at DateTime64(3, 'UTC') DEFAULT now64(3)\n )\n ENGINE ReplacingMergeTree(updated_at)\n ORDER BY (tenancy_id, mapping_name);\n `.trim(),\n },\n internalDbFetchQueries: {\n clickhouse: `\n SELECT *\n FROM (\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n \"ProjectUserOAuthAccount\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserOAuthAccount\".\"configOAuthProviderId\" AS \"provider\",\n \"ProjectUserOAuthAccount\".\"providerAccountId\" AS \"provider_account_id\",\n \"ProjectUserOAuthAccount\".\"createdAt\" AS \"created_at\",\n \"ProjectUserOAuthAccount\".\"sequenceId\" AS \"sync_sequence_id\",\n \"ProjectUserOAuthAccount\".\"tenancyId\" AS \"tenancyId\",\n false AS \"sync_is_deleted\"\n FROM \"ProjectUserOAuthAccount\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"ProjectUserOAuthAccount\".\"tenancyId\"\n WHERE \"ProjectUserOAuthAccount\".\"tenancyId\" = $1::uuid\n AND \"ProjectUserOAuthAccount\".\"projectUserId\" IS NOT NULL\n\n UNION ALL\n\n SELECT\n \"Tenancy\".\"projectId\" AS \"project_id\",\n \"Tenancy\".\"branchId\" AS \"branch_id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n \"DeletedRow\".\"data\"->>'configOAuthProviderId' AS \"provider\",\n \"DeletedRow\".\"data\"->>'providerAccountId' AS \"provider_account_id\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sync_sequence_id\",\n \"DeletedRow\".\"tenancyId\" AS \"tenancyId\",\n true AS \"sync_is_deleted\"\n FROM \"DeletedRow\"\n JOIN \"Tenancy\" ON \"Tenancy\".\"id\" = \"DeletedRow\".\"tenancyId\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserOAuthAccount'\n ) AS \"_src\"\n WHERE \"sync_sequence_id\" IS NOT NULL\n AND \"sync_sequence_id\" > $2::bigint\n ORDER BY \"sync_sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n },\n internalDbFetchQuery: `\n SELECT *\n FROM (\n SELECT\n \"ProjectUserOAuthAccount\".\"id\" AS \"id\",\n \"ProjectUserOAuthAccount\".\"projectUserId\" AS \"user_id\",\n \"ProjectUserOAuthAccount\".\"configOAuthProviderId\" AS \"provider\",\n \"ProjectUserOAuthAccount\".\"providerAccountId\" AS \"provider_account_id\",\n \"ProjectUserOAuthAccount\".\"email\" AS \"email\",\n \"ProjectUserOAuthAccount\".\"createdAt\" AS \"created_at\",\n \"ProjectUserOAuthAccount\".\"sequenceId\" AS \"sequence_id\",\n \"ProjectUserOAuthAccount\".\"tenancyId\",\n false AS \"is_deleted\"\n FROM \"ProjectUserOAuthAccount\"\n WHERE \"ProjectUserOAuthAccount\".\"tenancyId\" = $1::uuid\n AND \"ProjectUserOAuthAccount\".\"projectUserId\" IS NOT NULL\n\n UNION ALL\n\n SELECT\n (\"DeletedRow\".\"primaryKey\"->>'id')::uuid AS \"id\",\n (\"DeletedRow\".\"data\"->>'projectUserId')::uuid AS \"user_id\",\n NULL::text AS \"provider\",\n NULL::text AS \"provider_account_id\",\n NULL::text AS \"email\",\n \"DeletedRow\".\"deletedAt\"::timestamp without time zone AS \"created_at\",\n \"DeletedRow\".\"sequenceId\" AS \"sequence_id\",\n \"DeletedRow\".\"tenancyId\",\n true AS \"is_deleted\"\n FROM \"DeletedRow\"\n WHERE\n \"DeletedRow\".\"tenancyId\" = $1::uuid\n AND \"DeletedRow\".\"tableName\" = 'ProjectUserOAuthAccount'\n ) AS \"_src\"\n WHERE \"sequence_id\" IS NOT NULL\n AND \"sequence_id\" > $2::bigint\n ORDER BY \"sequence_id\" ASC\n LIMIT 1000\n `.trim(),\n externalDbUpdateQueries: {\n postgres: `\n WITH params AS (\n SELECT\n $1::uuid AS \"id\",\n $2::uuid AS \"user_id\",\n $3::text AS \"provider\",\n $4::text AS \"provider_account_id\",\n $5::text AS \"email\",\n $6::timestamp without time zone AS \"created_at\",\n $7::bigint AS \"sequence_id\",\n $8::boolean AS \"is_deleted\",\n $9::text AS \"mapping_name\"\n ),\n deleted AS (\n DELETE FROM \"connected_accounts\" ca\n USING params p\n WHERE p.\"is_deleted\" = true AND ca.\"id\" = p.\"id\"\n RETURNING 1\n ),\n upserted AS (\n INSERT INTO \"connected_accounts\" (\n \"id\",\n \"user_id\",\n \"provider\",\n \"provider_account_id\",\n \"email\",\n \"created_at\"\n )\n SELECT\n p.\"id\",\n p.\"user_id\",\n p.\"provider\",\n p.\"provider_account_id\",\n p.\"email\",\n p.\"created_at\"\n FROM params p\n WHERE p.\"is_deleted\" = false\n ON CONFLICT (\"id\") DO UPDATE SET\n \"user_id\" = EXCLUDED.\"user_id\",\n \"provider\" = EXCLUDED.\"provider\",\n \"provider_account_id\" = EXCLUDED.\"provider_account_id\",\n \"email\" = EXCLUDED.\"email\",\n \"created_at\" = EXCLUDED.\"created_at\"\n RETURNING 1\n )\n INSERT INTO \"_stack_sync_metadata\" (\"mapping_name\", \"last_synced_sequence_id\", \"updated_at\")\n SELECT p.\"mapping_name\", p.\"sequence_id\", now() FROM params p\n ON CONFLICT (\"mapping_name\") DO UPDATE SET\n \"last_synced_sequence_id\" = GREATEST(\"_stack_sync_metadata\".\"last_synced_sequence_id\", EXCLUDED.\"last_synced_sequence_id\"),\n \"updated_at\" = now();\n `.trim(),\n },\n },\n} as const;\n"],"mappings":";AAAA,MAAa,2BAA2B;CACtC,SAAS;EACP,cAAc,EAAE,eAAe,eAAe;EAC9C,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;;;;;QAqBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiCV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4EV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgEpB,MAAM;EAER,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkER,MAAM,EACT;EACF;CACD,oBAAoB;EAClB,cAAc,EAAE,kBAAkB,kBAAkB;EACpD,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;;;QAmBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;;QAmBV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0DR,MAAM,EACT;EACF;CACD,SAAS;EACP,cAAc,EAAE,QAAQ,QAAQ;EAChC,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;;QAkBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;QAkBV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6CV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsDR,MAAM,EACT;EACF;CACD,wBAAwB;EACtB,cAAc,EAAE,cAAc,cAAc;EAC5C,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;QAiBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;QAgBV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyCV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6CR,MAAM,EACT;EACF;CACD,oBAAoB;EAClB,cAAc,EAAE,8BAA8B,8BAA8B;EAC5E,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;QAgBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;QAeV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuCV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwCR,MAAM,EACT;EACF;CACD,oBAAoB;EAClB,cAAc,EAAE,oBAAoB,oBAAoB;EACxD,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;QAiBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;QAiBV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0CpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkDR,MAAM,EACT;EACF;CACD,kBAAkB;EAChB,cAAc,EAAE,eAAe,eAAe;EAC9C,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2CR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0CV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6FV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyFpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0JR,MAAM,EACT;EACF;CACD,uBAAuB;EACrB,cAAc,EAAE,+BAA+B,+BAA+B;EAC9E,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;QAeR,MAAM;GACR,YAAY;;;;;;;;;;;;;;QAcV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqCV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqCR,MAAM,EACT;EACF;CACD,4BAA4B;EAC1B,cAAc,EAAE,8BAA8B,8BAA8B;EAC5E,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;QAeR,MAAM;GACR,YAAY;;;;;;;;;;;;;QAaV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqCV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0CR,MAAM,EACT;EACF;CACD,kBAAkB;EAChB,cAAc,EAAE,2BAA2B,2BAA2B;EACtE,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;QAiBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;QA0BV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2CV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkDR,MAAM,EACT;EACF;CACD,sBAAsB;EACpB,cAAc,EAAE,2BAA2B,2BAA2B;EACtE,aAAa;EACb,oBAAoB;GAClB,UAAU;;;;;;;;;;;;;;;;;QAiBR,MAAM;GACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;QAwBV,MAAM;GACT;EACD,wBAAwB,EACtB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwCV,MAAM,EACT;EACD,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsCpB,MAAM;EACR,yBAAyB,EACvB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkDR,MAAM,EACT;EACF;CACF"}
@@ -0,0 +1,61 @@
1
+ import { OptionalKeys, RequiredKeys } from "../utils/types";
2
+
3
+ //#region src/config/format.d.ts
4
+ type ConfigValue = string | number | boolean | null | ConfigValue[] | Config;
5
+ type Config = {
6
+ [keyOrDotNotation: string]: ConfigValue | undefined;
7
+ };
8
+ type NormalizedConfigValue = string | number | boolean | NormalizedConfig | NormalizedConfigValue[];
9
+ type NormalizedConfig = {
10
+ [key: string]: NormalizedConfigValue | undefined;
11
+ };
12
+ type _NormalizesTo<N> = N extends readonly any[] ? { [K in keyof N]: _NormalizesTo<N[K]> } : N extends object ? (Config & { [K in OptionalKeys<N>]?: _NormalizesTo<N[K]> | null } & { [K in RequiredKeys<N>]: undefined extends N[K] ? _NormalizesTo<N[K]> | null : _NormalizesTo<N[K]> } & { [K in `${string}.${string}`]: ConfigValue }) : N;
13
+ type NormalizesTo<N extends NormalizedConfig> = _NormalizesTo<N>;
14
+ /**
15
+ * Note that a config can both be valid and not normalizable.
16
+ */
17
+ declare function isValidConfig(c: unknown): c is Config;
18
+ declare function getInvalidConfigReason(c: unknown, options?: {
19
+ configName?: string;
20
+ }): string | undefined;
21
+ declare function assertValidConfig(c: unknown): void;
22
+ declare function override(c1: Config, ...configs: Config[]): Config;
23
+ /**
24
+ * Removes keys from a config override, using the same nested key logic as the `override` function.
25
+ * Resetting key "a.b" also resets "a.b.c" (and any other descendants).
26
+ * Handles both flat dot-notation keys and nested object keys.
27
+ */
28
+ declare function removeKeysFromConfig(config: Config, keysToRemove: string[]): Config;
29
+ type NormalizeOptions = {
30
+ /**
31
+ * What to do if a dot notation is used on a value that is not an object.
32
+ *
33
+ * - "throw" (default): Throw an error.
34
+ * - "ignore": Ignore the dot notation field.
35
+ */
36
+ onDotIntoNonObject?: "throw" | "ignore";
37
+ /**
38
+ * What to do if a dot notation is used on a value that is null.
39
+ *
40
+ * - "like-non-object" (default): Treat it like a non-object. See `onDotIntoNonObject`.
41
+ * - "throw": Throw an error.
42
+ * - "ignore": Ignore the dot notation field.
43
+ * - "empty-object": Set the value to an empty object.
44
+ */
45
+ onDotIntoNull?: "like-non-object" | "throw" | "ignore" | "empty-object";
46
+ /**
47
+ * If provided, keys that are silently dropped during normalization (when a dot-notation key
48
+ * references a parent that doesn't exist or is not an object and the behavior is "ignore")
49
+ * will be pushed to this array.
50
+ */
51
+ droppedKeys?: string[];
52
+ };
53
+ declare class NormalizationError extends Error {
54
+ constructor(...args: ConstructorParameters<typeof Error>);
55
+ }
56
+ declare function isNormalized(c: Config): c is NormalizedConfig;
57
+ declare function assertNormalized(c: Config): asserts c is NormalizedConfig;
58
+ declare function normalize(c: Config, options?: NormalizeOptions): NormalizedConfig;
59
+ //#endregion
60
+ export { Config, ConfigValue, NormalizationError, NormalizedConfig, NormalizedConfigValue, NormalizesTo, _NormalizesTo, assertNormalized, assertValidConfig, getInvalidConfigReason, isNormalized, isValidConfig, normalize, override, removeKeysFromConfig };
61
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","names":[],"sources":["../../../src/config/format.ts"],"mappings":";;;KAQY,WAAA,sCAAiD,WAAA,KAAgB,MAAA;AAAA,KACjE,MAAA;EAAA,CACT,gBAAA,WAA2B,WAAA;AAAA;AAAA,KAGlB,qBAAA,+BAAoD,gBAAA,GAAmB,qBAAA;AAAA,KACvE,gBAAA;EAAA,CACT,GAAA,WAAc,qBAAA;AAAA;AAAA,KAGL,aAAA,MAAmB,CAAA,wCACb,CAAA,GAAI,aAAA,CAAc,CAAA,CAAE,CAAA,OAClC,CAAA,mBACE,MAAA,WACQ,YAAA,CAAa,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,CAAA,sBACnC,YAAA,CAAa,CAAA,sBAAuB,CAAA,CAAE,CAAA,IAAK,aAAA,CAAc,CAAA,CAAE,CAAA,YAAa,aAAA,CAAc,CAAA,CAAE,CAAA,uCAChE,WAAA,MAChC,CAAA;AAAA,KACM,YAAA,WAAuB,gBAAA,IAAoB,aAAA,CAAc,CAAA;;;;iBAKrD,aAAA,CAAc,CAAA,YAAa,CAAA,IAAK,MAAA;AAAA,iBAIhC,sBAAA,CAAuB,CAAA,WAAY,OAAA;EAAW,UAAA;AAAA;AAAA,iBA8C9C,iBAAA,CAAkB,CAAA;AAAA,iBAKlB,QAAA,CAAS,EAAA,EAAI,MAAA,KAAW,OAAA,EAAS,MAAA,KAAQ,MAAA;;;;;;iBA0BzC,oBAAA,CAAqB,MAAA,EAAQ,MAAA,EAAQ,YAAA,aAAyB,MAAA;AAAA,KAgHzE,gBAAA;EA1M0C;;;;;;EAiN7C,kBAAA;EAhNqE;;;;;;;;EAyNrE,aAAA;EAvNK;;;;;EA6NL,WAAA;AAAA;AAAA,cAGW,kBAAA,SAA2B,KAAA;iBACvB,IAAA,EAAM,qBAAA,QAA6B,KAAA;AAAA;AAAA,iBAMpC,YAAA,CAAa,CAAA,EAAG,MAAA,GAAS,CAAA,IAAK,gBAAA;AAAA,iBAU9B,gBAAA,CAAiB,CAAA,EAAG,MAAA,WAAiB,CAAA,IAAK,gBAAA;AAAA,iBAK1C,SAAA,CAAU,CAAA,EAAG,MAAA,EAAQ,OAAA,GAAS,gBAAA,GAAwB,gBAAA"}