@zmeel/db 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/LICENSE +21 -0
  2. package/dist/backup-lib.d.ts +29 -0
  3. package/dist/backup-lib.d.ts.map +1 -0
  4. package/dist/backup-lib.js +553 -0
  5. package/dist/backup-lib.js.map +1 -0
  6. package/dist/backup-lib.test.d.ts +2 -0
  7. package/dist/backup-lib.test.d.ts.map +1 -0
  8. package/dist/backup-lib.test.js +146 -0
  9. package/dist/backup-lib.test.js.map +1 -0
  10. package/dist/backup.d.ts +2 -0
  11. package/dist/backup.d.ts.map +1 -0
  12. package/dist/backup.js +103 -0
  13. package/dist/backup.js.map +1 -0
  14. package/dist/check-migration-numbering.d.ts +2 -0
  15. package/dist/check-migration-numbering.d.ts.map +1 -0
  16. package/dist/check-migration-numbering.js +64 -0
  17. package/dist/check-migration-numbering.js.map +1 -0
  18. package/dist/client.d.ts +43 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +586 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/client.test.d.ts +2 -0
  23. package/dist/client.test.d.ts.map +1 -0
  24. package/dist/client.test.js +298 -0
  25. package/dist/client.test.js.map +1 -0
  26. package/dist/embedded-postgres-error.d.ts +9 -0
  27. package/dist/embedded-postgres-error.d.ts.map +1 -0
  28. package/dist/embedded-postgres-error.js +73 -0
  29. package/dist/embedded-postgres-error.js.map +1 -0
  30. package/dist/embedded-postgres-error.test.d.ts +2 -0
  31. package/dist/embedded-postgres-error.test.d.ts.map +1 -0
  32. package/dist/embedded-postgres-error.test.js +25 -0
  33. package/dist/embedded-postgres-error.test.js.map +1 -0
  34. package/dist/index.d.ts +6 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +6 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/migrate.d.ts +2 -0
  39. package/dist/migrate.d.ts.map +1 -0
  40. package/dist/migrate.js +25 -0
  41. package/dist/migrate.js.map +1 -0
  42. package/dist/migration-runtime.d.ts +7 -0
  43. package/dist/migration-runtime.d.ts.map +1 -0
  44. package/dist/migration-runtime.js +158 -0
  45. package/dist/migration-runtime.js.map +1 -0
  46. package/dist/migration-status.d.ts +2 -0
  47. package/dist/migration-status.d.ts.map +1 -0
  48. package/dist/migration-status.js +55 -0
  49. package/dist/migration-status.js.map +1 -0
  50. package/dist/migrations/0000_mature_masked_marvel.sql +208 -0
  51. package/dist/migrations/0001_fast_northstar.sql +87 -0
  52. package/dist/migrations/0002_big_zaladane.sql +1 -0
  53. package/dist/migrations/0003_shallow_quentin_quire.sql +5 -0
  54. package/dist/migrations/0004_issue_identifiers.sql +28 -0
  55. package/dist/migrations/0005_chief_luke_cage.sql +19 -0
  56. package/dist/migrations/0006_overjoyed_mister_sinister.sql +36 -0
  57. package/dist/migrations/0007_new_quentin_quire.sql +20 -0
  58. package/dist/migrations/0008_amused_zzzax.sql +1 -0
  59. package/dist/migrations/0009_fast_jackal.sql +36 -0
  60. package/dist/migrations/0010_stale_justin_hammer.sql +37 -0
  61. package/dist/migrations/0011_windy_corsair.sql +18 -0
  62. package/dist/migrations/0012_perpetual_ser_duncan.sql +2 -0
  63. package/dist/migrations/0013_dashing_wasp.sql +4 -0
  64. package/dist/migrations/0014_many_mikhail_rasputin.sql +135 -0
  65. package/dist/migrations/0015_project_color_archived.sql +2 -0
  66. package/dist/migrations/0016_agent_icon.sql +1 -0
  67. package/dist/migrations/0017_tiresome_gabe_jones.sql +51 -0
  68. package/dist/migrations/0018_flat_sleepwalker.sql +26 -0
  69. package/dist/migrations/0019_public_victor_mancha.sql +18 -0
  70. package/dist/migrations/0020_white_anita_blake.sql +1 -0
  71. package/dist/migrations/0021_chief_vindicator.sql +1 -0
  72. package/dist/migrations/0022_company_brand_color.sql +1 -0
  73. package/dist/migrations/0023_fair_lethal_legion.sql +3 -0
  74. package/dist/migrations/0024_far_beast.sql +2 -0
  75. package/dist/migrations/0025_nasty_salo.sql +15 -0
  76. package/dist/migrations/0026_lying_pete_wisdom.sql +39 -0
  77. package/dist/migrations/0027_tranquil_tenebrous.sql +2 -0
  78. package/dist/migrations/0028_harsh_goliath.sql +54 -0
  79. package/dist/migrations/0029_plugin_tables.sql +177 -0
  80. package/dist/migrations/0030_rich_magneto.sql +12 -0
  81. package/dist/migrations/0031_zippy_magma.sql +51 -0
  82. package/dist/migrations/0032_pretty_doctor_octopus.sql +102 -0
  83. package/dist/migrations/0033_shiny_black_tarantula.sql +2 -0
  84. package/dist/migrations/0034_fat_dormammu.sql +2 -0
  85. package/dist/migrations/0035_marvelous_satana.sql +91 -0
  86. package/dist/migrations/0036_cheerful_nitro.sql +9 -0
  87. package/dist/migrations/0037_friendly_eddie_brock.sql +29 -0
  88. package/dist/migrations/0038_careless_iron_monger.sql +5 -0
  89. package/dist/migrations/0039_fat_magneto.sql +161 -0
  90. package/dist/migrations/0040_eager_shotgun.sql +5 -0
  91. package/dist/migrations/0041_curly_maria_hill.sql +1 -0
  92. package/dist/migrations/0042_spotty_the_renegades.sql +26 -0
  93. package/dist/migrations/0043_reflective_captain_universe.sql +6 -0
  94. package/dist/migrations/0044_illegal_toad.sql +56 -0
  95. package/dist/migrations/0045_workable_shockwave.sql +17 -0
  96. package/dist/migrations/0046_smooth_sentinels.sql +11 -0
  97. package/dist/migrations/0047_overjoyed_groot.sql +102 -0
  98. package/dist/migrations/0048_flashy_marrow.sql +1 -0
  99. package/dist/migrations/meta/0000_snapshot.json +1743 -0
  100. package/dist/migrations/meta/0001_snapshot.json +2441 -0
  101. package/dist/migrations/meta/0002_snapshot.json +2454 -0
  102. package/dist/migrations/meta/0003_snapshot.json +2502 -0
  103. package/dist/migrations/meta/0005_snapshot.json +2719 -0
  104. package/dist/migrations/meta/0006_snapshot.json +3048 -0
  105. package/dist/migrations/meta/0007_snapshot.json +3258 -0
  106. package/dist/migrations/meta/0008_snapshot.json +3264 -0
  107. package/dist/migrations/meta/0009_snapshot.json +3587 -0
  108. package/dist/migrations/meta/0010_snapshot.json +3929 -0
  109. package/dist/migrations/meta/0011_snapshot.json +4068 -0
  110. package/dist/migrations/meta/0012_snapshot.json +4087 -0
  111. package/dist/migrations/meta/0013_snapshot.json +4118 -0
  112. package/dist/migrations/meta/0014_snapshot.json +5187 -0
  113. package/dist/migrations/meta/0017_snapshot.json +5215 -0
  114. package/dist/migrations/meta/0018_snapshot.json +5450 -0
  115. package/dist/migrations/meta/0019_snapshot.json +5603 -0
  116. package/dist/migrations/meta/0020_snapshot.json +5603 -0
  117. package/dist/migrations/meta/0021_snapshot.json +5609 -0
  118. package/dist/migrations/meta/0023_snapshot.json +5633 -0
  119. package/dist/migrations/meta/0024_snapshot.json +5693 -0
  120. package/dist/migrations/meta/0025_snapshot.json +5849 -0
  121. package/dist/migrations/meta/0027_snapshot.json +6205 -0
  122. package/dist/migrations/meta/0028_snapshot.json +6710 -0
  123. package/dist/migrations/meta/0029_snapshot.json +7899 -0
  124. package/dist/migrations/meta/0030_snapshot.json +8003 -0
  125. package/dist/migrations/meta/0031_snapshot.json +7242 -0
  126. package/dist/migrations/meta/0032_snapshot.json +7733 -0
  127. package/dist/migrations/meta/0033_snapshot.json +9038 -0
  128. package/dist/migrations/meta/0034_snapshot.json +9039 -0
  129. package/dist/migrations/meta/0035_snapshot.json +9959 -0
  130. package/dist/migrations/meta/0036_snapshot.json +10023 -0
  131. package/dist/migrations/meta/0037_snapshot.json +10263 -0
  132. package/dist/migrations/meta/0038_snapshot.json +11350 -0
  133. package/dist/migrations/meta/0039_snapshot.json +10308 -0
  134. package/dist/migrations/meta/0040_snapshot.json +10481 -0
  135. package/dist/migrations/meta/0041_snapshot.json +11393 -0
  136. package/dist/migrations/meta/0044_snapshot.json +11701 -0
  137. package/dist/migrations/meta/0045_snapshot.json +11857 -0
  138. package/dist/migrations/meta/0046_snapshot.json +11870 -0
  139. package/dist/migrations/meta/0047_snapshot.json +12539 -0
  140. package/dist/migrations/meta/0048_snapshot.json +12546 -0
  141. package/dist/migrations/meta/_journal.json +349 -0
  142. package/dist/migrations/migrations/0000_mature_masked_marvel.sql +208 -0
  143. package/dist/migrations/migrations/0001_fast_northstar.sql +87 -0
  144. package/dist/migrations/migrations/0002_big_zaladane.sql +1 -0
  145. package/dist/migrations/migrations/0003_shallow_quentin_quire.sql +5 -0
  146. package/dist/migrations/migrations/0004_issue_identifiers.sql +28 -0
  147. package/dist/migrations/migrations/0005_chief_luke_cage.sql +19 -0
  148. package/dist/migrations/migrations/0006_overjoyed_mister_sinister.sql +36 -0
  149. package/dist/migrations/migrations/0007_new_quentin_quire.sql +20 -0
  150. package/dist/migrations/migrations/0008_amused_zzzax.sql +1 -0
  151. package/dist/migrations/migrations/0009_fast_jackal.sql +36 -0
  152. package/dist/migrations/migrations/0010_stale_justin_hammer.sql +37 -0
  153. package/dist/migrations/migrations/0011_windy_corsair.sql +18 -0
  154. package/dist/migrations/migrations/0012_perpetual_ser_duncan.sql +2 -0
  155. package/dist/migrations/migrations/0013_dashing_wasp.sql +4 -0
  156. package/dist/migrations/migrations/0014_many_mikhail_rasputin.sql +135 -0
  157. package/dist/migrations/migrations/0015_project_color_archived.sql +2 -0
  158. package/dist/migrations/migrations/0016_agent_icon.sql +1 -0
  159. package/dist/migrations/migrations/0017_tiresome_gabe_jones.sql +51 -0
  160. package/dist/migrations/migrations/0018_flat_sleepwalker.sql +26 -0
  161. package/dist/migrations/migrations/0019_public_victor_mancha.sql +18 -0
  162. package/dist/migrations/migrations/0020_white_anita_blake.sql +1 -0
  163. package/dist/migrations/migrations/0021_chief_vindicator.sql +1 -0
  164. package/dist/migrations/migrations/0022_company_brand_color.sql +1 -0
  165. package/dist/migrations/migrations/0023_fair_lethal_legion.sql +3 -0
  166. package/dist/migrations/migrations/0024_far_beast.sql +2 -0
  167. package/dist/migrations/migrations/0025_nasty_salo.sql +15 -0
  168. package/dist/migrations/migrations/0026_lying_pete_wisdom.sql +39 -0
  169. package/dist/migrations/migrations/0027_tranquil_tenebrous.sql +2 -0
  170. package/dist/migrations/migrations/0028_harsh_goliath.sql +54 -0
  171. package/dist/migrations/migrations/0029_plugin_tables.sql +177 -0
  172. package/dist/migrations/migrations/0030_rich_magneto.sql +12 -0
  173. package/dist/migrations/migrations/0031_zippy_magma.sql +51 -0
  174. package/dist/migrations/migrations/0032_pretty_doctor_octopus.sql +102 -0
  175. package/dist/migrations/migrations/0033_shiny_black_tarantula.sql +2 -0
  176. package/dist/migrations/migrations/0034_fat_dormammu.sql +2 -0
  177. package/dist/migrations/migrations/0035_marvelous_satana.sql +91 -0
  178. package/dist/migrations/migrations/0036_cheerful_nitro.sql +9 -0
  179. package/dist/migrations/migrations/0037_friendly_eddie_brock.sql +29 -0
  180. package/dist/migrations/migrations/0038_careless_iron_monger.sql +5 -0
  181. package/dist/migrations/migrations/0039_fat_magneto.sql +161 -0
  182. package/dist/migrations/migrations/0040_eager_shotgun.sql +5 -0
  183. package/dist/migrations/migrations/0041_curly_maria_hill.sql +1 -0
  184. package/dist/migrations/migrations/0042_spotty_the_renegades.sql +26 -0
  185. package/dist/migrations/migrations/0043_reflective_captain_universe.sql +6 -0
  186. package/dist/migrations/migrations/0044_illegal_toad.sql +56 -0
  187. package/dist/migrations/migrations/0045_workable_shockwave.sql +17 -0
  188. package/dist/migrations/migrations/0046_smooth_sentinels.sql +11 -0
  189. package/dist/migrations/migrations/0047_overjoyed_groot.sql +102 -0
  190. package/dist/migrations/migrations/0048_flashy_marrow.sql +1 -0
  191. package/dist/migrations/migrations/meta/0000_snapshot.json +1743 -0
  192. package/dist/migrations/migrations/meta/0001_snapshot.json +2441 -0
  193. package/dist/migrations/migrations/meta/0002_snapshot.json +2454 -0
  194. package/dist/migrations/migrations/meta/0003_snapshot.json +2502 -0
  195. package/dist/migrations/migrations/meta/0005_snapshot.json +2719 -0
  196. package/dist/migrations/migrations/meta/0006_snapshot.json +3048 -0
  197. package/dist/migrations/migrations/meta/0007_snapshot.json +3258 -0
  198. package/dist/migrations/migrations/meta/0008_snapshot.json +3264 -0
  199. package/dist/migrations/migrations/meta/0009_snapshot.json +3587 -0
  200. package/dist/migrations/migrations/meta/0010_snapshot.json +3929 -0
  201. package/dist/migrations/migrations/meta/0011_snapshot.json +4068 -0
  202. package/dist/migrations/migrations/meta/0012_snapshot.json +4087 -0
  203. package/dist/migrations/migrations/meta/0013_snapshot.json +4118 -0
  204. package/dist/migrations/migrations/meta/0014_snapshot.json +5187 -0
  205. package/dist/migrations/migrations/meta/0017_snapshot.json +5215 -0
  206. package/dist/migrations/migrations/meta/0018_snapshot.json +5450 -0
  207. package/dist/migrations/migrations/meta/0019_snapshot.json +5603 -0
  208. package/dist/migrations/migrations/meta/0020_snapshot.json +5603 -0
  209. package/dist/migrations/migrations/meta/0021_snapshot.json +5609 -0
  210. package/dist/migrations/migrations/meta/0023_snapshot.json +5633 -0
  211. package/dist/migrations/migrations/meta/0024_snapshot.json +5693 -0
  212. package/dist/migrations/migrations/meta/0025_snapshot.json +5849 -0
  213. package/dist/migrations/migrations/meta/0027_snapshot.json +6205 -0
  214. package/dist/migrations/migrations/meta/0028_snapshot.json +6710 -0
  215. package/dist/migrations/migrations/meta/0029_snapshot.json +7899 -0
  216. package/dist/migrations/migrations/meta/0030_snapshot.json +8003 -0
  217. package/dist/migrations/migrations/meta/0031_snapshot.json +7242 -0
  218. package/dist/migrations/migrations/meta/0032_snapshot.json +7733 -0
  219. package/dist/migrations/migrations/meta/0033_snapshot.json +9038 -0
  220. package/dist/migrations/migrations/meta/0034_snapshot.json +9039 -0
  221. package/dist/migrations/migrations/meta/0035_snapshot.json +9959 -0
  222. package/dist/migrations/migrations/meta/0036_snapshot.json +10023 -0
  223. package/dist/migrations/migrations/meta/0037_snapshot.json +10263 -0
  224. package/dist/migrations/migrations/meta/0038_snapshot.json +11350 -0
  225. package/dist/migrations/migrations/meta/0039_snapshot.json +10308 -0
  226. package/dist/migrations/migrations/meta/0040_snapshot.json +10481 -0
  227. package/dist/migrations/migrations/meta/0041_snapshot.json +11393 -0
  228. package/dist/migrations/migrations/meta/0044_snapshot.json +11701 -0
  229. package/dist/migrations/migrations/meta/0045_snapshot.json +11857 -0
  230. package/dist/migrations/migrations/meta/0046_snapshot.json +11870 -0
  231. package/dist/migrations/migrations/meta/0047_snapshot.json +12539 -0
  232. package/dist/migrations/migrations/meta/0048_snapshot.json +12546 -0
  233. package/dist/migrations/migrations/meta/_journal.json +349 -0
  234. package/dist/runtime-config.d.ts +16 -0
  235. package/dist/runtime-config.d.ts.map +1 -0
  236. package/dist/runtime-config.js +197 -0
  237. package/dist/runtime-config.js.map +1 -0
  238. package/dist/runtime-config.test.d.ts +2 -0
  239. package/dist/runtime-config.test.d.ts.map +1 -0
  240. package/dist/runtime-config.test.js +93 -0
  241. package/dist/runtime-config.test.js.map +1 -0
  242. package/dist/schema/activity_log.d.ts +197 -0
  243. package/dist/schema/activity_log.d.ts.map +1 -0
  244. package/dist/schema/activity_log.js +22 -0
  245. package/dist/schema/activity_log.js.map +1 -0
  246. package/dist/schema/agent_api_keys.d.ts +144 -0
  247. package/dist/schema/agent_api_keys.d.ts.map +1 -0
  248. package/dist/schema/agent_api_keys.js +17 -0
  249. package/dist/schema/agent_api_keys.js.map +1 -0
  250. package/dist/schema/agent_config_revisions.d.ts +201 -0
  251. package/dist/schema/agent_config_revisions.d.ts.map +1 -0
  252. package/dist/schema/agent_config_revisions.js +20 -0
  253. package/dist/schema/agent_config_revisions.js.map +1 -0
  254. package/dist/schema/agent_runtime_state.d.ts +248 -0
  255. package/dist/schema/agent_runtime_state.d.ts.map +1 -0
  256. package/dist/schema/agent_runtime_state.js +23 -0
  257. package/dist/schema/agent_runtime_state.js.map +1 -0
  258. package/dist/schema/agent_task_sessions.d.ts +197 -0
  259. package/dist/schema/agent_task_sessions.d.ts.map +1 -0
  260. package/dist/schema/agent_task_sessions.js +22 -0
  261. package/dist/schema/agent_task_sessions.js.map +1 -0
  262. package/dist/schema/agent_wakeup_requests.d.ts +333 -0
  263. package/dist/schema/agent_wakeup_requests.d.ts.map +1 -0
  264. package/dist/schema/agent_wakeup_requests.js +29 -0
  265. package/dist/schema/agent_wakeup_requests.js.map +1 -0
  266. package/dist/schema/agents.d.ts +373 -0
  267. package/dist/schema/agents.d.ts.map +1 -0
  268. package/dist/schema/agents.js +29 -0
  269. package/dist/schema/agents.js.map +1 -0
  270. package/dist/schema/approval_comments.d.ts +144 -0
  271. package/dist/schema/approval_comments.d.ts.map +1 -0
  272. package/dist/schema/approval_comments.js +19 -0
  273. package/dist/schema/approval_comments.js.map +1 -0
  274. package/dist/schema/approvals.d.ts +214 -0
  275. package/dist/schema/approvals.d.ts.map +1 -0
  276. package/dist/schema/approvals.js +20 -0
  277. package/dist/schema/approvals.js.map +1 -0
  278. package/dist/schema/assets.d.ts +212 -0
  279. package/dist/schema/assets.d.ts.map +1 -0
  280. package/dist/schema/assets.js +22 -0
  281. package/dist/schema/assets.js.map +1 -0
  282. package/dist/schema/auth.d.ts +607 -0
  283. package/dist/schema/auth.d.ts.map +1 -0
  284. package/dist/schema/auth.js +44 -0
  285. package/dist/schema/auth.js.map +1 -0
  286. package/dist/schema/board_api_keys.d.ts +144 -0
  287. package/dist/schema/board_api_keys.d.ts.map +1 -0
  288. package/dist/schema/board_api_keys.js +16 -0
  289. package/dist/schema/board_api_keys.js.map +1 -0
  290. package/dist/schema/budget_incidents.d.ts +297 -0
  291. package/dist/schema/budget_incidents.d.ts.map +1 -0
  292. package/dist/schema/budget_incidents.js +29 -0
  293. package/dist/schema/budget_incidents.js.map +1 -0
  294. package/dist/schema/budget_policies.d.ts +263 -0
  295. package/dist/schema/budget_policies.d.ts.map +1 -0
  296. package/dist/schema/budget_policies.js +24 -0
  297. package/dist/schema/budget_policies.js.map +1 -0
  298. package/dist/schema/cli_auth_challenges.d.ts +263 -0
  299. package/dist/schema/cli_auth_challenges.d.ts.map +1 -0
  300. package/dist/schema/cli_auth_challenges.js +26 -0
  301. package/dist/schema/cli_auth_challenges.js.map +1 -0
  302. package/dist/schema/companies.d.ts +314 -0
  303. package/dist/schema/companies.d.ts.map +1 -0
  304. package/dist/schema/companies.js +28 -0
  305. package/dist/schema/companies.js.map +1 -0
  306. package/dist/schema/company_logos.d.ts +93 -0
  307. package/dist/schema/company_logos.d.ts.map +1 -0
  308. package/dist/schema/company_logos.js +14 -0
  309. package/dist/schema/company_logos.js.map +1 -0
  310. package/dist/schema/company_memberships.d.ts +144 -0
  311. package/dist/schema/company_memberships.d.ts.map +1 -0
  312. package/dist/schema/company_memberships.js +17 -0
  313. package/dist/schema/company_memberships.js.map +1 -0
  314. package/dist/schema/company_secret_versions.d.ts +163 -0
  315. package/dist/schema/company_secret_versions.d.ts.map +1 -0
  316. package/dist/schema/company_secret_versions.js +19 -0
  317. package/dist/schema/company_secret_versions.js.map +1 -0
  318. package/dist/schema/company_secrets.d.ts +195 -0
  319. package/dist/schema/company_secrets.d.ts.map +1 -0
  320. package/dist/schema/company_secrets.js +21 -0
  321. package/dist/schema/company_secrets.js.map +1 -0
  322. package/dist/schema/company_skills.d.ts +284 -0
  323. package/dist/schema/company_skills.d.ts.map +1 -0
  324. package/dist/schema/company_skills.js +24 -0
  325. package/dist/schema/company_skills.js.map +1 -0
  326. package/dist/schema/cost_events.d.ts +314 -0
  327. package/dist/schema/cost_events.d.ts.map +1 -0
  328. package/dist/schema/cost_events.js +34 -0
  329. package/dist/schema/cost_events.js.map +1 -0
  330. package/dist/schema/document_revisions.d.ts +212 -0
  331. package/dist/schema/document_revisions.d.ts.map +1 -0
  332. package/dist/schema/document_revisions.js +23 -0
  333. package/dist/schema/document_revisions.js.map +1 -0
  334. package/dist/schema/documents.d.ts +229 -0
  335. package/dist/schema/documents.d.ts.map +1 -0
  336. package/dist/schema/documents.js +22 -0
  337. package/dist/schema/documents.js.map +1 -0
  338. package/dist/schema/execution_workspaces.d.ts +418 -0
  339. package/dist/schema/execution_workspaces.d.ts.map +1 -0
  340. package/dist/schema/execution_workspaces.js +39 -0
  341. package/dist/schema/execution_workspaces.js.map +1 -0
  342. package/dist/schema/feedback_exports.d.ts +450 -0
  343. package/dist/schema/feedback_exports.d.ts.map +1 -0
  344. package/dist/schema/feedback_exports.js +41 -0
  345. package/dist/schema/feedback_exports.js.map +1 -0
  346. package/dist/schema/feedback_votes.d.ts +246 -0
  347. package/dist/schema/feedback_votes.d.ts.map +1 -0
  348. package/dist/schema/feedback_votes.js +25 -0
  349. package/dist/schema/feedback_votes.js.map +1 -0
  350. package/dist/schema/finance_events.d.ts +469 -0
  351. package/dist/schema/finance_events.d.ts.map +1 -0
  352. package/dist/schema/finance_events.js +45 -0
  353. package/dist/schema/finance_events.js.map +1 -0
  354. package/dist/schema/goals.d.ts +178 -0
  355. package/dist/schema/goals.d.ts.map +1 -0
  356. package/dist/schema/goals.js +18 -0
  357. package/dist/schema/goals.js.map +1 -0
  358. package/dist/schema/heartbeat_run_events.d.ts +214 -0
  359. package/dist/schema/heartbeat_run_events.d.ts.map +1 -0
  360. package/dist/schema/heartbeat_run_events.js +23 -0
  361. package/dist/schema/heartbeat_run_events.js.map +1 -0
  362. package/dist/schema/heartbeat_runs.d.ts +558 -0
  363. package/dist/schema/heartbeat_runs.d.ts.map +1 -0
  364. package/dist/schema/heartbeat_runs.js +43 -0
  365. package/dist/schema/heartbeat_runs.js.map +1 -0
  366. package/dist/schema/index.d.ts +61 -0
  367. package/dist/schema/index.d.ts.map +1 -0
  368. package/dist/schema/index.js +61 -0
  369. package/dist/schema/index.js.map +1 -0
  370. package/dist/schema/instance_settings.d.ts +114 -0
  371. package/dist/schema/instance_settings.d.ts.map +1 -0
  372. package/dist/schema/instance_settings.js +12 -0
  373. package/dist/schema/instance_settings.js.map +1 -0
  374. package/dist/schema/instance_user_roles.d.ts +93 -0
  375. package/dist/schema/instance_user_roles.d.ts.map +1 -0
  376. package/dist/schema/instance_user_roles.js +12 -0
  377. package/dist/schema/instance_user_roles.js.map +1 -0
  378. package/dist/schema/invites.d.ts +214 -0
  379. package/dist/schema/invites.d.ts.map +1 -0
  380. package/dist/schema/invites.js +20 -0
  381. package/dist/schema/invites.js.map +1 -0
  382. package/dist/schema/issue_approvals.d.ts +110 -0
  383. package/dist/schema/issue_approvals.d.ts.map +1 -0
  384. package/dist/schema/issue_approvals.js +19 -0
  385. package/dist/schema/issue_approvals.js.map +1 -0
  386. package/dist/schema/issue_attachments.d.ts +127 -0
  387. package/dist/schema/issue_attachments.d.ts.map +1 -0
  388. package/dist/schema/issue_attachments.js +19 -0
  389. package/dist/schema/issue_attachments.js.map +1 -0
  390. package/dist/schema/issue_comments.d.ts +161 -0
  391. package/dist/schema/issue_comments.d.ts.map +1 -0
  392. package/dist/schema/issue_comments.js +22 -0
  393. package/dist/schema/issue_comments.js.map +1 -0
  394. package/dist/schema/issue_documents.d.ts +127 -0
  395. package/dist/schema/issue_documents.d.ts.map +1 -0
  396. package/dist/schema/issue_documents.js +18 -0
  397. package/dist/schema/issue_documents.js.map +1 -0
  398. package/dist/schema/issue_inbox_archives.d.ts +127 -0
  399. package/dist/schema/issue_inbox_archives.d.ts.map +1 -0
  400. package/dist/schema/issue_inbox_archives.js +17 -0
  401. package/dist/schema/issue_inbox_archives.js.map +1 -0
  402. package/dist/schema/issue_labels.d.ts +76 -0
  403. package/dist/schema/issue_labels.d.ts.map +1 -0
  404. package/dist/schema/issue_labels.js +16 -0
  405. package/dist/schema/issue_labels.js.map +1 -0
  406. package/dist/schema/issue_read_states.d.ts +127 -0
  407. package/dist/schema/issue_read_states.d.ts.map +1 -0
  408. package/dist/schema/issue_read_states.js +17 -0
  409. package/dist/schema/issue_read_states.js.map +1 -0
  410. package/dist/schema/issue_work_products.d.ts +350 -0
  411. package/dist/schema/issue_work_products.d.ts.map +1 -0
  412. package/dist/schema/issue_work_products.js +37 -0
  413. package/dist/schema/issue_work_products.js.map +1 -0
  414. package/dist/schema/issues.d.ts +607 -0
  415. package/dist/schema/issues.d.ts.map +1 -0
  416. package/dist/schema/issues.js +65 -0
  417. package/dist/schema/issues.js.map +1 -0
  418. package/dist/schema/join_requests.d.ts +384 -0
  419. package/dist/schema/join_requests.d.ts.map +1 -0
  420. package/dist/schema/join_requests.js +32 -0
  421. package/dist/schema/join_requests.js.map +1 -0
  422. package/dist/schema/labels.d.ts +110 -0
  423. package/dist/schema/labels.d.ts.map +1 -0
  424. package/dist/schema/labels.js +14 -0
  425. package/dist/schema/labels.js.map +1 -0
  426. package/dist/schema/plugin_company_settings.d.ts +158 -0
  427. package/dist/schema/plugin_company_settings.d.ts.map +1 -0
  428. package/dist/schema/plugin_company_settings.js +34 -0
  429. package/dist/schema/plugin_company_settings.js.map +1 -0
  430. package/dist/schema/plugin_config.d.ts +123 -0
  431. package/dist/schema/plugin_config.d.ts.map +1 -0
  432. package/dist/schema/plugin_config.js +26 -0
  433. package/dist/schema/plugin_config.js.map +1 -0
  434. package/dist/schema/plugin_entities.d.ts +213 -0
  435. package/dist/schema/plugin_entities.d.ts.map +1 -0
  436. package/dist/schema/plugin_entities.js +37 -0
  437. package/dist/schema/plugin_entities.js.map +1 -0
  438. package/dist/schema/plugin_jobs.d.ts +392 -0
  439. package/dist/schema/plugin_jobs.d.ts.map +1 -0
  440. package/dist/schema/plugin_jobs.js +83 -0
  441. package/dist/schema/plugin_jobs.js.map +1 -0
  442. package/dist/schema/plugin_logs.d.ts +125 -0
  443. package/dist/schema/plugin_logs.d.ts.map +1 -0
  444. package/dist/schema/plugin_logs.js +29 -0
  445. package/dist/schema/plugin_logs.js.map +1 -0
  446. package/dist/schema/plugin_state.d.ts +169 -0
  447. package/dist/schema/plugin_state.d.ts.map +1 -0
  448. package/dist/schema/plugin_state.js +68 -0
  449. package/dist/schema/plugin_state.js.map +1 -0
  450. package/dist/schema/plugin_webhooks.d.ts +239 -0
  451. package/dist/schema/plugin_webhooks.d.ts.map +1 -0
  452. package/dist/schema/plugin_webhooks.js +52 -0
  453. package/dist/schema/plugin_webhooks.js.map +1 -0
  454. package/dist/schema/plugins.d.ts +246 -0
  455. package/dist/schema/plugins.d.ts.map +1 -0
  456. package/dist/schema/plugins.js +31 -0
  457. package/dist/schema/plugins.js.map +1 -0
  458. package/dist/schema/principal_permission_grants.d.ts +163 -0
  459. package/dist/schema/principal_permission_grants.d.ts.map +1 -0
  460. package/dist/schema/principal_permission_grants.js +17 -0
  461. package/dist/schema/principal_permission_grants.js.map +1 -0
  462. package/dist/schema/project_goals.d.ts +93 -0
  463. package/dist/schema/project_goals.d.ts.map +1 -0
  464. package/dist/schema/project_goals.js +17 -0
  465. package/dist/schema/project_goals.js.map +1 -0
  466. package/dist/schema/project_workspaces.d.ts +333 -0
  467. package/dist/schema/project_workspaces.d.ts.map +1 -0
  468. package/dist/schema/project_workspaces.js +32 -0
  469. package/dist/schema/project_workspaces.js.map +1 -0
  470. package/dist/schema/projects.d.ts +265 -0
  471. package/dist/schema/projects.d.ts.map +1 -0
  472. package/dist/schema/projects.js +24 -0
  473. package/dist/schema/projects.js.map +1 -0
  474. package/dist/schema/routines.d.ts +1013 -0
  475. package/dist/schema/routines.d.ts.map +1 -0
  476. package/dist/schema/routines.js +87 -0
  477. package/dist/schema/routines.js.map +1 -0
  478. package/dist/schema/workspace_operations.d.ts +367 -0
  479. package/dist/schema/workspace_operations.d.ts.map +1 -0
  480. package/dist/schema/workspace_operations.js +35 -0
  481. package/dist/schema/workspace_operations.js.map +1 -0
  482. package/dist/schema/workspace_runtime_services.d.ts +469 -0
  483. package/dist/schema/workspace_runtime_services.d.ts.map +1 -0
  484. package/dist/schema/workspace_runtime_services.js +44 -0
  485. package/dist/schema/workspace_runtime_services.js.map +1 -0
  486. package/dist/seed.d.ts +2 -0
  487. package/dist/seed.d.ts.map +1 -0
  488. package/dist/seed.js +91 -0
  489. package/dist/seed.js.map +1 -0
  490. package/dist/test-embedded-postgres.d.ts +11 -0
  491. package/dist/test-embedded-postgres.d.ts.map +1 -0
  492. package/dist/test-embedded-postgres.js +111 -0
  493. package/dist/test-embedded-postgres.js.map +1 -0
  494. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Paperclip AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,29 @@
1
+ export type RunDatabaseBackupOptions = {
2
+ connectionString: string;
3
+ backupDir: string;
4
+ retentionDays: number;
5
+ filenamePrefix?: string;
6
+ connectTimeoutSeconds?: number;
7
+ includeMigrationJournal?: boolean;
8
+ excludeTables?: string[];
9
+ nullifyColumns?: Record<string, string[]>;
10
+ };
11
+ export type RunDatabaseBackupResult = {
12
+ backupFile: string;
13
+ sizeBytes: number;
14
+ prunedCount: number;
15
+ };
16
+ export type RunDatabaseRestoreOptions = {
17
+ connectionString: string;
18
+ backupFile: string;
19
+ connectTimeoutSeconds?: number;
20
+ };
21
+ export declare function createBufferedTextFileWriter(filePath: string, maxBufferedBytes?: number): {
22
+ emit(line: string): void;
23
+ close(): Promise<void>;
24
+ abort(): Promise<void>;
25
+ };
26
+ export declare function runDatabaseBackup(opts: RunDatabaseBackupOptions): Promise<RunDatabaseBackupResult>;
27
+ export declare function runDatabaseRestore(opts: RunDatabaseRestoreOptions): Promise<void>;
28
+ export declare function formatDatabaseBackupResult(result: RunDatabaseBackupResult): string;
29
+ //# sourceMappingURL=backup-lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-lib.d.ts","sourceRoot":"","sources":["../src/backup-lib.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAsHF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,SAAoC;eAkDpG,MAAM;;;EA4CpB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4XxG;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAIlF"}
@@ -0,0 +1,553 @@
1
+ import { createWriteStream, existsSync, mkdirSync, readdirSync, statSync, unlinkSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { basename, resolve } from "node:path";
4
+ import postgres from "postgres";
5
+ const DRIZZLE_SCHEMA = "drizzle";
6
+ const DRIZZLE_MIGRATIONS_TABLE = "__drizzle_migrations";
7
+ const DEFAULT_BACKUP_WRITE_BUFFER_BYTES = 1024 * 1024;
8
+ const STATEMENT_BREAKPOINT = "-- zmeel statement breakpoint 69f6f3f1-42fd-46a6-bf17-d1d85f8f3900";
9
+ function sanitizeRestoreErrorMessage(error) {
10
+ if (error && typeof error === "object") {
11
+ const record = error;
12
+ const firstLine = typeof record.message === "string"
13
+ ? record.message.split(/\r?\n/, 1)[0]?.trim()
14
+ : "";
15
+ const detail = typeof record.detail === "string" ? record.detail.trim() : "";
16
+ const severity = typeof record.severity === "string" ? record.severity.trim() : "";
17
+ const message = firstLine || detail || (error instanceof Error ? error.message : String(error));
18
+ return severity ? `${severity}: ${message}` : message;
19
+ }
20
+ return error instanceof Error ? error.message : String(error);
21
+ }
22
+ function timestamp(date = new Date()) {
23
+ const pad = (n) => String(n).padStart(2, "0");
24
+ return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}-${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`;
25
+ }
26
+ function pruneOldBackups(backupDir, retentionDays, filenamePrefix) {
27
+ if (!existsSync(backupDir))
28
+ return 0;
29
+ const safeRetention = Math.max(1, Math.trunc(retentionDays));
30
+ const cutoff = Date.now() - safeRetention * 24 * 60 * 60 * 1000;
31
+ let pruned = 0;
32
+ for (const name of readdirSync(backupDir)) {
33
+ if (!name.startsWith(`${filenamePrefix}-`) || !name.endsWith(".sql"))
34
+ continue;
35
+ const fullPath = resolve(backupDir, name);
36
+ const stat = statSync(fullPath);
37
+ if (stat.mtimeMs < cutoff) {
38
+ unlinkSync(fullPath);
39
+ pruned++;
40
+ }
41
+ }
42
+ return pruned;
43
+ }
44
+ function formatBackupSize(sizeBytes) {
45
+ if (sizeBytes < 1024)
46
+ return `${sizeBytes}B`;
47
+ if (sizeBytes < 1024 * 1024)
48
+ return `${(sizeBytes / 1024).toFixed(1)}K`;
49
+ return `${(sizeBytes / (1024 * 1024)).toFixed(1)}M`;
50
+ }
51
+ function formatSqlLiteral(value) {
52
+ const sanitized = value.replace(/\u0000/g, "");
53
+ let tag = "$zmeel$";
54
+ while (sanitized.includes(tag)) {
55
+ tag = `$zmeel_${Math.random().toString(36).slice(2, 8)}$`;
56
+ }
57
+ return `${tag}${sanitized}${tag}`;
58
+ }
59
+ function normalizeTableNameSet(values) {
60
+ return new Set((values ?? [])
61
+ .map((value) => value.trim())
62
+ .filter((value) => value.length > 0));
63
+ }
64
+ function normalizeNullifyColumnMap(values) {
65
+ const out = new Map();
66
+ if (!values)
67
+ return out;
68
+ for (const [tableName, columns] of Object.entries(values)) {
69
+ const normalizedTable = tableName.trim();
70
+ if (normalizedTable.length === 0)
71
+ continue;
72
+ const normalizedColumns = new Set(columns
73
+ .map((column) => column.trim())
74
+ .filter((column) => column.length > 0));
75
+ if (normalizedColumns.size > 0) {
76
+ out.set(normalizedTable, normalizedColumns);
77
+ }
78
+ }
79
+ return out;
80
+ }
81
+ function quoteIdentifier(value) {
82
+ return `"${value.replaceAll("\"", "\"\"")}"`;
83
+ }
84
+ function quoteQualifiedName(schemaName, objectName) {
85
+ return `${quoteIdentifier(schemaName)}.${quoteIdentifier(objectName)}`;
86
+ }
87
+ function tableKey(schemaName, tableName) {
88
+ return `${schemaName}.${tableName}`;
89
+ }
90
+ export function createBufferedTextFileWriter(filePath, maxBufferedBytes = DEFAULT_BACKUP_WRITE_BUFFER_BYTES) {
91
+ const stream = createWriteStream(filePath, { encoding: "utf8" });
92
+ const flushThreshold = Math.max(1, Math.trunc(maxBufferedBytes));
93
+ let bufferedLines = [];
94
+ let bufferedBytes = 0;
95
+ let firstChunk = true;
96
+ let closed = false;
97
+ let streamError = null;
98
+ let pendingWrite = Promise.resolve();
99
+ stream.on("error", (error) => {
100
+ streamError = error;
101
+ });
102
+ const writeChunk = async (chunk) => {
103
+ if (streamError)
104
+ throw streamError;
105
+ const canContinue = stream.write(chunk);
106
+ if (!canContinue) {
107
+ await new Promise((resolve, reject) => {
108
+ const handleDrain = () => {
109
+ cleanup();
110
+ resolve();
111
+ };
112
+ const handleError = (error) => {
113
+ cleanup();
114
+ reject(error);
115
+ };
116
+ const cleanup = () => {
117
+ stream.off("drain", handleDrain);
118
+ stream.off("error", handleError);
119
+ };
120
+ stream.once("drain", handleDrain);
121
+ stream.once("error", handleError);
122
+ });
123
+ }
124
+ if (streamError)
125
+ throw streamError;
126
+ };
127
+ const flushBufferedLines = () => {
128
+ if (bufferedLines.length === 0)
129
+ return;
130
+ const linesToWrite = bufferedLines;
131
+ bufferedLines = [];
132
+ bufferedBytes = 0;
133
+ const chunkBody = linesToWrite.join("\n");
134
+ const chunk = firstChunk ? chunkBody : `\n${chunkBody}`;
135
+ firstChunk = false;
136
+ pendingWrite = pendingWrite.then(() => writeChunk(chunk));
137
+ };
138
+ return {
139
+ emit(line) {
140
+ if (closed) {
141
+ throw new Error(`Cannot write to closed backup file: ${filePath}`);
142
+ }
143
+ if (streamError)
144
+ throw streamError;
145
+ bufferedLines.push(line);
146
+ bufferedBytes += Buffer.byteLength(line, "utf8") + 1;
147
+ if (bufferedBytes >= flushThreshold) {
148
+ flushBufferedLines();
149
+ }
150
+ },
151
+ async close() {
152
+ if (closed)
153
+ return;
154
+ closed = true;
155
+ flushBufferedLines();
156
+ await pendingWrite;
157
+ await new Promise((resolve, reject) => {
158
+ if (streamError) {
159
+ reject(streamError);
160
+ return;
161
+ }
162
+ stream.end((error) => {
163
+ if (error)
164
+ reject(error);
165
+ else
166
+ resolve();
167
+ });
168
+ });
169
+ if (streamError)
170
+ throw streamError;
171
+ },
172
+ async abort() {
173
+ if (closed)
174
+ return;
175
+ closed = true;
176
+ bufferedLines = [];
177
+ bufferedBytes = 0;
178
+ stream.destroy();
179
+ await pendingWrite.catch(() => { });
180
+ if (existsSync(filePath)) {
181
+ try {
182
+ unlinkSync(filePath);
183
+ }
184
+ catch {
185
+ // Preserve the original backup failure if temporary file cleanup also fails.
186
+ }
187
+ }
188
+ },
189
+ };
190
+ }
191
+ export async function runDatabaseBackup(opts) {
192
+ const filenamePrefix = opts.filenamePrefix ?? "zmeel";
193
+ const retentionDays = Math.max(1, Math.trunc(opts.retentionDays));
194
+ const connectTimeout = Math.max(1, Math.trunc(opts.connectTimeoutSeconds ?? 5));
195
+ const includeMigrationJournal = opts.includeMigrationJournal === true;
196
+ const excludedTableNames = normalizeTableNameSet(opts.excludeTables);
197
+ const nullifiedColumnsByTable = normalizeNullifyColumnMap(opts.nullifyColumns);
198
+ const sql = postgres(opts.connectionString, { max: 1, connect_timeout: connectTimeout });
199
+ mkdirSync(opts.backupDir, { recursive: true });
200
+ const backupFile = resolve(opts.backupDir, `${filenamePrefix}-${timestamp()}.sql`);
201
+ const writer = createBufferedTextFileWriter(backupFile);
202
+ try {
203
+ await sql `SELECT 1`;
204
+ const emit = (line) => writer.emit(line);
205
+ const emitStatement = (statement) => {
206
+ emit(statement);
207
+ emit(STATEMENT_BREAKPOINT);
208
+ };
209
+ const emitStatementBoundary = () => {
210
+ emit(STATEMENT_BREAKPOINT);
211
+ };
212
+ emit("-- zmeel database backup");
213
+ emit(`-- Created: ${new Date().toISOString()}`);
214
+ emit("");
215
+ emitStatement("BEGIN;");
216
+ emitStatement("SET LOCAL session_replication_role = replica;");
217
+ emitStatement("SET LOCAL client_min_messages = warning;");
218
+ emit("");
219
+ const allTables = await sql `
220
+ SELECT table_schema AS schema_name, table_name AS tablename
221
+ FROM information_schema.tables
222
+ WHERE table_type = 'BASE TABLE'
223
+ AND (
224
+ table_schema = 'public'
225
+ OR (${includeMigrationJournal}::boolean AND table_schema = ${DRIZZLE_SCHEMA} AND table_name = ${DRIZZLE_MIGRATIONS_TABLE})
226
+ )
227
+ ORDER BY table_schema, table_name
228
+ `;
229
+ const tables = allTables;
230
+ const includedTableNames = new Set(tables.map(({ schema_name, tablename }) => tableKey(schema_name, tablename)));
231
+ // Get all enums
232
+ const enums = await sql `
233
+ SELECT t.typname, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS labels
234
+ FROM pg_type t
235
+ JOIN pg_enum e ON t.oid = e.enumtypid
236
+ JOIN pg_namespace n ON t.typnamespace = n.oid
237
+ WHERE n.nspname = 'public'
238
+ GROUP BY t.typname
239
+ ORDER BY t.typname
240
+ `;
241
+ for (const e of enums) {
242
+ const labels = e.labels.map((l) => `'${l.replace(/'/g, "''")}'`).join(", ");
243
+ emitStatement(`CREATE TYPE "public"."${e.typname}" AS ENUM (${labels});`);
244
+ }
245
+ if (enums.length > 0)
246
+ emit("");
247
+ const allSequences = await sql `
248
+ SELECT
249
+ s.sequence_schema,
250
+ s.sequence_name,
251
+ s.data_type,
252
+ s.start_value,
253
+ s.minimum_value,
254
+ s.maximum_value,
255
+ s.increment,
256
+ s.cycle_option,
257
+ tblns.nspname AS owner_schema,
258
+ tbl.relname AS owner_table,
259
+ attr.attname AS owner_column
260
+ FROM information_schema.sequences s
261
+ JOIN pg_class seq ON seq.relname = s.sequence_name
262
+ JOIN pg_namespace n ON n.oid = seq.relnamespace AND n.nspname = s.sequence_schema
263
+ LEFT JOIN pg_depend dep ON dep.objid = seq.oid AND dep.deptype = 'a'
264
+ LEFT JOIN pg_class tbl ON tbl.oid = dep.refobjid
265
+ LEFT JOIN pg_namespace tblns ON tblns.oid = tbl.relnamespace
266
+ LEFT JOIN pg_attribute attr ON attr.attrelid = tbl.oid AND attr.attnum = dep.refobjsubid
267
+ WHERE s.sequence_schema = 'public'
268
+ OR (${includeMigrationJournal}::boolean AND s.sequence_schema = ${DRIZZLE_SCHEMA})
269
+ ORDER BY s.sequence_schema, s.sequence_name
270
+ `;
271
+ const sequences = allSequences.filter((seq) => !seq.owner_table || includedTableNames.has(tableKey(seq.owner_schema ?? "public", seq.owner_table)));
272
+ const schemas = new Set();
273
+ for (const table of tables)
274
+ schemas.add(table.schema_name);
275
+ for (const seq of sequences)
276
+ schemas.add(seq.sequence_schema);
277
+ const extraSchemas = [...schemas].filter((schemaName) => schemaName !== "public");
278
+ if (extraSchemas.length > 0) {
279
+ emit("-- Schemas");
280
+ for (const schemaName of extraSchemas) {
281
+ emitStatement(`CREATE SCHEMA IF NOT EXISTS ${quoteIdentifier(schemaName)};`);
282
+ }
283
+ emit("");
284
+ }
285
+ if (sequences.length > 0) {
286
+ emit("-- Sequences");
287
+ for (const seq of sequences) {
288
+ const qualifiedSequenceName = quoteQualifiedName(seq.sequence_schema, seq.sequence_name);
289
+ emitStatement(`DROP SEQUENCE IF EXISTS ${qualifiedSequenceName} CASCADE;`);
290
+ emitStatement(`CREATE SEQUENCE ${qualifiedSequenceName} AS ${seq.data_type} INCREMENT BY ${seq.increment} MINVALUE ${seq.minimum_value} MAXVALUE ${seq.maximum_value} START WITH ${seq.start_value}${seq.cycle_option === "YES" ? " CYCLE" : " NO CYCLE"};`);
291
+ }
292
+ emit("");
293
+ }
294
+ // Get full CREATE TABLE DDL via column info
295
+ for (const { schema_name, tablename } of tables) {
296
+ const qualifiedTableName = quoteQualifiedName(schema_name, tablename);
297
+ const columns = await sql `
298
+ SELECT column_name, data_type, udt_name, is_nullable, column_default,
299
+ character_maximum_length, numeric_precision, numeric_scale
300
+ FROM information_schema.columns
301
+ WHERE table_schema = ${schema_name} AND table_name = ${tablename}
302
+ ORDER BY ordinal_position
303
+ `;
304
+ emit(`-- Table: ${schema_name}.${tablename}`);
305
+ emitStatement(`DROP TABLE IF EXISTS ${qualifiedTableName} CASCADE;`);
306
+ const colDefs = [];
307
+ for (const col of columns) {
308
+ let typeStr;
309
+ if (col.data_type === "USER-DEFINED") {
310
+ typeStr = `"${col.udt_name}"`;
311
+ }
312
+ else if (col.data_type === "ARRAY") {
313
+ typeStr = `${col.udt_name.replace(/^_/, "")}[]`;
314
+ }
315
+ else if (col.data_type === "character varying") {
316
+ typeStr = col.character_maximum_length
317
+ ? `varchar(${col.character_maximum_length})`
318
+ : "varchar";
319
+ }
320
+ else if (col.data_type === "numeric" && col.numeric_precision != null) {
321
+ typeStr =
322
+ col.numeric_scale != null
323
+ ? `numeric(${col.numeric_precision}, ${col.numeric_scale})`
324
+ : `numeric(${col.numeric_precision})`;
325
+ }
326
+ else {
327
+ typeStr = col.data_type;
328
+ }
329
+ let def = ` "${col.column_name}" ${typeStr}`;
330
+ if (col.column_default != null)
331
+ def += ` DEFAULT ${col.column_default}`;
332
+ if (col.is_nullable === "NO")
333
+ def += " NOT NULL";
334
+ colDefs.push(def);
335
+ }
336
+ // Primary key
337
+ const pk = await sql `
338
+ SELECT c.conname AS constraint_name,
339
+ array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
340
+ FROM pg_constraint c
341
+ JOIN pg_class t ON t.oid = c.conrelid
342
+ JOIN pg_namespace n ON n.oid = t.relnamespace
343
+ JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
344
+ WHERE n.nspname = ${schema_name} AND t.relname = ${tablename} AND c.contype = 'p'
345
+ GROUP BY c.conname
346
+ `;
347
+ for (const p of pk) {
348
+ const cols = p.column_names.map((c) => `"${c}"`).join(", ");
349
+ colDefs.push(` CONSTRAINT "${p.constraint_name}" PRIMARY KEY (${cols})`);
350
+ }
351
+ emit(`CREATE TABLE ${qualifiedTableName} (`);
352
+ emit(colDefs.join(",\n"));
353
+ emit(");");
354
+ emitStatementBoundary();
355
+ emit("");
356
+ }
357
+ const ownedSequences = sequences.filter((seq) => seq.owner_table && seq.owner_column);
358
+ if (ownedSequences.length > 0) {
359
+ emit("-- Sequence ownership");
360
+ for (const seq of ownedSequences) {
361
+ emitStatement(`ALTER SEQUENCE ${quoteQualifiedName(seq.sequence_schema, seq.sequence_name)} OWNED BY ${quoteQualifiedName(seq.owner_schema ?? "public", seq.owner_table)}.${quoteIdentifier(seq.owner_column)};`);
362
+ }
363
+ emit("");
364
+ }
365
+ // Foreign keys (after all tables created)
366
+ const allForeignKeys = await sql `
367
+ SELECT
368
+ c.conname AS constraint_name,
369
+ srcn.nspname AS source_schema,
370
+ src.relname AS source_table,
371
+ array_agg(sa.attname ORDER BY array_position(c.conkey, sa.attnum)) AS source_columns,
372
+ tgtn.nspname AS target_schema,
373
+ tgt.relname AS target_table,
374
+ array_agg(ta.attname ORDER BY array_position(c.confkey, ta.attnum)) AS target_columns,
375
+ CASE c.confupdtype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS update_rule,
376
+ CASE c.confdeltype WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END AS delete_rule
377
+ FROM pg_constraint c
378
+ JOIN pg_class src ON src.oid = c.conrelid
379
+ JOIN pg_namespace srcn ON srcn.oid = src.relnamespace
380
+ JOIN pg_class tgt ON tgt.oid = c.confrelid
381
+ JOIN pg_namespace tgtn ON tgtn.oid = tgt.relnamespace
382
+ JOIN pg_attribute sa ON sa.attrelid = src.oid AND sa.attnum = ANY(c.conkey)
383
+ JOIN pg_attribute ta ON ta.attrelid = tgt.oid AND ta.attnum = ANY(c.confkey)
384
+ WHERE c.contype = 'f' AND (
385
+ srcn.nspname = 'public'
386
+ OR (${includeMigrationJournal}::boolean AND srcn.nspname = ${DRIZZLE_SCHEMA})
387
+ )
388
+ GROUP BY c.conname, srcn.nspname, src.relname, tgtn.nspname, tgt.relname, c.confupdtype, c.confdeltype
389
+ ORDER BY srcn.nspname, src.relname, c.conname
390
+ `;
391
+ const fks = allForeignKeys.filter((fk) => includedTableNames.has(tableKey(fk.source_schema, fk.source_table))
392
+ && includedTableNames.has(tableKey(fk.target_schema, fk.target_table)));
393
+ if (fks.length > 0) {
394
+ emit("-- Foreign keys");
395
+ for (const fk of fks) {
396
+ const srcCols = fk.source_columns.map((c) => `"${c}"`).join(", ");
397
+ const tgtCols = fk.target_columns.map((c) => `"${c}"`).join(", ");
398
+ emitStatement(`ALTER TABLE ${quoteQualifiedName(fk.source_schema, fk.source_table)} ADD CONSTRAINT "${fk.constraint_name}" FOREIGN KEY (${srcCols}) REFERENCES ${quoteQualifiedName(fk.target_schema, fk.target_table)} (${tgtCols}) ON UPDATE ${fk.update_rule} ON DELETE ${fk.delete_rule};`);
399
+ }
400
+ emit("");
401
+ }
402
+ // Unique constraints
403
+ const allUniqueConstraints = await sql `
404
+ SELECT c.conname AS constraint_name,
405
+ n.nspname AS schema_name,
406
+ t.relname AS tablename,
407
+ array_agg(a.attname ORDER BY array_position(c.conkey, a.attnum)) AS column_names
408
+ FROM pg_constraint c
409
+ JOIN pg_class t ON t.oid = c.conrelid
410
+ JOIN pg_namespace n ON n.oid = t.relnamespace
411
+ JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
412
+ WHERE c.contype = 'u' AND (
413
+ n.nspname = 'public'
414
+ OR (${includeMigrationJournal}::boolean AND n.nspname = ${DRIZZLE_SCHEMA})
415
+ )
416
+ GROUP BY c.conname, n.nspname, t.relname
417
+ ORDER BY n.nspname, t.relname, c.conname
418
+ `;
419
+ const uniques = allUniqueConstraints.filter((entry) => includedTableNames.has(tableKey(entry.schema_name, entry.tablename)));
420
+ if (uniques.length > 0) {
421
+ emit("-- Unique constraints");
422
+ for (const u of uniques) {
423
+ const cols = u.column_names.map((c) => `"${c}"`).join(", ");
424
+ emitStatement(`ALTER TABLE ${quoteQualifiedName(u.schema_name, u.tablename)} ADD CONSTRAINT "${u.constraint_name}" UNIQUE (${cols});`);
425
+ }
426
+ emit("");
427
+ }
428
+ // Indexes (non-primary, non-unique-constraint)
429
+ const allIndexes = await sql `
430
+ SELECT schemaname AS schema_name, tablename, indexdef
431
+ FROM pg_indexes
432
+ WHERE (
433
+ schemaname = 'public'
434
+ OR (${includeMigrationJournal}::boolean AND schemaname = ${DRIZZLE_SCHEMA})
435
+ )
436
+ AND indexname NOT IN (
437
+ SELECT conname FROM pg_constraint c
438
+ JOIN pg_namespace n ON n.oid = c.connamespace
439
+ WHERE n.nspname = pg_indexes.schemaname
440
+ )
441
+ ORDER BY schemaname, tablename, indexname
442
+ `;
443
+ const indexes = allIndexes.filter((entry) => includedTableNames.has(tableKey(entry.schema_name, entry.tablename)));
444
+ if (indexes.length > 0) {
445
+ emit("-- Indexes");
446
+ for (const idx of indexes) {
447
+ emitStatement(`${idx.indexdef};`);
448
+ }
449
+ emit("");
450
+ }
451
+ // Dump data for each table
452
+ for (const { schema_name, tablename } of tables) {
453
+ const qualifiedTableName = quoteQualifiedName(schema_name, tablename);
454
+ const count = await sql.unsafe(`SELECT count(*)::int AS n FROM ${qualifiedTableName}`);
455
+ if (excludedTableNames.has(tablename) || (count[0]?.n ?? 0) === 0)
456
+ continue;
457
+ // Get column info for this table
458
+ const cols = await sql `
459
+ SELECT column_name, data_type
460
+ FROM information_schema.columns
461
+ WHERE table_schema = ${schema_name} AND table_name = ${tablename}
462
+ ORDER BY ordinal_position
463
+ `;
464
+ const colNames = cols.map((c) => `"${c.column_name}"`).join(", ");
465
+ emit(`-- Data for: ${schema_name}.${tablename} (${count[0].n} rows)`);
466
+ const rows = await sql.unsafe(`SELECT * FROM ${qualifiedTableName}`).values();
467
+ const nullifiedColumns = nullifiedColumnsByTable.get(tablename) ?? new Set();
468
+ for (const row of rows) {
469
+ const values = row.map((rawValue, index) => {
470
+ const columnName = cols[index]?.column_name;
471
+ const val = columnName && nullifiedColumns.has(columnName) ? null : rawValue;
472
+ if (val === null || val === undefined)
473
+ return "NULL";
474
+ if (typeof val === "boolean")
475
+ return val ? "true" : "false";
476
+ if (typeof val === "number")
477
+ return String(val);
478
+ if (val instanceof Date)
479
+ return formatSqlLiteral(val.toISOString());
480
+ if (typeof val === "object")
481
+ return formatSqlLiteral(JSON.stringify(val));
482
+ return formatSqlLiteral(String(val));
483
+ });
484
+ emitStatement(`INSERT INTO ${qualifiedTableName} (${colNames}) VALUES (${values.join(", ")});`);
485
+ }
486
+ emit("");
487
+ }
488
+ // Sequence values
489
+ if (sequences.length > 0) {
490
+ emit("-- Sequence values");
491
+ for (const seq of sequences) {
492
+ const qualifiedSequenceName = quoteQualifiedName(seq.sequence_schema, seq.sequence_name);
493
+ const val = await sql.unsafe(`SELECT last_value::text, is_called FROM ${qualifiedSequenceName}`);
494
+ const skipSequenceValue = seq.owner_table !== null
495
+ && excludedTableNames.has(seq.owner_table);
496
+ if (val[0] && !skipSequenceValue) {
497
+ emitStatement(`SELECT setval('${qualifiedSequenceName.replaceAll("'", "''")}', ${val[0].last_value}, ${val[0].is_called ? "true" : "false"});`);
498
+ }
499
+ }
500
+ emit("");
501
+ }
502
+ emitStatement("COMMIT;");
503
+ emit("");
504
+ await writer.close();
505
+ const sizeBytes = statSync(backupFile).size;
506
+ const prunedCount = pruneOldBackups(opts.backupDir, retentionDays, filenamePrefix);
507
+ return {
508
+ backupFile,
509
+ sizeBytes,
510
+ prunedCount,
511
+ };
512
+ }
513
+ catch (error) {
514
+ await writer.abort();
515
+ throw error;
516
+ }
517
+ finally {
518
+ await sql.end();
519
+ }
520
+ }
521
+ export async function runDatabaseRestore(opts) {
522
+ const connectTimeout = Math.max(1, Math.trunc(opts.connectTimeoutSeconds ?? 5));
523
+ const sql = postgres(opts.connectionString, { max: 1, connect_timeout: connectTimeout });
524
+ try {
525
+ await sql `SELECT 1`;
526
+ const contents = await readFile(opts.backupFile, "utf8");
527
+ const statements = contents
528
+ .split(STATEMENT_BREAKPOINT)
529
+ .map((statement) => statement.trim())
530
+ .filter((statement) => statement.length > 0);
531
+ for (const statement of statements) {
532
+ await sql.unsafe(statement).execute();
533
+ }
534
+ }
535
+ catch (error) {
536
+ const statementPreview = typeof error === "object" && error !== null && typeof error.query === "string"
537
+ ? String(error.query)
538
+ .split(/\r?\n/)
539
+ .map((line) => line.trim())
540
+ .find((line) => line.length > 0 && !line.startsWith("--"))
541
+ : null;
542
+ throw new Error(`Failed to restore ${basename(opts.backupFile)}: ${sanitizeRestoreErrorMessage(error)}${statementPreview ? ` [statement: ${statementPreview.slice(0, 120)}]` : ""}`);
543
+ }
544
+ finally {
545
+ await sql.end();
546
+ }
547
+ }
548
+ export function formatDatabaseBackupResult(result) {
549
+ const size = formatBackupSize(result.sizeBytes);
550
+ const pruned = result.prunedCount > 0 ? `; pruned ${result.prunedCount} old backup(s)` : "";
551
+ return `${result.backupFile} (${size}${pruned})`;
552
+ }
553
+ //# sourceMappingURL=backup-lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-lib.js","sourceRoot":"","sources":["../src/backup-lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=backup-lib.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-lib.test.d.ts","sourceRoot":"","sources":["../src/backup-lib.test.ts"],"names":[],"mappings":""}