@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,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 };