@hot-updater/server 0.33.2 → 0.35.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 (216) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +0 -2
  2. package/dist/adapters/drizzle.cjs +195 -2
  3. package/dist/adapters/drizzle.d.cts +7 -4
  4. package/dist/adapters/drizzle.d.mts +7 -4
  5. package/dist/adapters/drizzle.mjs +194 -2
  6. package/dist/adapters/drizzleLazyDB.cjs +53 -0
  7. package/dist/adapters/drizzleLazyDB.mjs +53 -0
  8. package/dist/adapters/kysely.cjs +154 -3
  9. package/dist/adapters/kysely.d.cts +18 -10
  10. package/dist/adapters/kysely.d.mts +18 -10
  11. package/dist/adapters/kysely.mjs +153 -3
  12. package/dist/adapters/mongodb.cjs +183 -2
  13. package/dist/adapters/mongodb.d.cts +5 -4
  14. package/dist/adapters/mongodb.d.mts +5 -4
  15. package/dist/adapters/mongodb.mjs +183 -2
  16. package/dist/adapters/prisma.cjs +200 -2
  17. package/dist/adapters/prisma.d.cts +9 -4
  18. package/dist/adapters/prisma.d.mts +9 -4
  19. package/dist/adapters/prisma.mjs +199 -2
  20. package/dist/{runtime.cjs → createHotUpdaterCore.cjs} +34 -12
  21. package/dist/createHotUpdaterCore.d.cts +25 -0
  22. package/dist/createHotUpdaterCore.d.mts +25 -0
  23. package/dist/{runtime.mjs → createHotUpdaterCore.mjs} +34 -10
  24. package/dist/db/bundleRows.cjs +82 -0
  25. package/dist/db/bundleRows.d.cts +33 -0
  26. package/dist/db/bundleRows.d.mts +33 -0
  27. package/dist/db/bundleRows.mjs +79 -0
  28. package/dist/db/createBundleDiff.cjs +1 -1
  29. package/dist/db/createBundleDiff.mjs +1 -1
  30. package/dist/db/fixedMigrator.cjs +136 -0
  31. package/dist/db/fixedMigrator.mjs +135 -0
  32. package/dist/db/index.cjs +24 -42
  33. package/dist/db/index.d.cts +7 -26
  34. package/dist/db/index.d.mts +7 -26
  35. package/dist/db/index.mjs +19 -41
  36. package/dist/db/pluginCore.cjs +13 -5
  37. package/dist/db/pluginCore.mjs +13 -5
  38. package/dist/db/schema/mongodb.cjs +17 -0
  39. package/dist/db/schema/mongodb.mjs +17 -0
  40. package/dist/db/schema/registry.cjs +23 -0
  41. package/dist/db/schema/registry.mjs +18 -0
  42. package/dist/db/schema/sql.cjs +84 -0
  43. package/dist/db/schema/sql.mjs +78 -0
  44. package/dist/db/schema/sqlMigrations.cjs +74 -0
  45. package/dist/db/schema/sqlMigrations.mjs +73 -0
  46. package/dist/db/schema/sqlOperations.cjs +27 -0
  47. package/dist/db/schema/sqlOperations.mjs +26 -0
  48. package/dist/db/schemaEnhancements.cjs +1 -152
  49. package/dist/db/schemaEnhancements.mjs +1 -149
  50. package/dist/db/schemaGenerators.cjs +222 -0
  51. package/dist/db/schemaGenerators.mjs +220 -0
  52. package/dist/db/schemaReadiness.cjs +23 -0
  53. package/dist/db/schemaReadiness.d.cts +8 -0
  54. package/dist/db/schemaReadiness.d.mts +8 -0
  55. package/dist/db/schemaReadiness.mjs +22 -0
  56. package/dist/db/types.cjs +10 -2
  57. package/dist/db/types.d.cts +58 -14
  58. package/dist/db/types.d.mts +58 -14
  59. package/dist/db/types.mjs +9 -1
  60. package/dist/index.cjs +2 -6
  61. package/dist/index.d.cts +3 -5
  62. package/dist/index.d.mts +3 -5
  63. package/dist/index.mjs +2 -4
  64. package/dist/node.cjs +2 -0
  65. package/dist/node.d.cts +7 -3
  66. package/dist/node.d.mts +7 -3
  67. package/dist/node.mjs +2 -1
  68. package/dist/{packages/server/package.cjs → package.cjs} +1 -1
  69. package/dist/{packages/server/package.mjs → package.mjs} +1 -1
  70. package/dist/schema/dsl.cjs +86 -0
  71. package/dist/schema/dsl.mjs +73 -0
  72. package/dist/schema/index.cjs +13 -0
  73. package/dist/schema/index.mjs +13 -0
  74. package/dist/schema/settings.cjs +9 -0
  75. package/dist/schema/settings.mjs +9 -0
  76. package/dist/schema/types.cjs +6 -0
  77. package/dist/schema/types.mjs +5 -0
  78. package/dist/schema/v0_21_0.cjs +33 -18
  79. package/dist/schema/v0_21_0.mjs +32 -18
  80. package/dist/schema/v0_29_0.cjs +40 -20
  81. package/dist/schema/v0_29_0.mjs +39 -20
  82. package/dist/schema/v0_31_0.cjs +77 -43
  83. package/dist/schema/v0_31_0.mjs +75 -43
  84. package/dist/types/index.d.cts +1 -1
  85. package/dist/types/index.d.mts +1 -1
  86. package/dist/version.cjs +1 -1
  87. package/dist/version.mjs +1 -1
  88. package/package.json +34 -20
  89. package/src/adapters/drizzle.spec.ts +76 -0
  90. package/src/adapters/drizzle.ts +328 -12
  91. package/src/adapters/drizzleLazyDB.ts +151 -0
  92. package/src/adapters/kysely.spec.ts +107 -0
  93. package/src/adapters/kysely.ts +349 -14
  94. package/src/adapters/mongodb.ts +298 -15
  95. package/src/adapters/prisma.ts +337 -12
  96. package/src/createHotUpdaterCore.ts +168 -0
  97. package/src/db/bundleRows.ts +140 -0
  98. package/src/db/fixedMigrator.spec.ts +89 -0
  99. package/src/db/fixedMigrator.ts +288 -0
  100. package/src/db/hotUpdaterSchema.ts +6 -0
  101. package/src/db/index.spec.ts +983 -19
  102. package/src/db/index.ts +37 -108
  103. package/src/db/pluginCore.spec.ts +17 -11
  104. package/src/db/pluginCore.ts +15 -6
  105. package/src/db/schema/definitions.ts +1 -0
  106. package/src/db/schema/mongodb.ts +26 -0
  107. package/src/db/schema/registry.ts +55 -0
  108. package/src/db/schema/sql.ts +200 -0
  109. package/src/db/schema/sqlMigrations.ts +219 -0
  110. package/src/db/schema/sqlOperations.ts +62 -0
  111. package/src/db/schema/types.ts +1 -0
  112. package/src/db/schemaEnhancements.ts +0 -405
  113. package/src/db/schemaGenerators.ts +382 -0
  114. package/src/db/schemaReadiness.ts +33 -0
  115. package/src/db/types.ts +69 -25
  116. package/src/handler-standalone.integration.spec.ts +3 -2
  117. package/src/index.ts +9 -3
  118. package/src/node.spec.ts +50 -0
  119. package/src/node.ts +7 -3
  120. package/src/runtime.spec.ts +132 -1
  121. package/src/schema/dsl-all-versions.spec.ts +26 -0
  122. package/src/schema/dsl.ts +148 -0
  123. package/src/schema/index.ts +16 -0
  124. package/src/schema/settings.ts +15 -0
  125. package/src/schema/types.ts +73 -0
  126. package/src/schema/v0_21_0.ts +48 -18
  127. package/src/schema/v0_29_0.ts +58 -22
  128. package/src/schema/v0_31_0.spec.ts +73 -0
  129. package/src/schema/v0_31_0.ts +116 -54
  130. package/src/types/index.ts +1 -1
  131. package/dist/_virtual/_rolldown/runtime.mjs +0 -6
  132. package/dist/calculatePagination.cjs +0 -25
  133. package/dist/calculatePagination.mjs +0 -25
  134. package/dist/db/ormCore.cjs +0 -577
  135. package/dist/db/ormCore.d.cts +0 -110
  136. package/dist/db/ormCore.d.mts +0 -110
  137. package/dist/db/ormCore.mjs +0 -575
  138. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.cjs +0 -112
  139. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.mjs +0 -108
  140. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.cjs +0 -22
  141. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.mjs +0 -18
  142. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.cjs +0 -219
  143. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.mjs +0 -214
  144. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.cjs +0 -275
  145. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.mjs +0 -270
  146. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.cjs +0 -17
  147. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.mjs +0 -13
  148. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.cjs +0 -69
  149. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.mjs +0 -65
  150. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/column.cjs +0 -52
  151. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/column.mjs +0 -52
  152. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/entity.cjs +0 -16
  153. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/entity.mjs +0 -15
  154. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/pg-core/columns/enum.cjs +0 -7
  155. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/pg-core/columns/enum.mjs +0 -7
  156. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/conditions.cjs +0 -92
  157. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/conditions.mjs +0 -78
  158. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/select.cjs +0 -11
  159. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/select.mjs +0 -10
  160. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/sql.cjs +0 -383
  161. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/sql.mjs +0 -366
  162. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/subquery.cjs +0 -17
  163. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/subquery.mjs +0 -17
  164. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.cjs +0 -60
  165. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.mjs +0 -59
  166. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.utils.cjs +0 -4
  167. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.utils.mjs +0 -4
  168. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/tracing.cjs +0 -6
  169. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/tracing.mjs +0 -6
  170. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/view-common.cjs +0 -4
  171. package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/view-common.mjs +0 -4
  172. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.cjs +0 -383
  173. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.d.cts +0 -12
  174. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.d.mts +0 -12
  175. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.mjs +0 -383
  176. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/kysely/index.cjs +0 -4
  177. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/kysely/index.mjs +0 -5
  178. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.cjs +0 -339
  179. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.d.cts +0 -70
  180. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.d.mts +0 -70
  181. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.mjs +0 -339
  182. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-7PZK4ONR.cjs +0 -57
  183. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-7PZK4ONR.mjs +0 -56
  184. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-C6OTUURW.cjs +0 -330
  185. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-C6OTUURW.mjs +0 -326
  186. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-CHTIKPQU.cjs +0 -166
  187. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-CHTIKPQU.mjs +0 -163
  188. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-GUE4GMNC.cjs +0 -14
  189. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-GUE4GMNC.mjs +0 -13
  190. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LHHP6UVP.cjs +0 -24
  191. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LHHP6UVP.mjs +0 -24
  192. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LVCPMTAT.cjs +0 -1190
  193. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LVCPMTAT.mjs +0 -1189
  194. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-PK2W2SQ7.cjs +0 -197
  195. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-PK2W2SQ7.mjs +0 -197
  196. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZEQMAIFI.cjs +0 -410
  197. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZEQMAIFI.mjs +0 -400
  198. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZOCGSAWS.cjs +0 -213
  199. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZOCGSAWS.mjs +0 -212
  200. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/create-tg0451Y_.d.cts +0 -285
  201. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/create-tg0451Y_.d.mts +0 -285
  202. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index-CMqePMTF.d.cts +0 -45
  203. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index-CMqePMTF.d.mts +0 -45
  204. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.cjs +0 -69
  205. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.d.cts +0 -49
  206. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.d.mts +0 -49
  207. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.mjs +0 -67
  208. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/query/index.d.cts +0 -156
  209. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/query/index.d.mts +0 -156
  210. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/schema/index.cjs +0 -1
  211. package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/schema/index.mjs +0 -2
  212. package/dist/runtime.d.cts +0 -22
  213. package/dist/runtime.d.mts +0 -22
  214. package/src/db/ormCore.ts +0 -1059
  215. package/src/db/ormUpdateCheck.bench.ts +0 -262
  216. package/src/runtime.ts +0 -106
@@ -0,0 +1,219 @@
1
+ import { hotUpdaterSchemaVersions } from "../../schema";
2
+ import type {
3
+ HotUpdaterCheckSchema,
4
+ HotUpdaterForeignKeySchema,
5
+ HotUpdaterTableSchema,
6
+ } from "../../schema/types";
7
+ import type { ORMSQLProvider, RelationMode } from "../types";
8
+ import {
9
+ getSchemaVersionIndex,
10
+ schemaIndexAppliesToProvider,
11
+ } from "./registry";
12
+ import {
13
+ createIndexSql,
14
+ createTableStatement,
15
+ sqlColumnDefinition,
16
+ } from "./sql";
17
+
18
+ const nameMap = <T extends { readonly name: string }>(
19
+ items: readonly T[] | undefined,
20
+ ): Map<string, T> => new Map((items ?? []).map((item) => [item.name, item]));
21
+
22
+ const columnMap = (
23
+ table: HotUpdaterTableSchema,
24
+ ): Map<string, { readonly ormName: string }> =>
25
+ new Map(table.columns.map((column) => [column.ormName, column]));
26
+
27
+ const stableStringify = (value: unknown): string => JSON.stringify(value);
28
+
29
+ const assertSameSchemaValue = (
30
+ location: string,
31
+ left: unknown,
32
+ right: unknown,
33
+ ) => {
34
+ if (stableStringify(left) !== stableStringify(right)) {
35
+ throw new Error(
36
+ `Unsupported Hot Updater schema change at ${location}. Add an explicit migration step before changing existing schema metadata.`,
37
+ );
38
+ }
39
+ };
40
+
41
+ const compareNamedItems = <T extends { readonly name: string }>(
42
+ location: string,
43
+ previousItems: readonly T[] | undefined,
44
+ nextItems: readonly T[] | undefined,
45
+ ) => {
46
+ const nextItemsByName = nameMap(nextItems);
47
+ for (const previousItem of previousItems ?? []) {
48
+ const nextItem = nextItemsByName.get(previousItem.name);
49
+ if (!nextItem) {
50
+ throw new Error(
51
+ `Unsupported Hot Updater schema change at ${location}.${previousItem.name}. Removing schema metadata requires an explicit migration step.`,
52
+ );
53
+ }
54
+ assertSameSchemaValue(
55
+ `${location}.${previousItem.name}`,
56
+ previousItem,
57
+ nextItem,
58
+ );
59
+ }
60
+ };
61
+
62
+ const assertNoUnsupportedTableChanges = (
63
+ previous: HotUpdaterTableSchema,
64
+ next: HotUpdaterTableSchema,
65
+ provider: ORMSQLProvider,
66
+ ) => {
67
+ const nextColumns = columnMap(next);
68
+ for (const previousColumn of previous.columns) {
69
+ const nextColumn = nextColumns.get(previousColumn.ormName);
70
+ if (!nextColumn) {
71
+ throw new Error(
72
+ `Unsupported Hot Updater schema change at ${previous.ormName}.${previousColumn.ormName}. Dropping columns requires an explicit migration step.`,
73
+ );
74
+ }
75
+ assertSameSchemaValue(
76
+ `${previous.ormName}.${previousColumn.ormName}`,
77
+ previousColumn,
78
+ nextColumn,
79
+ );
80
+ }
81
+ compareNamedItems(
82
+ `${previous.ormName}.indexes`,
83
+ previous.indexes?.filter((index) =>
84
+ schemaIndexAppliesToProvider(index, provider),
85
+ ),
86
+ next.indexes?.filter((index) =>
87
+ schemaIndexAppliesToProvider(index, provider),
88
+ ),
89
+ );
90
+ compareNamedItems(`${previous.ormName}.checks`, previous.checks, next.checks);
91
+ compareNamedItems(
92
+ `${previous.ormName}.foreignKeys`,
93
+ previous.foreignKeys,
94
+ next.foreignKeys,
95
+ );
96
+ };
97
+
98
+ const createForeignKeySql = (
99
+ table: HotUpdaterTableSchema,
100
+ foreignKey: HotUpdaterForeignKeySchema,
101
+ ): string =>
102
+ `alter table ${table.ormName} add constraint ${foreignKey.name} foreign key (${foreignKey.columns.join(", ")}) references ${foreignKey.referencedTable}(${foreignKey.referencedColumns.join(", ")}) on update ${foreignKey.onUpdate} on delete ${foreignKey.onDelete}`;
103
+
104
+ const createCheckSql = (
105
+ table: HotUpdaterTableSchema,
106
+ check: HotUpdaterCheckSchema,
107
+ ): string =>
108
+ `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
109
+
110
+ const createAddedTableSql = (
111
+ table: HotUpdaterTableSchema,
112
+ provider: ORMSQLProvider,
113
+ relationMode: RelationMode,
114
+ ): readonly string[] => [
115
+ createTableStatement(table, provider),
116
+ ...(table.indexes ?? [])
117
+ .filter((index) => schemaIndexAppliesToProvider(index, provider))
118
+ .map((index) => createIndexSql(table, index, provider)),
119
+ ...(provider === "sqlite"
120
+ ? []
121
+ : (table.checks ?? []).map((check) => createCheckSql(table, check))),
122
+ ...(relationMode === "foreign-keys" && provider !== "sqlite"
123
+ ? (table.foreignKeys ?? []).map((foreignKey) =>
124
+ createForeignKeySql(table, foreignKey),
125
+ )
126
+ : []),
127
+ ];
128
+
129
+ const createChangedTableSql = (
130
+ previous: HotUpdaterTableSchema,
131
+ next: HotUpdaterTableSchema,
132
+ provider: ORMSQLProvider,
133
+ relationMode: RelationMode,
134
+ ): readonly string[] => {
135
+ assertNoUnsupportedTableChanges(previous, next, provider);
136
+ const previousColumns = columnMap(previous);
137
+ const previousIndexes = nameMap(
138
+ previous.indexes?.filter((index) =>
139
+ schemaIndexAppliesToProvider(index, provider),
140
+ ),
141
+ );
142
+ const previousChecks = nameMap(previous.checks);
143
+ const previousForeignKeys = nameMap(previous.foreignKeys);
144
+
145
+ return [
146
+ ...next.columns
147
+ .filter((column) => !previousColumns.has(column.ormName))
148
+ .map(
149
+ (column) =>
150
+ `alter table ${next.ormName} add column ${sqlColumnDefinition(
151
+ next,
152
+ column,
153
+ provider,
154
+ )}`,
155
+ ),
156
+ ...(next.indexes ?? [])
157
+ .filter((index) => schemaIndexAppliesToProvider(index, provider))
158
+ .filter((index) => !previousIndexes.has(index.name))
159
+ .map((index) => createIndexSql(next, index, provider)),
160
+ ...(provider === "sqlite"
161
+ ? []
162
+ : (next.checks ?? [])
163
+ .filter((check) => !previousChecks.has(check.name))
164
+ .map((check) => createCheckSql(next, check))),
165
+ ...(relationMode === "foreign-keys" && provider !== "sqlite"
166
+ ? (next.foreignKeys ?? [])
167
+ .filter((foreignKey) => !previousForeignKeys.has(foreignKey.name))
168
+ .map((foreignKey) => createForeignKeySql(next, foreignKey))
169
+ : []),
170
+ ];
171
+ };
172
+
173
+ export const createSchemaMigrationSql = (
174
+ fromVersion: string,
175
+ toVersion: string,
176
+ provider: ORMSQLProvider,
177
+ relationMode: RelationMode = "foreign-keys",
178
+ ): readonly string[] => {
179
+ const fromIndex = getSchemaVersionIndex(fromVersion);
180
+ const toIndex = getSchemaVersionIndex(toVersion);
181
+ if (fromIndex === -1) {
182
+ throw new Error(`Unsupported Hot Updater schema version: ${fromVersion}`);
183
+ }
184
+ if (toIndex === -1) {
185
+ throw new Error(`Unsupported Hot Updater schema version: ${toVersion}`);
186
+ }
187
+ if (fromIndex > toIndex) {
188
+ throw new Error(`Cannot migrate Hot Updater schema down to ${toVersion}.`);
189
+ }
190
+
191
+ const statements: string[] = [];
192
+ for (let index = fromIndex + 1; index <= toIndex; index += 1) {
193
+ const previous = hotUpdaterSchemaVersions[index - 1]!;
194
+ const next = hotUpdaterSchemaVersions[index]!;
195
+ const previousTables = new Map(
196
+ previous.tables.map((table) => [table.ormName, table]),
197
+ );
198
+ for (const table of next.tables) {
199
+ if (table.internal) continue;
200
+ const previousTable = previousTables.get(table.ormName);
201
+ statements.push(
202
+ ...(previousTable
203
+ ? createChangedTableSql(previousTable, table, provider, relationMode)
204
+ : createAddedTableSql(table, provider, relationMode)),
205
+ );
206
+ }
207
+ }
208
+ return statements;
209
+ };
210
+
211
+ export const createV029AlterSql = (
212
+ provider: ORMSQLProvider,
213
+ ): readonly string[] => createSchemaMigrationSql("0.21.0", "0.29.0", provider);
214
+
215
+ export const createV031AlterSql = (
216
+ provider: ORMSQLProvider,
217
+ relationMode: RelationMode = "foreign-keys",
218
+ ): readonly string[] =>
219
+ createSchemaMigrationSql("0.29.0", "0.31.0", provider, relationMode);
@@ -0,0 +1,62 @@
1
+ import {
2
+ HOT_UPDATER_SCHEMA_VERSION,
3
+ HOT_UPDATER_SETTINGS_TABLE,
4
+ } from "../../schema/types";
5
+ import type {
6
+ MigrationOperation,
7
+ ORMSQLProvider,
8
+ RelationMode,
9
+ } from "../types";
10
+ import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry";
11
+ import {
12
+ createCheckSql,
13
+ createForeignKeySql,
14
+ createIndexSql,
15
+ hotUpdaterCreateTableOperations,
16
+ } from "./sql";
17
+
18
+ export const getSettingsInsertSql = (provider: ORMSQLProvider) => {
19
+ if (provider === "mysql") {
20
+ return `insert into ${HOT_UPDATER_SETTINGS_TABLE} (\`key\`, value) values ('version', '${HOT_UPDATER_SCHEMA_VERSION}') on duplicate key update value = '${HOT_UPDATER_SCHEMA_VERSION}'`;
21
+ }
22
+ return `insert into ${HOT_UPDATER_SETTINGS_TABLE} (key, value) values ('version', '${HOT_UPDATER_SCHEMA_VERSION}') on conflict (key) do update set value = '${HOT_UPDATER_SCHEMA_VERSION}'`;
23
+ };
24
+
25
+ export const createSqlCreateOperations = (
26
+ provider: ORMSQLProvider,
27
+ relationMode: RelationMode,
28
+ settingsOperation?: MigrationOperation,
29
+ ): MigrationOperation[] => [
30
+ ...hotUpdaterCreateTableOperations,
31
+ ...hotUpdaterSchema.tables.flatMap((table) =>
32
+ (table.indexes ?? [])
33
+ .filter((index) => schemaIndexAppliesToProvider(index, provider))
34
+ .map(
35
+ (index): MigrationOperation => ({
36
+ type: "custom",
37
+ sql: createIndexSql(table, index, provider),
38
+ }),
39
+ ),
40
+ ),
41
+ ...(provider === "sqlite"
42
+ ? []
43
+ : hotUpdaterSchema.tables.flatMap((table) =>
44
+ (table.checks ?? []).map(
45
+ (check): MigrationOperation => ({
46
+ type: "custom",
47
+ sql: createCheckSql(table, check),
48
+ }),
49
+ ),
50
+ )),
51
+ ...(relationMode === "foreign-keys" && provider !== "sqlite"
52
+ ? hotUpdaterSchema.tables.flatMap((table) =>
53
+ (table.foreignKeys ?? []).map(
54
+ (foreignKey): MigrationOperation => ({
55
+ type: "custom",
56
+ sql: createForeignKeySql(table, foreignKey),
57
+ }),
58
+ ),
59
+ )
60
+ : []),
61
+ ...(settingsOperation ? [settingsOperation] : []),
62
+ ];
@@ -0,0 +1 @@
1
+ export * from "../../schema/types";
@@ -4,35 +4,6 @@ import {
4
4
  isValidCohort,
5
5
  type Bundle,
6
6
  } from "@hot-updater/core";
7
- import semver from "semver";
8
-
9
- import type { ORMProvider, ORMSQLProvider } from "./types";
10
-
11
- type AdapterName = "drizzle" | "prisma" | string;
12
-
13
- type MigrationResultLike = {
14
- execute: () => Promise<void>;
15
- getSQL?: () => string;
16
- operations: Array<Record<string, unknown>>;
17
- };
18
-
19
- type SchemaVersionLike = {
20
- version: string;
21
- };
22
-
23
- type MigratorLike = {
24
- down: (options?: undefined) => Promise<MigrationResultLike>;
25
- getNameVariants: () => Promise<unknown>;
26
- getVersion: () => Promise<string | undefined>;
27
- migrateTo: (
28
- version: string,
29
- options?: undefined,
30
- ) => Promise<MigrationResultLike>;
31
- migrateToLatest: (options?: undefined) => Promise<MigrationResultLike>;
32
- next: () => Promise<SchemaVersionLike | undefined>;
33
- previous: () => Promise<SchemaVersionLike | undefined>;
34
- up: (options?: undefined) => Promise<MigrationResultLike>;
35
- };
36
7
 
37
8
  const normalizeNullableString = (value: string | null | undefined) => {
38
9
  if (value === null || value === undefined) {
@@ -43,277 +14,6 @@ const normalizeNullableString = (value: string | null | undefined) => {
43
14
  return normalized.length > 0 ? normalized : null;
44
15
  };
45
16
 
46
- const appendPrismaModelLines = (
47
- code: string,
48
- modelName: string,
49
- lines: string[],
50
- options?: {
51
- position?: "beforeAttributes" | "end";
52
- },
53
- ) => {
54
- const pattern = new RegExp(
55
- `model ${modelName} \\{\\n([\\s\\S]*?)\\n\\}`,
56
- "m",
57
- );
58
- return code.replace(pattern, (full, body: string) => {
59
- const bodyLines = body.split("\n");
60
- const existingLines = new Set(
61
- bodyLines.map((line) => line.trim()).filter(Boolean),
62
- );
63
- const additions = lines
64
- .filter((line) => !existingLines.has(line))
65
- .map((line) => ` ${line}`);
66
-
67
- if (additions.length === 0) {
68
- return full;
69
- }
70
-
71
- if (options?.position === "beforeAttributes") {
72
- const insertIndex = bodyLines.findIndex((line) =>
73
- line.trim().startsWith("@@"),
74
- );
75
- if (insertIndex === -1) {
76
- bodyLines.push(...additions);
77
- } else {
78
- bodyLines.splice(insertIndex, 0, ...additions);
79
- }
80
-
81
- return `model ${modelName} {\n${bodyLines.join("\n")}\n}`;
82
- }
83
-
84
- return `model ${modelName} {\n${body}\n${additions.join("\n")}\n}`;
85
- });
86
- };
87
-
88
- const getPrismaDatasourceProvider = (code: string): ORMProvider | null => {
89
- const match = code.match(
90
- /datasource\s+\w+\s+\{[\s\S]*?provider\s*=\s*"([^"]+)"[\s\S]*?\}/m,
91
- );
92
- return (match?.[1] as ORMProvider | undefined) ?? null;
93
- };
94
-
95
- const ensureDrizzleIndexImport = (code: string) =>
96
- code.replace(
97
- /import \{ ([^}]+) \} from "(drizzle-orm\/[^"]+-core)"/,
98
- (_full, imports: string, modulePath: string) => {
99
- const values = imports
100
- .split(",")
101
- .map((value) => value.trim())
102
- .filter(Boolean);
103
-
104
- if (!values.includes("index")) {
105
- values.push("index");
106
- }
107
-
108
- return `import { ${values.join(", ")} } from "${modulePath}"`;
109
- },
110
- );
111
-
112
- const ensureDrizzleMetadataDefault = (code: string) =>
113
- code
114
- .replace(
115
- /metadata: json\("metadata"\)\.notNull\(\)(?!\.default\(\{\}\))/,
116
- 'metadata: json("metadata").notNull().default({})',
117
- )
118
- .replace(
119
- /metadata: blob\("metadata", \{ mode: "json" \}\)\.notNull\(\)(?!\.default\(\{\}\))/,
120
- 'metadata: blob("metadata", { mode: "json" }).notNull().default({})',
121
- );
122
-
123
- const removeUnusedDrizzleRelationMany = (code: string) =>
124
- code.replace(
125
- /export const bundle_patchesRelations = relations\(bundle_patches, \(\{ one, many \}\) => \(\{/,
126
- "export const bundle_patchesRelations = relations(bundle_patches, ({ one }) => ({",
127
- );
128
-
129
- const ensureTrailingComma = (line: string) => {
130
- const trimmed = line.trim();
131
- if (!trimmed || trimmed.endsWith(",") || trimmed.endsWith("[")) {
132
- return line;
133
- }
134
-
135
- return `${line},`;
136
- };
137
-
138
- const updateDrizzleTableBlock = (
139
- code: string,
140
- tableName: string,
141
- callbackLines: string[],
142
- ) => {
143
- const blockStart = code.indexOf(`export const ${tableName} = `);
144
- if (blockStart === -1) {
145
- return code;
146
- }
147
-
148
- const nextBlockStart = code.indexOf("\n\nexport const ", blockStart + 1);
149
- const blockEnd = nextBlockStart === -1 ? code.length : nextBlockStart;
150
- const block = code.slice(blockStart, blockEnd);
151
-
152
- if (block.includes(", (table) => [")) {
153
- const callbackPattern = /, \(table\) => \[\n([\s\S]*?)\n\]\)\s*$/;
154
- const match = block.match(callbackPattern);
155
-
156
- if (!match) {
157
- return code;
158
- }
159
-
160
- const callbackBody = match[1] ?? "";
161
- const existingLines = callbackBody
162
- .split("\n")
163
- .map((line) => line.trim())
164
- .filter(Boolean);
165
- const additions = callbackLines.filter(
166
- (line) => !existingLines.includes(line),
167
- );
168
-
169
- if (additions.length === 0) {
170
- return code;
171
- }
172
-
173
- const callbackBodyLines = callbackBody.split("\n");
174
- for (let index = callbackBodyLines.length - 1; index >= 0; index -= 1) {
175
- if (callbackBodyLines[index]?.trim()) {
176
- callbackBodyLines[index] = ensureTrailingComma(
177
- callbackBodyLines[index]!,
178
- );
179
- break;
180
- }
181
- }
182
-
183
- const nextCallbackBody = [
184
- ...callbackBodyLines,
185
- ...additions.map((line) => ` ${line}`),
186
- ].join("\n");
187
- const nextBlock = block.replace(
188
- callbackPattern,
189
- `, (table) => [\n${nextCallbackBody}\n])`,
190
- );
191
-
192
- return `${code.slice(0, blockStart)}${nextBlock}${code.slice(blockEnd)}`;
193
- }
194
-
195
- const callbackBody = callbackLines.map((line) => ` ${line}`).join("\n");
196
- const nextBlock = block.replace(
197
- /\n\}\)\s*$/,
198
- `\n}, (table) => [\n${callbackBody}\n])`,
199
- );
200
-
201
- return `${code.slice(0, blockStart)}${nextBlock}${code.slice(blockEnd)}`;
202
- };
203
-
204
- const addCustomSqlOperation = (
205
- result: MigrationResultLike,
206
- sql: string,
207
- ): void => {
208
- const normalizedSql = sql.trim();
209
- const alreadyAdded = result.operations.some((operation) => {
210
- return (
211
- operation["type"] === "custom" &&
212
- typeof operation["sql"] === "string" &&
213
- operation["sql"].trim() === normalizedSql
214
- );
215
- });
216
-
217
- if (!alreadyAdded) {
218
- result.operations.push({
219
- type: "custom",
220
- sql: normalizedSql,
221
- });
222
- }
223
- };
224
-
225
- const getMigrationCustomSql = (
226
- provider: ORMSQLProvider,
227
- targetVersion: string,
228
- ): string[] => {
229
- const statements: string[] = [];
230
- const hasRolloutColumns = semver.gte(targetVersion, "0.29.0");
231
- const hasPatchTable = semver.gte(targetVersion, "0.31.0");
232
-
233
- if (provider === "postgresql") {
234
- statements.push(
235
- "create index bundles_target_app_version_idx on bundles(target_app_version)",
236
- "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash)",
237
- "create index bundles_channel_idx on bundles(channel)",
238
- "alter table bundles add constraint check_version_or_fingerprint check ((target_app_version is not null) or (fingerprint_hash is not null))",
239
- );
240
-
241
- if (hasRolloutColumns) {
242
- statements.push(
243
- "create index bundles_rollout_idx on bundles(rollout_cohort_count)",
244
- "alter table bundles add constraint bundles_rollout_cohort_count_check check (rollout_cohort_count >= 0 and rollout_cohort_count <= 1000)",
245
- );
246
- }
247
-
248
- if (hasPatchTable) {
249
- statements.push(
250
- "create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)",
251
- "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)",
252
- );
253
- }
254
-
255
- return statements;
256
- }
257
-
258
- if (provider === "mysql") {
259
- statements.push(
260
- "create index bundles_target_app_version_idx on bundles(target_app_version(255))",
261
- "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash(255))",
262
- "create index bundles_channel_idx on bundles(channel(255))",
263
- "alter table bundles add constraint check_version_or_fingerprint check ((target_app_version is not null) or (fingerprint_hash is not null))",
264
- );
265
-
266
- if (hasRolloutColumns) {
267
- statements.push(
268
- "create index bundles_rollout_idx on bundles(rollout_cohort_count)",
269
- "alter table bundles add constraint bundles_rollout_cohort_count_check check (rollout_cohort_count >= 0 and rollout_cohort_count <= 1000)",
270
- );
271
- }
272
-
273
- if (hasPatchTable) {
274
- statements.push(
275
- "create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)",
276
- "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)",
277
- );
278
- }
279
-
280
- return statements;
281
- }
282
-
283
- statements.push(
284
- "create index bundles_target_app_version_idx on bundles(target_app_version)",
285
- "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash)",
286
- "create index bundles_channel_idx on bundles(channel)",
287
- );
288
-
289
- if (hasRolloutColumns) {
290
- statements.push(
291
- "create index bundles_rollout_idx on bundles(rollout_cohort_count)",
292
- );
293
- }
294
-
295
- if (hasPatchTable) {
296
- statements.push(
297
- "create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)",
298
- "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)",
299
- );
300
- }
301
-
302
- return statements;
303
- };
304
-
305
- const enhanceUpwardMigrationResult = (
306
- result: MigrationResultLike,
307
- provider: ORMSQLProvider,
308
- targetVersion: string,
309
- ) => {
310
- for (const sql of getMigrationCustomSql(provider, targetVersion)) {
311
- addCustomSqlOperation(result, sql);
312
- }
313
-
314
- return result;
315
- };
316
-
317
17
  export const assertBundlePersistenceConstraints = (
318
18
  bundle: Pick<
319
19
  Bundle,
@@ -353,108 +53,3 @@ export const assertBundlePersistenceConstraints = (
353
53
  }
354
54
  }
355
55
  };
356
-
357
- export const enhanceGeneratedSchema = (
358
- adapterName: AdapterName,
359
- code: string,
360
- provider?: ORMProvider,
361
- ) => {
362
- if (adapterName === "prisma") {
363
- const datasourceProvider = provider ?? getPrismaDatasourceProvider(code);
364
- let nextCode = code;
365
-
366
- if (datasourceProvider !== "sqlite") {
367
- nextCode = nextCode.replace(
368
- /^(\s*metadata\s+Json)(?!\s+@default\("?\{\}"?\))(.*)$/m,
369
- '$1 @default("{}")$2',
370
- );
371
- }
372
-
373
- nextCode = appendPrismaModelLines(
374
- nextCode,
375
- "bundles",
376
- [
377
- 'patches bundle_patches[] @relation("bundle_patches_bundles_patches")',
378
- 'baseForPatches bundle_patches[] @relation("bundle_patches_bundles_baseForPatches")',
379
- ],
380
- {
381
- position: "beforeAttributes",
382
- },
383
- );
384
- nextCode = appendPrismaModelLines(nextCode, "bundles", [
385
- '@@index([target_app_version], map: "bundles_target_app_version_idx")',
386
- '@@index([fingerprint_hash], map: "bundles_fingerprint_hash_idx")',
387
- '@@index([channel], map: "bundles_channel_idx")',
388
- '@@index([rollout_cohort_count], map: "bundles_rollout_idx")',
389
- ]);
390
- return appendPrismaModelLines(nextCode, "bundle_patches", [
391
- '@@index([bundle_id], map: "bundle_patches_bundle_id_idx")',
392
- '@@index([base_bundle_id], map: "bundle_patches_base_bundle_id_idx")',
393
- ]);
394
- }
395
-
396
- if (adapterName === "drizzle") {
397
- let nextCode = ensureDrizzleMetadataDefault(code);
398
- nextCode = removeUnusedDrizzleRelationMany(nextCode);
399
- nextCode = ensureDrizzleIndexImport(nextCode);
400
- nextCode = updateDrizzleTableBlock(nextCode, "bundles", [
401
- 'index("bundles_target_app_version_idx").on(table.target_app_version),',
402
- 'index("bundles_fingerprint_hash_idx").on(table.fingerprint_hash),',
403
- 'index("bundles_channel_idx").on(table.channel),',
404
- 'index("bundles_rollout_idx").on(table.rollout_cohort_count),',
405
- ]);
406
- nextCode = updateDrizzleTableBlock(nextCode, "bundle_patches", [
407
- 'index("bundle_patches_bundle_id_idx").on(table.bundle_id),',
408
- 'index("bundle_patches_base_bundle_id_idx").on(table.base_bundle_id),',
409
- ]);
410
- return nextCode;
411
- }
412
-
413
- return code;
414
- };
415
-
416
- export const wrapKyselyMigrator = <TMigrator extends MigratorLike>(
417
- migrator: TMigrator,
418
- provider: ORMSQLProvider | undefined,
419
- latestVersion: string,
420
- ): TMigrator => {
421
- if (!provider) {
422
- return migrator;
423
- }
424
-
425
- return {
426
- ...migrator,
427
- async up(...args: Parameters<TMigrator["up"]>) {
428
- const next = await migrator.next();
429
- const result = await migrator.up(...args);
430
-
431
- if (next) {
432
- enhanceUpwardMigrationResult(result, provider, next.version);
433
- }
434
-
435
- return result;
436
- },
437
- async migrateTo(...args: Parameters<TMigrator["migrateTo"]>) {
438
- const version = args[0];
439
- const options = args[1];
440
- const currentVersion = await migrator.getVersion();
441
- const result = await migrator.migrateTo(version, options);
442
-
443
- if (!currentVersion || semver.gt(version, currentVersion)) {
444
- enhanceUpwardMigrationResult(result, provider, version);
445
- }
446
-
447
- return result;
448
- },
449
- async migrateToLatest(...args: Parameters<TMigrator["migrateToLatest"]>) {
450
- const currentVersion = await migrator.getVersion();
451
- const result = await migrator.migrateToLatest(...args);
452
-
453
- if (!currentVersion || semver.gt(latestVersion, currentVersion)) {
454
- enhanceUpwardMigrationResult(result, provider, latestVersion);
455
- }
456
-
457
- return result;
458
- },
459
- } as TMigrator;
460
- };