@hot-updater/server 1.0.0-rc.14 → 1.0.0-rc.16

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 (514) hide show
  1. package/dist/adapters/drizzle.cjs +35 -74
  2. package/dist/adapters/drizzle.d.cts +13 -5
  3. package/dist/adapters/drizzle.d.mts +13 -5
  4. package/dist/adapters/drizzle.mjs +34 -75
  5. package/dist/adapters/drizzleExecutor.cjs +114 -0
  6. package/dist/adapters/drizzleExecutor.d.cts +9 -0
  7. package/dist/adapters/drizzleExecutor.d.mts +9 -0
  8. package/dist/adapters/drizzleExecutor.mjs +112 -0
  9. package/dist/adapters/kysely.cjs +25 -31
  10. package/dist/adapters/kysely.d.cts +10 -6
  11. package/dist/adapters/kysely.d.mts +10 -6
  12. package/dist/adapters/kysely.mjs +25 -32
  13. package/dist/adapters/kyselyExecutor.cjs +32 -0
  14. package/dist/adapters/kyselyExecutor.d.cts +12 -0
  15. package/dist/adapters/kyselyExecutor.d.mts +12 -0
  16. package/dist/adapters/kyselyExecutor.mjs +32 -0
  17. package/dist/adapters/mongodb.cjs +28 -62
  18. package/dist/adapters/mongodb.d.cts +10 -5
  19. package/dist/adapters/mongodb.d.mts +10 -5
  20. package/dist/adapters/mongodb.mjs +28 -63
  21. package/dist/adapters/mongodbAdapter.cjs +174 -0
  22. package/dist/adapters/mongodbAdapter.d.cts +9 -0
  23. package/dist/adapters/mongodbAdapter.d.mts +9 -0
  24. package/dist/adapters/mongodbAdapter.mjs +173 -0
  25. package/dist/adapters/prisma.cjs +38 -257
  26. package/dist/adapters/prisma.d.cts +12 -7
  27. package/dist/adapters/prisma.d.mts +12 -7
  28. package/dist/adapters/prisma.mjs +38 -257
  29. package/dist/adapters/prismaExecutor.cjs +64 -0
  30. package/dist/adapters/prismaExecutor.mjs +64 -0
  31. package/dist/adapters/sqlProviders.cjs +9 -0
  32. package/dist/adapters/sqlProviders.mjs +9 -0
  33. package/dist/apiKeys.cjs +2 -6
  34. package/dist/apiKeys.d.cts +1 -23
  35. package/dist/apiKeys.d.mts +1 -23
  36. package/dist/apiKeys.mjs +2 -6
  37. package/dist/assembly/assemblePlugins.cjs +147 -0
  38. package/dist/assembly/assemblePlugins.d.cts +12 -0
  39. package/dist/assembly/assemblePlugins.d.mts +12 -0
  40. package/dist/assembly/assemblePlugins.mjs +146 -0
  41. package/dist/assembly/databasePlugins.cjs +23 -0
  42. package/dist/assembly/databasePlugins.d.cts +43 -0
  43. package/dist/assembly/databasePlugins.d.mts +43 -0
  44. package/dist/assembly/databasePlugins.mjs +22 -0
  45. package/dist/core/api.cjs +91 -0
  46. package/dist/core/api.d.cts +65 -0
  47. package/dist/core/api.d.mts +65 -0
  48. package/dist/core/api.mjs +87 -0
  49. package/dist/core/baseCandidates.cjs +71 -0
  50. package/dist/core/baseCandidates.d.cts +17 -0
  51. package/dist/core/baseCandidates.d.mts +17 -0
  52. package/dist/core/baseCandidates.mjs +69 -0
  53. package/dist/core/operations.cjs +350 -0
  54. package/dist/core/operations.mjs +350 -0
  55. package/dist/core/reads.cjs +273 -0
  56. package/dist/core/reads.d.cts +48 -0
  57. package/dist/core/reads.d.mts +48 -0
  58. package/dist/core/reads.mjs +267 -0
  59. package/dist/core/releases.cjs +193 -0
  60. package/dist/core/releases.mjs +190 -0
  61. package/dist/core/schema.cjs +279 -0
  62. package/dist/core/schema.d.cts +307 -0
  63. package/dist/core/schema.d.mts +307 -0
  64. package/dist/core/schema.mjs +277 -0
  65. package/dist/core/writes.cjs +96 -0
  66. package/dist/core/writes.mjs +91 -0
  67. package/dist/createHotUpdaterCore.cjs +58 -75
  68. package/dist/createHotUpdaterCore.d.cts +52 -44
  69. package/dist/createHotUpdaterCore.d.mts +52 -44
  70. package/dist/createHotUpdaterCore.mjs +59 -75
  71. package/dist/database/cursor.cjs +44 -0
  72. package/dist/database/cursor.d.cts +7 -0
  73. package/dist/database/cursor.d.mts +7 -0
  74. package/dist/database/cursor.mjs +40 -0
  75. package/dist/database/database.cjs +44 -0
  76. package/dist/database/database.d.cts +123 -0
  77. package/dist/database/database.d.mts +123 -0
  78. package/dist/database/database.mjs +44 -0
  79. package/dist/database/definitions.d.cts +68 -0
  80. package/dist/database/definitions.d.mts +68 -0
  81. package/dist/database/engine.cjs +37 -0
  82. package/dist/database/engine.d.cts +40 -0
  83. package/dist/database/engine.d.mts +40 -0
  84. package/dist/database/engine.mjs +37 -0
  85. package/dist/database/engineAggregates.cjs +115 -0
  86. package/dist/database/engineAggregates.mjs +112 -0
  87. package/dist/database/engineReads.cjs +180 -0
  88. package/dist/database/engineReads.d.cts +35 -0
  89. package/dist/database/engineReads.d.mts +35 -0
  90. package/dist/database/engineReads.mjs +179 -0
  91. package/dist/database/engineTransaction.cjs +403 -0
  92. package/dist/database/engineTransaction.d.cts +26 -0
  93. package/dist/database/engineTransaction.d.mts +26 -0
  94. package/dist/database/engineTransaction.mjs +402 -0
  95. package/dist/database/errors.cjs +27 -0
  96. package/dist/database/errors.d.cts +21 -0
  97. package/dist/database/errors.d.mts +21 -0
  98. package/dist/database/errors.mjs +24 -0
  99. package/dist/database/fence.cjs +124 -0
  100. package/dist/database/fence.d.cts +42 -0
  101. package/dist/database/fence.d.mts +42 -0
  102. package/dist/database/fence.mjs +116 -0
  103. package/dist/database/index.cjs +127 -0
  104. package/dist/database/index.d.cts +17 -0
  105. package/dist/database/index.d.mts +17 -0
  106. package/dist/database/index.mjs +15 -0
  107. package/dist/database/kv/kvAdapter.cjs +273 -0
  108. package/dist/database/kv/kvAdapter.d.cts +101 -0
  109. package/dist/database/kv/kvAdapter.d.mts +101 -0
  110. package/dist/database/kv/kvAdapter.mjs +272 -0
  111. package/dist/database/resolveSchema.cjs +196 -0
  112. package/dist/database/resolveSchema.d.cts +42 -0
  113. package/dist/database/resolveSchema.d.mts +42 -0
  114. package/dist/database/resolveSchema.mjs +193 -0
  115. package/dist/database/schema.cjs +21 -0
  116. package/dist/database/schema.d.cts +61 -0
  117. package/dist/database/schema.d.mts +61 -0
  118. package/dist/database/schema.mjs +20 -0
  119. package/dist/database/sql/sqlAdapter.cjs +282 -0
  120. package/dist/database/sql/sqlAdapter.d.cts +46 -0
  121. package/dist/database/sql/sqlAdapter.d.mts +46 -0
  122. package/dist/database/sql/sqlAdapter.mjs +279 -0
  123. package/dist/database/sql/sqlSchema.cjs +115 -0
  124. package/dist/database/sql/sqlSchema.d.cts +8 -0
  125. package/dist/database/sql/sqlSchema.d.mts +8 -0
  126. package/dist/database/sql/sqlSchema.mjs +111 -0
  127. package/dist/db/builtInDatabase.cjs +104 -0
  128. package/dist/db/builtInDatabase.d.cts +38 -0
  129. package/dist/db/builtInDatabase.d.mts +38 -0
  130. package/dist/db/builtInDatabase.mjs +97 -0
  131. package/dist/db/createBundleDiff.cjs +4 -4
  132. package/dist/db/createBundleDiff.d.cts +3 -2
  133. package/dist/db/createBundleDiff.d.mts +3 -2
  134. package/dist/db/createBundleDiff.mjs +5 -5
  135. package/dist/db/engineDrizzleSchema.cjs +54 -0
  136. package/dist/db/engineDrizzleSchema.mjs +54 -0
  137. package/dist/db/engineMigrator.cjs +53 -0
  138. package/dist/db/engineMigrator.mjs +53 -0
  139. package/dist/db/enginePrismaSchema.cjs +85 -0
  140. package/dist/db/enginePrismaSchema.d.cts +5 -0
  141. package/dist/db/enginePrismaSchema.d.mts +5 -0
  142. package/dist/db/enginePrismaSchema.mjs +84 -0
  143. package/dist/db/engineSql.cjs +26 -0
  144. package/dist/db/engineSql.d.cts +17 -0
  145. package/dist/db/engineSql.d.mts +17 -0
  146. package/dist/db/engineSql.mjs +25 -0
  147. package/dist/db/engineSqlMigrator.cjs +66 -0
  148. package/dist/db/engineSqlMigrator.mjs +66 -0
  149. package/dist/db/fixedMigratorShared.cjs +0 -11
  150. package/dist/db/fixedMigratorShared.mjs +1 -8
  151. package/dist/db/index.cjs +23 -8
  152. package/dist/db/index.d.cts +10 -3
  153. package/dist/db/index.d.mts +10 -3
  154. package/dist/db/index.mjs +16 -8
  155. package/dist/db/releaseCatalog.cjs +20 -43
  156. package/dist/db/releaseCatalog.d.cts +2 -2
  157. package/dist/db/releaseCatalog.d.mts +2 -2
  158. package/dist/db/releaseCatalog.mjs +20 -44
  159. package/dist/db/schemaSettings.cjs +63 -0
  160. package/dist/db/schemaSettings.d.cts +12 -0
  161. package/dist/db/schemaSettings.d.mts +12 -0
  162. package/dist/db/schemaSettings.mjs +62 -0
  163. package/dist/db/settingsMigrator.cjs +92 -0
  164. package/dist/db/settingsMigrator.mjs +89 -0
  165. package/dist/db/types.cjs +1 -12
  166. package/dist/db/types.d.cts +26 -66
  167. package/dist/db/types.d.mts +26 -66
  168. package/dist/db/types.mjs +2 -11
  169. package/dist/db/updateArtifacts.cjs +38 -67
  170. package/dist/db/updateArtifacts.mjs +40 -69
  171. package/dist/handler.cjs +72 -43
  172. package/dist/handler.d.cts +3 -5
  173. package/dist/handler.d.mts +3 -5
  174. package/dist/handler.mjs +73 -43
  175. package/dist/handlerAdminRoutes.cjs +375 -0
  176. package/dist/handlerAdminRoutes.mjs +373 -0
  177. package/dist/handlerParameters.cjs +6 -11
  178. package/dist/handlerParameters.mjs +6 -10
  179. package/dist/handlerReleaseCatalogRoutes.cjs +11 -13
  180. package/dist/handlerReleaseCatalogRoutes.mjs +11 -13
  181. package/dist/handlerTypes.d.cts +2 -55
  182. package/dist/handlerTypes.d.mts +2 -55
  183. package/dist/handlerVersionRoutes.cjs +20 -4
  184. package/dist/handlerVersionRoutes.mjs +20 -4
  185. package/dist/index.cjs +4 -7
  186. package/dist/index.d.cts +8 -7
  187. package/dist/index.d.mts +8 -7
  188. package/dist/index.mjs +4 -4
  189. package/dist/insights/domain.d.cts +12 -0
  190. package/dist/insights/domain.d.mts +12 -0
  191. package/dist/insights/errors.cjs +34 -0
  192. package/dist/insights/errors.mjs +34 -1
  193. package/dist/insights/eventInput.cjs +14 -19
  194. package/dist/insights/eventInput.mjs +15 -20
  195. package/dist/insights/provider.cjs +47 -23
  196. package/dist/insights/provider.mjs +47 -24
  197. package/dist/insights/routes.cjs +79 -14
  198. package/dist/insights/routes.mjs +77 -14
  199. package/dist/node.d.cts +1 -1
  200. package/dist/node.d.mts +1 -1
  201. package/dist/package.cjs +1 -1
  202. package/dist/package.mjs +1 -1
  203. package/dist/plugins/api-keys/index.cjs +50 -0
  204. package/dist/plugins/api-keys/index.d.cts +85 -0
  205. package/dist/plugins/api-keys/index.d.mts +85 -0
  206. package/dist/plugins/api-keys/index.mjs +47 -0
  207. package/dist/plugins/api-keys/model.cjs +58 -0
  208. package/dist/plugins/api-keys/model.d.cts +8 -0
  209. package/dist/plugins/api-keys/model.d.mts +8 -0
  210. package/dist/plugins/api-keys/model.mjs +58 -0
  211. package/dist/plugins/api-keys/schema.cjs +38 -0
  212. package/dist/plugins/api-keys/schema.d.cts +44 -0
  213. package/dist/plugins/api-keys/schema.d.mts +44 -0
  214. package/dist/plugins/api-keys/schema.mjs +39 -0
  215. package/dist/plugins/builtIn.cjs +7 -0
  216. package/dist/plugins/builtIn.mjs +6 -0
  217. package/dist/plugins/definePlugin.cjs +5 -0
  218. package/dist/plugins/definePlugin.d.cts +73 -0
  219. package/dist/plugins/definePlugin.d.mts +73 -0
  220. package/dist/plugins/definePlugin.mjs +5 -0
  221. package/dist/plugins/index.cjs +17 -0
  222. package/dist/plugins/index.d.cts +9 -0
  223. package/dist/plugins/index.d.mts +9 -0
  224. package/dist/plugins/index.mjs +7 -0
  225. package/dist/plugins/insights/index.cjs +48 -0
  226. package/dist/plugins/insights/index.d.cts +295 -0
  227. package/dist/plugins/insights/index.d.mts +295 -0
  228. package/dist/plugins/insights/index.mjs +44 -0
  229. package/dist/plugins/insights/model.cjs +17 -0
  230. package/dist/plugins/insights/model.d.cts +10 -0
  231. package/dist/plugins/insights/model.d.mts +10 -0
  232. package/dist/plugins/insights/model.mjs +17 -0
  233. package/dist/plugins/insights/reads.cjs +471 -0
  234. package/dist/plugins/insights/reads.mjs +466 -0
  235. package/dist/plugins/insights/recordEvent.cjs +135 -0
  236. package/dist/plugins/insights/recordEvent.d.cts +13 -0
  237. package/dist/plugins/insights/recordEvent.d.mts +13 -0
  238. package/dist/plugins/insights/recordEvent.mjs +132 -0
  239. package/dist/plugins/insights/schema.cjs +347 -0
  240. package/dist/plugins/insights/schema.d.cts +258 -0
  241. package/dist/plugins/insights/schema.d.mts +258 -0
  242. package/dist/plugins/insights/schema.mjs +344 -0
  243. package/dist/types/index.d.cts +2 -28
  244. package/dist/types/index.d.mts +2 -28
  245. package/package.json +28 -5
  246. package/src/adapters/drizzle.conformance.integration.spec.ts +34 -0
  247. package/src/adapters/drizzle.readBudgets.integration.spec.ts +41 -0
  248. package/src/adapters/drizzle.spec.ts +270 -399
  249. package/src/adapters/drizzle.ts +48 -140
  250. package/src/adapters/drizzleExecutor.ts +166 -0
  251. package/src/adapters/kysely.conformance.integration.spec.ts +36 -0
  252. package/src/adapters/kysely.readBudgets.integration.spec.ts +42 -0
  253. package/src/adapters/kysely.spec.ts +204 -171
  254. package/src/adapters/kysely.ts +32 -93
  255. package/src/adapters/kyselyExecutor.ts +53 -0
  256. package/src/adapters/mongodb.integration.spec.ts +143 -446
  257. package/src/adapters/mongodb.readBudgets.integration.spec.ts +61 -0
  258. package/src/adapters/mongodb.ts +36 -123
  259. package/src/adapters/mongodbAdapter.ts +293 -0
  260. package/src/adapters/prisma.conformance.integration.spec.ts +36 -0
  261. package/src/adapters/prisma.integration.spec.ts +138 -0
  262. package/src/adapters/prisma.readBudgets.integration.spec.ts +40 -0
  263. package/src/adapters/prisma.spec.ts +216 -433
  264. package/src/adapters/prisma.ts +60 -524
  265. package/src/adapters/prismaExecutor.ts +107 -0
  266. package/src/adapters/prismaTestClients.ts +175 -0
  267. package/src/adapters/sqlProviders.ts +14 -0
  268. package/src/apiKeys.integration.spec.ts +19 -119
  269. package/src/apiKeys.spec.ts +39 -35
  270. package/src/apiKeys.ts +2 -8
  271. package/src/assembly/assemblePlugins.ts +269 -0
  272. package/src/assembly/assembly.spec.ts +325 -0
  273. package/src/assembly/assembly.types.spec.ts +155 -0
  274. package/src/assembly/builtInRoutes.spec.ts +213 -0
  275. package/src/assembly/databasePlugins.spec.ts +71 -0
  276. package/src/assembly/databasePlugins.ts +96 -0
  277. package/src/core/api.ts +139 -0
  278. package/src/core/baseCandidates.spec.ts +378 -0
  279. package/src/core/baseCandidates.ts +136 -0
  280. package/src/core/index.ts +44 -0
  281. package/src/core/operations.spec.ts +415 -0
  282. package/src/core/operations.ts +551 -0
  283. package/src/core/reads.spec.ts +300 -0
  284. package/src/core/reads.ts +417 -0
  285. package/src/core/releases.spec.ts +308 -0
  286. package/src/core/releases.ts +345 -0
  287. package/src/core/schema.ts +173 -0
  288. package/src/core/writes.ts +160 -0
  289. package/src/createHotUpdaterCore.ts +191 -181
  290. package/src/database/cursor.ts +65 -0
  291. package/src/database/database.ts +335 -0
  292. package/src/database/database.types.spec.ts +135 -0
  293. package/src/database/definitions.ts +72 -0
  294. package/src/database/engine.ts +62 -0
  295. package/src/database/engineAggregates.spec.ts +539 -0
  296. package/src/database/engineAggregates.ts +193 -0
  297. package/src/database/engineReads.spec.ts +219 -0
  298. package/src/database/engineReads.ts +302 -0
  299. package/src/database/engineTransaction.spec.ts +710 -0
  300. package/src/database/engineTransaction.ts +588 -0
  301. package/src/database/errors.ts +30 -0
  302. package/src/database/fence.spec.ts +223 -0
  303. package/src/database/fence.ts +171 -0
  304. package/src/database/index.ts +154 -0
  305. package/src/database/kv/kvAdapter.conformance.integration.spec.ts +17 -0
  306. package/src/database/kv/kvAdapter.readBudgets.integration.spec.ts +17 -0
  307. package/src/database/kv/kvAdapter.spec.ts +468 -0
  308. package/src/database/kv/kvAdapter.ts +450 -0
  309. package/src/database/kv/kvTestStore.ts +91 -0
  310. package/src/database/memory.readBudgets.integration.spec.ts +13 -0
  311. package/src/database/resolveSchema.spec.ts +230 -0
  312. package/src/database/resolveSchema.ts +372 -0
  313. package/src/database/schema.ts +169 -0
  314. package/src/database/schema.types.spec.ts +94 -0
  315. package/src/database/sql/docker-compose.yml +36 -0
  316. package/src/database/sql/sqlAdapter.integration.spec.ts +148 -0
  317. package/src/database/sql/sqlAdapter.readBudgets.integration.spec.ts +109 -0
  318. package/src/database/sql/sqlAdapter.spec.ts +255 -0
  319. package/src/database/sql/sqlAdapter.ts +532 -0
  320. package/src/database/sql/sqlSchema.ts +205 -0
  321. package/src/database/sql/sqlTestExecutors.ts +183 -0
  322. package/src/databaseTestSuite.spec.ts +39 -0
  323. package/src/db/builtInDatabase.ts +149 -0
  324. package/src/db/bundleRows.spec.ts +3 -3
  325. package/src/db/createBundleDiff.spec.ts +43 -29
  326. package/src/db/createBundleDiff.ts +13 -7
  327. package/src/db/engineDrizzleSchema.ts +72 -0
  328. package/src/db/engineMigrator.ts +105 -0
  329. package/src/db/enginePrismaSchema.ts +147 -0
  330. package/src/db/engineSql.spec.ts +129 -0
  331. package/src/db/engineSql.ts +48 -0
  332. package/src/db/engineSqlMigrator.ts +116 -0
  333. package/src/db/fixedMigratorShared.ts +1 -20
  334. package/src/db/index.spec.ts +116 -829
  335. package/src/db/index.ts +43 -14
  336. package/src/db/pluginTables.spec.ts +218 -0
  337. package/src/db/releaseCatalog.ts +48 -90
  338. package/src/db/schemaSettings.ts +104 -0
  339. package/src/db/settingsMigrator.spec.ts +65 -0
  340. package/src/db/settingsMigrator.ts +152 -0
  341. package/src/db/types.ts +25 -171
  342. package/src/db/updateArtifacts.spec.ts +170 -294
  343. package/src/db/updateArtifacts.ts +74 -142
  344. package/src/db/updateCheck.bench.ts +47 -0
  345. package/src/handler-standalone.integration.spec.ts +204 -410
  346. package/src/handler.spec.ts +134 -51
  347. package/src/handler.testFixtures.ts +14 -19
  348. package/src/handler.ts +163 -75
  349. package/src/handlerAdminRoutes.spec.ts +183 -0
  350. package/src/handlerAdminRoutes.ts +536 -0
  351. package/src/handlerAuth.integration.spec.ts +3 -3
  352. package/src/handlerManagement.spec.ts +136 -196
  353. package/src/handlerReleaseCatalogRoutes.ts +15 -17
  354. package/src/handlerTypes.ts +3 -80
  355. package/src/handlerVersionRoutes.ts +20 -7
  356. package/src/index.ts +5 -12
  357. package/src/insights/domain.ts +12 -0
  358. package/src/insights/errors.spec.ts +48 -0
  359. package/src/insights/errors.ts +51 -0
  360. package/src/insights/eventInput.ts +27 -24
  361. package/src/insights/insights.integration.spec.ts +228 -78
  362. package/src/insights/provider.spec.ts +203 -25
  363. package/src/insights/provider.ts +88 -32
  364. package/src/insights/routes.ts +95 -20
  365. package/src/lintRules.spec.ts +76 -0
  366. package/src/plugins/api-keys/apiKeysPlugin.spec.ts +172 -0
  367. package/src/plugins/api-keys/index.ts +66 -0
  368. package/src/plugins/api-keys/model.ts +69 -0
  369. package/src/plugins/api-keys/schema.ts +22 -0
  370. package/src/plugins/builtIn.ts +5 -0
  371. package/src/plugins/definePlugin.ts +100 -0
  372. package/src/plugins/index.ts +55 -0
  373. package/src/plugins/insights/index.ts +86 -0
  374. package/src/plugins/insights/insightsRollout.integration.spec.ts +187 -0
  375. package/src/plugins/insights/model.spec.ts +66 -0
  376. package/src/plugins/insights/model.ts +19 -0
  377. package/src/plugins/insights/reads.spec.ts +725 -0
  378. package/src/plugins/insights/reads.ts +707 -0
  379. package/src/plugins/insights/recordEvent.spec.ts +443 -0
  380. package/src/plugins/insights/recordEvent.ts +238 -0
  381. package/src/plugins/insights/schema.ts +229 -0
  382. package/src/plugins/pluginTestHarness.spec.ts +56 -0
  383. package/src/readBudgets.testFixtures.ts +15 -0
  384. package/src/releaseCatalogRoutes.integration.spec.ts +47 -92
  385. package/src/runtime.spec.ts +91 -77
  386. package/src/runtime.testFixtures.ts +28 -44
  387. package/src/runtimeBundles.integration.spec.ts +112 -0
  388. package/src/testUtilsMutation.integration.spec.ts +215 -0
  389. package/src/testUtilsPackage.integration.spec.ts +176 -0
  390. package/src/types/index.ts +0 -32
  391. package/dist/adapters/databaseConstraintErrors.cjs +0 -22
  392. package/dist/adapters/databaseConstraintErrors.mjs +0 -21
  393. package/dist/adapters/databasePluginUtils.cjs +0 -130
  394. package/dist/adapters/databasePluginUtils.mjs +0 -118
  395. package/dist/adapters/drizzleCrud.cjs +0 -340
  396. package/dist/adapters/drizzleCrud.mjs +0 -337
  397. package/dist/adapters/drizzleLazyDB.cjs +0 -103
  398. package/dist/adapters/drizzleLazyDB.mjs +0 -103
  399. package/dist/adapters/drizzleQuery.cjs +0 -69
  400. package/dist/adapters/drizzleQuery.mjs +0 -69
  401. package/dist/adapters/kyselyCrud.cjs +0 -293
  402. package/dist/adapters/kyselyCrud.mjs +0 -292
  403. package/dist/adapters/kyselyQuery.cjs +0 -56
  404. package/dist/adapters/kyselyQuery.mjs +0 -56
  405. package/dist/adapters/mongodbCollections.cjs +0 -38
  406. package/dist/adapters/mongodbCollections.mjs +0 -32
  407. package/dist/adapters/mongodbQuery.cjs +0 -90
  408. package/dist/adapters/mongodbQuery.mjs +0 -83
  409. package/dist/adapters/mongodbReads.cjs +0 -206
  410. package/dist/adapters/mongodbReads.mjs +0 -206
  411. package/dist/adapters/mongodbWrites.cjs +0 -133
  412. package/dist/adapters/mongodbWrites.mjs +0 -133
  413. package/dist/adapters/prismaInsights.cjs +0 -99
  414. package/dist/adapters/prismaInsights.mjs +0 -97
  415. package/dist/adapters/prismaQuery.cjs +0 -57
  416. package/dist/adapters/prismaQuery.mjs +0 -56
  417. package/dist/adapters/prismaRows.cjs +0 -197
  418. package/dist/adapters/prismaRows.mjs +0 -188
  419. package/dist/db/databasePluginCore.cjs +0 -137
  420. package/dist/db/databasePluginCore.mjs +0 -137
  421. package/dist/db/fixedMigrator.cjs +0 -79
  422. package/dist/db/fixedMigrator.mjs +0 -78
  423. package/dist/db/fixedMigratorMongo.cjs +0 -321
  424. package/dist/db/fixedMigratorMongo.mjs +0 -321
  425. package/dist/db/mongoMigrationExecution.cjs +0 -11
  426. package/dist/db/mongoMigrationExecution.mjs +0 -11
  427. package/dist/db/schema/insightsCollation.cjs +0 -14
  428. package/dist/db/schema/insightsCollation.mjs +0 -14
  429. package/dist/db/schema/mongodb.cjs +0 -25
  430. package/dist/db/schema/mongodb.mjs +0 -25
  431. package/dist/db/schema/registry.cjs +0 -21
  432. package/dist/db/schema/registry.mjs +0 -17
  433. package/dist/db/schema/sql.cjs +0 -105
  434. package/dist/db/schema/sql.mjs +0 -97
  435. package/dist/db/schema/sqlOperations.cjs +0 -27
  436. package/dist/db/schema/sqlOperations.mjs +0 -26
  437. package/dist/db/schemaGenerators.cjs +0 -276
  438. package/dist/db/schemaGenerators.mjs +0 -274
  439. package/dist/db/schemaReadiness.cjs +0 -26
  440. package/dist/db/schemaReadiness.d.cts +0 -9
  441. package/dist/db/schemaReadiness.d.mts +0 -9
  442. package/dist/db/schemaReadiness.mjs +0 -25
  443. package/dist/db/sqlMigrationExecution.cjs +0 -67
  444. package/dist/db/sqlMigrationExecution.mjs +0 -67
  445. package/dist/handlerBundleRoutes.cjs +0 -155
  446. package/dist/handlerBundleRoutes.mjs +0 -155
  447. package/dist/handlerReleaseManagementRoutes.cjs +0 -124
  448. package/dist/handlerReleaseManagementRoutes.mjs +0 -124
  449. package/dist/schema/dsl.cjs +0 -103
  450. package/dist/schema/dsl.mjs +0 -87
  451. package/dist/schema/index.cjs +0 -20
  452. package/dist/schema/index.mjs +0 -7
  453. package/dist/schema/settings.cjs +0 -9
  454. package/dist/schema/settings.mjs +0 -9
  455. package/dist/schema/types.cjs +0 -8
  456. package/dist/schema/types.mjs +0 -6
  457. package/dist/schema/v1_0_0.cjs +0 -393
  458. package/dist/schema/v1_0_0.mjs +0 -385
  459. package/src/adapters/databaseConstraintErrors.ts +0 -25
  460. package/src/adapters/databasePluginTestDatabase.ts +0 -116
  461. package/src/adapters/databasePluginUtils.spec.ts +0 -29
  462. package/src/adapters/databasePluginUtils.ts +0 -238
  463. package/src/adapters/drizzleCrud.ts +0 -610
  464. package/src/adapters/drizzleLazyDB.ts +0 -284
  465. package/src/adapters/drizzleQuery.ts +0 -164
  466. package/src/adapters/kyselyCrud.ts +0 -696
  467. package/src/adapters/kyselyInsights.spec.ts +0 -168
  468. package/src/adapters/kyselyQuery.ts +0 -128
  469. package/src/adapters/mongodb.spec.ts +0 -230
  470. package/src/adapters/mongodbCollections.ts +0 -78
  471. package/src/adapters/mongodbQuery.ts +0 -245
  472. package/src/adapters/mongodbReads.ts +0 -387
  473. package/src/adapters/mongodbRows.spec.ts +0 -64
  474. package/src/adapters/mongodbRows.ts +0 -118
  475. package/src/adapters/mongodbTestClient.ts +0 -443
  476. package/src/adapters/mongodbTestFilter.ts +0 -170
  477. package/src/adapters/mongodbWrites.ts +0 -261
  478. package/src/adapters/prismaInsights.ts +0 -190
  479. package/src/adapters/prismaQuery.ts +0 -129
  480. package/src/adapters/prismaRows.spec.ts +0 -98
  481. package/src/adapters/prismaRows.ts +0 -308
  482. package/src/adapters/prismaTestClient.ts +0 -478
  483. package/src/calculatePagination.ts +0 -34
  484. package/src/db/databasePluginCore.spec.ts +0 -62
  485. package/src/db/databasePluginCore.testFixtures.ts +0 -76
  486. package/src/db/databasePluginCore.ts +0 -185
  487. package/src/db/databasePluginUpdateCheck.bench.ts +0 -117
  488. package/src/db/fixedMigrator.spec.ts +0 -294
  489. package/src/db/fixedMigrator.ts +0 -147
  490. package/src/db/fixedMigratorMongo.spec.ts +0 -253
  491. package/src/db/fixedMigratorMongo.ts +0 -425
  492. package/src/db/hotUpdaterSchema.ts +0 -5
  493. package/src/db/mongoMigrationExecution.ts +0 -23
  494. package/src/db/schema/definitions.ts +0 -1
  495. package/src/db/schema/insightsCollation.ts +0 -21
  496. package/src/db/schema/mongodb.ts +0 -40
  497. package/src/db/schema/registry.ts +0 -55
  498. package/src/db/schema/sql.ts +0 -244
  499. package/src/db/schema/sqlOperations.ts +0 -63
  500. package/src/db/schema/types.ts +0 -1
  501. package/src/db/schemaGenerators.ts +0 -495
  502. package/src/db/schemaReadiness.ts +0 -34
  503. package/src/db/sqlMigrationExecution.spec.ts +0 -65
  504. package/src/db/sqlMigrationExecution.ts +0 -108
  505. package/src/db/types.spec.ts +0 -63
  506. package/src/handlerBundleRoutes.ts +0 -259
  507. package/src/handlerReleaseManagementRoutes.ts +0 -213
  508. package/src/schema/dsl-all-versions.spec.ts +0 -35
  509. package/src/schema/dsl.ts +0 -187
  510. package/src/schema/index.ts +0 -10
  511. package/src/schema/settings.ts +0 -15
  512. package/src/schema/types.ts +0 -79
  513. package/src/schema/v1_0_0.spec.ts +0 -220
  514. package/src/schema/v1_0_0.ts +0 -511
@@ -1,425 +0,0 @@
1
- import type { MongoClient } from "mongodb";
2
-
3
- import {
4
- HOT_UPDATER_CORE_SCHEMA_KEY,
5
- HOT_UPDATER_SCHEMA_VERSION,
6
- HOT_UPDATER_SETTINGS_TABLE,
7
- } from "../schema/types";
8
- import {
9
- assertCurrentOrEmptySchemaVersion,
10
- assertSupportedMigrationMode,
11
- getEmptyMigrationResult,
12
- inferLegacyCoreSchemaVersion,
13
- isCurrentSchemaVersion,
14
- } from "./fixedMigratorShared";
15
- import { executeMongoMigration } from "./mongoMigrationExecution";
16
- import { createMongoMigrationOperations } from "./schema/mongodb";
17
- import {
18
- hotUpdaterSchema,
19
- schemaIndexAppliesToProvider,
20
- } from "./schema/registry";
21
- import type {
22
- MigrateOptions,
23
- MigrationOperation,
24
- MigrationResult,
25
- Migrator,
26
- } from "./types";
27
-
28
- const isMongoNamespaceExistsError = (error: unknown): boolean => {
29
- if (!(error instanceof Error)) return false;
30
- const mongoError = error as { code?: unknown; codeName?: unknown };
31
- return mongoError.code === 48 || mongoError.codeName === "NamespaceExists";
32
- };
33
-
34
- const isMongoNamespaceNotFoundError = (error: unknown): boolean => {
35
- if (!(error instanceof Error)) return false;
36
- const mongoError = error as { code?: unknown; codeName?: unknown };
37
- return mongoError.code === 26 || mongoError.codeName === "NamespaceNotFound";
38
- };
39
-
40
- const ignoreExistingCollection = (error: unknown): undefined => {
41
- if (isMongoNamespaceExistsError(error)) {
42
- return undefined;
43
- }
44
- throw error;
45
- };
46
-
47
- const mongoNullableString = { bsonType: ["string", "null"] } as const;
48
- const mongoByteSize = {
49
- bsonType: ["double", "int", "long"],
50
- maximum: Number.MAX_SAFE_INTEGER,
51
- minimum: 0,
52
- } as const;
53
-
54
- const mongoBundleValidator = {
55
- $and: [
56
- {
57
- $jsonSchema: {
58
- bsonType: "object",
59
- properties: {
60
- archive_byte_size: mongoByteSize,
61
- asset_base_storage_uri: mongoNullableString,
62
- file_hash: { bsonType: "string" },
63
- git_commit_hash: mongoNullableString,
64
- id: { bsonType: "string" },
65
- manifest_file_hash: mongoNullableString,
66
- manifest_storage_uri: mongoNullableString,
67
- metadata: { bsonType: "object" },
68
- platform: { enum: ["ios", "android"] },
69
- storage_uri: { bsonType: "string" },
70
- },
71
- required: [
72
- "id",
73
- "platform",
74
- "file_hash",
75
- "git_commit_hash",
76
- "storage_uri",
77
- "archive_byte_size",
78
- "metadata",
79
- "manifest_storage_uri",
80
- "manifest_file_hash",
81
- "asset_base_storage_uri",
82
- ],
83
- },
84
- },
85
- {
86
- $expr: {
87
- $eq: [{ $trunc: "$archive_byte_size" }, "$archive_byte_size"],
88
- },
89
- },
90
- ],
91
- } as const;
92
-
93
- const mongoPatchValidator = {
94
- $and: [
95
- {
96
- $jsonSchema: {
97
- bsonType: "object",
98
- properties: {
99
- base_bundle_id: { bsonType: "string" },
100
- base_file_hash: { bsonType: "string" },
101
- bundle_id: { bsonType: "string" },
102
- id: { bsonType: "string" },
103
- order_index: mongoByteSize,
104
- byte_size: mongoByteSize,
105
- patch_file_hash: { bsonType: "string" },
106
- patch_storage_uri: { bsonType: "string" },
107
- },
108
- required: [
109
- "id",
110
- "bundle_id",
111
- "base_bundle_id",
112
- "base_file_hash",
113
- "patch_file_hash",
114
- "patch_storage_uri",
115
- "byte_size",
116
- "order_index",
117
- ],
118
- },
119
- },
120
- {
121
- $expr: {
122
- $and: [
123
- { $eq: [{ $trunc: "$order_index" }, "$order_index"] },
124
- { $eq: [{ $trunc: "$byte_size" }, "$byte_size"] },
125
- ],
126
- },
127
- },
128
- ],
129
- } as const;
130
-
131
- const mongoReleaseValidator = {
132
- $jsonSchema: {
133
- bsonType: "object",
134
- properties: {
135
- bundle_id: mongoNullableString,
136
- channel_id: { bsonType: "string" },
137
- created_at_ms: { bsonType: ["double", "int", "long"] },
138
- enabled: { bsonType: "bool" },
139
- fingerprint_hash: mongoNullableString,
140
- id: { bsonType: "string" },
141
- kind: { enum: ["BUNDLE", "EMBEDDED"] },
142
- message: mongoNullableString,
143
- operation: { enum: ["DEPLOY", "PROMOTE", "ROLLBACK"] },
144
- platform: { enum: ["ios", "android"] },
145
- revision: { bsonType: ["int", "long"] },
146
- rollout_cohort_count: { bsonType: ["int", "long"] },
147
- scope_key: { bsonType: "string" },
148
- should_force_update: { bsonType: "bool" },
149
- source_release_id: mongoNullableString,
150
- strategy: { enum: ["APP_VERSION", "FINGERPRINT"] },
151
- target_app_version: mongoNullableString,
152
- target_cohorts: { bsonType: "array", items: { bsonType: "string" } },
153
- updated_at_ms: { bsonType: ["double", "int", "long"] },
154
- },
155
- required: [
156
- "id",
157
- "revision",
158
- "scope_key",
159
- "channel_id",
160
- "platform",
161
- "kind",
162
- "bundle_id",
163
- "strategy",
164
- "target_app_version",
165
- "fingerprint_hash",
166
- "enabled",
167
- "should_force_update",
168
- "message",
169
- "rollout_cohort_count",
170
- "target_cohorts",
171
- "operation",
172
- "source_release_id",
173
- "created_at_ms",
174
- "updated_at_ms",
175
- ],
176
- },
177
- } as const;
178
-
179
- const mongoReleaseCatalogValidator = {
180
- $jsonSchema: {
181
- bsonType: "object",
182
- properties: {
183
- catalog_id: { bsonType: "string" },
184
- byte_size: { bsonType: ["int", "long"] },
185
- catalog_hash: { bsonType: "string" },
186
- channel_id: { bsonType: "string" },
187
- channel_key: { bsonType: "string" },
188
- fingerprint_hash: mongoNullableString,
189
- generation: { bsonType: ["double", "int", "long"] },
190
- is_tombstone: { bsonType: "bool" },
191
- payload: { bsonType: "string" },
192
- platform: { enum: ["ios", "android"] },
193
- scope_key: { bsonType: "string" },
194
- strategy: { enum: ["APP_VERSION", "FINGERPRINT"] },
195
- updated_at_ms: { bsonType: ["double", "int", "long"] },
196
- },
197
- required: [
198
- "scope_key",
199
- "catalog_id",
200
- "strategy",
201
- "channel_id",
202
- "channel_key",
203
- "platform",
204
- "fingerprint_hash",
205
- "generation",
206
- "payload",
207
- "catalog_hash",
208
- "byte_size",
209
- "is_tombstone",
210
- "updated_at_ms",
211
- ],
212
- },
213
- } as const;
214
-
215
- const createSettingsKeyIndexOperation = (): MigrationOperation => ({
216
- description: `Ensure unique MongoDB index: ${HOT_UPDATER_SETTINGS_TABLE}(key)`,
217
- type: "custom",
218
- });
219
-
220
- export const createMongoMigrator = (client: MongoClient): Migrator => {
221
- const settings = client
222
- .db()
223
- .collection<{ key: string; value: unknown }>(HOT_UPDATER_SETTINGS_TABLE);
224
- const getSetting = async (key: string): Promise<string | undefined> => {
225
- const rows = await settings.find({ key }).limit(2).toArray();
226
- const [row, duplicate] = rows;
227
- if (!row) return undefined;
228
- if (duplicate) {
229
- throw new Error(`Duplicate Hot Updater schema setting: ${key}`);
230
- }
231
- if (typeof row.value !== "string") {
232
- throw new Error(`Invalid Hot Updater schema setting: ${key}`);
233
- }
234
- return row.value;
235
- };
236
- const getCoreVersion = (): Promise<string | undefined> =>
237
- getSetting(HOT_UPDATER_CORE_SCHEMA_KEY);
238
- const getSchemaVersions = async (): Promise<{
239
- readonly coreVersion: string | undefined;
240
- readonly legacyCoreVersion: string | undefined;
241
- }> => {
242
- const coreVersion = await getCoreVersion();
243
- const legacyCoreVersion = inferLegacyCoreSchemaVersion(
244
- await getSetting("version"),
245
- );
246
- return { coreVersion, legacyCoreVersion };
247
- };
248
- const getVersion = async (): Promise<string | undefined> => {
249
- const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
250
- return coreVersion ?? legacyCoreVersion;
251
- };
252
- const getSettingsKeyIndexState = async (): Promise<
253
- "missing" | "non-unique" | "unique"
254
- > => {
255
- const indexes = await settings
256
- .listIndexes()
257
- .toArray()
258
- .catch((error: unknown) => {
259
- if (isMongoNamespaceNotFoundError(error)) return [];
260
- throw error;
261
- });
262
- const index = indexes.find(({ key }) => {
263
- const fields = Object.entries(key);
264
- return (
265
- fields.length === 1 && fields[0]?.[0] === "key" && fields[0][1] === 1
266
- );
267
- });
268
- if (!index) return "missing";
269
- return index.unique === true &&
270
- index.sparse !== true &&
271
- index.partialFilterExpression === undefined
272
- ? "unique"
273
- : "non-unique";
274
- };
275
- const rejectNonUniqueSettingsKeyIndex = (): never => {
276
- throw new Error(
277
- "Hot Updater settings key index must enforce uniqueness for every key.",
278
- );
279
- };
280
- const ensureSettingsKeyIndex = async (): Promise<void> => {
281
- const state = await getSettingsKeyIndexState();
282
- if (state === "unique") return;
283
- if (state === "non-unique") rejectNonUniqueSettingsKeyIndex();
284
- await settings.createIndex({ key: 1 }, { unique: true });
285
- };
286
- const makeResult = async (
287
- options: MigrateOptions = {},
288
- ): Promise<MigrationResult> => {
289
- assertSupportedMigrationMode(options);
290
-
291
- const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
292
- const settingsKeyIndexState = await getSettingsKeyIndexState();
293
- if (settingsKeyIndexState === "non-unique") {
294
- rejectNonUniqueSettingsKeyIndex();
295
- }
296
- if (isCurrentSchemaVersion(coreVersion)) {
297
- if (settingsKeyIndexState === "unique") {
298
- return getEmptyMigrationResult();
299
- }
300
- return {
301
- ...getEmptyMigrationResult(),
302
- execute: ensureSettingsKeyIndex,
303
- operations: [createSettingsKeyIndexOperation()],
304
- };
305
- }
306
- assertCurrentOrEmptySchemaVersion(coreVersion ?? legacyCoreVersion);
307
- const settingsOperation =
308
- options.updateSettings === false
309
- ? undefined
310
- : ({
311
- type: "custom",
312
- key: HOT_UPDATER_CORE_SCHEMA_KEY,
313
- value: HOT_UPDATER_SCHEMA_VERSION,
314
- } satisfies MigrationOperation);
315
- return {
316
- operations: [
317
- createSettingsKeyIndexOperation(),
318
- ...createMongoMigrationOperations(settingsOperation),
319
- ],
320
- execute: async () => {
321
- const db = client.db();
322
- await executeMongoMigration({
323
- updateSettings: options.updateSettings !== false,
324
- backend: {
325
- ensureCollections: async () => {
326
- for (const table of hotUpdaterSchema.tables) {
327
- if (table.internal) continue;
328
- await db
329
- .createCollection(table.ormName)
330
- .catch(ignoreExistingCollection);
331
- }
332
- },
333
- ensureIndexes: async () => {
334
- await ensureSettingsKeyIndex();
335
- for (const table of hotUpdaterSchema.tables) {
336
- if (table.internal) continue;
337
- const isInsights =
338
- table.ormName === "bundle_events" ||
339
- table.ormName === "bundle_event_heads";
340
- const collection = db.collection(table.ormName);
341
- const collation = isInsights ? { locale: "simple" } : undefined;
342
- const primaryKey = table.columns.find(
343
- (column) => column.primaryKey,
344
- );
345
- if (!primaryKey) {
346
- throw new Error(
347
- `MongoDB table ${table.ormName} does not define a primary key.`,
348
- );
349
- }
350
- const idIndexName = `${table.ormName}_${primaryKey.ormName}_idx`;
351
- await collection.createIndex(
352
- { [primaryKey.ormName]: 1 },
353
- {
354
- name: idIndexName,
355
- unique: true,
356
- ...(collation ? { collation } : {}),
357
- },
358
- );
359
- for (const index of (table.indexes ?? []).filter((item) =>
360
- schemaIndexAppliesToProvider(item, "mongodb"),
361
- )) {
362
- await collection.createIndex(
363
- Object.fromEntries(
364
- index.columns.map((column) => [column, 1]),
365
- ),
366
- {
367
- name: index.name,
368
- ...(index.unique ? { unique: true } : {}),
369
- ...(collation ? { collation } : {}),
370
- },
371
- );
372
- }
373
- }
374
- },
375
- enforceSchema: async () => {
376
- for (const [collection, validator] of [
377
- ["bundles", mongoBundleValidator],
378
- ["bundle_patches", mongoPatchValidator],
379
- ["releases", mongoReleaseValidator],
380
- ["release_catalogs", mongoReleaseCatalogValidator],
381
- ] as const) {
382
- await db.command({
383
- collMod: collection,
384
- validationAction: "error",
385
- validationLevel: "strict",
386
- validator,
387
- });
388
- }
389
- },
390
- updateVersion: async () => {
391
- await settings.updateOne(
392
- { key: HOT_UPDATER_CORE_SCHEMA_KEY },
393
- { $set: { value: HOT_UPDATER_SCHEMA_VERSION } },
394
- { upsert: true },
395
- );
396
- },
397
- },
398
- });
399
- },
400
- };
401
- };
402
-
403
- return {
404
- getVersion,
405
- getNameVariants: async () => undefined,
406
- next: async () => {
407
- const { coreVersion } = await getSchemaVersions();
408
- return isCurrentSchemaVersion(coreVersion)
409
- ? undefined
410
- : { version: HOT_UPDATER_SCHEMA_VERSION };
411
- },
412
- previous: async () => undefined,
413
- up: makeResult,
414
- down: async () => {
415
- throw new Error("No previous schema to migrate to.");
416
- },
417
- migrateTo: async (version, options) => {
418
- if (version !== HOT_UPDATER_SCHEMA_VERSION) {
419
- throw new Error(`Invalid version ${version}`);
420
- }
421
- return makeResult(options);
422
- },
423
- migrateToLatest: makeResult,
424
- };
425
- };
@@ -1,5 +0,0 @@
1
- export * from "../schema";
2
- export * from "./schema/mongodb";
3
- export * from "./schema/registry";
4
- export * from "./schema/sql";
5
- export * from "./schema/sqlOperations";
@@ -1,23 +0,0 @@
1
- export interface MongoMigrationBackend {
2
- ensureCollections(): Promise<void>;
3
- backfillData?(): Promise<void>;
4
- validateData?(): Promise<void>;
5
- ensureIndexes(): Promise<void>;
6
- enforceSchema?(): Promise<void>;
7
- updateVersion(): Promise<void>;
8
- }
9
-
10
- export const executeMongoMigration = async ({
11
- backend,
12
- updateSettings,
13
- }: {
14
- readonly backend: MongoMigrationBackend;
15
- readonly updateSettings: boolean;
16
- }): Promise<void> => {
17
- await backend.ensureCollections();
18
- await backend.backfillData?.();
19
- await backend.validateData?.();
20
- await backend.ensureIndexes();
21
- await backend.enforceSchema?.();
22
- if (updateSettings) await backend.updateVersion();
23
- };
@@ -1 +0,0 @@
1
- export * from "../../schema";
@@ -1,21 +0,0 @@
1
- import { bundleEventHeadsV100, bundleEventsV100 } from "../../schema/v1_0_0";
2
- import type { ORMSQLProvider } from "../types";
3
- import { getSqlType, sqlColumnDefinition } from "./sql";
4
-
5
- export const getInsightsCollationSql = (
6
- provider: ORMSQLProvider,
7
- ): readonly string[] =>
8
- [bundleEventsV100, bundleEventHeadsV100].flatMap((table) =>
9
- table.columns.flatMap((column) => {
10
- const collation = column.providerCollations?.[provider];
11
- if (collation === undefined) return [];
12
- if (provider === "mysql") {
13
- return [
14
- `alter table ${table.ormName} modify column ${sqlColumnDefinition(table, { ...column, primaryKey: undefined }, provider)}`,
15
- ];
16
- }
17
- return [
18
- `alter table ${table.ormName} alter column ${column.ormName} type ${getSqlType(column.type, provider)} collate ${collation}`,
19
- ];
20
- }),
21
- );
@@ -1,40 +0,0 @@
1
- import type { MigrationOperation } from "../types";
2
- import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry";
3
- import { hotUpdaterCreateTableOperations } from "./sql";
4
-
5
- export const createMongoMigrationOperations = (
6
- settingsOperation?: MigrationOperation,
7
- ): MigrationOperation[] => [
8
- ...hotUpdaterCreateTableOperations,
9
- ...hotUpdaterSchema.tables
10
- .filter((table) => !table.internal)
11
- .map((table): MigrationOperation => {
12
- const primaryKey = table.columns.find((column) => column.primaryKey);
13
- if (!primaryKey) {
14
- throw new Error(
15
- `MongoDB table ${table.ormName} does not define a primary key.`,
16
- );
17
- }
18
- return {
19
- description: `Create unique MongoDB index: ${table.ormName}_${primaryKey.ormName}_idx on ${table.ormName}(${primaryKey.ormName})`,
20
- type: "custom",
21
- };
22
- }),
23
- ...hotUpdaterSchema.tables.flatMap((table) =>
24
- (table.indexes ?? [])
25
- .filter((index) => schemaIndexAppliesToProvider(index, "mongodb"))
26
- .map(
27
- (index): MigrationOperation => ({
28
- description: `Create ${index.unique ? "unique " : ""}MongoDB index: ${index.name} on ${table.ormName}(${index.columns.join(
29
- ", ",
30
- )})`,
31
- type: "custom",
32
- }),
33
- ),
34
- ),
35
- {
36
- description: "Enforce final MongoDB Bundle, Release, and catalog schemas",
37
- type: "custom",
38
- },
39
- ...(settingsOperation ? [settingsOperation] : []),
40
- ];
@@ -1,55 +0,0 @@
1
- import { hotUpdaterSchemaVersions } from "../../schema";
2
- import type {
3
- HotUpdaterColumnSchema,
4
- HotUpdaterIndexSchema,
5
- HotUpdaterTableSchema,
6
- HotUpdaterVersionedSchema,
7
- } from "../../schema/types";
8
- import type { ORMProvider } from "../types";
9
-
10
- export { hotUpdaterSchemaVersions } from "../../schema";
11
-
12
- export const hotUpdaterSchema =
13
- hotUpdaterSchemaVersions[hotUpdaterSchemaVersions.length - 1]!;
14
-
15
- export const getSchemaVersionIndex = (version: string): number =>
16
- hotUpdaterSchemaVersions.findIndex((schema) => schema.version === version);
17
-
18
- export const getHotUpdaterSchemaVersion = (
19
- version: string,
20
- ): HotUpdaterVersionedSchema => {
21
- const schema = hotUpdaterSchemaVersions.find(
22
- (item) => item.version === version,
23
- );
24
- if (!schema)
25
- throw new Error(`Unsupported Hot Updater schema version: ${version}`);
26
- return schema;
27
- };
28
-
29
- export const getSchemaTable = (name: string): HotUpdaterTableSchema => {
30
- const table = hotUpdaterSchema.tables.find((item) => item.ormName === name);
31
- if (!table) throw new Error(`Unknown Hot Updater schema table: ${name}`);
32
- return table;
33
- };
34
-
35
- export const getSchemaColumn = (
36
- table: HotUpdaterTableSchema,
37
- name: string,
38
- ): HotUpdaterColumnSchema => {
39
- const column = table.columns.find((item) => item.ormName === name);
40
- if (!column) {
41
- throw new Error(
42
- `Unknown Hot Updater schema column: ${table.ormName}.${name}`,
43
- );
44
- }
45
- return column;
46
- };
47
-
48
- export const hotUpdaterDataTables = hotUpdaterSchema.tables.filter(
49
- (table) => !table.internal,
50
- );
51
-
52
- export const schemaIndexAppliesToProvider = (
53
- index: HotUpdaterIndexSchema,
54
- provider: ORMProvider,
55
- ): boolean => !index.providers || index.providers.includes(provider);