@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.
- package/dist/adapters/drizzle.cjs +35 -74
- package/dist/adapters/drizzle.d.cts +13 -5
- package/dist/adapters/drizzle.d.mts +13 -5
- package/dist/adapters/drizzle.mjs +34 -75
- package/dist/adapters/drizzleExecutor.cjs +114 -0
- package/dist/adapters/drizzleExecutor.d.cts +9 -0
- package/dist/adapters/drizzleExecutor.d.mts +9 -0
- package/dist/adapters/drizzleExecutor.mjs +112 -0
- package/dist/adapters/kysely.cjs +25 -31
- package/dist/adapters/kysely.d.cts +10 -6
- package/dist/adapters/kysely.d.mts +10 -6
- package/dist/adapters/kysely.mjs +25 -32
- package/dist/adapters/kyselyExecutor.cjs +32 -0
- package/dist/adapters/kyselyExecutor.d.cts +12 -0
- package/dist/adapters/kyselyExecutor.d.mts +12 -0
- package/dist/adapters/kyselyExecutor.mjs +32 -0
- package/dist/adapters/mongodb.cjs +28 -62
- package/dist/adapters/mongodb.d.cts +10 -5
- package/dist/adapters/mongodb.d.mts +10 -5
- package/dist/adapters/mongodb.mjs +28 -63
- package/dist/adapters/mongodbAdapter.cjs +174 -0
- package/dist/adapters/mongodbAdapter.d.cts +9 -0
- package/dist/adapters/mongodbAdapter.d.mts +9 -0
- package/dist/adapters/mongodbAdapter.mjs +173 -0
- package/dist/adapters/prisma.cjs +38 -257
- package/dist/adapters/prisma.d.cts +12 -7
- package/dist/adapters/prisma.d.mts +12 -7
- package/dist/adapters/prisma.mjs +38 -257
- package/dist/adapters/prismaExecutor.cjs +64 -0
- package/dist/adapters/prismaExecutor.mjs +64 -0
- package/dist/adapters/sqlProviders.cjs +9 -0
- package/dist/adapters/sqlProviders.mjs +9 -0
- package/dist/apiKeys.cjs +2 -6
- package/dist/apiKeys.d.cts +1 -23
- package/dist/apiKeys.d.mts +1 -23
- package/dist/apiKeys.mjs +2 -6
- package/dist/assembly/assemblePlugins.cjs +147 -0
- package/dist/assembly/assemblePlugins.d.cts +12 -0
- package/dist/assembly/assemblePlugins.d.mts +12 -0
- package/dist/assembly/assemblePlugins.mjs +146 -0
- package/dist/assembly/databasePlugins.cjs +23 -0
- package/dist/assembly/databasePlugins.d.cts +43 -0
- package/dist/assembly/databasePlugins.d.mts +43 -0
- package/dist/assembly/databasePlugins.mjs +22 -0
- package/dist/core/api.cjs +91 -0
- package/dist/core/api.d.cts +65 -0
- package/dist/core/api.d.mts +65 -0
- package/dist/core/api.mjs +87 -0
- package/dist/core/baseCandidates.cjs +71 -0
- package/dist/core/baseCandidates.d.cts +17 -0
- package/dist/core/baseCandidates.d.mts +17 -0
- package/dist/core/baseCandidates.mjs +69 -0
- package/dist/core/operations.cjs +350 -0
- package/dist/core/operations.mjs +350 -0
- package/dist/core/reads.cjs +273 -0
- package/dist/core/reads.d.cts +48 -0
- package/dist/core/reads.d.mts +48 -0
- package/dist/core/reads.mjs +267 -0
- package/dist/core/releases.cjs +193 -0
- package/dist/core/releases.mjs +190 -0
- package/dist/core/schema.cjs +279 -0
- package/dist/core/schema.d.cts +307 -0
- package/dist/core/schema.d.mts +307 -0
- package/dist/core/schema.mjs +277 -0
- package/dist/core/writes.cjs +96 -0
- package/dist/core/writes.mjs +91 -0
- package/dist/createHotUpdaterCore.cjs +58 -75
- package/dist/createHotUpdaterCore.d.cts +52 -44
- package/dist/createHotUpdaterCore.d.mts +52 -44
- package/dist/createHotUpdaterCore.mjs +59 -75
- package/dist/database/cursor.cjs +44 -0
- package/dist/database/cursor.d.cts +7 -0
- package/dist/database/cursor.d.mts +7 -0
- package/dist/database/cursor.mjs +40 -0
- package/dist/database/database.cjs +44 -0
- package/dist/database/database.d.cts +123 -0
- package/dist/database/database.d.mts +123 -0
- package/dist/database/database.mjs +44 -0
- package/dist/database/definitions.d.cts +68 -0
- package/dist/database/definitions.d.mts +68 -0
- package/dist/database/engine.cjs +37 -0
- package/dist/database/engine.d.cts +40 -0
- package/dist/database/engine.d.mts +40 -0
- package/dist/database/engine.mjs +37 -0
- package/dist/database/engineAggregates.cjs +115 -0
- package/dist/database/engineAggregates.mjs +112 -0
- package/dist/database/engineReads.cjs +180 -0
- package/dist/database/engineReads.d.cts +35 -0
- package/dist/database/engineReads.d.mts +35 -0
- package/dist/database/engineReads.mjs +179 -0
- package/dist/database/engineTransaction.cjs +403 -0
- package/dist/database/engineTransaction.d.cts +26 -0
- package/dist/database/engineTransaction.d.mts +26 -0
- package/dist/database/engineTransaction.mjs +402 -0
- package/dist/database/errors.cjs +27 -0
- package/dist/database/errors.d.cts +21 -0
- package/dist/database/errors.d.mts +21 -0
- package/dist/database/errors.mjs +24 -0
- package/dist/database/fence.cjs +124 -0
- package/dist/database/fence.d.cts +42 -0
- package/dist/database/fence.d.mts +42 -0
- package/dist/database/fence.mjs +116 -0
- package/dist/database/index.cjs +127 -0
- package/dist/database/index.d.cts +17 -0
- package/dist/database/index.d.mts +17 -0
- package/dist/database/index.mjs +15 -0
- package/dist/database/kv/kvAdapter.cjs +273 -0
- package/dist/database/kv/kvAdapter.d.cts +101 -0
- package/dist/database/kv/kvAdapter.d.mts +101 -0
- package/dist/database/kv/kvAdapter.mjs +272 -0
- package/dist/database/resolveSchema.cjs +196 -0
- package/dist/database/resolveSchema.d.cts +42 -0
- package/dist/database/resolveSchema.d.mts +42 -0
- package/dist/database/resolveSchema.mjs +193 -0
- package/dist/database/schema.cjs +21 -0
- package/dist/database/schema.d.cts +61 -0
- package/dist/database/schema.d.mts +61 -0
- package/dist/database/schema.mjs +20 -0
- package/dist/database/sql/sqlAdapter.cjs +282 -0
- package/dist/database/sql/sqlAdapter.d.cts +46 -0
- package/dist/database/sql/sqlAdapter.d.mts +46 -0
- package/dist/database/sql/sqlAdapter.mjs +279 -0
- package/dist/database/sql/sqlSchema.cjs +115 -0
- package/dist/database/sql/sqlSchema.d.cts +8 -0
- package/dist/database/sql/sqlSchema.d.mts +8 -0
- package/dist/database/sql/sqlSchema.mjs +111 -0
- package/dist/db/builtInDatabase.cjs +104 -0
- package/dist/db/builtInDatabase.d.cts +38 -0
- package/dist/db/builtInDatabase.d.mts +38 -0
- package/dist/db/builtInDatabase.mjs +97 -0
- package/dist/db/createBundleDiff.cjs +4 -4
- package/dist/db/createBundleDiff.d.cts +3 -2
- package/dist/db/createBundleDiff.d.mts +3 -2
- package/dist/db/createBundleDiff.mjs +5 -5
- package/dist/db/engineDrizzleSchema.cjs +54 -0
- package/dist/db/engineDrizzleSchema.mjs +54 -0
- package/dist/db/engineMigrator.cjs +53 -0
- package/dist/db/engineMigrator.mjs +53 -0
- package/dist/db/enginePrismaSchema.cjs +85 -0
- package/dist/db/enginePrismaSchema.d.cts +5 -0
- package/dist/db/enginePrismaSchema.d.mts +5 -0
- package/dist/db/enginePrismaSchema.mjs +84 -0
- package/dist/db/engineSql.cjs +26 -0
- package/dist/db/engineSql.d.cts +17 -0
- package/dist/db/engineSql.d.mts +17 -0
- package/dist/db/engineSql.mjs +25 -0
- package/dist/db/engineSqlMigrator.cjs +66 -0
- package/dist/db/engineSqlMigrator.mjs +66 -0
- package/dist/db/fixedMigratorShared.cjs +0 -11
- package/dist/db/fixedMigratorShared.mjs +1 -8
- package/dist/db/index.cjs +23 -8
- package/dist/db/index.d.cts +10 -3
- package/dist/db/index.d.mts +10 -3
- package/dist/db/index.mjs +16 -8
- package/dist/db/releaseCatalog.cjs +20 -43
- package/dist/db/releaseCatalog.d.cts +2 -2
- package/dist/db/releaseCatalog.d.mts +2 -2
- package/dist/db/releaseCatalog.mjs +20 -44
- package/dist/db/schemaSettings.cjs +63 -0
- package/dist/db/schemaSettings.d.cts +12 -0
- package/dist/db/schemaSettings.d.mts +12 -0
- package/dist/db/schemaSettings.mjs +62 -0
- package/dist/db/settingsMigrator.cjs +92 -0
- package/dist/db/settingsMigrator.mjs +89 -0
- package/dist/db/types.cjs +1 -12
- package/dist/db/types.d.cts +26 -66
- package/dist/db/types.d.mts +26 -66
- package/dist/db/types.mjs +2 -11
- package/dist/db/updateArtifacts.cjs +38 -67
- package/dist/db/updateArtifacts.mjs +40 -69
- package/dist/handler.cjs +72 -43
- package/dist/handler.d.cts +3 -5
- package/dist/handler.d.mts +3 -5
- package/dist/handler.mjs +73 -43
- package/dist/handlerAdminRoutes.cjs +375 -0
- package/dist/handlerAdminRoutes.mjs +373 -0
- package/dist/handlerParameters.cjs +6 -11
- package/dist/handlerParameters.mjs +6 -10
- package/dist/handlerReleaseCatalogRoutes.cjs +11 -13
- package/dist/handlerReleaseCatalogRoutes.mjs +11 -13
- package/dist/handlerTypes.d.cts +2 -55
- package/dist/handlerTypes.d.mts +2 -55
- package/dist/handlerVersionRoutes.cjs +20 -4
- package/dist/handlerVersionRoutes.mjs +20 -4
- package/dist/index.cjs +4 -7
- package/dist/index.d.cts +8 -7
- package/dist/index.d.mts +8 -7
- package/dist/index.mjs +4 -4
- package/dist/insights/domain.d.cts +12 -0
- package/dist/insights/domain.d.mts +12 -0
- package/dist/insights/errors.cjs +34 -0
- package/dist/insights/errors.mjs +34 -1
- package/dist/insights/eventInput.cjs +14 -19
- package/dist/insights/eventInput.mjs +15 -20
- package/dist/insights/provider.cjs +47 -23
- package/dist/insights/provider.mjs +47 -24
- package/dist/insights/routes.cjs +79 -14
- package/dist/insights/routes.mjs +77 -14
- package/dist/node.d.cts +1 -1
- package/dist/node.d.mts +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/plugins/api-keys/index.cjs +50 -0
- package/dist/plugins/api-keys/index.d.cts +85 -0
- package/dist/plugins/api-keys/index.d.mts +85 -0
- package/dist/plugins/api-keys/index.mjs +47 -0
- package/dist/plugins/api-keys/model.cjs +58 -0
- package/dist/plugins/api-keys/model.d.cts +8 -0
- package/dist/plugins/api-keys/model.d.mts +8 -0
- package/dist/plugins/api-keys/model.mjs +58 -0
- package/dist/plugins/api-keys/schema.cjs +38 -0
- package/dist/plugins/api-keys/schema.d.cts +44 -0
- package/dist/plugins/api-keys/schema.d.mts +44 -0
- package/dist/plugins/api-keys/schema.mjs +39 -0
- package/dist/plugins/builtIn.cjs +7 -0
- package/dist/plugins/builtIn.mjs +6 -0
- package/dist/plugins/definePlugin.cjs +5 -0
- package/dist/plugins/definePlugin.d.cts +73 -0
- package/dist/plugins/definePlugin.d.mts +73 -0
- package/dist/plugins/definePlugin.mjs +5 -0
- package/dist/plugins/index.cjs +17 -0
- package/dist/plugins/index.d.cts +9 -0
- package/dist/plugins/index.d.mts +9 -0
- package/dist/plugins/index.mjs +7 -0
- package/dist/plugins/insights/index.cjs +48 -0
- package/dist/plugins/insights/index.d.cts +295 -0
- package/dist/plugins/insights/index.d.mts +295 -0
- package/dist/plugins/insights/index.mjs +44 -0
- package/dist/plugins/insights/model.cjs +17 -0
- package/dist/plugins/insights/model.d.cts +10 -0
- package/dist/plugins/insights/model.d.mts +10 -0
- package/dist/plugins/insights/model.mjs +17 -0
- package/dist/plugins/insights/reads.cjs +471 -0
- package/dist/plugins/insights/reads.mjs +466 -0
- package/dist/plugins/insights/recordEvent.cjs +135 -0
- package/dist/plugins/insights/recordEvent.d.cts +13 -0
- package/dist/plugins/insights/recordEvent.d.mts +13 -0
- package/dist/plugins/insights/recordEvent.mjs +132 -0
- package/dist/plugins/insights/schema.cjs +347 -0
- package/dist/plugins/insights/schema.d.cts +258 -0
- package/dist/plugins/insights/schema.d.mts +258 -0
- package/dist/plugins/insights/schema.mjs +344 -0
- package/dist/types/index.d.cts +2 -28
- package/dist/types/index.d.mts +2 -28
- package/package.json +28 -5
- package/src/adapters/drizzle.conformance.integration.spec.ts +34 -0
- package/src/adapters/drizzle.readBudgets.integration.spec.ts +41 -0
- package/src/adapters/drizzle.spec.ts +270 -399
- package/src/adapters/drizzle.ts +48 -140
- package/src/adapters/drizzleExecutor.ts +166 -0
- package/src/adapters/kysely.conformance.integration.spec.ts +36 -0
- package/src/adapters/kysely.readBudgets.integration.spec.ts +42 -0
- package/src/adapters/kysely.spec.ts +204 -171
- package/src/adapters/kysely.ts +32 -93
- package/src/adapters/kyselyExecutor.ts +53 -0
- package/src/adapters/mongodb.integration.spec.ts +143 -446
- package/src/adapters/mongodb.readBudgets.integration.spec.ts +61 -0
- package/src/adapters/mongodb.ts +36 -123
- package/src/adapters/mongodbAdapter.ts +293 -0
- package/src/adapters/prisma.conformance.integration.spec.ts +36 -0
- package/src/adapters/prisma.integration.spec.ts +138 -0
- package/src/adapters/prisma.readBudgets.integration.spec.ts +40 -0
- package/src/adapters/prisma.spec.ts +216 -433
- package/src/adapters/prisma.ts +60 -524
- package/src/adapters/prismaExecutor.ts +107 -0
- package/src/adapters/prismaTestClients.ts +175 -0
- package/src/adapters/sqlProviders.ts +14 -0
- package/src/apiKeys.integration.spec.ts +19 -119
- package/src/apiKeys.spec.ts +39 -35
- package/src/apiKeys.ts +2 -8
- package/src/assembly/assemblePlugins.ts +269 -0
- package/src/assembly/assembly.spec.ts +325 -0
- package/src/assembly/assembly.types.spec.ts +155 -0
- package/src/assembly/builtInRoutes.spec.ts +213 -0
- package/src/assembly/databasePlugins.spec.ts +71 -0
- package/src/assembly/databasePlugins.ts +96 -0
- package/src/core/api.ts +139 -0
- package/src/core/baseCandidates.spec.ts +378 -0
- package/src/core/baseCandidates.ts +136 -0
- package/src/core/index.ts +44 -0
- package/src/core/operations.spec.ts +415 -0
- package/src/core/operations.ts +551 -0
- package/src/core/reads.spec.ts +300 -0
- package/src/core/reads.ts +417 -0
- package/src/core/releases.spec.ts +308 -0
- package/src/core/releases.ts +345 -0
- package/src/core/schema.ts +173 -0
- package/src/core/writes.ts +160 -0
- package/src/createHotUpdaterCore.ts +191 -181
- package/src/database/cursor.ts +65 -0
- package/src/database/database.ts +335 -0
- package/src/database/database.types.spec.ts +135 -0
- package/src/database/definitions.ts +72 -0
- package/src/database/engine.ts +62 -0
- package/src/database/engineAggregates.spec.ts +539 -0
- package/src/database/engineAggregates.ts +193 -0
- package/src/database/engineReads.spec.ts +219 -0
- package/src/database/engineReads.ts +302 -0
- package/src/database/engineTransaction.spec.ts +710 -0
- package/src/database/engineTransaction.ts +588 -0
- package/src/database/errors.ts +30 -0
- package/src/database/fence.spec.ts +223 -0
- package/src/database/fence.ts +171 -0
- package/src/database/index.ts +154 -0
- package/src/database/kv/kvAdapter.conformance.integration.spec.ts +17 -0
- package/src/database/kv/kvAdapter.readBudgets.integration.spec.ts +17 -0
- package/src/database/kv/kvAdapter.spec.ts +468 -0
- package/src/database/kv/kvAdapter.ts +450 -0
- package/src/database/kv/kvTestStore.ts +91 -0
- package/src/database/memory.readBudgets.integration.spec.ts +13 -0
- package/src/database/resolveSchema.spec.ts +230 -0
- package/src/database/resolveSchema.ts +372 -0
- package/src/database/schema.ts +169 -0
- package/src/database/schema.types.spec.ts +94 -0
- package/src/database/sql/docker-compose.yml +36 -0
- package/src/database/sql/sqlAdapter.integration.spec.ts +148 -0
- package/src/database/sql/sqlAdapter.readBudgets.integration.spec.ts +109 -0
- package/src/database/sql/sqlAdapter.spec.ts +255 -0
- package/src/database/sql/sqlAdapter.ts +532 -0
- package/src/database/sql/sqlSchema.ts +205 -0
- package/src/database/sql/sqlTestExecutors.ts +183 -0
- package/src/databaseTestSuite.spec.ts +39 -0
- package/src/db/builtInDatabase.ts +149 -0
- package/src/db/bundleRows.spec.ts +3 -3
- package/src/db/createBundleDiff.spec.ts +43 -29
- package/src/db/createBundleDiff.ts +13 -7
- package/src/db/engineDrizzleSchema.ts +72 -0
- package/src/db/engineMigrator.ts +105 -0
- package/src/db/enginePrismaSchema.ts +147 -0
- package/src/db/engineSql.spec.ts +129 -0
- package/src/db/engineSql.ts +48 -0
- package/src/db/engineSqlMigrator.ts +116 -0
- package/src/db/fixedMigratorShared.ts +1 -20
- package/src/db/index.spec.ts +116 -829
- package/src/db/index.ts +43 -14
- package/src/db/pluginTables.spec.ts +218 -0
- package/src/db/releaseCatalog.ts +48 -90
- package/src/db/schemaSettings.ts +104 -0
- package/src/db/settingsMigrator.spec.ts +65 -0
- package/src/db/settingsMigrator.ts +152 -0
- package/src/db/types.ts +25 -171
- package/src/db/updateArtifacts.spec.ts +170 -294
- package/src/db/updateArtifacts.ts +74 -142
- package/src/db/updateCheck.bench.ts +47 -0
- package/src/handler-standalone.integration.spec.ts +204 -410
- package/src/handler.spec.ts +134 -51
- package/src/handler.testFixtures.ts +14 -19
- package/src/handler.ts +163 -75
- package/src/handlerAdminRoutes.spec.ts +183 -0
- package/src/handlerAdminRoutes.ts +536 -0
- package/src/handlerAuth.integration.spec.ts +3 -3
- package/src/handlerManagement.spec.ts +136 -196
- package/src/handlerReleaseCatalogRoutes.ts +15 -17
- package/src/handlerTypes.ts +3 -80
- package/src/handlerVersionRoutes.ts +20 -7
- package/src/index.ts +5 -12
- package/src/insights/domain.ts +12 -0
- package/src/insights/errors.spec.ts +48 -0
- package/src/insights/errors.ts +51 -0
- package/src/insights/eventInput.ts +27 -24
- package/src/insights/insights.integration.spec.ts +228 -78
- package/src/insights/provider.spec.ts +203 -25
- package/src/insights/provider.ts +88 -32
- package/src/insights/routes.ts +95 -20
- package/src/lintRules.spec.ts +76 -0
- package/src/plugins/api-keys/apiKeysPlugin.spec.ts +172 -0
- package/src/plugins/api-keys/index.ts +66 -0
- package/src/plugins/api-keys/model.ts +69 -0
- package/src/plugins/api-keys/schema.ts +22 -0
- package/src/plugins/builtIn.ts +5 -0
- package/src/plugins/definePlugin.ts +100 -0
- package/src/plugins/index.ts +55 -0
- package/src/plugins/insights/index.ts +86 -0
- package/src/plugins/insights/insightsRollout.integration.spec.ts +187 -0
- package/src/plugins/insights/model.spec.ts +66 -0
- package/src/plugins/insights/model.ts +19 -0
- package/src/plugins/insights/reads.spec.ts +725 -0
- package/src/plugins/insights/reads.ts +707 -0
- package/src/plugins/insights/recordEvent.spec.ts +443 -0
- package/src/plugins/insights/recordEvent.ts +238 -0
- package/src/plugins/insights/schema.ts +229 -0
- package/src/plugins/pluginTestHarness.spec.ts +56 -0
- package/src/readBudgets.testFixtures.ts +15 -0
- package/src/releaseCatalogRoutes.integration.spec.ts +47 -92
- package/src/runtime.spec.ts +91 -77
- package/src/runtime.testFixtures.ts +28 -44
- package/src/runtimeBundles.integration.spec.ts +112 -0
- package/src/testUtilsMutation.integration.spec.ts +215 -0
- package/src/testUtilsPackage.integration.spec.ts +176 -0
- package/src/types/index.ts +0 -32
- package/dist/adapters/databaseConstraintErrors.cjs +0 -22
- package/dist/adapters/databaseConstraintErrors.mjs +0 -21
- package/dist/adapters/databasePluginUtils.cjs +0 -130
- package/dist/adapters/databasePluginUtils.mjs +0 -118
- package/dist/adapters/drizzleCrud.cjs +0 -340
- package/dist/adapters/drizzleCrud.mjs +0 -337
- package/dist/adapters/drizzleLazyDB.cjs +0 -103
- package/dist/adapters/drizzleLazyDB.mjs +0 -103
- package/dist/adapters/drizzleQuery.cjs +0 -69
- package/dist/adapters/drizzleQuery.mjs +0 -69
- package/dist/adapters/kyselyCrud.cjs +0 -293
- package/dist/adapters/kyselyCrud.mjs +0 -292
- package/dist/adapters/kyselyQuery.cjs +0 -56
- package/dist/adapters/kyselyQuery.mjs +0 -56
- package/dist/adapters/mongodbCollections.cjs +0 -38
- package/dist/adapters/mongodbCollections.mjs +0 -32
- package/dist/adapters/mongodbQuery.cjs +0 -90
- package/dist/adapters/mongodbQuery.mjs +0 -83
- package/dist/adapters/mongodbReads.cjs +0 -206
- package/dist/adapters/mongodbReads.mjs +0 -206
- package/dist/adapters/mongodbWrites.cjs +0 -133
- package/dist/adapters/mongodbWrites.mjs +0 -133
- package/dist/adapters/prismaInsights.cjs +0 -99
- package/dist/adapters/prismaInsights.mjs +0 -97
- package/dist/adapters/prismaQuery.cjs +0 -57
- package/dist/adapters/prismaQuery.mjs +0 -56
- package/dist/adapters/prismaRows.cjs +0 -197
- package/dist/adapters/prismaRows.mjs +0 -188
- package/dist/db/databasePluginCore.cjs +0 -137
- package/dist/db/databasePluginCore.mjs +0 -137
- package/dist/db/fixedMigrator.cjs +0 -79
- package/dist/db/fixedMigrator.mjs +0 -78
- package/dist/db/fixedMigratorMongo.cjs +0 -321
- package/dist/db/fixedMigratorMongo.mjs +0 -321
- package/dist/db/mongoMigrationExecution.cjs +0 -11
- package/dist/db/mongoMigrationExecution.mjs +0 -11
- package/dist/db/schema/insightsCollation.cjs +0 -14
- package/dist/db/schema/insightsCollation.mjs +0 -14
- package/dist/db/schema/mongodb.cjs +0 -25
- package/dist/db/schema/mongodb.mjs +0 -25
- package/dist/db/schema/registry.cjs +0 -21
- package/dist/db/schema/registry.mjs +0 -17
- package/dist/db/schema/sql.cjs +0 -105
- package/dist/db/schema/sql.mjs +0 -97
- package/dist/db/schema/sqlOperations.cjs +0 -27
- package/dist/db/schema/sqlOperations.mjs +0 -26
- package/dist/db/schemaGenerators.cjs +0 -276
- package/dist/db/schemaGenerators.mjs +0 -274
- package/dist/db/schemaReadiness.cjs +0 -26
- package/dist/db/schemaReadiness.d.cts +0 -9
- package/dist/db/schemaReadiness.d.mts +0 -9
- package/dist/db/schemaReadiness.mjs +0 -25
- package/dist/db/sqlMigrationExecution.cjs +0 -67
- package/dist/db/sqlMigrationExecution.mjs +0 -67
- package/dist/handlerBundleRoutes.cjs +0 -155
- package/dist/handlerBundleRoutes.mjs +0 -155
- package/dist/handlerReleaseManagementRoutes.cjs +0 -124
- package/dist/handlerReleaseManagementRoutes.mjs +0 -124
- package/dist/schema/dsl.cjs +0 -103
- package/dist/schema/dsl.mjs +0 -87
- package/dist/schema/index.cjs +0 -20
- package/dist/schema/index.mjs +0 -7
- package/dist/schema/settings.cjs +0 -9
- package/dist/schema/settings.mjs +0 -9
- package/dist/schema/types.cjs +0 -8
- package/dist/schema/types.mjs +0 -6
- package/dist/schema/v1_0_0.cjs +0 -393
- package/dist/schema/v1_0_0.mjs +0 -385
- package/src/adapters/databaseConstraintErrors.ts +0 -25
- package/src/adapters/databasePluginTestDatabase.ts +0 -116
- package/src/adapters/databasePluginUtils.spec.ts +0 -29
- package/src/adapters/databasePluginUtils.ts +0 -238
- package/src/adapters/drizzleCrud.ts +0 -610
- package/src/adapters/drizzleLazyDB.ts +0 -284
- package/src/adapters/drizzleQuery.ts +0 -164
- package/src/adapters/kyselyCrud.ts +0 -696
- package/src/adapters/kyselyInsights.spec.ts +0 -168
- package/src/adapters/kyselyQuery.ts +0 -128
- package/src/adapters/mongodb.spec.ts +0 -230
- package/src/adapters/mongodbCollections.ts +0 -78
- package/src/adapters/mongodbQuery.ts +0 -245
- package/src/adapters/mongodbReads.ts +0 -387
- package/src/adapters/mongodbRows.spec.ts +0 -64
- package/src/adapters/mongodbRows.ts +0 -118
- package/src/adapters/mongodbTestClient.ts +0 -443
- package/src/adapters/mongodbTestFilter.ts +0 -170
- package/src/adapters/mongodbWrites.ts +0 -261
- package/src/adapters/prismaInsights.ts +0 -190
- package/src/adapters/prismaQuery.ts +0 -129
- package/src/adapters/prismaRows.spec.ts +0 -98
- package/src/adapters/prismaRows.ts +0 -308
- package/src/adapters/prismaTestClient.ts +0 -478
- package/src/calculatePagination.ts +0 -34
- package/src/db/databasePluginCore.spec.ts +0 -62
- package/src/db/databasePluginCore.testFixtures.ts +0 -76
- package/src/db/databasePluginCore.ts +0 -185
- package/src/db/databasePluginUpdateCheck.bench.ts +0 -117
- package/src/db/fixedMigrator.spec.ts +0 -294
- package/src/db/fixedMigrator.ts +0 -147
- package/src/db/fixedMigratorMongo.spec.ts +0 -253
- package/src/db/fixedMigratorMongo.ts +0 -425
- package/src/db/hotUpdaterSchema.ts +0 -5
- package/src/db/mongoMigrationExecution.ts +0 -23
- package/src/db/schema/definitions.ts +0 -1
- package/src/db/schema/insightsCollation.ts +0 -21
- package/src/db/schema/mongodb.ts +0 -40
- package/src/db/schema/registry.ts +0 -55
- package/src/db/schema/sql.ts +0 -244
- package/src/db/schema/sqlOperations.ts +0 -63
- package/src/db/schema/types.ts +0 -1
- package/src/db/schemaGenerators.ts +0 -495
- package/src/db/schemaReadiness.ts +0 -34
- package/src/db/sqlMigrationExecution.spec.ts +0 -65
- package/src/db/sqlMigrationExecution.ts +0 -108
- package/src/db/types.spec.ts +0 -63
- package/src/handlerBundleRoutes.ts +0 -259
- package/src/handlerReleaseManagementRoutes.ts +0 -213
- package/src/schema/dsl-all-versions.spec.ts +0 -35
- package/src/schema/dsl.ts +0 -187
- package/src/schema/index.ts +0 -10
- package/src/schema/settings.ts +0 -15
- package/src/schema/types.ts +0 -79
- package/src/schema/v1_0_0.spec.ts +0 -220
- package/src/schema/v1_0_0.ts +0 -511
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { isDatabaseBundleEventMetadata, isDatabaseMetadataObject } from "@hot-updater/plugin-core";
|
|
2
|
-
//#region src/adapters/prismaRows.ts
|
|
3
|
-
var PrismaAdapterError = class extends Error {
|
|
4
|
-
reason;
|
|
5
|
-
name = "PrismaAdapterError";
|
|
6
|
-
constructor(reason) {
|
|
7
|
-
super(`Invalid Prisma plugin state: ${reason}`);
|
|
8
|
-
this.reason = reason;
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
12
|
-
const hasDelegateMethods = (value) => isRecord(value) && typeof value["count"] === "function" && typeof value["create"] === "function" && typeof value["deleteMany"] === "function" && typeof value["findFirst"] === "function" && typeof value["findMany"] === "function" && typeof value["update"] === "function" && typeof value["upsert"] === "function";
|
|
13
|
-
const modelDelegates = {
|
|
14
|
-
bundles: "bundles",
|
|
15
|
-
bundle_patches: "bundle_patches",
|
|
16
|
-
bundle_events: "bundle_events",
|
|
17
|
-
channels: "channels",
|
|
18
|
-
api_keys: "api_keys",
|
|
19
|
-
releases: "releases",
|
|
20
|
-
release_catalogs: "release_catalogs"
|
|
21
|
-
};
|
|
22
|
-
const getPrismaDelegate = (client, model) => {
|
|
23
|
-
const delegate = Object.entries(client).find(([key]) => key === modelDelegates[model])?.[1];
|
|
24
|
-
if (delegate === void 0) throw new PrismaAdapterError(`missing model delegate "${model}"`);
|
|
25
|
-
if (!hasDelegateMethods(delegate)) throw new PrismaAdapterError(`invalid model delegate "${model}"`);
|
|
26
|
-
return delegate;
|
|
27
|
-
};
|
|
28
|
-
const readString = (row, field) => {
|
|
29
|
-
const value = row[field];
|
|
30
|
-
if (typeof value !== "string") throw new PrismaAdapterError(`expected string field "${field}"`);
|
|
31
|
-
return value;
|
|
32
|
-
};
|
|
33
|
-
const readNullableString = (row, field) => {
|
|
34
|
-
const value = row[field];
|
|
35
|
-
if (value === null) return null;
|
|
36
|
-
if (typeof value !== "string") throw new PrismaAdapterError(`expected nullable string field "${field}"`);
|
|
37
|
-
return value;
|
|
38
|
-
};
|
|
39
|
-
const readByteSize = (row, field) => {
|
|
40
|
-
const value = row[field];
|
|
41
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) throw new PrismaAdapterError(`expected byte-size field "${field}"`);
|
|
42
|
-
return value;
|
|
43
|
-
};
|
|
44
|
-
const parsePrismaBundleRow = (value) => {
|
|
45
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid bundle row");
|
|
46
|
-
const platform = value["platform"];
|
|
47
|
-
if (platform !== "android" && platform !== "ios") throw new PrismaAdapterError("expected platform \"android\" or \"ios\"");
|
|
48
|
-
const metadata = value["metadata"];
|
|
49
|
-
if (!isDatabaseMetadataObject(metadata)) throw new PrismaAdapterError("invalid metadata field");
|
|
50
|
-
return {
|
|
51
|
-
id: readString(value, "id"),
|
|
52
|
-
platform,
|
|
53
|
-
file_hash: readString(value, "file_hash"),
|
|
54
|
-
git_commit_hash: readNullableString(value, "git_commit_hash"),
|
|
55
|
-
storage_uri: readString(value, "storage_uri"),
|
|
56
|
-
archive_byte_size: readByteSize(value, "archive_byte_size"),
|
|
57
|
-
metadata,
|
|
58
|
-
manifest_storage_uri: readNullableString(value, "manifest_storage_uri"),
|
|
59
|
-
manifest_file_hash: readNullableString(value, "manifest_file_hash"),
|
|
60
|
-
asset_base_storage_uri: readNullableString(value, "asset_base_storage_uri")
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
const parsePrismaChannelRow = (value) => {
|
|
64
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid channel row");
|
|
65
|
-
return {
|
|
66
|
-
id: readString(value, "id"),
|
|
67
|
-
name: readString(value, "name")
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
const parsePrismaPatchRow = (value) => {
|
|
71
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid patch row");
|
|
72
|
-
const orderIndex = value["order_index"];
|
|
73
|
-
if (typeof orderIndex !== "number") throw new PrismaAdapterError("invalid patch order_index field");
|
|
74
|
-
return {
|
|
75
|
-
id: readString(value, "id"),
|
|
76
|
-
bundle_id: readString(value, "bundle_id"),
|
|
77
|
-
base_bundle_id: readString(value, "base_bundle_id"),
|
|
78
|
-
base_file_hash: readString(value, "base_file_hash"),
|
|
79
|
-
patch_file_hash: readString(value, "patch_file_hash"),
|
|
80
|
-
patch_storage_uri: readString(value, "patch_storage_uri"),
|
|
81
|
-
byte_size: readByteSize(value, "byte_size"),
|
|
82
|
-
order_index: orderIndex
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
const readNumber = (row, field) => {
|
|
86
|
-
const value = row[field];
|
|
87
|
-
if (typeof value !== "number" || !Number.isFinite(value)) throw new PrismaAdapterError(`expected number field "${field}"`);
|
|
88
|
-
return value;
|
|
89
|
-
};
|
|
90
|
-
const parsePrismaBundleEventRow = (value) => {
|
|
91
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid event row");
|
|
92
|
-
const type = readString(value, "type");
|
|
93
|
-
const platform = readString(value, "platform");
|
|
94
|
-
const fromBundleId = readNullableString(value, "from_bundle_id");
|
|
95
|
-
const storedMetadata = value["metadata"];
|
|
96
|
-
const metadata = typeof storedMetadata === "string" ? JSON.parse(storedMetadata) : storedMetadata;
|
|
97
|
-
if (!isDatabaseBundleEventMetadata(metadata)) throw new PrismaAdapterError("invalid event metadata");
|
|
98
|
-
const updateStrategy = metadata.update_strategy;
|
|
99
|
-
if (platform !== "ios" && platform !== "android" || !((type === "UPDATE_DOWNLOADED" || type === "UPDATE_APPLIED" || type === "RECOVERED") && typeof fromBundleId === "string" && (updateStrategy === "fingerprint" || updateStrategy === "appVersion") || type === "UNCHANGED" && fromBundleId === null && updateStrategy === null)) throw new PrismaAdapterError("invalid event shape");
|
|
100
|
-
return {
|
|
101
|
-
id: readString(value, "id"),
|
|
102
|
-
type,
|
|
103
|
-
install_id: readString(value, "install_id"),
|
|
104
|
-
user_id: readNullableString(value, "user_id"),
|
|
105
|
-
from_release_id: readNullableString(value, "from_release_id"),
|
|
106
|
-
from_bundle_id: fromBundleId,
|
|
107
|
-
to_release_id: readNullableString(value, "to_release_id"),
|
|
108
|
-
to_bundle_id: readString(value, "to_bundle_id"),
|
|
109
|
-
platform,
|
|
110
|
-
app_version: readString(value, "app_version"),
|
|
111
|
-
channel: readString(value, "channel"),
|
|
112
|
-
metadata,
|
|
113
|
-
received_at_ms: readNumber(value, "received_at_ms")
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
const parsePrismaApiKeyRow = (value) => {
|
|
117
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid API key row");
|
|
118
|
-
const role = readString(value, "role");
|
|
119
|
-
if (role !== "client") throw new PrismaAdapterError("invalid API key role");
|
|
120
|
-
const revokedAt = value["revoked_at_ms"];
|
|
121
|
-
return {
|
|
122
|
-
id: readString(value, "id"),
|
|
123
|
-
hash: readString(value, "hash"),
|
|
124
|
-
name: readString(value, "name"),
|
|
125
|
-
prefix: readString(value, "prefix"),
|
|
126
|
-
role,
|
|
127
|
-
created_at_ms: readNumber(value, "created_at_ms"),
|
|
128
|
-
revoked_at_ms: revokedAt === null ? null : readNumber(value, "revoked_at_ms")
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
const parsePrismaReleaseRow = (value) => {
|
|
132
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid Release row");
|
|
133
|
-
const platform = readString(value, "platform");
|
|
134
|
-
const kind = readString(value, "kind");
|
|
135
|
-
const strategy = readString(value, "strategy");
|
|
136
|
-
const operation = readString(value, "operation");
|
|
137
|
-
const targetCohorts = value["target_cohorts"];
|
|
138
|
-
if (platform !== "ios" && platform !== "android" || kind !== "BUNDLE" && kind !== "EMBEDDED" || strategy !== "APP_VERSION" && strategy !== "FINGERPRINT" || operation !== "DEPLOY" && operation !== "PROMOTE" && operation !== "ROLLBACK" || !Array.isArray(targetCohorts) || !targetCohorts.every((cohort) => typeof cohort === "string")) throw new PrismaAdapterError("invalid Release fields");
|
|
139
|
-
const enabled = value["enabled"];
|
|
140
|
-
const shouldForceUpdate = value["should_force_update"];
|
|
141
|
-
if (typeof enabled !== "boolean" || typeof shouldForceUpdate !== "boolean") throw new PrismaAdapterError("invalid Release policy fields");
|
|
142
|
-
return {
|
|
143
|
-
bundle_id: readNullableString(value, "bundle_id"),
|
|
144
|
-
channel_id: readString(value, "channel_id"),
|
|
145
|
-
created_at_ms: readNumber(value, "created_at_ms"),
|
|
146
|
-
enabled,
|
|
147
|
-
fingerprint_hash: readNullableString(value, "fingerprint_hash"),
|
|
148
|
-
id: readString(value, "id"),
|
|
149
|
-
kind,
|
|
150
|
-
message: readNullableString(value, "message"),
|
|
151
|
-
operation,
|
|
152
|
-
platform,
|
|
153
|
-
revision: readNumber(value, "revision"),
|
|
154
|
-
rollout_cohort_count: readNumber(value, "rollout_cohort_count"),
|
|
155
|
-
scope_key: readString(value, "scope_key"),
|
|
156
|
-
should_force_update: shouldForceUpdate,
|
|
157
|
-
source_release_id: readNullableString(value, "source_release_id"),
|
|
158
|
-
strategy,
|
|
159
|
-
target_app_version: readNullableString(value, "target_app_version"),
|
|
160
|
-
target_cohorts: targetCohorts,
|
|
161
|
-
updated_at_ms: readNumber(value, "updated_at_ms")
|
|
162
|
-
};
|
|
163
|
-
};
|
|
164
|
-
const parsePrismaReleaseCatalogRow = (value) => {
|
|
165
|
-
if (!isRecord(value)) throw new PrismaAdapterError("invalid catalog row");
|
|
166
|
-
const platform = readString(value, "platform");
|
|
167
|
-
const strategy = readString(value, "strategy");
|
|
168
|
-
const isTombstone = value["is_tombstone"];
|
|
169
|
-
if (platform !== "ios" && platform !== "android" || strategy !== "APP_VERSION" && strategy !== "FINGERPRINT" || typeof isTombstone !== "boolean") throw new PrismaAdapterError("invalid catalog fields");
|
|
170
|
-
return {
|
|
171
|
-
catalog_id: readString(value, "catalog_id"),
|
|
172
|
-
byte_size: readNumber(value, "byte_size"),
|
|
173
|
-
catalog_hash: readString(value, "catalog_hash"),
|
|
174
|
-
channel_id: readString(value, "channel_id"),
|
|
175
|
-
channel_key: readString(value, "channel_key"),
|
|
176
|
-
fingerprint_hash: readNullableString(value, "fingerprint_hash"),
|
|
177
|
-
generation: readNumber(value, "generation"),
|
|
178
|
-
is_tombstone: isTombstone,
|
|
179
|
-
payload: readString(value, "payload"),
|
|
180
|
-
platform,
|
|
181
|
-
scope_key: readString(value, "scope_key"),
|
|
182
|
-
strategy,
|
|
183
|
-
updated_at_ms: readNumber(value, "updated_at_ms")
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
const parsePrismaRows = (rows, parse) => rows.map(parse);
|
|
187
|
-
//#endregion
|
|
188
|
-
export { PrismaAdapterError, getPrismaDelegate, parsePrismaApiKeyRow, parsePrismaBundleEventRow, parsePrismaBundleRow, parsePrismaChannelRow, parsePrismaPatchRow, parsePrismaReleaseCatalogRow, parsePrismaReleaseRow, parsePrismaRows };
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
const require_releaseCatalog = require("./releaseCatalog.cjs");
|
|
2
|
-
let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
|
|
3
|
-
let _hot_updater_core = require("@hot-updater/core");
|
|
4
|
-
//#region src/db/databasePluginCore.ts
|
|
5
|
-
function createDatabasePluginCore(database, resolveFileUrl, options) {
|
|
6
|
-
const client = (0, _hot_updater_plugin_core.createDatabaseClient)(database);
|
|
7
|
-
const beforeOperation = options?.beforeOperation;
|
|
8
|
-
const getReleaseCatalog = require_releaseCatalog.createReleaseCatalogReader(database);
|
|
9
|
-
const getArtifact = require_releaseCatalog.createArtifactResolver({
|
|
10
|
-
database,
|
|
11
|
-
readStorageText: options?.readStorageText,
|
|
12
|
-
resolveFileUrl
|
|
13
|
-
});
|
|
14
|
-
return {
|
|
15
|
-
api: {
|
|
16
|
-
async getBundleById(id) {
|
|
17
|
-
await beforeOperation?.();
|
|
18
|
-
return client.getBundleById(id);
|
|
19
|
-
},
|
|
20
|
-
async getReleaseCatalog(input) {
|
|
21
|
-
await beforeOperation?.();
|
|
22
|
-
return getReleaseCatalog(input);
|
|
23
|
-
},
|
|
24
|
-
async getArtifactInfo(targetBundleId, currentBundleId) {
|
|
25
|
-
await beforeOperation?.();
|
|
26
|
-
return getArtifact(targetBundleId, currentBundleId);
|
|
27
|
-
},
|
|
28
|
-
async getReleaseById(id) {
|
|
29
|
-
await beforeOperation?.();
|
|
30
|
-
return database.models.releases.findById(id);
|
|
31
|
-
},
|
|
32
|
-
async getReleasesByScope(input) {
|
|
33
|
-
await beforeOperation?.();
|
|
34
|
-
return database.models.releases.findManyByScope({
|
|
35
|
-
...input,
|
|
36
|
-
consistency: "strong"
|
|
37
|
-
});
|
|
38
|
-
},
|
|
39
|
-
async getReleases(input) {
|
|
40
|
-
await beforeOperation?.();
|
|
41
|
-
return database.models.releases.findMany(input);
|
|
42
|
-
},
|
|
43
|
-
async getReleaseCatalogByScopeKey(scopeKey) {
|
|
44
|
-
await beforeOperation?.();
|
|
45
|
-
return database.models.releaseCatalogs.findByScopeKey(scopeKey);
|
|
46
|
-
},
|
|
47
|
-
async getReleaseCatalogs(input) {
|
|
48
|
-
await beforeOperation?.();
|
|
49
|
-
return database.models.releaseCatalogs.findMany(input);
|
|
50
|
-
},
|
|
51
|
-
async updateReleasePolicy(input) {
|
|
52
|
-
await beforeOperation?.();
|
|
53
|
-
return (0, _hot_updater_plugin_core.updateReleasePolicy)({
|
|
54
|
-
database,
|
|
55
|
-
...input
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
async preflightReleasePolicy(input) {
|
|
59
|
-
await beforeOperation?.();
|
|
60
|
-
return (0, _hot_updater_plugin_core.preflightReleasePolicy)({
|
|
61
|
-
database,
|
|
62
|
-
...input
|
|
63
|
-
});
|
|
64
|
-
},
|
|
65
|
-
async deleteRelease(input) {
|
|
66
|
-
await beforeOperation?.();
|
|
67
|
-
return (0, _hot_updater_plugin_core.deleteRelease)({
|
|
68
|
-
database,
|
|
69
|
-
...input
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
async rebuildReleaseCatalog(scopeKey) {
|
|
73
|
-
await beforeOperation?.();
|
|
74
|
-
const catalog = await database.models.releaseCatalogs.findByScopeKey(scopeKey);
|
|
75
|
-
if (catalog === null) throw new Error(`Release catalog "${scopeKey}" was not found.`);
|
|
76
|
-
return (0, _hot_updater_plugin_core.rebuildReleaseCatalog)({
|
|
77
|
-
database,
|
|
78
|
-
scope: {
|
|
79
|
-
channelId: catalog.channel_id,
|
|
80
|
-
channelName: (0, _hot_updater_core.decodeChannelKey)(catalog.channel_key),
|
|
81
|
-
fingerprintHash: catalog.fingerprint_hash,
|
|
82
|
-
platform: catalog.platform,
|
|
83
|
-
scopeKey: catalog.scope_key,
|
|
84
|
-
strategy: catalog.strategy
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
},
|
|
88
|
-
async commitDatabase(input) {
|
|
89
|
-
await beforeOperation?.();
|
|
90
|
-
return database.commit(input);
|
|
91
|
-
},
|
|
92
|
-
async getChannels() {
|
|
93
|
-
await beforeOperation?.();
|
|
94
|
-
return client.getChannels();
|
|
95
|
-
},
|
|
96
|
-
async insertChannel(input) {
|
|
97
|
-
await beforeOperation?.();
|
|
98
|
-
return database.models.channels.insert(input);
|
|
99
|
-
},
|
|
100
|
-
async deleteChannel(input) {
|
|
101
|
-
await beforeOperation?.();
|
|
102
|
-
return database.models.channels.delete(input);
|
|
103
|
-
},
|
|
104
|
-
async getBundles(options) {
|
|
105
|
-
await beforeOperation?.();
|
|
106
|
-
return client.getBundles(options);
|
|
107
|
-
},
|
|
108
|
-
async insertBundle(bundle) {
|
|
109
|
-
await beforeOperation?.();
|
|
110
|
-
await client.insertBundle(bundle);
|
|
111
|
-
},
|
|
112
|
-
async insertBundles(bundles) {
|
|
113
|
-
await beforeOperation?.();
|
|
114
|
-
await client.mutate(async (transaction) => {
|
|
115
|
-
for (const bundle of bundles) await transaction.insertBundle(bundle);
|
|
116
|
-
});
|
|
117
|
-
},
|
|
118
|
-
async updateBundleById(bundleId, update) {
|
|
119
|
-
await beforeOperation?.();
|
|
120
|
-
await client.updateBundleById(bundleId, update);
|
|
121
|
-
},
|
|
122
|
-
async deleteBundleById(bundleId) {
|
|
123
|
-
await beforeOperation?.();
|
|
124
|
-
await client.deleteBundleById(bundleId);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
adapterName: database.name,
|
|
128
|
-
createMigrator: () => {
|
|
129
|
-
throw new Error("createMigrator is only available for Kysely/MongoDB database plugins.");
|
|
130
|
-
},
|
|
131
|
-
generateSchema: () => {
|
|
132
|
-
throw new Error("generateSchema is only available for Drizzle/Prisma database plugins.");
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
//#endregion
|
|
137
|
-
exports.createDatabasePluginCore = createDatabasePluginCore;
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { createArtifactResolver, createReleaseCatalogReader } from "./releaseCatalog.mjs";
|
|
2
|
-
import { createDatabaseClient, deleteRelease, preflightReleasePolicy, rebuildReleaseCatalog, updateReleasePolicy } from "@hot-updater/plugin-core";
|
|
3
|
-
import { decodeChannelKey } from "@hot-updater/core";
|
|
4
|
-
//#region src/db/databasePluginCore.ts
|
|
5
|
-
function createDatabasePluginCore(database, resolveFileUrl, options) {
|
|
6
|
-
const client = createDatabaseClient(database);
|
|
7
|
-
const beforeOperation = options?.beforeOperation;
|
|
8
|
-
const getReleaseCatalog = createReleaseCatalogReader(database);
|
|
9
|
-
const getArtifact = createArtifactResolver({
|
|
10
|
-
database,
|
|
11
|
-
readStorageText: options?.readStorageText,
|
|
12
|
-
resolveFileUrl
|
|
13
|
-
});
|
|
14
|
-
return {
|
|
15
|
-
api: {
|
|
16
|
-
async getBundleById(id) {
|
|
17
|
-
await beforeOperation?.();
|
|
18
|
-
return client.getBundleById(id);
|
|
19
|
-
},
|
|
20
|
-
async getReleaseCatalog(input) {
|
|
21
|
-
await beforeOperation?.();
|
|
22
|
-
return getReleaseCatalog(input);
|
|
23
|
-
},
|
|
24
|
-
async getArtifactInfo(targetBundleId, currentBundleId) {
|
|
25
|
-
await beforeOperation?.();
|
|
26
|
-
return getArtifact(targetBundleId, currentBundleId);
|
|
27
|
-
},
|
|
28
|
-
async getReleaseById(id) {
|
|
29
|
-
await beforeOperation?.();
|
|
30
|
-
return database.models.releases.findById(id);
|
|
31
|
-
},
|
|
32
|
-
async getReleasesByScope(input) {
|
|
33
|
-
await beforeOperation?.();
|
|
34
|
-
return database.models.releases.findManyByScope({
|
|
35
|
-
...input,
|
|
36
|
-
consistency: "strong"
|
|
37
|
-
});
|
|
38
|
-
},
|
|
39
|
-
async getReleases(input) {
|
|
40
|
-
await beforeOperation?.();
|
|
41
|
-
return database.models.releases.findMany(input);
|
|
42
|
-
},
|
|
43
|
-
async getReleaseCatalogByScopeKey(scopeKey) {
|
|
44
|
-
await beforeOperation?.();
|
|
45
|
-
return database.models.releaseCatalogs.findByScopeKey(scopeKey);
|
|
46
|
-
},
|
|
47
|
-
async getReleaseCatalogs(input) {
|
|
48
|
-
await beforeOperation?.();
|
|
49
|
-
return database.models.releaseCatalogs.findMany(input);
|
|
50
|
-
},
|
|
51
|
-
async updateReleasePolicy(input) {
|
|
52
|
-
await beforeOperation?.();
|
|
53
|
-
return updateReleasePolicy({
|
|
54
|
-
database,
|
|
55
|
-
...input
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
async preflightReleasePolicy(input) {
|
|
59
|
-
await beforeOperation?.();
|
|
60
|
-
return preflightReleasePolicy({
|
|
61
|
-
database,
|
|
62
|
-
...input
|
|
63
|
-
});
|
|
64
|
-
},
|
|
65
|
-
async deleteRelease(input) {
|
|
66
|
-
await beforeOperation?.();
|
|
67
|
-
return deleteRelease({
|
|
68
|
-
database,
|
|
69
|
-
...input
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
async rebuildReleaseCatalog(scopeKey) {
|
|
73
|
-
await beforeOperation?.();
|
|
74
|
-
const catalog = await database.models.releaseCatalogs.findByScopeKey(scopeKey);
|
|
75
|
-
if (catalog === null) throw new Error(`Release catalog "${scopeKey}" was not found.`);
|
|
76
|
-
return rebuildReleaseCatalog({
|
|
77
|
-
database,
|
|
78
|
-
scope: {
|
|
79
|
-
channelId: catalog.channel_id,
|
|
80
|
-
channelName: decodeChannelKey(catalog.channel_key),
|
|
81
|
-
fingerprintHash: catalog.fingerprint_hash,
|
|
82
|
-
platform: catalog.platform,
|
|
83
|
-
scopeKey: catalog.scope_key,
|
|
84
|
-
strategy: catalog.strategy
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
},
|
|
88
|
-
async commitDatabase(input) {
|
|
89
|
-
await beforeOperation?.();
|
|
90
|
-
return database.commit(input);
|
|
91
|
-
},
|
|
92
|
-
async getChannels() {
|
|
93
|
-
await beforeOperation?.();
|
|
94
|
-
return client.getChannels();
|
|
95
|
-
},
|
|
96
|
-
async insertChannel(input) {
|
|
97
|
-
await beforeOperation?.();
|
|
98
|
-
return database.models.channels.insert(input);
|
|
99
|
-
},
|
|
100
|
-
async deleteChannel(input) {
|
|
101
|
-
await beforeOperation?.();
|
|
102
|
-
return database.models.channels.delete(input);
|
|
103
|
-
},
|
|
104
|
-
async getBundles(options) {
|
|
105
|
-
await beforeOperation?.();
|
|
106
|
-
return client.getBundles(options);
|
|
107
|
-
},
|
|
108
|
-
async insertBundle(bundle) {
|
|
109
|
-
await beforeOperation?.();
|
|
110
|
-
await client.insertBundle(bundle);
|
|
111
|
-
},
|
|
112
|
-
async insertBundles(bundles) {
|
|
113
|
-
await beforeOperation?.();
|
|
114
|
-
await client.mutate(async (transaction) => {
|
|
115
|
-
for (const bundle of bundles) await transaction.insertBundle(bundle);
|
|
116
|
-
});
|
|
117
|
-
},
|
|
118
|
-
async updateBundleById(bundleId, update) {
|
|
119
|
-
await beforeOperation?.();
|
|
120
|
-
await client.updateBundleById(bundleId, update);
|
|
121
|
-
},
|
|
122
|
-
async deleteBundleById(bundleId) {
|
|
123
|
-
await beforeOperation?.();
|
|
124
|
-
await client.deleteBundleById(bundleId);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
adapterName: database.name,
|
|
128
|
-
createMigrator: () => {
|
|
129
|
-
throw new Error("createMigrator is only available for Kysely/MongoDB database plugins.");
|
|
130
|
-
},
|
|
131
|
-
generateSchema: () => {
|
|
132
|
-
throw new Error("generateSchema is only available for Drizzle/Prisma database plugins.");
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
//#endregion
|
|
137
|
-
export { createDatabasePluginCore };
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
const require_types = require("../schema/types.cjs");
|
|
2
|
-
const require_fixedMigratorShared = require("./fixedMigratorShared.cjs");
|
|
3
|
-
const require_sql = require("./schema/sql.cjs");
|
|
4
|
-
const require_sqlOperations = require("./schema/sqlOperations.cjs");
|
|
5
|
-
const require_sqlMigrationExecution = require("./sqlMigrationExecution.cjs");
|
|
6
|
-
const require_fixedMigratorMongo = require("./fixedMigratorMongo.cjs");
|
|
7
|
-
let kysely = require("kysely");
|
|
8
|
-
//#region src/db/fixedMigrator.ts
|
|
9
|
-
const isMissingSettingsTableError = (error) => {
|
|
10
|
-
if (!(error instanceof Error)) return false;
|
|
11
|
-
const message = error.message.toLowerCase();
|
|
12
|
-
return message.includes("private_hot_updater_settings") && (message.includes("does not exist") || message.includes("no such table") || message.includes("doesn't exist") || message.includes("not found"));
|
|
13
|
-
};
|
|
14
|
-
const createKyselyMigrator = ({ db, provider, relationMode = "foreign-keys" }) => {
|
|
15
|
-
const getSetting = async (key) => {
|
|
16
|
-
try {
|
|
17
|
-
const row = (await kysely.sql`select ${kysely.sql.ref("value")} from ${kysely.sql.table(require_types.HOT_UPDATER_SETTINGS_TABLE)} where ${kysely.sql.ref("key")} = ${key} limit 1`.execute(db)).rows[0];
|
|
18
|
-
if (!row) return void 0;
|
|
19
|
-
if (typeof row.value !== "string") throw new Error(`Invalid Hot Updater schema setting: ${key}`);
|
|
20
|
-
return row.value;
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (!isMissingSettingsTableError(error)) throw error;
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const getCoreVersion = () => getSetting(require_types.HOT_UPDATER_CORE_SCHEMA_KEY);
|
|
27
|
-
const getSchemaVersions = async () => {
|
|
28
|
-
return {
|
|
29
|
-
coreVersion: await getCoreVersion(),
|
|
30
|
-
legacyCoreVersion: require_fixedMigratorShared.inferLegacyCoreSchemaVersion(await getSetting("version"))
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
const getVersion = async () => {
|
|
34
|
-
const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
|
|
35
|
-
return coreVersion ?? legacyCoreVersion;
|
|
36
|
-
};
|
|
37
|
-
const makeResult = async (options = {}) => {
|
|
38
|
-
require_fixedMigratorShared.assertSupportedMigrationMode(options);
|
|
39
|
-
const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
|
|
40
|
-
if (require_fixedMigratorShared.isCurrentSchemaVersion(coreVersion)) return require_fixedMigratorShared.getEmptyMigrationResult();
|
|
41
|
-
require_fixedMigratorShared.assertCurrentOrEmptySchemaVersion(coreVersion ?? legacyCoreVersion);
|
|
42
|
-
const settingsStatement = require_sqlOperations.getSettingsInsertSql(provider);
|
|
43
|
-
const settingsOperation = options.updateSettings === false ? void 0 : {
|
|
44
|
-
type: "custom",
|
|
45
|
-
sql: settingsStatement
|
|
46
|
-
};
|
|
47
|
-
const statements = [...require_sql.createTableSql(provider, relationMode), settingsStatement];
|
|
48
|
-
return {
|
|
49
|
-
operations: require_sqlOperations.createSqlCreateOperations(provider, relationMode, settingsOperation),
|
|
50
|
-
getSQL: () => statements.map((statement) => `${statement};`).join("\n\n"),
|
|
51
|
-
execute: () => require_sqlMigrationExecution.executeMigrationStatements({
|
|
52
|
-
db,
|
|
53
|
-
provider,
|
|
54
|
-
statements
|
|
55
|
-
})
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
return {
|
|
59
|
-
getVersion,
|
|
60
|
-
getNameVariants: async () => void 0,
|
|
61
|
-
next: async () => {
|
|
62
|
-
const { coreVersion } = await getSchemaVersions();
|
|
63
|
-
return require_fixedMigratorShared.isCurrentSchemaVersion(coreVersion) ? void 0 : { version: require_types.HOT_UPDATER_SCHEMA_VERSION };
|
|
64
|
-
},
|
|
65
|
-
previous: async () => void 0,
|
|
66
|
-
up: makeResult,
|
|
67
|
-
down: async () => {
|
|
68
|
-
throw new Error("No previous schema to migrate to.");
|
|
69
|
-
},
|
|
70
|
-
migrateTo: async (version, options) => {
|
|
71
|
-
if (version !== "1.0.0") throw new Error(`Invalid version ${version}`);
|
|
72
|
-
return makeResult(options);
|
|
73
|
-
},
|
|
74
|
-
migrateToLatest: makeResult
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
//#endregion
|
|
78
|
-
exports.createKyselyMigrator = createKyselyMigrator;
|
|
79
|
-
exports.createMongoMigrator = require_fixedMigratorMongo.createMongoMigrator;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { HOT_UPDATER_CORE_SCHEMA_KEY, HOT_UPDATER_SCHEMA_VERSION, HOT_UPDATER_SETTINGS_TABLE } from "../schema/types.mjs";
|
|
2
|
-
import { assertCurrentOrEmptySchemaVersion, assertSupportedMigrationMode, getEmptyMigrationResult, inferLegacyCoreSchemaVersion, isCurrentSchemaVersion } from "./fixedMigratorShared.mjs";
|
|
3
|
-
import { createTableSql } from "./schema/sql.mjs";
|
|
4
|
-
import { createSqlCreateOperations, getSettingsInsertSql } from "./schema/sqlOperations.mjs";
|
|
5
|
-
import { executeMigrationStatements } from "./sqlMigrationExecution.mjs";
|
|
6
|
-
import { createMongoMigrator } from "./fixedMigratorMongo.mjs";
|
|
7
|
-
import { sql } from "kysely";
|
|
8
|
-
//#region src/db/fixedMigrator.ts
|
|
9
|
-
const isMissingSettingsTableError = (error) => {
|
|
10
|
-
if (!(error instanceof Error)) return false;
|
|
11
|
-
const message = error.message.toLowerCase();
|
|
12
|
-
return message.includes("private_hot_updater_settings") && (message.includes("does not exist") || message.includes("no such table") || message.includes("doesn't exist") || message.includes("not found"));
|
|
13
|
-
};
|
|
14
|
-
const createKyselyMigrator = ({ db, provider, relationMode = "foreign-keys" }) => {
|
|
15
|
-
const getSetting = async (key) => {
|
|
16
|
-
try {
|
|
17
|
-
const row = (await sql`select ${sql.ref("value")} from ${sql.table(HOT_UPDATER_SETTINGS_TABLE)} where ${sql.ref("key")} = ${key} limit 1`.execute(db)).rows[0];
|
|
18
|
-
if (!row) return void 0;
|
|
19
|
-
if (typeof row.value !== "string") throw new Error(`Invalid Hot Updater schema setting: ${key}`);
|
|
20
|
-
return row.value;
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (!isMissingSettingsTableError(error)) throw error;
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const getCoreVersion = () => getSetting(HOT_UPDATER_CORE_SCHEMA_KEY);
|
|
27
|
-
const getSchemaVersions = async () => {
|
|
28
|
-
return {
|
|
29
|
-
coreVersion: await getCoreVersion(),
|
|
30
|
-
legacyCoreVersion: inferLegacyCoreSchemaVersion(await getSetting("version"))
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
const getVersion = async () => {
|
|
34
|
-
const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
|
|
35
|
-
return coreVersion ?? legacyCoreVersion;
|
|
36
|
-
};
|
|
37
|
-
const makeResult = async (options = {}) => {
|
|
38
|
-
assertSupportedMigrationMode(options);
|
|
39
|
-
const { coreVersion, legacyCoreVersion } = await getSchemaVersions();
|
|
40
|
-
if (isCurrentSchemaVersion(coreVersion)) return getEmptyMigrationResult();
|
|
41
|
-
assertCurrentOrEmptySchemaVersion(coreVersion ?? legacyCoreVersion);
|
|
42
|
-
const settingsStatement = getSettingsInsertSql(provider);
|
|
43
|
-
const settingsOperation = options.updateSettings === false ? void 0 : {
|
|
44
|
-
type: "custom",
|
|
45
|
-
sql: settingsStatement
|
|
46
|
-
};
|
|
47
|
-
const statements = [...createTableSql(provider, relationMode), settingsStatement];
|
|
48
|
-
return {
|
|
49
|
-
operations: createSqlCreateOperations(provider, relationMode, settingsOperation),
|
|
50
|
-
getSQL: () => statements.map((statement) => `${statement};`).join("\n\n"),
|
|
51
|
-
execute: () => executeMigrationStatements({
|
|
52
|
-
db,
|
|
53
|
-
provider,
|
|
54
|
-
statements
|
|
55
|
-
})
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
return {
|
|
59
|
-
getVersion,
|
|
60
|
-
getNameVariants: async () => void 0,
|
|
61
|
-
next: async () => {
|
|
62
|
-
const { coreVersion } = await getSchemaVersions();
|
|
63
|
-
return isCurrentSchemaVersion(coreVersion) ? void 0 : { version: HOT_UPDATER_SCHEMA_VERSION };
|
|
64
|
-
},
|
|
65
|
-
previous: async () => void 0,
|
|
66
|
-
up: makeResult,
|
|
67
|
-
down: async () => {
|
|
68
|
-
throw new Error("No previous schema to migrate to.");
|
|
69
|
-
},
|
|
70
|
-
migrateTo: async (version, options) => {
|
|
71
|
-
if (version !== "1.0.0") throw new Error(`Invalid version ${version}`);
|
|
72
|
-
return makeResult(options);
|
|
73
|
-
},
|
|
74
|
-
migrateToLatest: makeResult
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
//#endregion
|
|
78
|
-
export { createKyselyMigrator, createMongoMigrator };
|