@hot-updater/server 1.0.0-rc.18 → 1.0.0-rc.21
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/LICENSE +12 -14
- package/dist/adapters/drizzle.cjs +6 -8
- package/dist/adapters/drizzle.d.cts +2 -2
- package/dist/adapters/drizzle.d.mts +2 -2
- package/dist/adapters/drizzle.mjs +1 -3
- package/dist/adapters/drizzleExecutor.d.cts +1 -1
- package/dist/adapters/drizzleExecutor.d.mts +1 -1
- package/dist/adapters/kysely.cjs +4 -6
- package/dist/adapters/kysely.d.cts +3 -3
- package/dist/adapters/kysely.d.mts +3 -3
- package/dist/adapters/kysely.mjs +1 -3
- package/dist/adapters/kyselyExecutor.d.cts +1 -2
- package/dist/adapters/kyselyExecutor.d.mts +1 -2
- package/dist/adapters/mongodb.cjs +10 -21
- package/dist/adapters/mongodb.d.cts +1 -1
- package/dist/adapters/mongodb.d.mts +1 -1
- package/dist/adapters/mongodb.mjs +9 -20
- package/dist/adapters/mongodbAdapter.cjs +11 -11
- package/dist/adapters/mongodbAdapter.d.cts +1 -1
- package/dist/adapters/mongodbAdapter.d.mts +1 -1
- package/dist/adapters/mongodbAdapter.mjs +1 -1
- package/dist/adapters/prisma.cjs +7 -9
- package/dist/adapters/prisma.d.cts +1 -1
- package/dist/adapters/prisma.d.mts +1 -1
- package/dist/adapters/prisma.mjs +1 -3
- package/dist/adapters/prismaExecutor.cjs +2 -3
- package/dist/adapters/prismaExecutor.mjs +1 -2
- package/dist/adapters/sqlProviders.cjs +7 -2
- package/dist/adapters/sqlProviders.mjs +6 -1
- package/dist/assembly/assemblePlugins.cjs +26 -48
- package/dist/assembly/assemblePlugins.d.cts +2 -5
- package/dist/assembly/assemblePlugins.d.mts +2 -5
- package/dist/assembly/assemblePlugins.mjs +19 -45
- package/dist/assembly/clientPlugins.cjs +6 -4
- package/dist/assembly/clientPlugins.mjs +2 -0
- package/dist/assembly/configError.d.cts +1 -6
- package/dist/assembly/configError.d.mts +1 -6
- package/dist/assembly/configError.mjs +1 -6
- package/dist/core/api.cjs +0 -40
- package/dist/core/api.d.cts +5 -16
- package/dist/core/api.d.mts +5 -16
- package/dist/core/api.mjs +1 -37
- package/dist/core/baseCandidates.cjs +0 -43
- package/dist/core/baseCandidates.mjs +2 -43
- package/dist/core/operations.cjs +13 -12
- package/dist/core/operations.mjs +6 -5
- package/dist/core/reads.cjs +4 -4
- package/dist/core/reads.d.cts +2 -41
- package/dist/core/reads.d.mts +2 -41
- package/dist/core/reads.mjs +3 -3
- package/dist/core/releases.cjs +6 -6
- package/dist/core/releases.mjs +1 -1
- package/dist/core/writes.cjs +2 -2
- package/dist/core/writes.mjs +1 -1
- package/dist/createHotUpdaterCore.cjs +39 -39
- package/dist/createHotUpdaterCore.d.cts +61 -8
- package/dist/createHotUpdaterCore.d.mts +61 -8
- package/dist/createHotUpdaterCore.mjs +35 -32
- package/dist/db/engineDrizzleSchema.cjs +3 -4
- package/dist/db/engineDrizzleSchema.mjs +1 -2
- package/dist/db/enginePrismaSchema.cjs +4 -5
- package/dist/db/enginePrismaSchema.d.cts +1 -1
- package/dist/db/enginePrismaSchema.d.mts +1 -1
- package/dist/db/enginePrismaSchema.mjs +1 -2
- package/dist/db/releaseCatalog.cjs +6 -6
- package/dist/db/releaseCatalog.mjs +1 -1
- package/dist/db/updateArtifacts.cjs +6 -6
- package/dist/db/updateArtifacts.mjs +1 -1
- package/dist/handler.cjs +3 -4
- package/dist/handler.mjs +1 -1
- package/dist/handlerAdminRoutes.cjs +1 -2
- package/dist/handlerAdminRoutes.mjs +1 -2
- package/dist/handlerVersionRoutes.cjs +2 -2
- package/dist/handlerVersionRoutes.mjs +2 -2
- package/dist/index.cjs +9 -2
- package/dist/index.d.cts +4 -3
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +2 -1
- package/dist/node.cjs +3 -6
- package/dist/node.d.cts +3 -3
- package/dist/node.d.mts +3 -3
- package/dist/node.mjs +4 -4
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/plugins/api-keys/index.cjs +8 -52
- package/dist/plugins/api-keys/index.d.cts +1 -84
- package/dist/plugins/api-keys/index.d.mts +1 -84
- package/dist/plugins/api-keys/index.mjs +2 -49
- package/dist/plugins/definePlugin.d.cts +2 -200
- package/dist/plugins/definePlugin.d.mts +2 -200
- package/dist/plugins/insights/index.cjs +7 -126
- package/dist/plugins/insights/index.d.cts +1 -398
- package/dist/plugins/insights/index.d.mts +1 -398
- package/dist/plugins/insights/index.mjs +2 -121
- package/dist/plugins/official.cjs +30 -0
- package/dist/plugins/official.mjs +29 -0
- package/dist/storageAccess.cjs +13 -10
- package/dist/storageAccess.mjs +13 -10
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.mts +1 -1
- package/package.json +15 -37
- package/dist/_virtual/_rolldown/runtime.cjs +0 -23
- package/dist/assembly/clientPlugins.d.cts +0 -16
- package/dist/assembly/clientPlugins.d.mts +0 -16
- package/dist/assembly/configError.cjs +0 -7
- package/dist/assembly/databasePlugins.cjs +0 -27
- package/dist/assembly/databasePlugins.d.cts +0 -43
- package/dist/assembly/databasePlugins.d.mts +0 -43
- package/dist/assembly/databasePlugins.mjs +0 -26
- package/dist/assembly/pluginCli.cjs +0 -125
- package/dist/assembly/pluginCli.d.cts +0 -59
- package/dist/assembly/pluginCli.d.mts +0 -59
- package/dist/assembly/pluginCli.mjs +0 -121
- package/dist/core/baseCandidates.d.cts +0 -17
- package/dist/core/baseCandidates.d.mts +0 -17
- package/dist/core/schema.cjs +0 -279
- package/dist/core/schema.d.cts +0 -307
- package/dist/core/schema.d.mts +0 -307
- package/dist/core/schema.mjs +0 -277
- package/dist/database/aggregateBatching.cjs +0 -626
- package/dist/database/aggregateBatching.d.cts +0 -10
- package/dist/database/aggregateBatching.d.mts +0 -10
- package/dist/database/aggregateBatching.mjs +0 -625
- package/dist/database/busy.cjs +0 -36
- package/dist/database/busy.d.cts +0 -12
- package/dist/database/busy.d.mts +0 -12
- package/dist/database/busy.mjs +0 -36
- package/dist/database/cursor.cjs +0 -44
- package/dist/database/cursor.d.cts +0 -7
- package/dist/database/cursor.d.mts +0 -7
- package/dist/database/cursor.mjs +0 -40
- package/dist/database/database.cjs +0 -63
- package/dist/database/database.d.cts +0 -136
- package/dist/database/database.d.mts +0 -136
- package/dist/database/database.mjs +0 -63
- package/dist/database/definitions.d.cts +0 -78
- package/dist/database/definitions.d.mts +0 -78
- package/dist/database/engine.cjs +0 -37
- package/dist/database/engine.d.cts +0 -41
- package/dist/database/engine.d.mts +0 -41
- package/dist/database/engine.mjs +0 -37
- package/dist/database/engineAggregates.cjs +0 -118
- package/dist/database/engineAggregates.mjs +0 -115
- package/dist/database/engineReads.cjs +0 -182
- package/dist/database/engineReads.d.cts +0 -35
- package/dist/database/engineReads.d.mts +0 -35
- package/dist/database/engineReads.mjs +0 -181
- package/dist/database/engineTransaction.cjs +0 -399
- package/dist/database/engineTransaction.d.cts +0 -26
- package/dist/database/engineTransaction.d.mts +0 -26
- package/dist/database/engineTransaction.mjs +0 -398
- package/dist/database/errors.cjs +0 -27
- package/dist/database/errors.d.cts +0 -21
- package/dist/database/errors.d.mts +0 -21
- package/dist/database/errors.mjs +0 -24
- package/dist/database/fence.cjs +0 -125
- package/dist/database/fence.d.cts +0 -42
- package/dist/database/fence.d.mts +0 -42
- package/dist/database/fence.mjs +0 -117
- package/dist/database/index.cjs +0 -136
- package/dist/database/index.d.cts +0 -18
- package/dist/database/index.d.mts +0 -18
- package/dist/database/index.mjs +0 -16
- package/dist/database/kv/kvAdapter.cjs +0 -285
- package/dist/database/kv/kvAdapter.d.cts +0 -109
- package/dist/database/kv/kvAdapter.d.mts +0 -109
- package/dist/database/kv/kvAdapter.mjs +0 -284
- package/dist/database/resolveSchema.cjs +0 -199
- package/dist/database/resolveSchema.d.cts +0 -42
- package/dist/database/resolveSchema.d.mts +0 -42
- package/dist/database/resolveSchema.mjs +0 -196
- package/dist/database/retention.cjs +0 -92
- package/dist/database/retention.mjs +0 -90
- package/dist/database/schema.cjs +0 -24
- package/dist/database/schema.d.cts +0 -90
- package/dist/database/schema.d.mts +0 -90
- package/dist/database/schema.mjs +0 -23
- package/dist/database/sql/sqlAdapter.cjs +0 -290
- package/dist/database/sql/sqlAdapter.d.cts +0 -46
- package/dist/database/sql/sqlAdapter.d.mts +0 -46
- package/dist/database/sql/sqlAdapter.mjs +0 -287
- package/dist/database/sql/sqlSchema.cjs +0 -171
- package/dist/database/sql/sqlSchema.d.cts +0 -8
- package/dist/database/sql/sqlSchema.d.mts +0 -8
- package/dist/database/sql/sqlSchema.mjs +0 -165
- package/dist/db/coreDatabase.cjs +0 -85
- package/dist/db/coreDatabase.d.cts +0 -57
- package/dist/db/coreDatabase.d.mts +0 -57
- package/dist/db/coreDatabase.mjs +0 -78
- package/dist/db/createBundleDiff.cjs +0 -144
- package/dist/db/createBundleDiff.d.cts +0 -17
- package/dist/db/createBundleDiff.d.mts +0 -17
- package/dist/db/createBundleDiff.mjs +0 -141
- package/dist/db/engineMigrator.cjs +0 -53
- package/dist/db/engineMigrator.mjs +0 -53
- package/dist/db/engineSql.cjs +0 -26
- package/dist/db/engineSql.d.cts +0 -17
- package/dist/db/engineSql.d.mts +0 -17
- package/dist/db/engineSql.mjs +0 -25
- package/dist/db/engineSqlMigrator.cjs +0 -66
- package/dist/db/engineSqlMigrator.mjs +0 -66
- package/dist/db/fixedMigratorShared.cjs +0 -12
- package/dist/db/fixedMigratorShared.mjs +0 -11
- package/dist/db/index.cjs +0 -50
- package/dist/db/index.d.cts +0 -23
- package/dist/db/index.d.mts +0 -23
- package/dist/db/index.mjs +0 -33
- package/dist/db/releaseCatalog.d.cts +0 -16
- package/dist/db/releaseCatalog.d.mts +0 -16
- package/dist/db/schemaSettings.cjs +0 -63
- package/dist/db/schemaSettings.d.cts +0 -12
- package/dist/db/schemaSettings.d.mts +0 -12
- package/dist/db/schemaSettings.mjs +0 -62
- package/dist/db/settingsMigrator.cjs +0 -92
- package/dist/db/settingsMigrator.mjs +0 -89
- package/dist/db/types.cjs +0 -11
- package/dist/db/types.d.cts +0 -78
- package/dist/db/types.d.mts +0 -78
- package/dist/db/types.mjs +0 -10
- package/dist/diff.cjs +0 -3
- package/dist/diff.d.cts +0 -2
- package/dist/diff.d.mts +0 -2
- package/dist/diff.mjs +0 -2
- package/dist/plugins/api-keys/apiKeys.cjs +0 -139
- package/dist/plugins/api-keys/apiKeys.d.cts +0 -27
- package/dist/plugins/api-keys/apiKeys.d.mts +0 -27
- package/dist/plugins/api-keys/apiKeys.mjs +0 -129
- package/dist/plugins/api-keys/cli.cjs +0 -115
- package/dist/plugins/api-keys/cli.mjs +0 -114
- package/dist/plugins/api-keys/model.cjs +0 -58
- package/dist/plugins/api-keys/model.d.cts +0 -26
- package/dist/plugins/api-keys/model.d.mts +0 -26
- package/dist/plugins/api-keys/model.mjs +0 -58
- package/dist/plugins/api-keys/schema.cjs +0 -38
- package/dist/plugins/api-keys/schema.d.cts +0 -44
- package/dist/plugins/api-keys/schema.d.mts +0 -44
- package/dist/plugins/api-keys/schema.mjs +0 -39
- package/dist/plugins/definePlugin.cjs +0 -5
- package/dist/plugins/definePlugin.mjs +0 -5
- package/dist/plugins/index.cjs +0 -38
- package/dist/plugins/index.d.cts +0 -12
- package/dist/plugins/index.d.mts +0 -12
- package/dist/plugins/index.mjs +0 -9
- package/dist/plugins/insights/contract.cjs +0 -193
- package/dist/plugins/insights/contract.mjs +0 -189
- package/dist/plugins/insights/domain.d.cts +0 -149
- package/dist/plugins/insights/domain.d.mts +0 -149
- package/dist/plugins/insights/errors.cjs +0 -15
- package/dist/plugins/insights/errors.mjs +0 -14
- package/dist/plugins/insights/eventInput.cjs +0 -284
- package/dist/plugins/insights/eventInput.mjs +0 -282
- package/dist/plugins/insights/eventRow.cjs +0 -49
- package/dist/plugins/insights/eventRow.d.cts +0 -64
- package/dist/plugins/insights/eventRow.d.mts +0 -64
- package/dist/plugins/insights/eventRow.mjs +0 -47
- package/dist/plugins/insights/model.cjs +0 -17
- package/dist/plugins/insights/model.d.cts +0 -10
- package/dist/plugins/insights/model.d.mts +0 -10
- package/dist/plugins/insights/model.mjs +0 -17
- package/dist/plugins/insights/modelTypes.d.cts +0 -176
- package/dist/plugins/insights/modelTypes.d.mts +0 -176
- package/dist/plugins/insights/overview.cjs +0 -109
- package/dist/plugins/insights/overview.d.cts +0 -15
- package/dist/plugins/insights/overview.d.mts +0 -15
- package/dist/plugins/insights/overview.mjs +0 -107
- package/dist/plugins/insights/provider.cjs +0 -375
- package/dist/plugins/insights/provider.d.cts +0 -6
- package/dist/plugins/insights/provider.d.mts +0 -6
- package/dist/plugins/insights/provider.mjs +0 -374
- package/dist/plugins/insights/queryInput.cjs +0 -93
- package/dist/plugins/insights/queryInput.mjs +0 -91
- package/dist/plugins/insights/reads.cjs +0 -681
- package/dist/plugins/insights/reads.d.cts +0 -61
- package/dist/plugins/insights/reads.d.mts +0 -61
- package/dist/plugins/insights/reads.mjs +0 -674
- package/dist/plugins/insights/recordEvent.cjs +0 -319
- package/dist/plugins/insights/recordEvent.d.cts +0 -18
- package/dist/plugins/insights/recordEvent.d.mts +0 -18
- package/dist/plugins/insights/recordEvent.mjs +0 -316
- package/dist/plugins/insights/routes.cjs +0 -96
- package/dist/plugins/insights/routes.mjs +0 -95
- package/dist/plugins/insights/schema.cjs +0 -489
- package/dist/plugins/insights/schema.d.cts +0 -698
- package/dist/plugins/insights/schema.d.mts +0 -698
- package/dist/plugins/insights/schema.mjs +0 -483
- package/dist/plugins/insights/testing/eventRow.d.mts +0 -64
- package/dist/plugins/insights/testing/expectInsightsIndex.mjs +0 -18
- package/dist/plugins/insights/testing/fixtures.d.mts +0 -8
- package/dist/plugins/insights/testing/fixtures.mjs +0 -25
- package/dist/plugins/insights/testing/index.d.mts +0 -24
- package/dist/plugins/insights/testing/index.mjs +0 -25
- package/dist/plugins/insights/testing/insightsModelTests.mjs +0 -714
- package/dist/plugins/insights/testing/modelTypes.d.mts +0 -176
- package/dist/plugins/insights/testing/setupInsightsHttpTestSuite.d.mts +0 -11
- package/dist/plugins/insights/testing/setupInsightsHttpTestSuite.mjs +0 -107
- package/dist/plugins/insights/testing/setupInsightsModelTestSuite.d.mts +0 -11
- package/dist/plugins/insights/testing/setupInsightsModelTestSuite.mjs +0 -31
- package/dist/plugins/insights/testing/types.d.mts +0 -26
- package/dist/plugins/insights/types.d.cts +0 -33
- package/dist/plugins/insights/types.d.mts +0 -33
- package/src/adapters/drizzle.conformance.integration.spec.ts +0 -34
- package/src/adapters/drizzle.readBudgets.integration.spec.ts +0 -43
- package/src/adapters/drizzle.spec.ts +0 -314
- package/src/adapters/drizzle.ts +0 -64
- package/src/adapters/drizzleExecutor.ts +0 -166
- package/src/adapters/kysely.conformance.integration.spec.ts +0 -36
- package/src/adapters/kysely.readBudgets.integration.spec.ts +0 -44
- package/src/adapters/kysely.spec.ts +0 -244
- package/src/adapters/kysely.ts +0 -46
- package/src/adapters/kyselyExecutor.ts +0 -53
- package/src/adapters/mongodb.integration.spec.ts +0 -271
- package/src/adapters/mongodb.readBudgets.integration.spec.ts +0 -61
- package/src/adapters/mongodb.ts +0 -45
- package/src/adapters/mongodbAdapter.ts +0 -307
- package/src/adapters/prisma.conformance.integration.spec.ts +0 -36
- package/src/adapters/prisma.integration.spec.ts +0 -146
- package/src/adapters/prisma.readBudgets.integration.spec.ts +0 -43
- package/src/adapters/prisma.spec.ts +0 -257
- package/src/adapters/prisma.ts +0 -74
- package/src/adapters/prismaExecutor.ts +0 -107
- package/src/adapters/prismaTestClients.ts +0 -182
- package/src/adapters/sqlProviders.ts +0 -14
- package/src/assembly/assemblePlugins.ts +0 -302
- package/src/assembly/assembly.spec.ts +0 -377
- package/src/assembly/assembly.types.spec.ts +0 -203
- package/src/assembly/clientPlugins.ts +0 -113
- package/src/assembly/configError.ts +0 -4
- package/src/assembly/databasePlugins.spec.ts +0 -71
- package/src/assembly/databasePlugins.ts +0 -102
- package/src/assembly/pluginCli.spec.ts +0 -254
- package/src/assembly/pluginCli.ts +0 -248
- package/src/assembly/pluginRoutes.spec.ts +0 -186
- package/src/core/api.ts +0 -139
- package/src/core/baseCandidates.spec.ts +0 -378
- package/src/core/baseCandidates.ts +0 -136
- package/src/core/index.ts +0 -44
- package/src/core/operations.spec.ts +0 -415
- package/src/core/operations.ts +0 -551
- package/src/core/reads.spec.ts +0 -300
- package/src/core/reads.ts +0 -417
- package/src/core/releases.spec.ts +0 -308
- package/src/core/releases.ts +0 -345
- package/src/core/schema.ts +0 -173
- package/src/core/writes.ts +0 -160
- package/src/createHotUpdaterCore.ts +0 -260
- package/src/database/aggregateBatching.spec.ts +0 -577
- package/src/database/aggregateBatching.ts +0 -803
- package/src/database/busy.spec.ts +0 -45
- package/src/database/busy.ts +0 -50
- package/src/database/cursor.ts +0 -65
- package/src/database/database.ts +0 -366
- package/src/database/database.types.spec.ts +0 -135
- package/src/database/definitions.ts +0 -76
- package/src/database/engine.ts +0 -62
- package/src/database/engineAggregates.spec.ts +0 -536
- package/src/database/engineAggregates.ts +0 -189
- package/src/database/engineReads.spec.ts +0 -219
- package/src/database/engineReads.ts +0 -304
- package/src/database/engineTransaction.spec.ts +0 -710
- package/src/database/engineTransaction.ts +0 -582
- package/src/database/errors.ts +0 -30
- package/src/database/fence.spec.ts +0 -223
- package/src/database/fence.ts +0 -175
- package/src/database/index.ts +0 -160
- package/src/database/kv/kvAdapter.batching.integration.spec.ts +0 -15
- package/src/database/kv/kvAdapter.conformance.integration.spec.ts +0 -19
- package/src/database/kv/kvAdapter.readBudgets.integration.spec.ts +0 -17
- package/src/database/kv/kvAdapter.spec.ts +0 -595
- package/src/database/kv/kvAdapter.ts +0 -479
- package/src/database/kv/kvTestStore.ts +0 -118
- package/src/database/memory.readBudgets.integration.spec.ts +0 -13
- package/src/database/resolveSchema.spec.ts +0 -230
- package/src/database/resolveSchema.ts +0 -375
- package/src/database/retention.spec.ts +0 -314
- package/src/database/retention.ts +0 -129
- package/src/database/schema.ts +0 -213
- package/src/database/schema.types.spec.ts +0 -94
- package/src/database/sql/docker-compose.yml +0 -36
- package/src/database/sql/sqlAdapter.integration.spec.ts +0 -145
- package/src/database/sql/sqlAdapter.readBudgets.integration.spec.ts +0 -123
- package/src/database/sql/sqlAdapter.spec.ts +0 -343
- package/src/database/sql/sqlAdapter.ts +0 -552
- package/src/database/sql/sqlSchema.ts +0 -286
- package/src/database/sql/sqlTestExecutors.ts +0 -183
- package/src/databaseTestSuite.spec.ts +0 -44
- package/src/db/bundleRows.spec.ts +0 -164
- package/src/db/bundleRows.ts +0 -10
- package/src/db/coreDatabase.ts +0 -153
- package/src/db/createBundleDiff.spec.ts +0 -464
- package/src/db/createBundleDiff.ts +0 -370
- package/src/db/engineDrizzleSchema.ts +0 -72
- package/src/db/engineMigrator.ts +0 -105
- package/src/db/enginePrismaSchema.ts +0 -147
- package/src/db/engineSql.spec.ts +0 -130
- package/src/db/engineSql.ts +0 -48
- package/src/db/engineSqlMigrator.ts +0 -116
- package/src/db/fixedMigratorShared.ts +0 -17
- package/src/db/index.spec.ts +0 -554
- package/src/db/index.ts +0 -93
- package/src/db/node-sqlite.d.ts +0 -25
- package/src/db/pluginTables.spec.ts +0 -248
- package/src/db/releaseCatalog.ts +0 -106
- package/src/db/schemaSettings.ts +0 -104
- package/src/db/settingsMigrator.spec.ts +0 -65
- package/src/db/settingsMigrator.ts +0 -152
- package/src/db/types.ts +0 -82
- package/src/db/updateArtifacts.spec.ts +0 -235
- package/src/db/updateArtifacts.ts +0 -473
- package/src/db/updateCheck.bench.ts +0 -47
- package/src/diff.ts +0 -6
- package/src/handler-standalone.integration.spec.ts +0 -321
- package/src/handler.spec.ts +0 -273
- package/src/handler.testFixtures.ts +0 -25
- package/src/handler.ts +0 -302
- package/src/handlerAdminRoutes.spec.ts +0 -183
- package/src/handlerAdminRoutes.ts +0 -536
- package/src/handlerAuth.integration.spec.ts +0 -33
- package/src/handlerErrors.ts +0 -7
- package/src/handlerManagement.spec.ts +0 -202
- package/src/handlerParameters.ts +0 -105
- package/src/handlerReleaseCatalogRoutes.ts +0 -176
- package/src/handlerTypes.ts +0 -19
- package/src/handlerVersionRoutes.ts +0 -25
- package/src/index.ts +0 -13
- package/src/internalRouter.ts +0 -104
- package/src/lintRules.spec.ts +0 -76
- package/src/node.spec.ts +0 -119
- package/src/node.ts +0 -111
- package/src/plugins/api-keys/apiKeys.integration.spec.ts +0 -92
- package/src/plugins/api-keys/apiKeys.spec.ts +0 -166
- package/src/plugins/api-keys/apiKeys.ts +0 -214
- package/src/plugins/api-keys/apiKeysPlugin.spec.ts +0 -168
- package/src/plugins/api-keys/cli.spec.ts +0 -187
- package/src/plugins/api-keys/cli.ts +0 -140
- package/src/plugins/api-keys/index.ts +0 -73
- package/src/plugins/api-keys/model.ts +0 -88
- package/src/plugins/api-keys/schema.ts +0 -22
- package/src/plugins/definePlugin.ts +0 -242
- package/src/plugins/index.ts +0 -73
- package/src/plugins/insights/contract.spec.ts +0 -285
- package/src/plugins/insights/contract.ts +0 -372
- package/src/plugins/insights/domain.ts +0 -176
- package/src/plugins/insights/errors.ts +0 -11
- package/src/plugins/insights/eventInput.ts +0 -381
- package/src/plugins/insights/eventRow.ts +0 -209
- package/src/plugins/insights/index.ts +0 -222
- package/src/plugins/insights/insights.integration.spec.ts +0 -921
- package/src/plugins/insights/insightsRollout.integration.spec.ts +0 -186
- package/src/plugins/insights/model.spec.ts +0 -64
- package/src/plugins/insights/model.ts +0 -18
- package/src/plugins/insights/modelTypes.ts +0 -197
- package/src/plugins/insights/overview.spec.ts +0 -64
- package/src/plugins/insights/overview.ts +0 -214
- package/src/plugins/insights/provider.spec.ts +0 -585
- package/src/plugins/insights/provider.ts +0 -704
- package/src/plugins/insights/queryInput.ts +0 -142
- package/src/plugins/insights/reads.spec.ts +0 -1013
- package/src/plugins/insights/reads.ts +0 -1037
- package/src/plugins/insights/recordEvent.spec.ts +0 -897
- package/src/plugins/insights/recordEvent.ts +0 -476
- package/src/plugins/insights/retention.spec.ts +0 -115
- package/src/plugins/insights/routes.ts +0 -149
- package/src/plugins/insights/schema.ts +0 -409
- package/src/plugins/insights/testing/expectInsightsIndex.spec.ts +0 -42
- package/src/plugins/insights/testing/expectInsightsIndex.ts +0 -20
- package/src/plugins/insights/testing/fixtures.ts +0 -30
- package/src/plugins/insights/testing/index.ts +0 -45
- package/src/plugins/insights/testing/insightsModelTests.ts +0 -860
- package/src/plugins/insights/testing/setupInsightsHttpTestSuite.ts +0 -152
- package/src/plugins/insights/testing/setupInsightsModelTestSuite.ts +0 -36
- package/src/plugins/insights/testing/types.ts +0 -30
- package/src/plugins/insights/types.ts +0 -55
- package/src/plugins/pluginTestHarness.spec.ts +0 -56
- package/src/readBudgets.testFixtures.ts +0 -15
- package/src/releaseCatalogRoutes.integration.spec.ts +0 -200
- package/src/retention.spec.ts +0 -73
- package/src/runtime.spec.ts +0 -207
- package/src/runtime.testFixtures.ts +0 -60
- package/src/runtimeBundles.integration.spec.ts +0 -112
- package/src/storageAccess.spec.ts +0 -152
- package/src/storageAccess.ts +0 -141
- package/src/testUtilsMutation.integration.spec.ts +0 -216
- package/src/testUtilsPackage.integration.spec.ts +0 -180
- package/src/types/index.ts +0 -2
- package/src/version.ts +0 -3
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
const require_aggregateBatching = require("../database/aggregateBatching.cjs");
|
|
2
|
-
const require_retention = require("../database/retention.cjs");
|
|
3
|
-
const require_resolveSchema = require("../database/resolveSchema.cjs");
|
|
4
|
-
const require_database = require("../database/database.cjs");
|
|
5
1
|
const require_reads = require("../core/reads.cjs");
|
|
6
|
-
const require_schema = require("../core/schema.cjs");
|
|
7
2
|
const require_api = require("../core/api.cjs");
|
|
8
|
-
const
|
|
9
|
-
const require_coreDatabase = require("../db/coreDatabase.cjs");
|
|
10
|
-
const require_configError = require("./configError.cjs");
|
|
3
|
+
const require_official = require("../plugins/official.cjs");
|
|
11
4
|
const require_clientPlugins = require("./clientPlugins.cjs");
|
|
5
|
+
let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
|
|
12
6
|
//#region src/assembly/assemblePlugins.ts
|
|
13
7
|
const PLUGIN_KEYS = /* @__PURE__ */ new Set([
|
|
14
8
|
"id",
|
|
@@ -19,11 +13,7 @@ const PLUGIN_KEYS = /* @__PURE__ */ new Set([
|
|
|
19
13
|
"init",
|
|
20
14
|
"cli"
|
|
21
15
|
]);
|
|
22
|
-
const CLI_KEYS = /* @__PURE__ */ new Set([
|
|
23
|
-
"commands",
|
|
24
|
-
"clientCredential",
|
|
25
|
-
"clientPlugin"
|
|
26
|
-
]);
|
|
16
|
+
const CLI_KEYS = /* @__PURE__ */ new Set(["clientCredential", "clientPlugin"]);
|
|
27
17
|
const INSTANCE_KEYS = /* @__PURE__ */ new Set([
|
|
28
18
|
"api",
|
|
29
19
|
"endpoints",
|
|
@@ -41,7 +31,7 @@ const PREFIX_ID = /^[a-z][a-z0-9_]*$/u;
|
|
|
41
31
|
const UNPREFIXED_ID = /^[a-z][A-Za-z0-9_]*$/u;
|
|
42
32
|
const PATH = /^(\/(:?[A-Za-z0-9_.~-]+))+$/u;
|
|
43
33
|
const fail = (message) => {
|
|
44
|
-
throw new
|
|
34
|
+
throw new _hot_updater_plugin_core.HotUpdaterConfigError(message);
|
|
45
35
|
};
|
|
46
36
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
47
37
|
const checkPlugin = (value, at) => {
|
|
@@ -53,13 +43,14 @@ const checkPlugin = (value, at) => {
|
|
|
53
43
|
if (plugin.namespace !== void 0 && plugin.namespace !== false) fail(`${at} may only set namespace: false.`);
|
|
54
44
|
const pattern = plugin.namespace === false ? UNPREFIXED_ID : PREFIX_ID;
|
|
55
45
|
if (typeof plugin.id !== "string" || !pattern.test(plugin.id)) fail(`${at} needs an id matching ${pattern.source}.`);
|
|
56
|
-
if (plugin.id ===
|
|
46
|
+
if (plugin.id === "core") fail(`${at} uses the id "core", which is core's own.`);
|
|
47
|
+
require_official.checkReservedId(value, at);
|
|
57
48
|
if (typeof plugin.schemaVersion !== "string" || !isRecord(plugin.schema) || typeof plugin.init !== "function") fail(`Plugin "${plugin.id}" needs a schemaVersion, a schema, and init.`);
|
|
58
49
|
const provides = plugin.provides;
|
|
59
50
|
if (provides !== void 0 && (!isRecord(provides) || Object.entries(provides).some(([key, flag]) => key !== "clientAuth" || flag !== true))) fail(`Plugin "${plugin.id}" may only declare provides: { clientAuth: true }.`);
|
|
60
51
|
const cli = value.cli;
|
|
61
52
|
if (cli !== void 0) {
|
|
62
|
-
if (!isRecord(cli) || Object.keys(cli).some((key) => !CLI_KEYS.has(key))
|
|
53
|
+
if (!isRecord(cli) || Object.keys(cli).some((key) => !CLI_KEYS.has(key))) fail(`Plugin "${plugin.id}" cli may only hold clientCredential and clientPlugin.`);
|
|
63
54
|
if (cli.clientCredential !== void 0 && plugin.provides?.clientAuth !== true) fail(`Plugin "${plugin.id}" adds cli.clientCredential without declaring provides: { clientAuth: true }.`);
|
|
64
55
|
}
|
|
65
56
|
return plugin;
|
|
@@ -92,10 +83,10 @@ const checkInstance = (plugin, instance) => {
|
|
|
92
83
|
};
|
|
93
84
|
/**
|
|
94
85
|
* Checks every plugin, runs each `init` once against one engine over the
|
|
95
|
-
* database
|
|
96
|
-
*
|
|
86
|
+
* database, and collects APIs, endpoints, and clientAuth. Core's reads run
|
|
87
|
+
* on the same engine, so plugins read core through `ctx.core`.
|
|
97
88
|
*/
|
|
98
|
-
const assemblePlugins = (value,
|
|
89
|
+
const assemblePlugins = (value, database, { now = Date.now, storage = { resolveFileUrl: async () => null } } = {}) => {
|
|
99
90
|
if (!Array.isArray(value)) return fail("plugins must be an array of plugins.");
|
|
100
91
|
const plugins = value.map((plugin, position) => checkPlugin(plugin, `plugins[${position}]`));
|
|
101
92
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -104,39 +95,22 @@ const assemblePlugins = (value, adapter, { now = Date.now, storage = { resolveFi
|
|
|
104
95
|
ids.add(id);
|
|
105
96
|
}
|
|
106
97
|
require_clientPlugins.clientPluginsOf(plugins);
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const fenced = name === void 0 || plugins.length === 0 ? adapter : require_fence.withSchemaFence(adapter, name, require_coreDatabase.pluginSettings(plugins));
|
|
111
|
-
const schema = require_resolveSchema.resolveSchema([
|
|
112
|
-
require_schema.coreModule,
|
|
113
|
-
...modules,
|
|
114
|
-
...batching === void 0 ? [] : [require_aggregateBatching.aggregateBatchingModule]
|
|
115
|
-
]);
|
|
116
|
-
const engine = require_database.createDatabaseEngine({
|
|
117
|
-
adapter: verify ? fenced : require_retention.pruneDuringWrites(fenced, schema.tables, {
|
|
118
|
-
leaseTable: require_fence.SETTINGS_TABLE,
|
|
119
|
-
now
|
|
120
|
-
}),
|
|
121
|
-
schema,
|
|
122
|
-
verify,
|
|
123
|
-
...batching === void 0 ? {} : {
|
|
124
|
-
batching,
|
|
125
|
-
now
|
|
126
|
-
}
|
|
98
|
+
const engine = (0, _hot_updater_plugin_core.createEngine)(database, {
|
|
99
|
+
plugins,
|
|
100
|
+
now
|
|
127
101
|
});
|
|
128
|
-
const
|
|
129
|
-
const core = require_api.createCoreApi(
|
|
102
|
+
const { onCachedRoutesChange } = database;
|
|
103
|
+
const core = require_api.createCoreApi(engine.core, storage, {
|
|
130
104
|
now,
|
|
131
|
-
...onCachedRoutesChange === void 0 ? {} : { onCachedRoutesChange }
|
|
105
|
+
...onCachedRoutesChange === void 0 ? {} : { onCachedRoutesChange: () => onCachedRoutesChange.call(database) }
|
|
132
106
|
});
|
|
133
|
-
const reads = require_reads.createCoreReads(
|
|
107
|
+
const reads = require_reads.createCoreReads(engine.core, storage);
|
|
134
108
|
const api = {};
|
|
135
109
|
const endpoints = [];
|
|
136
110
|
let clientAuth;
|
|
137
|
-
|
|
111
|
+
for (const plugin of plugins) {
|
|
138
112
|
const instance = checkInstance(plugin, plugin.init({
|
|
139
|
-
db: engine.database(
|
|
113
|
+
db: engine.database(plugin),
|
|
140
114
|
core: reads,
|
|
141
115
|
now
|
|
142
116
|
}));
|
|
@@ -151,16 +125,20 @@ const assemblePlugins = (value, adapter, { now = Date.now, storage = { resolveFi
|
|
|
151
125
|
}
|
|
152
126
|
endpoints.push(...instance.endpoints);
|
|
153
127
|
api[plugin.id] = instance.api;
|
|
154
|
-
}
|
|
128
|
+
}
|
|
155
129
|
return {
|
|
156
130
|
core,
|
|
157
131
|
api,
|
|
158
132
|
endpoints,
|
|
159
133
|
...clientAuth === void 0 ? {} : { clientAuth },
|
|
160
|
-
...verify ? { measureReads: engine.measureReads } : {},
|
|
161
134
|
flush: engine.flush
|
|
162
135
|
};
|
|
163
136
|
};
|
|
164
137
|
//#endregion
|
|
165
|
-
exports
|
|
138
|
+
Object.defineProperty(exports, "HotUpdaterConfigError", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function() {
|
|
141
|
+
return _hot_updater_plugin_core.HotUpdaterConfigError;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
166
144
|
exports.assemblePlugins = assemblePlugins;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import "../database/engine.cjs";
|
|
2
1
|
import "../core/reads.cjs";
|
|
3
|
-
import "../plugins/definePlugin.cjs";
|
|
4
2
|
import "../core/api.cjs";
|
|
3
|
+
import "../plugins/definePlugin.cjs";
|
|
5
4
|
import { HotUpdaterConfigError } from "./configError.cjs";
|
|
6
|
-
import
|
|
7
|
-
import { DatabaseAdapter } from "@hot-updater/plugin-core/internal";
|
|
8
|
-
export { HotUpdaterConfigError };
|
|
5
|
+
import "@hot-updater/plugin-core";
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import "../database/engine.mjs";
|
|
2
1
|
import "../core/reads.mjs";
|
|
3
|
-
import "../plugins/definePlugin.mjs";
|
|
4
2
|
import "../core/api.mjs";
|
|
3
|
+
import "../plugins/definePlugin.mjs";
|
|
5
4
|
import { HotUpdaterConfigError } from "./configError.mjs";
|
|
6
|
-
import
|
|
7
|
-
import { DatabaseAdapter } from "@hot-updater/plugin-core/internal";
|
|
8
|
-
export { HotUpdaterConfigError };
|
|
5
|
+
import "@hot-updater/plugin-core";
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import { aggregateBatchingModule } from "../database/aggregateBatching.mjs";
|
|
2
|
-
import { pruneDuringWrites } from "../database/retention.mjs";
|
|
3
|
-
import { resolveSchema, validateSchema } from "../database/resolveSchema.mjs";
|
|
4
|
-
import { createDatabaseEngine } from "../database/database.mjs";
|
|
5
1
|
import { createCoreReads } from "../core/reads.mjs";
|
|
6
|
-
import { coreModule } from "../core/schema.mjs";
|
|
7
2
|
import { createCoreApi } from "../core/api.mjs";
|
|
8
|
-
import { SETTINGS_TABLE, fencedName, withSchemaFence } from "../database/fence.mjs";
|
|
9
|
-
import { pluginModule, pluginSettings } from "../db/coreDatabase.mjs";
|
|
10
3
|
import { HotUpdaterConfigError } from "./configError.mjs";
|
|
4
|
+
import { checkReservedId } from "../plugins/official.mjs";
|
|
11
5
|
import { clientPluginsOf } from "./clientPlugins.mjs";
|
|
6
|
+
import { createEngine } from "@hot-updater/plugin-core";
|
|
12
7
|
//#region src/assembly/assemblePlugins.ts
|
|
13
8
|
const PLUGIN_KEYS = /* @__PURE__ */ new Set([
|
|
14
9
|
"id",
|
|
@@ -19,11 +14,7 @@ const PLUGIN_KEYS = /* @__PURE__ */ new Set([
|
|
|
19
14
|
"init",
|
|
20
15
|
"cli"
|
|
21
16
|
]);
|
|
22
|
-
const CLI_KEYS = /* @__PURE__ */ new Set([
|
|
23
|
-
"commands",
|
|
24
|
-
"clientCredential",
|
|
25
|
-
"clientPlugin"
|
|
26
|
-
]);
|
|
17
|
+
const CLI_KEYS = /* @__PURE__ */ new Set(["clientCredential", "clientPlugin"]);
|
|
27
18
|
const INSTANCE_KEYS = /* @__PURE__ */ new Set([
|
|
28
19
|
"api",
|
|
29
20
|
"endpoints",
|
|
@@ -53,13 +44,14 @@ const checkPlugin = (value, at) => {
|
|
|
53
44
|
if (plugin.namespace !== void 0 && plugin.namespace !== false) fail(`${at} may only set namespace: false.`);
|
|
54
45
|
const pattern = plugin.namespace === false ? UNPREFIXED_ID : PREFIX_ID;
|
|
55
46
|
if (typeof plugin.id !== "string" || !pattern.test(plugin.id)) fail(`${at} needs an id matching ${pattern.source}.`);
|
|
56
|
-
if (plugin.id ===
|
|
47
|
+
if (plugin.id === "core") fail(`${at} uses the id "core", which is core's own.`);
|
|
48
|
+
checkReservedId(value, at);
|
|
57
49
|
if (typeof plugin.schemaVersion !== "string" || !isRecord(plugin.schema) || typeof plugin.init !== "function") fail(`Plugin "${plugin.id}" needs a schemaVersion, a schema, and init.`);
|
|
58
50
|
const provides = plugin.provides;
|
|
59
51
|
if (provides !== void 0 && (!isRecord(provides) || Object.entries(provides).some(([key, flag]) => key !== "clientAuth" || flag !== true))) fail(`Plugin "${plugin.id}" may only declare provides: { clientAuth: true }.`);
|
|
60
52
|
const cli = value.cli;
|
|
61
53
|
if (cli !== void 0) {
|
|
62
|
-
if (!isRecord(cli) || Object.keys(cli).some((key) => !CLI_KEYS.has(key))
|
|
54
|
+
if (!isRecord(cli) || Object.keys(cli).some((key) => !CLI_KEYS.has(key))) fail(`Plugin "${plugin.id}" cli may only hold clientCredential and clientPlugin.`);
|
|
63
55
|
if (cli.clientCredential !== void 0 && plugin.provides?.clientAuth !== true) fail(`Plugin "${plugin.id}" adds cli.clientCredential without declaring provides: { clientAuth: true }.`);
|
|
64
56
|
}
|
|
65
57
|
return plugin;
|
|
@@ -92,10 +84,10 @@ const checkInstance = (plugin, instance) => {
|
|
|
92
84
|
};
|
|
93
85
|
/**
|
|
94
86
|
* Checks every plugin, runs each `init` once against one engine over the
|
|
95
|
-
* database
|
|
96
|
-
*
|
|
87
|
+
* database, and collects APIs, endpoints, and clientAuth. Core's reads run
|
|
88
|
+
* on the same engine, so plugins read core through `ctx.core`.
|
|
97
89
|
*/
|
|
98
|
-
const assemblePlugins = (value,
|
|
90
|
+
const assemblePlugins = (value, database, { now = Date.now, storage = { resolveFileUrl: async () => null } } = {}) => {
|
|
99
91
|
if (!Array.isArray(value)) return fail("plugins must be an array of plugins.");
|
|
100
92
|
const plugins = value.map((plugin, position) => checkPlugin(plugin, `plugins[${position}]`));
|
|
101
93
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -104,39 +96,22 @@ const assemblePlugins = (value, adapter, { now = Date.now, storage = { resolveFi
|
|
|
104
96
|
ids.add(id);
|
|
105
97
|
}
|
|
106
98
|
clientPluginsOf(plugins);
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const fenced = name === void 0 || plugins.length === 0 ? adapter : withSchemaFence(adapter, name, pluginSettings(plugins));
|
|
111
|
-
const schema = resolveSchema([
|
|
112
|
-
coreModule,
|
|
113
|
-
...modules,
|
|
114
|
-
...batching === void 0 ? [] : [aggregateBatchingModule]
|
|
115
|
-
]);
|
|
116
|
-
const engine = createDatabaseEngine({
|
|
117
|
-
adapter: verify ? fenced : pruneDuringWrites(fenced, schema.tables, {
|
|
118
|
-
leaseTable: SETTINGS_TABLE,
|
|
119
|
-
now
|
|
120
|
-
}),
|
|
121
|
-
schema,
|
|
122
|
-
verify,
|
|
123
|
-
...batching === void 0 ? {} : {
|
|
124
|
-
batching,
|
|
125
|
-
now
|
|
126
|
-
}
|
|
99
|
+
const engine = createEngine(database, {
|
|
100
|
+
plugins,
|
|
101
|
+
now
|
|
127
102
|
});
|
|
128
|
-
const
|
|
129
|
-
const core = createCoreApi(
|
|
103
|
+
const { onCachedRoutesChange } = database;
|
|
104
|
+
const core = createCoreApi(engine.core, storage, {
|
|
130
105
|
now,
|
|
131
|
-
...onCachedRoutesChange === void 0 ? {} : { onCachedRoutesChange }
|
|
106
|
+
...onCachedRoutesChange === void 0 ? {} : { onCachedRoutesChange: () => onCachedRoutesChange.call(database) }
|
|
132
107
|
});
|
|
133
|
-
const reads = createCoreReads(
|
|
108
|
+
const reads = createCoreReads(engine.core, storage);
|
|
134
109
|
const api = {};
|
|
135
110
|
const endpoints = [];
|
|
136
111
|
let clientAuth;
|
|
137
|
-
|
|
112
|
+
for (const plugin of plugins) {
|
|
138
113
|
const instance = checkInstance(plugin, plugin.init({
|
|
139
|
-
db: engine.database(
|
|
114
|
+
db: engine.database(plugin),
|
|
140
115
|
core: reads,
|
|
141
116
|
now
|
|
142
117
|
}));
|
|
@@ -151,13 +126,12 @@ const assemblePlugins = (value, adapter, { now = Date.now, storage = { resolveFi
|
|
|
151
126
|
}
|
|
152
127
|
endpoints.push(...instance.endpoints);
|
|
153
128
|
api[plugin.id] = instance.api;
|
|
154
|
-
}
|
|
129
|
+
}
|
|
155
130
|
return {
|
|
156
131
|
core,
|
|
157
132
|
api,
|
|
158
133
|
endpoints,
|
|
159
134
|
...clientAuth === void 0 ? {} : { clientAuth },
|
|
160
|
-
...verify ? { measureReads: engine.measureReads } : {},
|
|
161
135
|
flush: engine.flush
|
|
162
136
|
};
|
|
163
137
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_official = require("../plugins/official.cjs");
|
|
2
|
+
let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
|
|
2
3
|
//#region src/assembly/clientPlugins.ts
|
|
3
4
|
const EXPORT_NAME = /^[A-Za-z_$][\w$]*$/u;
|
|
4
5
|
/**
|
|
@@ -64,21 +65,22 @@ const isRecord = (value) => typeof value === "object" && value !== null && !Arra
|
|
|
64
65
|
* or one name from two modules, throws `HotUpdaterConfigError`.
|
|
65
66
|
*/
|
|
66
67
|
const clientPluginsOf = (plugins) => {
|
|
67
|
-
if (!Array.isArray(plugins)) throw new
|
|
68
|
+
if (!Array.isArray(plugins)) throw new _hot_updater_plugin_core.HotUpdaterConfigError("plugins must be an array of plugins.");
|
|
68
69
|
const found = [];
|
|
70
|
+
plugins.forEach((plugin, position) => require_official.checkReservedId(plugin, `plugins[${position}]`));
|
|
69
71
|
for (const plugin of plugins) {
|
|
70
72
|
if (!isRecord(plugin) || !isRecord(plugin.cli)) continue;
|
|
71
73
|
const value = plugin.cli.clientPlugin;
|
|
72
74
|
if (value === void 0) continue;
|
|
73
75
|
const id = String(plugin.id);
|
|
74
|
-
if (!isRecord(value) || typeof value.module !== "string" || value.module === "" || typeof value.name !== "string" || !EXPORT_NAME.test(value.name) || UNAVAILABLE_NAMES.has(value.name)) throw new
|
|
76
|
+
if (!isRecord(value) || typeof value.module !== "string" || value.module === "" || typeof value.name !== "string" || !EXPORT_NAME.test(value.name) || UNAVAILABLE_NAMES.has(value.name)) throw new _hot_updater_plugin_core.HotUpdaterConfigError(`Plugin "${id}" cli.clientPlugin needs a module and an export name the app can import: an identifier other than a reserved word, App, or HotUpdater.`);
|
|
75
77
|
const { module, name } = value;
|
|
76
78
|
const named = found.find((entry) => entry.name === name);
|
|
77
79
|
if (named === void 0) found.push({
|
|
78
80
|
module,
|
|
79
81
|
name
|
|
80
82
|
});
|
|
81
|
-
else if (named.module !== module) throw new
|
|
83
|
+
else if (named.module !== module) throw new _hot_updater_plugin_core.HotUpdaterConfigError(`Plugin "${id}" names the client plugin "${name}" from ${module}, but another plugin names it from ${named.module}.`);
|
|
82
84
|
}
|
|
83
85
|
return found;
|
|
84
86
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { HotUpdaterConfigError } from "./configError.mjs";
|
|
2
|
+
import { checkReservedId } from "../plugins/official.mjs";
|
|
2
3
|
//#region src/assembly/clientPlugins.ts
|
|
3
4
|
const EXPORT_NAME = /^[A-Za-z_$][\w$]*$/u;
|
|
4
5
|
/**
|
|
@@ -66,6 +67,7 @@ const isRecord = (value) => typeof value === "object" && value !== null && !Arra
|
|
|
66
67
|
const clientPluginsOf = (plugins) => {
|
|
67
68
|
if (!Array.isArray(plugins)) throw new HotUpdaterConfigError("plugins must be an array of plugins.");
|
|
68
69
|
const found = [];
|
|
70
|
+
plugins.forEach((plugin, position) => checkReservedId(plugin, `plugins[${position}]`));
|
|
69
71
|
for (const plugin of plugins) {
|
|
70
72
|
if (!isRecord(plugin) || !isRecord(plugin.cli)) continue;
|
|
71
73
|
const value = plugin.cli.clientPlugin;
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** A misconfigured `createHotUpdater` call, reported at startup. */
|
|
3
|
-
declare class HotUpdaterConfigError extends Error {
|
|
4
|
-
readonly name = "HotUpdaterConfigError";
|
|
5
|
-
}
|
|
6
|
-
//#endregion
|
|
1
|
+
import { HotUpdaterConfigError } from "@hot-updater/plugin-core";
|
|
7
2
|
export { HotUpdaterConfigError };
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** A misconfigured `createHotUpdater` call, reported at startup. */
|
|
3
|
-
declare class HotUpdaterConfigError extends Error {
|
|
4
|
-
readonly name = "HotUpdaterConfigError";
|
|
5
|
-
}
|
|
6
|
-
//#endregion
|
|
1
|
+
import { HotUpdaterConfigError } from "@hot-updater/plugin-core";
|
|
7
2
|
export { HotUpdaterConfigError };
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** A misconfigured `createHotUpdater` call, reported at startup. */
|
|
3
|
-
var HotUpdaterConfigError = class extends Error {
|
|
4
|
-
name = "HotUpdaterConfigError";
|
|
5
|
-
};
|
|
6
|
-
//#endregion
|
|
1
|
+
import { HotUpdaterConfigError } from "@hot-updater/plugin-core";
|
|
7
2
|
export { HotUpdaterConfigError };
|
package/dist/core/api.cjs
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
const require_resolveSchema = require("../database/resolveSchema.cjs");
|
|
2
|
-
const require_database = require("../database/database.cjs");
|
|
3
1
|
const require_reads = require("./reads.cjs");
|
|
4
2
|
const require_operations = require("./operations.cjs");
|
|
5
|
-
const require_schema = require("./schema.cjs");
|
|
6
3
|
//#region src/core/api.ts
|
|
7
4
|
/**
|
|
8
5
|
* The update check answers from one Release Catalog row, so a transaction
|
|
@@ -50,42 +47,5 @@ const createCoreApi = (db, storage, options = {}) => {
|
|
|
50
47
|
}
|
|
51
48
|
};
|
|
52
49
|
};
|
|
53
|
-
/**
|
|
54
|
-
* Core's API in process, on a database's storage adapter: how the CLI reads
|
|
55
|
-
* and writes a database that runs on the storage engine.
|
|
56
|
-
*/
|
|
57
|
-
const createInProcessCoreApi = (adapter, options = {}) => createCoreApi(require_database.createDatabaseEngine({
|
|
58
|
-
adapter,
|
|
59
|
-
schema: require_resolveSchema.resolveSchema([require_schema.coreModule])
|
|
60
|
-
}).database(require_schema.coreModule), { resolveFileUrl: async () => null }, options);
|
|
61
|
-
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
62
|
-
const isAdapter = (value) => isRecord(value) && [
|
|
63
|
-
"fits",
|
|
64
|
-
"get",
|
|
65
|
-
"query",
|
|
66
|
-
"write"
|
|
67
|
-
].every((method) => typeof value[method] === "function");
|
|
68
|
-
/** The storage adapter a configured database runs on, if it is on the engine. */
|
|
69
|
-
const engineAdapterOf = (database) => isRecord(database) && isAdapter(database.adapter) ? database.adapter : isAdapter(database) ? database : void 0;
|
|
70
|
-
const OFF_ENGINE_DATABASE = "This database does not run on Hot Updater's storage engine. Upgrade its provider package to 1.0.";
|
|
71
|
-
/**
|
|
72
|
-
* Core's API for a configured database, as the CLI uses it: a self-hosted
|
|
73
|
-
* server's admin API when the database is `standaloneRepository`, or the
|
|
74
|
-
* database's own storage adapter, in process.
|
|
75
|
-
*/
|
|
76
|
-
const createDatabaseCoreApi = (database, options = {}) => {
|
|
77
|
-
if (isRecord(database) && isRecord(database.core)) return database.core;
|
|
78
|
-
const adapter = engineAdapterOf(database);
|
|
79
|
-
if (adapter === void 0) throw new Error(OFF_ENGINE_DATABASE);
|
|
80
|
-
const engineDatabase = database;
|
|
81
|
-
return createInProcessCoreApi(adapter, {
|
|
82
|
-
...options,
|
|
83
|
-
...typeof engineDatabase.onCachedRoutesChange === "function" ? { onCachedRoutesChange: () => engineDatabase.onCachedRoutesChange() } : {}
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
50
|
//#endregion
|
|
87
|
-
exports.OFF_ENGINE_DATABASE = OFF_ENGINE_DATABASE;
|
|
88
51
|
exports.createCoreApi = createCoreApi;
|
|
89
|
-
exports.createDatabaseCoreApi = createDatabaseCoreApi;
|
|
90
|
-
exports.createInProcessCoreApi = createInProcessCoreApi;
|
|
91
|
-
exports.engineAdapterOf = engineAdapterOf;
|
package/dist/core/api.d.cts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { ReleaseCatalogRequest } from "../db/releaseCatalog.cjs";
|
|
2
1
|
import { CoreDatabase, CoreStorage } from "./reads.cjs";
|
|
3
|
-
import { HotUpdaterCoreApi } from "@hot-updater/plugin-core";
|
|
4
|
-
import { DatabaseAdapter } from "@hot-updater/plugin-core/internal";
|
|
5
2
|
//#region src/core/api.d.ts
|
|
6
3
|
interface CoreApiOptions {
|
|
7
4
|
readonly now?: () => number;
|
|
@@ -28,12 +25,12 @@ declare const createCoreApi: (db: CoreDatabase, storage: CoreStorage, options?:
|
|
|
28
25
|
preflightReleaseCatalogRebuild: (scopeKey: string) => Promise<import("@hot-updater/plugin-core").ReleaseCatalogRebuildPreflight>;
|
|
29
26
|
ensureChannel: (name: string) => Promise<import("@hot-updater/plugin-core").ChannelRow>;
|
|
30
27
|
deleteChannel: (id: string) => Promise<import("@hot-updater/plugin-core").ChannelDeleteResult>;
|
|
31
|
-
updateBundle: (id: string, update: Partial<Omit<import("@hot-updater/
|
|
32
|
-
readonly patches?: import("@hot-updater/
|
|
28
|
+
updateBundle: (id: string, update: Partial<Omit<import("@hot-updater/protocol").Bundle, "id" | "patches">> & {
|
|
29
|
+
readonly patches?: import("@hot-updater/protocol").Bundle["patches"];
|
|
33
30
|
}) => Promise<void>;
|
|
34
31
|
deleteBundles: (ids: readonly string[]) => Promise<void>;
|
|
35
|
-
getReleaseCatalog(input: ReleaseCatalogRequest): Promise<import("@hot-updater/
|
|
36
|
-
getArtifactInfo(targetBundleId: string, currentBundleId: string, artifactProtocolVersion: 1): Promise<import("@hot-updater/
|
|
32
|
+
getReleaseCatalog(input: import("@hot-updater/plugin-core").ReleaseCatalogRequest): Promise<import("@hot-updater/protocol").ReleaseCatalog | null>;
|
|
33
|
+
getArtifactInfo(targetBundleId: string, currentBundleId: string, artifactProtocolVersion: 1): Promise<import("@hot-updater/protocol").ArtifactInfo | null>;
|
|
37
34
|
getBundle(id: string): Promise<import("@hot-updater/plugin-core").BundleDetail | null>;
|
|
38
35
|
countBundleChildren(baseBundleIds: readonly string[]): Promise<Record<string, number>>;
|
|
39
36
|
listPatchesFromBase(baseBundleId: string, input: import("@hot-updater/plugin-core").KeysetInput): Promise<import("@hot-updater/plugin-core").BundlePatchRow[]>;
|
|
@@ -53,13 +50,5 @@ declare const createCoreApi: (db: CoreDatabase, storage: CoreStorage, options?:
|
|
|
53
50
|
findChannelByName(name: string): Promise<import("@hot-updater/plugin-core").ChannelRow | null>;
|
|
54
51
|
};
|
|
55
52
|
type CoreApi = ReturnType<typeof createCoreApi>;
|
|
56
|
-
/**
|
|
57
|
-
* Core's API for a configured database, as the CLI uses it: a self-hosted
|
|
58
|
-
* server's admin API when the database is `standaloneRepository`, or the
|
|
59
|
-
* database's own storage adapter, in process.
|
|
60
|
-
*/
|
|
61
|
-
declare const createDatabaseCoreApi: (database: unknown, options?: {
|
|
62
|
-
readonly now?: () => number;
|
|
63
|
-
}) => HotUpdaterCoreApi;
|
|
64
53
|
//#endregion
|
|
65
|
-
export { CoreApi, CoreApiOptions, createCoreApi
|
|
54
|
+
export { CoreApi, CoreApiOptions, createCoreApi };
|
package/dist/core/api.d.mts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { ReleaseCatalogRequest } from "../db/releaseCatalog.mjs";
|
|
2
1
|
import { CoreDatabase, CoreStorage } from "./reads.mjs";
|
|
3
|
-
import { HotUpdaterCoreApi } from "@hot-updater/plugin-core";
|
|
4
|
-
import { DatabaseAdapter } from "@hot-updater/plugin-core/internal";
|
|
5
2
|
//#region src/core/api.d.ts
|
|
6
3
|
interface CoreApiOptions {
|
|
7
4
|
readonly now?: () => number;
|
|
@@ -28,12 +25,12 @@ declare const createCoreApi: (db: CoreDatabase, storage: CoreStorage, options?:
|
|
|
28
25
|
preflightReleaseCatalogRebuild: (scopeKey: string) => Promise<import("@hot-updater/plugin-core").ReleaseCatalogRebuildPreflight>;
|
|
29
26
|
ensureChannel: (name: string) => Promise<import("@hot-updater/plugin-core").ChannelRow>;
|
|
30
27
|
deleteChannel: (id: string) => Promise<import("@hot-updater/plugin-core").ChannelDeleteResult>;
|
|
31
|
-
updateBundle: (id: string, update: Partial<Omit<import("@hot-updater/
|
|
32
|
-
readonly patches?: import("@hot-updater/
|
|
28
|
+
updateBundle: (id: string, update: Partial<Omit<import("@hot-updater/protocol").Bundle, "id" | "patches">> & {
|
|
29
|
+
readonly patches?: import("@hot-updater/protocol").Bundle["patches"];
|
|
33
30
|
}) => Promise<void>;
|
|
34
31
|
deleteBundles: (ids: readonly string[]) => Promise<void>;
|
|
35
|
-
getReleaseCatalog(input: ReleaseCatalogRequest): Promise<import("@hot-updater/
|
|
36
|
-
getArtifactInfo(targetBundleId: string, currentBundleId: string, artifactProtocolVersion: 1): Promise<import("@hot-updater/
|
|
32
|
+
getReleaseCatalog(input: import("@hot-updater/plugin-core").ReleaseCatalogRequest): Promise<import("@hot-updater/protocol").ReleaseCatalog | null>;
|
|
33
|
+
getArtifactInfo(targetBundleId: string, currentBundleId: string, artifactProtocolVersion: 1): Promise<import("@hot-updater/protocol").ArtifactInfo | null>;
|
|
37
34
|
getBundle(id: string): Promise<import("@hot-updater/plugin-core").BundleDetail | null>;
|
|
38
35
|
countBundleChildren(baseBundleIds: readonly string[]): Promise<Record<string, number>>;
|
|
39
36
|
listPatchesFromBase(baseBundleId: string, input: import("@hot-updater/plugin-core").KeysetInput): Promise<import("@hot-updater/plugin-core").BundlePatchRow[]>;
|
|
@@ -53,13 +50,5 @@ declare const createCoreApi: (db: CoreDatabase, storage: CoreStorage, options?:
|
|
|
53
50
|
findChannelByName(name: string): Promise<import("@hot-updater/plugin-core").ChannelRow | null>;
|
|
54
51
|
};
|
|
55
52
|
type CoreApi = ReturnType<typeof createCoreApi>;
|
|
56
|
-
/**
|
|
57
|
-
* Core's API for a configured database, as the CLI uses it: a self-hosted
|
|
58
|
-
* server's admin API when the database is `standaloneRepository`, or the
|
|
59
|
-
* database's own storage adapter, in process.
|
|
60
|
-
*/
|
|
61
|
-
declare const createDatabaseCoreApi: (database: unknown, options?: {
|
|
62
|
-
readonly now?: () => number;
|
|
63
|
-
}) => HotUpdaterCoreApi;
|
|
64
53
|
//#endregion
|
|
65
|
-
export { CoreApi, CoreApiOptions, createCoreApi
|
|
54
|
+
export { CoreApi, CoreApiOptions, createCoreApi };
|
package/dist/core/api.mjs
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { resolveSchema } from "../database/resolveSchema.mjs";
|
|
2
|
-
import { createDatabaseEngine } from "../database/database.mjs";
|
|
3
1
|
import { createCoreReads } from "./reads.mjs";
|
|
4
2
|
import { createCoreOperations } from "./operations.mjs";
|
|
5
|
-
import { coreModule } from "./schema.mjs";
|
|
6
3
|
//#region src/core/api.ts
|
|
7
4
|
/**
|
|
8
5
|
* The update check answers from one Release Catalog row, so a transaction
|
|
@@ -50,38 +47,5 @@ const createCoreApi = (db, storage, options = {}) => {
|
|
|
50
47
|
}
|
|
51
48
|
};
|
|
52
49
|
};
|
|
53
|
-
/**
|
|
54
|
-
* Core's API in process, on a database's storage adapter: how the CLI reads
|
|
55
|
-
* and writes a database that runs on the storage engine.
|
|
56
|
-
*/
|
|
57
|
-
const createInProcessCoreApi = (adapter, options = {}) => createCoreApi(createDatabaseEngine({
|
|
58
|
-
adapter,
|
|
59
|
-
schema: resolveSchema([coreModule])
|
|
60
|
-
}).database(coreModule), { resolveFileUrl: async () => null }, options);
|
|
61
|
-
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
62
|
-
const isAdapter = (value) => isRecord(value) && [
|
|
63
|
-
"fits",
|
|
64
|
-
"get",
|
|
65
|
-
"query",
|
|
66
|
-
"write"
|
|
67
|
-
].every((method) => typeof value[method] === "function");
|
|
68
|
-
/** The storage adapter a configured database runs on, if it is on the engine. */
|
|
69
|
-
const engineAdapterOf = (database) => isRecord(database) && isAdapter(database.adapter) ? database.adapter : isAdapter(database) ? database : void 0;
|
|
70
|
-
const OFF_ENGINE_DATABASE = "This database does not run on Hot Updater's storage engine. Upgrade its provider package to 1.0.";
|
|
71
|
-
/**
|
|
72
|
-
* Core's API for a configured database, as the CLI uses it: a self-hosted
|
|
73
|
-
* server's admin API when the database is `standaloneRepository`, or the
|
|
74
|
-
* database's own storage adapter, in process.
|
|
75
|
-
*/
|
|
76
|
-
const createDatabaseCoreApi = (database, options = {}) => {
|
|
77
|
-
if (isRecord(database) && isRecord(database.core)) return database.core;
|
|
78
|
-
const adapter = engineAdapterOf(database);
|
|
79
|
-
if (adapter === void 0) throw new Error(OFF_ENGINE_DATABASE);
|
|
80
|
-
const engineDatabase = database;
|
|
81
|
-
return createInProcessCoreApi(adapter, {
|
|
82
|
-
...options,
|
|
83
|
-
...typeof engineDatabase.onCachedRoutesChange === "function" ? { onCachedRoutesChange: () => engineDatabase.onCachedRoutesChange() } : {}
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
50
|
//#endregion
|
|
87
|
-
export {
|
|
51
|
+
export { createCoreApi };
|
|
@@ -1,47 +1,6 @@
|
|
|
1
1
|
const require_releaseCatalog = require("../db/releaseCatalog.cjs");
|
|
2
|
-
let _hot_updater_core = require("@hot-updater/core");
|
|
3
2
|
let verkit = require("verkit");
|
|
4
3
|
//#region src/core/baseCandidates.ts
|
|
5
|
-
/**
|
|
6
|
-
* A new bundle's base-candidate key: the Release Catalog scope its devices
|
|
7
|
-
* update from, and for an app version its normalized range; null for a
|
|
8
|
-
* target without a valid range.
|
|
9
|
-
*/
|
|
10
|
-
const targetBaseCandidateKey = (target) => {
|
|
11
|
-
const channelKey = (0, _hot_updater_core.encodeChannelKey)(target.channel);
|
|
12
|
-
if (target.fingerprintHash) return JSON.stringify([(0, _hot_updater_core.createReleaseCatalogScopeKey)({
|
|
13
|
-
channelKey,
|
|
14
|
-
fingerprintHash: target.fingerprintHash,
|
|
15
|
-
platform: target.platform,
|
|
16
|
-
strategy: "FINGERPRINT"
|
|
17
|
-
})]);
|
|
18
|
-
const range = target.appVersion === null ? null : (0, verkit.normalizeRange)(target.appVersion);
|
|
19
|
-
return range === null ? null : JSON.stringify([(0, _hot_updater_core.createReleaseCatalogScopeKey)({
|
|
20
|
-
channelKey,
|
|
21
|
-
platform: target.platform,
|
|
22
|
-
strategy: "APP_VERSION"
|
|
23
|
-
}), range]);
|
|
24
|
-
};
|
|
25
|
-
/** The scope and range a base-candidate key names; null for any other string. */
|
|
26
|
-
const parseBaseCandidateKey = (key) => {
|
|
27
|
-
try {
|
|
28
|
-
const parsed = JSON.parse(key);
|
|
29
|
-
if (!Array.isArray(parsed) || typeof parsed[0] !== "string") return null;
|
|
30
|
-
const [scopeKey, text] = parsed;
|
|
31
|
-
const { strategy } = (0, _hot_updater_core.parseReleaseCatalogScopeKey)(scopeKey);
|
|
32
|
-
if (strategy === "FINGERPRINT") return parsed.length === 1 ? {
|
|
33
|
-
scopeKey,
|
|
34
|
-
range: null
|
|
35
|
-
} : null;
|
|
36
|
-
const range = parsed.length === 2 && typeof text === "string" ? (0, verkit.normalizeRange)(text) : null;
|
|
37
|
-
return range === null ? null : {
|
|
38
|
-
scopeKey,
|
|
39
|
-
range
|
|
40
|
-
};
|
|
41
|
-
} catch {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
4
|
/** A compiled segment as a range: its version when it holds exactly one. */
|
|
46
5
|
const segmentRange = ({ lower, upper }) => lower?.inclusive && upper?.inclusive && lower.version === upper.version ? lower.version : [lower === null ? "" : `${lower.inclusive ? ">=" : ">"}${lower.version}`, upper === null ? "" : `${upper.inclusive ? "<=" : "<"}${upper.version}`].join(" ").trim() || "*";
|
|
47
6
|
/**
|
|
@@ -67,5 +26,3 @@ const baseBundleIdsOf = (row, range, bundleId, limit) => {
|
|
|
67
26
|
};
|
|
68
27
|
//#endregion
|
|
69
28
|
exports.baseBundleIdsOf = baseBundleIdsOf;
|
|
70
|
-
exports.parseBaseCandidateKey = parseBaseCandidateKey;
|
|
71
|
-
exports.targetBaseCandidateKey = targetBaseCandidateKey;
|