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

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 (519) 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 -10
  152. package/dist/db/index.d.cts +10 -4
  153. package/dist/db/index.d.mts +10 -4
  154. package/dist/db/index.mjs +16 -9
  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/diff.cjs +3 -0
  172. package/dist/diff.d.cts +2 -0
  173. package/dist/diff.d.mts +2 -0
  174. package/dist/diff.mjs +2 -0
  175. package/dist/handler.cjs +72 -43
  176. package/dist/handler.d.cts +3 -5
  177. package/dist/handler.d.mts +3 -5
  178. package/dist/handler.mjs +73 -43
  179. package/dist/handlerAdminRoutes.cjs +375 -0
  180. package/dist/handlerAdminRoutes.mjs +373 -0
  181. package/dist/handlerParameters.cjs +6 -11
  182. package/dist/handlerParameters.mjs +6 -10
  183. package/dist/handlerReleaseCatalogRoutes.cjs +11 -13
  184. package/dist/handlerReleaseCatalogRoutes.mjs +11 -13
  185. package/dist/handlerTypes.d.cts +2 -55
  186. package/dist/handlerTypes.d.mts +2 -55
  187. package/dist/handlerVersionRoutes.cjs +20 -4
  188. package/dist/handlerVersionRoutes.mjs +20 -4
  189. package/dist/index.cjs +4 -7
  190. package/dist/index.d.cts +8 -7
  191. package/dist/index.d.mts +8 -7
  192. package/dist/index.mjs +4 -4
  193. package/dist/insights/domain.d.cts +12 -0
  194. package/dist/insights/domain.d.mts +12 -0
  195. package/dist/insights/errors.cjs +34 -0
  196. package/dist/insights/errors.mjs +34 -1
  197. package/dist/insights/eventInput.cjs +14 -19
  198. package/dist/insights/eventInput.mjs +15 -20
  199. package/dist/insights/provider.cjs +47 -23
  200. package/dist/insights/provider.mjs +47 -24
  201. package/dist/insights/routes.cjs +79 -14
  202. package/dist/insights/routes.mjs +77 -14
  203. package/dist/node.d.cts +1 -1
  204. package/dist/node.d.mts +1 -1
  205. package/dist/package.cjs +1 -1
  206. package/dist/package.mjs +1 -1
  207. package/dist/plugins/api-keys/index.cjs +50 -0
  208. package/dist/plugins/api-keys/index.d.cts +85 -0
  209. package/dist/plugins/api-keys/index.d.mts +85 -0
  210. package/dist/plugins/api-keys/index.mjs +47 -0
  211. package/dist/plugins/api-keys/model.cjs +58 -0
  212. package/dist/plugins/api-keys/model.d.cts +8 -0
  213. package/dist/plugins/api-keys/model.d.mts +8 -0
  214. package/dist/plugins/api-keys/model.mjs +58 -0
  215. package/dist/plugins/api-keys/schema.cjs +38 -0
  216. package/dist/plugins/api-keys/schema.d.cts +44 -0
  217. package/dist/plugins/api-keys/schema.d.mts +44 -0
  218. package/dist/plugins/api-keys/schema.mjs +39 -0
  219. package/dist/plugins/builtIn.cjs +7 -0
  220. package/dist/plugins/builtIn.mjs +6 -0
  221. package/dist/plugins/definePlugin.cjs +5 -0
  222. package/dist/plugins/definePlugin.d.cts +73 -0
  223. package/dist/plugins/definePlugin.d.mts +73 -0
  224. package/dist/plugins/definePlugin.mjs +5 -0
  225. package/dist/plugins/index.cjs +17 -0
  226. package/dist/plugins/index.d.cts +9 -0
  227. package/dist/plugins/index.d.mts +9 -0
  228. package/dist/plugins/index.mjs +7 -0
  229. package/dist/plugins/insights/index.cjs +48 -0
  230. package/dist/plugins/insights/index.d.cts +295 -0
  231. package/dist/plugins/insights/index.d.mts +295 -0
  232. package/dist/plugins/insights/index.mjs +44 -0
  233. package/dist/plugins/insights/model.cjs +17 -0
  234. package/dist/plugins/insights/model.d.cts +10 -0
  235. package/dist/plugins/insights/model.d.mts +10 -0
  236. package/dist/plugins/insights/model.mjs +17 -0
  237. package/dist/plugins/insights/reads.cjs +471 -0
  238. package/dist/plugins/insights/reads.mjs +466 -0
  239. package/dist/plugins/insights/recordEvent.cjs +135 -0
  240. package/dist/plugins/insights/recordEvent.d.cts +13 -0
  241. package/dist/plugins/insights/recordEvent.d.mts +13 -0
  242. package/dist/plugins/insights/recordEvent.mjs +132 -0
  243. package/dist/plugins/insights/schema.cjs +347 -0
  244. package/dist/plugins/insights/schema.d.cts +258 -0
  245. package/dist/plugins/insights/schema.d.mts +258 -0
  246. package/dist/plugins/insights/schema.mjs +344 -0
  247. package/dist/types/index.d.cts +2 -28
  248. package/dist/types/index.d.mts +2 -28
  249. package/package.json +32 -5
  250. package/src/adapters/drizzle.conformance.integration.spec.ts +34 -0
  251. package/src/adapters/drizzle.readBudgets.integration.spec.ts +41 -0
  252. package/src/adapters/drizzle.spec.ts +270 -399
  253. package/src/adapters/drizzle.ts +48 -140
  254. package/src/adapters/drizzleExecutor.ts +166 -0
  255. package/src/adapters/kysely.conformance.integration.spec.ts +36 -0
  256. package/src/adapters/kysely.readBudgets.integration.spec.ts +42 -0
  257. package/src/adapters/kysely.spec.ts +204 -171
  258. package/src/adapters/kysely.ts +32 -93
  259. package/src/adapters/kyselyExecutor.ts +53 -0
  260. package/src/adapters/mongodb.integration.spec.ts +143 -446
  261. package/src/adapters/mongodb.readBudgets.integration.spec.ts +61 -0
  262. package/src/adapters/mongodb.ts +36 -123
  263. package/src/adapters/mongodbAdapter.ts +293 -0
  264. package/src/adapters/prisma.conformance.integration.spec.ts +36 -0
  265. package/src/adapters/prisma.integration.spec.ts +138 -0
  266. package/src/adapters/prisma.readBudgets.integration.spec.ts +40 -0
  267. package/src/adapters/prisma.spec.ts +216 -433
  268. package/src/adapters/prisma.ts +60 -524
  269. package/src/adapters/prismaExecutor.ts +107 -0
  270. package/src/adapters/prismaTestClients.ts +175 -0
  271. package/src/adapters/sqlProviders.ts +14 -0
  272. package/src/apiKeys.integration.spec.ts +19 -119
  273. package/src/apiKeys.spec.ts +39 -35
  274. package/src/apiKeys.ts +2 -8
  275. package/src/assembly/assemblePlugins.ts +269 -0
  276. package/src/assembly/assembly.spec.ts +325 -0
  277. package/src/assembly/assembly.types.spec.ts +155 -0
  278. package/src/assembly/builtInRoutes.spec.ts +213 -0
  279. package/src/assembly/databasePlugins.spec.ts +71 -0
  280. package/src/assembly/databasePlugins.ts +96 -0
  281. package/src/core/api.ts +139 -0
  282. package/src/core/baseCandidates.spec.ts +378 -0
  283. package/src/core/baseCandidates.ts +136 -0
  284. package/src/core/index.ts +44 -0
  285. package/src/core/operations.spec.ts +415 -0
  286. package/src/core/operations.ts +551 -0
  287. package/src/core/reads.spec.ts +300 -0
  288. package/src/core/reads.ts +417 -0
  289. package/src/core/releases.spec.ts +308 -0
  290. package/src/core/releases.ts +345 -0
  291. package/src/core/schema.ts +173 -0
  292. package/src/core/writes.ts +160 -0
  293. package/src/createHotUpdaterCore.ts +191 -181
  294. package/src/database/cursor.ts +65 -0
  295. package/src/database/database.ts +335 -0
  296. package/src/database/database.types.spec.ts +135 -0
  297. package/src/database/definitions.ts +72 -0
  298. package/src/database/engine.ts +62 -0
  299. package/src/database/engineAggregates.spec.ts +539 -0
  300. package/src/database/engineAggregates.ts +193 -0
  301. package/src/database/engineReads.spec.ts +219 -0
  302. package/src/database/engineReads.ts +302 -0
  303. package/src/database/engineTransaction.spec.ts +710 -0
  304. package/src/database/engineTransaction.ts +588 -0
  305. package/src/database/errors.ts +30 -0
  306. package/src/database/fence.spec.ts +223 -0
  307. package/src/database/fence.ts +171 -0
  308. package/src/database/index.ts +154 -0
  309. package/src/database/kv/kvAdapter.conformance.integration.spec.ts +17 -0
  310. package/src/database/kv/kvAdapter.readBudgets.integration.spec.ts +17 -0
  311. package/src/database/kv/kvAdapter.spec.ts +468 -0
  312. package/src/database/kv/kvAdapter.ts +450 -0
  313. package/src/database/kv/kvTestStore.ts +91 -0
  314. package/src/database/memory.readBudgets.integration.spec.ts +13 -0
  315. package/src/database/resolveSchema.spec.ts +230 -0
  316. package/src/database/resolveSchema.ts +372 -0
  317. package/src/database/schema.ts +169 -0
  318. package/src/database/schema.types.spec.ts +94 -0
  319. package/src/database/sql/docker-compose.yml +36 -0
  320. package/src/database/sql/sqlAdapter.integration.spec.ts +148 -0
  321. package/src/database/sql/sqlAdapter.readBudgets.integration.spec.ts +109 -0
  322. package/src/database/sql/sqlAdapter.spec.ts +255 -0
  323. package/src/database/sql/sqlAdapter.ts +532 -0
  324. package/src/database/sql/sqlSchema.ts +205 -0
  325. package/src/database/sql/sqlTestExecutors.ts +183 -0
  326. package/src/databaseTestSuite.spec.ts +39 -0
  327. package/src/db/builtInDatabase.ts +149 -0
  328. package/src/db/bundleRows.spec.ts +3 -3
  329. package/src/db/createBundleDiff.spec.ts +43 -29
  330. package/src/db/createBundleDiff.ts +13 -7
  331. package/src/db/engineDrizzleSchema.ts +72 -0
  332. package/src/db/engineMigrator.ts +105 -0
  333. package/src/db/enginePrismaSchema.ts +147 -0
  334. package/src/db/engineSql.spec.ts +129 -0
  335. package/src/db/engineSql.ts +48 -0
  336. package/src/db/engineSqlMigrator.ts +116 -0
  337. package/src/db/fixedMigratorShared.ts +1 -20
  338. package/src/db/index.spec.ts +116 -829
  339. package/src/db/index.ts +43 -15
  340. package/src/db/pluginTables.spec.ts +218 -0
  341. package/src/db/releaseCatalog.ts +48 -90
  342. package/src/db/schemaSettings.ts +104 -0
  343. package/src/db/settingsMigrator.spec.ts +65 -0
  344. package/src/db/settingsMigrator.ts +152 -0
  345. package/src/db/types.ts +25 -171
  346. package/src/db/updateArtifacts.spec.ts +170 -294
  347. package/src/db/updateArtifacts.ts +74 -142
  348. package/src/db/updateCheck.bench.ts +47 -0
  349. package/src/diff.ts +6 -0
  350. package/src/handler-standalone.integration.spec.ts +204 -410
  351. package/src/handler.spec.ts +134 -51
  352. package/src/handler.testFixtures.ts +14 -19
  353. package/src/handler.ts +163 -75
  354. package/src/handlerAdminRoutes.spec.ts +183 -0
  355. package/src/handlerAdminRoutes.ts +536 -0
  356. package/src/handlerAuth.integration.spec.ts +3 -3
  357. package/src/handlerManagement.spec.ts +136 -196
  358. package/src/handlerReleaseCatalogRoutes.ts +15 -17
  359. package/src/handlerTypes.ts +3 -80
  360. package/src/handlerVersionRoutes.ts +20 -7
  361. package/src/index.ts +5 -12
  362. package/src/insights/domain.ts +12 -0
  363. package/src/insights/errors.spec.ts +48 -0
  364. package/src/insights/errors.ts +51 -0
  365. package/src/insights/eventInput.ts +27 -24
  366. package/src/insights/insights.integration.spec.ts +228 -78
  367. package/src/insights/provider.spec.ts +203 -25
  368. package/src/insights/provider.ts +88 -32
  369. package/src/insights/routes.ts +95 -20
  370. package/src/lintRules.spec.ts +76 -0
  371. package/src/plugins/api-keys/apiKeysPlugin.spec.ts +172 -0
  372. package/src/plugins/api-keys/index.ts +66 -0
  373. package/src/plugins/api-keys/model.ts +69 -0
  374. package/src/plugins/api-keys/schema.ts +22 -0
  375. package/src/plugins/builtIn.ts +5 -0
  376. package/src/plugins/definePlugin.ts +100 -0
  377. package/src/plugins/index.ts +55 -0
  378. package/src/plugins/insights/index.ts +86 -0
  379. package/src/plugins/insights/insightsRollout.integration.spec.ts +187 -0
  380. package/src/plugins/insights/model.spec.ts +66 -0
  381. package/src/plugins/insights/model.ts +19 -0
  382. package/src/plugins/insights/reads.spec.ts +725 -0
  383. package/src/plugins/insights/reads.ts +707 -0
  384. package/src/plugins/insights/recordEvent.spec.ts +443 -0
  385. package/src/plugins/insights/recordEvent.ts +238 -0
  386. package/src/plugins/insights/schema.ts +229 -0
  387. package/src/plugins/pluginTestHarness.spec.ts +56 -0
  388. package/src/readBudgets.testFixtures.ts +15 -0
  389. package/src/releaseCatalogRoutes.integration.spec.ts +47 -92
  390. package/src/runtime.spec.ts +91 -77
  391. package/src/runtime.testFixtures.ts +28 -44
  392. package/src/runtimeBundles.integration.spec.ts +112 -0
  393. package/src/testUtilsMutation.integration.spec.ts +215 -0
  394. package/src/testUtilsPackage.integration.spec.ts +176 -0
  395. package/src/types/index.ts +0 -32
  396. package/dist/adapters/databaseConstraintErrors.cjs +0 -22
  397. package/dist/adapters/databaseConstraintErrors.mjs +0 -21
  398. package/dist/adapters/databasePluginUtils.cjs +0 -130
  399. package/dist/adapters/databasePluginUtils.mjs +0 -118
  400. package/dist/adapters/drizzleCrud.cjs +0 -340
  401. package/dist/adapters/drizzleCrud.mjs +0 -337
  402. package/dist/adapters/drizzleLazyDB.cjs +0 -103
  403. package/dist/adapters/drizzleLazyDB.mjs +0 -103
  404. package/dist/adapters/drizzleQuery.cjs +0 -69
  405. package/dist/adapters/drizzleQuery.mjs +0 -69
  406. package/dist/adapters/kyselyCrud.cjs +0 -293
  407. package/dist/adapters/kyselyCrud.mjs +0 -292
  408. package/dist/adapters/kyselyQuery.cjs +0 -56
  409. package/dist/adapters/kyselyQuery.mjs +0 -56
  410. package/dist/adapters/mongodbCollections.cjs +0 -38
  411. package/dist/adapters/mongodbCollections.mjs +0 -32
  412. package/dist/adapters/mongodbQuery.cjs +0 -90
  413. package/dist/adapters/mongodbQuery.mjs +0 -83
  414. package/dist/adapters/mongodbReads.cjs +0 -206
  415. package/dist/adapters/mongodbReads.mjs +0 -206
  416. package/dist/adapters/mongodbWrites.cjs +0 -133
  417. package/dist/adapters/mongodbWrites.mjs +0 -133
  418. package/dist/adapters/prismaInsights.cjs +0 -99
  419. package/dist/adapters/prismaInsights.mjs +0 -97
  420. package/dist/adapters/prismaQuery.cjs +0 -57
  421. package/dist/adapters/prismaQuery.mjs +0 -56
  422. package/dist/adapters/prismaRows.cjs +0 -197
  423. package/dist/adapters/prismaRows.mjs +0 -188
  424. package/dist/db/databasePluginCore.cjs +0 -137
  425. package/dist/db/databasePluginCore.mjs +0 -137
  426. package/dist/db/fixedMigrator.cjs +0 -79
  427. package/dist/db/fixedMigrator.mjs +0 -78
  428. package/dist/db/fixedMigratorMongo.cjs +0 -321
  429. package/dist/db/fixedMigratorMongo.mjs +0 -321
  430. package/dist/db/mongoMigrationExecution.cjs +0 -11
  431. package/dist/db/mongoMigrationExecution.mjs +0 -11
  432. package/dist/db/schema/insightsCollation.cjs +0 -14
  433. package/dist/db/schema/insightsCollation.mjs +0 -14
  434. package/dist/db/schema/mongodb.cjs +0 -25
  435. package/dist/db/schema/mongodb.mjs +0 -25
  436. package/dist/db/schema/registry.cjs +0 -21
  437. package/dist/db/schema/registry.mjs +0 -17
  438. package/dist/db/schema/sql.cjs +0 -105
  439. package/dist/db/schema/sql.mjs +0 -97
  440. package/dist/db/schema/sqlOperations.cjs +0 -27
  441. package/dist/db/schema/sqlOperations.mjs +0 -26
  442. package/dist/db/schemaGenerators.cjs +0 -276
  443. package/dist/db/schemaGenerators.mjs +0 -274
  444. package/dist/db/schemaReadiness.cjs +0 -26
  445. package/dist/db/schemaReadiness.d.cts +0 -9
  446. package/dist/db/schemaReadiness.d.mts +0 -9
  447. package/dist/db/schemaReadiness.mjs +0 -25
  448. package/dist/db/sqlMigrationExecution.cjs +0 -67
  449. package/dist/db/sqlMigrationExecution.mjs +0 -67
  450. package/dist/handlerBundleRoutes.cjs +0 -155
  451. package/dist/handlerBundleRoutes.mjs +0 -155
  452. package/dist/handlerReleaseManagementRoutes.cjs +0 -124
  453. package/dist/handlerReleaseManagementRoutes.mjs +0 -124
  454. package/dist/schema/dsl.cjs +0 -103
  455. package/dist/schema/dsl.mjs +0 -87
  456. package/dist/schema/index.cjs +0 -20
  457. package/dist/schema/index.mjs +0 -7
  458. package/dist/schema/settings.cjs +0 -9
  459. package/dist/schema/settings.mjs +0 -9
  460. package/dist/schema/types.cjs +0 -8
  461. package/dist/schema/types.mjs +0 -6
  462. package/dist/schema/v1_0_0.cjs +0 -393
  463. package/dist/schema/v1_0_0.mjs +0 -385
  464. package/src/adapters/databaseConstraintErrors.ts +0 -25
  465. package/src/adapters/databasePluginTestDatabase.ts +0 -116
  466. package/src/adapters/databasePluginUtils.spec.ts +0 -29
  467. package/src/adapters/databasePluginUtils.ts +0 -238
  468. package/src/adapters/drizzleCrud.ts +0 -610
  469. package/src/adapters/drizzleLazyDB.ts +0 -284
  470. package/src/adapters/drizzleQuery.ts +0 -164
  471. package/src/adapters/kyselyCrud.ts +0 -696
  472. package/src/adapters/kyselyInsights.spec.ts +0 -168
  473. package/src/adapters/kyselyQuery.ts +0 -128
  474. package/src/adapters/mongodb.spec.ts +0 -230
  475. package/src/adapters/mongodbCollections.ts +0 -78
  476. package/src/adapters/mongodbQuery.ts +0 -245
  477. package/src/adapters/mongodbReads.ts +0 -387
  478. package/src/adapters/mongodbRows.spec.ts +0 -64
  479. package/src/adapters/mongodbRows.ts +0 -118
  480. package/src/adapters/mongodbTestClient.ts +0 -443
  481. package/src/adapters/mongodbTestFilter.ts +0 -170
  482. package/src/adapters/mongodbWrites.ts +0 -261
  483. package/src/adapters/prismaInsights.ts +0 -190
  484. package/src/adapters/prismaQuery.ts +0 -129
  485. package/src/adapters/prismaRows.spec.ts +0 -98
  486. package/src/adapters/prismaRows.ts +0 -308
  487. package/src/adapters/prismaTestClient.ts +0 -478
  488. package/src/calculatePagination.ts +0 -34
  489. package/src/db/databasePluginCore.spec.ts +0 -62
  490. package/src/db/databasePluginCore.testFixtures.ts +0 -76
  491. package/src/db/databasePluginCore.ts +0 -185
  492. package/src/db/databasePluginUpdateCheck.bench.ts +0 -117
  493. package/src/db/fixedMigrator.spec.ts +0 -294
  494. package/src/db/fixedMigrator.ts +0 -147
  495. package/src/db/fixedMigratorMongo.spec.ts +0 -253
  496. package/src/db/fixedMigratorMongo.ts +0 -425
  497. package/src/db/hotUpdaterSchema.ts +0 -5
  498. package/src/db/mongoMigrationExecution.ts +0 -23
  499. package/src/db/schema/definitions.ts +0 -1
  500. package/src/db/schema/insightsCollation.ts +0 -21
  501. package/src/db/schema/mongodb.ts +0 -40
  502. package/src/db/schema/registry.ts +0 -55
  503. package/src/db/schema/sql.ts +0 -244
  504. package/src/db/schema/sqlOperations.ts +0 -63
  505. package/src/db/schema/types.ts +0 -1
  506. package/src/db/schemaGenerators.ts +0 -495
  507. package/src/db/schemaReadiness.ts +0 -34
  508. package/src/db/sqlMigrationExecution.spec.ts +0 -65
  509. package/src/db/sqlMigrationExecution.ts +0 -108
  510. package/src/db/types.spec.ts +0 -63
  511. package/src/handlerBundleRoutes.ts +0 -259
  512. package/src/handlerReleaseManagementRoutes.ts +0 -213
  513. package/src/schema/dsl-all-versions.spec.ts +0 -35
  514. package/src/schema/dsl.ts +0 -187
  515. package/src/schema/index.ts +0 -10
  516. package/src/schema/settings.ts +0 -15
  517. package/src/schema/types.ts +0 -79
  518. package/src/schema/v1_0_0.spec.ts +0 -220
  519. package/src/schema/v1_0_0.ts +0 -511
@@ -1,81 +1,42 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_registry = require("../db/schema/registry.cjs");
3
- const require_schemaGenerators = require("../db/schemaGenerators.cjs");
4
- const require_drizzleCrud = require("./drizzleCrud.cjs");
5
- const require_drizzleLazyDB = require("./drizzleLazyDB.cjs");
6
- let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
7
- let _hot_updater_plugin_core_internal = require("@hot-updater/plugin-core/internal");
2
+ const require_settingsMigrator = require("../db/settingsMigrator.cjs");
3
+ const require_builtInDatabase = require("../db/builtInDatabase.cjs");
4
+ const require_sqlAdapter = require("../database/sql/sqlAdapter.cjs");
5
+ const require_sqlProviders = require("./sqlProviders.cjs");
6
+ const require_engineDrizzleSchema = require("../db/engineDrizzleSchema.cjs");
7
+ const require_drizzleExecutor = require("./drizzleExecutor.cjs");
8
8
  //#region src/adapters/drizzle.ts
9
- const createImplementation = (config) => {
10
- const db = require_drizzleLazyDB.createLazyDB(config);
11
- const crud = require_drizzleCrud.createDrizzleCrud(db, config.provider);
12
- const transaction = db.transaction?.bind(db);
13
- return {
14
- ...crud,
15
- recordInsights: async (input) => {
16
- await require_drizzleCrud.recordDrizzleInsights(db.resolve === void 0 ? db : await db.resolve(), config.provider, input);
17
- },
18
- deleteChannel: (input) => {
19
- if (transaction === void 0) throw new Error("Drizzle channel deletion requires transaction support.");
20
- return transaction((transactionDatabase) => require_drizzleCrud.createDrizzleCrud(transactionDatabase, config.provider).deleteChannel(input));
21
- },
22
- ...transaction ? { delete: (input) => transaction((transactionDatabase) => require_drizzleCrud.createDrizzleCrud(transactionDatabase, config.provider).delete(input)) } : {},
23
- ...transaction ? { transaction: async (callback) => transaction((transaction) => callback(require_drizzleCrud.createDrizzleCrud(transaction, config.provider))) } : {}
24
- };
25
- };
9
+ /**
10
+ * Hot Updater's database on a Drizzle instance: the storage engine through the
11
+ * shared SQL core, fenced by the schema settings. `db generate` writes the
12
+ * Drizzle schema drizzle-kit applies; `db migrate` then writes the settings
13
+ * rows the fence checks.
14
+ */
26
15
  const drizzleAdapter = (config) => {
27
- let adapter;
28
- const getAdapter = () => {
29
- adapter ??= (0, _hot_updater_plugin_core_internal.createDatabasePluginAdapter)("drizzle", createImplementation(config));
30
- return adapter;
31
- };
32
- const plugin = (0, _hot_updater_plugin_core.createDatabasePlugin)({
33
- name: "drizzle",
34
- models: {
35
- bundles: {
36
- findById: (id) => getAdapter().models.bundles.findById(id),
37
- findMany: (query) => getAdapter().models.bundles.findMany(query),
38
- count: (where) => getAdapter().models.bundles.count(where)
39
- },
40
- bundlePatches: { findByBundleIds: (bundleIds) => getAdapter().models.bundlePatches.findByBundleIds(bundleIds) },
41
- releases: {
42
- findById: (id) => getAdapter().models.releases.findById(id),
43
- findMany: (input) => getAdapter().models.releases.findMany(input),
44
- findManyByScope: (input) => getAdapter().models.releases.findManyByScope(input)
45
- },
46
- releaseCatalogs: {
47
- findByScopeKey: (scopeKey) => getAdapter().models.releaseCatalogs.findByScopeKey(scopeKey),
48
- findMany: (input) => getAdapter().models.releaseCatalogs.findMany(input)
49
- },
50
- channels: {
51
- insert: (input) => getAdapter().models.channels.insert(input),
52
- list: (input) => getAdapter().models.channels.list(input),
53
- delete: (input) => getAdapter().models.channels.delete(input)
54
- },
55
- insights: {
56
- recordEvent: (input) => getAdapter().models.insights.recordEvent(input),
57
- listEvents: (input) => getAdapter().models.insights.listEvents(input),
58
- findLatestEvents: (input) => getAdapter().models.insights.findLatestEvents(input),
59
- countLatestEvents: (input) => getAdapter().models.insights.countLatestEvents(input),
60
- countEvents: (input) => getAdapter().models.insights.countEvents(input)
61
- },
62
- apiKeys: {
63
- create: (row) => getAdapter().models.apiKeys.create(row),
64
- findByHash: (hash) => getAdapter().models.apiKeys.findByHash(hash),
65
- list: () => getAdapter().models.apiKeys.list(),
66
- revoke: (input) => getAdapter().models.apiKeys.revoke(input)
67
- }
68
- },
69
- commit: (input) => getAdapter().commit(input)
70
- });
71
- return Object.assign(plugin, {
72
- adapterName: "drizzle",
73
- provider: config.provider,
74
- generateSchema: (version) => ({
75
- code: require_schemaGenerators.generateDrizzleSchema(config.provider, version === "latest" ? require_registry.hotUpdaterSchema : require_registry.getHotUpdaterSchemaVersion(version)),
76
- path: "hot-updater-schema.ts"
16
+ const provider = require_sqlProviders.checkSqlProvider("drizzleAdapter", config.provider);
17
+ const executor = require_drizzleExecutor.drizzleExecutor(config.db, provider);
18
+ return {
19
+ ...require_builtInDatabase.createEngineDatabase({
20
+ name: "drizzle",
21
+ adapter: require_sqlAdapter.createSqlAdapter({ executor })
22
+ }),
23
+ provider,
24
+ generateSchema: ((version, _name, { schema } = require_builtInDatabase.builtInTarget) => {
25
+ if (version !== "latest" && version !== require_builtInDatabase.builtInSettings["schema.core"]) throw new Error(`Invalid version ${version}`);
26
+ return {
27
+ code: require_engineDrizzleSchema.generateDrizzleEngineSchema(provider, schema),
28
+ path: "hot-updater-schema.ts"
29
+ };
30
+ }),
31
+ createMigrator: ({ settings } = require_builtInDatabase.builtInTarget) => require_settingsMigrator.createSettingsMigrator({
32
+ adapterName: "drizzle",
33
+ executor,
34
+ settings,
35
+ applyTables: "`drizzle-kit push` (or your drizzle-kit migrations)"
77
36
  })
78
- });
37
+ };
79
38
  };
80
39
  //#endregion
40
+ exports.DrizzleTransactionUnsupportedError = require_drizzleExecutor.DrizzleTransactionUnsupportedError;
41
+ exports.SUPPORTED_DRIZZLE_DRIVERS = require_drizzleExecutor.SUPPORTED_DRIZZLE_DRIVERS;
81
42
  exports.drizzleAdapter = drizzleAdapter;
@@ -1,12 +1,20 @@
1
- import { DatabaseAdapterWithCapabilities, ORMProvider } from "../db/types.cjs";
1
+ import { ORMSQLProvider, ToolingDatabase } from "../db/types.cjs";
2
+ import { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS } from "./drizzleExecutor.cjs";
2
3
  //#region src/adapters/drizzle.d.ts
3
- type DrizzleProvider = Exclude<ORMProvider, "cockroachdb" | "mongodb" | "mssql">;
4
+ type DrizzleProvider = ORMSQLProvider;
4
5
  interface DrizzleConfig {
6
+ /** A Drizzle database, or a function that returns one on first use. */
5
7
  readonly db: unknown | (() => unknown | Promise<unknown>);
6
8
  readonly provider: DrizzleProvider;
9
+ /** Ignored: Hot Updater reads through SQL; the schema file is for drizzle-kit. */
7
10
  readonly schema?: Record<string, unknown>;
8
- readonly transaction?: boolean;
9
11
  }
10
- declare const drizzleAdapter: (config: DrizzleConfig) => DatabaseAdapterWithCapabilities;
12
+ /**
13
+ * Hot Updater's database on a Drizzle instance: the storage engine through the
14
+ * shared SQL core, fenced by the schema settings. `db generate` writes the
15
+ * Drizzle schema drizzle-kit applies; `db migrate` then writes the settings
16
+ * rows the fence checks.
17
+ */
18
+ declare const drizzleAdapter: (config: DrizzleConfig) => ToolingDatabase;
11
19
  //#endregion
12
- export { DrizzleConfig, DrizzleProvider, drizzleAdapter };
20
+ export { DrizzleConfig, DrizzleProvider, DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS, drizzleAdapter };
@@ -1,12 +1,20 @@
1
- import { DatabaseAdapterWithCapabilities, ORMProvider } from "../db/types.mjs";
1
+ import { ORMSQLProvider, ToolingDatabase } from "../db/types.mjs";
2
+ import { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS } from "./drizzleExecutor.mjs";
2
3
  //#region src/adapters/drizzle.d.ts
3
- type DrizzleProvider = Exclude<ORMProvider, "cockroachdb" | "mongodb" | "mssql">;
4
+ type DrizzleProvider = ORMSQLProvider;
4
5
  interface DrizzleConfig {
6
+ /** A Drizzle database, or a function that returns one on first use. */
5
7
  readonly db: unknown | (() => unknown | Promise<unknown>);
6
8
  readonly provider: DrizzleProvider;
9
+ /** Ignored: Hot Updater reads through SQL; the schema file is for drizzle-kit. */
7
10
  readonly schema?: Record<string, unknown>;
8
- readonly transaction?: boolean;
9
11
  }
10
- declare const drizzleAdapter: (config: DrizzleConfig) => DatabaseAdapterWithCapabilities;
12
+ /**
13
+ * Hot Updater's database on a Drizzle instance: the storage engine through the
14
+ * shared SQL core, fenced by the schema settings. `db generate` writes the
15
+ * Drizzle schema drizzle-kit applies; `db migrate` then writes the settings
16
+ * rows the fence checks.
17
+ */
18
+ declare const drizzleAdapter: (config: DrizzleConfig) => ToolingDatabase;
11
19
  //#endregion
12
- export { DrizzleConfig, DrizzleProvider, drizzleAdapter };
20
+ export { DrizzleConfig, DrizzleProvider, DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS, drizzleAdapter };
@@ -1,80 +1,39 @@
1
- import { getHotUpdaterSchemaVersion, hotUpdaterSchema } from "../db/schema/registry.mjs";
2
- import { generateDrizzleSchema } from "../db/schemaGenerators.mjs";
3
- import { createDrizzleCrud, recordDrizzleInsights } from "./drizzleCrud.mjs";
4
- import { createLazyDB } from "./drizzleLazyDB.mjs";
5
- import { createDatabasePlugin } from "@hot-updater/plugin-core";
6
- import { createDatabasePluginAdapter } from "@hot-updater/plugin-core/internal";
1
+ import { createSettingsMigrator } from "../db/settingsMigrator.mjs";
2
+ import { builtInSettings, builtInTarget, createEngineDatabase } from "../db/builtInDatabase.mjs";
3
+ import { createSqlAdapter } from "../database/sql/sqlAdapter.mjs";
4
+ import { checkSqlProvider } from "./sqlProviders.mjs";
5
+ import { generateDrizzleEngineSchema } from "../db/engineDrizzleSchema.mjs";
6
+ import { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS, drizzleExecutor } from "./drizzleExecutor.mjs";
7
7
  //#region src/adapters/drizzle.ts
8
- const createImplementation = (config) => {
9
- const db = createLazyDB(config);
10
- const crud = createDrizzleCrud(db, config.provider);
11
- const transaction = db.transaction?.bind(db);
12
- return {
13
- ...crud,
14
- recordInsights: async (input) => {
15
- await recordDrizzleInsights(db.resolve === void 0 ? db : await db.resolve(), config.provider, input);
16
- },
17
- deleteChannel: (input) => {
18
- if (transaction === void 0) throw new Error("Drizzle channel deletion requires transaction support.");
19
- return transaction((transactionDatabase) => createDrizzleCrud(transactionDatabase, config.provider).deleteChannel(input));
20
- },
21
- ...transaction ? { delete: (input) => transaction((transactionDatabase) => createDrizzleCrud(transactionDatabase, config.provider).delete(input)) } : {},
22
- ...transaction ? { transaction: async (callback) => transaction((transaction) => callback(createDrizzleCrud(transaction, config.provider))) } : {}
23
- };
24
- };
8
+ /**
9
+ * Hot Updater's database on a Drizzle instance: the storage engine through the
10
+ * shared SQL core, fenced by the schema settings. `db generate` writes the
11
+ * Drizzle schema drizzle-kit applies; `db migrate` then writes the settings
12
+ * rows the fence checks.
13
+ */
25
14
  const drizzleAdapter = (config) => {
26
- let adapter;
27
- const getAdapter = () => {
28
- adapter ??= createDatabasePluginAdapter("drizzle", createImplementation(config));
29
- return adapter;
30
- };
31
- const plugin = createDatabasePlugin({
32
- name: "drizzle",
33
- models: {
34
- bundles: {
35
- findById: (id) => getAdapter().models.bundles.findById(id),
36
- findMany: (query) => getAdapter().models.bundles.findMany(query),
37
- count: (where) => getAdapter().models.bundles.count(where)
38
- },
39
- bundlePatches: { findByBundleIds: (bundleIds) => getAdapter().models.bundlePatches.findByBundleIds(bundleIds) },
40
- releases: {
41
- findById: (id) => getAdapter().models.releases.findById(id),
42
- findMany: (input) => getAdapter().models.releases.findMany(input),
43
- findManyByScope: (input) => getAdapter().models.releases.findManyByScope(input)
44
- },
45
- releaseCatalogs: {
46
- findByScopeKey: (scopeKey) => getAdapter().models.releaseCatalogs.findByScopeKey(scopeKey),
47
- findMany: (input) => getAdapter().models.releaseCatalogs.findMany(input)
48
- },
49
- channels: {
50
- insert: (input) => getAdapter().models.channels.insert(input),
51
- list: (input) => getAdapter().models.channels.list(input),
52
- delete: (input) => getAdapter().models.channels.delete(input)
53
- },
54
- insights: {
55
- recordEvent: (input) => getAdapter().models.insights.recordEvent(input),
56
- listEvents: (input) => getAdapter().models.insights.listEvents(input),
57
- findLatestEvents: (input) => getAdapter().models.insights.findLatestEvents(input),
58
- countLatestEvents: (input) => getAdapter().models.insights.countLatestEvents(input),
59
- countEvents: (input) => getAdapter().models.insights.countEvents(input)
60
- },
61
- apiKeys: {
62
- create: (row) => getAdapter().models.apiKeys.create(row),
63
- findByHash: (hash) => getAdapter().models.apiKeys.findByHash(hash),
64
- list: () => getAdapter().models.apiKeys.list(),
65
- revoke: (input) => getAdapter().models.apiKeys.revoke(input)
66
- }
67
- },
68
- commit: (input) => getAdapter().commit(input)
69
- });
70
- return Object.assign(plugin, {
71
- adapterName: "drizzle",
72
- provider: config.provider,
73
- generateSchema: (version) => ({
74
- code: generateDrizzleSchema(config.provider, version === "latest" ? hotUpdaterSchema : getHotUpdaterSchemaVersion(version)),
75
- path: "hot-updater-schema.ts"
15
+ const provider = checkSqlProvider("drizzleAdapter", config.provider);
16
+ const executor = drizzleExecutor(config.db, provider);
17
+ return {
18
+ ...createEngineDatabase({
19
+ name: "drizzle",
20
+ adapter: createSqlAdapter({ executor })
21
+ }),
22
+ provider,
23
+ generateSchema: ((version, _name, { schema } = builtInTarget) => {
24
+ if (version !== "latest" && version !== builtInSettings["schema.core"]) throw new Error(`Invalid version ${version}`);
25
+ return {
26
+ code: generateDrizzleEngineSchema(provider, schema),
27
+ path: "hot-updater-schema.ts"
28
+ };
29
+ }),
30
+ createMigrator: ({ settings } = builtInTarget) => createSettingsMigrator({
31
+ adapterName: "drizzle",
32
+ executor,
33
+ settings,
34
+ applyTables: "`drizzle-kit push` (or your drizzle-kit migrations)"
76
35
  })
77
- });
36
+ };
78
37
  };
79
38
  //#endregion
80
- export { drizzleAdapter };
39
+ export { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS, drizzleAdapter };
@@ -0,0 +1,114 @@
1
+ let drizzle_orm = require("drizzle-orm");
2
+ //#region src/adapters/drizzleExecutor.ts
3
+ const SUPPORTED_DRIZZLE_DRIVERS = "node-postgres, postgres-js, PGlite, or Neon over WebSockets for PostgreSQL; mysql2 for MySQL; libSQL, better-sqlite3, or bun:sqlite for SQLite";
4
+ var DrizzleTransactionUnsupportedError = class extends Error {
5
+ name = "DrizzleTransactionUnsupportedError";
6
+ constructor(cause) {
7
+ super(`This Drizzle driver cannot run interactive transactions, which Hot Updater needs. Use ${SUPPORTED_DRIZZLE_DRIVERS}.`, { cause });
8
+ }
9
+ };
10
+ /** The SQL core's statement as Drizzle SQL, each placeholder bound as a parameter. */
11
+ const toSql = (dialect, { sql: text, params }) => {
12
+ const pattern = dialect === "postgresql" ? /\$(\d+)/gu : /\?/gu;
13
+ const chunks = [];
14
+ let last = 0;
15
+ let next = 0;
16
+ for (const match of text.matchAll(pattern)) {
17
+ chunks.push(drizzle_orm.sql.raw(text.slice(last, match.index)));
18
+ const position = dialect === "postgresql" ? Number(match[1]) - 1 : next++;
19
+ chunks.push(drizzle_orm.sql`${drizzle_orm.sql.param(params[position])}`);
20
+ last = match.index + match[0].length;
21
+ }
22
+ chunks.push(drizzle_orm.sql.raw(text.slice(last)));
23
+ return drizzle_orm.sql.join(chunks);
24
+ };
25
+ const over = (dialect, runner) => ({ async execute(statement) {
26
+ const query = toSql(dialect, statement);
27
+ if (dialect === "sqlite") return /^\s*SELECT\b/iu.test(statement.sql) ? {
28
+ rows: await runner.all(query),
29
+ changes: 0
30
+ } : {
31
+ rows: [],
32
+ changes: changesOf(await runner.run(query))
33
+ };
34
+ const result = await runner.execute(query);
35
+ const value = dialect === "mysql" && Array.isArray(result) ? result[0] : result;
36
+ return {
37
+ rows: Array.isArray(value) ? value : value.rows ?? [],
38
+ changes: Array.isArray(value) && dialect === "mysql" ? 0 : changesOf(value)
39
+ };
40
+ } });
41
+ const changesOf = (result) => {
42
+ const record = result ?? {};
43
+ const meta = record.meta;
44
+ return Number(record.rowCount ?? record.affectedRows ?? record.rowsAffected ?? record.changes ?? record.count ?? meta?.changes ?? 0);
45
+ };
46
+ /**
47
+ * The SQL core's executor over a Drizzle database, or a function that
48
+ * returns one. Async drivers run Drizzle's transactions; sync SQLite drivers
49
+ * run one statement at a time, beginning transactions with BEGIN IMMEDIATE.
50
+ * First use checks that the driver can run a transaction at all.
51
+ */
52
+ const drizzleExecutor = (source, dialect) => {
53
+ const isSync = (runner) => dialect === "sqlite" && runner.resultKind === "sync";
54
+ let ready;
55
+ const resolve = () => {
56
+ ready ??= (async () => {
57
+ const runner = await (typeof source === "function" ? source() : source);
58
+ if (isSync(runner)) return runner;
59
+ let started = false;
60
+ try {
61
+ if (typeof runner.transaction !== "function") throw new TypeError("The Drizzle database has no transaction().");
62
+ await runner.transaction(async () => {
63
+ started = true;
64
+ });
65
+ } catch (error) {
66
+ if (!started) throw new DrizzleTransactionUnsupportedError(error);
67
+ throw error;
68
+ }
69
+ return runner;
70
+ })();
71
+ ready.catch(() => {
72
+ ready = void 0;
73
+ });
74
+ return ready;
75
+ };
76
+ let queue = Promise.resolve();
77
+ const serial = (task) => {
78
+ const result = queue.then(task);
79
+ queue = result.catch(() => void 0);
80
+ return result;
81
+ };
82
+ return {
83
+ dialect,
84
+ async execute(statement) {
85
+ const runner = await resolve();
86
+ const run = () => over(dialect, runner).execute(statement);
87
+ return isSync(runner) ? serial(run) : run();
88
+ },
89
+ async transaction(fn) {
90
+ const runner = await resolve();
91
+ if (!isSync(runner)) return await runner.transaction((tx) => fn(over(dialect, tx)));
92
+ return serial(async () => {
93
+ const connection = over(dialect, runner);
94
+ const raw = (text) => connection.execute({
95
+ sql: text,
96
+ params: []
97
+ });
98
+ await raw("BEGIN IMMEDIATE");
99
+ try {
100
+ const result = await fn(connection);
101
+ await raw("COMMIT");
102
+ return result;
103
+ } catch (error) {
104
+ await raw("ROLLBACK").catch(() => void 0);
105
+ throw error;
106
+ }
107
+ });
108
+ }
109
+ };
110
+ };
111
+ //#endregion
112
+ exports.DrizzleTransactionUnsupportedError = DrizzleTransactionUnsupportedError;
113
+ exports.SUPPORTED_DRIZZLE_DRIVERS = SUPPORTED_DRIZZLE_DRIVERS;
114
+ exports.drizzleExecutor = drizzleExecutor;
@@ -0,0 +1,9 @@
1
+ import "../database/sql/sqlAdapter.cjs";
2
+ //#region src/adapters/drizzleExecutor.d.ts
3
+ declare const SUPPORTED_DRIZZLE_DRIVERS = "node-postgres, postgres-js, PGlite, or Neon over WebSockets for PostgreSQL; mysql2 for MySQL; libSQL, better-sqlite3, or bun:sqlite for SQLite";
4
+ declare class DrizzleTransactionUnsupportedError extends Error {
5
+ readonly name = "DrizzleTransactionUnsupportedError";
6
+ constructor(cause: unknown);
7
+ }
8
+ //#endregion
9
+ export { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS };
@@ -0,0 +1,9 @@
1
+ import "../database/sql/sqlAdapter.mjs";
2
+ //#region src/adapters/drizzleExecutor.d.ts
3
+ declare const SUPPORTED_DRIZZLE_DRIVERS = "node-postgres, postgres-js, PGlite, or Neon over WebSockets for PostgreSQL; mysql2 for MySQL; libSQL, better-sqlite3, or bun:sqlite for SQLite";
4
+ declare class DrizzleTransactionUnsupportedError extends Error {
5
+ readonly name = "DrizzleTransactionUnsupportedError";
6
+ constructor(cause: unknown);
7
+ }
8
+ //#endregion
9
+ export { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS };
@@ -0,0 +1,112 @@
1
+ import { sql } from "drizzle-orm";
2
+ //#region src/adapters/drizzleExecutor.ts
3
+ const SUPPORTED_DRIZZLE_DRIVERS = "node-postgres, postgres-js, PGlite, or Neon over WebSockets for PostgreSQL; mysql2 for MySQL; libSQL, better-sqlite3, or bun:sqlite for SQLite";
4
+ var DrizzleTransactionUnsupportedError = class extends Error {
5
+ name = "DrizzleTransactionUnsupportedError";
6
+ constructor(cause) {
7
+ super(`This Drizzle driver cannot run interactive transactions, which Hot Updater needs. Use ${SUPPORTED_DRIZZLE_DRIVERS}.`, { cause });
8
+ }
9
+ };
10
+ /** The SQL core's statement as Drizzle SQL, each placeholder bound as a parameter. */
11
+ const toSql = (dialect, { sql: text, params }) => {
12
+ const pattern = dialect === "postgresql" ? /\$(\d+)/gu : /\?/gu;
13
+ const chunks = [];
14
+ let last = 0;
15
+ let next = 0;
16
+ for (const match of text.matchAll(pattern)) {
17
+ chunks.push(sql.raw(text.slice(last, match.index)));
18
+ const position = dialect === "postgresql" ? Number(match[1]) - 1 : next++;
19
+ chunks.push(sql`${sql.param(params[position])}`);
20
+ last = match.index + match[0].length;
21
+ }
22
+ chunks.push(sql.raw(text.slice(last)));
23
+ return sql.join(chunks);
24
+ };
25
+ const over = (dialect, runner) => ({ async execute(statement) {
26
+ const query = toSql(dialect, statement);
27
+ if (dialect === "sqlite") return /^\s*SELECT\b/iu.test(statement.sql) ? {
28
+ rows: await runner.all(query),
29
+ changes: 0
30
+ } : {
31
+ rows: [],
32
+ changes: changesOf(await runner.run(query))
33
+ };
34
+ const result = await runner.execute(query);
35
+ const value = dialect === "mysql" && Array.isArray(result) ? result[0] : result;
36
+ return {
37
+ rows: Array.isArray(value) ? value : value.rows ?? [],
38
+ changes: Array.isArray(value) && dialect === "mysql" ? 0 : changesOf(value)
39
+ };
40
+ } });
41
+ const changesOf = (result) => {
42
+ const record = result ?? {};
43
+ const meta = record.meta;
44
+ return Number(record.rowCount ?? record.affectedRows ?? record.rowsAffected ?? record.changes ?? record.count ?? meta?.changes ?? 0);
45
+ };
46
+ /**
47
+ * The SQL core's executor over a Drizzle database, or a function that
48
+ * returns one. Async drivers run Drizzle's transactions; sync SQLite drivers
49
+ * run one statement at a time, beginning transactions with BEGIN IMMEDIATE.
50
+ * First use checks that the driver can run a transaction at all.
51
+ */
52
+ const drizzleExecutor = (source, dialect) => {
53
+ const isSync = (runner) => dialect === "sqlite" && runner.resultKind === "sync";
54
+ let ready;
55
+ const resolve = () => {
56
+ ready ??= (async () => {
57
+ const runner = await (typeof source === "function" ? source() : source);
58
+ if (isSync(runner)) return runner;
59
+ let started = false;
60
+ try {
61
+ if (typeof runner.transaction !== "function") throw new TypeError("The Drizzle database has no transaction().");
62
+ await runner.transaction(async () => {
63
+ started = true;
64
+ });
65
+ } catch (error) {
66
+ if (!started) throw new DrizzleTransactionUnsupportedError(error);
67
+ throw error;
68
+ }
69
+ return runner;
70
+ })();
71
+ ready.catch(() => {
72
+ ready = void 0;
73
+ });
74
+ return ready;
75
+ };
76
+ let queue = Promise.resolve();
77
+ const serial = (task) => {
78
+ const result = queue.then(task);
79
+ queue = result.catch(() => void 0);
80
+ return result;
81
+ };
82
+ return {
83
+ dialect,
84
+ async execute(statement) {
85
+ const runner = await resolve();
86
+ const run = () => over(dialect, runner).execute(statement);
87
+ return isSync(runner) ? serial(run) : run();
88
+ },
89
+ async transaction(fn) {
90
+ const runner = await resolve();
91
+ if (!isSync(runner)) return await runner.transaction((tx) => fn(over(dialect, tx)));
92
+ return serial(async () => {
93
+ const connection = over(dialect, runner);
94
+ const raw = (text) => connection.execute({
95
+ sql: text,
96
+ params: []
97
+ });
98
+ await raw("BEGIN IMMEDIATE");
99
+ try {
100
+ const result = await fn(connection);
101
+ await raw("COMMIT");
102
+ return result;
103
+ } catch (error) {
104
+ await raw("ROLLBACK").catch(() => void 0);
105
+ throw error;
106
+ }
107
+ });
108
+ }
109
+ };
110
+ };
111
+ //#endregion
112
+ export { DrizzleTransactionUnsupportedError, SUPPORTED_DRIZZLE_DRIVERS, drizzleExecutor };
@@ -1,38 +1,32 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_fixedMigrator = require("../db/fixedMigrator.cjs");
3
- const require_kyselyCrud = require("./kyselyCrud.cjs");
4
- let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
5
- let _hot_updater_plugin_core_internal = require("@hot-updater/plugin-core/internal");
2
+ const require_builtInDatabase = require("../db/builtInDatabase.cjs");
3
+ const require_sqlAdapter = require("../database/sql/sqlAdapter.cjs");
4
+ const require_engineSqlMigrator = require("../db/engineSqlMigrator.cjs");
5
+ const require_kyselyExecutor = require("./kyselyExecutor.cjs");
6
+ const require_sqlProviders = require("./sqlProviders.cjs");
6
7
  //#region src/adapters/kysely.ts
7
- const createImplementation = (config) => {
8
- const db = config.db;
9
- const relationMode = config.relationMode ?? "foreign-keys";
10
- return {
11
- ...require_kyselyCrud.createKyselyCrud(db, config.provider, relationMode),
12
- recordInsights: (input) => db.transaction().execute((transaction) => require_kyselyCrud.recordKyselyInsights(transaction, config.provider, input)),
13
- deleteChannel: (input) => db.transaction().execute((transaction) => require_kyselyCrud.createKyselyCrud(transaction, config.provider, relationMode).deleteChannel(input)),
14
- create: (input) => db.transaction().execute((transaction) => require_kyselyCrud.createKyselyCrud(transaction, config.provider, relationMode).create(input)),
15
- update: (input) => db.transaction().execute((transaction) => require_kyselyCrud.createKyselyCrud(transaction, config.provider, relationMode).update(input)),
16
- delete: (input) => db.transaction().execute((transaction) => require_kyselyCrud.createKyselyCrud(transaction, config.provider, relationMode).delete(input)),
17
- transaction: (callback) => db.transaction().execute((transaction) => callback(require_kyselyCrud.createKyselyCrud(transaction, config.provider, relationMode)))
18
- };
19
- };
8
+ /**
9
+ * Hot Updater's database on a Kysely instance: the storage engine through the
10
+ * shared SQL core, fenced by the schema settings. `db migrate` and
11
+ * `db generate --sql` apply the engine's SQL schema.
12
+ */
20
13
  const kyselyAdapter = (config) => {
21
- const adapter = (0, _hot_updater_plugin_core_internal.createDatabasePluginAdapter)("kysely", createImplementation(config));
22
- const plugin = (0, _hot_updater_plugin_core.createDatabasePlugin)({
23
- name: "kysely",
24
- models: adapter.models,
25
- commit: adapter.commit
26
- });
27
- return Object.assign(plugin, {
28
- adapterName: "kysely",
29
- provider: config.provider,
30
- createMigrator: () => require_fixedMigrator.createKyselyMigrator({
31
- db: config.db,
32
- provider: config.provider,
33
- relationMode: config.relationMode
14
+ const provider = require_sqlProviders.checkSqlProvider("kyselyAdapter", config.provider);
15
+ const executor = require_kyselyExecutor.kyselyExecutor(config.db, provider);
16
+ return {
17
+ ...require_builtInDatabase.createEngineDatabase({
18
+ name: "kysely",
19
+ adapter: require_sqlAdapter.createSqlAdapter({ executor })
20
+ }),
21
+ provider,
22
+ createMigrator: ({ schema, settings } = require_builtInDatabase.builtInTarget) => require_engineSqlMigrator.createEngineSqlMigrator({
23
+ adapterName: "kysely",
24
+ executor,
25
+ schema,
26
+ settings
34
27
  })
35
- });
28
+ };
36
29
  };
37
30
  //#endregion
38
31
  exports.kyselyAdapter = kyselyAdapter;
32
+ exports.kyselyExecutor = require_kyselyExecutor.kyselyExecutor;
@@ -1,12 +1,16 @@
1
- import { DatabaseAdapterWithCapabilities, ORMSQLProvider, RelationMode } from "../db/types.cjs";
1
+ import { ORMSQLProvider, ToolingDatabase } from "../db/types.cjs";
2
+ import { kyselyExecutor } from "./kyselyExecutor.cjs";
2
3
  import { Kysely } from "kysely";
3
4
  //#region src/adapters/kysely.d.ts
4
- type KyselySQLProvider = Exclude<ORMSQLProvider, "mssql">;
5
5
  interface KyselyAdapterConfig<TDatabase extends object = object> {
6
6
  readonly db: Kysely<TDatabase>;
7
- readonly provider: KyselySQLProvider;
8
- readonly relationMode?: RelationMode;
7
+ readonly provider: ORMSQLProvider;
9
8
  }
10
- declare const kyselyAdapter: <TDatabase extends object>(config: KyselyAdapterConfig<TDatabase>) => DatabaseAdapterWithCapabilities;
9
+ /**
10
+ * Hot Updater's database on a Kysely instance: the storage engine through the
11
+ * shared SQL core, fenced by the schema settings. `db migrate` and
12
+ * `db generate --sql` apply the engine's SQL schema.
13
+ */
14
+ declare const kyselyAdapter: <TDatabase extends object>(config: KyselyAdapterConfig<TDatabase>) => ToolingDatabase;
11
15
  //#endregion
12
- export { KyselyAdapterConfig, type RelationMode, type KyselySQLProvider as SQLProvider, kyselyAdapter };
16
+ export { KyselyAdapterConfig, type ORMSQLProvider as SQLProvider, kyselyAdapter, kyselyExecutor };
@@ -1,12 +1,16 @@
1
- import { DatabaseAdapterWithCapabilities, ORMSQLProvider, RelationMode } from "../db/types.mjs";
1
+ import { ORMSQLProvider, ToolingDatabase } from "../db/types.mjs";
2
+ import { kyselyExecutor } from "./kyselyExecutor.mjs";
2
3
  import { Kysely } from "kysely";
3
4
  //#region src/adapters/kysely.d.ts
4
- type KyselySQLProvider = Exclude<ORMSQLProvider, "mssql">;
5
5
  interface KyselyAdapterConfig<TDatabase extends object = object> {
6
6
  readonly db: Kysely<TDatabase>;
7
- readonly provider: KyselySQLProvider;
8
- readonly relationMode?: RelationMode;
7
+ readonly provider: ORMSQLProvider;
9
8
  }
10
- declare const kyselyAdapter: <TDatabase extends object>(config: KyselyAdapterConfig<TDatabase>) => DatabaseAdapterWithCapabilities;
9
+ /**
10
+ * Hot Updater's database on a Kysely instance: the storage engine through the
11
+ * shared SQL core, fenced by the schema settings. `db migrate` and
12
+ * `db generate --sql` apply the engine's SQL schema.
13
+ */
14
+ declare const kyselyAdapter: <TDatabase extends object>(config: KyselyAdapterConfig<TDatabase>) => ToolingDatabase;
11
15
  //#endregion
12
- export { KyselyAdapterConfig, type RelationMode, type KyselySQLProvider as SQLProvider, kyselyAdapter };
16
+ export { KyselyAdapterConfig, type ORMSQLProvider as SQLProvider, kyselyAdapter, kyselyExecutor };