@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,58 +0,0 @@
|
|
|
1
|
-
const require_errors = require("../../database/errors.cjs");
|
|
2
|
-
//#region src/plugins/api-keys/model.ts
|
|
3
|
-
const toRow = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
hash: row.hash,
|
|
6
|
-
name: row.name,
|
|
7
|
-
prefix: row.prefix,
|
|
8
|
-
role: row.role,
|
|
9
|
-
created_at_ms: row.created_at_ms,
|
|
10
|
-
revoked_at_ms: row.revoked_at_ms
|
|
11
|
-
});
|
|
12
|
-
/** Today's `ApiKeyModel` on the engine: one unique read by hash, keyed writes. */
|
|
13
|
-
const createApiKeyModel = (db) => ({
|
|
14
|
-
async create(row) {
|
|
15
|
-
try {
|
|
16
|
-
return await db.transaction(async (tx) => {
|
|
17
|
-
if (await tx.findOne("api_keys", { hash: row.hash }) !== null) return "existing";
|
|
18
|
-
tx.create("api_keys", row);
|
|
19
|
-
return "created";
|
|
20
|
-
});
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (error instanceof require_errors.DatabaseConstraintError && error.reason === "unique") return "existing";
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
async findByHash(hash) {
|
|
27
|
-
const row = await db.findOne("api_keys", { hash });
|
|
28
|
-
return row === null ? null : toRow(row);
|
|
29
|
-
},
|
|
30
|
-
/** Every key, newest first, then by id; the whole list is the result. */
|
|
31
|
-
async list() {
|
|
32
|
-
const rows = [];
|
|
33
|
-
let cursor;
|
|
34
|
-
do {
|
|
35
|
-
const page = await db.findMany("api_keys", {
|
|
36
|
-
index: "byCreated",
|
|
37
|
-
where: {},
|
|
38
|
-
order: "desc",
|
|
39
|
-
limit: 500,
|
|
40
|
-
...cursor === void 0 ? {} : { cursor }
|
|
41
|
-
});
|
|
42
|
-
rows.push(...page.rows.map(toRow));
|
|
43
|
-
cursor = page.next;
|
|
44
|
-
} while (cursor !== void 0);
|
|
45
|
-
return rows.sort((left, right) => right.created_at_ms - left.created_at_ms || (left.id < right.id ? -1 : left.id > right.id ? 1 : 0));
|
|
46
|
-
},
|
|
47
|
-
revoke: ({ id, revokedAtMs }) => db.transaction(async (tx) => {
|
|
48
|
-
const row = await tx.findOne("api_keys", { id });
|
|
49
|
-
if (row === null) return null;
|
|
50
|
-
tx.update("api_keys", row, { revoked_at_ms: revokedAtMs });
|
|
51
|
-
return toRow({
|
|
52
|
-
...row,
|
|
53
|
-
revoked_at_ms: revokedAtMs
|
|
54
|
-
});
|
|
55
|
-
})
|
|
56
|
-
});
|
|
57
|
-
//#endregion
|
|
58
|
-
exports.createApiKeyModel = createApiKeyModel;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { HotUpdaterDatabase } from "../../database/database.cjs";
|
|
2
|
-
import { ApiKeysSchema } from "./schema.cjs";
|
|
3
|
-
//#region src/plugins/api-keys/model.d.ts
|
|
4
|
-
interface ApiKeyRow {
|
|
5
|
-
readonly id: string;
|
|
6
|
-
readonly hash: string;
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly prefix: string;
|
|
9
|
-
readonly role: "client";
|
|
10
|
-
readonly created_at_ms: number;
|
|
11
|
-
readonly revoked_at_ms: number | null;
|
|
12
|
-
}
|
|
13
|
-
/** The api-keys plugin's storage: key rows by id and by hash. */
|
|
14
|
-
interface ApiKeyModel {
|
|
15
|
-
create(row: ApiKeyRow): Promise<"created" | "existing">;
|
|
16
|
-
findByHash(hash: string): Promise<ApiKeyRow | null>;
|
|
17
|
-
list(): Promise<readonly ApiKeyRow[]>;
|
|
18
|
-
revoke(input: {
|
|
19
|
-
readonly id: string;
|
|
20
|
-
readonly revokedAtMs: number;
|
|
21
|
-
}): Promise<ApiKeyRow | null>;
|
|
22
|
-
}
|
|
23
|
-
/** Today's `ApiKeyModel` on the engine: one unique read by hash, keyed writes. */
|
|
24
|
-
declare const createApiKeyModel: (db: HotUpdaterDatabase<ApiKeysSchema>) => ApiKeyModel;
|
|
25
|
-
//#endregion
|
|
26
|
-
export { ApiKeyModel, ApiKeyRow, createApiKeyModel };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { HotUpdaterDatabase } from "../../database/database.mjs";
|
|
2
|
-
import { ApiKeysSchema } from "./schema.mjs";
|
|
3
|
-
//#region src/plugins/api-keys/model.d.ts
|
|
4
|
-
interface ApiKeyRow {
|
|
5
|
-
readonly id: string;
|
|
6
|
-
readonly hash: string;
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly prefix: string;
|
|
9
|
-
readonly role: "client";
|
|
10
|
-
readonly created_at_ms: number;
|
|
11
|
-
readonly revoked_at_ms: number | null;
|
|
12
|
-
}
|
|
13
|
-
/** The api-keys plugin's storage: key rows by id and by hash. */
|
|
14
|
-
interface ApiKeyModel {
|
|
15
|
-
create(row: ApiKeyRow): Promise<"created" | "existing">;
|
|
16
|
-
findByHash(hash: string): Promise<ApiKeyRow | null>;
|
|
17
|
-
list(): Promise<readonly ApiKeyRow[]>;
|
|
18
|
-
revoke(input: {
|
|
19
|
-
readonly id: string;
|
|
20
|
-
readonly revokedAtMs: number;
|
|
21
|
-
}): Promise<ApiKeyRow | null>;
|
|
22
|
-
}
|
|
23
|
-
/** Today's `ApiKeyModel` on the engine: one unique read by hash, keyed writes. */
|
|
24
|
-
declare const createApiKeyModel: (db: HotUpdaterDatabase<ApiKeysSchema>) => ApiKeyModel;
|
|
25
|
-
//#endregion
|
|
26
|
-
export { ApiKeyModel, ApiKeyRow, createApiKeyModel };
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { DatabaseConstraintError } from "../../database/errors.mjs";
|
|
2
|
-
//#region src/plugins/api-keys/model.ts
|
|
3
|
-
const toRow = (row) => ({
|
|
4
|
-
id: row.id,
|
|
5
|
-
hash: row.hash,
|
|
6
|
-
name: row.name,
|
|
7
|
-
prefix: row.prefix,
|
|
8
|
-
role: row.role,
|
|
9
|
-
created_at_ms: row.created_at_ms,
|
|
10
|
-
revoked_at_ms: row.revoked_at_ms
|
|
11
|
-
});
|
|
12
|
-
/** Today's `ApiKeyModel` on the engine: one unique read by hash, keyed writes. */
|
|
13
|
-
const createApiKeyModel = (db) => ({
|
|
14
|
-
async create(row) {
|
|
15
|
-
try {
|
|
16
|
-
return await db.transaction(async (tx) => {
|
|
17
|
-
if (await tx.findOne("api_keys", { hash: row.hash }) !== null) return "existing";
|
|
18
|
-
tx.create("api_keys", row);
|
|
19
|
-
return "created";
|
|
20
|
-
});
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (error instanceof DatabaseConstraintError && error.reason === "unique") return "existing";
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
async findByHash(hash) {
|
|
27
|
-
const row = await db.findOne("api_keys", { hash });
|
|
28
|
-
return row === null ? null : toRow(row);
|
|
29
|
-
},
|
|
30
|
-
/** Every key, newest first, then by id; the whole list is the result. */
|
|
31
|
-
async list() {
|
|
32
|
-
const rows = [];
|
|
33
|
-
let cursor;
|
|
34
|
-
do {
|
|
35
|
-
const page = await db.findMany("api_keys", {
|
|
36
|
-
index: "byCreated",
|
|
37
|
-
where: {},
|
|
38
|
-
order: "desc",
|
|
39
|
-
limit: 500,
|
|
40
|
-
...cursor === void 0 ? {} : { cursor }
|
|
41
|
-
});
|
|
42
|
-
rows.push(...page.rows.map(toRow));
|
|
43
|
-
cursor = page.next;
|
|
44
|
-
} while (cursor !== void 0);
|
|
45
|
-
return rows.sort((left, right) => right.created_at_ms - left.created_at_ms || (left.id < right.id ? -1 : left.id > right.id ? 1 : 0));
|
|
46
|
-
},
|
|
47
|
-
revoke: ({ id, revokedAtMs }) => db.transaction(async (tx) => {
|
|
48
|
-
const row = await tx.findOne("api_keys", { id });
|
|
49
|
-
if (row === null) return null;
|
|
50
|
-
tx.update("api_keys", row, { revoked_at_ms: revokedAtMs });
|
|
51
|
-
return toRow({
|
|
52
|
-
...row,
|
|
53
|
-
revoked_at_ms: revokedAtMs
|
|
54
|
-
});
|
|
55
|
-
})
|
|
56
|
-
});
|
|
57
|
-
//#endregion
|
|
58
|
-
export { createApiKeyModel };
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
//#region src/plugins/api-keys/schema.ts
|
|
2
|
-
/** v1's `api_keys` columns; the plaintext key is never stored, only its SHA-256 digest. */
|
|
3
|
-
const apiKeysSchema = { api_keys: require("../../database/schema.cjs").defineTable({
|
|
4
|
-
id: {
|
|
5
|
-
type: "string",
|
|
6
|
-
maxLength: 255
|
|
7
|
-
},
|
|
8
|
-
hash: {
|
|
9
|
-
type: "string",
|
|
10
|
-
maxLength: 64,
|
|
11
|
-
unique: true
|
|
12
|
-
},
|
|
13
|
-
name: {
|
|
14
|
-
type: "string",
|
|
15
|
-
maxLength: 64
|
|
16
|
-
},
|
|
17
|
-
prefix: {
|
|
18
|
-
type: "string",
|
|
19
|
-
maxLength: 16
|
|
20
|
-
},
|
|
21
|
-
role: {
|
|
22
|
-
type: "string",
|
|
23
|
-
maxLength: 16
|
|
24
|
-
},
|
|
25
|
-
created_at_ms: { type: "integer" },
|
|
26
|
-
revoked_at_ms: {
|
|
27
|
-
type: "integer",
|
|
28
|
-
required: false
|
|
29
|
-
}
|
|
30
|
-
}, {
|
|
31
|
-
key: ["id"],
|
|
32
|
-
indexes: { byCreated: {
|
|
33
|
-
eq: [],
|
|
34
|
-
sort: ["created_at_ms"]
|
|
35
|
-
} }
|
|
36
|
-
}) };
|
|
37
|
-
//#endregion
|
|
38
|
-
exports.apiKeysSchema = apiKeysSchema;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { TableDefinition } from "../../database/schema.cjs";
|
|
2
|
-
import "../index.cjs";
|
|
3
|
-
//#region src/plugins/api-keys/schema.d.ts
|
|
4
|
-
/** v1's `api_keys` columns; the plaintext key is never stored, only its SHA-256 digest. */
|
|
5
|
-
declare const apiKeysSchema: {
|
|
6
|
-
readonly api_keys: TableDefinition<{
|
|
7
|
-
readonly id: {
|
|
8
|
-
readonly type: "string";
|
|
9
|
-
readonly maxLength: 255;
|
|
10
|
-
};
|
|
11
|
-
readonly hash: {
|
|
12
|
-
readonly type: "string";
|
|
13
|
-
readonly maxLength: 64;
|
|
14
|
-
readonly unique: true;
|
|
15
|
-
};
|
|
16
|
-
readonly name: {
|
|
17
|
-
readonly type: "string";
|
|
18
|
-
readonly maxLength: 64;
|
|
19
|
-
};
|
|
20
|
-
readonly prefix: {
|
|
21
|
-
readonly type: "string";
|
|
22
|
-
readonly maxLength: 16;
|
|
23
|
-
};
|
|
24
|
-
readonly role: {
|
|
25
|
-
readonly type: "string";
|
|
26
|
-
readonly maxLength: 16;
|
|
27
|
-
};
|
|
28
|
-
readonly created_at_ms: {
|
|
29
|
-
readonly type: "integer";
|
|
30
|
-
};
|
|
31
|
-
readonly revoked_at_ms: {
|
|
32
|
-
readonly type: "integer";
|
|
33
|
-
readonly required: false;
|
|
34
|
-
};
|
|
35
|
-
}, {}, {
|
|
36
|
-
readonly byCreated: {
|
|
37
|
-
readonly eq: readonly [];
|
|
38
|
-
readonly sort: readonly ["created_at_ms"];
|
|
39
|
-
};
|
|
40
|
-
}, readonly ["id"]>;
|
|
41
|
-
};
|
|
42
|
-
type ApiKeysSchema = typeof apiKeysSchema;
|
|
43
|
-
//#endregion
|
|
44
|
-
export { ApiKeysSchema, apiKeysSchema };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { TableDefinition } from "../../database/schema.mjs";
|
|
2
|
-
import "../index.mjs";
|
|
3
|
-
//#region src/plugins/api-keys/schema.d.ts
|
|
4
|
-
/** v1's `api_keys` columns; the plaintext key is never stored, only its SHA-256 digest. */
|
|
5
|
-
declare const apiKeysSchema: {
|
|
6
|
-
readonly api_keys: TableDefinition<{
|
|
7
|
-
readonly id: {
|
|
8
|
-
readonly type: "string";
|
|
9
|
-
readonly maxLength: 255;
|
|
10
|
-
};
|
|
11
|
-
readonly hash: {
|
|
12
|
-
readonly type: "string";
|
|
13
|
-
readonly maxLength: 64;
|
|
14
|
-
readonly unique: true;
|
|
15
|
-
};
|
|
16
|
-
readonly name: {
|
|
17
|
-
readonly type: "string";
|
|
18
|
-
readonly maxLength: 64;
|
|
19
|
-
};
|
|
20
|
-
readonly prefix: {
|
|
21
|
-
readonly type: "string";
|
|
22
|
-
readonly maxLength: 16;
|
|
23
|
-
};
|
|
24
|
-
readonly role: {
|
|
25
|
-
readonly type: "string";
|
|
26
|
-
readonly maxLength: 16;
|
|
27
|
-
};
|
|
28
|
-
readonly created_at_ms: {
|
|
29
|
-
readonly type: "integer";
|
|
30
|
-
};
|
|
31
|
-
readonly revoked_at_ms: {
|
|
32
|
-
readonly type: "integer";
|
|
33
|
-
readonly required: false;
|
|
34
|
-
};
|
|
35
|
-
}, {}, {
|
|
36
|
-
readonly byCreated: {
|
|
37
|
-
readonly eq: readonly [];
|
|
38
|
-
readonly sort: readonly ["created_at_ms"];
|
|
39
|
-
};
|
|
40
|
-
}, readonly ["id"]>;
|
|
41
|
-
};
|
|
42
|
-
type ApiKeysSchema = typeof apiKeysSchema;
|
|
43
|
-
//#endregion
|
|
44
|
-
export { ApiKeysSchema, apiKeysSchema };
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { defineTable } from "../../database/schema.mjs";
|
|
2
|
-
//#region src/plugins/api-keys/schema.ts
|
|
3
|
-
/** v1's `api_keys` columns; the plaintext key is never stored, only its SHA-256 digest. */
|
|
4
|
-
const apiKeysSchema = { api_keys: defineTable({
|
|
5
|
-
id: {
|
|
6
|
-
type: "string",
|
|
7
|
-
maxLength: 255
|
|
8
|
-
},
|
|
9
|
-
hash: {
|
|
10
|
-
type: "string",
|
|
11
|
-
maxLength: 64,
|
|
12
|
-
unique: true
|
|
13
|
-
},
|
|
14
|
-
name: {
|
|
15
|
-
type: "string",
|
|
16
|
-
maxLength: 64
|
|
17
|
-
},
|
|
18
|
-
prefix: {
|
|
19
|
-
type: "string",
|
|
20
|
-
maxLength: 16
|
|
21
|
-
},
|
|
22
|
-
role: {
|
|
23
|
-
type: "string",
|
|
24
|
-
maxLength: 16
|
|
25
|
-
},
|
|
26
|
-
created_at_ms: { type: "integer" },
|
|
27
|
-
revoked_at_ms: {
|
|
28
|
-
type: "integer",
|
|
29
|
-
required: false
|
|
30
|
-
}
|
|
31
|
-
}, {
|
|
32
|
-
key: ["id"],
|
|
33
|
-
indexes: { byCreated: {
|
|
34
|
-
eq: [],
|
|
35
|
-
sort: ["created_at_ms"]
|
|
36
|
-
} }
|
|
37
|
-
}) };
|
|
38
|
-
//#endregion
|
|
39
|
-
export { apiKeysSchema };
|
package/dist/plugins/index.cjs
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_cursor = require("../database/cursor.cjs");
|
|
3
|
-
const require_errors = require("../database/errors.cjs");
|
|
4
|
-
const require_schema = require("../database/schema.cjs");
|
|
5
|
-
const require_engineReads = require("../database/engineReads.cjs");
|
|
6
|
-
const require_configError = require("../assembly/configError.cjs");
|
|
7
|
-
const require_definePlugin = require("./definePlugin.cjs");
|
|
8
|
-
const require_busy = require("../database/busy.cjs");
|
|
9
|
-
let _hot_updater_plugin_core_internal = require("@hot-updater/plugin-core/internal");
|
|
10
|
-
exports.DatabaseAmbiguousCommitError = require_errors.DatabaseAmbiguousCommitError;
|
|
11
|
-
exports.DatabaseConflictError = require_errors.DatabaseConflictError;
|
|
12
|
-
exports.DatabaseConstraintError = require_errors.DatabaseConstraintError;
|
|
13
|
-
exports.DatabaseCursorError = require_cursor.DatabaseCursorError;
|
|
14
|
-
exports.DatabaseQueryError = require_engineReads.DatabaseQueryError;
|
|
15
|
-
exports.DatabaseTransactionError = require_errors.DatabaseTransactionError;
|
|
16
|
-
exports.HotUpdaterConfigError = require_configError.HotUpdaterConfigError;
|
|
17
|
-
Object.defineProperty(exports, "addDistinct", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function() {
|
|
20
|
-
return _hot_updater_plugin_core_internal.addDistinct;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports, "countDistinct", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
get: function() {
|
|
26
|
-
return _hot_updater_plugin_core_internal.countDistinct;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
exports.defineAggregate = require_schema.defineAggregate;
|
|
30
|
-
exports.definePlugin = require_definePlugin.definePlugin;
|
|
31
|
-
exports.defineTable = require_schema.defineTable;
|
|
32
|
-
exports.isDatabaseBusyError = require_busy.isDatabaseBusyError;
|
|
33
|
-
Object.defineProperty(exports, "mergeDistinct", {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
get: function() {
|
|
36
|
-
return _hot_updater_plugin_core_internal.mergeDistinct;
|
|
37
|
-
}
|
|
38
|
-
});
|
package/dist/plugins/index.d.cts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FieldDefinition, FieldReference, FieldType, IndexDefinition, ReferenceAction } from "../database/definitions.cjs";
|
|
2
|
-
import { AggregateDefinition, DerivedDefinition, ModuleSchema, RetentionDefinition, TableDefinition, defineAggregate, defineTable } from "../database/schema.cjs";
|
|
3
|
-
import { DatabaseCursorError } from "../database/cursor.cjs";
|
|
4
|
-
import { DatabaseQueryError, Page } from "../database/engineReads.cjs";
|
|
5
|
-
import { AggregateChanges, AggregateIdentity, AggregateRow, CreateRow, HotUpdaterDatabase, HotUpdaterTransaction, Lookup, ReadOptions, ReadRow, TableRow, UpdateSet } from "../database/database.cjs";
|
|
6
|
-
import { ConstraintReason, DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseTransactionError } from "../database/errors.cjs";
|
|
7
|
-
import { AnyHotUpdaterPlugin, CliFor, ClientAuth, CoreReader, HotUpdaterPlugin, InstanceFor, PluginApis, PluginCli, PluginClientCredential, PluginClientPlugin, PluginCommand, PluginCommandArgument, PluginCommandContext, PluginCommandOption, PluginCommandUi, PluginContext, PluginEndpoint, PluginEndpointMethod, PluginInstance, PluginProvides, PluginTableColumn, definePlugin } from "./definePlugin.cjs";
|
|
8
|
-
import { HotUpdaterConfigError } from "../assembly/configError.cjs";
|
|
9
|
-
import "../assembly/assemblePlugins.cjs";
|
|
10
|
-
import { isDatabaseBusyError } from "../database/busy.cjs";
|
|
11
|
-
import { addDistinct, countDistinct, mergeDistinct } from "@hot-updater/plugin-core/internal";
|
|
12
|
-
export { type AggregateChanges, type AggregateDefinition, type AggregateIdentity, type AggregateRow, type AnyHotUpdaterPlugin, type CliFor, type ClientAuth, type ConstraintReason, type CoreReader, type CreateRow, DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseCursorError, DatabaseQueryError, DatabaseTransactionError, type DerivedDefinition, type FieldDefinition, type FieldReference, type FieldType, HotUpdaterConfigError, type HotUpdaterDatabase, type HotUpdaterPlugin, type HotUpdaterTransaction, type IndexDefinition, type InstanceFor, type Lookup, type ModuleSchema, type Page, type PluginApis, type PluginCli, type PluginClientCredential, type PluginClientPlugin, type PluginCommand, type PluginCommandArgument, type PluginCommandContext, type PluginCommandOption, type PluginCommandUi, type PluginContext, type PluginEndpoint, type PluginEndpointMethod, type PluginInstance, type PluginProvides, type PluginTableColumn, type ReadOptions, type ReadRow, type ReferenceAction, type RetentionDefinition, type TableDefinition, type TableRow, type UpdateSet, addDistinct, countDistinct, defineAggregate, definePlugin, defineTable, isDatabaseBusyError, mergeDistinct };
|
package/dist/plugins/index.d.mts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FieldDefinition, FieldReference, FieldType, IndexDefinition, ReferenceAction } from "../database/definitions.mjs";
|
|
2
|
-
import { AggregateDefinition, DerivedDefinition, ModuleSchema, RetentionDefinition, TableDefinition, defineAggregate, defineTable } from "../database/schema.mjs";
|
|
3
|
-
import { DatabaseCursorError } from "../database/cursor.mjs";
|
|
4
|
-
import { DatabaseQueryError, Page } from "../database/engineReads.mjs";
|
|
5
|
-
import { AggregateChanges, AggregateIdentity, AggregateRow, CreateRow, HotUpdaterDatabase, HotUpdaterTransaction, Lookup, ReadOptions, ReadRow, TableRow, UpdateSet } from "../database/database.mjs";
|
|
6
|
-
import { ConstraintReason, DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseTransactionError } from "../database/errors.mjs";
|
|
7
|
-
import { AnyHotUpdaterPlugin, CliFor, ClientAuth, CoreReader, HotUpdaterPlugin, InstanceFor, PluginApis, PluginCli, PluginClientCredential, PluginClientPlugin, PluginCommand, PluginCommandArgument, PluginCommandContext, PluginCommandOption, PluginCommandUi, PluginContext, PluginEndpoint, PluginEndpointMethod, PluginInstance, PluginProvides, PluginTableColumn, definePlugin } from "./definePlugin.mjs";
|
|
8
|
-
import { HotUpdaterConfigError } from "../assembly/configError.mjs";
|
|
9
|
-
import "../assembly/assemblePlugins.mjs";
|
|
10
|
-
import { isDatabaseBusyError } from "../database/busy.mjs";
|
|
11
|
-
import { addDistinct, countDistinct, mergeDistinct } from "@hot-updater/plugin-core/internal";
|
|
12
|
-
export { type AggregateChanges, type AggregateDefinition, type AggregateIdentity, type AggregateRow, type AnyHotUpdaterPlugin, type CliFor, type ClientAuth, type ConstraintReason, type CoreReader, type CreateRow, DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseCursorError, DatabaseQueryError, DatabaseTransactionError, type DerivedDefinition, type FieldDefinition, type FieldReference, type FieldType, HotUpdaterConfigError, type HotUpdaterDatabase, type HotUpdaterPlugin, type HotUpdaterTransaction, type IndexDefinition, type InstanceFor, type Lookup, type ModuleSchema, type Page, type PluginApis, type PluginCli, type PluginClientCredential, type PluginClientPlugin, type PluginCommand, type PluginCommandArgument, type PluginCommandContext, type PluginCommandOption, type PluginCommandUi, type PluginContext, type PluginEndpoint, type PluginEndpointMethod, type PluginInstance, type PluginProvides, type PluginTableColumn, type ReadOptions, type ReadRow, type ReferenceAction, type RetentionDefinition, type TableDefinition, type TableRow, type UpdateSet, addDistinct, countDistinct, defineAggregate, definePlugin, defineTable, isDatabaseBusyError, mergeDistinct };
|
package/dist/plugins/index.mjs
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DatabaseCursorError } from "../database/cursor.mjs";
|
|
2
|
-
import { DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseTransactionError } from "../database/errors.mjs";
|
|
3
|
-
import { defineAggregate, defineTable } from "../database/schema.mjs";
|
|
4
|
-
import { DatabaseQueryError } from "../database/engineReads.mjs";
|
|
5
|
-
import { HotUpdaterConfigError } from "../assembly/configError.mjs";
|
|
6
|
-
import { definePlugin } from "./definePlugin.mjs";
|
|
7
|
-
import { isDatabaseBusyError } from "../database/busy.mjs";
|
|
8
|
-
import { addDistinct, countDistinct, mergeDistinct } from "@hot-updater/plugin-core/internal";
|
|
9
|
-
export { DatabaseAmbiguousCommitError, DatabaseConflictError, DatabaseConstraintError, DatabaseCursorError, DatabaseQueryError, DatabaseTransactionError, HotUpdaterConfigError, addDistinct, countDistinct, defineAggregate, definePlugin, defineTable, isDatabaseBusyError, mergeDistinct };
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
const require_eventRow = require("./eventRow.cjs");
|
|
2
|
-
let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
|
|
3
|
-
//#region src/plugins/insights/contract.ts
|
|
4
|
-
const encoder = new TextEncoder();
|
|
5
|
-
/** Exact UTF-8 byte ordering, without case folding or Unicode normalization. */
|
|
6
|
-
const compareInsightsText = (left, right) => {
|
|
7
|
-
const a = encoder.encode(left);
|
|
8
|
-
const b = encoder.encode(right);
|
|
9
|
-
for (let index = 0; index < Math.min(a.length, b.length); index += 1) if (a[index] !== b[index]) return a[index] - b[index];
|
|
10
|
-
return a.length - b.length;
|
|
11
|
-
};
|
|
12
|
-
const isWellFormedText = (value) => {
|
|
13
|
-
for (const character of value) {
|
|
14
|
-
const point = character.codePointAt(0);
|
|
15
|
-
if (point >= 55296 && point <= 57343) return false;
|
|
16
|
-
}
|
|
17
|
-
return true;
|
|
18
|
-
};
|
|
19
|
-
const isIdentity = (value) => typeof value === "string" && value.length > 0 && value.length <= 255 && isWellFormedText(value);
|
|
20
|
-
const isText = (value) => typeof value === "string" && value.length > 0 && isWellFormedText(value);
|
|
21
|
-
const isTimestamp = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
22
|
-
const isLimit = (value) => isTimestamp(value) && value >= 1 && value <= 101;
|
|
23
|
-
const hasOnlyKeys = (value, keys) => Object.keys(value).every((key) => keys.includes(key));
|
|
24
|
-
const hasScope = (value) => (value.platform === "ios" || value.platform === "android") && isText(value.channel);
|
|
25
|
-
const isBundleFilter = (value, withKind = false) => {
|
|
26
|
-
if (!require_eventRow.isRecord(value) || !hasScope(value)) return false;
|
|
27
|
-
const keys = [
|
|
28
|
-
"platform",
|
|
29
|
-
"channel",
|
|
30
|
-
"type",
|
|
31
|
-
...withKind ? ["kind"] : []
|
|
32
|
-
];
|
|
33
|
-
return value.type === "RECOVERED" ? isText(value.fromBundleId) && hasOnlyKeys(value, [...keys, "fromBundleId"]) : (value.type === "UPDATE_DOWNLOADED" || value.type === "UPDATE_APPLIED" || value.type === "UPDATE_FAILED") && isText(value.toBundleId) && hasOnlyKeys(value, [...keys, "toBundleId"]);
|
|
34
|
-
};
|
|
35
|
-
const isEventFilter = (value) => {
|
|
36
|
-
if (!require_eventRow.isRecord(value)) return false;
|
|
37
|
-
if (value.kind === "all") return hasOnlyKeys(value, ["kind"]);
|
|
38
|
-
if (value.kind === "installationMovement") return isIdentity(value.installId) && hasOnlyKeys(value, ["kind", "installId"]);
|
|
39
|
-
return value.kind === "bundle" && isBundleFilter(value, true);
|
|
40
|
-
};
|
|
41
|
-
const validateRow = (model, row, result = false) => {
|
|
42
|
-
try {
|
|
43
|
-
require_eventRow.validateBundleEventFields(row);
|
|
44
|
-
if (!require_eventRow.isRecord(row) || typeof row.id !== "string" || !(0, _hot_updater_plugin_core.isUUIDv7)(row.id) || [...Object.values(row), ...require_eventRow.isRecord(row.metadata) ? Object.values(row.metadata) : []].some((value) => typeof value === "string" && !isWellFormedText(value))) throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-data");
|
|
45
|
-
} catch (error) {
|
|
46
|
-
if (result) throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-result");
|
|
47
|
-
throw error;
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
/** Throws `invalid-data` unless `row` is a complete, well-formed bundle event row. */
|
|
51
|
-
const assertBundleEventRow = (row) => validateRow("bundle_events", row);
|
|
52
|
-
/** Downloads, applies, recoveries, and failed updates belong in installation history. */
|
|
53
|
-
const isInsightsMovementEvent = (event) => event.type === "UPDATE_DOWNLOADED" || event.type === "UPDATE_APPLIED" || event.type === "RECOVERED" || event.type === "UPDATE_FAILED";
|
|
54
|
-
const matchesInsightsEventFilter = (event, filter) => {
|
|
55
|
-
if (filter.kind === "all") return true;
|
|
56
|
-
if (filter.kind === "installationMovement") return event.install_id === filter.installId && isInsightsMovementEvent(event);
|
|
57
|
-
return event.type === filter.type && event.platform === filter.platform && event.channel === filter.channel && (filter.type === "RECOVERED" ? event.from_bundle_id === filter.fromBundleId : event.to_bundle_id === filter.toBundleId && event.metadata.failure?.stage !== "check");
|
|
58
|
-
};
|
|
59
|
-
const invalidQuery = () => {
|
|
60
|
-
throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-query");
|
|
61
|
-
};
|
|
62
|
-
const invalidResult = () => {
|
|
63
|
-
throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-result");
|
|
64
|
-
};
|
|
65
|
-
const validateCount = (count) => isTimestamp(count) ? count : invalidResult();
|
|
66
|
-
const isTimeRange = (value) => require_eventRow.isRecord(value) && hasOnlyKeys(value, ["start", "end"]) && isTimestamp(value.start) && isTimestamp(value.end) && value.start < value.end;
|
|
67
|
-
const isReleaseReference = (value) => require_eventRow.isRecord(value) && hasOnlyKeys(value, [
|
|
68
|
-
"releaseId",
|
|
69
|
-
"platform",
|
|
70
|
-
"channel"
|
|
71
|
-
]) && isIdentity(value.releaseId) && hasScope(value);
|
|
72
|
-
const validateAggregateResult = (value) => {
|
|
73
|
-
const result = require_eventRow.isRecord(value) ? value : invalidResult();
|
|
74
|
-
if (!isTimestamp(result.measuredAtMs)) invalidResult();
|
|
75
|
-
const coverage = result.coverage;
|
|
76
|
-
if (!require_eventRow.isRecord(coverage) || coverage.kind !== "complete" && coverage.kind !== "partial" || coverage.sinceMs !== null && !isTimestamp(coverage.sinceMs)) invalidResult();
|
|
77
|
-
};
|
|
78
|
-
/** Validate custom and bundled providers at the same public boundary. */
|
|
79
|
-
const createValidatedInsightsModel = (model) => ({
|
|
80
|
-
async recordEvent(input) {
|
|
81
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, ["event"])) throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-data");
|
|
82
|
-
validateRow("bundle_events", input.event);
|
|
83
|
-
await model.recordEvent(input);
|
|
84
|
-
},
|
|
85
|
-
async listEvents(input) {
|
|
86
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, [
|
|
87
|
-
"filter",
|
|
88
|
-
"sinceMs",
|
|
89
|
-
"beforeReceivedAtMs",
|
|
90
|
-
"after",
|
|
91
|
-
"limit"
|
|
92
|
-
]) || !isEventFilter(input.filter) || !isLimit(input.limit) || !isTimestamp(input.beforeReceivedAtMs) || input.sinceMs !== void 0 && !isTimestamp(input.sinceMs)) invalidQuery();
|
|
93
|
-
const sinceMs = input.sinceMs ?? 0;
|
|
94
|
-
if (sinceMs > input.beforeReceivedAtMs || input.after !== void 0 && (!require_eventRow.isRecord(input.after) || !hasOnlyKeys(input.after, ["receivedAtMs", "id"]) || !isTimestamp(input.after.receivedAtMs) || typeof input.after.id !== "string" || !(0, _hot_updater_plugin_core.isUUIDv7)(input.after.id) || input.after.receivedAtMs < sinceMs || input.after.receivedAtMs >= input.beforeReceivedAtMs)) invalidQuery();
|
|
95
|
-
const rows = await model.listEvents(input);
|
|
96
|
-
if (!Array.isArray(rows) || rows.length > input.limit) invalidResult();
|
|
97
|
-
let previous = input.after;
|
|
98
|
-
for (const row of rows) {
|
|
99
|
-
validateRow("bundle_events", row, true);
|
|
100
|
-
if (row.received_at_ms < sinceMs || row.received_at_ms >= input.beforeReceivedAtMs || !matchesInsightsEventFilter(row, input.filter) || previous !== void 0 && (row.received_at_ms > previous.receivedAtMs || row.received_at_ms === previous.receivedAtMs && row.id >= previous.id)) invalidResult();
|
|
101
|
-
previous = {
|
|
102
|
-
receivedAtMs: row.received_at_ms,
|
|
103
|
-
id: row.id
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
return rows;
|
|
107
|
-
},
|
|
108
|
-
async findLatestEvents(input) {
|
|
109
|
-
if (!require_eventRow.isRecord(input)) invalidQuery();
|
|
110
|
-
if ("installId" in input) {
|
|
111
|
-
if (!hasOnlyKeys(input, ["installId"]) || !isIdentity(input.installId)) invalidQuery();
|
|
112
|
-
} else if (!hasOnlyKeys(input, [
|
|
113
|
-
"userId",
|
|
114
|
-
"afterInstallId",
|
|
115
|
-
"limit"
|
|
116
|
-
]) || !isIdentity(input.userId) || !isLimit(input.limit) || input.afterInstallId !== void 0 && !isIdentity(input.afterInstallId)) invalidQuery();
|
|
117
|
-
const rows = await model.findLatestEvents(input);
|
|
118
|
-
if (!Array.isArray(rows) || rows.length > ("installId" in input ? 1 : input.limit)) invalidResult();
|
|
119
|
-
let previous = "installId" in input ? void 0 : input.afterInstallId;
|
|
120
|
-
for (const row of rows) {
|
|
121
|
-
validateRow("bundle_events", row, true);
|
|
122
|
-
if ("installId" in input ? row.install_id !== input.installId : row.user_id !== input.userId || previous !== void 0 && compareInsightsText(row.install_id, previous) <= 0) invalidResult();
|
|
123
|
-
previous = row.install_id;
|
|
124
|
-
}
|
|
125
|
-
return rows;
|
|
126
|
-
},
|
|
127
|
-
async countLatestEvents(input) {
|
|
128
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, [
|
|
129
|
-
"platform",
|
|
130
|
-
"channel",
|
|
131
|
-
"sinceMs",
|
|
132
|
-
"bundle"
|
|
133
|
-
]) || !hasScope(input) || !isTimestamp(input.sinceMs) || input.bundle !== void 0 && (!Array.isArray(input.bundle) || input.bundle.length < 1 || input.bundle.length > 2 || input.bundle.some((bundle) => !require_eventRow.isRecord(bundle) || !hasOnlyKeys(bundle, [
|
|
134
|
-
"field",
|
|
135
|
-
"value",
|
|
136
|
-
"types"
|
|
137
|
-
]) || bundle.field !== "from_bundle_id" && bundle.field !== "to_bundle_id" || !isText(bundle.value) || !Array.isArray(bundle.types) || bundle.types.length === 0 || bundle.types.some((type) => ![
|
|
138
|
-
"UNCHANGED",
|
|
139
|
-
"UPDATE_DOWNLOADED",
|
|
140
|
-
"UPDATE_APPLIED",
|
|
141
|
-
"RECOVERED"
|
|
142
|
-
].includes(type))))) invalidQuery();
|
|
143
|
-
return validateCount(await model.countLatestEvents(input));
|
|
144
|
-
},
|
|
145
|
-
async countEvents(input) {
|
|
146
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, [
|
|
147
|
-
"filter",
|
|
148
|
-
"sinceMs",
|
|
149
|
-
"beforeReceivedAtMs"
|
|
150
|
-
]) || !isBundleFilter(input.filter) || !isTimestamp(input.sinceMs) || !isTimestamp(input.beforeReceivedAtMs) || input.sinceMs > input.beforeReceivedAtMs) invalidQuery();
|
|
151
|
-
return validateCount(await model.countEvents(input));
|
|
152
|
-
},
|
|
153
|
-
async getReleaseActivity(input) {
|
|
154
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, [
|
|
155
|
-
"releases",
|
|
156
|
-
"scope",
|
|
157
|
-
"timeRange"
|
|
158
|
-
])) invalidQuery();
|
|
159
|
-
const releases = input.releases;
|
|
160
|
-
const scope = input.scope;
|
|
161
|
-
const timeRange = input.timeRange;
|
|
162
|
-
const releaseQuery = Array.isArray(releases) && releases.length > 0 && releases.length <= 100 && releases.every(isReleaseReference) && scope === void 0 && (timeRange === void 0 || isTimeRange(timeRange));
|
|
163
|
-
const scopeQuery = releases === void 0 && require_eventRow.isRecord(scope) && hasOnlyKeys(scope, ["platform", "channel"]) && hasScope(scope) && isTimeRange(timeRange);
|
|
164
|
-
if (!releaseQuery && !scopeQuery) invalidQuery();
|
|
165
|
-
const result = await model.getReleaseActivity(input);
|
|
166
|
-
validateAggregateResult(result);
|
|
167
|
-
if (!Array.isArray(result.data)) invalidResult();
|
|
168
|
-
return result;
|
|
169
|
-
},
|
|
170
|
-
async getAppUsage(input) {
|
|
171
|
-
if (!require_eventRow.isRecord(input) || !hasOnlyKeys(input, [
|
|
172
|
-
"channel",
|
|
173
|
-
"platform",
|
|
174
|
-
"appVersion",
|
|
175
|
-
"timeRange",
|
|
176
|
-
"intervalMs"
|
|
177
|
-
]) || !isText(input.channel) || ![
|
|
178
|
-
"all",
|
|
179
|
-
"ios",
|
|
180
|
-
"android"
|
|
181
|
-
].includes(input.platform) || input.appVersion !== void 0 && !isText(input.appVersion) || !isTimeRange(input.timeRange) || !isTimestamp(input.intervalMs) || input.intervalMs < 36e5) invalidQuery();
|
|
182
|
-
const result = await model.getAppUsage(input);
|
|
183
|
-
validateAggregateResult(result);
|
|
184
|
-
if (!isTimestamp(result.activeInstallations) || !Array.isArray(result.points) || !Array.isArray(result.appVersions) || !Array.isArray(result.versions) || !Array.isArray(result.platforms) || !Array.isArray(result.bundleDistribution)) invalidResult();
|
|
185
|
-
return result;
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
//#endregion
|
|
189
|
-
exports.assertBundleEventRow = assertBundleEventRow;
|
|
190
|
-
exports.compareInsightsText = compareInsightsText;
|
|
191
|
-
exports.createValidatedInsightsModel = createValidatedInsightsModel;
|
|
192
|
-
exports.isInsightsMovementEvent = isInsightsMovementEvent;
|
|
193
|
-
exports.matchesInsightsEventFilter = matchesInsightsEventFilter;
|