@hot-updater/server 0.33.2 → 0.34.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 (198) 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/db/bundleRows.cjs +82 -0
  21. package/dist/db/bundleRows.d.cts +33 -0
  22. package/dist/db/bundleRows.d.mts +33 -0
  23. package/dist/db/bundleRows.mjs +79 -0
  24. package/dist/db/fixedMigrator.cjs +136 -0
  25. package/dist/db/fixedMigrator.mjs +135 -0
  26. package/dist/db/index.cjs +17 -15
  27. package/dist/db/index.d.cts +3 -3
  28. package/dist/db/index.d.mts +3 -3
  29. package/dist/db/index.mjs +17 -15
  30. package/dist/db/pluginCore.cjs +13 -5
  31. package/dist/db/pluginCore.mjs +13 -5
  32. package/dist/db/schema/mongodb.cjs +17 -0
  33. package/dist/db/schema/mongodb.mjs +17 -0
  34. package/dist/db/schema/registry.cjs +23 -0
  35. package/dist/db/schema/registry.mjs +18 -0
  36. package/dist/db/schema/sql.cjs +84 -0
  37. package/dist/db/schema/sql.mjs +78 -0
  38. package/dist/db/schema/sqlMigrations.cjs +74 -0
  39. package/dist/db/schema/sqlMigrations.mjs +73 -0
  40. package/dist/db/schema/sqlOperations.cjs +27 -0
  41. package/dist/db/schema/sqlOperations.mjs +26 -0
  42. package/dist/db/schemaEnhancements.cjs +1 -152
  43. package/dist/db/schemaEnhancements.mjs +1 -149
  44. package/dist/db/schemaGenerators.cjs +222 -0
  45. package/dist/db/schemaGenerators.mjs +220 -0
  46. package/dist/db/schemaReadiness.cjs +23 -0
  47. package/dist/db/schemaReadiness.d.cts +8 -0
  48. package/dist/db/schemaReadiness.d.mts +8 -0
  49. package/dist/db/schemaReadiness.mjs +22 -0
  50. package/dist/db/types.cjs +10 -2
  51. package/dist/db/types.d.cts +58 -14
  52. package/dist/db/types.d.mts +58 -14
  53. package/dist/db/types.mjs +9 -1
  54. package/dist/index.cjs +2 -2
  55. package/dist/index.d.cts +3 -2
  56. package/dist/index.d.mts +3 -2
  57. package/dist/index.mjs +2 -2
  58. package/dist/{packages/server/package.cjs → package.cjs} +1 -1
  59. package/dist/{packages/server/package.mjs → package.mjs} +1 -1
  60. package/dist/runtime.cjs +9 -2
  61. package/dist/runtime.mjs +9 -2
  62. package/dist/schema/dsl.cjs +86 -0
  63. package/dist/schema/dsl.mjs +73 -0
  64. package/dist/schema/index.cjs +13 -0
  65. package/dist/schema/index.mjs +13 -0
  66. package/dist/schema/settings.cjs +9 -0
  67. package/dist/schema/settings.mjs +9 -0
  68. package/dist/schema/types.cjs +6 -0
  69. package/dist/schema/types.mjs +5 -0
  70. package/dist/schema/v0_21_0.cjs +33 -18
  71. package/dist/schema/v0_21_0.mjs +32 -18
  72. package/dist/schema/v0_29_0.cjs +40 -20
  73. package/dist/schema/v0_29_0.mjs +39 -20
  74. package/dist/schema/v0_31_0.cjs +77 -43
  75. package/dist/schema/v0_31_0.mjs +75 -43
  76. package/dist/version.cjs +1 -1
  77. package/dist/version.mjs +1 -1
  78. package/package.json +30 -16
  79. package/src/adapters/drizzle.spec.ts +75 -0
  80. package/src/adapters/drizzle.ts +328 -12
  81. package/src/adapters/drizzleLazyDB.ts +151 -0
  82. package/src/adapters/kysely.spec.ts +107 -0
  83. package/src/adapters/kysely.ts +349 -14
  84. package/src/adapters/mongodb.ts +298 -15
  85. package/src/adapters/prisma.ts +337 -12
  86. package/src/db/bundleRows.ts +140 -0
  87. package/src/db/fixedMigrator.spec.ts +89 -0
  88. package/src/db/fixedMigrator.ts +288 -0
  89. package/src/db/hotUpdaterSchema.ts +6 -0
  90. package/src/db/index.spec.ts +976 -13
  91. package/src/db/index.ts +37 -36
  92. package/src/db/pluginCore.spec.ts +17 -11
  93. package/src/db/pluginCore.ts +15 -6
  94. package/src/db/schema/definitions.ts +1 -0
  95. package/src/db/schema/mongodb.ts +26 -0
  96. package/src/db/schema/registry.ts +55 -0
  97. package/src/db/schema/sql.ts +200 -0
  98. package/src/db/schema/sqlMigrations.ts +219 -0
  99. package/src/db/schema/sqlOperations.ts +62 -0
  100. package/src/db/schema/types.ts +1 -0
  101. package/src/db/schemaEnhancements.ts +0 -405
  102. package/src/db/schemaGenerators.ts +382 -0
  103. package/src/db/schemaReadiness.ts +33 -0
  104. package/src/db/types.ts +69 -25
  105. package/src/runtime.spec.ts +70 -0
  106. package/src/runtime.ts +14 -2
  107. package/src/schema/dsl-all-versions.spec.ts +26 -0
  108. package/src/schema/dsl.ts +148 -0
  109. package/src/schema/index.ts +16 -0
  110. package/src/schema/settings.ts +15 -0
  111. package/src/schema/types.ts +73 -0
  112. package/src/schema/v0_21_0.ts +48 -18
  113. package/src/schema/v0_29_0.ts +58 -22
  114. package/src/schema/v0_31_0.spec.ts +73 -0
  115. package/src/schema/v0_31_0.ts +116 -54
  116. package/dist/_virtual/_rolldown/runtime.mjs +0 -6
  117. package/dist/calculatePagination.cjs +0 -25
  118. package/dist/calculatePagination.mjs +0 -25
  119. package/dist/db/ormCore.cjs +0 -577
  120. package/dist/db/ormCore.d.cts +0 -110
  121. package/dist/db/ormCore.d.mts +0 -110
  122. package/dist/db/ormCore.mjs +0 -575
  123. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.cjs +0 -112
  124. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.mjs +0 -108
  125. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.cjs +0 -22
  126. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.mjs +0 -18
  127. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.cjs +0 -219
  128. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.mjs +0 -214
  129. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.cjs +0 -275
  130. package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.mjs +0 -270
  131. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.cjs +0 -17
  132. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.mjs +0 -13
  133. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.cjs +0 -69
  134. package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.mjs +0 -65
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  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/table.mjs +0 -59
  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/table.utils.cjs +0 -4
  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/table.utils.mjs +0 -4
  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/tracing.cjs +0 -6
  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/tracing.mjs +0 -6
  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/view-common.cjs +0 -4
  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/view-common.mjs +0 -4
  157. 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
  158. 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
  159. 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
  160. 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
  161. 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
  162. 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
  163. 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
  164. 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
  165. 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
  166. 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
  167. 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
  168. 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
  169. 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
  170. 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
  171. 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
  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/chunk-CHTIKPQU.mjs +0 -163
  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/chunk-GUE4GMNC.cjs +0 -14
  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/chunk-GUE4GMNC.mjs +0 -13
  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/chunk-LHHP6UVP.cjs +0 -24
  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/chunk-LHHP6UVP.mjs +0 -24
  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/chunk-LVCPMTAT.cjs +0 -1190
  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/chunk-LVCPMTAT.mjs +0 -1189
  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/chunk-PK2W2SQ7.cjs +0 -197
  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/chunk-PK2W2SQ7.mjs +0 -197
  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/chunk-ZEQMAIFI.cjs +0 -410
  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-ZEQMAIFI.mjs +0 -400
  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-ZOCGSAWS.cjs +0 -213
  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-ZOCGSAWS.mjs +0 -212
  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/create-tg0451Y_.d.cts +0 -285
  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/create-tg0451Y_.d.mts +0 -285
  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/index-CMqePMTF.d.cts +0 -45
  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/index-CMqePMTF.d.mts +0 -45
  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/index.cjs +0 -69
  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/index.d.cts +0 -49
  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/index.d.mts +0 -49
  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/index.mjs +0 -67
  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/query/index.d.cts +0 -156
  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/query/index.d.mts +0 -156
  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/schema/index.cjs +0 -1
  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/schema/index.mjs +0 -2
  197. package/src/db/ormCore.ts +0 -1059
  198. package/src/db/ormUpdateCheck.bench.ts +0 -262
@@ -50,12 +50,13 @@ const INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {
50
50
  fileHash: null
51
51
  };
52
52
  function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
53
+ const coreOptions = options;
53
54
  const runWithMutationPlugin = async (operation) => {
54
- const plugin = options?.createMutationPlugin?.() ?? getPlugin();
55
+ const plugin = coreOptions?.createMutationPlugin?.() ?? getPlugin();
55
56
  try {
56
57
  return await operation(plugin);
57
58
  } finally {
58
- if (options?.createMutationPlugin) await options.cleanupMutationPlugin?.(plugin);
59
+ if (coreOptions?.createMutationPlugin) await coreOptions.cleanupMutationPlugin?.(plugin);
59
60
  }
60
61
  };
61
62
  const getSortedBundlePage = async (options, context) => {
@@ -114,9 +115,11 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
114
115
  return {
115
116
  api: {
116
117
  async getBundleById(id, context) {
118
+ await coreOptions?.beforeOperation?.();
117
119
  return getPlugin().getBundleById(id, context);
118
120
  },
119
121
  async getUpdateInfo(args, context) {
122
+ await coreOptions?.beforeOperation?.();
120
123
  const directGetUpdateInfo = getPlugin().getUpdateInfo;
121
124
  if (directGetUpdateInfo) return context === void 0 ? await directGetUpdateInfo(args) : await directGetUpdateInfo(args, context);
122
125
  const channel = args.channel ?? "production";
@@ -150,7 +153,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
150
153
  const info = await this.getUpdateInfo(args, context);
151
154
  if (!info) return null;
152
155
  const { storageUri, ...rest } = info;
153
- const readStorageText = options?.readStorageText;
156
+ const readStorageText = coreOptions?.readStorageText;
154
157
  if (info.id === _hot_updater_core.NIL_UUID || !readStorageText) {
155
158
  const fileUrl = await resolveFileUrl(storageUri ?? null, context);
156
159
  return {
@@ -188,12 +191,15 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
188
191
  };
189
192
  },
190
193
  async getChannels(context) {
194
+ await coreOptions?.beforeOperation?.();
191
195
  return getPlugin().getChannels(context);
192
196
  },
193
197
  async getBundles(options, context) {
198
+ await coreOptions?.beforeOperation?.();
194
199
  return getPlugin().getBundles(options, context);
195
200
  },
196
201
  async insertBundle(bundle, context) {
202
+ await coreOptions?.beforeOperation?.();
197
203
  require_schemaEnhancements.assertBundlePersistenceConstraints(bundle);
198
204
  await runWithMutationPlugin(async (plugin) => {
199
205
  await plugin.appendBundle(bundle, context);
@@ -201,6 +207,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
201
207
  });
202
208
  },
203
209
  async updateBundleById(bundleId, newBundle, context) {
210
+ await coreOptions?.beforeOperation?.();
204
211
  await runWithMutationPlugin(async (plugin) => {
205
212
  const current = await plugin.getBundleById(bundleId, context);
206
213
  if (!current) throw new Error("targetBundleId not found");
@@ -213,6 +220,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
213
220
  });
214
221
  },
215
222
  async deleteBundleById(bundleId, context) {
223
+ await coreOptions?.beforeOperation?.();
216
224
  await runWithMutationPlugin(async (plugin) => {
217
225
  const bundle = await plugin.getBundleById(bundleId, context);
218
226
  if (!bundle) return;
@@ -223,10 +231,10 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
223
231
  },
224
232
  adapterName: getPlugin().name,
225
233
  createMigrator: () => {
226
- throw new Error("createMigrator is only available for Kysely/Prisma/Drizzle database adapters.");
234
+ throw new Error("createMigrator is only available for Kysely/MongoDB database adapters.");
227
235
  },
228
236
  generateSchema: () => {
229
- throw new Error("generateSchema is only available for Kysely/Prisma/Drizzle database adapters.");
237
+ throw new Error("generateSchema is only available for Drizzle/Prisma database adapters.");
230
238
  }
231
239
  };
232
240
  }
@@ -49,12 +49,13 @@ const INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {
49
49
  fileHash: null
50
50
  };
51
51
  function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
52
+ const coreOptions = options;
52
53
  const runWithMutationPlugin = async (operation) => {
53
- const plugin = options?.createMutationPlugin?.() ?? getPlugin();
54
+ const plugin = coreOptions?.createMutationPlugin?.() ?? getPlugin();
54
55
  try {
55
56
  return await operation(plugin);
56
57
  } finally {
57
- if (options?.createMutationPlugin) await options.cleanupMutationPlugin?.(plugin);
58
+ if (coreOptions?.createMutationPlugin) await coreOptions.cleanupMutationPlugin?.(plugin);
58
59
  }
59
60
  };
60
61
  const getSortedBundlePage = async (options, context) => {
@@ -113,9 +114,11 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
113
114
  return {
114
115
  api: {
115
116
  async getBundleById(id, context) {
117
+ await coreOptions?.beforeOperation?.();
116
118
  return getPlugin().getBundleById(id, context);
117
119
  },
118
120
  async getUpdateInfo(args, context) {
121
+ await coreOptions?.beforeOperation?.();
119
122
  const directGetUpdateInfo = getPlugin().getUpdateInfo;
120
123
  if (directGetUpdateInfo) return context === void 0 ? await directGetUpdateInfo(args) : await directGetUpdateInfo(args, context);
121
124
  const channel = args.channel ?? "production";
@@ -149,7 +152,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
149
152
  const info = await this.getUpdateInfo(args, context);
150
153
  if (!info) return null;
151
154
  const { storageUri, ...rest } = info;
152
- const readStorageText = options?.readStorageText;
155
+ const readStorageText = coreOptions?.readStorageText;
153
156
  if (info.id === NIL_UUID || !readStorageText) {
154
157
  const fileUrl = await resolveFileUrl(storageUri ?? null, context);
155
158
  return {
@@ -187,12 +190,15 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
187
190
  };
188
191
  },
189
192
  async getChannels(context) {
193
+ await coreOptions?.beforeOperation?.();
190
194
  return getPlugin().getChannels(context);
191
195
  },
192
196
  async getBundles(options, context) {
197
+ await coreOptions?.beforeOperation?.();
193
198
  return getPlugin().getBundles(options, context);
194
199
  },
195
200
  async insertBundle(bundle, context) {
201
+ await coreOptions?.beforeOperation?.();
196
202
  assertBundlePersistenceConstraints(bundle);
197
203
  await runWithMutationPlugin(async (plugin) => {
198
204
  await plugin.appendBundle(bundle, context);
@@ -200,6 +206,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
200
206
  });
201
207
  },
202
208
  async updateBundleById(bundleId, newBundle, context) {
209
+ await coreOptions?.beforeOperation?.();
203
210
  await runWithMutationPlugin(async (plugin) => {
204
211
  const current = await plugin.getBundleById(bundleId, context);
205
212
  if (!current) throw new Error("targetBundleId not found");
@@ -212,6 +219,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
212
219
  });
213
220
  },
214
221
  async deleteBundleById(bundleId, context) {
222
+ await coreOptions?.beforeOperation?.();
215
223
  await runWithMutationPlugin(async (plugin) => {
216
224
  const bundle = await plugin.getBundleById(bundleId, context);
217
225
  if (!bundle) return;
@@ -222,10 +230,10 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
222
230
  },
223
231
  adapterName: getPlugin().name,
224
232
  createMigrator: () => {
225
- throw new Error("createMigrator is only available for Kysely/Prisma/Drizzle database adapters.");
233
+ throw new Error("createMigrator is only available for Kysely/MongoDB database adapters.");
226
234
  },
227
235
  generateSchema: () => {
228
- throw new Error("generateSchema is only available for Kysely/Prisma/Drizzle database adapters.");
236
+ throw new Error("generateSchema is only available for Drizzle/Prisma database adapters.");
229
237
  }
230
238
  };
231
239
  }
@@ -0,0 +1,17 @@
1
+ const require_registry = require("./registry.cjs");
2
+ const require_sql = require("./sql.cjs");
3
+ //#region src/db/schema/mongodb.ts
4
+ const createMongoMigrationOperations = (settingsOperation) => [
5
+ ...require_sql.hotUpdaterCreateTableOperations,
6
+ {
7
+ type: "custom",
8
+ sql: "create index bundles_id_idx on bundles(id)"
9
+ },
10
+ ...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, "mongodb")).map((index) => ({
11
+ type: "custom",
12
+ sql: `create index ${index.name} on ${table.ormName}(${index.columns.join(", ")})`
13
+ }))),
14
+ ...settingsOperation ? [settingsOperation] : []
15
+ ];
16
+ //#endregion
17
+ exports.createMongoMigrationOperations = createMongoMigrationOperations;
@@ -0,0 +1,17 @@
1
+ import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
2
+ import { hotUpdaterCreateTableOperations } from "./sql.mjs";
3
+ //#region src/db/schema/mongodb.ts
4
+ const createMongoMigrationOperations = (settingsOperation) => [
5
+ ...hotUpdaterCreateTableOperations,
6
+ {
7
+ type: "custom",
8
+ sql: "create index bundles_id_idx on bundles(id)"
9
+ },
10
+ ...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, "mongodb")).map((index) => ({
11
+ type: "custom",
12
+ sql: `create index ${index.name} on ${table.ormName}(${index.columns.join(", ")})`
13
+ }))),
14
+ ...settingsOperation ? [settingsOperation] : []
15
+ ];
16
+ //#endregion
17
+ export { createMongoMigrationOperations };
@@ -0,0 +1,23 @@
1
+ const require_index = require("../../schema/index.cjs");
2
+ //#region src/db/schema/registry.ts
3
+ const hotUpdaterSchema = require_index.hotUpdaterSchemaVersions[require_index.hotUpdaterSchemaVersions.length - 1];
4
+ const getSchemaVersionIndex = (version) => require_index.hotUpdaterSchemaVersions.findIndex((schema) => schema.version === version);
5
+ const getHotUpdaterSchemaVersion = (version) => {
6
+ const schema = require_index.hotUpdaterSchemaVersions.find((item) => item.version === version);
7
+ if (!schema) throw new Error(`Unsupported Hot Updater schema version: ${version}`);
8
+ return schema;
9
+ };
10
+ const getSchemaColumn = (table, name) => {
11
+ const column = table.columns.find((item) => item.ormName === name);
12
+ if (!column) throw new Error(`Unknown Hot Updater schema column: ${table.ormName}.${name}`);
13
+ return column;
14
+ };
15
+ const hotUpdaterDataTables = hotUpdaterSchema.tables.filter((table) => !table.internal);
16
+ const schemaIndexAppliesToProvider = (index, provider) => !index.providers || index.providers.includes(provider);
17
+ //#endregion
18
+ exports.getHotUpdaterSchemaVersion = getHotUpdaterSchemaVersion;
19
+ exports.getSchemaColumn = getSchemaColumn;
20
+ exports.getSchemaVersionIndex = getSchemaVersionIndex;
21
+ exports.hotUpdaterDataTables = hotUpdaterDataTables;
22
+ exports.hotUpdaterSchema = hotUpdaterSchema;
23
+ exports.schemaIndexAppliesToProvider = schemaIndexAppliesToProvider;
@@ -0,0 +1,18 @@
1
+ import { hotUpdaterSchemaVersions } from "../../schema/index.mjs";
2
+ //#region src/db/schema/registry.ts
3
+ const hotUpdaterSchema = hotUpdaterSchemaVersions[hotUpdaterSchemaVersions.length - 1];
4
+ const getSchemaVersionIndex = (version) => hotUpdaterSchemaVersions.findIndex((schema) => schema.version === version);
5
+ const getHotUpdaterSchemaVersion = (version) => {
6
+ const schema = hotUpdaterSchemaVersions.find((item) => item.version === version);
7
+ if (!schema) throw new Error(`Unsupported Hot Updater schema version: ${version}`);
8
+ return schema;
9
+ };
10
+ const getSchemaColumn = (table, name) => {
11
+ const column = table.columns.find((item) => item.ormName === name);
12
+ if (!column) throw new Error(`Unknown Hot Updater schema column: ${table.ormName}.${name}`);
13
+ return column;
14
+ };
15
+ const hotUpdaterDataTables = hotUpdaterSchema.tables.filter((table) => !table.internal);
16
+ const schemaIndexAppliesToProvider = (index, provider) => !index.providers || index.providers.includes(provider);
17
+ //#endregion
18
+ export { getHotUpdaterSchemaVersion, getSchemaColumn, getSchemaVersionIndex, hotUpdaterDataTables, hotUpdaterSchema, schemaIndexAppliesToProvider };
@@ -0,0 +1,84 @@
1
+ require("../../schema/types.cjs");
2
+ const require_registry = require("./registry.cjs");
3
+ //#region src/db/schema/sql.ts
4
+ const hotUpdaterCreateTableOperations = require_registry.hotUpdaterDataTables.map((table) => ({
5
+ type: "create-table",
6
+ value: {
7
+ ormName: table.ormName,
8
+ columns: Object.fromEntries(table.columns.map((column) => [column.ormName, {
9
+ ormName: column.ormName,
10
+ type: column.type
11
+ }]))
12
+ }
13
+ }));
14
+ const getSqlType = (type, provider) => {
15
+ if (provider === "sqlite") {
16
+ if (type === "bool" || type === "integer") return "integer";
17
+ return "text";
18
+ }
19
+ if (provider === "mysql") {
20
+ if (type === "uuid") return "char(36)";
21
+ if (type === "bool") return "boolean";
22
+ if (type === "integer") return "integer";
23
+ if (type === "json") return "json";
24
+ if (type.startsWith("varchar")) return type;
25
+ return "text";
26
+ }
27
+ if (type === "uuid") return "uuid";
28
+ if (type === "bool") return "boolean";
29
+ if (type === "integer") return "integer";
30
+ if (type === "json") return "json";
31
+ if (type.startsWith("varchar")) return type;
32
+ return "text";
33
+ };
34
+ const sqlStringLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
35
+ const sqlDefaultClause = (column, provider) => {
36
+ const value = column.default;
37
+ if (!value) return "";
38
+ if (provider === "mysql" && (column.type === "json" || column.type === "string")) return "";
39
+ if (value.type === "json") {
40
+ const json = sqlStringLiteral(JSON.stringify(value.value));
41
+ return provider === "postgresql" || provider === "cockroachdb" ? ` default ${json}::json` : ` default ${json}`;
42
+ }
43
+ if (typeof value.value === "string") return ` default ${sqlStringLiteral(value.value)}`;
44
+ return ` default ${String(value.value)}`;
45
+ };
46
+ const sqlColumnName = (table, column, provider) => table.ormName === "private_hot_updater_settings" && column.ormName === "key" && provider === "mysql" ? "`key`" : column.ormName;
47
+ const sqlColumnDefinition = (table, column, provider) => {
48
+ const constraints = [column.primaryKey ? "primary key" : void 0, column.nullable ? void 0 : "not null"].filter(Boolean);
49
+ return [
50
+ sqlColumnName(table, column, provider),
51
+ getSqlType(column.type, provider),
52
+ ...constraints
53
+ ].join(" ") + sqlDefaultClause(column, provider);
54
+ };
55
+ const sqlIndexColumn = (table, columnName, provider) => {
56
+ const column = require_registry.getSchemaColumn(table, columnName);
57
+ return provider === "mysql" && column.type === "string" ? `${columnName}(255)` : columnName;
58
+ };
59
+ const createIndexSql = (table, index, provider) => `create index ${index.name} on ${table.ormName}(${index.columns.map((column) => sqlIndexColumn(table, column, provider)).join(", ")})`;
60
+ const createForeignKeySql = (table, foreignKey) => `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}`;
61
+ const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
62
+ const inlineSqlChecks = (table, provider) => provider === "sqlite" ? (table.checks ?? []).filter((check) => check.sqliteInline).map((check) => `constraint ${check.name} check (${check.expression})`) : [];
63
+ const createTableStatement = (table, provider) => {
64
+ const lines = [...table.columns.map((column) => sqlColumnDefinition(table, column, provider)), ...inlineSqlChecks(table, provider)];
65
+ return `create table if not exists ${table.ormName} (\n${lines.join(",\n")}\n)`;
66
+ };
67
+ const createForeignKeySqlStatements = (provider, relationMode = "foreign-keys") => {
68
+ if (relationMode !== "foreign-keys" || provider === "sqlite") return [];
69
+ return require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)));
70
+ };
71
+ const createTableSql = (provider, relationMode = "foreign-keys") => [
72
+ ...require_registry.hotUpdaterSchema.tables.map((table) => createTableStatement(table, provider)),
73
+ ...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider))),
74
+ ...provider === "sqlite" ? [] : require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => createCheckSql(table, check))),
75
+ ...createForeignKeySqlStatements(provider, relationMode)
76
+ ];
77
+ //#endregion
78
+ exports.createCheckSql = createCheckSql;
79
+ exports.createForeignKeySql = createForeignKeySql;
80
+ exports.createIndexSql = createIndexSql;
81
+ exports.createTableSql = createTableSql;
82
+ exports.createTableStatement = createTableStatement;
83
+ exports.hotUpdaterCreateTableOperations = hotUpdaterCreateTableOperations;
84
+ exports.sqlColumnDefinition = sqlColumnDefinition;
@@ -0,0 +1,78 @@
1
+ import "../../schema/types.mjs";
2
+ import { getSchemaColumn, hotUpdaterDataTables, hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
3
+ //#region src/db/schema/sql.ts
4
+ const hotUpdaterCreateTableOperations = hotUpdaterDataTables.map((table) => ({
5
+ type: "create-table",
6
+ value: {
7
+ ormName: table.ormName,
8
+ columns: Object.fromEntries(table.columns.map((column) => [column.ormName, {
9
+ ormName: column.ormName,
10
+ type: column.type
11
+ }]))
12
+ }
13
+ }));
14
+ const getSqlType = (type, provider) => {
15
+ if (provider === "sqlite") {
16
+ if (type === "bool" || type === "integer") return "integer";
17
+ return "text";
18
+ }
19
+ if (provider === "mysql") {
20
+ if (type === "uuid") return "char(36)";
21
+ if (type === "bool") return "boolean";
22
+ if (type === "integer") return "integer";
23
+ if (type === "json") return "json";
24
+ if (type.startsWith("varchar")) return type;
25
+ return "text";
26
+ }
27
+ if (type === "uuid") return "uuid";
28
+ if (type === "bool") return "boolean";
29
+ if (type === "integer") return "integer";
30
+ if (type === "json") return "json";
31
+ if (type.startsWith("varchar")) return type;
32
+ return "text";
33
+ };
34
+ const sqlStringLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
35
+ const sqlDefaultClause = (column, provider) => {
36
+ const value = column.default;
37
+ if (!value) return "";
38
+ if (provider === "mysql" && (column.type === "json" || column.type === "string")) return "";
39
+ if (value.type === "json") {
40
+ const json = sqlStringLiteral(JSON.stringify(value.value));
41
+ return provider === "postgresql" || provider === "cockroachdb" ? ` default ${json}::json` : ` default ${json}`;
42
+ }
43
+ if (typeof value.value === "string") return ` default ${sqlStringLiteral(value.value)}`;
44
+ return ` default ${String(value.value)}`;
45
+ };
46
+ const sqlColumnName = (table, column, provider) => table.ormName === "private_hot_updater_settings" && column.ormName === "key" && provider === "mysql" ? "`key`" : column.ormName;
47
+ const sqlColumnDefinition = (table, column, provider) => {
48
+ const constraints = [column.primaryKey ? "primary key" : void 0, column.nullable ? void 0 : "not null"].filter(Boolean);
49
+ return [
50
+ sqlColumnName(table, column, provider),
51
+ getSqlType(column.type, provider),
52
+ ...constraints
53
+ ].join(" ") + sqlDefaultClause(column, provider);
54
+ };
55
+ const sqlIndexColumn = (table, columnName, provider) => {
56
+ const column = getSchemaColumn(table, columnName);
57
+ return provider === "mysql" && column.type === "string" ? `${columnName}(255)` : columnName;
58
+ };
59
+ const createIndexSql = (table, index, provider) => `create index ${index.name} on ${table.ormName}(${index.columns.map((column) => sqlIndexColumn(table, column, provider)).join(", ")})`;
60
+ const createForeignKeySql = (table, foreignKey) => `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}`;
61
+ const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
62
+ const inlineSqlChecks = (table, provider) => provider === "sqlite" ? (table.checks ?? []).filter((check) => check.sqliteInline).map((check) => `constraint ${check.name} check (${check.expression})`) : [];
63
+ const createTableStatement = (table, provider) => {
64
+ const lines = [...table.columns.map((column) => sqlColumnDefinition(table, column, provider)), ...inlineSqlChecks(table, provider)];
65
+ return `create table if not exists ${table.ormName} (\n${lines.join(",\n")}\n)`;
66
+ };
67
+ const createForeignKeySqlStatements = (provider, relationMode = "foreign-keys") => {
68
+ if (relationMode !== "foreign-keys" || provider === "sqlite") return [];
69
+ return hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)));
70
+ };
71
+ const createTableSql = (provider, relationMode = "foreign-keys") => [
72
+ ...hotUpdaterSchema.tables.map((table) => createTableStatement(table, provider)),
73
+ ...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider))),
74
+ ...provider === "sqlite" ? [] : hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => createCheckSql(table, check))),
75
+ ...createForeignKeySqlStatements(provider, relationMode)
76
+ ];
77
+ //#endregion
78
+ export { createCheckSql, createForeignKeySql, createIndexSql, createTableSql, createTableStatement, hotUpdaterCreateTableOperations, sqlColumnDefinition };
@@ -0,0 +1,74 @@
1
+ const require_index = require("../../schema/index.cjs");
2
+ const require_registry = require("./registry.cjs");
3
+ const require_sql = require("./sql.cjs");
4
+ //#region src/db/schema/sqlMigrations.ts
5
+ const nameMap = (items) => new Map((items ?? []).map((item) => [item.name, item]));
6
+ const columnMap = (table) => new Map(table.columns.map((column) => [column.ormName, column]));
7
+ const stableStringify = (value) => JSON.stringify(value);
8
+ const assertSameSchemaValue = (location, left, right) => {
9
+ if (stableStringify(left) !== stableStringify(right)) throw new Error(`Unsupported Hot Updater schema change at ${location}. Add an explicit migration step before changing existing schema metadata.`);
10
+ };
11
+ const compareNamedItems = (location, previousItems, nextItems) => {
12
+ const nextItemsByName = nameMap(nextItems);
13
+ for (const previousItem of previousItems ?? []) {
14
+ const nextItem = nextItemsByName.get(previousItem.name);
15
+ if (!nextItem) throw new Error(`Unsupported Hot Updater schema change at ${location}.${previousItem.name}. Removing schema metadata requires an explicit migration step.`);
16
+ assertSameSchemaValue(`${location}.${previousItem.name}`, previousItem, nextItem);
17
+ }
18
+ };
19
+ const assertNoUnsupportedTableChanges = (previous, next, provider) => {
20
+ const nextColumns = columnMap(next);
21
+ for (const previousColumn of previous.columns) {
22
+ const nextColumn = nextColumns.get(previousColumn.ormName);
23
+ if (!nextColumn) throw new Error(`Unsupported Hot Updater schema change at ${previous.ormName}.${previousColumn.ormName}. Dropping columns requires an explicit migration step.`);
24
+ assertSameSchemaValue(`${previous.ormName}.${previousColumn.ormName}`, previousColumn, nextColumn);
25
+ }
26
+ compareNamedItems(`${previous.ormName}.indexes`, previous.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)), next.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)));
27
+ compareNamedItems(`${previous.ormName}.checks`, previous.checks, next.checks);
28
+ compareNamedItems(`${previous.ormName}.foreignKeys`, previous.foreignKeys, next.foreignKeys);
29
+ };
30
+ const createForeignKeySql = (table, foreignKey) => `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}`;
31
+ const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
32
+ const createAddedTableSql = (table, provider, relationMode) => [
33
+ require_sql.createTableStatement(table, provider),
34
+ ...(table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => require_sql.createIndexSql(table, index, provider)),
35
+ ...provider === "sqlite" ? [] : (table.checks ?? []).map((check) => createCheckSql(table, check)),
36
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)) : []
37
+ ];
38
+ const createChangedTableSql = (previous, next, provider, relationMode) => {
39
+ assertNoUnsupportedTableChanges(previous, next, provider);
40
+ const previousColumns = columnMap(previous);
41
+ const previousIndexes = nameMap(previous.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)));
42
+ const previousChecks = nameMap(previous.checks);
43
+ const previousForeignKeys = nameMap(previous.foreignKeys);
44
+ return [
45
+ ...next.columns.filter((column) => !previousColumns.has(column.ormName)).map((column) => `alter table ${next.ormName} add column ${require_sql.sqlColumnDefinition(next, column, provider)}`),
46
+ ...(next.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).filter((index) => !previousIndexes.has(index.name)).map((index) => require_sql.createIndexSql(next, index, provider)),
47
+ ...provider === "sqlite" ? [] : (next.checks ?? []).filter((check) => !previousChecks.has(check.name)).map((check) => createCheckSql(next, check)),
48
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? (next.foreignKeys ?? []).filter((foreignKey) => !previousForeignKeys.has(foreignKey.name)).map((foreignKey) => createForeignKeySql(next, foreignKey)) : []
49
+ ];
50
+ };
51
+ const createSchemaMigrationSql = (fromVersion, toVersion, provider, relationMode = "foreign-keys") => {
52
+ const fromIndex = require_registry.getSchemaVersionIndex(fromVersion);
53
+ const toIndex = require_registry.getSchemaVersionIndex(toVersion);
54
+ if (fromIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${fromVersion}`);
55
+ if (toIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${toVersion}`);
56
+ if (fromIndex > toIndex) throw new Error(`Cannot migrate Hot Updater schema down to ${toVersion}.`);
57
+ const statements = [];
58
+ for (let index = fromIndex + 1; index <= toIndex; index += 1) {
59
+ const previous = require_index.hotUpdaterSchemaVersions[index - 1];
60
+ const next = require_index.hotUpdaterSchemaVersions[index];
61
+ const previousTables = new Map(previous.tables.map((table) => [table.ormName, table]));
62
+ for (const table of next.tables) {
63
+ if (table.internal) continue;
64
+ const previousTable = previousTables.get(table.ormName);
65
+ statements.push(...previousTable ? createChangedTableSql(previousTable, table, provider, relationMode) : createAddedTableSql(table, provider, relationMode));
66
+ }
67
+ }
68
+ return statements;
69
+ };
70
+ const createV029AlterSql = (provider) => createSchemaMigrationSql("0.21.0", "0.29.0", provider);
71
+ const createV031AlterSql = (provider, relationMode = "foreign-keys") => createSchemaMigrationSql("0.29.0", "0.31.0", provider, relationMode);
72
+ //#endregion
73
+ exports.createV029AlterSql = createV029AlterSql;
74
+ exports.createV031AlterSql = createV031AlterSql;
@@ -0,0 +1,73 @@
1
+ import { hotUpdaterSchemaVersions } from "../../schema/index.mjs";
2
+ import { getSchemaVersionIndex, schemaIndexAppliesToProvider } from "./registry.mjs";
3
+ import { createIndexSql, createTableStatement, sqlColumnDefinition } from "./sql.mjs";
4
+ //#region src/db/schema/sqlMigrations.ts
5
+ const nameMap = (items) => new Map((items ?? []).map((item) => [item.name, item]));
6
+ const columnMap = (table) => new Map(table.columns.map((column) => [column.ormName, column]));
7
+ const stableStringify = (value) => JSON.stringify(value);
8
+ const assertSameSchemaValue = (location, left, right) => {
9
+ if (stableStringify(left) !== stableStringify(right)) throw new Error(`Unsupported Hot Updater schema change at ${location}. Add an explicit migration step before changing existing schema metadata.`);
10
+ };
11
+ const compareNamedItems = (location, previousItems, nextItems) => {
12
+ const nextItemsByName = nameMap(nextItems);
13
+ for (const previousItem of previousItems ?? []) {
14
+ const nextItem = nextItemsByName.get(previousItem.name);
15
+ if (!nextItem) throw new Error(`Unsupported Hot Updater schema change at ${location}.${previousItem.name}. Removing schema metadata requires an explicit migration step.`);
16
+ assertSameSchemaValue(`${location}.${previousItem.name}`, previousItem, nextItem);
17
+ }
18
+ };
19
+ const assertNoUnsupportedTableChanges = (previous, next, provider) => {
20
+ const nextColumns = columnMap(next);
21
+ for (const previousColumn of previous.columns) {
22
+ const nextColumn = nextColumns.get(previousColumn.ormName);
23
+ if (!nextColumn) throw new Error(`Unsupported Hot Updater schema change at ${previous.ormName}.${previousColumn.ormName}. Dropping columns requires an explicit migration step.`);
24
+ assertSameSchemaValue(`${previous.ormName}.${previousColumn.ormName}`, previousColumn, nextColumn);
25
+ }
26
+ compareNamedItems(`${previous.ormName}.indexes`, previous.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)), next.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)));
27
+ compareNamedItems(`${previous.ormName}.checks`, previous.checks, next.checks);
28
+ compareNamedItems(`${previous.ormName}.foreignKeys`, previous.foreignKeys, next.foreignKeys);
29
+ };
30
+ const createForeignKeySql = (table, foreignKey) => `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}`;
31
+ const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
32
+ const createAddedTableSql = (table, provider, relationMode) => [
33
+ createTableStatement(table, provider),
34
+ ...(table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider)),
35
+ ...provider === "sqlite" ? [] : (table.checks ?? []).map((check) => createCheckSql(table, check)),
36
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)) : []
37
+ ];
38
+ const createChangedTableSql = (previous, next, provider, relationMode) => {
39
+ assertNoUnsupportedTableChanges(previous, next, provider);
40
+ const previousColumns = columnMap(previous);
41
+ const previousIndexes = nameMap(previous.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)));
42
+ const previousChecks = nameMap(previous.checks);
43
+ const previousForeignKeys = nameMap(previous.foreignKeys);
44
+ return [
45
+ ...next.columns.filter((column) => !previousColumns.has(column.ormName)).map((column) => `alter table ${next.ormName} add column ${sqlColumnDefinition(next, column, provider)}`),
46
+ ...(next.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).filter((index) => !previousIndexes.has(index.name)).map((index) => createIndexSql(next, index, provider)),
47
+ ...provider === "sqlite" ? [] : (next.checks ?? []).filter((check) => !previousChecks.has(check.name)).map((check) => createCheckSql(next, check)),
48
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? (next.foreignKeys ?? []).filter((foreignKey) => !previousForeignKeys.has(foreignKey.name)).map((foreignKey) => createForeignKeySql(next, foreignKey)) : []
49
+ ];
50
+ };
51
+ const createSchemaMigrationSql = (fromVersion, toVersion, provider, relationMode = "foreign-keys") => {
52
+ const fromIndex = getSchemaVersionIndex(fromVersion);
53
+ const toIndex = getSchemaVersionIndex(toVersion);
54
+ if (fromIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${fromVersion}`);
55
+ if (toIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${toVersion}`);
56
+ if (fromIndex > toIndex) throw new Error(`Cannot migrate Hot Updater schema down to ${toVersion}.`);
57
+ const statements = [];
58
+ for (let index = fromIndex + 1; index <= toIndex; index += 1) {
59
+ const previous = hotUpdaterSchemaVersions[index - 1];
60
+ const next = hotUpdaterSchemaVersions[index];
61
+ const previousTables = new Map(previous.tables.map((table) => [table.ormName, table]));
62
+ for (const table of next.tables) {
63
+ if (table.internal) continue;
64
+ const previousTable = previousTables.get(table.ormName);
65
+ statements.push(...previousTable ? createChangedTableSql(previousTable, table, provider, relationMode) : createAddedTableSql(table, provider, relationMode));
66
+ }
67
+ }
68
+ return statements;
69
+ };
70
+ const createV029AlterSql = (provider) => createSchemaMigrationSql("0.21.0", "0.29.0", provider);
71
+ const createV031AlterSql = (provider, relationMode = "foreign-keys") => createSchemaMigrationSql("0.29.0", "0.31.0", provider, relationMode);
72
+ //#endregion
73
+ export { createV029AlterSql, createV031AlterSql };
@@ -0,0 +1,27 @@
1
+ const require_types = require("../../schema/types.cjs");
2
+ const require_registry = require("./registry.cjs");
3
+ const require_sql = require("./sql.cjs");
4
+ //#region src/db/schema/sqlOperations.ts
5
+ const getSettingsInsertSql = (provider) => {
6
+ if (provider === "mysql") return `insert into ${require_types.HOT_UPDATER_SETTINGS_TABLE} (\`key\`, value) values ('version', '${require_types.HOT_UPDATER_SCHEMA_VERSION}') on duplicate key update value = '${require_types.HOT_UPDATER_SCHEMA_VERSION}'`;
7
+ return `insert into ${require_types.HOT_UPDATER_SETTINGS_TABLE} (key, value) values ('version', '${require_types.HOT_UPDATER_SCHEMA_VERSION}') on conflict (key) do update set value = '${require_types.HOT_UPDATER_SCHEMA_VERSION}'`;
8
+ };
9
+ const createSqlCreateOperations = (provider, relationMode, settingsOperation) => [
10
+ ...require_sql.hotUpdaterCreateTableOperations,
11
+ ...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => ({
12
+ type: "custom",
13
+ sql: require_sql.createIndexSql(table, index, provider)
14
+ }))),
15
+ ...provider === "sqlite" ? [] : require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => ({
16
+ type: "custom",
17
+ sql: require_sql.createCheckSql(table, check)
18
+ }))),
19
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => ({
20
+ type: "custom",
21
+ sql: require_sql.createForeignKeySql(table, foreignKey)
22
+ }))) : [],
23
+ ...settingsOperation ? [settingsOperation] : []
24
+ ];
25
+ //#endregion
26
+ exports.createSqlCreateOperations = createSqlCreateOperations;
27
+ exports.getSettingsInsertSql = getSettingsInsertSql;
@@ -0,0 +1,26 @@
1
+ import { HOT_UPDATER_SCHEMA_VERSION, HOT_UPDATER_SETTINGS_TABLE } from "../../schema/types.mjs";
2
+ import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
3
+ import { createCheckSql, createForeignKeySql, createIndexSql, hotUpdaterCreateTableOperations } from "./sql.mjs";
4
+ //#region src/db/schema/sqlOperations.ts
5
+ const getSettingsInsertSql = (provider) => {
6
+ if (provider === "mysql") return `insert into ${HOT_UPDATER_SETTINGS_TABLE} (\`key\`, value) values ('version', '${HOT_UPDATER_SCHEMA_VERSION}') on duplicate key update value = '${HOT_UPDATER_SCHEMA_VERSION}'`;
7
+ 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}'`;
8
+ };
9
+ const createSqlCreateOperations = (provider, relationMode, settingsOperation) => [
10
+ ...hotUpdaterCreateTableOperations,
11
+ ...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => ({
12
+ type: "custom",
13
+ sql: createIndexSql(table, index, provider)
14
+ }))),
15
+ ...provider === "sqlite" ? [] : hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => ({
16
+ type: "custom",
17
+ sql: createCheckSql(table, check)
18
+ }))),
19
+ ...relationMode === "foreign-keys" && provider !== "sqlite" ? hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => ({
20
+ type: "custom",
21
+ sql: createForeignKeySql(table, foreignKey)
22
+ }))) : [],
23
+ ...settingsOperation ? [settingsOperation] : []
24
+ ];
25
+ //#endregion
26
+ export { createSqlCreateOperations, getSettingsInsertSql };