@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,14 +1,16 @@
1
1
  import {
2
+ ARTIFACT_PROTOCOL_VERSION,
2
3
  getAssetBaseStorageUri,
3
4
  getBundlePatch,
4
5
  getManifestFileHash,
5
6
  getManifestStorageUri,
6
7
  stripBundleArtifactMetadata,
7
8
  type ArtifactInfo,
9
+ type ArtifactAsset,
8
10
  type Bundle,
9
- type ChangedAsset,
10
11
  } from "@hot-updater/core";
11
12
  import {
13
+ getBundleArchiveStorageUri,
12
14
  getManifestAssetDownloadPath,
13
15
  isContentAddressedAssetFileHash,
14
16
  resolveManifestAssetStorageUri,
@@ -24,6 +26,11 @@ type BundleManifestAsset = {
24
26
  type BundleManifest = {
25
27
  bundleId: string;
26
28
  assets: Record<string, BundleManifestAsset>;
29
+ archive?: {
30
+ downloadFileHash?: unknown;
31
+ downloadByteSize?: unknown;
32
+ tarByteSize?: unknown;
33
+ };
27
34
  };
28
35
 
29
36
  type PlannedFile = {
@@ -40,7 +47,7 @@ type PlannedPatch = {
40
47
  storageUri: string;
41
48
  };
42
49
 
43
- type PlannedChangedAsset = {
50
+ type PlannedAsset = {
44
51
  assetPath: string;
45
52
  file: PlannedFile;
46
53
  fileHash: string;
@@ -48,15 +55,11 @@ type PlannedChangedAsset = {
48
55
  };
49
56
 
50
57
  type ManifestArtifactPlan = {
51
- allPossibleByteSizesKnown: boolean;
52
- changedAssets: PlannedChangedAsset[];
53
- manifestByteSize: number | null;
54
- minimumDownloadByteSize: number | null;
58
+ assets: PlannedAsset[];
55
59
  };
56
60
 
57
- type ResolvedChangedAssets = {
58
- changedAssets: Record<string, ChangedAsset>;
59
- primaryByteSizes: Array<number | null>;
61
+ type ResolvedAssets = {
62
+ assets: Record<string, ArtifactAsset>;
60
63
  };
61
64
 
62
65
  type ResolveFileUrl = (storageUri: string | null) => Promise<string | null>;
@@ -70,31 +73,6 @@ const asByteSize = (value: unknown): number | null =>
70
73
  ? value
71
74
  : null;
72
75
 
73
- const sumByteSizes = (byteSizes: Array<number | null>): number | null => {
74
- let total = 0;
75
-
76
- for (const byteSize of byteSizes) {
77
- if (byteSize === null || total > Number.MAX_SAFE_INTEGER - byteSize) {
78
- return null;
79
- }
80
- total += byteSize;
81
- }
82
-
83
- return total;
84
- };
85
-
86
- const shouldUseArchive = (
87
- targetBundle: Bundle,
88
- downloadByteSize: number | null,
89
- ) => {
90
- const archiveByteSize = asByteSize(targetBundle.archiveByteSize);
91
- return (
92
- archiveByteSize !== null &&
93
- downloadByteSize !== null &&
94
- downloadByteSize >= archiveByteSize
95
- );
96
- };
97
-
98
76
  const resolveUniqueHbcAssetPath = (manifest: BundleManifest) => {
99
77
  const candidates = Object.keys(manifest.assets)
100
78
  .sort((left, right) => left.localeCompare(right))
@@ -200,10 +178,7 @@ export const parseBundleRawMetadata = (
200
178
  async function fetchBundleManifest(
201
179
  storageUri: string,
202
180
  readStorageText: ReadStorageText,
203
- ): Promise<{
204
- byteSize: number | null;
205
- manifest: BundleManifest;
206
- } | null> {
181
+ ): Promise<BundleManifest | null> {
207
182
  const storageText = await readStorageText(storageUri);
208
183
  if (storageText === null) {
209
184
  return null;
@@ -220,10 +195,7 @@ async function fetchBundleManifest(
220
195
  return null;
221
196
  }
222
197
 
223
- return {
224
- byteSize: asByteSize(new TextEncoder().encode(storageText).byteLength),
225
- manifest: payload,
226
- };
198
+ return payload;
227
199
  }
228
200
 
229
201
  function resolveHbcPatchPlan({
@@ -265,31 +237,22 @@ function resolveHbcPatchPlan({
265
237
 
266
238
  function createManifestArtifactPlan({
267
239
  assetBaseStorageUri,
268
- currentManifest,
269
240
  currentBundle,
270
241
  targetBundle,
271
242
  targetManifest,
272
- targetManifestByteSize,
273
243
  }: {
274
244
  assetBaseStorageUri: string;
275
- currentManifest: BundleManifest | null;
276
245
  currentBundle: Bundle | null;
277
246
  targetBundle: Bundle;
278
247
  targetManifest: BundleManifest;
279
- targetManifestByteSize: number | null;
280
248
  }): ManifestArtifactPlan {
281
249
  const patchCandidate = resolveHbcPatchPlan({
282
250
  currentBundle,
283
251
  targetBundle,
284
252
  targetManifest,
285
253
  });
286
- const changedAssets = Object.entries(targetManifest.assets).flatMap(
287
- ([assetPath, asset]): PlannedChangedAsset[] => {
288
- const currentAsset = currentManifest?.assets[assetPath];
289
- if (currentAsset?.fileHash === asset.fileHash) {
290
- return [];
291
- }
292
-
254
+ const assets = Object.entries(targetManifest.assets).map(
255
+ ([assetPath, asset]): PlannedAsset => {
293
256
  const downloadByteSize = asByteSize(asset.downloadByteSize);
294
257
  const downloadPath = getManifestAssetDownloadPath(assetPath);
295
258
  const isTransformedDownload = downloadPath !== assetPath;
@@ -316,49 +279,25 @@ function createManifestArtifactPlan({
316
279
  const patch =
317
280
  patchCandidate?.assetPath === assetPath ? patchCandidate.patch : null;
318
281
 
319
- return [
320
- {
321
- assetPath,
322
- file,
323
- fileHash: asset.fileHash,
324
- patch,
325
- },
326
- ];
282
+ return {
283
+ assetPath,
284
+ file,
285
+ fileHash: asset.fileHash,
286
+ patch,
287
+ };
327
288
  },
328
289
  );
329
- const allPossibleByteSizesKnown =
330
- targetManifestByteSize !== null &&
331
- changedAssets.every(
332
- (asset) =>
333
- asset.file.byteSize !== null &&
334
- (asset.patch === null || asset.patch.byteSize !== null),
335
- );
336
- const primaryByteSizes = changedAssets.map((asset) => {
337
- if (!asset.patch) return asset.file.byteSize;
338
- if (asset.patch.byteSize === null || asset.file.byteSize === null) {
339
- return null;
340
- }
341
- return Math.min(asset.patch.byteSize, asset.file.byteSize);
342
- });
343
-
344
- return {
345
- allPossibleByteSizesKnown,
346
- changedAssets,
347
- manifestByteSize: targetManifestByteSize,
348
- minimumDownloadByteSize: allPossibleByteSizesKnown
349
- ? sumByteSizes([targetManifestByteSize, ...primaryByteSizes])
350
- : null,
351
- };
290
+ return { assets };
352
291
  }
353
292
 
354
- async function resolveChangedAssets(
293
+ async function resolveAssets(
355
294
  plan: ManifestArtifactPlan,
356
295
  resolveFileUrl: ResolveFileUrl,
357
- ): Promise<ResolvedChangedAssets | null> {
358
- const patchAsset = plan.changedAssets.find((asset) => asset.patch !== null);
296
+ ): Promise<ResolvedAssets | null> {
297
+ const patchAsset = plan.assets.find((asset) => asset.patch !== null);
359
298
  let resolvedPatch: {
360
299
  assetPath: string;
361
- patch: NonNullable<ChangedAsset["patch"]>;
300
+ patch: NonNullable<ArtifactAsset["patch"]>;
362
301
  } | null = null;
363
302
 
364
303
  if (patchAsset?.patch) {
@@ -372,13 +311,16 @@ async function resolveChangedAssets(
372
311
  baseFileHash: patchAsset.patch.baseFileHash,
373
312
  patchFileHash: patchAsset.patch.patchFileHash,
374
313
  patchUrl,
314
+ ...(patchAsset.patch.byteSize === null
315
+ ? {}
316
+ : { byteSize: patchAsset.patch.byteSize }),
375
317
  },
376
318
  };
377
319
  }
378
320
  }
379
321
 
380
- const changedEntries = await Promise.all(
381
- plan.changedAssets.map(async (asset) => {
322
+ const entries = await Promise.all(
323
+ plan.assets.map(async (asset) => {
382
324
  let patch =
383
325
  resolvedPatch?.assetPath === asset.assetPath
384
326
  ? resolvedPatch.patch
@@ -403,20 +345,18 @@ async function resolveChangedAssets(
403
345
  patch = null;
404
346
  }
405
347
 
406
- if (!fileUrl && !patch) {
348
+ if (!fileUrl) {
407
349
  return null;
408
350
  }
409
351
 
410
- const changedAsset: ChangedAsset = {
352
+ const changedAsset: ArtifactAsset = {
353
+ file: {
354
+ url: fileUrl,
355
+ },
411
356
  fileHash: asset.fileHash,
412
357
  };
413
- if (fileUrl) {
414
- changedAsset.file = {
415
- url: fileUrl,
416
- };
417
- if (asset.file.compression) {
418
- changedAsset.file.compression = asset.file.compression;
419
- }
358
+ if (asset.file.compression) {
359
+ changedAsset.file.compression = asset.file.compression;
420
360
  }
421
361
  if (patch) {
422
362
  changedAsset.patch = patch;
@@ -424,43 +364,39 @@ async function resolveChangedAssets(
424
364
 
425
365
  return {
426
366
  asset: [asset.assetPath, changedAsset] as const,
427
- primaryByteSize: patch
428
- ? (asset.patch?.byteSize ?? null)
429
- : asset.file.byteSize,
430
367
  };
431
368
  }),
432
369
  );
433
370
 
434
- if (changedEntries.some((entry) => entry === null)) {
371
+ if (entries.some((entry) => entry === null)) {
435
372
  return null;
436
373
  }
437
374
 
438
- const resolvedEntries = changedEntries.filter(
375
+ const resolvedEntries = entries.filter(
439
376
  (entry): entry is NonNullable<typeof entry> => entry !== null,
440
377
  );
441
378
  return {
442
- changedAssets: Object.fromEntries(
443
- resolvedEntries.map((entry) => entry.asset),
444
- ),
445
- primaryByteSizes: resolvedEntries.map((entry) => entry.primaryByteSize),
379
+ assets: Object.fromEntries(resolvedEntries.map((entry) => entry.asset)),
446
380
  };
447
381
  }
448
382
 
449
383
  export async function resolveManifestArtifacts({
450
- archiveUrlUsable,
451
384
  currentBundle,
452
385
  resolveFileUrl,
453
386
  readStorageText,
454
387
  targetBundle,
455
388
  }: {
456
- archiveUrlUsable: boolean;
457
389
  currentBundle: Bundle | null;
458
390
  resolveFileUrl: ResolveFileUrl;
459
391
  readStorageText: ReadStorageText;
460
392
  targetBundle: Bundle | null;
461
393
  }): Promise<Pick<
462
394
  ArtifactInfo,
463
- "changedAssets" | "manifestFileHash" | "manifestUrl"
395
+ | "artifactProtocolVersion"
396
+ | "assets"
397
+ | "manifestFileHash"
398
+ | "manifestUrl"
399
+ | "archiveUrl"
464
400
  > | null> {
465
401
  const manifestStorageUri = targetBundle
466
402
  ? getManifestStorageUri(targetBundle)
@@ -481,61 +417,57 @@ export async function resolveManifestArtifacts({
481
417
  return null;
482
418
  }
483
419
 
484
- const currentManifestStorageUri = currentBundle
485
- ? getManifestStorageUri(currentBundle)
486
- : null;
487
- const [targetManifestResult, currentManifestResult] = await Promise.all([
488
- fetchBundleManifest(manifestStorageUri, readStorageText),
489
- currentManifestStorageUri
490
- ? fetchBundleManifest(currentManifestStorageUri, readStorageText)
491
- : null,
492
- ]);
493
-
494
- if (!targetManifestResult) {
420
+ const targetManifest = await fetchBundleManifest(
421
+ manifestStorageUri,
422
+ readStorageText,
423
+ );
424
+
425
+ if (!targetManifest) {
495
426
  return null;
496
427
  }
497
428
 
498
429
  const plan = createManifestArtifactPlan({
499
430
  assetBaseStorageUri,
500
- currentManifest: currentManifestResult?.manifest ?? null,
501
431
  currentBundle,
502
432
  targetBundle,
503
- targetManifest: targetManifestResult.manifest,
504
- targetManifestByteSize: targetManifestResult.byteSize,
433
+ targetManifest,
505
434
  });
506
435
 
507
- if (
508
- archiveUrlUsable &&
509
- plan.allPossibleByteSizesKnown &&
510
- shouldUseArchive(targetBundle, plan.minimumDownloadByteSize)
511
- ) {
512
- return null;
513
- }
514
-
515
436
  const manifestUrl = await resolveFileUrl(manifestStorageUri);
516
437
  if (!manifestUrl) {
517
438
  return null;
518
439
  }
519
440
 
520
- const resolved = await resolveChangedAssets(plan, resolveFileUrl);
441
+ const resolved = await resolveAssets(plan, resolveFileUrl);
521
442
  if (!resolved) {
522
443
  return null;
523
444
  }
524
445
 
525
- const resolvedDownloadByteSize = sumByteSizes([
526
- plan.manifestByteSize,
527
- ...resolved.primaryByteSizes,
528
- ]);
446
+ let archiveUrl: string | null = null;
447
+ const archive = targetManifest.archive;
529
448
  if (
530
- archiveUrlUsable &&
531
- shouldUseArchive(targetBundle, resolvedDownloadByteSize)
449
+ archive &&
450
+ isContentAddressedAssetFileHash(archive.downloadFileHash) &&
451
+ (asByteSize(archive.downloadByteSize) ?? 0) > 0 &&
452
+ (asByteSize(archive.tarByteSize) ?? 0) > 0
532
453
  ) {
533
- return null;
454
+ try {
455
+ archiveUrl = await resolveFileUrl(
456
+ getBundleArchiveStorageUri({
457
+ manifestStorageUri,
458
+ bundleId: targetBundle.id,
459
+ }),
460
+ );
461
+ } catch {
462
+ // Bulk transport is optional; all original URLs remain available.
463
+ }
534
464
  }
535
465
 
536
466
  return {
537
- changedAssets: resolved.changedAssets,
467
+ artifactProtocolVersion: ARTIFACT_PROTOCOL_VERSION,
468
+ assets: resolved.assets,
538
469
  manifestFileHash,
539
470
  manifestUrl,
471
+ ...(archiveUrl ? { archiveUrl } : {}),
540
472
  };
541
473
  }
@@ -0,0 +1,47 @@
1
+ import { encodeChannelKey } from "@hot-updater/core";
2
+ import { createMemoryAdapter } from "@hot-updater/plugin-core/internal";
3
+ import { bench, describe } from "vitest";
4
+
5
+ import { createHotUpdater } from "../index";
6
+
7
+ const hotUpdater = createHotUpdater({
8
+ database: { name: "bench", adapter: createMemoryAdapter() },
9
+ clientAccess: "public",
10
+ });
11
+ await hotUpdater.core.deploy([
12
+ {
13
+ bundle: {
14
+ id: "01900000-0000-7000-8000-000000000001",
15
+ platform: "ios",
16
+ gitCommitHash: null,
17
+ manifestStorageUri: "s3://bench/bundles/1/manifest.json",
18
+ manifestFileHash: "manifest-hash",
19
+ assetBaseStorageUri: "s3://bench/assets",
20
+ },
21
+ release: {
22
+ channel: "production",
23
+ enabled: true,
24
+ fingerprintHash: null,
25
+ message: null,
26
+ shouldForceUpdate: false,
27
+ targetAppVersion: "*",
28
+ },
29
+ },
30
+ ]);
31
+ const url =
32
+ `https://updates.example.com/release-catalogs/app-version/` +
33
+ `ios/${encodeChannelKey("production")}/1.0.0`;
34
+
35
+ describe("update check benchmark", () => {
36
+ bench(
37
+ "catalog update check on the storage engine",
38
+ async () => {
39
+ const response = await hotUpdater.handlers.client(new Request(url));
40
+ if (response.status !== 200) {
41
+ throw new Error(`Expected 200 response, received ${response.status}.`);
42
+ }
43
+ await response.text();
44
+ },
45
+ { iterations: 20, warmupIterations: 5 },
46
+ );
47
+ });