@hot-updater/cloudflare 0.36.7 → 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/iac/index.cjs +988 -10
  2. package/dist/iac/index.mjs +991 -14
  3. package/dist/index.cjs +919 -6989
  4. package/dist/index.d.cts +11 -47
  5. package/dist/index.d.mts +11 -47
  6. package/dist/index.mjs +917 -7006
  7. package/dist/worker/index.cjs +898 -336
  8. package/dist/worker/index.d.cts +18 -33
  9. package/dist/worker/index.d.mts +18 -33
  10. package/dist/worker/index.mjs +899 -331
  11. package/package.json +7 -10
  12. package/sql/bundles.sql +183 -35
  13. package/src/d1Database.spec.ts +143 -392
  14. package/src/d1Database.ts +55 -650
  15. package/src/d1Implementation.spec.ts +252 -0
  16. package/src/d1Implementation.ts +742 -0
  17. package/src/d1Query.spec.ts +46 -0
  18. package/src/d1Query.ts +89 -0
  19. package/src/d1Rows.spec.ts +111 -0
  20. package/src/d1Rows.ts +326 -0
  21. package/src/d1Sql.spec.ts +30 -0
  22. package/src/d1Sql.ts +175 -0
  23. package/src/r2S3Storage.ts +93 -137
  24. package/src/r2Storage.spec.ts +120 -218
  25. package/src/r2Storage.ts +13 -61
  26. package/src/r2WorkerStorage.spec.ts +161 -50
  27. package/src/r2WorkerStorage.ts +85 -118
  28. package/src/worker/d1Database.spec.ts +33 -0
  29. package/src/worker/d1Database.ts +52 -0
  30. package/src/worker/index.ts +3 -31
  31. package/worker/dist/README.md +1 -1
  32. package/worker/dist/index.js +5968 -4701
  33. package/worker/dist/index.js.map +4 -4
  34. package/worker/migrations/0001_hot-updater_1.0.0.sql +197 -0
  35. package/worker/migrations/0002_hot-updater_artifact_byte_sizes.sql +11 -0
  36. package/worker/src/databaseMigration.integration.spec.ts +114 -0
  37. package/worker/src/databasePlugins.integration.spec.ts +292 -0
  38. package/worker/src/index.integration.spec.ts +102 -294
  39. package/worker/src/index.ts +14 -66
  40. package/worker/src/storagePlugin.integration.spec.ts +59 -0
  41. package/worker/wrangler.json +5 -2
  42. package/src/cloudflareWorkerDatabase.spec.ts +0 -260
  43. package/src/cloudflareWorkerDatabase.ts +0 -651
  44. package/src/r2WranglerStorage.ts +0 -193
  45. package/worker/migrations/0001_hot-updater_init.sql +0 -16
  46. package/worker/migrations/0002_hot-updater_0.13.0.sql +0 -8
  47. package/worker/migrations/0003_hot-updater_0.18.0.sql +0 -38
  48. package/worker/migrations/0004_hot-updater_0.29.0.sql +0 -11
  49. package/worker/migrations/0005_hot-updater_0.31.0.sql +0 -24
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/_internal/utils.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/perf_hooks/performance.mjs", "../../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.16.1_unenv@2.0.0-rc.24_workerd@1.20260609.1/node_modules/@cloudflare/unenv-preset/dist/runtime/polyfill/performance.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/console.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/mock/noop.mjs", "../../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.16.1_unenv@2.0.0-rc.24_workerd@1.20260609.1/node_modules/@cloudflare/unenv-preset/dist/runtime/node/console.mjs", "../../../../node_modules/.pnpm/wrangler@4.99.0_@cloudflare+workers-types@4.20260611.1/node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-console", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/process/hrtime.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/process/process.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/tty/read-stream.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/tty/write-stream.mjs", "../../../../node_modules/.pnpm/unenv@2.0.0-rc.24/node_modules/unenv/dist/runtime/node/internal/process/node-version.mjs", "../../../../node_modules/.pnpm/@cloudflare+unenv-preset@2.16.1_unenv@2.0.0-rc.24_workerd@1.20260609.1/node_modules/@cloudflare/unenv-preset/dist/runtime/node/process.mjs", "../../../../node_modules/.pnpm/wrangler@4.99.0_@cloudflare+workers-types@4.20260611.1/node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-process", "../../../plugin-core/dist/calculatePagination.mjs", "../../../plugin-core/dist/contentAddressedAssets.mjs", "../../../plugin-core/dist/legacyAssetStorageLayout.mjs", "../../../plugin-core/dist/assetStorageLayout.mjs", "../../../plugin-core/dist/queryBundles.mjs", "../../../plugin-core/dist/bundleUnitOfWork.mjs", "../../../plugin-core/dist/bundleUnitOfWorkStore.mjs", "../../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/predicate/isPlainObject.mjs", "../../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs", "../../../../node_modules/.pnpm/es-toolkit@1.47.0/node_modules/es-toolkit/dist/object/mergeWith.mjs", "../../../plugin-core/dist/createDatabasePlugin.mjs", "../../../../node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.js", "../../../plugin-core/dist/semverSatisfies.mjs", "../../../plugin-core/dist/filterCompatibleAppVersions.mjs", "../../../plugin-core/dist/requestUpdateBundleState.mjs", "../../../../packages/core/dist/index.mjs", "../../../js/dist/index.mjs", "../../../plugin-core/dist/resolveUpdateInfoFromBundles.mjs", "../../../plugin-core/dist/createStoragePlugin.mjs", "../../../plugin-core/dist/parseStorageUri.mjs", "../../../plugin-core/dist/storageProfile.mjs", "../../../../packages/server/dist/package.mjs", "../../../../packages/server/dist/version.mjs", "../../../../packages/server/dist/internalRouter.mjs", "../../../../packages/server/dist/handler.mjs", "../../../../packages/server/dist/db/schemaEnhancements.mjs", "../../../../packages/server/dist/db/updateArtifacts.mjs", "../../../../packages/server/dist/db/pluginCore.mjs", "../../../../packages/server/dist/schema/types.mjs", "../../../../packages/server/dist/db/schemaReadiness.mjs", "../../../../packages/server/dist/db/types.mjs", "../../../../packages/server/dist/route.mjs", "../../../../packages/server/dist/storageAccess.mjs", "../../../../packages/server/dist/createHotUpdaterCore.mjs", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/compose.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/request/constants.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/buffer.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/body.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/url.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/request.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/html.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/context.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/constants.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/hono-base.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/matcher.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/node.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/trie.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/smart-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/trie-router/node.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/trie-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/hono.js", "../../src/cloudflareWorkerDatabase.ts", "../../src/r2WorkerStorage.ts", "../../src/worker/index.ts", "../src/index.ts"],
3
+ "sources": ["../../../../packages/server/dist/package.mjs", "../../../../packages/server/dist/version.mjs", "../../../../packages/server/dist/handlerVersionRoutes.mjs", "../../../../packages/server/dist/analytics/errors.mjs", "../../../../packages/server/dist/analytics/eventInput.mjs", "../../../../packages/server/dist/analytics/queryInput.mjs", "../../../../packages/server/dist/analytics/routes.mjs", "../../../../packages/server/dist/handlerErrors.mjs", "../../../../packages/server/dist/handlerParameters.mjs", "../../../../packages/server/dist/handlerBundleRoutes.mjs", "../../../plugin-core/dist/calculatePagination.mjs", "../../../plugin-core/dist/contentAddressedAssets.mjs", "../../../plugin-core/dist/createStorageKeyBuilder.mjs", "../../../plugin-core/dist/parseStorageUri.mjs", "../../../plugin-core/dist/assetStorageLayout.mjs", "../../../plugin-core/dist/databasePluginCrudValidationErrors.mjs", "../../../plugin-core/dist/databaseJsonValue.mjs", "../../../../packages/core/dist/index.mjs", "../../../plugin-core/dist/uuidv7.mjs", "../../../plugin-core/dist/types/databaseFields.mjs", "../../../plugin-core/dist/databasePluginCrudValidationFields.mjs", "../../../plugin-core/dist/databasePluginCrudValidationRows.mjs", "../../../plugin-core/dist/databasePluginCrudValidationMutations.mjs", "../../../plugin-core/dist/databasePluginCrudValidationQueries.mjs", "../../../plugin-core/dist/databasePluginCrud.mjs", "../../../plugin-core/dist/databasePluginTransaction.mjs", "../../../plugin-core/dist/createDatabasePlugin.mjs", "../../../plugin-core/dist/createStoragePlugin.mjs", "../../../plugin-core/dist/databaseMetadata.mjs", "../../../plugin-core/dist/databaseRows.mjs", "../../../plugin-core/dist/databaseClientUpdates.mjs", "../../../plugin-core/dist/databaseClientReads.mjs", "../../../plugin-core/dist/databaseClient.mjs", "../../../plugin-core/dist/node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.mjs", "../../../plugin-core/dist/releaseCatalogCompiler.mjs", "../../../plugin-core/dist/releaseCatalogMutation.mjs", "../../../plugin-core/dist/releaseManagement.mjs", "../../../plugin-core/dist/storageDownloadPath.mjs", "../../../../packages/server/dist/handlerReleaseCatalogRoutes.mjs", "../../../../packages/server/dist/handlerReleaseManagementRoutes.mjs", "../../../../packages/server/dist/internalRouter.mjs", "../../../../packages/server/dist/handler.mjs", "../../../../packages/server/dist/analytics/bounded/activeOverview.mjs", "../../../../packages/server/dist/analytics/bounded/scan.mjs", "../../../../packages/server/dist/analytics/bounded/installationSearch.mjs", "../../../../packages/server/dist/analytics/bounded/persistence.mjs", "../../../../packages/server/dist/analytics/bounded/provider.mjs", "../../../../packages/server/dist/apiKeys.mjs", "../../../../packages/server/dist/db/updateArtifacts.mjs", "../../../../packages/server/dist/db/releaseCatalog.mjs", "../../../../packages/server/dist/db/databasePluginCore.mjs", "../../../../packages/server/dist/schema/types.mjs", "../../../../packages/server/dist/db/fixedMigratorShared.mjs", "../../../../packages/server/dist/db/schemaReadiness.mjs", "../../../../packages/server/dist/db/types.mjs", "../../../../packages/server/dist/storageAccess.mjs", "../../../../packages/server/dist/createHotUpdaterCore.mjs", "../src/index.ts", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/compose.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/request/constants.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/buffer.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/body.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/url.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/request.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/html.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/context.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/utils/constants.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/hono-base.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/matcher.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/node.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/trie.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/reg-exp-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/smart-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/trie-router/node.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/router/trie-router/router.js", "../../../../node_modules/.pnpm/hono@4.12.34/node_modules/hono/dist/hono.js", "../../src/d1Rows.ts", "../../src/d1Sql.ts", "../../src/d1Query.ts", "../../src/d1Implementation.ts", "../../src/worker/d1Database.ts", "../../src/r2WorkerStorage.ts"],
4
4
  "sourceRoot": "./worker/dist",
5
- "sourcesContent": ["/* @__NO_SIDE_EFFECTS__ */\nexport function rawHeaders(headers) {\n\tconst rawHeaders = [];\n\tfor (const key in headers) {\n\t\tif (Array.isArray(headers[key])) {\n\t\t\tfor (const h of headers[key]) {\n\t\t\t\trawHeaders.push(key, h);\n\t\t\t}\n\t\t} else {\n\t\t\trawHeaders.push(key, headers[key]);\n\t\t}\n\t}\n\treturn rawHeaders;\n}\n/* @__NO_SIDE_EFFECTS__ */\nexport function mergeFns(...functions) {\n\treturn function(...args) {\n\t\tfor (const fn of functions) {\n\t\t\tfn(...args);\n\t\t}\n\t};\n}\n/* @__NO_SIDE_EFFECTS__ */\nexport function createNotImplementedError(name) {\n\treturn new Error(`[unenv] ${name} is not implemented yet!`);\n}\n/* @__NO_SIDE_EFFECTS__ */\nexport function notImplemented(name) {\n\tconst fn = () => {\n\t\tthrow createNotImplementedError(name);\n\t};\n\treturn Object.assign(fn, { __unenv__: true });\n}\n/* @__NO_SIDE_EFFECTS__ */\nexport function notImplementedAsync(name) {\n\tconst fn = notImplemented(name);\n\tfn.__promisify__ = () => notImplemented(name + \".__promisify__\");\n\tfn.native = fn;\n\treturn fn;\n}\n/* @__NO_SIDE_EFFECTS__ */\nexport function notImplementedClass(name) {\n\treturn class {\n\t\t__unenv__ = true;\n\t\tconstructor() {\n\t\t\tthrow new Error(`[unenv] ${name} is not implemented yet!`);\n\t\t}\n\t};\n}\n", "import { createNotImplementedError } from \"../../../_internal/utils.mjs\";\nconst _timeOrigin = globalThis.performance?.timeOrigin ?? Date.now();\nconst _performanceNow = globalThis.performance?.now ? globalThis.performance.now.bind(globalThis.performance) : () => Date.now() - _timeOrigin;\nconst nodeTiming = {\n\tname: \"node\",\n\tentryType: \"node\",\n\tstartTime: 0,\n\tduration: 0,\n\tnodeStart: 0,\n\tv8Start: 0,\n\tbootstrapComplete: 0,\n\tenvironment: 0,\n\tloopStart: 0,\n\tloopExit: 0,\n\tidleTime: 0,\n\tuvMetricsInfo: {\n\t\tloopCount: 0,\n\t\tevents: 0,\n\t\teventsWaiting: 0\n\t},\n\tdetail: undefined,\n\ttoJSON() {\n\t\treturn this;\n\t}\n};\n// PerformanceEntry\nexport class PerformanceEntry {\n\t__unenv__ = true;\n\tdetail;\n\tentryType = \"event\";\n\tname;\n\tstartTime;\n\tconstructor(name, options) {\n\t\tthis.name = name;\n\t\tthis.startTime = options?.startTime || _performanceNow();\n\t\tthis.detail = options?.detail;\n\t}\n\tget duration() {\n\t\treturn _performanceNow() - this.startTime;\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tentryType: this.entryType,\n\t\t\tstartTime: this.startTime,\n\t\t\tduration: this.duration,\n\t\t\tdetail: this.detail\n\t\t};\n\t}\n}\n// PerformanceMark\nexport const PerformanceMark = class PerformanceMark extends PerformanceEntry {\n\tentryType = \"mark\";\n\tconstructor() {\n\t\t// @ts-ignore\n\t\tsuper(...arguments);\n\t}\n\tget duration() {\n\t\treturn 0;\n\t}\n};\n// PerformanceMark\nexport class PerformanceMeasure extends PerformanceEntry {\n\tentryType = \"measure\";\n}\n// PerformanceResourceTiming\nexport class PerformanceResourceTiming extends PerformanceEntry {\n\tentryType = \"resource\";\n\tserverTiming = [];\n\tconnectEnd = 0;\n\tconnectStart = 0;\n\tdecodedBodySize = 0;\n\tdomainLookupEnd = 0;\n\tdomainLookupStart = 0;\n\tencodedBodySize = 0;\n\tfetchStart = 0;\n\tinitiatorType = \"\";\n\tname = \"\";\n\tnextHopProtocol = \"\";\n\tredirectEnd = 0;\n\tredirectStart = 0;\n\trequestStart = 0;\n\tresponseEnd = 0;\n\tresponseStart = 0;\n\tsecureConnectionStart = 0;\n\tstartTime = 0;\n\ttransferSize = 0;\n\tworkerStart = 0;\n\tresponseStatus = 0;\n}\n// PerformanceObserverEntryList\nexport class PerformanceObserverEntryList {\n\t__unenv__ = true;\n\tgetEntries() {\n\t\treturn [];\n\t}\n\tgetEntriesByName(_name, _type) {\n\t\treturn [];\n\t}\n\tgetEntriesByType(type) {\n\t\treturn [];\n\t}\n}\n// Performance\nexport class Performance {\n\t__unenv__ = true;\n\ttimeOrigin = _timeOrigin;\n\teventCounts = new Map();\n\t_entries = [];\n\t_resourceTimingBufferSize = 0;\n\tnavigation = undefined;\n\ttiming = undefined;\n\ttimerify(_fn, _options) {\n\t\tthrow createNotImplementedError(\"Performance.timerify\");\n\t}\n\tget nodeTiming() {\n\t\treturn nodeTiming;\n\t}\n\teventLoopUtilization() {\n\t\treturn {};\n\t}\n\tmarkResourceTiming() {\n\t\t// TODO: create a new PerformanceResourceTiming entry\n\t\t// so that performance.getEntries, getEntriesByName, and getEntriesByType return it\n\t\t// see: https://nodejs.org/api/perf_hooks.html#performancemarkresourcetimingtiminginfo-requestedurl-initiatortype-global-cachemode-bodyinfo-responsestatus-deliverytype\n\t\treturn new PerformanceResourceTiming(\"\");\n\t}\n\tonresourcetimingbufferfull = null;\n\tnow() {\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Performance/now\n\t\tif (this.timeOrigin === _timeOrigin) {\n\t\t\treturn _performanceNow();\n\t\t}\n\t\treturn Date.now() - this.timeOrigin;\n\t}\n\tclearMarks(markName) {\n\t\tthis._entries = markName ? this._entries.filter((e) => e.name !== markName) : this._entries.filter((e) => e.entryType !== \"mark\");\n\t}\n\tclearMeasures(measureName) {\n\t\tthis._entries = measureName ? this._entries.filter((e) => e.name !== measureName) : this._entries.filter((e) => e.entryType !== \"measure\");\n\t}\n\tclearResourceTimings() {\n\t\tthis._entries = this._entries.filter((e) => e.entryType !== \"resource\" || e.entryType !== \"navigation\");\n\t}\n\tgetEntries() {\n\t\treturn this._entries;\n\t}\n\tgetEntriesByName(name, type) {\n\t\treturn this._entries.filter((e) => e.name === name && (!type || e.entryType === type));\n\t}\n\tgetEntriesByType(type) {\n\t\treturn this._entries.filter((e) => e.entryType === type);\n\t}\n\tmark(name, options) {\n\t\t// @ts-expect-error constructor is not protected\n\t\tconst entry = new PerformanceMark(name, options);\n\t\tthis._entries.push(entry);\n\t\treturn entry;\n\t}\n\tmeasure(measureName, startOrMeasureOptions, endMark) {\n\t\tlet start;\n\t\tlet end;\n\t\tif (typeof startOrMeasureOptions === \"string\") {\n\t\t\tstart = this.getEntriesByName(startOrMeasureOptions, \"mark\")[0]?.startTime;\n\t\t\tend = this.getEntriesByName(endMark, \"mark\")[0]?.startTime;\n\t\t} else {\n\t\t\tstart = Number.parseFloat(startOrMeasureOptions?.start) || this.now();\n\t\t\tend = Number.parseFloat(startOrMeasureOptions?.end) || this.now();\n\t\t}\n\t\tconst entry = new PerformanceMeasure(measureName, {\n\t\t\tstartTime: start,\n\t\t\tdetail: {\n\t\t\t\tstart,\n\t\t\t\tend\n\t\t\t}\n\t\t});\n\t\tthis._entries.push(entry);\n\t\treturn entry;\n\t}\n\tsetResourceTimingBufferSize(maxSize) {\n\t\tthis._resourceTimingBufferSize = maxSize;\n\t}\n\taddEventListener(type, listener, options) {\n\t\tthrow createNotImplementedError(\"Performance.addEventListener\");\n\t}\n\tremoveEventListener(type, listener, options) {\n\t\tthrow createNotImplementedError(\"Performance.removeEventListener\");\n\t}\n\tdispatchEvent(event) {\n\t\tthrow createNotImplementedError(\"Performance.dispatchEvent\");\n\t}\n\ttoJSON() {\n\t\treturn this;\n\t}\n}\n// PerformanceObserver\nexport class PerformanceObserver {\n\t__unenv__ = true;\n\tstatic supportedEntryTypes = [];\n\t_callback = null;\n\tconstructor(callback) {\n\t\tthis._callback = callback;\n\t}\n\ttakeRecords() {\n\t\treturn [];\n\t}\n\tdisconnect() {\n\t\tthrow createNotImplementedError(\"PerformanceObserver.disconnect\");\n\t}\n\tobserve(options) {\n\t\tthrow createNotImplementedError(\"PerformanceObserver.observe\");\n\t}\n\tbind(fn) {\n\t\treturn fn;\n\t}\n\trunInAsyncScope(fn, thisArg, ...args) {\n\t\treturn fn.call(thisArg, ...args);\n\t}\n\tasyncId() {\n\t\treturn 0;\n\t}\n\ttriggerAsyncId() {\n\t\treturn 0;\n\t}\n\temitDestroy() {\n\t\treturn this;\n\t}\n}\n// workerd implements a subset of globalThis.performance (as of last check, only timeOrigin set to 0 + now() implemented)\n// We already use performance.now() from globalThis.performance, if provided (see top of this file)\n// If we detect this condition, we can just use polyfill instead.\nexport const performance = globalThis.performance && \"addEventListener\" in globalThis.performance ? globalThis.performance : new Performance();\n", "import {\n performance,\n Performance,\n PerformanceEntry,\n PerformanceMark,\n PerformanceMeasure,\n PerformanceObserver,\n PerformanceObserverEntryList,\n PerformanceResourceTiming\n} from \"node:perf_hooks\";\nif (!(\"__unenv__\" in performance)) {\n const proto = Performance.prototype;\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== \"constructor\" && !(key in performance)) {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc) {\n Object.defineProperty(performance, key, desc);\n }\n }\n }\n}\nglobalThis.performance = performance;\nglobalThis.Performance = Performance;\nglobalThis.PerformanceEntry = PerformanceEntry;\nglobalThis.PerformanceMark = PerformanceMark;\nglobalThis.PerformanceMeasure = PerformanceMeasure;\nglobalThis.PerformanceObserver = PerformanceObserver;\nglobalThis.PerformanceObserverEntryList = PerformanceObserverEntryList;\nglobalThis.PerformanceResourceTiming = PerformanceResourceTiming;\n", "import { Writable } from \"node:stream\";\nimport noop from \"../mock/noop.mjs\";\nimport { notImplemented, notImplementedClass } from \"../_internal/utils.mjs\";\nconst _console = globalThis.console;\n// undocumented public APIs\nexport const _ignoreErrors = true;\nexport const _stderr = new Writable();\nexport const _stdout = new Writable();\nexport const log = _console?.log ?? noop;\nexport const info = _console?.info ?? log;\nexport const trace = _console?.trace ?? info;\nexport const debug = _console?.debug ?? log;\nexport const table = _console?.table ?? log;\nexport const error = _console?.error ?? log;\nexport const warn = _console?.warn ?? error;\n// https://developer.chrome.com/docs/devtools/console/api#createtask\nexport const createTask = _console?.createTask ?? /* @__PURE__ */ notImplemented(\"console.createTask\");\nexport const assert = /* @__PURE__ */ notImplemented(\"console.assert\");\n// noop\nexport const clear = _console?.clear ?? noop;\nexport const count = _console?.count ?? noop;\nexport const countReset = _console?.countReset ?? noop;\nexport const dir = _console?.dir ?? noop;\nexport const dirxml = _console?.dirxml ?? noop;\nexport const group = _console?.group ?? noop;\nexport const groupEnd = _console?.groupEnd ?? noop;\nexport const groupCollapsed = _console?.groupCollapsed ?? noop;\nexport const profile = _console?.profile ?? noop;\nexport const profileEnd = _console?.profileEnd ?? noop;\nexport const time = _console?.time ?? noop;\nexport const timeEnd = _console?.timeEnd ?? noop;\nexport const timeLog = _console?.timeLog ?? noop;\nexport const timeStamp = _console?.timeStamp ?? noop;\nexport const Console = _console?.Console ?? /* @__PURE__ */ notImplementedClass(\"console.Console\");\nexport const _times = /* @__PURE__ */ new Map();\nexport function context() {\n\t// TODO: Should be Console with all the methods\n\treturn _console;\n}\nexport const _stdoutErrorHandler = noop;\nexport const _stderrErrorHandler = noop;\nexport default {\n\t_times,\n\t_ignoreErrors,\n\t_stdoutErrorHandler,\n\t_stderrErrorHandler,\n\t_stdout,\n\t_stderr,\n\tassert,\n\tclear,\n\tConsole,\n\tcount,\n\tcountReset,\n\tdebug,\n\tdir,\n\tdirxml,\n\terror,\n\tcontext,\n\tcreateTask,\n\tgroup,\n\tgroupEnd,\n\tgroupCollapsed,\n\tinfo,\n\tlog,\n\tprofile,\n\tprofileEnd,\n\ttable,\n\ttime,\n\ttimeEnd,\n\ttimeLog,\n\ttimeStamp,\n\ttrace,\n\twarn\n};\n", "export default Object.assign(() => {}, { __unenv__: true });\n", "import {\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times,\n Console\n} from \"unenv/node/console\";\nexport {\n Console,\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times\n} from \"unenv/node/console\";\nconst workerdConsole = globalThis[\"console\"];\nexport const {\n assert,\n clear,\n // @ts-expect-error undocumented public API\n context,\n count,\n countReset,\n // @ts-expect-error undocumented public API\n createTask,\n debug,\n dir,\n dirxml,\n error,\n group,\n groupCollapsed,\n groupEnd,\n info,\n log,\n profile,\n profileEnd,\n table,\n time,\n timeEnd,\n timeLog,\n timeStamp,\n trace,\n warn\n} = workerdConsole;\nObject.assign(workerdConsole, {\n Console,\n _ignoreErrors,\n _stderr,\n _stderrErrorHandler,\n _stdout,\n _stdoutErrorHandler,\n _times\n});\nexport default workerdConsole;\n", "import { default as defaultExport } from \"@cloudflare/unenv-preset/node/console\";\nglobalThis.console = defaultExport;", "// https://nodejs.org/api/process.html#processhrtime\nexport const hrtime = /* @__PURE__ */ Object.assign(function hrtime(startTime) {\n\tconst now = Date.now();\n\t// millis to seconds\n\tconst seconds = Math.trunc(now / 1e3);\n\t// convert millis to nanos\n\tconst nanos = now % 1e3 * 1e6;\n\tif (startTime) {\n\t\tlet diffSeconds = seconds - startTime[0];\n\t\tlet diffNanos = nanos - startTime[0];\n\t\tif (diffNanos < 0) {\n\t\t\tdiffSeconds = diffSeconds - 1;\n\t\t\tdiffNanos = 1e9 + diffNanos;\n\t\t}\n\t\treturn [diffSeconds, diffNanos];\n\t}\n\treturn [seconds, nanos];\n}, { bigint: function bigint() {\n\t// Convert milliseconds to nanoseconds\n\treturn BigInt(Date.now() * 1e6);\n} });\n", "import { EventEmitter } from \"node:events\";\nimport { ReadStream, WriteStream } from \"node:tty\";\nimport { notImplemented, createNotImplementedError } from \"../../../_internal/utils.mjs\";\n// node-version.ts is generated at build time\nimport { NODE_VERSION } from \"./node-version.mjs\";\nexport class Process extends EventEmitter {\n\tenv;\n\thrtime;\n\tnextTick;\n\tconstructor(impl) {\n\t\tsuper();\n\t\tthis.env = impl.env;\n\t\tthis.hrtime = impl.hrtime;\n\t\tthis.nextTick = impl.nextTick;\n\t\tfor (const prop of [...Object.getOwnPropertyNames(Process.prototype), ...Object.getOwnPropertyNames(EventEmitter.prototype)]) {\n\t\t\tconst value = this[prop];\n\t\t\tif (typeof value === \"function\") {\n\t\t\t\tthis[prop] = value.bind(this);\n\t\t\t}\n\t\t}\n\t}\n\t// --- event emitter ---\n\temitWarning(warning, type, code) {\n\t\tconsole.warn(`${code ? `[${code}] ` : \"\"}${type ? `${type}: ` : \"\"}${warning}`);\n\t}\n\temit(...args) {\n\t\t// @ts-ignore\n\t\treturn super.emit(...args);\n\t}\n\tlisteners(eventName) {\n\t\treturn super.listeners(eventName);\n\t}\n\t// --- stdio (lazy initializers) ---\n\t#stdin;\n\t#stdout;\n\t#stderr;\n\tget stdin() {\n\t\treturn this.#stdin ??= new ReadStream(0);\n\t}\n\tget stdout() {\n\t\treturn this.#stdout ??= new WriteStream(1);\n\t}\n\tget stderr() {\n\t\treturn this.#stderr ??= new WriteStream(2);\n\t}\n\t// --- cwd ---\n\t#cwd = \"/\";\n\tchdir(cwd) {\n\t\tthis.#cwd = cwd;\n\t}\n\tcwd() {\n\t\treturn this.#cwd;\n\t}\n\t// --- dummy props and getters ---\n\tarch = \"\";\n\tplatform = \"\";\n\targv = [];\n\targv0 = \"\";\n\texecArgv = [];\n\texecPath = \"\";\n\ttitle = \"\";\n\tpid = 200;\n\tppid = 100;\n\tget version() {\n\t\treturn `v${NODE_VERSION}`;\n\t}\n\tget versions() {\n\t\treturn { node: NODE_VERSION };\n\t}\n\tget allowedNodeEnvironmentFlags() {\n\t\treturn new Set();\n\t}\n\tget sourceMapsEnabled() {\n\t\treturn false;\n\t}\n\tget debugPort() {\n\t\treturn 0;\n\t}\n\tget throwDeprecation() {\n\t\treturn false;\n\t}\n\tget traceDeprecation() {\n\t\treturn false;\n\t}\n\tget features() {\n\t\treturn {};\n\t}\n\tget release() {\n\t\treturn {};\n\t}\n\tget connected() {\n\t\treturn false;\n\t}\n\tget config() {\n\t\treturn {};\n\t}\n\tget moduleLoadList() {\n\t\treturn [];\n\t}\n\tconstrainedMemory() {\n\t\treturn 0;\n\t}\n\tavailableMemory() {\n\t\treturn 0;\n\t}\n\tuptime() {\n\t\treturn 0;\n\t}\n\tresourceUsage() {\n\t\treturn {};\n\t}\n\t// --- noop methods ---\n\tref() {\n\t\t// noop\n\t}\n\tunref() {\n\t\t// noop\n\t}\n\t// --- unimplemented methods ---\n\tumask() {\n\t\tthrow createNotImplementedError(\"process.umask\");\n\t}\n\tgetBuiltinModule() {\n\t\treturn undefined;\n\t}\n\tgetActiveResourcesInfo() {\n\t\tthrow createNotImplementedError(\"process.getActiveResourcesInfo\");\n\t}\n\texit() {\n\t\tthrow createNotImplementedError(\"process.exit\");\n\t}\n\treallyExit() {\n\t\tthrow createNotImplementedError(\"process.reallyExit\");\n\t}\n\tkill() {\n\t\tthrow createNotImplementedError(\"process.kill\");\n\t}\n\tabort() {\n\t\tthrow createNotImplementedError(\"process.abort\");\n\t}\n\tdlopen() {\n\t\tthrow createNotImplementedError(\"process.dlopen\");\n\t}\n\tsetSourceMapsEnabled() {\n\t\tthrow createNotImplementedError(\"process.setSourceMapsEnabled\");\n\t}\n\tloadEnvFile() {\n\t\tthrow createNotImplementedError(\"process.loadEnvFile\");\n\t}\n\tdisconnect() {\n\t\tthrow createNotImplementedError(\"process.disconnect\");\n\t}\n\tcpuUsage() {\n\t\tthrow createNotImplementedError(\"process.cpuUsage\");\n\t}\n\tsetUncaughtExceptionCaptureCallback() {\n\t\tthrow createNotImplementedError(\"process.setUncaughtExceptionCaptureCallback\");\n\t}\n\thasUncaughtExceptionCaptureCallback() {\n\t\tthrow createNotImplementedError(\"process.hasUncaughtExceptionCaptureCallback\");\n\t}\n\tinitgroups() {\n\t\tthrow createNotImplementedError(\"process.initgroups\");\n\t}\n\topenStdin() {\n\t\tthrow createNotImplementedError(\"process.openStdin\");\n\t}\n\tassert() {\n\t\tthrow createNotImplementedError(\"process.assert\");\n\t}\n\tbinding() {\n\t\tthrow createNotImplementedError(\"process.binding\");\n\t}\n\t// --- attached interfaces ---\n\tpermission = { has: /* @__PURE__ */ notImplemented(\"process.permission.has\") };\n\treport = {\n\t\tdirectory: \"\",\n\t\tfilename: \"\",\n\t\tsignal: \"SIGUSR2\",\n\t\tcompact: false,\n\t\treportOnFatalError: false,\n\t\treportOnSignal: false,\n\t\treportOnUncaughtException: false,\n\t\tgetReport: /* @__PURE__ */ notImplemented(\"process.report.getReport\"),\n\t\twriteReport: /* @__PURE__ */ notImplemented(\"process.report.writeReport\")\n\t};\n\tfinalization = {\n\t\tregister: /* @__PURE__ */ notImplemented(\"process.finalization.register\"),\n\t\tunregister: /* @__PURE__ */ notImplemented(\"process.finalization.unregister\"),\n\t\tregisterBeforeExit: /* @__PURE__ */ notImplemented(\"process.finalization.registerBeforeExit\")\n\t};\n\tmemoryUsage = Object.assign(() => ({\n\t\tarrayBuffers: 0,\n\t\trss: 0,\n\t\texternal: 0,\n\t\theapTotal: 0,\n\t\theapUsed: 0\n\t}), { rss: () => 0 });\n\t// --- undefined props ---\n\tmainModule = undefined;\n\tdomain = undefined;\n\t// optional\n\tsend = undefined;\n\texitCode = undefined;\n\tchannel = undefined;\n\tgetegid = undefined;\n\tgeteuid = undefined;\n\tgetgid = undefined;\n\tgetgroups = undefined;\n\tgetuid = undefined;\n\tsetegid = undefined;\n\tseteuid = undefined;\n\tsetgid = undefined;\n\tsetgroups = undefined;\n\tsetuid = undefined;\n\t// internals\n\t_events = undefined;\n\t_eventsCount = undefined;\n\t_exiting = undefined;\n\t_maxListeners = undefined;\n\t_debugEnd = undefined;\n\t_debugProcess = undefined;\n\t_fatalException = undefined;\n\t_getActiveHandles = undefined;\n\t_getActiveRequests = undefined;\n\t_kill = undefined;\n\t_preload_modules = undefined;\n\t_rawDebug = undefined;\n\t_startProfilerIdleNotifier = undefined;\n\t_stopProfilerIdleNotifier = undefined;\n\t_tickCallback = undefined;\n\t_disconnect = undefined;\n\t_handleQueue = undefined;\n\t_pendingMessage = undefined;\n\t_channel = undefined;\n\t_send = undefined;\n\t_linkedBinding = undefined;\n}\n", "export class ReadStream {\n\tfd;\n\tisRaw = false;\n\tisTTY = false;\n\tconstructor(fd) {\n\t\tthis.fd = fd;\n\t}\n\tsetRawMode(mode) {\n\t\tthis.isRaw = mode;\n\t\treturn this;\n\t}\n}\n", "export class WriteStream {\n\tfd;\n\tcolumns = 80;\n\trows = 24;\n\tisTTY = false;\n\tconstructor(fd) {\n\t\tthis.fd = fd;\n\t}\n\tclearLine(dir, callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tclearScreenDown(callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tcursorTo(x, y, callback) {\n\t\tcallback && typeof callback === \"function\" && callback();\n\t\treturn false;\n\t}\n\tmoveCursor(dx, dy, callback) {\n\t\tcallback && callback();\n\t\treturn false;\n\t}\n\tgetColorDepth(env) {\n\t\treturn 1;\n\t}\n\thasColors(count, env) {\n\t\treturn false;\n\t}\n\tgetWindowSize() {\n\t\treturn [this.columns, this.rows];\n\t}\n\twrite(str, encoding, cb) {\n\t\tif (str instanceof Uint8Array) {\n\t\t\tstr = new TextDecoder().decode(str);\n\t\t}\n\t\ttry {\n\t\t\tconsole.log(str);\n\t\t} catch {}\n\t\tcb && typeof cb === \"function\" && cb();\n\t\treturn false;\n\t}\n}\n", "// Extracted from .nvmrc\nexport const NODE_VERSION = \"22.14.0\";\n", "import { hrtime as UnenvHrTime } from \"unenv/node/internal/process/hrtime\";\nimport { Process as UnenvProcess } from \"unenv/node/internal/process/process\";\nconst globalProcess = globalThis[\"process\"];\nexport const getBuiltinModule = globalProcess.getBuiltinModule;\nconst workerdProcess = getBuiltinModule(\"node:process\");\nconst unenvProcess = new UnenvProcess({\n env: globalProcess.env,\n hrtime: UnenvHrTime,\n // `nextTick` is available from workerd process v1\n nextTick: workerdProcess.nextTick\n});\nexport const { exit, features, platform } = workerdProcess;\nexport const {\n _channel,\n _debugEnd,\n _debugProcess,\n _disconnect,\n _events,\n _eventsCount,\n _exiting,\n _fatalException,\n _getActiveHandles,\n _getActiveRequests,\n _handleQueue,\n _kill,\n _linkedBinding,\n _maxListeners,\n _pendingMessage,\n _preload_modules,\n _rawDebug,\n _send,\n _startProfilerIdleNotifier,\n _stopProfilerIdleNotifier,\n _tickCallback,\n abort,\n addListener,\n allowedNodeEnvironmentFlags,\n arch,\n argv,\n argv0,\n assert,\n availableMemory,\n binding,\n channel,\n chdir,\n config,\n connected,\n constrainedMemory,\n cpuUsage,\n cwd,\n debugPort,\n disconnect,\n dlopen,\n domain,\n emit,\n emitWarning,\n env,\n eventNames,\n execArgv,\n execPath,\n exitCode,\n finalization,\n getActiveResourcesInfo,\n getegid,\n geteuid,\n getgid,\n getgroups,\n getMaxListeners,\n getuid,\n hasUncaughtExceptionCaptureCallback,\n hrtime,\n initgroups,\n kill,\n listenerCount,\n listeners,\n loadEnvFile,\n mainModule,\n memoryUsage,\n moduleLoadList,\n nextTick,\n off,\n on,\n once,\n openStdin,\n permission,\n pid,\n ppid,\n prependListener,\n prependOnceListener,\n rawListeners,\n reallyExit,\n ref,\n release,\n removeAllListeners,\n removeListener,\n report,\n resourceUsage,\n send,\n setegid,\n seteuid,\n setgid,\n setgroups,\n setMaxListeners,\n setSourceMapsEnabled,\n setuid,\n setUncaughtExceptionCaptureCallback,\n sourceMapsEnabled,\n stderr,\n stdin,\n stdout,\n throwDeprecation,\n title,\n traceDeprecation,\n umask,\n unref,\n uptime,\n version,\n versions\n} = unenvProcess;\nconst _process = {\n abort,\n addListener,\n allowedNodeEnvironmentFlags,\n hasUncaughtExceptionCaptureCallback,\n setUncaughtExceptionCaptureCallback,\n loadEnvFile,\n sourceMapsEnabled,\n arch,\n argv,\n argv0,\n chdir,\n config,\n connected,\n constrainedMemory,\n availableMemory,\n cpuUsage,\n cwd,\n debugPort,\n dlopen,\n disconnect,\n emit,\n emitWarning,\n env,\n eventNames,\n execArgv,\n execPath,\n exit,\n finalization,\n features,\n getBuiltinModule,\n getActiveResourcesInfo,\n getMaxListeners,\n hrtime,\n kill,\n listeners,\n listenerCount,\n memoryUsage,\n nextTick,\n on,\n off,\n once,\n pid,\n platform,\n ppid,\n prependListener,\n prependOnceListener,\n rawListeners,\n release,\n removeAllListeners,\n removeListener,\n report,\n resourceUsage,\n setMaxListeners,\n setSourceMapsEnabled,\n stderr,\n stdin,\n stdout,\n title,\n throwDeprecation,\n traceDeprecation,\n umask,\n uptime,\n version,\n versions,\n // @ts-expect-error old API\n domain,\n initgroups,\n moduleLoadList,\n reallyExit,\n openStdin,\n assert,\n binding,\n send,\n exitCode,\n channel,\n getegid,\n geteuid,\n getgid,\n getgroups,\n getuid,\n setegid,\n seteuid,\n setgid,\n setgroups,\n setuid,\n permission,\n mainModule,\n _events,\n _eventsCount,\n _exiting,\n _maxListeners,\n _debugEnd,\n _debugProcess,\n _fatalException,\n _getActiveHandles,\n _getActiveRequests,\n _kill,\n _preload_modules,\n _rawDebug,\n _startProfilerIdleNotifier,\n _stopProfilerIdleNotifier,\n _tickCallback,\n _disconnect,\n _handleQueue,\n _pendingMessage,\n _channel,\n _send,\n _linkedBinding\n};\nexport default _process;\n", "import { default as defaultExport } from \"@cloudflare/unenv-preset/node/process\";\nglobalThis.process = defaultExport;", "//#region src/calculatePagination.ts\n/**\n* Calculate pagination information based on total count, limit, and offset\n*/\nfunction calculatePagination(total, options) {\n\tconst { limit, offset } = options;\n\tif (total === 0) return {\n\t\ttotal: 0,\n\t\thasNextPage: false,\n\t\thasPreviousPage: false,\n\t\tcurrentPage: 1,\n\t\ttotalPages: 0\n\t};\n\tconst currentPage = Math.floor(offset / limit) + 1;\n\tconst totalPages = Math.ceil(total / limit);\n\treturn {\n\t\ttotal,\n\t\thasNextPage: offset + limit < total,\n\t\thasPreviousPage: offset > 0,\n\t\tcurrentPage,\n\t\ttotalPages\n\t};\n}\n//#endregion\nexport { calculatePagination };\n", "//#region src/contentAddressedAssets.ts\nconst CONTENT_ADDRESSED_ASSET_PREFIX = \"assets\";\nconst getContentAddressedAssetStoragePath = ({ assetPath, fileHash }) => {\n\tconst extension = assetPath.endsWith(\".br\") ? \".br\" : assetPath.includes(\".\") ? `.${assetPath.split(\".\").pop()}` : \"\";\n\treturn `sha256/${fileHash.slice(0, 2)}/${fileHash}${extension}`;\n};\n//#endregion\nexport { CONTENT_ADDRESSED_ASSET_PREFIX, getContentAddressedAssetStoragePath };\n", "//#region src/legacyAssetStorageLayout.ts\n/**\n* @internal\n*\n* Legacy manifest assets were stored below each bundle's `/files` directory\n* using their manifest-relative path. Keep all old-layout path decisions here\n* so support can be removed by deleting this module and the entrypoint branch\n* that imports it.\n*/\nconst getLegacyManifestAssetStoragePath = ({ assetPath }) => assetPath;\n//#endregion\nexport { getLegacyManifestAssetStoragePath };\n", "import { getContentAddressedAssetStoragePath } from \"./contentAddressedAssets.mjs\";\nimport { getLegacyManifestAssetStoragePath } from \"./legacyAssetStorageLayout.mjs\";\n//#region src/assetStorageLayout.ts\nconst isBrotliManifestAssetPath = (assetPath) => /(^|\\/)index\\.[^/]+\\.bundle$/.test(assetPath.replace(/\\\\/g, \"/\"));\nconst getManifestAssetDownloadPath = (assetPath) => isBrotliManifestAssetPath(assetPath) ? `${assetPath}.br` : assetPath;\nconst createStorageUriWithRelativePath = ({ baseStorageUri, relativePath }) => {\n\tconst storageUrl = new URL(baseStorageUri);\n\tstorageUrl.pathname = `${storageUrl.pathname.replace(/\\/+$/, \"\")}/${relativePath.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean).map((segment) => encodeURIComponent(segment)).join(\"/\")}`;\n\treturn storageUrl.toString();\n};\nconst getAssetStorageLayout = (assetBaseStorageUri) => {\n\tconst pathname = new URL(assetBaseStorageUri).pathname.replace(/\\/+$/, \"\");\n\treturn pathname.endsWith(\"/assets\") || pathname === \"/assets\" ? \"content-addressed\" : \"legacy-files\";\n};\nconst isContentAddressedAssetBaseStorageUri = (assetBaseStorageUri) => getAssetStorageLayout(assetBaseStorageUri) === \"content-addressed\";\nconst getManifestAssetStoragePath = ({ assetBaseStorageUri, assetPath, fileHash }) => {\n\tif (getAssetStorageLayout(assetBaseStorageUri) === \"content-addressed\") return getContentAddressedAssetStoragePath({\n\t\tassetPath,\n\t\tfileHash\n\t});\n\treturn getLegacyManifestAssetStoragePath({ assetPath });\n};\nconst resolveManifestAssetStorageUri = ({ assetBaseStorageUri, assetPath, fileHash }) => createStorageUriWithRelativePath({\n\tbaseStorageUri: assetBaseStorageUri,\n\trelativePath: getManifestAssetStoragePath({\n\t\tassetBaseStorageUri,\n\t\tassetPath,\n\t\tfileHash\n\t})\n});\n//#endregion\nexport { createStorageUriWithRelativePath, getAssetStorageLayout, getManifestAssetDownloadPath, getManifestAssetStoragePath, isBrotliManifestAssetPath, isContentAddressedAssetBaseStorageUri, resolveManifestAssetStorageUri };\n", "//#region src/queryBundles.ts\nconst compareValue = (value, expected, comparator) => {\n\tif (expected === void 0) return true;\n\tswitch (comparator) {\n\t\tcase \"eq\": return value === expected;\n\t\tcase \"gt\": return value.localeCompare(expected) > 0;\n\t\tcase \"gte\": return value.localeCompare(expected) >= 0;\n\t\tcase \"lt\": return value.localeCompare(expected) < 0;\n\t\tcase \"lte\": return value.localeCompare(expected) <= 0;\n\t}\n};\nfunction bundleIdMatchesFilter(id, filter) {\n\tif (!filter) return true;\n\tif (filter.in && !filter.in.includes(id)) return false;\n\treturn compareValue(id, filter.eq, \"eq\") && compareValue(id, filter.gt, \"gt\") && compareValue(id, filter.gte, \"gte\") && compareValue(id, filter.lt, \"lt\") && compareValue(id, filter.lte, \"lte\");\n}\nfunction bundleMatchesQueryWhere(bundle, where) {\n\tif (!where) return true;\n\tif (where.channel !== void 0 && bundle.channel !== where.channel) return false;\n\tif (where.platform !== void 0 && bundle.platform !== where.platform) return false;\n\tif (where.enabled !== void 0 && bundle.enabled !== where.enabled) return false;\n\tif (!bundleIdMatchesFilter(bundle.id, where.id)) return false;\n\tif (where.targetAppVersionNotNull === true && bundle.targetAppVersion === null) return false;\n\tif (where.targetAppVersion !== void 0 && bundle.targetAppVersion !== where.targetAppVersion) return false;\n\tif (where.targetAppVersionIn && !where.targetAppVersionIn.includes(bundle.targetAppVersion ?? \"\")) return false;\n\tif (where.fingerprintHash !== void 0 && bundle.fingerprintHash !== where.fingerprintHash) return false;\n\treturn true;\n}\nfunction sortBundles(bundles, orderBy) {\n\tconst direction = orderBy?.direction ?? \"desc\";\n\tif (orderBy && orderBy.field !== \"id\") return bundles;\n\treturn bundles.slice().sort((a, b) => {\n\t\tconst result = a.id.localeCompare(b.id);\n\t\treturn direction === \"asc\" ? result : -result;\n\t});\n}\n//#endregion\nexport { bundleIdMatchesFilter, bundleMatchesQueryWhere, sortBundles };\n", "import { bundleMatchesQueryWhere, sortBundles } from \"./queryBundles.mjs\";\n//#region src/bundleUnitOfWork.ts\nconst resolveEntryValue = (entry) => entry.kind === \"present\" ? entry.bundle : null;\nvar BundleUnitOfWork = class {\n\tentries = /* @__PURE__ */ new Map();\n\tpendingLoads = /* @__PURE__ */ new Map();\n\tchanges = /* @__PURE__ */ new Map();\n\tseededIds = /* @__PURE__ */ new Set();\n\tseed(seeds) {\n\t\tfor (const seed of seeds) {\n\t\t\tif (!seed) continue;\n\t\t\tthis.seededIds.add(seed.id);\n\t\t\tif (!this.changes.has(seed.id)) this.entries.set(seed.id, {\n\t\t\t\tkind: \"present\",\n\t\t\t\tbundle: seed\n\t\t\t});\n\t\t}\n\t}\n\thasSeeds() {\n\t\treturn this.seededIds.size > 0;\n\t}\n\tseededBundles() {\n\t\tconst bundles = [];\n\t\tfor (const bundleId of this.seededIds) {\n\t\t\tconst entry = this.entries.get(bundleId);\n\t\t\tif (entry?.kind === \"present\") bundles.push(entry.bundle);\n\t\t}\n\t\treturn bundles;\n\t}\n\tpeek(bundleId) {\n\t\tconst entry = this.entries.get(bundleId);\n\t\tif (entry?.kind === \"present\") return entry.bundle;\n\t\treturn null;\n\t}\n\tpeekChanged(bundleId) {\n\t\tif (!this.changes.has(bundleId)) return { found: false };\n\t\tconst entry = this.entries.get(bundleId);\n\t\treturn {\n\t\t\tfound: true,\n\t\t\tvalue: entry ? resolveEntryValue(entry) : null\n\t\t};\n\t}\n\tasync getById(bundleId, loadBundleById) {\n\t\tconst entry = this.entries.get(bundleId);\n\t\tif (entry) return resolveEntryValue(entry);\n\t\tconst pendingLoad = this.pendingLoads.get(bundleId);\n\t\tif (pendingLoad) return pendingLoad;\n\t\tconst load = loadBundleById().then((bundle) => {\n\t\t\tthis.pendingLoads.delete(bundleId);\n\t\t\tconst currentEntry = this.entries.get(bundleId);\n\t\t\tif (currentEntry) return resolveEntryValue(currentEntry);\n\t\t\tthis.entries.set(bundleId, bundle ? {\n\t\t\t\tkind: \"present\",\n\t\t\t\tbundle\n\t\t\t} : { kind: \"missing\" });\n\t\t\treturn bundle;\n\t\t}, (error) => {\n\t\t\tthis.pendingLoads.delete(bundleId);\n\t\t\tthrow error;\n\t\t});\n\t\tthis.pendingLoads.set(bundleId, load);\n\t\treturn load;\n\t}\n\toverlayList(bundles, options) {\n\t\tconst dataById = /* @__PURE__ */ new Map();\n\t\tfor (const bundle of bundles) {\n\t\t\tconst entry = this.entries.get(bundle.id);\n\t\t\tif (entry?.kind === \"deleted\") continue;\n\t\t\tif (entry?.kind === \"present\") {\n\t\t\t\tif (bundleMatchesQueryWhere(entry.bundle, options.where)) dataById.set(entry.bundle.id, entry.bundle);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.entries.set(bundle.id, {\n\t\t\t\tkind: \"present\",\n\t\t\t\tbundle\n\t\t\t});\n\t\t\tdataById.set(bundle.id, bundle);\n\t\t}\n\t\tfor (const change of this.changes.values()) {\n\t\t\tif (change.operation === \"delete\" || change.operation === \"insert\") {\n\t\t\t\tdataById.delete(change.data.id);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (bundleMatchesQueryWhere(change.data, options.where)) dataById.set(change.data.id, change.data);\n\t\t\telse dataById.delete(change.data.id);\n\t\t}\n\t\treturn sortBundles(Array.from(dataById.values()), options.orderBy).slice(0, options.limit);\n\t}\n\tmarkInsert(bundle) {\n\t\tthis.entries.set(bundle.id, {\n\t\t\tkind: \"present\",\n\t\t\tbundle\n\t\t});\n\t\tthis.changes.set(bundle.id, {\n\t\t\toperation: \"insert\",\n\t\t\tdata: bundle,\n\t\t\tbefore: null\n\t\t});\n\t}\n\tmarkUpdate(bundle) {\n\t\tconst previousChange = this.changes.get(bundle.id);\n\t\tconst previousEntry = this.entries.get(bundle.id);\n\t\tconst operation = previousChange?.operation ?? \"update\";\n\t\tthis.entries.set(bundle.id, {\n\t\t\tkind: \"present\",\n\t\t\tbundle\n\t\t});\n\t\tthis.changes.set(bundle.id, {\n\t\t\toperation,\n\t\t\tdata: bundle,\n\t\t\tbefore: previousChange?.before ?? (previousEntry ? resolveEntryValue(previousEntry) : null)\n\t\t});\n\t}\n\tmarkDelete(bundle) {\n\t\tconst previousChange = this.changes.get(bundle.id);\n\t\tconst previousEntry = this.entries.get(bundle.id);\n\t\tthis.entries.set(bundle.id, {\n\t\t\tkind: \"deleted\",\n\t\t\tbundle\n\t\t});\n\t\tthis.changes.set(bundle.id, {\n\t\t\toperation: \"delete\",\n\t\t\tdata: bundle,\n\t\t\tbefore: previousChange?.before ?? (previousEntry ? resolveEntryValue(previousEntry) : bundle)\n\t\t});\n\t}\n\tchangedSets() {\n\t\treturn Array.from(this.changes.values(), ({ data, operation }) => ({\n\t\t\toperation,\n\t\t\tdata\n\t\t}));\n\t}\n\thasChanges() {\n\t\treturn this.changes.size > 0;\n\t}\n\tlistFetchExtraCount() {\n\t\treturn Array.from(this.changes.values()).filter((change) => change.operation === \"update\" || change.operation === \"delete\").length;\n\t}\n\ttotalDelta(where) {\n\t\tlet total = 0;\n\t\tfor (const change of this.changes.values()) {\n\t\t\tif (change.operation === \"insert\") continue;\n\t\t\tconst matchedBefore = change.before !== null && bundleMatchesQueryWhere(change.before, where);\n\t\t\tconst matchesAfter = change.operation === \"update\" && bundleMatchesQueryWhere(change.data, where);\n\t\t\tif (matchedBefore && !matchesAfter) total -= 1;\n\t\t\telse if (!matchedBefore && matchesAfter) total += 1;\n\t\t}\n\t\treturn total;\n\t}\n\tclear() {\n\t\tthis.entries.clear();\n\t\tthis.pendingLoads.clear();\n\t\tthis.changes.clear();\n\t\tthis.seededIds.clear();\n\t}\n};\n//#endregion\nexport { BundleUnitOfWork };\n", "import { BundleUnitOfWork } from \"./bundleUnitOfWork.mjs\";\n//#region src/bundleUnitOfWorkStore.ts\nconst requestUnitOfWorks = /* @__PURE__ */ new WeakMap();\nconst isUnitOfWorkContext = (value) => typeof value === \"object\" && value !== null || typeof value === \"function\";\nconst getRequestBundleUnitOfWork = (context) => {\n\tif (!isUnitOfWorkContext(context)) return null;\n\tlet unitOfWork = requestUnitOfWorks.get(context);\n\tif (!unitOfWork) {\n\t\tunitOfWork = new BundleUnitOfWork();\n\t\trequestUnitOfWorks.set(context, unitOfWork);\n\t}\n\treturn unitOfWork;\n};\n//#endregion\nexport { getRequestBundleUnitOfWork };\n", "//#region src/predicate/isPlainObject.ts\n/**\n* Checks if a given value is a plain object.\n*\n* @param {object} value - The value to check.\n* @returns {value is Record<PropertyKey, any>} - True if the value is a plain object, otherwise false.\n*\n* @example\n* ```typescript\n* // \u2705\uD83D\uDC47 True\n*\n* isPlainObject({ }); // \u2705\n* isPlainObject({ key: 'value' }); // \u2705\n* isPlainObject({ key: new Date() }); // \u2705\n* isPlainObject(new Object()); // \u2705\n* isPlainObject(Object.create(null)); // \u2705\n* isPlainObject({ nested: { key: true} }); // \u2705\n* isPlainObject(new Proxy({}, {})); // \u2705\n* isPlainObject({ [Symbol('tag')]: 'A' }); // \u2705\n*\n* // \u2705\uD83D\uDC47 (cross-realms, node context, workers, ...)\n* const runInNewContext = await import('node:vm').then(\n* (mod) => mod.runInNewContext\n* );\n* isPlainObject(runInNewContext('({})')); // \u2705\n*\n* // \u274C\uD83D\uDC47 False\n*\n* class Test { };\n* isPlainObject(new Test()) // \u274C\n* isPlainObject(10); // \u274C\n* isPlainObject(null); // \u274C\n* isPlainObject('hello'); // \u274C\n* isPlainObject([]); // \u274C\n* isPlainObject(new Date()); // \u274C\n* isPlainObject(new Uint8Array([1])); // \u274C\n* isPlainObject(Buffer.from('ABC')); // \u274C\n* isPlainObject(Promise.resolve({})); // \u274C\n* isPlainObject(Object.create({})); // \u274C\n* isPlainObject(new (class Cls {})); // \u274C\n* isPlainObject(globalThis); // \u274C,\n* ```\n*/\nfunction isPlainObject(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst proto = Object.getPrototypeOf(value);\n\tif (!(proto === null || proto === Object.prototype || Object.getPrototypeOf(proto) === null)) return false;\n\treturn Object.prototype.toString.call(value) === \"[object Object]\";\n}\n//#endregion\nexport { isPlainObject };\n", "//#region src/_internal/isUnsafeProperty.ts\n/**\n* Checks if a property key is unsafe to modify directly.\n*\n* This function is used in functions like `merge` to prevent prototype pollution attacks\n* by identifying property keys that could modify the object's prototype chain or constructor.\n*\n* @param key - The property key to check\n* @returns `true` if the property is unsafe to modify directly, `false` otherwise\n* @internal\n*/\nfunction isUnsafeProperty(key) {\n\treturn key === \"__proto__\";\n}\n//#endregion\nexport { isUnsafeProperty };\n", "import { isPlainObject } from \"../predicate/isPlainObject.mjs\";\nimport { isUnsafeProperty } from \"../_internal/isUnsafeProperty.mjs\";\n//#region src/object/mergeWith.ts\n/**\n* Merges the properties of the source object into the target object.\n*\n* You can provide a custom `merge` function to control how properties are merged. It should return the value to be set in the target object.\n*\n* If it returns `undefined`, a default deep merge will be applied for arrays and objects:\n*\n* - If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged.\n* - If a property in the source object is undefined, it will not overwrite a defined property in the target object.\n*\n* Note that this function mutates the target object.\n*\n* @param {T} target - The target object into which the source object properties will be merged. This object is modified in place.\n* @param {S} source - The source object whose properties will be merged into the target object.\n* @param {(targetValue: any, sourceValue: any, key: string, target: T, source: S) => any} merge - A custom merge function that defines how properties should be combined. It receives the following arguments:\n* - `targetValue`: The current value of the property in the target object.\n* - `sourceValue`: The value of the property in the source object.\n* - `key`: The key of the property being merged.\n* - `target`: The target object.\n* - `source`: The source object.\n*\n* @returns {T & S} The updated target object with properties from the source object merged in.\n*\n* @template T - Type of the target object.\n* @template S - Type of the source object.\n*\n* @example\n* const target = { a: 1, b: 2 };\n* const source = { b: 3, c: 4 };\n*\n* mergeWith(target, source, (targetValue, sourceValue) => {\n* if (typeof targetValue === 'number' && typeof sourceValue === 'number') {\n* return targetValue + sourceValue;\n* }\n* });\n* // Returns { a: 1, b: 5, c: 4 }\n* @example\n* const target = { a: [1], b: [2] };\n* const source = { a: [3], b: [4] };\n*\n* const result = mergeWith(target, source, (objValue, srcValue) => {\n* if (Array.isArray(objValue)) {\n* return objValue.concat(srcValue);\n* }\n* });\n*\n* expect(result).toEqual({ a: [1, 3], b: [2, 4] });\n*/\nfunction mergeWith(target, source, merge) {\n\tconst sourceKeys = Object.keys(source);\n\tfor (let i = 0; i < sourceKeys.length; i++) {\n\t\tconst key = sourceKeys[i];\n\t\tif (isUnsafeProperty(key)) continue;\n\t\tconst sourceValue = source[key];\n\t\tconst targetValue = target[key];\n\t\tconst merged = merge(targetValue, sourceValue, key, target, source);\n\t\tif (merged !== void 0) target[key] = merged;\n\t\telse if (Array.isArray(sourceValue)) if (Array.isArray(targetValue)) target[key] = mergeWith(targetValue, sourceValue, merge);\n\t\telse target[key] = mergeWith([], sourceValue, merge);\n\t\telse if (isPlainObject(sourceValue)) if (isPlainObject(targetValue)) target[key] = mergeWith(targetValue, sourceValue, merge);\n\t\telse target[key] = mergeWith({}, sourceValue, merge);\n\t\telse if (targetValue === void 0 || sourceValue !== void 0) target[key] = sourceValue;\n\t}\n\treturn target;\n}\n//#endregion\nexport { mergeWith };\n", "import { calculatePagination } from \"./calculatePagination.mjs\";\nimport { BundleUnitOfWork } from \"./bundleUnitOfWork.mjs\";\nimport { getRequestBundleUnitOfWork } from \"./bundleUnitOfWorkStore.mjs\";\nimport { mergeWith } from \"es-toolkit\";\n//#region src/createDatabasePlugin.ts\nconst REPLACE_ON_UPDATE_KEYS = [\"patches\", \"targetCohorts\"];\nconst DEFAULT_DESC_ORDER = {\n\tfield: \"id\",\n\tdirection: \"desc\"\n};\nfunction normalizePage(value) {\n\tif (!Number.isInteger(value) || value === void 0 || value < 1) return;\n\treturn value;\n}\nfunction mergeBundleUpdate(baseBundle, patch) {\n\treturn mergeWith({ ...baseBundle }, patch, (_targetValue, sourceValue, key) => {\n\t\tif (REPLACE_ON_UPDATE_KEYS.includes(key)) return sourceValue;\n\t});\n}\nfunction mergeIdFilter(base, patch) {\n\treturn {\n\t\t...base,\n\t\t...patch\n\t};\n}\nfunction mergeWhereWithIdFilter(where, idFilter) {\n\treturn {\n\t\t...where,\n\t\tid: mergeIdFilter(where?.id, idFilter)\n\t};\n}\nfunction buildCursorPageQuery(where, cursor, orderBy) {\n\tconst direction = orderBy.direction;\n\tif (cursor.after) return {\n\t\treverseData: false,\n\t\twhere: mergeWhereWithIdFilter(where, { [direction === \"desc\" ? \"lt\" : \"gt\"]: cursor.after }),\n\t\torderBy\n\t};\n\tif (cursor.before) return {\n\t\treverseData: true,\n\t\twhere: mergeWhereWithIdFilter(where, { [direction === \"desc\" ? \"gt\" : \"lt\"]: cursor.before }),\n\t\torderBy: {\n\t\t\tfield: orderBy.field,\n\t\t\tdirection: direction === \"desc\" ? \"asc\" : \"desc\"\n\t\t}\n\t};\n\treturn {\n\t\treverseData: false,\n\t\twhere: where ?? {},\n\t\torderBy\n\t};\n}\nfunction buildCountBeforeWhere(where, firstBundleId, orderBy) {\n\treturn mergeWhereWithIdFilter(where, { [orderBy.direction === \"desc\" ? \"gt\" : \"lt\"]: firstBundleId });\n}\nfunction createPaginatedResult(total, limit, startIndex, data) {\n\tconst pagination = calculatePagination(total, {\n\t\tlimit,\n\t\toffset: startIndex\n\t});\n\tconst nextCursor = data.length > 0 && startIndex + data.length < total ? data.at(-1)?.id : void 0;\n\tconst previousCursor = data.length > 0 && startIndex > 0 ? data[0]?.id : void 0;\n\treturn {\n\t\tdata,\n\t\tpagination: {\n\t\t\t...pagination,\n\t\t\t...nextCursor ? { nextCursor } : {},\n\t\t\t...previousCursor ? { previousCursor } : {}\n\t\t}\n\t};\n}\nfunction expandLimitForUnitOfWork(options, unitOfWork) {\n\tconst extraLimit = unitOfWork.listFetchExtraCount();\n\tif (extraLimit === 0) return options;\n\treturn {\n\t\t...options,\n\t\tlimit: options.limit + extraLimit\n\t};\n}\nfunction adjustPaginationTotal(pagination, options) {\n\tif (options.totalDelta === 0) return pagination;\n\tconst total = Math.max(0, pagination.total + options.totalDelta);\n\tconst hasPreviousPage = pagination.currentPage > 1;\n\tconst hasNextPage = pagination.currentPage * options.limit < total;\n\treturn {\n\t\t...pagination,\n\t\ttotal,\n\t\thasNextPage,\n\t\thasPreviousPage,\n\t\ttotalPages: total === 0 ? 0 : Math.ceil(total / options.limit)\n\t};\n}\n/**\n* Creates a database plugin with lazy initialization and automatic hook execution.\n*\n* This factory function abstracts the double currying pattern used by all database plugins,\n* ensuring consistent lazy initialization behavior across different database providers.\n* Hooks are automatically executed at appropriate times without requiring manual invocation.\n*\n* @param options - Configuration options for the database plugin\n* @returns A double-curried function that lazily initializes the database plugin\n*\n* @example\n* ```typescript\n* export const postgres = createDatabasePlugin<PostgresConfig>({\n* name: \"postgres\",\n* factory: (config) => {\n* const db = new Kysely(config);\n* return {\n* async getBundleById(bundleId) { ... },\n* async getBundles(options) { ... },\n* async getChannels() { ... },\n* async commitBundle({ changedSets }) { ... }\n* };\n* }\n* });\n* ```\n*/\nfunction createDatabasePlugin(options) {\n\treturn (config, hooks) => {\n\t\tlet cachedMethods = null;\n\t\tconst getMethods = () => {\n\t\t\tif (!cachedMethods) cachedMethods = options.factory(config);\n\t\t\treturn cachedMethods;\n\t\t};\n\t\treturn () => {\n\t\t\tconst instanceMutationUnitOfWork = new BundleUnitOfWork();\n\t\t\tconst getRequestUnitOfWork = (context) => {\n\t\t\t\treturn getRequestBundleUnitOfWork(context);\n\t\t\t};\n\t\t\tconst getMutationUnitOfWork = (context) => {\n\t\t\t\treturn getRequestUnitOfWork(context) ?? instanceMutationUnitOfWork;\n\t\t\t};\n\t\t\tconst runGetBundles = async (options, context) => {\n\t\t\t\tif (context === void 0) return getMethods().getBundles(options);\n\t\t\t\treturn getMethods().getBundles(options, context);\n\t\t\t};\n\t\t\tconst getBundlesWithLegacyCursorFallback = async (options, context) => {\n\t\t\t\tconst orderBy = options.orderBy ?? DEFAULT_DESC_ORDER;\n\t\t\t\tconst baseWhere = options.where;\n\t\t\t\tconst total = (await runGetBundles({\n\t\t\t\t\twhere: baseWhere,\n\t\t\t\t\tlimit: 1,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\torderBy\n\t\t\t\t}, context)).pagination.total;\n\t\t\t\tif (!options.cursor?.after && !options.cursor?.before) {\n\t\t\t\t\tconst firstPage = await runGetBundles({\n\t\t\t\t\t\twhere: baseWhere,\n\t\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\torderBy\n\t\t\t\t\t}, context);\n\t\t\t\t\treturn createPaginatedResult(total, options.limit, 0, firstPage.data);\n\t\t\t\t}\n\t\t\t\tconst { where, orderBy: queryOrderBy, reverseData } = buildCursorPageQuery(baseWhere, options.cursor, orderBy);\n\t\t\t\tconst cursorPage = await runGetBundles({\n\t\t\t\t\twhere,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\torderBy: queryOrderBy\n\t\t\t\t}, context);\n\t\t\t\tconst data = reverseData ? cursorPage.data.slice().reverse() : cursorPage.data;\n\t\t\t\tif (data.length === 0) {\n\t\t\t\t\tconst emptyStartIndex = options.cursor.after ? total : 0;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tpagination: {\n\t\t\t\t\t\t\t...calculatePagination(total, {\n\t\t\t\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\t\t\t\toffset: emptyStartIndex\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t...options.cursor.after ? { previousCursor: options.cursor.after } : {},\n\t\t\t\t\t\t\t...options.cursor.before ? { nextCursor: options.cursor.before } : {}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst firstBundleId = data[0].id;\n\t\t\t\tconst countBeforeResult = await runGetBundles({\n\t\t\t\t\twhere: buildCountBeforeWhere(baseWhere, firstBundleId, orderBy),\n\t\t\t\t\tlimit: 1,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\torderBy\n\t\t\t\t}, context);\n\t\t\t\treturn createPaginatedResult(total, options.limit, countBeforeResult.pagination.total, data);\n\t\t\t};\n\t\t\tconst plugin = {\n\t\t\t\tname: options.name,\n\t\t\t\tasync getBundleById(bundleId, context) {\n\t\t\t\t\tconst requestUnitOfWork = getRequestUnitOfWork(context);\n\t\t\t\t\tif (requestUnitOfWork) return requestUnitOfWork.getById(bundleId, () => getMethods().getBundleById(bundleId, context));\n\t\t\t\t\tconst pendingMutation = instanceMutationUnitOfWork.peekChanged(bundleId);\n\t\t\t\t\tif (pendingMutation.found) return pendingMutation.value;\n\t\t\t\t\treturn getMethods().getBundleById(bundleId);\n\t\t\t\t},\n\t\t\t\tasync getBundles(options, context) {\n\t\t\t\t\tif (typeof options === \"object\" && options !== null && \"offset\" in options && options.offset !== void 0) throw new Error(\"Bundle offset pagination has been removed. Use cursor.after or cursor.before instead.\");\n\t\t\t\t\tconst methods = getMethods();\n\t\t\t\t\tconst requestUnitOfWork = getRequestUnitOfWork(context);\n\t\t\t\t\tconst unitOfWork = requestUnitOfWork ?? instanceMutationUnitOfWork;\n\t\t\t\t\tconst shouldOverlay = requestUnitOfWork !== null || instanceMutationUnitOfWork.hasChanges();\n\t\t\t\t\tconst normalizedOptions = {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tpage: normalizePage(options.page),\n\t\t\t\t\t\torderBy: options.orderBy ?? DEFAULT_DESC_ORDER\n\t\t\t\t\t};\n\t\t\t\t\tconst overlayResult = (result) => ({\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tdata: unitOfWork.overlayList(result.data, {\n\t\t\t\t\t\t\tlimit: normalizedOptions.limit,\n\t\t\t\t\t\t\torderBy: normalizedOptions.orderBy,\n\t\t\t\t\t\t\twhere: normalizedOptions.where\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tpagination: adjustPaginationTotal(result.pagination, {\n\t\t\t\t\t\t\tlimit: normalizedOptions.limit,\n\t\t\t\t\t\t\ttotalDelta: unitOfWork.totalDelta(normalizedOptions.where)\n\t\t\t\t\t\t})\n\t\t\t\t\t});\n\t\t\t\t\tif (normalizedOptions.page !== void 0) {\n\t\t\t\t\t\tconst { page, ...pageOptions } = normalizedOptions;\n\t\t\t\t\t\tconst requestedOffset = (page - 1) * normalizedOptions.limit;\n\t\t\t\t\t\tconst fetchPageOptions = expandLimitForUnitOfWork(pageOptions, unitOfWork);\n\t\t\t\t\t\tlet pageResult = await runGetBundles({\n\t\t\t\t\t\t\t...fetchPageOptions,\n\t\t\t\t\t\t\toffset: requestedOffset\n\t\t\t\t\t\t}, context);\n\t\t\t\t\t\tconst total = pageResult.pagination.total;\n\t\t\t\t\t\tconst totalPages = total === 0 ? 0 : Math.ceil(total / normalizedOptions.limit);\n\t\t\t\t\t\tconst maxOffset = totalPages === 0 ? 0 : (Math.max(1, totalPages) - 1) * normalizedOptions.limit;\n\t\t\t\t\t\tconst resolvedOffset = Math.min(requestedOffset, maxOffset);\n\t\t\t\t\t\tif (resolvedOffset !== requestedOffset) pageResult = await runGetBundles({\n\t\t\t\t\t\t\t...fetchPageOptions,\n\t\t\t\t\t\t\toffset: resolvedOffset\n\t\t\t\t\t\t}, context);\n\t\t\t\t\t\tconst result = { ...createPaginatedResult(total, normalizedOptions.limit, resolvedOffset, pageResult.data) };\n\t\t\t\t\t\treturn shouldOverlay ? overlayResult(result) : result;\n\t\t\t\t\t}\n\t\t\t\t\tif (methods.supportsCursorPagination) {\n\t\t\t\t\t\tconst fetchOptions = expandLimitForUnitOfWork(normalizedOptions, unitOfWork);\n\t\t\t\t\t\tconst result = context === void 0 ? await methods.getBundles(fetchOptions) : await methods.getBundles(fetchOptions, context);\n\t\t\t\t\t\treturn shouldOverlay ? overlayResult(result) : result;\n\t\t\t\t\t}\n\t\t\t\t\tconst result = await getBundlesWithLegacyCursorFallback(shouldOverlay ? expandLimitForUnitOfWork(normalizedOptions, unitOfWork) : normalizedOptions, context);\n\t\t\t\t\treturn shouldOverlay ? overlayResult(result) : result;\n\t\t\t\t},\n\t\t\t\tasync getChannels(context) {\n\t\t\t\t\tif (context === void 0) return getMethods().getChannels();\n\t\t\t\t\treturn getMethods().getChannels(context);\n\t\t\t\t},\n\t\t\t\tasync onUnmount() {\n\t\t\t\t\tconst methods = getMethods();\n\t\t\t\t\tif (methods.onUnmount) return methods.onUnmount();\n\t\t\t\t},\n\t\t\t\tasync commitBundle(context) {\n\t\t\t\t\tconst methods = getMethods();\n\t\t\t\t\tconst unitOfWork = getMutationUnitOfWork(context);\n\t\t\t\t\tconst params = { changedSets: unitOfWork.changedSets() };\n\t\t\t\t\tif (context === void 0) await methods.commitBundle(params);\n\t\t\t\t\telse await methods.commitBundle(params, context);\n\t\t\t\t\tunitOfWork.clear();\n\t\t\t\t\tawait hooks?.onDatabaseUpdated?.();\n\t\t\t\t},\n\t\t\t\tasync updateBundle(targetBundleId, newBundle, context) {\n\t\t\t\t\tconst unitOfWork = getMutationUnitOfWork(context);\n\t\t\t\t\tconst currentBundle = await unitOfWork.getById(targetBundleId, () => context === void 0 ? getMethods().getBundleById(targetBundleId) : getMethods().getBundleById(targetBundleId, context));\n\t\t\t\t\tif (!currentBundle) throw new Error(\"targetBundleId not found\");\n\t\t\t\t\tconst updatedBundle = mergeBundleUpdate(currentBundle, newBundle);\n\t\t\t\t\tunitOfWork.markUpdate(updatedBundle);\n\t\t\t\t},\n\t\t\t\tasync appendBundle(inputBundle, context) {\n\t\t\t\t\tgetMutationUnitOfWork(context).markInsert(inputBundle);\n\t\t\t\t},\n\t\t\t\tasync deleteBundle(deleteBundle, context) {\n\t\t\t\t\tgetMutationUnitOfWork(context).markDelete(deleteBundle);\n\t\t\t\t}\n\t\t\t};\n\t\t\tObject.defineProperty(plugin, \"getUpdateInfo\", {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\tconst directGetUpdateInfo = getMethods().getUpdateInfo;\n\t\t\t\t\tif (!directGetUpdateInfo) {\n\t\t\t\t\t\tObject.defineProperty(plugin, \"getUpdateInfo\", {\n\t\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tvalue: void 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst wrappedGetUpdateInfo = async (args, context) => {\n\t\t\t\t\t\tif (context === void 0) return directGetUpdateInfo(args);\n\t\t\t\t\t\treturn directGetUpdateInfo(args, context);\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(plugin, \"getUpdateInfo\", {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tvalue: wrappedGetUpdateInfo\n\t\t\t\t\t});\n\t\t\t\t\treturn wrappedGetUpdateInfo;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn plugin;\n\t\t};\n\t};\n}\n//#endregion\nexport { createDatabasePlugin };\n", "//#region src/constants.ts\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst INCREMENT_TYPES = [\n\t\"major\",\n\t\"premajor\",\n\t\"minor\",\n\t\"preminor\",\n\t\"patch\",\n\t\"prepatch\",\n\t\"prerelease\",\n\t\"release\"\n];\nconst TRUNCATION_TYPES = [\n\t\"major\",\n\t\"premajor\",\n\t\"minor\",\n\t\"preminor\",\n\t\"patch\",\n\t\"prepatch\",\n\t\"prerelease\"\n];\n//#endregion\n//#region src/internal/patterns.ts\nconst LETTER_DASH_NUMBER = \"[a-zA-Z0-9-]\";\nconst NUMERIC_IDENTIFIER = String.raw`0|[1-9]\\d*`;\nconst NUMERIC_IDENTIFIER_LOOSE = String.raw`\\d+`;\nconst NON_NUMERIC_IDENTIFIER = String.raw`\\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;\nconst MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})`;\nconst MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;\nconst PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`;\nconst PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;\nconst BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;\nconst BUILD = String.raw`(?:\\+(${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`;\nconst FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;\nconst LOOSE_PLAIN = String.raw`[v=\\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;\nconst GREATER_LESS_THAN = \"((?:<|>)?=?)\";\nconst XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\\*`;\nconst XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\\*`;\nconst XRANGE_PLAIN = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;\nconst XRANGE_PLAIN_LOOSE = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;\nconst LONE_TILDE = \"(?:~>?)\";\nconst LONE_CARET = String.raw`(?:\\^)`;\nconst COERCE_PLAIN = String.raw`(^|[^\\d])(\\d{1,${16}})(?:\\.(\\d{1,${16}}))?(?:\\.(\\d{1,${16}}))?`;\nconst COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\\d])`;\nconst COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\\d])`;\nfunction makeSafeRegexSource(source) {\n\tconst replacements = [\n\t\t[String.raw`\\s`, 1],\n\t\t[String.raw`\\d`, 256],\n\t\t[LETTER_DASH_NUMBER, 250]\n\t];\n\tfor (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);\n\treturn source;\n}\nfunction safeRegex(source, flags) {\n\treturn new RegExp(makeSafeRegexSource(source), flags);\n}\n//#endregion\n//#region src/identifiers.ts\nconst NUMERIC$1 = /^\\d+$/;\nfunction compareIdentifiers(left, right) {\n\tif (typeof left === \"number\" && typeof right === \"number\") return left === right ? 0 : left < right ? -1 : 1;\n\tconst leftNumeric = NUMERIC$1.test(String(left));\n\tconst rightNumeric = NUMERIC$1.test(String(right));\n\tconst normalizedLeft = leftNumeric ? Number(left) : left;\n\tconst normalizedRight = rightNumeric ? Number(right) : right;\n\treturn normalizedLeft === normalizedRight ? 0 : leftNumeric && !rightNumeric ? -1 : rightNumeric && !leftNumeric ? 1 : normalizedLeft < normalizedRight ? -1 : 1;\n}\nfunction compareIdentifiersReversed(left, right) {\n\treturn compareIdentifiers(right, left);\n}\n//#endregion\n//#region src/internal/version.ts\nconst FULL = safeRegex(`^${FULL_PLAIN}$`);\nconst LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);\nconst PRERELEASE_EXACT = safeRegex(`^${PRERELEASE}$`);\nconst PRERELEASE_LOOSE_EXACT = safeRegex(`^${PRERELEASE_LOOSE}$`);\nconst COERCE_EXACT = safeRegex(COERCE);\nconst COERCE_FULL_EXACT = safeRegex(COERCE_FULL);\nconst NUMERIC = /^\\d+$/;\nfunction formatComparableVersion(version) {\n\tconst base = `${version.major}.${version.minor}.${version.patch}`;\n\treturn version.prerelease?.length ? `${base}-${version.prerelease.join(\".\")}` : base;\n}\nfunction formatFullVersion(version) {\n\tconst comparable = formatComparableVersion(version);\n\treturn version.build?.length ? `${comparable}+${version.build.join(\".\")}` : comparable;\n}\nfunction parse(version, options = {}) {\n\tif (typeof version !== \"string\") return version;\n\tif (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);\n\tconst match = version.trim().match(options.loose ? LOOSE : FULL);\n\tif (!match) throw new TypeError(`Invalid version syntax: ${version}`);\n\tconst major = Number(match[1]);\n\tconst minor = Number(match[2]);\n\tconst patch = Number(match[3]);\n\tif (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);\n\tif (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);\n\tif (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);\n\tconst prerelease = match[4] ? match[4].split(\".\").map((identifier) => {\n\t\tif (NUMERIC.test(identifier)) {\n\t\t\tconst numeric = Number(identifier);\n\t\t\tif (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;\n\t\t}\n\t\treturn identifier;\n\t}) : void 0;\n\treturn {\n\t\tbuild: match[5]?.split(\".\"),\n\t\tmajor,\n\t\tminor,\n\t\tpatch,\n\t\tprerelease\n\t};\n}\nfunction tryParse(version, options = {}) {\n\ttry {\n\t\treturn parse(version, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction compareMainParsed(left, right) {\n\treturn left.major === right.major ? left.minor === right.minor ? left.patch === right.patch ? 0 : left.patch < right.patch ? -1 : 1 : left.minor < right.minor ? -1 : 1 : left.major < right.major ? -1 : 1;\n}\nfunction comparePrereleaseParsed(left, right) {\n\tconst leftPrerelease = left.prerelease;\n\tconst rightPrerelease = right.prerelease;\n\tif (leftPrerelease?.length && !rightPrerelease?.length) return -1;\n\tif (!leftPrerelease?.length && rightPrerelease?.length) return 1;\n\tif (!leftPrerelease?.length && !rightPrerelease?.length) return 0;\n\tfor (let index = 0;; index++) {\n\t\tconst leftIdentifier = leftPrerelease?.[index];\n\t\tconst rightIdentifier = rightPrerelease?.[index];\n\t\tif (leftIdentifier === void 0 && rightIdentifier === void 0) return 0;\n\t\tif (rightIdentifier === void 0) return 1;\n\t\tif (leftIdentifier === void 0) return -1;\n\t\tif (leftIdentifier !== rightIdentifier) return compareIdentifiers(leftIdentifier, rightIdentifier);\n\t}\n}\nfunction compareParsed(left, right) {\n\treturn compareMainParsed(left, right) || comparePrereleaseParsed(left, right);\n}\nfunction compareBuildParsed(left, right) {\n\tconst precedence = compareParsed(left, right);\n\tif (precedence !== 0) return precedence;\n\tfor (let index = 0;; index++) {\n\t\tconst leftIdentifier = left.build?.[index];\n\t\tconst rightIdentifier = right.build?.[index];\n\t\tif (leftIdentifier === void 0 && rightIdentifier === void 0) return 0;\n\t\tif (rightIdentifier === void 0) return 1;\n\t\tif (leftIdentifier === void 0) return -1;\n\t\tif (leftIdentifier !== rightIdentifier) return compareIdentifiers(leftIdentifier, rightIdentifier);\n\t}\n}\nfunction isPrereleasePrefix(prerelease, identifier) {\n\tconst identifiers = identifier.split(\".\");\n\treturn identifiers.length <= prerelease.length && identifiers.every((part, index) => compareIdentifiers(prerelease[index], part) === 0);\n}\nfunction incrementPrerelease(version, identifier, identifierBase) {\n\tconst base = Number(identifierBase) ? 1 : 0;\n\tlet prerelease = version.prerelease;\n\tif (prerelease?.length) {\n\t\tlet foundNumeric = false;\n\t\tfor (let index = prerelease.length - 1; index >= 0; index--) if (typeof prerelease[index] === \"number\") {\n\t\t\tprerelease[index] = Number(prerelease[index]) + 1;\n\t\t\tfoundNumeric = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!foundNumeric) {\n\t\t\tif (identifier === prerelease.join(\".\") && identifierBase === false) throw new Error(\"invalid increment argument: identifier already exists\");\n\t\t\tprerelease.push(base);\n\t\t}\n\t} else {\n\t\tprerelease = [base];\n\t\tversion.prerelease = prerelease;\n\t}\n\tif (!identifier) return;\n\tconst reset = identifierBase === false ? [identifier] : [identifier, base];\n\tif (isPrereleasePrefix(prerelease, identifier)) {\n\t\tconst next = prerelease[identifier.split(\".\").length];\n\t\tif (Number.isNaN(Number(next))) version.prerelease = reset;\n\t} else version.prerelease = reset;\n}\nfunction incrementMutable(version, release, identifier, identifierBase) {\n\tswitch (release) {\n\t\tcase \"premajor\":\n\t\t\tversion.prerelease = void 0;\n\t\t\tversion.patch = 0;\n\t\t\tversion.minor = 0;\n\t\t\tversion.major++;\n\t\t\tincrementPrerelease(version, identifier, identifierBase);\n\t\t\tbreak;\n\t\tcase \"preminor\":\n\t\t\tversion.prerelease = void 0;\n\t\t\tversion.patch = 0;\n\t\t\tversion.minor++;\n\t\t\tincrementPrerelease(version, identifier, identifierBase);\n\t\t\tbreak;\n\t\tcase \"prepatch\":\n\t\t\tversion.prerelease = void 0;\n\t\t\tincrementMutable(version, \"patch\", identifier, identifierBase);\n\t\t\tincrementPrerelease(version, identifier, identifierBase);\n\t\t\tbreak;\n\t\tcase \"prerelease\":\n\t\t\tif (!version.prerelease?.length) incrementMutable(version, \"patch\", identifier, identifierBase);\n\t\t\tincrementPrerelease(version, identifier, identifierBase);\n\t\t\tbreak;\n\t\tcase \"release\":\n\t\t\tif (!version.prerelease?.length) throw new Error(`version ${formatFullVersion(version)} is not a prerelease`);\n\t\t\tversion.prerelease = void 0;\n\t\t\tbreak;\n\t\tcase \"major\":\n\t\t\tif (version.minor !== 0 || version.patch !== 0 || !version.prerelease?.length) version.major++;\n\t\t\tversion.minor = 0;\n\t\t\tversion.patch = 0;\n\t\t\tversion.prerelease = void 0;\n\t\t\tbreak;\n\t\tcase \"minor\":\n\t\t\tif (version.patch !== 0 || !version.prerelease?.length) version.minor++;\n\t\t\tversion.patch = 0;\n\t\t\tversion.prerelease = void 0;\n\t\t\tbreak;\n\t\tcase \"patch\":\n\t\t\tif (!version.prerelease?.length) version.patch++;\n\t\t\tversion.prerelease = void 0;\n\t\t\tbreak;\n\t\tcase \"pre\":\n\t\t\tincrementPrerelease(version, identifier, identifierBase);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`invalid increment argument: ${release}`);\n\t}\n}\nfunction incrementParsedVersion(parsed, release, identifier, identifierBase, loose = false) {\n\tif (release.startsWith(\"pre\")) {\n\t\tif (!identifier && identifierBase === false) throw new Error(\"invalid increment argument: identifier is empty\");\n\t\tif (identifier) {\n\t\t\tconst expression = loose ? PRERELEASE_LOOSE_EXACT : PRERELEASE_EXACT;\n\t\t\tconst match = `-${identifier}`.match(expression);\n\t\t\tif (!match || match[1] !== identifier) throw new Error(`invalid identifier: ${identifier}`);\n\t\t}\n\t}\n\tconst mutable = {\n\t\tbuild: parsed.build ? [...parsed.build] : void 0,\n\t\tmajor: parsed.major,\n\t\tminor: parsed.minor,\n\t\tpatch: parsed.patch,\n\t\tprerelease: parsed.prerelease ? [...parsed.prerelease] : void 0\n\t};\n\tincrementMutable(mutable, release, identifier, identifierBase);\n\treturn formatComparableVersion(mutable);\n}\nfunction coerceParsedVersion(value, options = {}) {\n\tif (typeof value === \"object\") return value;\n\tconst input = typeof value === \"number\" ? String(value) : value;\n\tif (typeof input !== \"string\") return null;\n\tlet match = null;\n\tif (options.rtl) {\n\t\tconst expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, \"g\");\n\t\tlet next;\n\t\twhile ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {\n\t\t\tif (!match || next.index + next[0].length !== match.index + match[0].length) match = next;\n\t\t\texpression.lastIndex = next.index + next[1].length + next[2].length;\n\t\t}\n\t} else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);\n\tif (!match) return null;\n\tconst major = match[2];\n\treturn tryParse(`${major}.${match[3] || \"0\"}.${match[4] || \"0\"}${options.includePrerelease && match[5] ? `-${match[5]}` : \"\"}${options.includePrerelease && match[6] ? `+${match[6]}` : \"\"}`, options);\n}\n//#endregion\n//#region src/internal/comparator.ts\nconst STRICT_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${FULL_PLAIN})$|^$`);\nconst LOOSE_COMPARATOR$1 = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction parseComparator(comparator, options = {}) {\n\tconst normalized = comparator.trim().replaceAll(/\\s+/g, \" \");\n\tconst match = normalized.match(options.loose ? LOOSE_COMPARATOR$1 : STRICT_COMPARATOR);\n\tif (!match) throw new TypeError(`Invalid comparator: ${normalized}`);\n\tconst operator = match[1] === \"=\" ? \"\" : match[1] || \"\";\n\tconst version = match[2] ? parse(match[2], options) : null;\n\treturn {\n\t\toperator,\n\t\toptions,\n\t\tvalue: version ? `${operator}${formatComparableVersion(version)}` : \"\",\n\t\tversion\n\t};\n}\nfunction testParsedComparator(comparator, version) {\n\tif (!comparator.version) return true;\n\tconst comparison = compareParsed(version, comparator.version);\n\tswitch (comparator.operator) {\n\t\tcase \"\": return comparison === 0;\n\t\tcase \">\": return comparison > 0;\n\t\tcase \">=\": return comparison >= 0;\n\t\tcase \"<\": return comparison < 0;\n\t\tcase \"<=\": return comparison <= 0;\n\t}\n}\nfunction testComparatorVersion(comparator, version) {\n\tconst parsed = tryParse(version, comparator.options);\n\treturn parsed ? testParsedComparator(comparator, parsed) : false;\n}\nfunction comparatorAllowsPrerelease(comparator, version) {\n\tconst allowed = comparator.version;\n\treturn allowed !== null && !!allowed.prerelease?.length && allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch;\n}\nfunction testComparatorSet(set, version, options) {\n\tif (set.some((comparator) => !testParsedComparator(comparator, version))) return false;\n\treturn !version.prerelease?.length || !!options.includePrerelease || set.some((comparator) => comparatorAllowsPrerelease(comparator, version));\n}\nfunction parsedComparatorsIntersect(left, right, options = {}) {\n\tif (!left.version || !right.version) return true;\n\tif (left.operator === \"\") return testComparatorSet([right], left.version, options);\n\tif (right.operator === \"\") return testComparatorSet([left], right.version, options);\n\tif (options.includePrerelease && (left.value === \"<0.0.0-0\" || right.value === \"<0.0.0-0\")) return false;\n\tif (!options.includePrerelease && (left.value.startsWith(\"<0.0.0\") || right.value.startsWith(\"<0.0.0\"))) return false;\n\tif (left.operator.startsWith(\">\") && right.operator.startsWith(\">\")) return true;\n\tif (left.operator.startsWith(\"<\") && right.operator.startsWith(\"<\")) return true;\n\tconst comparison = compareParsed(left.version, right.version);\n\tif (comparison === 0 && left.operator.includes(\"=\") && right.operator.includes(\"=\")) return true;\n\tif (comparison < 0 && left.operator.startsWith(\">\") && right.operator.startsWith(\"<\")) return true;\n\treturn comparison > 0 && left.operator.startsWith(\"<\") && right.operator.startsWith(\">\");\n}\n//#endregion\n//#region src/comparator.ts\nfunction normalizeComparator(comparator, options = {}) {\n\treturn parseComparator(comparator, options).value;\n}\nfunction satisfiesComparator(version, comparator, options = {}) {\n\treturn testComparatorVersion(parseComparator(comparator, options), version);\n}\nfunction comparatorsIntersect(left, right, options = {}) {\n\treturn parsedComparatorsIntersect(parseComparator(left, options), parseComparator(right, options), options);\n}\n//#endregion\n//#region src/comparison.ts\nfunction compare(left, right, options = {}) {\n\treturn compareParsed(parse(left, options), parse(right, options));\n}\nfunction compareReversed(left, right, options = {}) {\n\treturn compare(right, left, options);\n}\nfunction compareMain(left, right, options = {}) {\n\treturn compareMainParsed(parse(left, options), parse(right, options));\n}\nfunction comparePrerelease(left, right, options = {}) {\n\treturn comparePrereleaseParsed(parse(left, options), parse(right, options));\n}\nfunction compareBuild(left, right, options = {}) {\n\treturn compareBuildParsed(parse(left, options), parse(right, options));\n}\nfunction compareWithOperator(left, operator, right, options = {}) {\n\tif (operator === \"===\") return left === right;\n\tif (operator === \"!==\") return left !== right;\n\tconst comparison = compare(left, right, options);\n\tswitch (operator) {\n\t\tcase \"\":\n\t\tcase \"=\":\n\t\tcase \"==\": return comparison === 0;\n\t\tcase \"!=\": return comparison !== 0;\n\t\tcase \">\": return comparison > 0;\n\t\tcase \">=\": return comparison >= 0;\n\t\tcase \"<\": return comparison < 0;\n\t\tcase \"<=\": return comparison <= 0;\n\t\tdefault: throw new TypeError(`Invalid operator: ${operator}`);\n\t}\n}\nfunction isEqual(left, right, options = {}) {\n\treturn compare(left, right, options) === 0;\n}\nfunction isNotEqual(left, right, options = {}) {\n\treturn compare(left, right, options) !== 0;\n}\nfunction isGreater(left, right, options = {}) {\n\treturn compare(left, right, options) > 0;\n}\nfunction isGreaterOrEqual(left, right, options = {}) {\n\treturn compare(left, right, options) >= 0;\n}\nfunction isLess(left, right, options = {}) {\n\treturn compare(left, right, options) < 0;\n}\nfunction isLessOrEqual(left, right, options = {}) {\n\treturn compare(left, right, options) <= 0;\n}\nfunction sort(versions, options = {}) {\n\treturn [...versions].sort((left, right) => compareBuild(left, right, options));\n}\nfunction sortReversed(versions, options = {}) {\n\treturn [...versions].sort((left, right) => compareBuild(right, left, options));\n}\n//#endregion\n//#region src/internal/range.ts\nconst BUILD_STRIP = new RegExp(BUILD, \"g\");\nconst BUILD_SAFE = safeRegex(BUILD);\nconst STRICT_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN})\\s+-\\s+(${XRANGE_PLAIN})\\s*$`);\nconst LOOSE_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN_LOOSE})\\s+-\\s+(${XRANGE_PLAIN_LOOSE})\\s*$`);\nconst COMPARATOR_TRIM = safeRegex(String.raw`(\\s*)${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN}|${XRANGE_PLAIN})`, \"g\");\nconst TILDE_TRIM = safeRegex(String.raw`(\\s*)${LONE_TILDE}\\s+`, \"g\");\nconst CARET_TRIM = safeRegex(String.raw`(\\s*)${LONE_CARET}\\s+`, \"g\");\nconst STRICT_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN}$`);\nconst LOOSE_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN}$`);\nconst LOOSE_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN}$`);\nconst LOOSE_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN_LOOSE}$`);\nconst STAR = safeRegex(String.raw`(<|>)?=?\\s*\\*`);\nconst GTE_ZERO = /^\\s*>=\\s*0\\.0\\.0\\s*$/;\nconst GTE_ZERO_PRERELEASE = /^\\s*>=\\s*0\\.0\\.0-0\\s*$/;\nconst LOOSE_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction isWildcard(value) {\n\treturn !value || String(value).toLowerCase() === \"x\" || String(value) === \"*\";\n}\nfunction hasInvalidWildcardOrder(major, minor, patch) {\n\treturn isWildcard(major) && !isWildcard(minor) || isWildcard(minor) && Boolean(patch) && !isWildcard(patch);\n}\nfunction replaceTilde(comparator, options) {\n\tconst expression = options.loose ? LOOSE_TILDE : STRICT_TILDE;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn prerelease ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;\n\t});\n}\nfunction replaceTildes(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceTilde(part, options)).join(\" \");\n}\nfunction replaceCaret(comparator, options) {\n\tconst expression = options.loose ? LOOSE_CARET : STRICT_CARET;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return major === \"0\" ? `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (prerelease) return major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch}-${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\treturn major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;\n\t});\n}\nfunction replaceCarets(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceCaret(part, options)).join(\" \");\n}\nfunction replaceXRange(comparator, options) {\n\tconst expression = options.loose ? LOOSE_XRANGE : STRICT_XRANGE;\n\treturn comparator.trim().replace(expression, (match, rawOperator, rawMajor, rawMinor, rawPatch) => {\n\t\tlet operator = rawOperator;\n\t\tlet major = rawMajor;\n\t\tlet minor = rawMinor;\n\t\tlet patch = rawPatch;\n\t\tif (hasInvalidWildcardOrder(String(major), minor === void 0 ? void 0 : String(minor), patch === void 0 ? void 0 : String(patch))) return comparator;\n\t\tconst wildcardMajor = isWildcard(major);\n\t\tconst wildcardMinor = wildcardMajor || isWildcard(minor);\n\t\tconst wildcardPatch = wildcardMinor || isWildcard(patch);\n\t\tif (operator === \"=\" && wildcardPatch) operator = \"\";\n\t\tif (wildcardMajor) return operator === \">\" || operator === \"<\" ? \"<0.0.0-0\" : \"*\";\n\t\tlet prerelease = options.includePrerelease ? \"-0\" : \"\";\n\t\tif (operator && wildcardPatch) {\n\t\t\tif (wildcardMinor) minor = 0;\n\t\t\tpatch = 0;\n\t\t\tif (operator === \">\") {\n\t\t\t\toperator = \">=\";\n\t\t\t\tif (wildcardMinor) {\n\t\t\t\t\tmajor = Number(major) + 1;\n\t\t\t\t\tminor = 0;\n\t\t\t\t} else minor = Number(minor) + 1;\n\t\t\t} else if (operator === \"<=\") {\n\t\t\t\toperator = \"<\";\n\t\t\t\tif (wildcardMinor) major = Number(major) + 1;\n\t\t\t\telse minor = Number(minor) + 1;\n\t\t\t}\n\t\t\tif (operator === \"<\") prerelease = \"-0\";\n\t\t\treturn `${operator}${major}.${minor}.${patch}${prerelease}`;\n\t\t}\n\t\tif (wildcardMinor) return `>=${major}.0.0${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (wildcardPatch) return `>=${major}.${minor}.0${prerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn match;\n\t});\n}\nfunction replaceXRanges(comparator, options) {\n\treturn comparator.split(/\\s+/).map((part) => replaceXRange(part, options)).join(\" \");\n}\nfunction replaceHyphenRange(range, options) {\n\tconst expression = options.loose ? LOOSE_HYPHEN : STRICT_HYPHEN;\n\treturn range.replace(expression, (_match, rawFrom, fromMajor, fromMinor, fromPatch, fromPrerelease, _fromBuild, rawTo, toMajor, toMinor, toPatch, toPrerelease) => {\n\t\tlet from = rawFrom;\n\t\tlet to = rawTo;\n\t\tif (isWildcard(fromMajor)) from = \"\";\n\t\telse if (isWildcard(fromMinor)) from = `>=${fromMajor}.0.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (isWildcard(fromPatch)) from = `>=${fromMajor}.${fromMinor}.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (fromPrerelease) from = `>=${from}`;\n\t\telse from = `>=${from}${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\tif (isWildcard(toMajor)) to = \"\";\n\t\telse if (isWildcard(toMinor)) to = `<${Number(toMajor) + 1}.0.0-0`;\n\t\telse if (isWildcard(toPatch)) to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;\n\t\telse if (toPrerelease) to = `<=${toMajor}.${toMinor}.${toPatch}-${toPrerelease}`;\n\t\telse if (options.includePrerelease) to = `<${toMajor}.${toMinor}.${Number(toPatch) + 1}-0`;\n\t\telse to = `<=${to}`;\n\t\treturn `${from} ${to}`.trim();\n\t});\n}\nfunction expandComparator(comparator, options) {\n\treturn replaceXRanges(replaceTildes(replaceCarets(comparator.replace(BUILD_SAFE, \"\"), options), options), options).trim().replace(STAR, \"\");\n}\nfunction parseSimpleRange(input, options) {\n\tlet parts = replaceHyphenRange(input.replace(BUILD_STRIP, \"\"), options).replace(COMPARATOR_TRIM, \"$1$2$3\").replace(TILDE_TRIM, \"$1~\").replace(CARET_TRIM, \"$1^\").split(\" \").map((part) => expandComparator(part, options)).join(\" \").split(/\\s+/).map((part) => part.trim().replace(options.includePrerelease ? GTE_ZERO_PRERELEASE : GTE_ZERO, \"\"));\n\tif (options.loose) parts = parts.filter((part) => LOOSE_COMPARATOR.test(part));\n\tconst unique = /* @__PURE__ */ new Map();\n\tfor (const comparator of parts.map((part) => parseComparator(part, options))) {\n\t\tif (comparator.value === \"<0.0.0-0\") return [comparator];\n\t\tunique.set(comparator.value, comparator);\n\t}\n\tif (unique.size > 1) unique.delete(\"\");\n\treturn [...unique.values()];\n}\nfunction parseRange(range, options = {}) {\n\tif (typeof range !== \"string\") return range;\n\tconst parsedOptions = { ...options };\n\tconst raw = range.trim().replaceAll(/\\s+/g, \" \");\n\tlet sets = raw.split(\"||\").map((part) => parseSimpleRange(part.trim(), parsedOptions)).filter((set) => set.length);\n\tif (!sets.length) throw new TypeError(`Range contains no valid comparator sets: ${raw}`);\n\tif (sets.length > 1) {\n\t\tconst first = sets[0];\n\t\tsets = sets.filter((set) => set[0]?.value !== \"<0.0.0-0\");\n\t\tif (!sets.length) sets = [first];\n\t\telse if (sets.length > 1) {\n\t\t\tconst any = sets.find((set) => set.length === 1 && set[0]?.value === \"\");\n\t\t\tif (any) sets = [any];\n\t\t}\n\t}\n\treturn {\n\t\tnormalized: sets.map((set) => set.map((comparator) => comparator.value).join(\" \")).join(\"||\"),\n\t\toptions: parsedOptions,\n\t\traw,\n\t\tsets\n\t};\n}\nfunction tryParseRange(range, options = {}) {\n\ttry {\n\t\treturn parseRange(range, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction testParsedRange(range, version) {\n\treturn range.sets.some((set) => testComparatorSet(set, version, range.options));\n}\nfunction testRangeVersion(range, version) {\n\tconst parsed = tryParse(version, range.options);\n\treturn parsed ? testParsedRange(range, parsed) : false;\n}\nfunction exactVersion(set) {\n\tfor (const comparator of set) if (comparator.operator === \"\" && comparator.version) return comparator.version;\n\treturn null;\n}\nfunction isSatisfiable(comparators, options) {\n\tconst exact = exactVersion(comparators);\n\tif (exact) return testComparatorSet(comparators, exact, options);\n\tconst remaining = [...comparators];\n\tlet current = remaining.pop();\n\twhile (current && remaining.length) {\n\t\tif (remaining.some((other) => !parsedComparatorsIntersect(current, other, options))) return false;\n\t\tcurrent = remaining.pop();\n\t}\n\treturn true;\n}\nfunction setsIntersect(left, right, options) {\n\tconst leftExact = exactVersion(left);\n\tif (leftExact) return testComparatorSet(right, leftExact, options);\n\tconst rightExact = exactVersion(right);\n\tif (rightExact) return testComparatorSet(left, rightExact, options);\n\treturn left.every((leftComparator) => right.every((rightComparator) => parsedComparatorsIntersect(leftComparator, rightComparator, options)));\n}\nfunction parsedRangesIntersect(left, right, options = {}) {\n\treturn left.sets.some((leftSet) => isSatisfiable(leftSet, options) && right.sets.some((rightSet) => isSatisfiable(rightSet, options) && setsIntersect(leftSet, rightSet, options)));\n}\n//#endregion\n//#region src/range.ts\nfunction isValidRange(range, options = {}) {\n\treturn tryParseRange(range, options) !== null;\n}\nfunction normalizeRange(range, options = {}) {\n\tconst parsed = tryParseRange(range, options);\n\treturn parsed ? parsed.normalized || \"*\" : null;\n}\nfunction satisfies(version, range, options = {}) {\n\tconst parsed = tryParseRange(range, options);\n\treturn parsed ? testRangeVersion(parsed, version) : false;\n}\nfunction rangeToComparators(range, options = {}) {\n\treturn parseRange(range, options).sets.map((set) => set.map((comparator) => comparator.value).join(\" \").trim().split(\" \"));\n}\nfunction findMaxSatisfying(versions, range, options = {}) {\n\tconst parsedRange = tryParseRange(range, options);\n\tif (!parsedRange) return null;\n\tlet maximum = null;\n\tlet maximumParsed = null;\n\tfor (const version of versions) {\n\t\tconst parsedVersion = tryParse(version, parsedRange.options);\n\t\tif (!parsedVersion || !testParsedRange(parsedRange, parsedVersion)) continue;\n\t\tif (!maximumParsed || compareParsed(maximumParsed, parsedVersion) < 0) {\n\t\t\tmaximum = version;\n\t\t\tmaximumParsed = parsedVersion;\n\t\t}\n\t}\n\treturn maximum;\n}\nfunction findMinSatisfying(versions, range, options = {}) {\n\tconst parsedRange = tryParseRange(range, options);\n\tif (!parsedRange) return null;\n\tlet minimum = null;\n\tlet minimumParsed = null;\n\tfor (const version of versions) {\n\t\tconst parsedVersion = tryParse(version, parsedRange.options);\n\t\tif (!parsedVersion || !testParsedRange(parsedRange, parsedVersion)) continue;\n\t\tif (!minimumParsed || compareParsed(minimumParsed, parsedVersion) > 0) {\n\t\t\tminimum = version;\n\t\t\tminimumParsed = parsedVersion;\n\t\t}\n\t}\n\treturn minimum;\n}\nfunction nextVersionAfter(version) {\n\tconst { prerelease } = version;\n\treturn parse(formatComparableVersion(prerelease?.length ? {\n\t\tmajor: version.major,\n\t\tminor: version.minor,\n\t\tpatch: version.patch,\n\t\tprerelease: [...prerelease, 0]\n\t} : {\n\t\tmajor: version.major,\n\t\tminor: version.minor,\n\t\tpatch: version.patch + 1\n\t}));\n}\nfunction findMinimumForRange(range, options = {}) {\n\tconst parsedRange = parseRange(range, options);\n\tconst zero = parse(\"0.0.0\");\n\tif (testParsedRange(parsedRange, zero)) return formatComparableVersion(zero);\n\tconst zeroPrerelease = parse(\"0.0.0-0\");\n\tif (testParsedRange(parsedRange, zeroPrerelease)) return formatComparableVersion(zeroPrerelease);\n\tlet minimum = null;\n\tfor (const set of parsedRange.sets) {\n\t\tlet setMinimum = null;\n\t\tfor (const comparator of set) {\n\t\t\tif (!comparator.version) continue;\n\t\t\tconst candidate = comparator.operator === \">\" ? nextVersionAfter(comparator.version) : comparator.operator === \"\" || comparator.operator === \">=\" ? comparator.version : null;\n\t\t\tif (candidate && (!setMinimum || compareParsed(candidate, setMinimum) > 0)) setMinimum = candidate;\n\t\t}\n\t\tif (setMinimum && (!minimum || compareParsed(minimum, setMinimum) > 0)) minimum = setMinimum;\n\t}\n\treturn minimum && testParsedRange(parsedRange, minimum) ? formatComparableVersion(minimum) : null;\n}\nfunction compareInDirection(left, right, direction) {\n\tconst comparison = compareParsed(left, right);\n\treturn direction === \">\" ? comparison > 0 : comparison < 0;\n}\nfunction compareOppositeOrEqual(left, right, direction) {\n\tconst comparison = compareParsed(left, right);\n\treturn direction === \">\" ? comparison <= 0 : comparison >= 0;\n}\nfunction compareOpposite(left, right, direction) {\n\tconst comparison = compareParsed(left, right);\n\treturn direction === \">\" ? comparison < 0 : comparison > 0;\n}\nfunction isOutsideRange(version, range, direction, options = {}) {\n\tif (direction !== \">\" && direction !== \"<\") throw new TypeError(\"Must provide a direction of \\\"<\\\" or \\\">\\\"\");\n\tconst parsedRange = parseRange(range, options);\n\tconst parsedVersion = parse(version, parsedRange.options);\n\tif (testParsedRange(parsedRange, parsedVersion)) return false;\n\tconst inclusiveDirection = direction === \">\" ? \">=\" : \"<=\";\n\tfor (const set of parsedRange.sets) {\n\t\tconst concrete = set.map((comparator) => comparator.version ? comparator : parseComparator(\">=0.0.0\"));\n\t\tlet high = concrete[0];\n\t\tlet low = concrete[0];\n\t\tfor (const comparator of concrete) if (compareInDirection(comparator.version, high.version, direction)) high = comparator;\n\t\telse if (compareOpposite(comparator.version, low.version, direction)) low = comparator;\n\t\tif (high.operator === direction || high.operator === inclusiveDirection) return false;\n\t\tif ((!low.operator || low.operator === direction) && compareOppositeOrEqual(parsedVersion, low.version, direction)) return false;\n\t\tif (low.operator === inclusiveDirection && compareOpposite(parsedVersion, low.version, direction)) return false;\n\t}\n\treturn true;\n}\nfunction isGreaterThanRange(version, range, options = {}) {\n\treturn isOutsideRange(version, range, \">\", options);\n}\nfunction isLessThanRange(version, range, options = {}) {\n\treturn isOutsideRange(version, range, \"<\", options);\n}\nfunction rangesIntersect(left, right, options = {}) {\n\tconst parsedLeft = parseRange(left, options);\n\tconst parsedRight = parseRange(right, options);\n\treturn parsedRangesIntersect(parsedLeft, parsedRight, {\n\t\t...parsedLeft.options,\n\t\t...parsedRight.options,\n\t\t...options\n\t});\n}\nfunction simplifyRange(versions, range, options = {}) {\n\tconst parsedRange = parseRange(range, options);\n\tconst sorted = sort(versions, parsedRange.options);\n\tconst sets = [];\n\tlet first = null;\n\tlet previous = null;\n\tfor (const version of sorted) if (testRangeVersion(parsedRange, version)) {\n\t\tprevious = version;\n\t\tfirst ??= version;\n\t} else if (previous) {\n\t\tsets.push([first, previous]);\n\t\tfirst = null;\n\t\tprevious = null;\n\t}\n\tif (first) sets.push([first, null]);\n\tconst simplified = sets.map(([minimum, maximum]) => {\n\t\tconst minimumValue = formatComparableVersion(parse(minimum, parsedRange.options));\n\t\tconst maximumValue = maximum ? formatComparableVersion(parse(maximum, parsedRange.options)) : null;\n\t\tif (minimumValue === maximumValue) return minimumValue;\n\t\tif (!maximum && minimum === sorted[0]) return \"*\";\n\t\tif (!maximumValue) return `>=${minimumValue}`;\n\t\tif (minimum === sorted[0]) return `<=${maximumValue}`;\n\t\treturn `${minimumValue} - ${maximumValue}`;\n\t}).join(\" || \");\n\tconst original = typeof range === \"string\" ? range : range.raw;\n\treturn simplified.length < original.length ? simplified : original;\n}\nfunction higherLowerBound(left, right) {\n\tif (!left) return right;\n\tconst comparison = compareParsed(left.version, right.version);\n\treturn comparison > 0 ? left : comparison < 0 || right.operator === \">\" && left.operator === \">=\" ? right : left;\n}\nfunction lowerUpperBound(left, right) {\n\tif (!left) return right;\n\tconst comparison = compareParsed(left.version, right.version);\n\treturn comparison < 0 ? left : comparison > 0 || right.operator === \"<\" && left.operator === \"<=\" ? right : left;\n}\nfunction simpleRangeSubset(rawSubset, rawSuperset, options) {\n\tlet subset = rawSubset;\n\tlet superset = rawSuperset;\n\tconst subsetAny = subset.length === 1 && !subset[0].version;\n\tconst supersetAny = superset.length === 1 && !superset[0].version;\n\tif (subsetAny) {\n\t\tif (supersetAny) return true;\n\t\tsubset = [parseComparator(options.includePrerelease ? \">=0.0.0-0\" : \">=0.0.0\")];\n\t}\n\tif (supersetAny) {\n\t\tif (options.includePrerelease) return true;\n\t\tsuperset = [parseComparator(\">=0.0.0\")];\n\t}\n\tconst equal = /* @__PURE__ */ new Map();\n\tlet lower;\n\tlet upper;\n\tfor (const comparator of subset) if (comparator.operator === \">\" || comparator.operator === \">=\") lower = higherLowerBound(lower, comparator);\n\telse if (comparator.operator === \"<\" || comparator.operator === \"<=\") upper = lowerUpperBound(upper, comparator);\n\telse if (comparator.version) equal.set(formatComparableVersion(comparator.version), comparator.version);\n\tif (equal.size > 1) return null;\n\tlet boundsComparison;\n\tif (lower && upper) {\n\t\tboundsComparison = compareParsed(lower.version, upper.version);\n\t\tif (boundsComparison > 0) return null;\n\t\tif (boundsComparison === 0 && (lower.operator !== \">=\" || upper.operator !== \"<=\")) return null;\n\t}\n\tfor (const version of equal.values()) {\n\t\tif (lower && !testParsedComparator(lower, version)) return null;\n\t\tif (upper && !testParsedComparator(upper, version)) return null;\n\t\treturn testComparatorSet(superset, version, options);\n\t}\n\tlet needsLowerPrerelease = lower && !options.includePrerelease && lower.version.prerelease?.length ? lower.version : null;\n\tlet needsUpperPrerelease = upper && !options.includePrerelease && upper.version.prerelease?.length ? upper.version : null;\n\tconst upperPrerelease = needsUpperPrerelease?.prerelease;\n\tif (upperPrerelease?.length === 1 && upper?.operator === \"<\" && upperPrerelease[0] === 0) needsUpperPrerelease = null;\n\tlet hasSupersetLower = false;\n\tlet hasSupersetUpper = false;\n\tfor (const comparator of superset) {\n\t\thasSupersetLower ||= comparator.operator === \">\" || comparator.operator === \">=\";\n\t\thasSupersetUpper ||= comparator.operator === \"<\" || comparator.operator === \"<=\";\n\t\tif (lower) {\n\t\t\tif (needsLowerPrerelease && comparatorAllowsPrerelease(comparator, needsLowerPrerelease)) needsLowerPrerelease = null;\n\t\t\tif (comparator.operator === \">\" || comparator.operator === \">=\") {\n\t\t\t\tconst higher = higherLowerBound(lower, comparator);\n\t\t\t\tif (higher === comparator && higher !== lower) return false;\n\t\t\t} else if (lower.operator === \">=\" && !testParsedComparator(comparator, lower.version)) return false;\n\t\t}\n\t\tif (upper) {\n\t\t\tif (needsUpperPrerelease && comparatorAllowsPrerelease(comparator, needsUpperPrerelease)) needsUpperPrerelease = null;\n\t\t\tif (comparator.operator === \"<\" || comparator.operator === \"<=\") {\n\t\t\t\tconst lowerBound = lowerUpperBound(upper, comparator);\n\t\t\t\tif (lowerBound === comparator && lowerBound !== upper) return false;\n\t\t\t} else if (upper.operator === \"<=\" && !testParsedComparator(comparator, upper.version)) return false;\n\t\t}\n\t\tif (comparator.operator === \"\" && (lower || upper) && boundsComparison !== 0) return false;\n\t}\n\tif (lower && hasSupersetUpper && !upper && boundsComparison !== 0) return false;\n\tif (upper && hasSupersetLower && !lower && boundsComparison !== 0) return false;\n\treturn !needsLowerPrerelease && !needsUpperPrerelease;\n}\nfunction isRangeSubset(subset, superset, options = {}) {\n\tif (subset === superset) return true;\n\tconst parsedSubset = parseRange(subset, options);\n\tconst parsedSuperset = parseRange(superset, options);\n\tconst effectiveOptions = {\n\t\t...parsedSubset.options,\n\t\t...parsedSuperset.options,\n\t\t...options\n\t};\n\tlet sawNonNull = false;\n\tfor (const subsetSet of parsedSubset.sets) {\n\t\tlet matched = false;\n\t\tfor (const supersetSet of parsedSuperset.sets) {\n\t\t\tconst result = simpleRangeSubset(subsetSet, supersetSet, effectiveOptions);\n\t\t\tsawNonNull ||= result !== null;\n\t\t\tif (result) {\n\t\t\t\tmatched = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!matched && sawNonNull) return false;\n\t}\n\treturn true;\n}\n//#endregion\n//#region src/version.ts\nfunction isValid(version, options = {}) {\n\treturn tryParse(version, options) !== null;\n}\nfunction isPrerelease(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\tif (!parsed) return null;\n\treturn !!parsed.prerelease?.length;\n}\nfunction isStable(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\tif (!parsed) return null;\n\treturn !parsed.prerelease?.length;\n}\nfunction normalizeFull(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\treturn parsed ? formatFullVersion(parsed) : null;\n}\nfunction normalize(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\treturn parsed ? formatComparableVersion(parsed) : null;\n}\nfunction clean(version, options = {}) {\n\tif (typeof version !== \"string\") return normalize(version, options);\n\treturn normalize(version.trim().replace(/^[=v]+/, \"\"), options);\n}\nfunction coerce(value, options = {}) {\n\tconst parsed = coerceParsedVersion(value, options);\n\treturn parsed ? formatFullVersion(parsed) : null;\n}\nfunction increment(version, release, options = {}) {\n\ttry {\n\t\treturn incrementParsedVersion(parse(version, options), release, options.identifier, options.identifierBase, options.loose);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction truncate(version, truncation, options = {}) {\n\tif (!TRUNCATION_TYPES.includes(truncation)) return null;\n\tconst parsed = tryParse(version, options);\n\tif (!parsed) return null;\n\tif (truncation.startsWith(\"pre\")) return formatComparableVersion(parsed);\n\treturn formatComparableVersion({\n\t\tmajor: parsed.major,\n\t\tminor: truncation === \"major\" ? 0 : parsed.minor,\n\t\tpatch: truncation === \"major\" || truncation === \"minor\" ? 0 : parsed.patch\n\t});\n}\nfunction difference(left, right) {\n\tconst leftVersion = parse(left);\n\tconst rightVersion = parse(right);\n\tconst comparison = compareParsed(leftVersion, rightVersion);\n\tif (comparison === 0) return null;\n\tconst high = comparison > 0 ? leftVersion : rightVersion;\n\tconst low = comparison > 0 ? rightVersion : leftVersion;\n\tconst highHasPrerelease = high.prerelease?.length;\n\tif (low.prerelease?.length && !highHasPrerelease) {\n\t\tif (low.patch === 0 && low.minor === 0) return \"major\";\n\t\tif (compareMainParsed(low, high) === 0) return low.minor !== 0 && low.patch === 0 ? \"minor\" : \"patch\";\n\t}\n\tconst prefix = highHasPrerelease ? \"pre\" : \"\";\n\tif (leftVersion.major !== rightVersion.major) return `${prefix}major`;\n\tif (leftVersion.minor !== rightVersion.minor) return `${prefix}minor`;\n\tif (leftVersion.patch !== rightVersion.patch) return `${prefix}patch`;\n\treturn \"prerelease\";\n}\nfunction getMajor(version, options = {}) {\n\treturn parse(version, options).major;\n}\nfunction getMinor(version, options = {}) {\n\treturn parse(version, options).minor;\n}\nfunction getPatch(version, options = {}) {\n\treturn parse(version, options).patch;\n}\nfunction getPrerelease(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\treturn parsed ? [...parsed.prerelease || []] : null;\n}\nfunction getBuild(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\treturn parsed ? [...parsed.build || []] : null;\n}\n//#endregion\nexport { INCREMENT_TYPES, SEMVER_SPEC_VERSION, TRUNCATION_TYPES, clean, coerce, comparatorsIntersect, compare, compareBuild, compareIdentifiers, compareIdentifiersReversed, compareMain, comparePrerelease, compareReversed, compareWithOperator, difference, findMaxSatisfying, findMinSatisfying, findMinimumForRange, getBuild, getMajor, getMinor, getPatch, getPrerelease, increment, isEqual, isGreater, isGreaterOrEqual, isGreaterThanRange, isLess, isLessOrEqual, isLessThanRange, isNotEqual, isOutsideRange, isPrerelease, isRangeSubset, isStable, isValid, isValidRange, normalize, normalizeComparator, normalizeFull, normalizeRange, parse, parseRange, rangeToComparators, rangesIntersect, satisfies, satisfiesComparator, simplifyRange, sort, sortReversed, truncate, tryParse, tryParseRange };\n", "import { coerce, satisfies } from \"verkit\";\n//#region src/semverSatisfies.ts\nconst semverSatisfies = (targetAppVersion, currentVersion) => {\n\tconst currentCoerce = coerce(currentVersion);\n\tif (!currentCoerce) return false;\n\treturn satisfies(currentCoerce, targetAppVersion);\n};\n//#endregion\nexport { semverSatisfies };\n", "import { semverSatisfies } from \"./semverSatisfies.mjs\";\n//#region src/filterCompatibleAppVersions.ts\n/**\n* Filters target app versions that are compatible with the current app version.\n* Returns only versions that are compatible with the current version according to semver rules.\n*\n* @param targetAppVersionList - List of target app versions to filter\n* @param currentVersion - Current app version\n* @returns Array of target app versions compatible with the current version\n*/\nconst filterCompatibleAppVersions = (targetAppVersionList, currentVersion) => {\n\treturn targetAppVersionList.filter((version) => semverSatisfies(version, currentVersion)).sort((a, b) => b.localeCompare(a));\n};\n//#endregion\nexport { filterCompatibleAppVersions };\n", "import { BundleUnitOfWork } from \"./bundleUnitOfWork.mjs\";\nimport { getRequestBundleUnitOfWork } from \"./bundleUnitOfWorkStore.mjs\";\n//#region src/requestUpdateBundleState.ts\nconst toBundleSeeds = (seeds) => seeds.filter((seed) => !!seed);\nconst seedRequestUpdateBundles = (context, seeds) => {\n\tconst unitOfWork = getRequestBundleUnitOfWork(context);\n\tif (!unitOfWork) return;\n\tconst nextSeeds = toBundleSeeds(seeds);\n\tif (nextSeeds.length === 0) return;\n\tunitOfWork.seed(nextSeeds);\n};\nconst getRequestUpdateBundleSeeds = (context) => {\n\treturn getRequestBundleUnitOfWork(context)?.seededBundles() ?? [];\n};\nconst createRequestUpdateBundleResolver = (context) => {\n\tconst unitOfWork = getRequestBundleUnitOfWork(context) ?? new BundleUnitOfWork();\n\treturn {\n\t\thasSeededBundles: () => unitOfWork.hasSeeds(),\n\t\tpeek: (bundleId) => unitOfWork.peek(bundleId),\n\t\tgetById: (bundleId, loadBundleById) => unitOfWork.getById(bundleId, loadBundleById)\n\t};\n};\n//#endregion\nexport { createRequestUpdateBundleResolver, getRequestUpdateBundleSeeds, seedRequestUpdateBundles };\n", "//#region src/bundleArtifacts.ts\nconst stripBundleArtifactMetadata = (metadata) => metadata;\nconst getManifestStorageUri = (bundle) => bundle.manifestStorageUri ?? null;\nconst getManifestFileHash = (bundle) => bundle.manifestFileHash ?? null;\nconst getAssetBaseStorageUri = (bundle) => bundle.assetBaseStorageUri ?? null;\nconst isBundlePatchArtifact = (value) => {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst candidate = value;\n\treturn typeof candidate.baseBundleId === \"string\" && typeof candidate.baseFileHash === \"string\" && typeof candidate.patchFileHash === \"string\" && typeof candidate.patchStorageUri === \"string\";\n};\nconst readBundlePatchArray = (patches) => {\n\tif (!Array.isArray(patches)) return [];\n\treturn patches.filter(isBundlePatchArtifact);\n};\nconst getBundlePatches = (bundle) => {\n\tconst patches = readBundlePatchArray(bundle.patches);\n\tconst seenBaseBundleIds = /* @__PURE__ */ new Set();\n\treturn patches.filter((patch) => {\n\t\tif (seenBaseBundleIds.has(patch.baseBundleId)) return false;\n\t\tseenBaseBundleIds.add(patch.baseBundleId);\n\t\treturn true;\n\t});\n};\nconst getBundlePatch = (bundle, baseBundleId) => {\n\treturn getBundlePatches(bundle).find((patch) => patch.baseBundleId === baseBundleId) ?? null;\n};\nconst getPrimaryPatch = (bundle) => {\n\treturn getBundlePatches(bundle)[0] ?? null;\n};\nconst getPatchBaseBundleId = (bundle) => bundle.patchBaseBundleId ?? getPrimaryPatch(bundle)?.baseBundleId ?? null;\nconst getPatchBaseFileHash = (bundle) => bundle.patchBaseFileHash ?? getPrimaryPatch(bundle)?.baseFileHash ?? null;\nconst getPatchFileHash = (bundle) => bundle.patchFileHash ?? getPrimaryPatch(bundle)?.patchFileHash ?? null;\nconst getPatchStorageUri = (bundle) => bundle.patchStorageUri ?? getPrimaryPatch(bundle)?.patchStorageUri ?? null;\n//#endregion\n//#region src/rollout.ts\nconst NUMERIC_COHORT_SIZE = 1e3;\nconst DEFAULT_ROLLOUT_COHORT_COUNT = NUMERIC_COHORT_SIZE;\nconst MAX_COHORT_LENGTH = 64;\nconst INVALID_COHORT_ERROR_MESSAGE = `Invalid cohort. Use 1-1000 or a lowercase slug without spaces, up to 64 characters.`;\nconst CUSTOM_COHORT_PATTERN = /^[a-z0-9-]+$/;\nfunction parseNumericCohortValue(cohort) {\n\tif (!/^\\d+$/.test(cohort)) return null;\n\tconst parsed = Number.parseInt(cohort, 10);\n\tif (Number.isNaN(parsed) || parsed < 1 || parsed > 1e3) return null;\n\treturn parsed;\n}\nfunction positiveMod(value, modulus) {\n\treturn (value % modulus + modulus) % modulus;\n}\nfunction hashString(value) {\n\tlet hash = 0;\n\tfor (let i = 0; i < value.length; i++) {\n\t\tconst char = value.charCodeAt(i);\n\t\thash = (hash << 5) - hash + char;\n\t\thash |= 0;\n\t}\n\treturn hash;\n}\nfunction gcd(a, b) {\n\tlet x = Math.abs(a);\n\tlet y = Math.abs(b);\n\twhile (y !== 0) {\n\t\tconst next = x % y;\n\t\tx = y;\n\t\ty = next;\n\t}\n\treturn x;\n}\nfunction modularInverse(value, modulus) {\n\tlet t = 0;\n\tlet newT = 1;\n\tlet r = modulus;\n\tlet newR = positiveMod(value, modulus);\n\twhile (newR !== 0) {\n\t\tconst quotient = Math.floor(r / newR);\n\t\t[t, newT] = [newT, t - quotient * newT];\n\t\t[r, newR] = [newR, r - quotient * newR];\n\t}\n\tif (r > 1) throw new Error(`No modular inverse for ${value} mod ${modulus}`);\n\treturn positiveMod(t, modulus);\n}\nfunction getRolloutShuffleParameters(bundleId) {\n\tlet multiplier = positiveMod(hashString(`${bundleId}:multiplier`), 997);\n\tif (multiplier === 0) multiplier = 1;\n\twhile (gcd(multiplier, NUMERIC_COHORT_SIZE) !== 1) {\n\t\tmultiplier = positiveMod(multiplier + 1, NUMERIC_COHORT_SIZE);\n\t\tif (multiplier === 0) multiplier = 1;\n\t}\n\tconst offset = positiveMod(hashString(`${bundleId}:offset`), NUMERIC_COHORT_SIZE);\n\treturn {\n\t\tmultiplier,\n\t\toffset,\n\t\tinverseMultiplier: modularInverse(multiplier, NUMERIC_COHORT_SIZE)\n\t};\n}\nfunction normalizeRolloutCohortCount(rolloutCohortCount) {\n\tif (rolloutCohortCount === null || rolloutCohortCount === void 0) return DEFAULT_ROLLOUT_COHORT_COUNT;\n\tif (rolloutCohortCount <= 0) return 0;\n\tif (rolloutCohortCount >= 1e3) return NUMERIC_COHORT_SIZE;\n\treturn Math.floor(rolloutCohortCount);\n}\nfunction normalizeCohortValue(cohort) {\n\tconst normalized = cohort.trim().toLowerCase();\n\tconst numericCohort = parseNumericCohortValue(normalized);\n\tif (numericCohort !== null) return String(numericCohort);\n\treturn normalized;\n}\nfunction getNumericCohortValue(cohort) {\n\treturn parseNumericCohortValue(normalizeCohortValue(cohort));\n}\nfunction isNumericCohort(cohort) {\n\treturn getNumericCohortValue(cohort) !== null;\n}\nfunction isCustomCohort(cohort) {\n\tconst normalized = normalizeCohortValue(cohort);\n\treturn normalized.length > 0 && normalized.length <= 64 && !/^\\d+$/.test(normalized) && CUSTOM_COHORT_PATTERN.test(normalized);\n}\nfunction isValidCohort(cohort) {\n\tconst normalized = normalizeCohortValue(cohort);\n\treturn isNumericCohort(normalized) || isCustomCohort(normalized);\n}\nfunction getDefaultNumericCohort(identifier) {\n\tconst cohortValue = positiveMod(hashString(identifier), NUMERIC_COHORT_SIZE) + 1;\n\treturn String(cohortValue);\n}\nfunction getNumericCohortRolloutPosition(bundleId, cohortValue) {\n\tif (cohortValue < 1 || cohortValue > 1e3) throw new Error(`Invalid numeric cohort: ${cohortValue}`);\n\tconst { offset, inverseMultiplier } = getRolloutShuffleParameters(bundleId);\n\treturn positiveMod(inverseMultiplier * (cohortValue - 1 - offset), NUMERIC_COHORT_SIZE);\n}\nfunction getRolledOutNumericCohorts(bundleId, rolloutCohortCount) {\n\tconst normalizedRolloutCount = normalizeRolloutCohortCount(rolloutCohortCount);\n\tif (normalizedRolloutCount <= 0) return [];\n\treturn Array.from({ length: NUMERIC_COHORT_SIZE }, (_, index) => index + 1).filter((cohortValue) => {\n\t\tif (normalizedRolloutCount >= 1e3) return true;\n\t\treturn getNumericCohortRolloutPosition(bundleId, cohortValue) < normalizedRolloutCount;\n\t});\n}\nfunction isCohortEligibleForUpdate(bundleId, cohort, rolloutCohortCount, targetCohorts) {\n\tconst normalizedCohort = cohort === null || cohort === void 0 ? void 0 : normalizeCohortValue(cohort);\n\tconst normalizedTargetCohorts = targetCohorts?.map((targetCohort) => normalizeCohortValue(targetCohort)) ?? [];\n\tif (normalizedCohort !== void 0 && normalizedTargetCohorts.includes(normalizedCohort)) return true;\n\tconst normalizedRolloutCount = normalizeRolloutCohortCount(rolloutCohortCount);\n\tif (normalizedRolloutCount <= 0) return false;\n\tif (normalizedCohort === void 0) return normalizedRolloutCount >= NUMERIC_COHORT_SIZE;\n\tconst numericCohort = getNumericCohortValue(normalizedCohort);\n\tif (numericCohort === null) return false;\n\tif (normalizedRolloutCount >= 1e3) return true;\n\treturn getNumericCohortRolloutPosition(bundleId, numericCohort) < normalizedRolloutCount;\n}\n//#endregion\n//#region src/uuid.ts\nconst NIL_UUID = \"00000000-0000-0000-0000-000000000000\";\n//#endregion\nexport { DEFAULT_ROLLOUT_COHORT_COUNT, INVALID_COHORT_ERROR_MESSAGE, MAX_COHORT_LENGTH, NIL_UUID, NUMERIC_COHORT_SIZE, getAssetBaseStorageUri, getBundlePatch, getBundlePatches, getDefaultNumericCohort, getManifestFileHash, getManifestStorageUri, getNumericCohortRolloutPosition, getNumericCohortValue, getPatchBaseBundleId, getPatchBaseFileHash, getPatchFileHash, getPatchStorageUri, getRolledOutNumericCohorts, isCohortEligibleForUpdate, isCustomCohort, isNumericCohort, isValidCohort, normalizeCohortValue, normalizeRolloutCohortCount, stripBundleArtifactMetadata };\n", "import { NIL_UUID, isCohortEligibleForUpdate } from \"@hot-updater/core\";\n//#region ../../node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.js\nconst LETTER_DASH_NUMBER = \"[a-zA-Z0-9-]\";\nconst NUMERIC_IDENTIFIER = String.raw`0|[1-9]\\d*`;\nconst NUMERIC_IDENTIFIER_LOOSE = String.raw`\\d+`;\nconst NON_NUMERIC_IDENTIFIER = String.raw`\\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;\nconst MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})`;\nconst MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;\nconst PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`;\nconst PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;\nconst BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;\nconst BUILD = String.raw`(?:\\+(${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`;\nconst FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;\nconst LOOSE_PLAIN = String.raw`[v=\\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;\nconst GREATER_LESS_THAN = \"((?:<|>)?=?)\";\nconst XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\\*`;\nconst XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\\*`;\nconst XRANGE_PLAIN = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;\nconst XRANGE_PLAIN_LOOSE = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;\nconst LONE_TILDE = \"(?:~>?)\";\nconst LONE_CARET = String.raw`(?:\\^)`;\nconst COERCE_PLAIN = String.raw`(^|[^\\d])(\\d{1,${16}})(?:\\.(\\d{1,${16}}))?(?:\\.(\\d{1,${16}}))?`;\nconst COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\\d])`;\nconst COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\\d])`;\nfunction makeSafeRegexSource(source) {\n\tconst replacements = [\n\t\t[String.raw`\\s`, 1],\n\t\t[String.raw`\\d`, 256],\n\t\t[LETTER_DASH_NUMBER, 250]\n\t];\n\tfor (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);\n\treturn source;\n}\nfunction safeRegex(source, flags) {\n\treturn new RegExp(makeSafeRegexSource(source), flags);\n}\nconst NUMERIC$1 = /^\\d+$/;\nfunction compareIdentifiers(left, right) {\n\tif (typeof left === \"number\" && typeof right === \"number\") return left === right ? 0 : left < right ? -1 : 1;\n\tconst leftNumeric = NUMERIC$1.test(String(left));\n\tconst rightNumeric = NUMERIC$1.test(String(right));\n\tconst normalizedLeft = leftNumeric ? Number(left) : left;\n\tconst normalizedRight = rightNumeric ? Number(right) : right;\n\treturn normalizedLeft === normalizedRight ? 0 : leftNumeric && !rightNumeric ? -1 : rightNumeric && !leftNumeric ? 1 : normalizedLeft < normalizedRight ? -1 : 1;\n}\nconst FULL = safeRegex(`^${FULL_PLAIN}$`);\nconst LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);\nsafeRegex(`^${PRERELEASE}$`);\nsafeRegex(`^${PRERELEASE_LOOSE}$`);\nconst COERCE_EXACT = safeRegex(COERCE);\nconst COERCE_FULL_EXACT = safeRegex(COERCE_FULL);\nconst NUMERIC = /^\\d+$/;\nfunction formatComparableVersion(version) {\n\tconst base = `${version.major}.${version.minor}.${version.patch}`;\n\treturn version.prerelease?.length ? `${base}-${version.prerelease.join(\".\")}` : base;\n}\nfunction formatFullVersion(version) {\n\tconst comparable = formatComparableVersion(version);\n\treturn version.build?.length ? `${comparable}+${version.build.join(\".\")}` : comparable;\n}\nfunction parse(version, options = {}) {\n\tif (typeof version !== \"string\") return version;\n\tif (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);\n\tconst match = version.trim().match(options.loose ? LOOSE : FULL);\n\tif (!match) throw new TypeError(`Invalid version syntax: ${version}`);\n\tconst major = Number(match[1]);\n\tconst minor = Number(match[2]);\n\tconst patch = Number(match[3]);\n\tif (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);\n\tif (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);\n\tif (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);\n\tconst prerelease = match[4] ? match[4].split(\".\").map((identifier) => {\n\t\tif (NUMERIC.test(identifier)) {\n\t\t\tconst numeric = Number(identifier);\n\t\t\tif (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;\n\t\t}\n\t\treturn identifier;\n\t}) : void 0;\n\treturn {\n\t\tbuild: match[5]?.split(\".\"),\n\t\tmajor,\n\t\tminor,\n\t\tpatch,\n\t\tprerelease\n\t};\n}\nfunction tryParse(version, options = {}) {\n\ttry {\n\t\treturn parse(version, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction compareMainParsed(left, right) {\n\treturn left.major === right.major ? left.minor === right.minor ? left.patch === right.patch ? 0 : left.patch < right.patch ? -1 : 1 : left.minor < right.minor ? -1 : 1 : left.major < right.major ? -1 : 1;\n}\nfunction comparePrereleaseParsed(left, right) {\n\tconst leftPrerelease = left.prerelease;\n\tconst rightPrerelease = right.prerelease;\n\tif (leftPrerelease?.length && !rightPrerelease?.length) return -1;\n\tif (!leftPrerelease?.length && rightPrerelease?.length) return 1;\n\tif (!leftPrerelease?.length && !rightPrerelease?.length) return 0;\n\tfor (let index = 0;; index++) {\n\t\tconst leftIdentifier = leftPrerelease?.[index];\n\t\tconst rightIdentifier = rightPrerelease?.[index];\n\t\tif (leftIdentifier === void 0 && rightIdentifier === void 0) return 0;\n\t\tif (rightIdentifier === void 0) return 1;\n\t\tif (leftIdentifier === void 0) return -1;\n\t\tif (leftIdentifier !== rightIdentifier) return compareIdentifiers(leftIdentifier, rightIdentifier);\n\t}\n}\nfunction compareParsed(left, right) {\n\treturn compareMainParsed(left, right) || comparePrereleaseParsed(left, right);\n}\nfunction coerceParsedVersion(value, options = {}) {\n\tif (typeof value === \"object\") return value;\n\tconst input = typeof value === \"number\" ? String(value) : value;\n\tif (typeof input !== \"string\") return null;\n\tlet match = null;\n\tif (options.rtl) {\n\t\tconst expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, \"g\");\n\t\tlet next;\n\t\twhile ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {\n\t\t\tif (!match || next.index + next[0].length !== match.index + match[0].length) match = next;\n\t\t\texpression.lastIndex = next.index + next[1].length + next[2].length;\n\t\t}\n\t} else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);\n\tif (!match) return null;\n\tconst major = match[2];\n\treturn tryParse(`${major}.${match[3] || \"0\"}.${match[4] || \"0\"}${options.includePrerelease && match[5] ? `-${match[5]}` : \"\"}${options.includePrerelease && match[6] ? `+${match[6]}` : \"\"}`, options);\n}\nconst STRICT_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${FULL_PLAIN})$|^$`);\nconst LOOSE_COMPARATOR$1 = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction parseComparator(comparator, options = {}) {\n\tconst normalized = comparator.trim().replaceAll(/\\s+/g, \" \");\n\tconst match = normalized.match(options.loose ? LOOSE_COMPARATOR$1 : STRICT_COMPARATOR);\n\tif (!match) throw new TypeError(`Invalid comparator: ${normalized}`);\n\tconst operator = match[1] === \"=\" ? \"\" : match[1] || \"\";\n\tconst version = match[2] ? parse(match[2], options) : null;\n\treturn {\n\t\toperator,\n\t\toptions,\n\t\tvalue: version ? `${operator}${formatComparableVersion(version)}` : \"\",\n\t\tversion\n\t};\n}\nfunction testParsedComparator(comparator, version) {\n\tif (!comparator.version) return true;\n\tconst comparison = compareParsed(version, comparator.version);\n\tswitch (comparator.operator) {\n\t\tcase \"\": return comparison === 0;\n\t\tcase \">\": return comparison > 0;\n\t\tcase \">=\": return comparison >= 0;\n\t\tcase \"<\": return comparison < 0;\n\t\tcase \"<=\": return comparison <= 0;\n\t}\n}\nfunction comparatorAllowsPrerelease(comparator, version) {\n\tconst allowed = comparator.version;\n\treturn allowed !== null && !!allowed.prerelease?.length && allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch;\n}\nfunction testComparatorSet(set, version, options) {\n\tif (set.some((comparator) => !testParsedComparator(comparator, version))) return false;\n\treturn !version.prerelease?.length || !!options.includePrerelease || set.some((comparator) => comparatorAllowsPrerelease(comparator, version));\n}\nconst BUILD_STRIP = new RegExp(BUILD, \"g\");\nconst BUILD_SAFE = safeRegex(BUILD);\nconst STRICT_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN})\\s+-\\s+(${XRANGE_PLAIN})\\s*$`);\nconst LOOSE_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN_LOOSE})\\s+-\\s+(${XRANGE_PLAIN_LOOSE})\\s*$`);\nconst COMPARATOR_TRIM = safeRegex(String.raw`(\\s*)${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN}|${XRANGE_PLAIN})`, \"g\");\nconst TILDE_TRIM = safeRegex(String.raw`(\\s*)${LONE_TILDE}\\s+`, \"g\");\nconst CARET_TRIM = safeRegex(String.raw`(\\s*)${LONE_CARET}\\s+`, \"g\");\nconst STRICT_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN}$`);\nconst LOOSE_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN}$`);\nconst LOOSE_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN}$`);\nconst LOOSE_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN_LOOSE}$`);\nconst STAR = safeRegex(String.raw`(<|>)?=?\\s*\\*`);\nconst GTE_ZERO = /^\\s*>=\\s*0\\.0\\.0\\s*$/;\nconst GTE_ZERO_PRERELEASE = /^\\s*>=\\s*0\\.0\\.0-0\\s*$/;\nconst LOOSE_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction isWildcard(value) {\n\treturn !value || String(value).toLowerCase() === \"x\" || String(value) === \"*\";\n}\nfunction hasInvalidWildcardOrder(major, minor, patch) {\n\treturn isWildcard(major) && !isWildcard(minor) || isWildcard(minor) && Boolean(patch) && !isWildcard(patch);\n}\nfunction replaceTilde(comparator, options) {\n\tconst expression = options.loose ? LOOSE_TILDE : STRICT_TILDE;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn prerelease ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;\n\t});\n}\nfunction replaceTildes(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceTilde(part, options)).join(\" \");\n}\nfunction replaceCaret(comparator, options) {\n\tconst expression = options.loose ? LOOSE_CARET : STRICT_CARET;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return major === \"0\" ? `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (prerelease) return major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch}-${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\treturn major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;\n\t});\n}\nfunction replaceCarets(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceCaret(part, options)).join(\" \");\n}\nfunction replaceXRange(comparator, options) {\n\tconst expression = options.loose ? LOOSE_XRANGE : STRICT_XRANGE;\n\treturn comparator.trim().replace(expression, (match, rawOperator, rawMajor, rawMinor, rawPatch) => {\n\t\tlet operator = rawOperator;\n\t\tlet major = rawMajor;\n\t\tlet minor = rawMinor;\n\t\tlet patch = rawPatch;\n\t\tif (hasInvalidWildcardOrder(String(major), minor === void 0 ? void 0 : String(minor), patch === void 0 ? void 0 : String(patch))) return comparator;\n\t\tconst wildcardMajor = isWildcard(major);\n\t\tconst wildcardMinor = wildcardMajor || isWildcard(minor);\n\t\tconst wildcardPatch = wildcardMinor || isWildcard(patch);\n\t\tif (operator === \"=\" && wildcardPatch) operator = \"\";\n\t\tif (wildcardMajor) return operator === \">\" || operator === \"<\" ? \"<0.0.0-0\" : \"*\";\n\t\tlet prerelease = options.includePrerelease ? \"-0\" : \"\";\n\t\tif (operator && wildcardPatch) {\n\t\t\tif (wildcardMinor) minor = 0;\n\t\t\tpatch = 0;\n\t\t\tif (operator === \">\") {\n\t\t\t\toperator = \">=\";\n\t\t\t\tif (wildcardMinor) {\n\t\t\t\t\tmajor = Number(major) + 1;\n\t\t\t\t\tminor = 0;\n\t\t\t\t} else minor = Number(minor) + 1;\n\t\t\t} else if (operator === \"<=\") {\n\t\t\t\toperator = \"<\";\n\t\t\t\tif (wildcardMinor) major = Number(major) + 1;\n\t\t\t\telse minor = Number(minor) + 1;\n\t\t\t}\n\t\t\tif (operator === \"<\") prerelease = \"-0\";\n\t\t\treturn `${operator}${major}.${minor}.${patch}${prerelease}`;\n\t\t}\n\t\tif (wildcardMinor) return `>=${major}.0.0${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (wildcardPatch) return `>=${major}.${minor}.0${prerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn match;\n\t});\n}\nfunction replaceXRanges(comparator, options) {\n\treturn comparator.split(/\\s+/).map((part) => replaceXRange(part, options)).join(\" \");\n}\nfunction replaceHyphenRange(range, options) {\n\tconst expression = options.loose ? LOOSE_HYPHEN : STRICT_HYPHEN;\n\treturn range.replace(expression, (_match, rawFrom, fromMajor, fromMinor, fromPatch, fromPrerelease, _fromBuild, rawTo, toMajor, toMinor, toPatch, toPrerelease) => {\n\t\tlet from = rawFrom;\n\t\tlet to = rawTo;\n\t\tif (isWildcard(fromMajor)) from = \"\";\n\t\telse if (isWildcard(fromMinor)) from = `>=${fromMajor}.0.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (isWildcard(fromPatch)) from = `>=${fromMajor}.${fromMinor}.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (fromPrerelease) from = `>=${from}`;\n\t\telse from = `>=${from}${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\tif (isWildcard(toMajor)) to = \"\";\n\t\telse if (isWildcard(toMinor)) to = `<${Number(toMajor) + 1}.0.0-0`;\n\t\telse if (isWildcard(toPatch)) to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;\n\t\telse if (toPrerelease) to = `<=${toMajor}.${toMinor}.${toPatch}-${toPrerelease}`;\n\t\telse if (options.includePrerelease) to = `<${toMajor}.${toMinor}.${Number(toPatch) + 1}-0`;\n\t\telse to = `<=${to}`;\n\t\treturn `${from} ${to}`.trim();\n\t});\n}\nfunction expandComparator(comparator, options) {\n\treturn replaceXRanges(replaceTildes(replaceCarets(comparator.replace(BUILD_SAFE, \"\"), options), options), options).trim().replace(STAR, \"\");\n}\nfunction parseSimpleRange(input, options) {\n\tlet parts = replaceHyphenRange(input.replace(BUILD_STRIP, \"\"), options).replace(COMPARATOR_TRIM, \"$1$2$3\").replace(TILDE_TRIM, \"$1~\").replace(CARET_TRIM, \"$1^\").split(\" \").map((part) => expandComparator(part, options)).join(\" \").split(/\\s+/).map((part) => part.trim().replace(options.includePrerelease ? GTE_ZERO_PRERELEASE : GTE_ZERO, \"\"));\n\tif (options.loose) parts = parts.filter((part) => LOOSE_COMPARATOR.test(part));\n\tconst unique = /* @__PURE__ */ new Map();\n\tfor (const comparator of parts.map((part) => parseComparator(part, options))) {\n\t\tif (comparator.value === \"<0.0.0-0\") return [comparator];\n\t\tunique.set(comparator.value, comparator);\n\t}\n\tif (unique.size > 1) unique.delete(\"\");\n\treturn [...unique.values()];\n}\nfunction parseRange(range, options = {}) {\n\tif (typeof range !== \"string\") return range;\n\tconst parsedOptions = { ...options };\n\tconst raw = range.trim().replaceAll(/\\s+/g, \" \");\n\tlet sets = raw.split(\"||\").map((part) => parseSimpleRange(part.trim(), parsedOptions)).filter((set) => set.length);\n\tif (!sets.length) throw new TypeError(`Range contains no valid comparator sets: ${raw}`);\n\tif (sets.length > 1) {\n\t\tconst first = sets[0];\n\t\tsets = sets.filter((set) => set[0]?.value !== \"<0.0.0-0\");\n\t\tif (!sets.length) sets = [first];\n\t\telse if (sets.length > 1) {\n\t\t\tconst any = sets.find((set) => set.length === 1 && set[0]?.value === \"\");\n\t\t\tif (any) sets = [any];\n\t\t}\n\t}\n\treturn {\n\t\tnormalized: sets.map((set) => set.map((comparator) => comparator.value).join(\" \")).join(\"||\"),\n\t\toptions: parsedOptions,\n\t\traw,\n\t\tsets\n\t};\n}\nfunction tryParseRange(range, options = {}) {\n\ttry {\n\t\treturn parseRange(range, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction testParsedRange(range, version) {\n\treturn range.sets.some((set) => testComparatorSet(set, version, range.options));\n}\nfunction testRangeVersion(range, version) {\n\tconst parsed = tryParse(version, range.options);\n\treturn parsed ? testParsedRange(range, parsed) : false;\n}\nfunction satisfies(version, range, options = {}) {\n\tconst parsed = tryParseRange(range, options);\n\treturn parsed ? testRangeVersion(parsed, version) : false;\n}\nfunction coerce(value, options = {}) {\n\tconst parsed = coerceParsedVersion(value, options);\n\treturn parsed ? formatFullVersion(parsed) : null;\n}\n//#endregion\n//#region src/semverSatisfies.ts\nconst semverSatisfies = (targetAppVersion, currentVersion) => {\n\tconst currentCoerce = coerce(currentVersion);\n\tif (!currentCoerce) return false;\n\treturn satisfies(currentCoerce, targetAppVersion);\n};\n//#endregion\n//#region src/filterCompatibleAppVersions.ts\n/**\n* Filters target app versions that are compatible with the current app version.\n* Returns only versions that are compatible with the current version according to semver rules.\n*\n* @param targetAppVersionList - List of target app versions to filter\n* @param currentVersion - Current app version\n* @returns Array of target app versions compatible with the current version\n*/\nconst filterCompatibleAppVersions = (targetAppVersionList, currentVersion) => {\n\treturn targetAppVersionList.filter((version) => semverSatisfies(version, currentVersion)).sort((a, b) => b.localeCompare(a));\n};\n//#endregion\n//#region src/getUpdateInfo.ts\nconst INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {\n\tmessage: null,\n\tid: NIL_UUID,\n\tshouldForceUpdate: true,\n\tstatus: \"ROLLBACK\",\n\tstorageUri: null,\n\tfileHash: null\n};\nconst makeResponse = (bundle, status) => ({\n\tid: bundle.id,\n\tmessage: bundle.message,\n\tshouldForceUpdate: status === \"ROLLBACK\" ? true : bundle.shouldForceUpdate,\n\tstatus,\n\tstorageUri: bundle.storageUri,\n\tfileHash: bundle.fileHash\n});\nconst isEligibleUpdateCandidate = (bundle, cohort) => {\n\treturn isCohortEligibleForUpdate(bundle.id, cohort, bundle.rolloutCohortCount, bundle.targetCohorts);\n};\nconst findLatestEligibleUpdateCandidate = (bundles, bundleId, cohort) => {\n\tlet updateCandidate = null;\n\tfor (const bundle of bundles) if (bundle.id.localeCompare(bundleId) > 0 && isEligibleUpdateCandidate(bundle, cohort) && (!updateCandidate || bundle.id.localeCompare(updateCandidate.id) > 0)) updateCandidate = bundle;\n\treturn updateCandidate;\n};\nconst getUpdateInfo = async (bundles, args) => {\n\tswitch (args._updateStrategy) {\n\t\tcase \"appVersion\": return appVersionStrategy(bundles, args);\n\t\tcase \"fingerprint\": return fingerprintStrategy(bundles, args);\n\t\tdefault: return null;\n\t}\n};\nconst appVersionStrategy = async (bundles, { channel = \"production\", minBundleId = NIL_UUID, platform, appVersion, bundleId, cohort }) => {\n\tconst candidateBundles = [];\n\tfor (const b of bundles) {\n\t\tif (b.platform !== platform || b.channel !== channel || !b.targetAppVersion || !semverSatisfies(b.targetAppVersion, appVersion) || !b.enabled || minBundleId && b.id.localeCompare(minBundleId) < 0) continue;\n\t\tcandidateBundles.push(b);\n\t}\n\tif (candidateBundles.length === 0) {\n\t\tif (bundleId === NIL_UUID || minBundleId && bundleId.localeCompare(minBundleId) <= 0) return null;\n\t\treturn INIT_BUNDLE_ROLLBACK_UPDATE_INFO;\n\t}\n\tlet rollbackCandidate = null;\n\tlet currentBundle;\n\tfor (const b of candidateBundles) if (b.id === bundleId) currentBundle = b;\n\telse if (bundleId !== NIL_UUID && b.id.localeCompare(bundleId) < 0) {\n\t\tif (!rollbackCandidate || b.id.localeCompare(rollbackCandidate.id) > 0) rollbackCandidate = b;\n\t}\n\tconst updateCandidate = findLatestEligibleUpdateCandidate(candidateBundles, bundleId, cohort);\n\tconst currentBundleEligible = currentBundle ? isEligibleUpdateCandidate(currentBundle, cohort) : false;\n\tif (bundleId === NIL_UUID) {\n\t\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\t\treturn null;\n\t}\n\tif (currentBundleEligible) {\n\t\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\t\treturn null;\n\t}\n\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\tif (rollbackCandidate) return makeResponse(rollbackCandidate, \"ROLLBACK\");\n\tif (minBundleId && bundleId.localeCompare(minBundleId) <= 0) return null;\n\treturn INIT_BUNDLE_ROLLBACK_UPDATE_INFO;\n};\nconst fingerprintStrategy = async (bundles, { channel = \"production\", minBundleId = NIL_UUID, platform, fingerprintHash, bundleId, cohort }) => {\n\tconst candidateBundles = [];\n\tfor (const b of bundles) {\n\t\tif (b.platform !== platform || b.channel !== channel || !b.fingerprintHash || b.fingerprintHash !== fingerprintHash || !b.enabled || minBundleId && b.id.localeCompare(minBundleId) < 0) continue;\n\t\tcandidateBundles.push(b);\n\t}\n\tif (candidateBundles.length === 0) {\n\t\tif (bundleId === NIL_UUID || minBundleId && bundleId.localeCompare(minBundleId) <= 0) return null;\n\t\treturn INIT_BUNDLE_ROLLBACK_UPDATE_INFO;\n\t}\n\tlet rollbackCandidate = null;\n\tlet currentBundle;\n\tfor (const b of candidateBundles) if (b.id === bundleId) currentBundle = b;\n\telse if (bundleId !== NIL_UUID && b.id.localeCompare(bundleId) < 0) {\n\t\tif (!rollbackCandidate || b.id.localeCompare(rollbackCandidate.id) > 0) rollbackCandidate = b;\n\t}\n\tconst updateCandidate = findLatestEligibleUpdateCandidate(candidateBundles, bundleId, cohort);\n\tconst currentBundleEligible = currentBundle ? isEligibleUpdateCandidate(currentBundle, cohort) : false;\n\tif (bundleId === NIL_UUID) {\n\t\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\t\treturn null;\n\t}\n\tif (currentBundleEligible) {\n\t\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\t\treturn null;\n\t}\n\tif (updateCandidate) return makeResponse(updateCandidate, \"UPDATE\");\n\tif (rollbackCandidate) return makeResponse(rollbackCandidate, \"ROLLBACK\");\n\tif (minBundleId && bundleId.localeCompare(minBundleId) <= 0) return null;\n\treturn INIT_BUNDLE_ROLLBACK_UPDATE_INFO;\n};\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/buffer_utils.js\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction concat(...buffers) {\n\tconst size = buffers.reduce((acc, { length }) => acc + length, 0);\n\tconst buf = new Uint8Array(size);\n\tlet i = 0;\n\tfor (const buffer of buffers) {\n\t\tbuf.set(buffer, i);\n\t\ti += buffer.length;\n\t}\n\treturn buf;\n}\nfunction encode$1(string) {\n\tconst bytes = new Uint8Array(string.length);\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.charCodeAt(i);\n\t\tif (code > 127) throw new TypeError(\"non-ASCII string encountered in encode()\");\n\t\tbytes[i] = code;\n\t}\n\treturn bytes;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/base64.js\nfunction encodeBase64(input) {\n\tif (Uint8Array.prototype.toBase64) return input.toBase64();\n\tconst CHUNK_SIZE = 32768;\n\tconst arr = [];\n\tfor (let i = 0; i < input.length; i += CHUNK_SIZE) arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n\treturn btoa(arr.join(\"\"));\n}\nfunction decodeBase64(encoded) {\n\tif (Uint8Array.fromBase64) return Uint8Array.fromBase64(encoded);\n\tconst binary = atob(encoded);\n\tconst bytes = new Uint8Array(binary.length);\n\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n\treturn bytes;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/util/base64url.js\nfunction decode(input) {\n\tif (Uint8Array.fromBase64) return Uint8Array.fromBase64(typeof input === \"string\" ? input : decoder.decode(input), { alphabet: \"base64url\" });\n\tlet encoded = input;\n\tif (encoded instanceof Uint8Array) encoded = decoder.decode(encoded);\n\tencoded = encoded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\ttry {\n\t\treturn decodeBase64(encoded);\n\t} catch {\n\t\tthrow new TypeError(\"The input to be decoded is not correctly encoded.\");\n\t}\n}\nfunction encode(input) {\n\tlet unencoded = input;\n\tif (typeof unencoded === \"string\") unencoded = encoder.encode(unencoded);\n\tif (Uint8Array.prototype.toBase64) return unencoded.toBase64({\n\t\talphabet: \"base64url\",\n\t\tomitPadding: true\n\t});\n\treturn encodeBase64(unencoded).replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/crypto_key.js\nconst unusable = (name, prop = \"algorithm.name\") => /* @__PURE__ */ new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\nconst isAlgorithm = (algorithm, name) => algorithm.name === name;\nfunction getHashLength(hash) {\n\treturn parseInt(hash.name.slice(4), 10);\n}\nfunction checkHashLength(algorithm, expected) {\n\tif (getHashLength(algorithm.hash) !== expected) throw unusable(`SHA-${expected}`, \"algorithm.hash\");\n}\nfunction getNamedCurve(alg) {\n\tswitch (alg) {\n\t\tcase \"ES256\": return \"P-256\";\n\t\tcase \"ES384\": return \"P-384\";\n\t\tcase \"ES512\": return \"P-521\";\n\t\tdefault: throw new Error(\"unreachable\");\n\t}\n}\nfunction checkUsage(key, usage) {\n\tif (usage && !key.usages.includes(usage)) throw new TypeError(`CryptoKey does not support this operation, its usages must include ${usage}.`);\n}\nfunction checkSigCryptoKey(key, alg, usage) {\n\tswitch (alg) {\n\t\tcase \"HS256\":\n\t\tcase \"HS384\":\n\t\tcase \"HS512\":\n\t\t\tif (!isAlgorithm(key.algorithm, \"HMAC\")) throw unusable(\"HMAC\");\n\t\t\tcheckHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n\t\t\tbreak;\n\t\tcase \"RS256\":\n\t\tcase \"RS384\":\n\t\tcase \"RS512\":\n\t\t\tif (!isAlgorithm(key.algorithm, \"RSASSA-PKCS1-v1_5\")) throw unusable(\"RSASSA-PKCS1-v1_5\");\n\t\t\tcheckHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n\t\t\tbreak;\n\t\tcase \"PS256\":\n\t\tcase \"PS384\":\n\t\tcase \"PS512\":\n\t\t\tif (!isAlgorithm(key.algorithm, \"RSA-PSS\")) throw unusable(\"RSA-PSS\");\n\t\t\tcheckHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n\t\t\tbreak;\n\t\tcase \"Ed25519\":\n\t\tcase \"EdDSA\":\n\t\t\tif (!isAlgorithm(key.algorithm, \"Ed25519\")) throw unusable(\"Ed25519\");\n\t\t\tbreak;\n\t\tcase \"ML-DSA-44\":\n\t\tcase \"ML-DSA-65\":\n\t\tcase \"ML-DSA-87\":\n\t\t\tif (!isAlgorithm(key.algorithm, alg)) throw unusable(alg);\n\t\t\tbreak;\n\t\tcase \"ES256\":\n\t\tcase \"ES384\":\n\t\tcase \"ES512\": {\n\t\t\tif (!isAlgorithm(key.algorithm, \"ECDSA\")) throw unusable(\"ECDSA\");\n\t\t\tconst expected = getNamedCurve(alg);\n\t\t\tif (key.algorithm.namedCurve !== expected) throw unusable(expected, \"algorithm.namedCurve\");\n\t\t\tbreak;\n\t\t}\n\t\tdefault: throw new TypeError(\"CryptoKey does not support this operation\");\n\t}\n\tcheckUsage(key, usage);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/invalid_key_input.js\nfunction message(msg, actual, ...types) {\n\ttypes = types.filter(Boolean);\n\tif (types.length > 2) {\n\t\tconst last = types.pop();\n\t\tmsg += `one of type ${types.join(\", \")}, or ${last}.`;\n\t} else if (types.length === 2) msg += `one of type ${types[0]} or ${types[1]}.`;\n\telse msg += `of type ${types[0]}.`;\n\tif (actual == null) msg += ` Received ${actual}`;\n\telse if (typeof actual === \"function\" && actual.name) msg += ` Received function ${actual.name}`;\n\telse if (typeof actual === \"object\" && actual != null) {\n\t\tif (actual.constructor?.name) msg += ` Received an instance of ${actual.constructor.name}`;\n\t}\n\treturn msg;\n}\nconst invalidKeyInput = (actual, ...types) => message(\"Key must be \", actual, ...types);\nconst withAlg = (alg, actual, ...types) => message(`Key for the ${alg} algorithm must be `, actual, ...types);\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/util/errors.js\nvar JOSEError = class extends Error {\n\tstatic code = \"ERR_JOSE_GENERIC\";\n\tcode = \"ERR_JOSE_GENERIC\";\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tthis.name = this.constructor.name;\n\t\tError.captureStackTrace?.(this, this.constructor);\n\t}\n};\nvar JWTClaimValidationFailed = class extends JOSEError {\n\tstatic code = \"ERR_JWT_CLAIM_VALIDATION_FAILED\";\n\tcode = \"ERR_JWT_CLAIM_VALIDATION_FAILED\";\n\tclaim;\n\treason;\n\tpayload;\n\tconstructor(message, payload, claim = \"unspecified\", reason = \"unspecified\") {\n\t\tsuper(message, { cause: {\n\t\t\tclaim,\n\t\t\treason,\n\t\t\tpayload\n\t\t} });\n\t\tthis.claim = claim;\n\t\tthis.reason = reason;\n\t\tthis.payload = payload;\n\t}\n};\nvar JWTExpired = class extends JOSEError {\n\tstatic code = \"ERR_JWT_EXPIRED\";\n\tcode = \"ERR_JWT_EXPIRED\";\n\tclaim;\n\treason;\n\tpayload;\n\tconstructor(message, payload, claim = \"unspecified\", reason = \"unspecified\") {\n\t\tsuper(message, { cause: {\n\t\t\tclaim,\n\t\t\treason,\n\t\t\tpayload\n\t\t} });\n\t\tthis.claim = claim;\n\t\tthis.reason = reason;\n\t\tthis.payload = payload;\n\t}\n};\nvar JOSEAlgNotAllowed = class extends JOSEError {\n\tstatic code = \"ERR_JOSE_ALG_NOT_ALLOWED\";\n\tcode = \"ERR_JOSE_ALG_NOT_ALLOWED\";\n};\nvar JOSENotSupported = class extends JOSEError {\n\tstatic code = \"ERR_JOSE_NOT_SUPPORTED\";\n\tcode = \"ERR_JOSE_NOT_SUPPORTED\";\n};\nvar JWSInvalid = class extends JOSEError {\n\tstatic code = \"ERR_JWS_INVALID\";\n\tcode = \"ERR_JWS_INVALID\";\n};\nvar JWTInvalid = class extends JOSEError {\n\tstatic code = \"ERR_JWT_INVALID\";\n\tcode = \"ERR_JWT_INVALID\";\n};\nvar JWSSignatureVerificationFailed = class extends JOSEError {\n\tstatic code = \"ERR_JWS_SIGNATURE_VERIFICATION_FAILED\";\n\tcode = \"ERR_JWS_SIGNATURE_VERIFICATION_FAILED\";\n\tconstructor(message = \"signature verification failed\", options) {\n\t\tsuper(message, options);\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/is_key_like.js\nconst isCryptoKey = (key) => {\n\tif (key?.[Symbol.toStringTag] === \"CryptoKey\") return true;\n\ttry {\n\t\treturn key instanceof CryptoKey;\n\t} catch {\n\t\treturn false;\n\t}\n};\nconst isKeyObject = (key) => key?.[Symbol.toStringTag] === \"KeyObject\";\nconst isKeyLike = (key) => isCryptoKey(key) || isKeyObject(key);\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/helpers.js\nfunction assertNotSet(value, name) {\n\tif (value) throw new TypeError(`${name} can only be called once`);\n}\nfunction decodeBase64url(value, label, ErrorClass) {\n\ttry {\n\t\treturn decode(value);\n\t} catch {\n\t\tthrow new ErrorClass(`Failed to base64url decode the ${label}`);\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/type_checks.js\nconst isObjectLike = (value) => typeof value === \"object\" && value !== null;\nfunction isObject(input) {\n\tif (!isObjectLike(input) || Object.prototype.toString.call(input) !== \"[object Object]\") return false;\n\tif (Object.getPrototypeOf(input) === null) return true;\n\tlet proto = input;\n\twhile (Object.getPrototypeOf(proto) !== null) proto = Object.getPrototypeOf(proto);\n\treturn Object.getPrototypeOf(input) === proto;\n}\nfunction isDisjoint(...headers) {\n\tconst sources = headers.filter(Boolean);\n\tif (sources.length === 0 || sources.length === 1) return true;\n\tlet acc;\n\tfor (const header of sources) {\n\t\tconst parameters = Object.keys(header);\n\t\tif (!acc || acc.size === 0) {\n\t\t\tacc = new Set(parameters);\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const parameter of parameters) {\n\t\t\tif (acc.has(parameter)) return false;\n\t\t\tacc.add(parameter);\n\t\t}\n\t}\n\treturn true;\n}\nconst isJWK = (key) => isObject(key) && typeof key.kty === \"string\";\nconst isPrivateJWK = (key) => key.kty !== \"oct\" && (key.kty === \"AKP\" && typeof key.priv === \"string\" || typeof key.d === \"string\");\nconst isPublicJWK = (key) => key.kty !== \"oct\" && key.d === void 0 && key.priv === void 0;\nconst isSecretJWK = (key) => key.kty === \"oct\" && typeof key.k === \"string\";\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/signing.js\nfunction checkKeyLength(alg, key) {\n\tif (alg.startsWith(\"RS\") || alg.startsWith(\"PS\")) {\n\t\tconst { modulusLength } = key.algorithm;\n\t\tif (typeof modulusLength !== \"number\" || modulusLength < 2048) throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n\t}\n}\nfunction subtleAlgorithm(alg, algorithm) {\n\tconst hash = `SHA-${alg.slice(-3)}`;\n\tswitch (alg) {\n\t\tcase \"HS256\":\n\t\tcase \"HS384\":\n\t\tcase \"HS512\": return {\n\t\t\thash,\n\t\t\tname: \"HMAC\"\n\t\t};\n\t\tcase \"PS256\":\n\t\tcase \"PS384\":\n\t\tcase \"PS512\": return {\n\t\t\thash,\n\t\t\tname: \"RSA-PSS\",\n\t\t\tsaltLength: parseInt(alg.slice(-3), 10) >> 3\n\t\t};\n\t\tcase \"RS256\":\n\t\tcase \"RS384\":\n\t\tcase \"RS512\": return {\n\t\t\thash,\n\t\t\tname: \"RSASSA-PKCS1-v1_5\"\n\t\t};\n\t\tcase \"ES256\":\n\t\tcase \"ES384\":\n\t\tcase \"ES512\": return {\n\t\t\thash,\n\t\t\tname: \"ECDSA\",\n\t\t\tnamedCurve: algorithm.namedCurve\n\t\t};\n\t\tcase \"Ed25519\":\n\t\tcase \"EdDSA\": return { name: \"Ed25519\" };\n\t\tcase \"ML-DSA-44\":\n\t\tcase \"ML-DSA-65\":\n\t\tcase \"ML-DSA-87\": return { name: alg };\n\t\tdefault: throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n\t}\n}\nasync function getSigKey(alg, key, usage) {\n\tif (key instanceof Uint8Array) {\n\t\tif (!alg.startsWith(\"HS\")) throw new TypeError(invalidKeyInput(key, \"CryptoKey\", \"KeyObject\", \"JSON Web Key\"));\n\t\treturn crypto.subtle.importKey(\"raw\", key, {\n\t\t\thash: `SHA-${alg.slice(-3)}`,\n\t\t\tname: \"HMAC\"\n\t\t}, false, [usage]);\n\t}\n\tcheckSigCryptoKey(key, alg, usage);\n\treturn key;\n}\nasync function sign(alg, key, data) {\n\tconst cryptoKey = await getSigKey(alg, key, \"sign\");\n\tcheckKeyLength(alg, cryptoKey);\n\tconst signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n\treturn new Uint8Array(signature);\n}\nasync function verify(alg, key, signature, data) {\n\tconst cryptoKey = await getSigKey(alg, key, \"verify\");\n\tcheckKeyLength(alg, cryptoKey);\n\tconst algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n\ttry {\n\t\treturn await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n\t} catch {\n\t\treturn false;\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/jwk_to_key.js\nconst unsupportedAlg = \"Invalid or unsupported JWK \\\"alg\\\" (Algorithm) Parameter value\";\nfunction subtleMapping(jwk) {\n\tlet algorithm;\n\tlet keyUsages;\n\tswitch (jwk.kty) {\n\t\tcase \"AKP\":\n\t\t\tswitch (jwk.alg) {\n\t\t\t\tcase \"ML-DSA-44\":\n\t\t\t\tcase \"ML-DSA-65\":\n\t\t\t\tcase \"ML-DSA-87\":\n\t\t\t\t\talgorithm = { name: jwk.alg };\n\t\t\t\t\tkeyUsages = jwk.priv ? [\"sign\"] : [\"verify\"];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new JOSENotSupported(unsupportedAlg);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"RSA\":\n\t\t\tswitch (jwk.alg) {\n\t\t\t\tcase \"PS256\":\n\t\t\t\tcase \"PS384\":\n\t\t\t\tcase \"PS512\":\n\t\t\t\t\talgorithm = {\n\t\t\t\t\t\tname: \"RSA-PSS\",\n\t\t\t\t\t\thash: `SHA-${jwk.alg.slice(-3)}`\n\t\t\t\t\t};\n\t\t\t\t\tkeyUsages = jwk.d ? [\"sign\"] : [\"verify\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"RS256\":\n\t\t\t\tcase \"RS384\":\n\t\t\t\tcase \"RS512\":\n\t\t\t\t\talgorithm = {\n\t\t\t\t\t\tname: \"RSASSA-PKCS1-v1_5\",\n\t\t\t\t\t\thash: `SHA-${jwk.alg.slice(-3)}`\n\t\t\t\t\t};\n\t\t\t\t\tkeyUsages = jwk.d ? [\"sign\"] : [\"verify\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"RSA-OAEP\":\n\t\t\t\tcase \"RSA-OAEP-256\":\n\t\t\t\tcase \"RSA-OAEP-384\":\n\t\t\t\tcase \"RSA-OAEP-512\":\n\t\t\t\t\talgorithm = {\n\t\t\t\t\t\tname: \"RSA-OAEP\",\n\t\t\t\t\t\thash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`\n\t\t\t\t\t};\n\t\t\t\t\tkeyUsages = jwk.d ? [\"decrypt\", \"unwrapKey\"] : [\"encrypt\", \"wrapKey\"];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new JOSENotSupported(unsupportedAlg);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"EC\":\n\t\t\tswitch (jwk.alg) {\n\t\t\t\tcase \"ES256\":\n\t\t\t\tcase \"ES384\":\n\t\t\t\tcase \"ES512\":\n\t\t\t\t\talgorithm = {\n\t\t\t\t\t\tname: \"ECDSA\",\n\t\t\t\t\t\tnamedCurve: {\n\t\t\t\t\t\t\tES256: \"P-256\",\n\t\t\t\t\t\t\tES384: \"P-384\",\n\t\t\t\t\t\t\tES512: \"P-521\"\n\t\t\t\t\t\t}[jwk.alg]\n\t\t\t\t\t};\n\t\t\t\t\tkeyUsages = jwk.d ? [\"sign\"] : [\"verify\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ECDH-ES\":\n\t\t\t\tcase \"ECDH-ES+A128KW\":\n\t\t\t\tcase \"ECDH-ES+A192KW\":\n\t\t\t\tcase \"ECDH-ES+A256KW\":\n\t\t\t\t\talgorithm = {\n\t\t\t\t\t\tname: \"ECDH\",\n\t\t\t\t\t\tnamedCurve: jwk.crv\n\t\t\t\t\t};\n\t\t\t\t\tkeyUsages = jwk.d ? [\"deriveBits\"] : [];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new JOSENotSupported(unsupportedAlg);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"OKP\":\n\t\t\tswitch (jwk.alg) {\n\t\t\t\tcase \"Ed25519\":\n\t\t\t\tcase \"EdDSA\":\n\t\t\t\t\talgorithm = { name: \"Ed25519\" };\n\t\t\t\t\tkeyUsages = jwk.d ? [\"sign\"] : [\"verify\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ECDH-ES\":\n\t\t\t\tcase \"ECDH-ES+A128KW\":\n\t\t\t\tcase \"ECDH-ES+A192KW\":\n\t\t\t\tcase \"ECDH-ES+A256KW\":\n\t\t\t\t\talgorithm = { name: jwk.crv };\n\t\t\t\t\tkeyUsages = jwk.d ? [\"deriveBits\"] : [];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new JOSENotSupported(unsupportedAlg);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault: throw new JOSENotSupported(\"Invalid or unsupported JWK \\\"kty\\\" (Key Type) Parameter value\");\n\t}\n\treturn {\n\t\talgorithm,\n\t\tkeyUsages\n\t};\n}\nasync function jwkToKey(jwk) {\n\tif (!jwk.alg) throw new TypeError(\"\\\"alg\\\" argument is required when \\\"jwk.alg\\\" is not present\");\n\tconst { algorithm, keyUsages } = subtleMapping(jwk);\n\tconst keyData = { ...jwk };\n\tif (keyData.kty !== \"AKP\") delete keyData.alg;\n\tdelete keyData.use;\n\treturn crypto.subtle.importKey(\"jwk\", keyData, algorithm, jwk.ext ?? (jwk.d || jwk.priv ? false : true), jwk.key_ops ?? keyUsages);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/normalize_key.js\nconst unusableForAlg = \"given KeyObject instance cannot be used for this algorithm\";\nlet cache;\nconst handleJWK = async (key, jwk, alg, freeze = false) => {\n\tcache ||= /* @__PURE__ */ new WeakMap();\n\tlet cached = cache.get(key);\n\tif (cached?.[alg]) return cached[alg];\n\tconst cryptoKey = await jwkToKey({\n\t\t...jwk,\n\t\talg\n\t});\n\tif (freeze) Object.freeze(key);\n\tif (!cached) cache.set(key, { [alg]: cryptoKey });\n\telse cached[alg] = cryptoKey;\n\treturn cryptoKey;\n};\nconst handleKeyObject = (keyObject, alg) => {\n\tcache ||= /* @__PURE__ */ new WeakMap();\n\tlet cached = cache.get(keyObject);\n\tif (cached?.[alg]) return cached[alg];\n\tconst isPublic = keyObject.type === \"public\";\n\tconst extractable = isPublic ? true : false;\n\tlet cryptoKey;\n\tif (keyObject.asymmetricKeyType === \"x25519\") {\n\t\tswitch (alg) {\n\t\t\tcase \"ECDH-ES\":\n\t\t\tcase \"ECDH-ES+A128KW\":\n\t\t\tcase \"ECDH-ES+A192KW\":\n\t\t\tcase \"ECDH-ES+A256KW\": break;\n\t\t\tdefault: throw new TypeError(unusableForAlg);\n\t\t}\n\t\tcryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : [\"deriveBits\"]);\n\t}\n\tif (keyObject.asymmetricKeyType === \"ed25519\") {\n\t\tif (alg !== \"EdDSA\" && alg !== \"Ed25519\") throw new TypeError(unusableForAlg);\n\t\tcryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [isPublic ? \"verify\" : \"sign\"]);\n\t}\n\tswitch (keyObject.asymmetricKeyType) {\n\t\tcase \"ml-dsa-44\":\n\t\tcase \"ml-dsa-65\":\n\t\tcase \"ml-dsa-87\":\n\t\t\tif (alg !== keyObject.asymmetricKeyType.toUpperCase()) throw new TypeError(unusableForAlg);\n\t\t\tcryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [isPublic ? \"verify\" : \"sign\"]);\n\t}\n\tif (keyObject.asymmetricKeyType === \"rsa\") {\n\t\tlet hash;\n\t\tswitch (alg) {\n\t\t\tcase \"RSA-OAEP\":\n\t\t\t\thash = \"SHA-1\";\n\t\t\t\tbreak;\n\t\t\tcase \"RS256\":\n\t\t\tcase \"PS256\":\n\t\t\tcase \"RSA-OAEP-256\":\n\t\t\t\thash = \"SHA-256\";\n\t\t\t\tbreak;\n\t\t\tcase \"RS384\":\n\t\t\tcase \"PS384\":\n\t\t\tcase \"RSA-OAEP-384\":\n\t\t\t\thash = \"SHA-384\";\n\t\t\t\tbreak;\n\t\t\tcase \"RS512\":\n\t\t\tcase \"PS512\":\n\t\t\tcase \"RSA-OAEP-512\":\n\t\t\t\thash = \"SHA-512\";\n\t\t\t\tbreak;\n\t\t\tdefault: throw new TypeError(unusableForAlg);\n\t\t}\n\t\tif (alg.startsWith(\"RSA-OAEP\")) return keyObject.toCryptoKey({\n\t\t\tname: \"RSA-OAEP\",\n\t\t\thash\n\t\t}, extractable, isPublic ? [\"encrypt\"] : [\"decrypt\"]);\n\t\tcryptoKey = keyObject.toCryptoKey({\n\t\t\tname: alg.startsWith(\"PS\") ? \"RSA-PSS\" : \"RSASSA-PKCS1-v1_5\",\n\t\t\thash\n\t\t}, extractable, [isPublic ? \"verify\" : \"sign\"]);\n\t}\n\tif (keyObject.asymmetricKeyType === \"ec\") {\n\t\tconst namedCurve = new Map([\n\t\t\t[\"prime256v1\", \"P-256\"],\n\t\t\t[\"secp384r1\", \"P-384\"],\n\t\t\t[\"secp521r1\", \"P-521\"]\n\t\t]).get(keyObject.asymmetricKeyDetails?.namedCurve);\n\t\tif (!namedCurve) throw new TypeError(unusableForAlg);\n\t\tconst expectedCurve = {\n\t\t\tES256: \"P-256\",\n\t\t\tES384: \"P-384\",\n\t\t\tES512: \"P-521\"\n\t\t};\n\t\tif (expectedCurve[alg] && namedCurve === expectedCurve[alg]) cryptoKey = keyObject.toCryptoKey({\n\t\t\tname: \"ECDSA\",\n\t\t\tnamedCurve\n\t\t}, extractable, [isPublic ? \"verify\" : \"sign\"]);\n\t\tif (alg.startsWith(\"ECDH-ES\")) cryptoKey = keyObject.toCryptoKey({\n\t\t\tname: \"ECDH\",\n\t\t\tnamedCurve\n\t\t}, extractable, isPublic ? [] : [\"deriveBits\"]);\n\t}\n\tif (!cryptoKey) throw new TypeError(unusableForAlg);\n\tif (!cached) cache.set(keyObject, { [alg]: cryptoKey });\n\telse cached[alg] = cryptoKey;\n\treturn cryptoKey;\n};\nasync function normalizeKey(key, alg) {\n\tif (key instanceof Uint8Array) return key;\n\tif (isCryptoKey(key)) return key;\n\tif (isKeyObject(key)) {\n\t\tif (key.type === \"secret\") return key.export();\n\t\tif (\"toCryptoKey\" in key && typeof key.toCryptoKey === \"function\") try {\n\t\t\treturn handleKeyObject(key, alg);\n\t\t} catch (err) {\n\t\t\tif (err instanceof TypeError) throw err;\n\t\t}\n\t\treturn handleJWK(key, key.export({ format: \"jwk\" }), alg);\n\t}\n\tif (isJWK(key)) {\n\t\tif (key.k) return decode(key.k);\n\t\treturn handleJWK(key, key, alg, true);\n\t}\n\tthrow new Error(\"unreachable\");\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/validate_crit.js\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n\tif (joseHeader.crit !== void 0 && protectedHeader?.crit === void 0) throw new Err(\"\\\"crit\\\" (Critical) Header Parameter MUST be integrity protected\");\n\tif (!protectedHeader || protectedHeader.crit === void 0) return /* @__PURE__ */ new Set();\n\tif (!Array.isArray(protectedHeader.crit) || protectedHeader.crit.length === 0 || protectedHeader.crit.some((input) => typeof input !== \"string\" || input.length === 0)) throw new Err(\"\\\"crit\\\" (Critical) Header Parameter MUST be an array of non-empty strings when present\");\n\tlet recognized;\n\tif (recognizedOption !== void 0) recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n\telse recognized = recognizedDefault;\n\tfor (const parameter of protectedHeader.crit) {\n\t\tif (!recognized.has(parameter)) throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n\t\tif (joseHeader[parameter] === void 0) throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n\t\tif (recognized.get(parameter) && protectedHeader[parameter] === void 0) throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n\t}\n\treturn new Set(protectedHeader.crit);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/validate_algorithms.js\nfunction validateAlgorithms(option, algorithms) {\n\tif (algorithms !== void 0 && (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== \"string\"))) throw new TypeError(`\"${option}\" option must be an array of strings`);\n\tif (!algorithms) return;\n\treturn new Set(algorithms);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/check_key_type.js\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n\tif (key.use !== void 0) {\n\t\tlet expected;\n\t\tswitch (usage) {\n\t\t\tcase \"sign\":\n\t\t\tcase \"verify\":\n\t\t\t\texpected = \"sig\";\n\t\t\t\tbreak;\n\t\t\tcase \"encrypt\":\n\t\t\tcase \"decrypt\":\n\t\t\t\texpected = \"enc\";\n\t\t\t\tbreak;\n\t\t}\n\t\tif (key.use !== expected) throw new TypeError(`Invalid key for this operation, its \"use\" must be \"${expected}\" when present`);\n\t}\n\tif (key.alg !== void 0 && key.alg !== alg) throw new TypeError(`Invalid key for this operation, its \"alg\" must be \"${alg}\" when present`);\n\tif (Array.isArray(key.key_ops)) {\n\t\tlet expectedKeyOp;\n\t\tswitch (true) {\n\t\t\tcase usage === \"sign\" || usage === \"verify\":\n\t\t\tcase alg === \"dir\":\n\t\t\tcase alg.includes(\"CBC-HS\"):\n\t\t\t\texpectedKeyOp = usage;\n\t\t\t\tbreak;\n\t\t\tcase alg.startsWith(\"PBES2\"):\n\t\t\t\texpectedKeyOp = \"deriveBits\";\n\t\t\t\tbreak;\n\t\t\tcase /^A\\d{3}(?:GCM)?(?:KW)?$/.test(alg):\n\t\t\t\tif (!alg.includes(\"GCM\") && alg.endsWith(\"KW\")) expectedKeyOp = usage === \"encrypt\" ? \"wrapKey\" : \"unwrapKey\";\n\t\t\t\telse expectedKeyOp = usage;\n\t\t\t\tbreak;\n\t\t\tcase usage === \"encrypt\" && alg.startsWith(\"RSA\"):\n\t\t\t\texpectedKeyOp = \"wrapKey\";\n\t\t\t\tbreak;\n\t\t\tcase usage === \"decrypt\":\n\t\t\t\texpectedKeyOp = alg.startsWith(\"RSA\") ? \"unwrapKey\" : \"deriveBits\";\n\t\t\t\tbreak;\n\t\t}\n\t\tif (expectedKeyOp && key.key_ops?.includes?.(expectedKeyOp) === false) throw new TypeError(`Invalid key for this operation, its \"key_ops\" must include \"${expectedKeyOp}\" when present`);\n\t}\n\treturn true;\n};\nconst symmetricTypeCheck = (alg, key, usage) => {\n\tif (key instanceof Uint8Array) return;\n\tif (isJWK(key)) {\n\t\tif (isSecretJWK(key) && jwkMatchesOp(alg, key, usage)) return;\n\t\tthrow new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n\t}\n\tif (!isKeyLike(key)) throw new TypeError(withAlg(alg, key, \"CryptoKey\", \"KeyObject\", \"JSON Web Key\", \"Uint8Array\"));\n\tif (key.type !== \"secret\") throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n\tif (isJWK(key)) switch (usage) {\n\t\tcase \"decrypt\":\n\t\tcase \"sign\":\n\t\t\tif (isPrivateJWK(key) && jwkMatchesOp(alg, key, usage)) return;\n\t\t\tthrow new TypeError(`JSON Web Key for this operation must be a private JWK`);\n\t\tcase \"encrypt\":\n\t\tcase \"verify\":\n\t\t\tif (isPublicJWK(key) && jwkMatchesOp(alg, key, usage)) return;\n\t\t\tthrow new TypeError(`JSON Web Key for this operation must be a public JWK`);\n\t}\n\tif (!isKeyLike(key)) throw new TypeError(withAlg(alg, key, \"CryptoKey\", \"KeyObject\", \"JSON Web Key\"));\n\tif (key.type === \"secret\") throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n\tif (key.type === \"public\") switch (usage) {\n\t\tcase \"sign\": throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n\t\tcase \"decrypt\": throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n\t}\n\tif (key.type === \"private\") switch (usage) {\n\t\tcase \"verify\": throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n\t\tcase \"encrypt\": throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n\t}\n};\nfunction checkKeyType(alg, key, usage) {\n\tswitch (alg.substring(0, 2)) {\n\t\tcase \"A1\":\n\t\tcase \"A2\":\n\t\tcase \"di\":\n\t\tcase \"HS\":\n\t\tcase \"PB\":\n\t\t\tsymmetricTypeCheck(alg, key, usage);\n\t\t\tbreak;\n\t\tdefault: asymmetricTypeCheck(alg, key, usage);\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jws/flattened/verify.js\nasync function flattenedVerify(jws, key, options) {\n\tif (!isObject(jws)) throw new JWSInvalid(\"Flattened JWS must be an object\");\n\tif (jws.protected === void 0 && jws.header === void 0) throw new JWSInvalid(\"Flattened JWS must have either of the \\\"protected\\\" or \\\"header\\\" members\");\n\tif (jws.protected !== void 0 && typeof jws.protected !== \"string\") throw new JWSInvalid(\"JWS Protected Header incorrect type\");\n\tif (jws.payload === void 0) throw new JWSInvalid(\"JWS Payload missing\");\n\tif (typeof jws.signature !== \"string\") throw new JWSInvalid(\"JWS Signature missing or incorrect type\");\n\tif (jws.header !== void 0 && !isObject(jws.header)) throw new JWSInvalid(\"JWS Unprotected Header incorrect type\");\n\tlet parsedProt = {};\n\tif (jws.protected) try {\n\t\tconst protectedHeader = decode(jws.protected);\n\t\tparsedProt = JSON.parse(decoder.decode(protectedHeader));\n\t} catch {\n\t\tthrow new JWSInvalid(\"JWS Protected Header is invalid\");\n\t}\n\tif (!isDisjoint(parsedProt, jws.header)) throw new JWSInvalid(\"JWS Protected and JWS Unprotected Header Parameter names must be disjoint\");\n\tconst joseHeader = {\n\t\t...parsedProt,\n\t\t...jws.header\n\t};\n\tconst extensions = validateCrit(JWSInvalid, new Map([[\"b64\", true]]), options?.crit, parsedProt, joseHeader);\n\tlet b64 = true;\n\tif (extensions.has(\"b64\")) {\n\t\tb64 = parsedProt.b64;\n\t\tif (typeof b64 !== \"boolean\") throw new JWSInvalid(\"The \\\"b64\\\" (base64url-encode payload) Header Parameter must be a boolean\");\n\t}\n\tconst { alg } = joseHeader;\n\tif (typeof alg !== \"string\" || !alg) throw new JWSInvalid(\"JWS \\\"alg\\\" (Algorithm) Header Parameter missing or invalid\");\n\tconst algorithms = options && validateAlgorithms(\"algorithms\", options.algorithms);\n\tif (algorithms && !algorithms.has(alg)) throw new JOSEAlgNotAllowed(\"\\\"alg\\\" (Algorithm) Header Parameter value not allowed\");\n\tif (b64) {\n\t\tif (typeof jws.payload !== \"string\") throw new JWSInvalid(\"JWS Payload must be a string\");\n\t} else if (typeof jws.payload !== \"string\" && !(jws.payload instanceof Uint8Array)) throw new JWSInvalid(\"JWS Payload must be a string or an Uint8Array instance\");\n\tlet resolvedKey = false;\n\tif (typeof key === \"function\") {\n\t\tkey = await key(parsedProt, jws);\n\t\tresolvedKey = true;\n\t}\n\tcheckKeyType(alg, key, \"verify\");\n\tconst data = concat(jws.protected !== void 0 ? encode$1(jws.protected) : new Uint8Array(), encode$1(\".\"), typeof jws.payload === \"string\" ? b64 ? encode$1(jws.payload) : encoder.encode(jws.payload) : jws.payload);\n\tconst signature = decodeBase64url(jws.signature, \"signature\", JWSInvalid);\n\tconst k = await normalizeKey(key, alg);\n\tif (!await verify(alg, k, signature, data)) throw new JWSSignatureVerificationFailed();\n\tlet payload;\n\tif (b64) payload = decodeBase64url(jws.payload, \"payload\", JWSInvalid);\n\telse if (typeof jws.payload === \"string\") payload = encoder.encode(jws.payload);\n\telse payload = jws.payload;\n\tconst result = { payload };\n\tif (jws.protected !== void 0) result.protectedHeader = parsedProt;\n\tif (jws.header !== void 0) result.unprotectedHeader = jws.header;\n\tif (resolvedKey) return {\n\t\t...result,\n\t\tkey: k\n\t};\n\treturn result;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jws/compact/verify.js\nasync function compactVerify(jws, key, options) {\n\tif (jws instanceof Uint8Array) jws = decoder.decode(jws);\n\tif (typeof jws !== \"string\") throw new JWSInvalid(\"Compact JWS must be a string or Uint8Array\");\n\tconst { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split(\".\");\n\tif (length !== 3) throw new JWSInvalid(\"Invalid Compact JWS\");\n\tconst verified = await flattenedVerify({\n\t\tpayload,\n\t\tprotected: protectedHeader,\n\t\tsignature\n\t}, key, options);\n\tconst result = {\n\t\tpayload: verified.payload,\n\t\tprotectedHeader: verified.protectedHeader\n\t};\n\tif (typeof key === \"function\") return {\n\t\t...result,\n\t\tkey: verified.key\n\t};\n\treturn result;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/lib/jwt_claims_set.js\nconst epoch = (date) => Math.floor(date.getTime() / 1e3);\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nfunction secs(str) {\n\tconst matched = REGEX.exec(str);\n\tif (!matched || matched[4] && matched[1]) throw new TypeError(\"Invalid time period format\");\n\tconst value = parseFloat(matched[2]);\n\tconst unit = matched[3].toLowerCase();\n\tlet numericDate;\n\tswitch (unit) {\n\t\tcase \"sec\":\n\t\tcase \"secs\":\n\t\tcase \"second\":\n\t\tcase \"seconds\":\n\t\tcase \"s\":\n\t\t\tnumericDate = Math.round(value);\n\t\t\tbreak;\n\t\tcase \"minute\":\n\t\tcase \"minutes\":\n\t\tcase \"min\":\n\t\tcase \"mins\":\n\t\tcase \"m\":\n\t\t\tnumericDate = Math.round(value * minute);\n\t\t\tbreak;\n\t\tcase \"hour\":\n\t\tcase \"hours\":\n\t\tcase \"hr\":\n\t\tcase \"hrs\":\n\t\tcase \"h\":\n\t\t\tnumericDate = Math.round(value * hour);\n\t\t\tbreak;\n\t\tcase \"day\":\n\t\tcase \"days\":\n\t\tcase \"d\":\n\t\t\tnumericDate = Math.round(value * day);\n\t\t\tbreak;\n\t\tcase \"week\":\n\t\tcase \"weeks\":\n\t\tcase \"w\":\n\t\t\tnumericDate = Math.round(value * week);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tnumericDate = Math.round(value * year);\n\t\t\tbreak;\n\t}\n\tif (matched[1] === \"-\" || matched[4] === \"ago\") return -numericDate;\n\treturn numericDate;\n}\nfunction validateInput(label, input) {\n\tif (!Number.isFinite(input)) throw new TypeError(`Invalid ${label} input`);\n\treturn input;\n}\nconst normalizeTyp = (value) => {\n\tif (value.includes(\"/\")) return value.toLowerCase();\n\treturn `application/${value.toLowerCase()}`;\n};\nconst checkAudiencePresence = (audPayload, audOption) => {\n\tif (typeof audPayload === \"string\") return audOption.includes(audPayload);\n\tif (Array.isArray(audPayload)) return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n\treturn false;\n};\nfunction validateClaimsSet(protectedHeader, encodedPayload, options = {}) {\n\tlet payload;\n\ttry {\n\t\tpayload = JSON.parse(decoder.decode(encodedPayload));\n\t} catch {}\n\tif (!isObject(payload)) throw new JWTInvalid(\"JWT Claims Set must be a top-level JSON object\");\n\tconst { typ } = options;\n\tif (typ && (typeof protectedHeader.typ !== \"string\" || normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) throw new JWTClaimValidationFailed(\"unexpected \\\"typ\\\" JWT header value\", payload, \"typ\", \"check_failed\");\n\tconst { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n\tconst presenceCheck = [...requiredClaims];\n\tif (maxTokenAge !== void 0) presenceCheck.push(\"iat\");\n\tif (audience !== void 0) presenceCheck.push(\"aud\");\n\tif (subject !== void 0) presenceCheck.push(\"sub\");\n\tif (issuer !== void 0) presenceCheck.push(\"iss\");\n\tfor (const claim of new Set(presenceCheck.reverse())) if (!(claim in payload)) throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, \"missing\");\n\tif (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) throw new JWTClaimValidationFailed(\"unexpected \\\"iss\\\" claim value\", payload, \"iss\", \"check_failed\");\n\tif (subject && payload.sub !== subject) throw new JWTClaimValidationFailed(\"unexpected \\\"sub\\\" claim value\", payload, \"sub\", \"check_failed\");\n\tif (audience && !checkAudiencePresence(payload.aud, typeof audience === \"string\" ? [audience] : audience)) throw new JWTClaimValidationFailed(\"unexpected \\\"aud\\\" claim value\", payload, \"aud\", \"check_failed\");\n\tlet tolerance;\n\tswitch (typeof options.clockTolerance) {\n\t\tcase \"string\":\n\t\t\ttolerance = secs(options.clockTolerance);\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\ttolerance = options.clockTolerance;\n\t\t\tbreak;\n\t\tcase \"undefined\":\n\t\t\ttolerance = 0;\n\t\t\tbreak;\n\t\tdefault: throw new TypeError(\"Invalid clockTolerance option type\");\n\t}\n\tconst { currentDate } = options;\n\tconst now = epoch(currentDate || /* @__PURE__ */ new Date());\n\tif ((payload.iat !== void 0 || maxTokenAge) && typeof payload.iat !== \"number\") throw new JWTClaimValidationFailed(\"\\\"iat\\\" claim must be a number\", payload, \"iat\", \"invalid\");\n\tif (payload.nbf !== void 0) {\n\t\tif (typeof payload.nbf !== \"number\") throw new JWTClaimValidationFailed(\"\\\"nbf\\\" claim must be a number\", payload, \"nbf\", \"invalid\");\n\t\tif (payload.nbf > now + tolerance) throw new JWTClaimValidationFailed(\"\\\"nbf\\\" claim timestamp check failed\", payload, \"nbf\", \"check_failed\");\n\t}\n\tif (payload.exp !== void 0) {\n\t\tif (typeof payload.exp !== \"number\") throw new JWTClaimValidationFailed(\"\\\"exp\\\" claim must be a number\", payload, \"exp\", \"invalid\");\n\t\tif (payload.exp <= now - tolerance) throw new JWTExpired(\"\\\"exp\\\" claim timestamp check failed\", payload, \"exp\", \"check_failed\");\n\t}\n\tif (maxTokenAge) {\n\t\tconst age = now - payload.iat;\n\t\tconst max = typeof maxTokenAge === \"number\" ? maxTokenAge : secs(maxTokenAge);\n\t\tif (age - tolerance > max) throw new JWTExpired(\"\\\"iat\\\" claim timestamp check failed (too far in the past)\", payload, \"iat\", \"check_failed\");\n\t\tif (age < 0 - tolerance) throw new JWTClaimValidationFailed(\"\\\"iat\\\" claim timestamp check failed (it should be in the past)\", payload, \"iat\", \"check_failed\");\n\t}\n\treturn payload;\n}\nvar JWTClaimsBuilder = class {\n\t#payload;\n\tconstructor(payload) {\n\t\tif (!isObject(payload)) throw new TypeError(\"JWT Claims Set MUST be an object\");\n\t\tthis.#payload = structuredClone(payload);\n\t}\n\tdata() {\n\t\treturn encoder.encode(JSON.stringify(this.#payload));\n\t}\n\tget iss() {\n\t\treturn this.#payload.iss;\n\t}\n\tset iss(value) {\n\t\tthis.#payload.iss = value;\n\t}\n\tget sub() {\n\t\treturn this.#payload.sub;\n\t}\n\tset sub(value) {\n\t\tthis.#payload.sub = value;\n\t}\n\tget aud() {\n\t\treturn this.#payload.aud;\n\t}\n\tset aud(value) {\n\t\tthis.#payload.aud = value;\n\t}\n\tset jti(value) {\n\t\tthis.#payload.jti = value;\n\t}\n\tset nbf(value) {\n\t\tif (typeof value === \"number\") this.#payload.nbf = validateInput(\"setNotBefore\", value);\n\t\telse if (value instanceof Date) this.#payload.nbf = validateInput(\"setNotBefore\", epoch(value));\n\t\telse this.#payload.nbf = epoch(/* @__PURE__ */ new Date()) + secs(value);\n\t}\n\tset exp(value) {\n\t\tif (typeof value === \"number\") this.#payload.exp = validateInput(\"setExpirationTime\", value);\n\t\telse if (value instanceof Date) this.#payload.exp = validateInput(\"setExpirationTime\", epoch(value));\n\t\telse this.#payload.exp = epoch(/* @__PURE__ */ new Date()) + secs(value);\n\t}\n\tset iat(value) {\n\t\tif (value === void 0) this.#payload.iat = epoch(/* @__PURE__ */ new Date());\n\t\telse if (value instanceof Date) this.#payload.iat = validateInput(\"setIssuedAt\", epoch(value));\n\t\telse if (typeof value === \"string\") this.#payload.iat = validateInput(\"setIssuedAt\", epoch(/* @__PURE__ */ new Date()) + secs(value));\n\t\telse this.#payload.iat = validateInput(\"setIssuedAt\", value);\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jwt/verify.js\nasync function jwtVerify(jwt, key, options) {\n\tconst verified = await compactVerify(jwt, key, options);\n\tif (verified.protectedHeader.crit?.includes(\"b64\") && verified.protectedHeader.b64 === false) throw new JWTInvalid(\"JWTs MUST NOT use unencoded payload\");\n\tconst result = {\n\t\tpayload: validateClaimsSet(verified.protectedHeader, verified.payload, options),\n\t\tprotectedHeader: verified.protectedHeader\n\t};\n\tif (typeof key === \"function\") return {\n\t\t...result,\n\t\tkey: verified.key\n\t};\n\treturn result;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jws/flattened/sign.js\nvar FlattenedSign = class {\n\t#payload;\n\t#protectedHeader;\n\t#unprotectedHeader;\n\tconstructor(payload) {\n\t\tif (!(payload instanceof Uint8Array)) throw new TypeError(\"payload must be an instance of Uint8Array\");\n\t\tthis.#payload = payload;\n\t}\n\tsetProtectedHeader(protectedHeader) {\n\t\tassertNotSet(this.#protectedHeader, \"setProtectedHeader\");\n\t\tthis.#protectedHeader = protectedHeader;\n\t\treturn this;\n\t}\n\tsetUnprotectedHeader(unprotectedHeader) {\n\t\tassertNotSet(this.#unprotectedHeader, \"setUnprotectedHeader\");\n\t\tthis.#unprotectedHeader = unprotectedHeader;\n\t\treturn this;\n\t}\n\tasync sign(key, options) {\n\t\tif (!this.#protectedHeader && !this.#unprotectedHeader) throw new JWSInvalid(\"either setProtectedHeader or setUnprotectedHeader must be called before #sign()\");\n\t\tif (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader)) throw new JWSInvalid(\"JWS Protected and JWS Unprotected Header Parameter names must be disjoint\");\n\t\tconst joseHeader = {\n\t\t\t...this.#protectedHeader,\n\t\t\t...this.#unprotectedHeader\n\t\t};\n\t\tconst extensions = validateCrit(JWSInvalid, new Map([[\"b64\", true]]), options?.crit, this.#protectedHeader, joseHeader);\n\t\tlet b64 = true;\n\t\tif (extensions.has(\"b64\")) {\n\t\t\tb64 = this.#protectedHeader.b64;\n\t\t\tif (typeof b64 !== \"boolean\") throw new JWSInvalid(\"The \\\"b64\\\" (base64url-encode payload) Header Parameter must be a boolean\");\n\t\t}\n\t\tconst { alg } = joseHeader;\n\t\tif (typeof alg !== \"string\" || !alg) throw new JWSInvalid(\"JWS \\\"alg\\\" (Algorithm) Header Parameter missing or invalid\");\n\t\tcheckKeyType(alg, key, \"sign\");\n\t\tlet payloadS;\n\t\tlet payloadB;\n\t\tif (b64) {\n\t\t\tpayloadS = encode(this.#payload);\n\t\t\tpayloadB = encode$1(payloadS);\n\t\t} else {\n\t\t\tpayloadB = this.#payload;\n\t\t\tpayloadS = \"\";\n\t\t}\n\t\tlet protectedHeaderString;\n\t\tlet protectedHeaderBytes;\n\t\tif (this.#protectedHeader) {\n\t\t\tprotectedHeaderString = encode(JSON.stringify(this.#protectedHeader));\n\t\t\tprotectedHeaderBytes = encode$1(protectedHeaderString);\n\t\t} else {\n\t\t\tprotectedHeaderString = \"\";\n\t\t\tprotectedHeaderBytes = new Uint8Array();\n\t\t}\n\t\tconst data = concat(protectedHeaderBytes, encode$1(\".\"), payloadB);\n\t\tconst jws = {\n\t\t\tsignature: encode(await sign(alg, await normalizeKey(key, alg), data)),\n\t\t\tpayload: payloadS\n\t\t};\n\t\tif (this.#unprotectedHeader) jws.header = this.#unprotectedHeader;\n\t\tif (this.#protectedHeader) jws.protected = protectedHeaderString;\n\t\treturn jws;\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jws/compact/sign.js\nvar CompactSign = class {\n\t#flattened;\n\tconstructor(payload) {\n\t\tthis.#flattened = new FlattenedSign(payload);\n\t}\n\tsetProtectedHeader(protectedHeader) {\n\t\tthis.#flattened.setProtectedHeader(protectedHeader);\n\t\treturn this;\n\t}\n\tasync sign(key, options) {\n\t\tconst jws = await this.#flattened.sign(key, options);\n\t\tif (jws.payload === void 0) throw new TypeError(\"use the flattened module for creating JWS with b64: false\");\n\t\treturn `${jws.protected}.${jws.payload}.${jws.signature}`;\n\t}\n};\n//#endregion\n//#region ../../node_modules/.pnpm/jose@6.2.3/node_modules/jose/dist/webapi/jwt/sign.js\nvar SignJWT = class {\n\t#protectedHeader;\n\t#jwt;\n\tconstructor(payload = {}) {\n\t\tthis.#jwt = new JWTClaimsBuilder(payload);\n\t}\n\tsetIssuer(issuer) {\n\t\tthis.#jwt.iss = issuer;\n\t\treturn this;\n\t}\n\tsetSubject(subject) {\n\t\tthis.#jwt.sub = subject;\n\t\treturn this;\n\t}\n\tsetAudience(audience) {\n\t\tthis.#jwt.aud = audience;\n\t\treturn this;\n\t}\n\tsetJti(jwtId) {\n\t\tthis.#jwt.jti = jwtId;\n\t\treturn this;\n\t}\n\tsetNotBefore(input) {\n\t\tthis.#jwt.nbf = input;\n\t\treturn this;\n\t}\n\tsetExpirationTime(input) {\n\t\tthis.#jwt.exp = input;\n\t\treturn this;\n\t}\n\tsetIssuedAt(input) {\n\t\tthis.#jwt.iat = input;\n\t\treturn this;\n\t}\n\tsetProtectedHeader(protectedHeader) {\n\t\tthis.#protectedHeader = protectedHeader;\n\t\treturn this;\n\t}\n\tasync sign(key, options) {\n\t\tconst sig = new CompactSign(this.#jwt.data());\n\t\tsig.setProtectedHeader(this.#protectedHeader);\n\t\tif (Array.isArray(this.#protectedHeader?.crit) && this.#protectedHeader.crit.includes(\"b64\") && this.#protectedHeader.b64 === false) throw new JWTInvalid(\"JWTs MUST NOT use unencoded payload\");\n\t\treturn sig.sign(key, options);\n\t}\n};\n//#endregion\n//#region src/verifyJwtSignedUrl.ts\n/**\n* Verifies JWT token only and returns the file key (path with leading slashes removed) if valid.\n*/\nconst verifyJwtToken = async ({ path, token, jwtSecret }) => {\n\tconst key = path.replace(/^\\/+/, \"\");\n\tif (!token) return {\n\t\tvalid: false,\n\t\terror: \"Missing token\"\n\t};\n\ttry {\n\t\tconst { payload } = await jwtVerify(token, new TextEncoder().encode(jwtSecret));\n\t\tif (!payload || payload.key !== key) return {\n\t\t\tvalid: false,\n\t\t\terror: \"Token does not match requested file\"\n\t\t};\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tkey\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terror: \"Invalid or expired token\"\n\t\t};\n\t}\n};\n/**\n* Retrieves file data through the handler and constructs a response object with appropriate headers for download.\n*/\nconst getFileResponse = async ({ key, handler }) => {\n\tconst object = await handler(key);\n\tif (!object) return {\n\t\tstatus: 404,\n\t\terror: \"File not found\"\n\t};\n\tconst pathParts = key.split(\"/\");\n\tconst fileName = pathParts[pathParts.length - 1];\n\treturn {\n\t\tstatus: 200,\n\t\tresponseHeaders: {\n\t\t\t\"Content-Type\": object.contentType || \"application/octet-stream\",\n\t\t\t\"Content-Disposition\": `attachment; filename=${fileName}`\n\t\t},\n\t\tresponseBody: object.body\n\t};\n};\n/**\n* Integrated function for JWT verification and file handling.\n* - Returns error response if token is missing or validation fails.\n* - On success, retrieves file data through the handler and constructs a response object.\n*/\nconst verifyJwtSignedUrl = async ({ path, token, jwtSecret, handler }) => {\n\tconst result = await verifyJwtToken({\n\t\tpath,\n\t\ttoken,\n\t\tjwtSecret\n\t});\n\tif (!result.valid) {\n\t\tif (result.error === \"Missing token\") return {\n\t\t\tstatus: 400,\n\t\t\terror: result.error\n\t\t};\n\t\treturn {\n\t\t\tstatus: 403,\n\t\t\terror: result.error || \"Unauthorized\"\n\t\t};\n\t}\n\treturn getFileResponse({\n\t\tkey: result.key,\n\t\thandler\n\t});\n};\n//#endregion\n//#region src/withJwtSignedUrl.ts\n/**\n* Creates a JWT-signed download URL based on the provided update information.\n*\n* @param {Object} options - Function options\n* @param {T|null} options.data - Update information (null if none)\n* @param {string} options.reqUrl - Request URL (base URL for token generation)\n* @param {string} options.jwtSecret - Secret key for JWT signing\n* @returns {Promise<T|null>} - Update response object with fileUrl or null\n*/\nconst withJwtSignedUrl = async ({ data, reqUrl, jwtSecret }) => {\n\tif (!data) return null;\n\tconst { storageUri, ...rest } = data;\n\tif (data.id === NIL_UUID || !storageUri) return {\n\t\t...rest,\n\t\tfileUrl: null\n\t};\n\tconst storageUrl = new URL(storageUri);\n\tconst key = `${storageUrl.host}${storageUrl.pathname}`;\n\tconst token = await signToken(key, jwtSecret);\n\tconst url = new URL(reqUrl);\n\turl.pathname = key;\n\turl.searchParams.set(\"token\", token);\n\treturn {\n\t\t...rest,\n\t\tfileUrl: url.toString()\n\t};\n};\nconst signToken = async (key, jwtSecret) => {\n\tconst secretKey = new TextEncoder().encode(jwtSecret);\n\treturn await new SignJWT({ key }).setProtectedHeader({ alg: \"HS256\" }).setExpirationTime(\"60s\").sign(secretKey);\n};\n//#endregion\nexport { filterCompatibleAppVersions, getUpdateInfo, semverSatisfies, signToken, verifyJwtSignedUrl, verifyJwtToken, withJwtSignedUrl };\n", "import { seedRequestUpdateBundles } from \"./requestUpdateBundleState.mjs\";\nimport { NIL_UUID } from \"@hot-updater/core\";\nimport { getUpdateInfo } from \"@hot-updater/js\";\n//#region src/resolveUpdateInfoFromBundles.ts\nconst findSeedBundle = (bundles, bundleId) => bundles.find((bundle) => bundle.id === bundleId);\nconst resolveUpdateInfoFromBundles = async ({ args, bundles, context }) => {\n\tconst info = await getUpdateInfo(bundles, args);\n\tif (!info) return null;\n\tseedRequestUpdateBundles(context, [findSeedBundle(bundles, info.id), args.bundleId === NIL_UUID ? null : findSeedBundle(bundles, args.bundleId)]);\n\treturn info;\n};\n//#endregion\nexport { resolveUpdateInfoFromBundles };\n", "//#region src/createStoragePlugin.ts\nconst wrapNodeProfile = (node, hooks) => ({\n\t...node,\n\tasync upload(key, filePath) {\n\t\tconst result = await node.upload(key, filePath);\n\t\tawait hooks?.onStorageUploaded?.();\n\t\treturn result;\n\t}\n});\nconst createProfiledStoragePlugin = ({ createProfiles, name, profileShape, supportedProtocol }, hooks) => {\n\tlet cachedProfiles = null;\n\tlet cachedNodeProfile;\n\tlet cachedRuntimeProfile;\n\tconst getProfiles = () => {\n\t\tcachedProfiles ??= createProfiles();\n\t\treturn cachedProfiles;\n\t};\n\tconst getNodeProfile = () => {\n\t\tconst node = getProfiles().node;\n\t\tif (!node) return;\n\t\tcachedNodeProfile ??= wrapNodeProfile(node, hooks);\n\t\treturn cachedNodeProfile;\n\t};\n\tconst requireNodeProfile = () => {\n\t\tconst node = getNodeProfile();\n\t\tif (!node) throw new Error(`${name} does not implement the node storage profile for protocol \"${supportedProtocol}\".`);\n\t\treturn node;\n\t};\n\tconst getRuntimeProfile = () => {\n\t\tconst runtime = getProfiles().runtime;\n\t\tif (!runtime) return;\n\t\tcachedRuntimeProfile ??= runtime;\n\t\treturn cachedRuntimeProfile;\n\t};\n\tconst requireRuntimeProfile = () => {\n\t\tconst runtime = getRuntimeProfile();\n\t\tif (!runtime) throw new Error(`${name} does not implement the runtime storage profile for protocol \"${supportedProtocol}\".`);\n\t\treturn runtime;\n\t};\n\tconst profiles = {};\n\tif (profileShape?.node) {\n\t\tconst nodeProfile = {\n\t\t\tasync delete(storageUri) {\n\t\t\t\treturn requireNodeProfile().delete(storageUri);\n\t\t\t},\n\t\t\tasync downloadFile(storageUri, filePath) {\n\t\t\t\treturn requireNodeProfile().downloadFile(storageUri, filePath);\n\t\t\t},\n\t\t\tasync exists(storageUri) {\n\t\t\t\treturn requireNodeProfile().exists(storageUri);\n\t\t\t},\n\t\t\tasync upload(key, filePath) {\n\t\t\t\treturn requireNodeProfile().upload(key, filePath);\n\t\t\t}\n\t\t};\n\t\tObject.defineProperties(nodeProfile, {\n\t\t\tdeleteObjects: {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => {\n\t\t\t\t\tconst deleteObjects = requireNodeProfile().deleteObjects;\n\t\t\t\t\treturn deleteObjects ? (keys) => deleteObjects(keys) : void 0;\n\t\t\t\t}\n\t\t\t},\n\t\t\tlistObjects: {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => {\n\t\t\t\t\tconst listObjects = requireNodeProfile().listObjects;\n\t\t\t\t\treturn listObjects ? (prefix) => listObjects(prefix) : void 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tprofiles.node = nodeProfile;\n\t} else if (profileShape?.node !== false) Object.defineProperty(profiles, \"node\", {\n\t\tenumerable: true,\n\t\tget: getNodeProfile\n\t});\n\tif (profileShape?.runtime) profiles.runtime = {\n\t\tasync getDownloadUrl(storageUri, context) {\n\t\t\treturn requireRuntimeProfile().getDownloadUrl(storageUri, context);\n\t\t},\n\t\tasync readText(storageUri, context) {\n\t\t\treturn requireRuntimeProfile().readText(storageUri, context);\n\t\t}\n\t};\n\telse if (profileShape?.runtime !== false) Object.defineProperty(profiles, \"runtime\", {\n\t\tenumerable: true,\n\t\tget: getRuntimeProfile\n\t});\n\treturn {\n\t\tname,\n\t\tsupportedProtocol,\n\t\tprofiles\n\t};\n};\n/**\n* Creates a deploy/CLI/console storage plugin.\n*/\nconst createNodeStoragePlugin = (options) => {\n\treturn (config, hooks) => {\n\t\treturn () => createProfiledStoragePlugin({\n\t\t\tcreateProfiles: () => ({ node: options.factory(config) }),\n\t\t\tname: options.name,\n\t\t\tprofileShape: {\n\t\t\t\tnode: true,\n\t\t\t\truntime: false\n\t\t\t},\n\t\t\tsupportedProtocol: options.supportedProtocol\n\t\t}, hooks);\n\t};\n};\n/**\n* Creates an update-check runtime storage plugin.\n*/\nconst createRuntimeStoragePlugin = (options) => {\n\treturn (config, hooks) => {\n\t\treturn () => createProfiledStoragePlugin({\n\t\t\tcreateProfiles: () => ({ runtime: options.factory(config) }),\n\t\t\tname: options.name,\n\t\t\tprofileShape: {\n\t\t\t\tnode: false,\n\t\t\t\truntime: true\n\t\t\t},\n\t\t\tsupportedProtocol: options.supportedProtocol\n\t\t}, hooks);\n\t};\n};\n/**\n* Creates a storage plugin that can be used by both Node tooling and update\n* check runtimes.\n*/\nconst createUniversalStoragePlugin = (options) => {\n\treturn (config, hooks) => {\n\t\treturn () => createProfiledStoragePlugin({\n\t\t\tcreateProfiles: () => options.factory(config),\n\t\t\tname: options.name,\n\t\t\tprofileShape: {\n\t\t\t\tnode: true,\n\t\t\t\truntime: true\n\t\t\t},\n\t\t\tsupportedProtocol: options.supportedProtocol\n\t\t}, hooks);\n\t};\n};\n//#endregion\nexport { createNodeStoragePlugin, createRuntimeStoragePlugin, createUniversalStoragePlugin };\n", "//#region src/parseStorageUri.ts\nconst decodeStorageObjectKey = (key) => {\n\ttry {\n\t\treturn decodeURIComponent(key);\n\t} catch {\n\t\treturn key;\n\t}\n};\n/**\n* Parses a storage URI and validates the protocol.\n*\n* @param storageUri - The storage URI to parse (e.g., \"s3://bucket/path/to/file\")\n* @param expectedProtocol - The expected protocol without colon (e.g., \"s3\", \"r2\", \"gs\")\n* @returns Parsed storage URI components\n* @throws Error if the URI is invalid or protocol doesn't match\n*\n* @example\n* ```typescript\n* const { bucket, key } = parseStorageUri(\"s3://my-bucket/path/to/file.zip\", \"s3\");\n* // bucket: \"my-bucket\"\n* // key: \"path/to/file.zip\"\n* ```\n*/\nfunction parseStorageUri(storageUri, expectedProtocol) {\n\ttry {\n\t\tconst url = new URL(storageUri);\n\t\tconst protocol = url.protocol.replace(\":\", \"\");\n\t\tif (protocol !== expectedProtocol) throw new Error(`Invalid storage URI protocol. Expected ${expectedProtocol}, got ${protocol}`);\n\t\treturn {\n\t\t\tprotocol,\n\t\t\tbucket: url.hostname,\n\t\t\tkey: decodeStorageObjectKey(url.pathname.slice(1))\n\t\t};\n\t} catch (error) {\n\t\tif (error instanceof TypeError) throw new Error(`Invalid storage URI format: ${storageUri}`);\n\t\tthrow error;\n\t}\n}\n//#endregion\nexport { decodeStorageObjectKey, parseStorageUri };\n", "//#region src/storageProfile.ts\nconst createMissingProfileError = (plugin, profile) => /* @__PURE__ */ new Error(`${plugin.name} does not implement the ${profile} storage profile for protocol \"${plugin.supportedProtocol}\".`);\nconst isNodeStoragePlugin = (plugin) => Boolean(plugin.profiles.node);\nconst isRuntimeStoragePlugin = (plugin) => Boolean(plugin.profiles.runtime);\nfunction assertNodeStoragePlugin(plugin) {\n\tif (!isNodeStoragePlugin(plugin)) throw createMissingProfileError(plugin, \"node\");\n}\nfunction assertRuntimeStoragePlugin(plugin) {\n\tif (!isRuntimeStoragePlugin(plugin)) throw createMissingProfileError(plugin, \"runtime\");\n}\n//#endregion\nexport { assertNodeStoragePlugin, assertRuntimeStoragePlugin, isNodeStoragePlugin, isRuntimeStoragePlugin };\n", "//#region package.json\nvar version = \"0.36.7\";\n//#endregion\nexport { version };\n", "import { version } from \"./package.mjs\";\n//#region src/version.ts\nconst HOT_UPDATER_SERVER_VERSION = version;\n//#endregion\nexport { HOT_UPDATER_SERVER_VERSION };\n", "//#region src/internalRouter.ts\nconst normalizePath = (path) => {\n\tif (!path) return \"/\";\n\tif (path === \"/\") return path;\n\tconst withLeadingSlash = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn withLeadingSlash.endsWith(\"/\") ? withLeadingSlash.slice(0, -1) : withLeadingSlash;\n};\nconst toSegments = (path) => {\n\tconst normalized = normalizePath(path);\n\treturn normalized === \"/\" ? [] : normalized.slice(1).split(\"/\");\n};\nfunction createRouter() {\n\treturn { routes: [] };\n}\nfunction addRoute(router, method, path, data) {\n\tconst segments = toSegments(path);\n\tconst paramNames = segments.filter((segment) => segment.startsWith(\":\")).map((segment) => segment.slice(1));\n\trouter.routes.push({\n\t\tdata,\n\t\tmethod: method.toUpperCase(),\n\t\tparamNames,\n\t\tsegments\n\t});\n}\nfunction findRoute(router, method, path) {\n\tconst normalizedMethod = method.toUpperCase();\n\tconst pathSegments = toSegments(path);\n\tfor (const route of router.routes) {\n\t\tif (route.method !== normalizedMethod) continue;\n\t\tif (route.segments.length !== pathSegments.length) continue;\n\t\tconst params = {};\n\t\tlet matched = true;\n\t\tfor (let index = 0; index < route.segments.length; index += 1) {\n\t\t\tconst routeSegment = route.segments[index];\n\t\t\tconst pathSegment = pathSegments[index];\n\t\t\tif (routeSegment.startsWith(\":\")) {\n\t\t\t\tparams[routeSegment.slice(1)] = pathSegment;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (routeSegment !== pathSegment) {\n\t\t\t\tmatched = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (matched) return {\n\t\t\tdata: route.data,\n\t\t\tparams\n\t\t};\n\t}\n}\n//#endregion\nexport { addRoute, createRouter, findRoute };\n", "import { addRoute, createRouter, findRoute } from \"./internalRouter.mjs\";\nimport { HOT_UPDATER_SERVER_VERSION } from \"./version.mjs\";\nimport { isGreaterOrEqual, normalize } from \"verkit\";\n//#region src/handler.ts\nvar HandlerBadRequestError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"HandlerBadRequestError\";\n\t}\n};\nconst SDK_VERSION_HEADER = \"Hot-Updater-SDK-Version\";\nconst EXPLICIT_NO_UPDATE_MIN_SDK_VERSION = \"0.31.0\";\nconst DEFAULT_BUNDLE_LIST_LIMIT = 50;\nconst MAX_BUNDLE_LIST_LIMIT = 100;\nconst supportsExplicitNoUpdateResponse = (request) => {\n\tconst sdkVersion = request.headers.get(SDK_VERSION_HEADER)?.trim();\n\tif (!sdkVersion) return false;\n\tconst normalizedSdkVersion = normalize(sdkVersion);\n\treturn normalizedSdkVersion !== null && isGreaterOrEqual(normalizedSdkVersion, EXPLICIT_NO_UPDATE_MIN_SDK_VERSION);\n};\nconst serializeUpdateInfo = (updateInfo, request) => {\n\tif (updateInfo) return JSON.stringify(updateInfo);\n\tif (supportsExplicitNoUpdateResponse(request)) return JSON.stringify({ status: \"UP_TO_DATE\" });\n\treturn JSON.stringify(null);\n};\nconst handleVersion = async () => {\n\treturn new Response(JSON.stringify({ version: HOT_UPDATER_SERVER_VERSION }), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst decodeMaybe = (value) => {\n\tif (value === void 0) return void 0;\n\ttry {\n\t\treturn decodeURIComponent(value);\n\t} catch {\n\t\treturn value;\n\t}\n};\nconst isPlatform = (value) => {\n\treturn value === \"ios\" || value === \"android\";\n};\nconst requireRouteParam = (params, key) => {\n\tconst value = params[key];\n\tif (!value) throw new HandlerBadRequestError(`Missing route parameter: ${key}`);\n\treturn value;\n};\nconst parseBooleanSearchParam = (url, key) => {\n\tconst value = url.searchParams.get(key);\n\tif (value === null) return;\n\tif (value === \"true\") return true;\n\tif (value === \"false\") return false;\n\tthrow new HandlerBadRequestError(`The '${key}' query parameter must be 'true' or 'false'.`);\n};\nconst parseNullableStringSearchParam = (url, key) => {\n\tconst value = url.searchParams.get(key);\n\tif (value === null) return;\n\treturn value === \"null\" ? null : value;\n};\nconst parseStringArraySearchParam = (url, key) => {\n\tconst values = url.searchParams.getAll(key);\n\treturn values.length > 0 ? values : void 0;\n};\nconst parsePositiveIntegerSearchParam = (url, key, defaultValue, maxValue) => {\n\tconst value = url.searchParams.get(key);\n\tif (value === null) return defaultValue;\n\tconst parsed = Number(value);\n\tif (!Number.isInteger(parsed) || parsed < 1 || parsed > maxValue) throw new HandlerBadRequestError(`The '${key}' query parameter must be a positive integer between 1 and ${maxValue}.`);\n\treturn parsed;\n};\nconst requirePlatformParam = (params) => {\n\tconst platform = requireRouteParam(params, \"platform\");\n\tif (!isPlatform(platform)) throw new HandlerBadRequestError(`Invalid platform: ${platform}. Expected 'ios' or 'android'.`);\n\treturn platform;\n};\nconst requireBundlePatchPayload = (payload, bundleId) => {\n\tif (!payload || typeof payload !== \"object\" || Array.isArray(payload)) throw new HandlerBadRequestError(\"Invalid bundle payload\");\n\tconst bundlePatch = payload;\n\tif (bundlePatch.id !== void 0 && bundlePatch.id !== bundleId) throw new HandlerBadRequestError(\"Bundle id mismatch\");\n\tconst { id: _ignoredId, ...rest } = bundlePatch;\n\treturn rest;\n};\nconst handleFingerprintUpdateWithCohort = async (params, request, api, context) => {\n\tconst platform = requirePlatformParam(params);\n\tconst fingerprintHash = requireRouteParam(params, \"fingerprintHash\");\n\tconst channel = requireRouteParam(params, \"channel\");\n\tconst minBundleId = requireRouteParam(params, \"minBundleId\");\n\tconst bundleId = requireRouteParam(params, \"bundleId\");\n\tconst updateInfo = await api.getAppUpdateInfo({\n\t\t_updateStrategy: \"fingerprint\",\n\t\tplatform,\n\t\tfingerprintHash,\n\t\tchannel,\n\t\tminBundleId,\n\t\tbundleId,\n\t\tcohort: decodeMaybe(params.cohort)\n\t}, context);\n\treturn new Response(serializeUpdateInfo(updateInfo, request), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleAppVersionUpdateWithCohort = async (params, request, api, context) => {\n\tconst platform = requirePlatformParam(params);\n\tconst appVersion = requireRouteParam(params, \"appVersion\");\n\tconst channel = requireRouteParam(params, \"channel\");\n\tconst minBundleId = requireRouteParam(params, \"minBundleId\");\n\tconst bundleId = requireRouteParam(params, \"bundleId\");\n\tconst updateInfo = await api.getAppUpdateInfo({\n\t\t_updateStrategy: \"appVersion\",\n\t\tplatform,\n\t\tappVersion,\n\t\tchannel,\n\t\tminBundleId,\n\t\tbundleId,\n\t\tcohort: decodeMaybe(params.cohort)\n\t}, context);\n\treturn new Response(serializeUpdateInfo(updateInfo, request), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleGetBundle = async (params, _request, api, context) => {\n\tconst bundleId = requireRouteParam(params, \"id\");\n\tconst bundle = await api.getBundleById(bundleId, context);\n\tif (!bundle) return new Response(JSON.stringify({ error: \"Bundle not found\" }), {\n\t\tstatus: 404,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n\treturn new Response(JSON.stringify(bundle), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleGetBundles = async (_params, request, api, context) => {\n\tconst url = new URL(request.url);\n\tconst channel = url.searchParams.get(\"channel\") ?? void 0;\n\tconst platform = url.searchParams.get(\"platform\");\n\tconst limit = parsePositiveIntegerSearchParam(url, \"limit\", DEFAULT_BUNDLE_LIST_LIMIT, MAX_BUNDLE_LIST_LIMIT);\n\tconst pageParam = url.searchParams.get(\"page\");\n\tconst offset = url.searchParams.get(\"offset\");\n\tconst after = url.searchParams.get(\"after\") ?? void 0;\n\tconst before = url.searchParams.get(\"before\") ?? void 0;\n\tconst enabled = parseBooleanSearchParam(url, \"enabled\");\n\tconst targetAppVersion = parseNullableStringSearchParam(url, \"targetAppVersion\");\n\tconst targetAppVersionIn = parseStringArraySearchParam(url, \"targetAppVersionIn\");\n\tconst targetAppVersionNotNull = parseBooleanSearchParam(url, \"targetAppVersionNotNull\");\n\tconst fingerprintHash = parseNullableStringSearchParam(url, \"fingerprintHash\");\n\tconst idEq = url.searchParams.get(\"idEq\") ?? void 0;\n\tconst idGt = url.searchParams.get(\"idGt\") ?? void 0;\n\tconst idGte = url.searchParams.get(\"idGte\") ?? void 0;\n\tconst idLt = url.searchParams.get(\"idLt\") ?? void 0;\n\tconst idLte = url.searchParams.get(\"idLte\") ?? void 0;\n\tconst idIn = parseStringArraySearchParam(url, \"idIn\");\n\tconst page = pageParam === null ? void 0 : Number.isInteger(Number(pageParam)) && Number(pageParam) > 0 ? Number(pageParam) : null;\n\tif (offset !== null) throw new HandlerBadRequestError(\"The 'offset' query parameter has been removed. Use 'after' or 'before' cursor pagination instead.\");\n\tif (page === null) throw new HandlerBadRequestError(\"The 'page' query parameter must be a positive integer.\");\n\tif (platform !== null && !isPlatform(platform)) throw new HandlerBadRequestError(`Invalid platform: ${platform}. Expected 'ios' or 'android'.`);\n\tconst result = await api.getBundles({\n\t\twhere: {\n\t\t\t...channel && { channel },\n\t\t\t...platform && { platform },\n\t\t\t...enabled !== void 0 && { enabled },\n\t\t\t...idEq || idGt || idGte || idLt || idLte || idIn && idIn.length > 0 ? { id: {\n\t\t\t\t...idEq && { eq: idEq },\n\t\t\t\t...idGt && { gt: idGt },\n\t\t\t\t...idGte && { gte: idGte },\n\t\t\t\t...idLt && { lt: idLt },\n\t\t\t\t...idLte && { lte: idLte },\n\t\t\t\t...idIn && idIn.length > 0 && { in: idIn }\n\t\t\t} } : {},\n\t\t\t...targetAppVersion !== void 0 && { targetAppVersion },\n\t\t\t...targetAppVersionIn && { targetAppVersionIn },\n\t\t\t...targetAppVersionNotNull !== void 0 && { targetAppVersionNotNull },\n\t\t\t...fingerprintHash !== void 0 && { fingerprintHash }\n\t\t},\n\t\tlimit,\n\t\tpage,\n\t\tcursor: after || before ? {\n\t\t\tafter,\n\t\t\tbefore\n\t\t} : void 0\n\t}, context);\n\treturn new Response(JSON.stringify(result), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleCreateBundles = async (_params, request, api, context) => {\n\tconst body = await request.json();\n\tconst bundles = Array.isArray(body) ? body : [body];\n\tfor (const bundle of bundles) await api.insertBundle(bundle, context);\n\treturn new Response(JSON.stringify({ success: true }), {\n\t\tstatus: 201,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleUpdateBundle = async (params, request, api, context) => {\n\tconst bundleId = requireRouteParam(params, \"id\");\n\tconst body = await request.json();\n\tconst bundlePatch = requireBundlePatchPayload(Array.isArray(body) ? body[0] : body, bundleId);\n\tawait api.updateBundleById(bundleId, bundlePatch, context);\n\treturn new Response(JSON.stringify({ success: true }), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleDeleteBundle = async (params, _request, api, context) => {\n\tconst bundleId = requireRouteParam(params, \"id\");\n\tawait api.deleteBundleById(bundleId, context);\n\treturn new Response(JSON.stringify({ success: true }), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst handleGetChannels = async (_params, _request, api, context) => {\n\tconst response = { data: { channels: await api.getChannels(context) } };\n\treturn new Response(JSON.stringify(response), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n};\nconst routes = {\n\tversion: handleVersion,\n\tfingerprintUpdateWithCohort: handleFingerprintUpdateWithCohort,\n\tappVersionUpdateWithCohort: handleAppVersionUpdateWithCohort,\n\tgetBundle: handleGetBundle,\n\tgetBundles: handleGetBundles,\n\tcreateBundles: handleCreateBundles,\n\tupdateBundle: handleUpdateBundle,\n\tdeleteBundle: handleDeleteBundle,\n\tgetChannels: handleGetChannels\n};\n/**\n* Creates a Web Standard Request handler for Hot Updater API\n* This handler is framework-agnostic and works with any runtime that\n* supports standard Request/Response objects.\n*/\nfunction createHandler(api, options = {}) {\n\tconst basePath = options.basePath ?? \"/api\";\n\tconst routeOptions = {\n\t\tupdateCheck: options.routes?.updateCheck ?? true,\n\t\tbundles: options.routes?.bundles ?? false\n\t};\n\tconst router = createRouter();\n\taddRoute(router, \"GET\", \"/version\", \"version\");\n\tif (routeOptions.updateCheck) {\n\t\taddRoute(router, \"GET\", \"/fingerprint/:platform/:fingerprintHash/:channel/:minBundleId/:bundleId\", \"fingerprintUpdateWithCohort\");\n\t\taddRoute(router, \"GET\", \"/fingerprint/:platform/:fingerprintHash/:channel/:minBundleId/:bundleId/:cohort\", \"fingerprintUpdateWithCohort\");\n\t\taddRoute(router, \"GET\", \"/app-version/:platform/:appVersion/:channel/:minBundleId/:bundleId\", \"appVersionUpdateWithCohort\");\n\t\taddRoute(router, \"GET\", \"/app-version/:platform/:appVersion/:channel/:minBundleId/:bundleId/:cohort\", \"appVersionUpdateWithCohort\");\n\t}\n\tif (routeOptions.bundles) {\n\t\taddRoute(router, \"GET\", \"/api/bundles/channels\", \"getChannels\");\n\t\taddRoute(router, \"GET\", \"/api/bundles/:id\", \"getBundle\");\n\t\taddRoute(router, \"GET\", \"/api/bundles\", \"getBundles\");\n\t\taddRoute(router, \"POST\", \"/api/bundles\", \"createBundles\");\n\t\taddRoute(router, \"PATCH\", \"/api/bundles/:id\", \"updateBundle\");\n\t\taddRoute(router, \"DELETE\", \"/api/bundles/:id\", \"deleteBundle\");\n\t}\n\treturn async (request, context) => {\n\t\ttry {\n\t\t\tconst path = new URL(request.url).pathname;\n\t\t\tconst method = request.method;\n\t\t\tconst match = findRoute(router, method, path.startsWith(basePath) ? path.slice(basePath.length) : path);\n\t\t\tif (!match) return new Response(JSON.stringify({ error: \"Not found\" }), {\n\t\t\t\tstatus: 404,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t});\n\t\t\tconst handler = routes[match.data];\n\t\t\tif (!handler) return new Response(JSON.stringify({ error: \"Handler not found\" }), {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t});\n\t\t\treturn await handler(match.params || {}, request, api, context);\n\t\t} catch (error) {\n\t\t\tif (error instanceof HandlerBadRequestError) return new Response(JSON.stringify({ error: error.message }), {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t});\n\t\t\tconsole.error(\"Hot Updater handler error:\", error);\n\t\t\treturn new Response(JSON.stringify({\n\t\t\t\terror: \"Internal server error\",\n\t\t\t\tmessage: error instanceof Error ? error.message : \"Unknown error\"\n\t\t\t}), {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\nexport { createHandler };\n", "import { DEFAULT_ROLLOUT_COHORT_COUNT, INVALID_COHORT_ERROR_MESSAGE, isValidCohort } from \"@hot-updater/core\";\n//#region src/db/schemaEnhancements.ts\nconst normalizeNullableString = (value) => {\n\tif (value === null || value === void 0) return null;\n\tconst normalized = value.trim();\n\treturn normalized.length > 0 ? normalized : null;\n};\nconst assertBundlePersistenceConstraints = (bundle) => {\n\tconst targetAppVersion = normalizeNullableString(bundle.targetAppVersion);\n\tconst fingerprintHash = normalizeNullableString(bundle.fingerprintHash);\n\tif (!targetAppVersion && !fingerprintHash) throw new Error(\"Bundle must define either targetAppVersion or fingerprintHash.\");\n\tconst rolloutCohortCount = bundle.rolloutCohortCount;\n\tif (rolloutCohortCount !== null && rolloutCohortCount !== void 0) {\n\t\tif (!Number.isInteger(rolloutCohortCount) || rolloutCohortCount < 0 || rolloutCohortCount > DEFAULT_ROLLOUT_COHORT_COUNT) throw new Error(`rolloutCohortCount must be an integer between 0 and ${DEFAULT_ROLLOUT_COHORT_COUNT}.`);\n\t}\n\tfor (const cohort of bundle.targetCohorts ?? []) if (!isValidCohort(cohort)) throw new Error(`Invalid target cohort \"${cohort}\". ${INVALID_COHORT_ERROR_MESSAGE}`);\n};\n//#endregion\nexport { assertBundlePersistenceConstraints };\n", "import { getManifestAssetDownloadPath, resolveManifestAssetStorageUri } from \"@hot-updater/plugin-core\";\nimport { getAssetBaseStorageUri, getBundlePatch, getManifestFileHash, getManifestStorageUri, stripBundleArtifactMetadata } from \"@hot-updater/core\";\n//#region src/db/updateArtifacts.ts\nconst HBC_ASSET_PATH_RE = /\\.bundle$/;\nconst resolveUniqueHbcAssetPath = (manifest) => {\n\tconst candidates = Object.keys(manifest.assets).sort((left, right) => left.localeCompare(right)).filter((candidate) => HBC_ASSET_PATH_RE.test(candidate));\n\treturn candidates.length === 1 ? candidates[0] : null;\n};\nconst isBundleManifest = (value) => {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst manifest = value;\n\tif (typeof manifest.bundleId !== \"string\") return false;\n\tif (!manifest.assets || typeof manifest.assets !== \"object\") return false;\n\treturn Object.values(manifest.assets).every((asset) => {\n\t\tif (!asset || typeof asset !== \"object\" || Array.isArray(asset)) return false;\n\t\tconst manifestAsset = asset;\n\t\treturn typeof manifestAsset.fileHash === \"string\" && (manifestAsset.signature === void 0 || typeof manifestAsset.signature === \"string\");\n\t});\n};\nconst parseBundleMetadata = (value) => {\n\tif (!value) return;\n\tlet parsedValue = value;\n\tif (typeof parsedValue === \"string\") try {\n\t\tparsedValue = JSON.parse(parsedValue);\n\t} catch {\n\t\treturn;\n\t}\n\tif (!parsedValue || typeof parsedValue !== \"object\" || Array.isArray(parsedValue)) return;\n\treturn stripBundleArtifactMetadata(parsedValue);\n};\nasync function fetchBundleManifest(storageUri, readStorageText, resolveFileUrl, context) {\n\tconst [storageText, fileUrl] = await Promise.all([readStorageText(storageUri, context), resolveFileUrl(storageUri, context)]);\n\tif (storageText === null) return null;\n\tlet payload;\n\ttry {\n\t\tpayload = JSON.parse(storageText);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (!isBundleManifest(payload)) return null;\n\tif (!fileUrl) return null;\n\treturn {\n\t\tfileUrl,\n\t\tmanifest: payload\n\t};\n}\nasync function resolveChangedAssets({ assetBaseStorageUri, currentManifest, currentBundle, resolveFileUrl, targetBundle, targetManifest, context }) {\n\tconst patchDescriptor = await resolveHbcPatchDescriptor({\n\t\tcurrentBundle,\n\t\tresolveFileUrl,\n\t\ttargetBundle,\n\t\ttargetManifest,\n\t\tcontext\n\t});\n\tconst changedEntries = await Promise.all(Object.entries(targetManifest.assets).map(async ([assetPath, asset]) => {\n\t\tif ((currentManifest?.assets[assetPath])?.fileHash === asset.fileHash) return null;\n\t\tconst downloadPath = getManifestAssetDownloadPath(assetPath);\n\t\tconst usesBrotliAsset = downloadPath !== assetPath;\n\t\tconst storageUri = resolveManifestAssetStorageUri({\n\t\t\tassetBaseStorageUri,\n\t\t\tassetPath: downloadPath,\n\t\t\tfileHash: asset.fileHash\n\t\t});\n\t\tconst patch = patchDescriptor?.assetPath === assetPath ? patchDescriptor.patch : null;\n\t\tlet fileUrl = null;\n\t\ttry {\n\t\t\tfileUrl = await resolveFileUrl(storageUri, context);\n\t\t} catch (error) {\n\t\t\tif (!patch) throw error;\n\t\t}\n\t\tif (!fileUrl && !patch) return false;\n\t\tconst changedAsset = { fileHash: asset.fileHash };\n\t\tif (fileUrl) {\n\t\t\tchangedAsset.file = { url: fileUrl };\n\t\t\tif (usesBrotliAsset) changedAsset.file.compression = \"br\";\n\t\t}\n\t\tif (patch) changedAsset.patch = patch;\n\t\treturn [assetPath, changedAsset];\n\t}));\n\tif (changedEntries.some((entry) => entry === false)) return null;\n\treturn Object.fromEntries(changedEntries.filter((entry) => entry !== null));\n}\nasync function resolveHbcPatchDescriptor({ currentBundle, resolveFileUrl, targetBundle, targetManifest, context }) {\n\tconst matchingPatch = targetBundle && currentBundle ? getBundlePatch(targetBundle, currentBundle.id) : null;\n\tconst patchAssetPath = resolveUniqueHbcAssetPath(targetManifest);\n\tif (!currentBundle || !matchingPatch || !patchAssetPath || !matchingPatch.patchStorageUri || !matchingPatch.patchFileHash || !matchingPatch.baseFileHash) return null;\n\tconst patchUrl = await resolveFileUrl(matchingPatch.patchStorageUri, context);\n\tif (!patchUrl) return null;\n\treturn {\n\t\tassetPath: patchAssetPath,\n\t\tpatch: {\n\t\t\talgorithm: \"bsdiff\",\n\t\t\tbaseBundleId: matchingPatch.baseBundleId,\n\t\t\tbaseFileHash: matchingPatch.baseFileHash,\n\t\t\tpatchFileHash: matchingPatch.patchFileHash,\n\t\t\tpatchUrl\n\t\t}\n\t};\n}\nasync function resolveManifestArtifacts({ currentBundle, resolveFileUrl, readStorageText, targetBundle, context }) {\n\tconst manifestStorageUri = targetBundle ? getManifestStorageUri(targetBundle) : null;\n\tconst manifestFileHash = targetBundle ? getManifestFileHash(targetBundle) : null;\n\tconst assetBaseStorageUri = targetBundle ? getAssetBaseStorageUri(targetBundle) : null;\n\tif (!manifestStorageUri || !manifestFileHash || !assetBaseStorageUri) return null;\n\tconst currentManifestStorageUri = currentBundle ? getManifestStorageUri(currentBundle) : null;\n\tconst [targetManifestResult, currentManifestResult] = await Promise.all([fetchBundleManifest(manifestStorageUri, readStorageText, resolveFileUrl, context), currentManifestStorageUri ? fetchBundleManifest(currentManifestStorageUri, readStorageText, resolveFileUrl, context) : null]);\n\tif (!targetManifestResult) return null;\n\tconst changedAssets = await resolveChangedAssets({\n\t\tassetBaseStorageUri,\n\t\tcurrentManifest: currentManifestResult?.manifest ?? null,\n\t\tcurrentBundle,\n\t\tresolveFileUrl,\n\t\ttargetBundle,\n\t\ttargetManifest: targetManifestResult.manifest,\n\t\tcontext\n\t});\n\tif (!changedAssets) return null;\n\treturn {\n\t\tchangedAssets,\n\t\tmanifestFileHash,\n\t\tmanifestUrl: targetManifestResult.fileUrl\n\t};\n}\n//#endregion\nexport { parseBundleMetadata, resolveManifestArtifacts };\n", "import { assertBundlePersistenceConstraints } from \"./schemaEnhancements.mjs\";\nimport { resolveManifestArtifacts } from \"./updateArtifacts.mjs\";\nimport { createRequestUpdateBundleResolver, semverSatisfies } from \"@hot-updater/plugin-core\";\nimport { NIL_UUID, isCohortEligibleForUpdate } from \"@hot-updater/core\";\n//#region src/db/pluginCore.ts\nconst PAGE_SIZE = 100;\nconst DESC_ORDER = {\n\tfield: \"id\",\n\tdirection: \"desc\"\n};\nconst bundleMatchesQueryWhere = (bundle, where) => {\n\tif (!where) return true;\n\tif (where.channel !== void 0 && bundle.channel !== where.channel) return false;\n\tif (where.platform !== void 0 && bundle.platform !== where.platform) return false;\n\tif (where.enabled !== void 0 && bundle.enabled !== where.enabled) return false;\n\tif (where.id?.eq !== void 0 && bundle.id !== where.id.eq) return false;\n\tif (where.id?.gt !== void 0 && bundle.id.localeCompare(where.id.gt) <= 0) return false;\n\tif (where.id?.gte !== void 0 && bundle.id.localeCompare(where.id.gte) < 0) return false;\n\tif (where.id?.lt !== void 0 && bundle.id.localeCompare(where.id.lt) >= 0) return false;\n\tif (where.id?.lte !== void 0 && bundle.id.localeCompare(where.id.lte) > 0) return false;\n\tif (where.id?.in && !where.id.in.includes(bundle.id)) return false;\n\tif (where.targetAppVersionNotNull && bundle.targetAppVersion === null) return false;\n\tif (where.targetAppVersion !== void 0 && bundle.targetAppVersion !== where.targetAppVersion) return false;\n\tif (where.targetAppVersionIn && !where.targetAppVersionIn.includes(bundle.targetAppVersion ?? \"\")) return false;\n\tif (where.fingerprintHash !== void 0 && bundle.fingerprintHash !== where.fingerprintHash) return false;\n\treturn true;\n};\nconst sortBundles = (bundles, orderBy) => {\n\tconst direction = orderBy?.direction ?? \"desc\";\n\treturn bundles.slice().sort((a, b) => {\n\t\tconst result = a.id.localeCompare(b.id);\n\t\treturn direction === \"asc\" ? result : -result;\n\t});\n};\nconst makeResponse = (bundle, status) => ({\n\tid: bundle.id,\n\tmessage: bundle.message,\n\tshouldForceUpdate: status === \"ROLLBACK\" ? true : bundle.shouldForceUpdate,\n\tstatus,\n\tstorageUri: bundle.storageUri,\n\tfileHash: bundle.fileHash\n});\nconst INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {\n\tmessage: null,\n\tid: NIL_UUID,\n\tshouldForceUpdate: true,\n\tstatus: \"ROLLBACK\",\n\tstorageUri: null,\n\tfileHash: null\n};\nfunction createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {\n\tconst coreOptions = options;\n\tconst runWithMutationPlugin = async (operation) => {\n\t\tconst plugin = coreOptions?.createMutationPlugin?.() ?? getPlugin();\n\t\ttry {\n\t\t\treturn await operation(plugin);\n\t\t} finally {\n\t\t\tif (coreOptions?.createMutationPlugin) await coreOptions.cleanupMutationPlugin?.(plugin);\n\t\t}\n\t};\n\tconst getSortedBundlePage = async (options, context) => {\n\t\tconst result = await getPlugin().getBundles({\n\t\t\t...options,\n\t\t\torderBy: options.orderBy ?? DESC_ORDER\n\t\t}, context);\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: sortBundles(result.data, options.orderBy ?? DESC_ORDER)\n\t\t};\n\t};\n\tconst isEligibleForUpdate = (bundle, cohort) => {\n\t\treturn isCohortEligibleForUpdate(bundle.id, cohort, bundle.rolloutCohortCount, bundle.targetCohorts);\n\t};\n\tconst findUpdateInfoByScanning = async ({ args, queryWhere, isCandidate, context }) => {\n\t\tlet after;\n\t\twhile (true) {\n\t\t\tconst { data, pagination } = await getSortedBundlePage({\n\t\t\t\twhere: queryWhere,\n\t\t\t\tlimit: PAGE_SIZE,\n\t\t\t\torderBy: DESC_ORDER,\n\t\t\t\t...after ? { cursor: { after } } : {}\n\t\t\t}, context);\n\t\t\tfor (const bundle of data) {\n\t\t\t\tif (!bundleMatchesQueryWhere(bundle, queryWhere) || !isCandidate(bundle)) continue;\n\t\t\t\tif (args.bundleId === NIL_UUID) {\n\t\t\t\t\tif (isEligibleForUpdate(bundle, args.cohort)) return makeResponse(bundle, \"UPDATE\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst compareResult = bundle.id.localeCompare(args.bundleId);\n\t\t\t\tif (compareResult > 0) {\n\t\t\t\t\tif (isEligibleForUpdate(bundle, args.cohort)) return makeResponse(bundle, \"UPDATE\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (compareResult === 0) {\n\t\t\t\t\tif (isEligibleForUpdate(bundle, args.cohort)) return null;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treturn makeResponse(bundle, \"ROLLBACK\");\n\t\t\t}\n\t\t\tif (!pagination.hasNextPage) break;\n\t\t\tafter = data.at(-1)?.id;\n\t\t\tif (!after) break;\n\t\t}\n\t\tif (args.bundleId === NIL_UUID) return null;\n\t\tif (args.minBundleId && args.bundleId.localeCompare(args.minBundleId) <= 0) return null;\n\t\treturn INIT_BUNDLE_ROLLBACK_UPDATE_INFO;\n\t};\n\tconst getBaseWhere = ({ platform, channel, minBundleId }) => ({\n\t\tplatform,\n\t\tchannel,\n\t\tenabled: true,\n\t\tid: { gte: minBundleId }\n\t});\n\treturn {\n\t\tapi: {\n\t\t\tasync getBundleById(id, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\treturn getPlugin().getBundleById(id, context);\n\t\t\t},\n\t\t\tasync getUpdateInfo(args, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\tconst directGetUpdateInfo = getPlugin().getUpdateInfo;\n\t\t\t\tif (directGetUpdateInfo) return context === void 0 ? await directGetUpdateInfo(args) : await directGetUpdateInfo(args, context);\n\t\t\t\tconst channel = args.channel ?? \"production\";\n\t\t\t\tconst minBundleId = args.minBundleId ?? NIL_UUID;\n\t\t\t\tconst baseWhere = getBaseWhere({\n\t\t\t\t\tplatform: args.platform,\n\t\t\t\t\tchannel,\n\t\t\t\t\tminBundleId\n\t\t\t\t});\n\t\t\t\tif (args._updateStrategy === \"fingerprint\") return findUpdateInfoByScanning({\n\t\t\t\t\targs,\n\t\t\t\t\tqueryWhere: {\n\t\t\t\t\t\t...baseWhere,\n\t\t\t\t\t\tfingerprintHash: args.fingerprintHash\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t\tisCandidate: (bundle) => {\n\t\t\t\t\t\treturn bundle.enabled && bundle.platform === args.platform && bundle.channel === channel && bundle.id.localeCompare(minBundleId) >= 0 && bundle.fingerprintHash === args.fingerprintHash;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn findUpdateInfoByScanning({\n\t\t\t\t\targs,\n\t\t\t\t\tqueryWhere: { ...baseWhere },\n\t\t\t\t\tcontext,\n\t\t\t\t\tisCandidate: (bundle) => {\n\t\t\t\t\t\treturn bundle.enabled && bundle.platform === args.platform && bundle.channel === channel && bundle.id.localeCompare(minBundleId) >= 0 && !!bundle.targetAppVersion && semverSatisfies(bundle.targetAppVersion, args.appVersion);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync getAppUpdateInfo(args, context) {\n\t\t\t\tconst info = await this.getUpdateInfo(args, context);\n\t\t\t\tif (!info) return null;\n\t\t\t\tconst { storageUri, ...rest } = info;\n\t\t\t\tconst readStorageText = coreOptions?.readStorageText;\n\t\t\t\tif (info.id === NIL_UUID || !readStorageText) {\n\t\t\t\t\tconst fileUrl = await resolveFileUrl(storageUri ?? null, context);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rest,\n\t\t\t\t\t\tfileUrl\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst requestBundles = createRequestUpdateBundleResolver(context);\n\t\t\t\tconst getCurrentBundle = () => {\n\t\t\t\t\tif (args.bundleId === NIL_UUID) return null;\n\t\t\t\t\tconst seededCurrentBundle = requestBundles.peek(args.bundleId);\n\t\t\t\t\tif (seededCurrentBundle || requestBundles.hasSeededBundles()) return seededCurrentBundle;\n\t\t\t\t\treturn requestBundles.getById(args.bundleId, () => getPlugin().getBundleById(args.bundleId, context));\n\t\t\t\t};\n\t\t\t\tconst [fileUrl, targetBundle, currentBundle] = await Promise.all([\n\t\t\t\t\tresolveFileUrl(storageUri ?? null, context),\n\t\t\t\t\trequestBundles.getById(info.id, () => getPlugin().getBundleById(info.id, context)),\n\t\t\t\t\tgetCurrentBundle()\n\t\t\t\t]);\n\t\t\t\tconst baseResponse = {\n\t\t\t\t\t...rest,\n\t\t\t\t\tfileUrl\n\t\t\t\t};\n\t\t\t\tconst manifestArtifacts = await resolveManifestArtifacts({\n\t\t\t\t\tcurrentBundle,\n\t\t\t\t\tresolveFileUrl,\n\t\t\t\t\treadStorageText,\n\t\t\t\t\ttargetBundle,\n\t\t\t\t\tcontext\n\t\t\t\t});\n\t\t\t\tif (!manifestArtifacts) return baseResponse;\n\t\t\t\treturn {\n\t\t\t\t\t...baseResponse,\n\t\t\t\t\t...manifestArtifacts\n\t\t\t\t};\n\t\t\t},\n\t\t\tasync getChannels(context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\treturn getPlugin().getChannels(context);\n\t\t\t},\n\t\t\tasync getBundles(options, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\treturn getPlugin().getBundles(options, context);\n\t\t\t},\n\t\t\tasync insertBundle(bundle, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\tassertBundlePersistenceConstraints(bundle);\n\t\t\t\tawait runWithMutationPlugin(async (plugin) => {\n\t\t\t\t\tawait plugin.appendBundle(bundle, context);\n\t\t\t\t\tawait plugin.commitBundle(context);\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync updateBundleById(bundleId, newBundle, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\tawait runWithMutationPlugin(async (plugin) => {\n\t\t\t\t\tconst current = await plugin.getBundleById(bundleId, context);\n\t\t\t\t\tif (!current) throw new Error(\"targetBundleId not found\");\n\t\t\t\t\tassertBundlePersistenceConstraints({\n\t\t\t\t\t\t...current,\n\t\t\t\t\t\t...newBundle\n\t\t\t\t\t});\n\t\t\t\t\tawait plugin.updateBundle(bundleId, newBundle, context);\n\t\t\t\t\tawait plugin.commitBundle(context);\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync deleteBundleById(bundleId, context) {\n\t\t\t\tawait coreOptions?.beforeOperation?.();\n\t\t\t\tawait runWithMutationPlugin(async (plugin) => {\n\t\t\t\t\tconst bundle = await plugin.getBundleById(bundleId, context);\n\t\t\t\t\tif (!bundle) return;\n\t\t\t\t\tawait plugin.deleteBundle(bundle, context);\n\t\t\t\t\tawait plugin.commitBundle(context);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tadapterName: getPlugin().name,\n\t\tcreateMigrator: () => {\n\t\t\tthrow new Error(\"createMigrator is only available for Kysely/MongoDB database adapters.\");\n\t\t},\n\t\tgenerateSchema: () => {\n\t\t\tthrow new Error(\"generateSchema is only available for Drizzle/Prisma database adapters.\");\n\t\t}\n\t};\n}\n//#endregion\nexport { createPluginDatabaseCore };\n", "//#region src/schema/types.ts\nconst HOT_UPDATER_SCHEMA_VERSION = \"0.31.0\";\nconst HOT_UPDATER_SETTINGS_TABLE = \"private_hot_updater_settings\";\n//#endregion\nexport { HOT_UPDATER_SCHEMA_VERSION, HOT_UPDATER_SETTINGS_TABLE };\n", "import { HOT_UPDATER_SCHEMA_VERSION } from \"../schema/types.mjs\";\n//#region src/db/schemaReadiness.ts\nvar HotUpdaterSchemaMigrationRequiredError = class extends Error {\n\tconstructor(adapterName, currentVersion) {\n\t\tsuper(currentVersion === void 0 ? `Hot Updater database schema is not initialized for ${adapterName}. Run \\`hot-updater db migrate\\` before using this adapter.` : `Hot Updater database schema version ${currentVersion} is not supported by ${adapterName}. Run \\`hot-updater db migrate\\` to upgrade to ${HOT_UPDATER_SCHEMA_VERSION}.`);\n\t\tthis.adapterName = adapterName;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.name = \"HotUpdaterSchemaMigrationRequiredError\";\n\t}\n};\nconst createSchemaReadinessChecker = (adapterName, createMigrator) => {\n\tif (!createMigrator) return async () => {};\n\tlet ready = false;\n\treturn async () => {\n\t\tif (ready) return;\n\t\tconst version = await createMigrator().getVersion();\n\t\tif (version !== \"0.31.0\") throw new HotUpdaterSchemaMigrationRequiredError(adapterName, version);\n\t\tready = true;\n\t};\n};\n//#endregion\nexport { HotUpdaterSchemaMigrationRequiredError, createSchemaReadinessChecker };\n", "//#region src/db/types.ts\nconst sqlProviders = [\n\t\"sqlite\",\n\t\"cockroachdb\",\n\t\"mysql\",\n\t\"postgresql\",\n\t\"mssql\"\n];\nconst noSqlProviders = [\"mongodb\"];\n[...sqlProviders, ...noSqlProviders];\nfunction isDatabasePluginFactory(adapter) {\n\treturn typeof adapter === \"function\";\n}\nfunction isDatabasePlugin(adapter) {\n\treturn typeof adapter === \"object\" && adapter !== null && \"getBundleById\" in adapter && \"getBundles\" in adapter && \"getChannels\" in adapter;\n}\nfunction getSQLProvider(provider) {\n\tif (!provider) return;\n\treturn sqlProviders.includes(provider) ? provider : void 0;\n}\n//#endregion\nexport { getSQLProvider, isDatabasePlugin, isDatabasePluginFactory };\n", "//#region src/route.ts\nconst normalizeBasePath = (basePath) => {\n\tif (!basePath || basePath === \"/\") return \"/\";\n\treturn basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath;\n};\n//#endregion\nexport { normalizeBasePath };\n", "//#region src/storageAccess.ts\nconst assertRemoteDownloadUrl = (fileUrl) => {\n\ttry {\n\t\tconst protocol = new URL(fileUrl).protocol.replace(\":\", \"\");\n\t\tif (protocol === \"http\" || protocol === \"https\") return fileUrl;\n\t} catch {}\n\tthrow new Error(\"Storage plugin returned a local file path; runtime update checks require an HTTP(S) download URL.\");\n};\nconst getStorageProtocol = (storageUri) => new URL(storageUri).protocol.replace(\":\", \"\");\nconst isRemoteUrlProtocol = (protocol) => protocol === \"http\" || protocol === \"https\";\nconst createStorageAccess = (storagePlugins) => {\n\tconst findStoragePlugin = (protocol) => {\n\t\treturn storagePlugins.find((item) => item.supportedProtocol === protocol);\n\t};\n\tconst resolveFileUrl = async (storageUri, context) => {\n\t\tif (!storageUri) return null;\n\t\tconst protocol = getStorageProtocol(storageUri);\n\t\tconst plugin = findStoragePlugin(protocol);\n\t\tif (plugin) {\n\t\t\tconst { fileUrl } = await plugin.profiles.runtime.getDownloadUrl(storageUri, context);\n\t\t\tif (!fileUrl) throw new Error(\"Storage plugin returned empty fileUrl\");\n\t\t\treturn assertRemoteDownloadUrl(fileUrl);\n\t\t}\n\t\tif (isRemoteUrlProtocol(protocol)) return storageUri;\n\t\tthrow new Error(`No storage plugin for protocol: ${protocol}`);\n\t};\n\tconst readStorageText = async (storageUri, context) => {\n\t\tconst protocol = getStorageProtocol(storageUri);\n\t\tconst plugin = findStoragePlugin(protocol);\n\t\tif (plugin) return plugin.profiles.runtime.readText(storageUri, context);\n\t\tif (isRemoteUrlProtocol(protocol)) {\n\t\t\tconst response = await fetch(storageUri);\n\t\t\tif (!response.ok) return null;\n\t\t\treturn response.text();\n\t\t}\n\t\tthrow new Error(`No storage plugin for protocol: ${protocol}`);\n\t};\n\treturn {\n\t\treadStorageText,\n\t\tresolveFileUrl\n\t};\n};\n//#endregion\nexport { createStorageAccess };\n", "import { createHandler } from \"./handler.mjs\";\nimport { createPluginDatabaseCore } from \"./db/pluginCore.mjs\";\nimport { createSchemaReadinessChecker } from \"./db/schemaReadiness.mjs\";\nimport { isDatabasePlugin, isDatabasePluginFactory } from \"./db/types.mjs\";\nimport { normalizeBasePath } from \"./route.mjs\";\nimport { createStorageAccess } from \"./storageAccess.mjs\";\nimport { assertRuntimeStoragePlugin } from \"@hot-updater/plugin-core\";\n//#region src/createHotUpdaterCore.ts\nconst hotUpdaterCoreMetadata = Symbol.for(\"@hot-updater/server/core-metadata\");\nfunction getHotUpdaterCoreMetadata(hotUpdater) {\n\treturn hotUpdater[hotUpdaterCoreMetadata];\n}\nfunction createHotUpdaterCore(options) {\n\tconst database = options.database;\n\tconst basePath = normalizeBasePath(options.basePath ?? \"/api\");\n\tconst { readStorageText, resolveFileUrl } = createStorageAccess((options.storages ?? options.storagePlugins ?? []).map((plugin) => {\n\t\tconst storagePlugin = typeof plugin === \"function\" ? plugin() : plugin;\n\t\tassertRuntimeStoragePlugin(storagePlugin);\n\t\treturn storagePlugin;\n\t}));\n\tif (!isDatabasePluginFactory(database) && !isDatabasePlugin(database)) throw new Error(\"@hot-updater/server only supports database plugins.\");\n\tconst adapterCapabilities = database;\n\tconst plugin = isDatabasePluginFactory(database) ? database() : database;\n\tconst assertSchemaReady = createSchemaReadinessChecker(adapterCapabilities.adapterName ?? plugin.name, adapterCapabilities.createMigrator);\n\tconst core = createPluginDatabaseCore(() => plugin, resolveFileUrl, isDatabasePluginFactory(database) ? {\n\t\tcreateMutationPlugin: () => database(),\n\t\tbeforeOperation: assertSchemaReady,\n\t\treadStorageText\n\t} : {\n\t\tbeforeOperation: assertSchemaReady,\n\t\treadStorageText\n\t});\n\tconst internalHandler = createHandler(core.api, {\n\t\tbasePath,\n\t\troutes: options.routes\n\t});\n\tconst handler = (request, context, ...extraArgs) => {\n\t\tif (extraArgs.length > 0) return internalHandler(request);\n\t\treturn internalHandler(request, context);\n\t};\n\tconst api = {\n\t\tbasePath,\n\t\tadapterName: adapterCapabilities.adapterName ?? core.adapterName,\n\t\thandler\n\t};\n\tObject.defineProperties(api, Object.getOwnPropertyDescriptors(core.api));\n\tObject.defineProperty(api, hotUpdaterCoreMetadata, {\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tadapterCapabilities,\n\t\t\tcore\n\t\t}\n\t});\n\treturn {\n\t\tapi,\n\t\tadapterCapabilities,\n\t\tcore\n\t};\n}\nfunction createHotUpdater(options) {\n\treturn createHotUpdaterCore(options).api;\n}\n//#endregion\nexport { createHotUpdater, getHotUpdaterCoreMetadata };\n", "// src/compose.ts\nvar compose = (middleware, onError, onNotFound) => {\n return (context, next) => {\n let index = -1;\n return dispatch(0);\n async function dispatch(i) {\n if (i <= index) {\n throw new Error(\"next() called multiple times\");\n }\n index = i;\n let res;\n let isError = false;\n let handler;\n if (middleware[i]) {\n handler = middleware[i][0][0];\n context.req.routeIndex = i;\n } else {\n handler = i === middleware.length && next || void 0;\n }\n if (handler) {\n try {\n res = await handler(context, () => dispatch(i + 1));\n } catch (err) {\n if (err instanceof Error && onError) {\n context.error = err;\n res = await onError(err, context);\n isError = true;\n } else {\n throw err;\n }\n }\n } else {\n if (context.finalized === false && onNotFound) {\n res = await onNotFound(context);\n }\n }\n if (res && (context.finalized === false || isError)) {\n context.res = res;\n }\n return context;\n }\n };\n};\nexport {\n compose\n};\n", "// src/request/constants.ts\nvar GET_MATCH_RESULT = /* @__PURE__ */ Symbol();\nexport {\n GET_MATCH_RESULT\n};\n", "// src/utils/buffer.ts\nimport { sha256 } from \"./crypto.js\";\nvar equal = (a, b) => {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const va = new DataView(a);\n const vb = new DataView(b);\n let i = va.byteLength;\n while (i--) {\n if (va.getUint8(i) !== vb.getUint8(i)) {\n return false;\n }\n }\n return true;\n};\nvar constantTimeEqualString = (a, b) => {\n const aLen = a.length;\n const bLen = b.length;\n const maxLen = Math.max(aLen, bLen);\n let out = aLen ^ bLen;\n for (let i = 0; i < maxLen; i++) {\n const aChar = i < aLen ? a.charCodeAt(i) : 0;\n const bChar = i < bLen ? b.charCodeAt(i) : 0;\n out |= aChar ^ bChar;\n }\n return out === 0;\n};\nvar timingSafeEqualString = async (a, b, hashFunction) => {\n if (!hashFunction) {\n hashFunction = sha256;\n }\n const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);\n if (sa == null || sb == null || typeof sa !== \"string\" || typeof sb !== \"string\") {\n return false;\n }\n const hashEqual = constantTimeEqualString(sa, sb);\n const originalEqual = constantTimeEqualString(a, b);\n return hashEqual && originalEqual;\n};\nvar timingSafeEqual = async (a, b, hashFunction) => {\n if (typeof a === \"string\" && typeof b === \"string\") {\n return timingSafeEqualString(a, b, hashFunction);\n }\n if (!hashFunction) {\n hashFunction = sha256;\n }\n const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);\n if (!sa || !sb || typeof sa !== \"string\" || typeof sb !== \"string\") {\n return false;\n }\n return timingSafeEqualString(sa, sb);\n};\nvar bufferToString = (buffer) => {\n if (buffer instanceof ArrayBuffer) {\n const enc = new TextDecoder(\"utf-8\");\n return enc.decode(buffer);\n }\n return buffer;\n};\nvar bufferToFormData = (arrayBuffer, contentType) => {\n const response = new Response(arrayBuffer, {\n headers: {\n // Normalize the media type (case-insensitive) while keeping parameters like the boundary\n \"Content-Type\": contentType.replace(/^[^;]+/, (mediaType) => mediaType.toLowerCase())\n }\n });\n return response.formData();\n};\nexport {\n bufferToFormData,\n bufferToString,\n equal,\n timingSafeEqual\n};\n", "// src/utils/body.ts\nimport { bufferToFormData } from \"./buffer.js\";\nvar isRawRequest = (request) => \"headers\" in request;\nvar parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {\n const { all = false, dot = false } = options;\n const headers = isRawRequest(request) ? request.headers : request.raw.headers;\n const contentType = headers.get(\"Content-Type\");\n const mediaType = contentType?.split(\";\")[0].trim().toLowerCase();\n if (mediaType === \"multipart/form-data\" || mediaType === \"application/x-www-form-urlencoded\") {\n return parseFormData(request, { all, dot });\n }\n return {};\n};\nasync function parseFormData(request, options) {\n if (!isRawRequest(request) && request.bodyCache.formData) {\n return convertFormDataToBodyData(\n await request.bodyCache.formData,\n options\n );\n }\n const headers = isRawRequest(request) ? request.headers : request.raw.headers;\n const arrayBuffer = await request.arrayBuffer();\n const formDataPromise = bufferToFormData(arrayBuffer, headers.get(\"Content-Type\") || \"\");\n if (!isRawRequest(request)) {\n request.bodyCache.formData = formDataPromise;\n }\n const formData = await formDataPromise;\n if (formData) {\n return convertFormDataToBodyData(formData, options);\n }\n return {};\n}\nfunction convertFormDataToBodyData(formData, options) {\n const form = /* @__PURE__ */ Object.create(null);\n formData.forEach((value, key) => {\n const shouldParseAllValues = options.all || key.endsWith(\"[]\");\n if (!shouldParseAllValues) {\n form[key] = value;\n } else {\n handleParsingAllValues(form, key, value);\n }\n });\n if (options.dot) {\n Object.entries(form).forEach(([key, value]) => {\n const shouldParseDotValues = key.includes(\".\");\n if (shouldParseDotValues) {\n handleParsingNestedValues(form, key, value);\n delete form[key];\n }\n });\n }\n return form;\n}\nvar handleParsingAllValues = (form, key, value) => {\n if (form[key] !== void 0) {\n if (Array.isArray(form[key])) {\n ;\n form[key].push(value);\n } else {\n form[key] = [form[key], value];\n }\n } else {\n if (!key.endsWith(\"[]\")) {\n form[key] = value;\n } else {\n form[key] = [value];\n }\n }\n};\nvar handleParsingNestedValues = (form, key, value) => {\n if (/(?:^|\\.)__proto__\\./.test(key)) {\n return;\n }\n let nestedForm = form;\n const keys = key.split(\".\");\n keys.forEach((key2, index) => {\n if (index === keys.length - 1) {\n nestedForm[key2] = value;\n } else {\n if (!nestedForm[key2] || typeof nestedForm[key2] !== \"object\" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {\n nestedForm[key2] = /* @__PURE__ */ Object.create(null);\n }\n nestedForm = nestedForm[key2];\n }\n });\n};\nexport {\n parseBody\n};\n", "// src/utils/url.ts\nvar splitPath = (path) => {\n const paths = path.split(\"/\");\n if (paths[0] === \"\") {\n paths.shift();\n }\n return paths;\n};\nvar splitRoutingPath = (routePath) => {\n const { groups, path } = extractGroupsFromPath(routePath);\n const paths = splitPath(path);\n return replaceGroupMarks(paths, groups);\n};\nvar extractGroupsFromPath = (path) => {\n const groups = [];\n path = path.replace(/\\{[^}]+\\}/g, (match, index) => {\n const mark = `@${index}`;\n groups.push([mark, match]);\n return mark;\n });\n return { groups, path };\n};\nvar replaceGroupMarks = (paths, groups) => {\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = paths.length - 1; j >= 0; j--) {\n if (paths[j].includes(mark)) {\n paths[j] = paths[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n return paths;\n};\nvar patternCache = {};\nvar getPattern = (label, next) => {\n if (label === \"*\") {\n return \"*\";\n }\n const match = label.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n if (match) {\n const cacheKey = `${label}#${next}`;\n if (!patternCache[cacheKey]) {\n if (match[2]) {\n patternCache[cacheKey] = next && next[0] !== \":\" && next[0] !== \"*\" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];\n } else {\n patternCache[cacheKey] = [label, match[1], true];\n }\n }\n return patternCache[cacheKey];\n }\n return null;\n};\nvar tryDecode = (str, decoder) => {\n try {\n return decoder(str);\n } catch {\n return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {\n try {\n return decoder(match);\n } catch {\n return match;\n }\n });\n }\n};\nvar tryDecodeURI = (str) => tryDecode(str, decodeURI);\nvar getPath = (request) => {\n const url = request.url;\n const start = url.indexOf(\"/\", url.indexOf(\":\") + 4);\n let i = start;\n for (; i < url.length; i++) {\n const charCode = url.charCodeAt(i);\n if (charCode === 37) {\n const queryIndex = url.indexOf(\"?\", i);\n const hashIndex = url.indexOf(\"#\", i);\n const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex);\n const path = url.slice(start, end);\n return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n } else if (charCode === 63 || charCode === 35) {\n break;\n }\n }\n return url.slice(start, i);\n};\nvar getQueryStrings = (url) => {\n const queryIndex = url.indexOf(\"?\", 8);\n return queryIndex === -1 ? \"\" : \"?\" + url.slice(queryIndex + 1);\n};\nvar getPathNoStrict = (request) => {\n const result = getPath(request);\n return result.length > 1 && result.at(-1) === \"/\" ? result.slice(0, -1) : result;\n};\nvar mergePath = (base, sub, ...rest) => {\n if (rest.length) {\n sub = mergePath(sub, ...rest);\n }\n return `${base?.[0] === \"/\" ? \"\" : \"/\"}${base}${sub === \"/\" ? \"\" : `${base?.at(-1) === \"/\" ? \"\" : \"/\"}${sub?.[0] === \"/\" ? sub.slice(1) : sub}`}`;\n};\nvar checkOptionalParameter = (path) => {\n if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(\":\")) {\n return null;\n }\n const segments = path.split(\"/\");\n const results = [];\n let basePath = \"\";\n segments.forEach((segment) => {\n if (segment !== \"\" && !/\\:/.test(segment)) {\n basePath += \"/\" + segment;\n } else if (/\\:/.test(segment)) {\n if (/\\?/.test(segment)) {\n if (results.length === 0 && basePath === \"\") {\n results.push(\"/\");\n } else {\n results.push(basePath);\n }\n const optionalSegment = segment.replace(\"?\", \"\");\n basePath += \"/\" + optionalSegment;\n results.push(basePath);\n } else {\n basePath += \"/\" + segment;\n }\n }\n });\n return results.filter((v, i, a) => a.indexOf(v) === i);\n};\nvar _decodeURI = (value) => {\n if (!/[%+]/.test(value)) {\n return value;\n }\n if (value.indexOf(\"+\") !== -1) {\n value = value.replace(/\\+/g, \" \");\n }\n return value.indexOf(\"%\") !== -1 ? tryDecode(value, decodeURIComponent_) : value;\n};\nvar _getQueryParam = (url, key, multiple) => {\n let encoded;\n if (!multiple && key && !/[%+]/.test(key)) {\n let keyIndex2 = url.indexOf(\"?\", 8);\n if (keyIndex2 === -1) {\n return void 0;\n }\n if (!url.startsWith(key, keyIndex2 + 1)) {\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n while (keyIndex2 !== -1) {\n const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);\n if (trailingKeyCode === 61) {\n const valueIndex = keyIndex2 + key.length + 2;\n const endIndex = url.indexOf(\"&\", valueIndex);\n return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));\n } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {\n return \"\";\n }\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n encoded = /[%+]/.test(url);\n if (!encoded) {\n return void 0;\n }\n }\n const results = /* @__PURE__ */ Object.create(null);\n encoded ??= /[%+]/.test(url);\n let keyIndex = url.indexOf(\"?\", 8);\n while (keyIndex !== -1) {\n const nextKeyIndex = url.indexOf(\"&\", keyIndex + 1);\n let valueIndex = url.indexOf(\"=\", keyIndex);\n if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {\n valueIndex = -1;\n }\n let name = url.slice(\n keyIndex + 1,\n valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex\n );\n if (encoded) {\n name = _decodeURI(name);\n }\n keyIndex = nextKeyIndex;\n if (name === \"\") {\n continue;\n }\n let value;\n if (valueIndex === -1) {\n value = \"\";\n } else {\n value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);\n if (encoded) {\n value = _decodeURI(value);\n }\n }\n if (multiple) {\n if (!(results[name] && Array.isArray(results[name]))) {\n results[name] = [];\n }\n ;\n results[name].push(value);\n } else {\n results[name] ??= value;\n }\n }\n return key ? results[key] : results;\n};\nvar getQueryParam = _getQueryParam;\nvar getQueryParams = (url, key) => {\n return _getQueryParam(url, key, true);\n};\nvar decodeURIComponent_ = decodeURIComponent;\nexport {\n checkOptionalParameter,\n decodeURIComponent_,\n getPath,\n getPathNoStrict,\n getPattern,\n getQueryParam,\n getQueryParams,\n getQueryStrings,\n mergePath,\n splitPath,\n splitRoutingPath,\n tryDecode,\n tryDecodeURI\n};\n", "// src/request.ts\nimport { HTTPException } from \"./http-exception.js\";\nimport { GET_MATCH_RESULT } from \"./request/constants.js\";\nimport { parseBody } from \"./utils/body.js\";\nimport { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from \"./utils/url.js\";\nvar tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);\nvar HonoRequest = class {\n /**\n * `.raw` can get the raw Request object.\n *\n * @see {@link https://hono.dev/docs/api/request#raw}\n *\n * @example\n * ```ts\n * // For Cloudflare Workers\n * app.post('/', async (c) => {\n * const metadata = c.req.raw.cf?.hostMetadata?\n * ...\n * })\n * ```\n */\n raw;\n #validatedData;\n // Short name of validatedData\n #matchResult;\n routeIndex = 0;\n /**\n * `.path` can get the pathname of the request.\n *\n * @see {@link https://hono.dev/docs/api/request#path}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const pathname = c.req.path // `/about/me`\n * })\n * ```\n */\n path;\n bodyCache = {};\n constructor(request, path = \"/\", matchResult = [[]]) {\n this.raw = request;\n this.path = path;\n this.#matchResult = matchResult;\n this.#validatedData = {};\n }\n param(key) {\n return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();\n }\n #getDecodedParam(key) {\n const paramKey = this.#matchResult[0][this.routeIndex][1][key];\n const param = this.#getParamValue(paramKey);\n return param && /\\%/.test(param) ? tryDecodeURIComponent(param) : param;\n }\n #getAllDecodedParams() {\n const decoded = {};\n const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);\n for (const key of keys) {\n const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);\n if (value !== void 0) {\n decoded[key] = /\\%/.test(value) ? tryDecodeURIComponent(value) : value;\n }\n }\n return decoded;\n }\n #getParamValue(paramKey) {\n return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;\n }\n query(key) {\n return getQueryParam(this.url, key);\n }\n queries(key) {\n return getQueryParams(this.url, key);\n }\n header(name) {\n if (name) {\n return this.raw.headers.get(name) ?? void 0;\n }\n const headerData = /* @__PURE__ */ Object.create(null);\n this.raw.headers.forEach((value, key) => {\n headerData[key] = value;\n });\n return headerData;\n }\n async parseBody(options) {\n return parseBody(this, options);\n }\n #cachedBody = (key) => {\n const { bodyCache, raw } = this;\n const cachedBody = bodyCache[key];\n if (cachedBody) {\n return cachedBody;\n }\n const anyCachedKey = Object.keys(bodyCache)[0];\n if (anyCachedKey) {\n return bodyCache[anyCachedKey].then((body) => {\n if (anyCachedKey === \"json\") {\n body = JSON.stringify(body);\n }\n return new Response(body)[key]();\n });\n }\n return bodyCache[key] = raw[key]();\n };\n /**\n * `.json()` can parse Request body of type `application/json`\n *\n * @see {@link https://hono.dev/docs/api/request#json}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.json()\n * })\n * ```\n */\n json() {\n return this.#cachedBody(\"text\").then((text) => JSON.parse(text));\n }\n /**\n * `.text()` can parse Request body of type `text/plain`\n *\n * @see {@link https://hono.dev/docs/api/request#text}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.text()\n * })\n * ```\n */\n text() {\n return this.#cachedBody(\"text\");\n }\n /**\n * `.arrayBuffer()` parse Request body as an `ArrayBuffer`\n *\n * @see {@link https://hono.dev/docs/api/request#arraybuffer}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.arrayBuffer()\n * })\n * ```\n */\n arrayBuffer() {\n return this.#cachedBody(\"arrayBuffer\");\n }\n /**\n * `.bytes()` parses the request body as a `Uint8Array`.\n *\n * @see {@link https://hono.dev/docs/api/request#bytes}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.bytes()\n * })\n * ```\n */\n bytes() {\n return this.#cachedBody(\"arrayBuffer\").then((buffer) => new Uint8Array(buffer));\n }\n /**\n * Parses the request body as a `Blob`.\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.blob();\n * });\n * ```\n * @see https://hono.dev/docs/api/request#blob\n */\n blob() {\n return this.#cachedBody(\"blob\");\n }\n /**\n * Parses the request body as `FormData`.\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.formData();\n * });\n * ```\n * @see https://hono.dev/docs/api/request#formdata\n */\n formData() {\n return this.#cachedBody(\"formData\");\n }\n /**\n * Adds validated data to the request.\n *\n * @param target - The target of the validation.\n * @param data - The validated data to add.\n */\n addValidatedData(target, data) {\n this.#validatedData[target] = data;\n }\n valid(target) {\n return this.#validatedData[target];\n }\n /**\n * `.url()` can get the request url strings.\n *\n * @see {@link https://hono.dev/docs/api/request#url}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const url = c.req.url // `http://localhost:8787/about/me`\n * ...\n * })\n * ```\n */\n get url() {\n return this.raw.url;\n }\n /**\n * `.method()` can get the method name of the request.\n *\n * @see {@link https://hono.dev/docs/api/request#method}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const method = c.req.method // `GET`\n * })\n * ```\n */\n get method() {\n return this.raw.method;\n }\n get [GET_MATCH_RESULT]() {\n return this.#matchResult;\n }\n /**\n * `.matchedRoutes()` can return a matched route in the handler\n *\n * @deprecated\n *\n * Use matchedRoutes helper defined in \"hono/route\" instead.\n *\n * @see {@link https://hono.dev/docs/api/request#matchedroutes}\n *\n * @example\n * ```ts\n * app.use('*', async function logger(c, next) {\n * await next()\n * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {\n * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')\n * console.log(\n * method,\n * ' ',\n * path,\n * ' '.repeat(Math.max(10 - path.length, 0)),\n * name,\n * i === c.req.routeIndex ? '<- respond from here' : ''\n * )\n * })\n * })\n * ```\n */\n get matchedRoutes() {\n return this.#matchResult[0].map(([[, route]]) => route);\n }\n /**\n * `routePath()` can retrieve the path registered within the handler\n *\n * @deprecated\n *\n * Use routePath helper defined in \"hono/route\" instead.\n *\n * @see {@link https://hono.dev/docs/api/request#routepath}\n *\n * @example\n * ```ts\n * app.get('/posts/:id', (c) => {\n * return c.json({ path: c.req.routePath })\n * })\n * ```\n */\n get routePath() {\n return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;\n }\n};\nvar cloneRawRequest = async (req) => {\n if (!req.raw.bodyUsed) {\n return req.raw.clone();\n }\n const cacheKey = Object.keys(req.bodyCache)[0];\n if (!cacheKey) {\n throw new HTTPException(500, {\n message: \"Cannot clone request: body was already consumed and not cached. Please use HonoRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly.\"\n });\n }\n const body = await req[cacheKey]();\n const headers = req.header();\n if (body instanceof FormData) {\n delete headers[\"content-type\"];\n }\n const requestInit = {\n body,\n cache: req.raw.cache,\n credentials: req.raw.credentials,\n headers,\n integrity: req.raw.integrity,\n keepalive: req.raw.keepalive,\n method: req.method,\n mode: req.raw.mode,\n redirect: req.raw.redirect,\n referrer: req.raw.referrer,\n referrerPolicy: req.raw.referrerPolicy,\n signal: req.raw.signal\n };\n return new Request(req.url, requestInit);\n};\nexport {\n HonoRequest,\n cloneRawRequest\n};\n", "// src/utils/html.ts\nvar HtmlEscapedCallbackPhase = {\n Stringify: 1,\n BeforeStream: 2,\n Stream: 3\n};\nvar raw = (value, callbacks) => {\n const escapedString = new String(value);\n escapedString.isEscaped = true;\n escapedString.callbacks = callbacks;\n return escapedString;\n};\nvar escapeRe = /[&<>'\"]/;\nvar stringBufferToString = async (buffer, callbacks) => {\n let str = \"\";\n callbacks ||= [];\n const resolvedBuffer = await Promise.all(buffer);\n for (let i = resolvedBuffer.length - 1; ; i--) {\n str += resolvedBuffer[i];\n i--;\n if (i < 0) {\n break;\n }\n let r = resolvedBuffer[i];\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n const isEscaped = r.isEscaped;\n r = await (typeof r === \"object\" ? r.toString() : r);\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n if (r.isEscaped ?? isEscaped) {\n str += r;\n } else {\n const buf = [str];\n escapeToBuffer(r, buf);\n str = buf[0];\n }\n }\n return raw(str, callbacks);\n};\nvar escapeToBuffer = (str, buffer) => {\n const match = str.search(escapeRe);\n if (match === -1) {\n buffer[0] += str;\n return;\n }\n let escape;\n let index;\n let lastIndex = 0;\n for (index = match; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escape = \"&quot;\";\n break;\n case 39:\n escape = \"&#39;\";\n break;\n case 38:\n escape = \"&amp;\";\n break;\n case 60:\n escape = \"&lt;\";\n break;\n case 62:\n escape = \"&gt;\";\n break;\n default:\n continue;\n }\n buffer[0] += str.substring(lastIndex, index) + escape;\n lastIndex = index + 1;\n }\n buffer[0] += str.substring(lastIndex, index);\n};\nvar resolveCallbackSync = (str) => {\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return str;\n }\n const buffer = [str];\n const context = {};\n callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));\n return buffer[0];\n};\nvar resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {\n if (typeof str === \"object\" && !(str instanceof String)) {\n if (!(str instanceof Promise)) {\n str = str.toString();\n }\n if (str instanceof Promise) {\n str = await str;\n }\n }\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return Promise.resolve(str);\n }\n if (buffer) {\n buffer[0] += str;\n } else {\n buffer = [str];\n }\n const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(\n (res) => Promise.all(\n res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))\n ).then(() => buffer[0])\n );\n if (preserveCallbacks) {\n return raw(await resStr, callbacks);\n } else {\n return resStr;\n }\n};\nexport {\n HtmlEscapedCallbackPhase,\n escapeToBuffer,\n raw,\n resolveCallback,\n resolveCallbackSync,\n stringBufferToString\n};\n", "// src/context.ts\nimport { HonoRequest } from \"./request.js\";\nimport { HtmlEscapedCallbackPhase, resolveCallback } from \"./utils/html.js\";\nvar TEXT_PLAIN = \"text/plain; charset=UTF-8\";\nvar setDefaultContentType = (contentType, headers) => {\n return {\n \"Content-Type\": contentType,\n ...headers\n };\n};\nvar createResponseInstance = (body, init) => new Response(body, init);\nvar Context = class {\n #rawRequest;\n #req;\n /**\n * `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.\n *\n * @see {@link https://hono.dev/docs/api/context#env}\n *\n * @example\n * ```ts\n * // Environment object for Cloudflare Workers\n * app.get('*', async c => {\n * const counter = c.env.COUNTER\n * })\n * ```\n */\n env = {};\n #var;\n finalized = false;\n /**\n * `.error` can get the error object from the middleware if the Handler throws an error.\n *\n * @see {@link https://hono.dev/docs/api/context#error}\n *\n * @example\n * ```ts\n * app.use('*', async (c, next) => {\n * await next()\n * if (c.error) {\n * // do something...\n * }\n * })\n * ```\n */\n error;\n #status;\n #executionCtx;\n #res;\n #layout;\n #renderer;\n #notFoundHandler;\n #preparedHeaders;\n #matchResult;\n #path;\n /**\n * Creates an instance of the Context class.\n *\n * @param req - The Request object.\n * @param options - Optional configuration options for the context.\n */\n constructor(req, options) {\n this.#rawRequest = req;\n if (options) {\n this.#executionCtx = options.executionCtx;\n this.env = options.env;\n this.#notFoundHandler = options.notFoundHandler;\n this.#path = options.path;\n this.#matchResult = options.matchResult;\n }\n }\n /**\n * `.req` is the instance of {@link HonoRequest}.\n */\n get req() {\n this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);\n return this.#req;\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#event}\n * The FetchEvent associated with the current request.\n *\n * @throws Will throw an error if the context does not have a FetchEvent.\n */\n get event() {\n if (this.#executionCtx && \"respondWith\" in this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no FetchEvent\");\n }\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#executionctx}\n * The ExecutionContext associated with the current request.\n *\n * @throws Will throw an error if the context does not have an ExecutionContext.\n */\n get executionCtx() {\n if (this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no ExecutionContext\");\n }\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#res}\n * The Response object for the current request.\n */\n get res() {\n return this.#res ||= createResponseInstance(null, {\n headers: this.#preparedHeaders ??= new Headers()\n });\n }\n /**\n * Sets the Response object for the current request.\n *\n * @param _res - The Response object to set.\n */\n set res(_res) {\n if (this.#res && _res) {\n _res = createResponseInstance(_res.body, _res);\n for (const [k, v] of this.#res.headers.entries()) {\n if (k === \"content-type\") {\n continue;\n }\n if (k === \"set-cookie\") {\n const cookies = this.#res.headers.getSetCookie();\n _res.headers.delete(\"set-cookie\");\n for (const cookie of cookies) {\n _res.headers.append(\"set-cookie\", cookie);\n }\n } else {\n _res.headers.set(k, v);\n }\n }\n }\n this.#res = _res;\n this.finalized = true;\n }\n /**\n * `.render()` can create a response within a layout.\n *\n * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n *\n * @example\n * ```ts\n * app.get('/', (c) => {\n * return c.render('Hello!')\n * })\n * ```\n */\n render = (...args) => {\n this.#renderer ??= (content) => this.html(content);\n return this.#renderer(...args);\n };\n /**\n * Sets the layout for the response.\n *\n * @param layout - The layout to set.\n * @returns The layout function.\n */\n setLayout = (layout) => this.#layout = layout;\n /**\n * Gets the current layout for the response.\n *\n * @returns The current layout function.\n */\n getLayout = () => this.#layout;\n /**\n * `.setRenderer()` can set the layout in the custom middleware.\n *\n * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n *\n * @example\n * ```tsx\n * app.use('*', async (c, next) => {\n * c.setRenderer((content) => {\n * return c.html(\n * <html>\n * <body>\n * <p>{content}</p>\n * </body>\n * </html>\n * )\n * })\n * await next()\n * })\n * ```\n */\n setRenderer = (renderer) => {\n this.#renderer = renderer;\n };\n /**\n * `.header()` can set headers.\n *\n * @see {@link https://hono.dev/docs/api/context#header}\n *\n * @example\n * ```ts\n * app.get('/welcome', (c) => {\n * // Set headers\n * c.header('X-Message', 'Hello!')\n * c.header('Content-Type', 'text/plain')\n *\n * return c.body('Thank you for coming')\n * })\n * ```\n */\n header = (name, value, options) => {\n if (this.finalized) {\n this.#res = createResponseInstance(this.#res.body, this.#res);\n }\n const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();\n if (value === void 0) {\n headers.delete(name);\n } else if (options?.append) {\n headers.append(name, value);\n } else {\n headers.set(name, value);\n }\n };\n status = (status) => {\n this.#status = status;\n };\n /**\n * `.set()` can set the value specified by the key.\n *\n * @see {@link https://hono.dev/docs/api/context#set-get}\n *\n * @example\n * ```ts\n * app.use('*', async (c, next) => {\n * c.set('message', 'Hono is hot!!')\n * await next()\n * })\n * ```\n */\n set = (key, value) => {\n this.#var ??= /* @__PURE__ */ new Map();\n this.#var.set(key, value);\n };\n /**\n * `.get()` can use the value specified by the key.\n *\n * @see {@link https://hono.dev/docs/api/context#set-get}\n *\n * @example\n * ```ts\n * app.get('/', (c) => {\n * const message = c.get('message')\n * return c.text(`The message is \"${message}\"`)\n * })\n * ```\n */\n get = (key) => {\n return this.#var ? this.#var.get(key) : void 0;\n };\n /**\n * `.var` can access the value of a variable.\n *\n * @see {@link https://hono.dev/docs/api/context#var}\n *\n * @example\n * ```ts\n * const result = c.var.client.oneMethod()\n * ```\n */\n // c.var.propName is a read-only\n get var() {\n if (!this.#var) {\n return {};\n }\n return Object.fromEntries(this.#var);\n }\n #newResponse(data, arg, headers) {\n const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();\n if (typeof arg === \"object\" && \"headers\" in arg) {\n const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);\n for (const [key, value] of argHeaders) {\n if (key.toLowerCase() === \"set-cookie\") {\n responseHeaders.append(key, value);\n } else {\n responseHeaders.set(key, value);\n }\n }\n }\n if (headers) {\n for (const [k, v] of Object.entries(headers)) {\n if (typeof v === \"string\") {\n responseHeaders.set(k, v);\n } else {\n responseHeaders.delete(k);\n for (const v2 of v) {\n responseHeaders.append(k, v2);\n }\n }\n }\n }\n const status = typeof arg === \"number\" ? arg : arg?.status ?? this.#status;\n return createResponseInstance(data, { status, headers: responseHeaders });\n }\n newResponse = (...args) => this.#newResponse(...args);\n /**\n * `.body()` can return the HTTP response.\n * You can set headers with `.header()` and set HTTP status code with `.status`.\n * This can also be set in `.text()`, `.json()` and so on.\n *\n * @see {@link https://hono.dev/docs/api/context#body}\n *\n * @example\n * ```ts\n * app.get('/welcome', (c) => {\n * // Set headers\n * c.header('X-Message', 'Hello!')\n * c.header('Content-Type', 'text/plain')\n * // Set HTTP status code\n * c.status(201)\n *\n * // Return the response body\n * return c.body('Thank you for coming')\n * })\n * ```\n */\n body = (data, arg, headers) => this.#newResponse(data, arg, headers);\n /**\n * `.text()` can render text as `Content-Type:text/plain`.\n *\n * @see {@link https://hono.dev/docs/api/context#text}\n *\n * @example\n * ```ts\n * app.get('/say', (c) => {\n * return c.text('Hello!')\n * })\n * ```\n */\n text = (text, arg, headers) => {\n return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(\n text,\n arg,\n setDefaultContentType(TEXT_PLAIN, headers)\n );\n };\n /**\n * `.json()` can render JSON as `Content-Type:application/json`.\n *\n * @see {@link https://hono.dev/docs/api/context#json}\n *\n * @example\n * ```ts\n * app.get('/api', (c) => {\n * return c.json({ message: 'Hello!' })\n * })\n * ```\n */\n json = (object, arg, headers) => {\n return this.#newResponse(\n JSON.stringify(object),\n arg,\n setDefaultContentType(\"application/json\", headers)\n );\n };\n html = (html, arg, headers) => {\n const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType(\"text/html; charset=UTF-8\", headers));\n return typeof html === \"object\" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);\n };\n /**\n * `.redirect()` can Redirect, default status code is 302.\n *\n * @see {@link https://hono.dev/docs/api/context#redirect}\n *\n * @example\n * ```ts\n * app.get('/redirect', (c) => {\n * return c.redirect('/')\n * })\n * app.get('/redirect-permanently', (c) => {\n * return c.redirect('/', 301)\n * })\n * ```\n */\n redirect = (location, status) => {\n const locationString = String(location);\n this.header(\n \"Location\",\n // Multibyes should be encoded\n // eslint-disable-next-line no-control-regex\n !/[^\\x00-\\xFF]/.test(locationString) ? locationString : encodeURI(locationString)\n );\n return this.newResponse(null, status ?? 302);\n };\n /**\n * `.notFound()` can return the Not Found Response.\n *\n * @see {@link https://hono.dev/docs/api/context#notfound}\n *\n * @example\n * ```ts\n * app.get('/notfound', (c) => {\n * return c.notFound()\n * })\n * ```\n */\n notFound = () => {\n this.#notFoundHandler ??= () => createResponseInstance();\n return this.#notFoundHandler(this);\n };\n};\nexport {\n Context,\n TEXT_PLAIN\n};\n", "// src/router.ts\nvar METHOD_NAME_ALL = \"ALL\";\nvar METHOD_NAME_ALL_LOWERCASE = \"all\";\nvar METHODS = [\"get\", \"post\", \"put\", \"delete\", \"options\", \"patch\"];\nvar MESSAGE_MATCHER_IS_ALREADY_BUILT = \"Can not add a route since the matcher is already built.\";\nvar UnsupportedPathError = class extends Error {\n};\nexport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHODS,\n METHOD_NAME_ALL,\n METHOD_NAME_ALL_LOWERCASE,\n UnsupportedPathError\n};\n", "// src/utils/constants.ts\nvar COMPOSED_HANDLER = \"__COMPOSED_HANDLER\";\nexport {\n COMPOSED_HANDLER\n};\n", "// src/hono-base.ts\nimport { compose } from \"./compose.js\";\nimport { Context } from \"./context.js\";\nimport { METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE } from \"./router.js\";\nimport { COMPOSED_HANDLER } from \"./utils/constants.js\";\nimport { getPath, getPathNoStrict, mergePath } from \"./utils/url.js\";\nvar notFoundHandler = (c) => {\n return c.text(\"404 Not Found\", 404);\n};\nvar errorHandler = (err, c) => {\n if (\"getResponse\" in err) {\n const res = err.getResponse();\n return c.newResponse(res.body, res);\n }\n console.error(err);\n return c.text(\"Internal Server Error\", 500);\n};\nvar Hono = class _Hono {\n get;\n post;\n put;\n delete;\n options;\n patch;\n all;\n on;\n use;\n /*\n This class is like an abstract class and does not have a router.\n To use it, inherit the class and implement router in the constructor.\n */\n router;\n getPath;\n // Cannot use `#` because it requires visibility at JavaScript runtime.\n _basePath = \"/\";\n #path = \"/\";\n routes = [];\n constructor(options = {}) {\n const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE];\n allMethods.forEach((method) => {\n this[method] = (args1, ...args) => {\n if (typeof args1 === \"string\") {\n this.#path = args1;\n } else {\n this.#addRoute(method, this.#path, args1);\n }\n args.forEach((handler) => {\n this.#addRoute(method, this.#path, handler);\n });\n return this;\n };\n });\n this.on = (method, path, ...handlers) => {\n for (const p of [path].flat()) {\n this.#path = p;\n for (const m of [method].flat()) {\n handlers.map((handler) => {\n this.#addRoute(m.toUpperCase(), this.#path, handler);\n });\n }\n }\n return this;\n };\n this.use = (arg1, ...handlers) => {\n if (typeof arg1 === \"string\") {\n this.#path = arg1;\n } else {\n this.#path = \"*\";\n handlers.unshift(arg1);\n }\n handlers.forEach((handler) => {\n this.#addRoute(METHOD_NAME_ALL, this.#path, handler);\n });\n return this;\n };\n const { strict, ...optionsWithoutStrict } = options;\n Object.assign(this, optionsWithoutStrict);\n this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;\n }\n #clone() {\n const clone = new _Hono({\n router: this.router,\n getPath: this.getPath\n });\n clone.errorHandler = this.errorHandler;\n clone.#notFoundHandler = this.#notFoundHandler;\n clone.routes = this.routes;\n return clone;\n }\n #notFoundHandler = notFoundHandler;\n // Cannot use `#` because it requires visibility at JavaScript runtime.\n errorHandler = errorHandler;\n /**\n * `.route()` allows grouping other Hono instance in routes.\n *\n * @see {@link https://hono.dev/docs/api/routing#grouping}\n *\n * @param {string} path - base Path\n * @param {Hono} app - other Hono instance\n * @returns {Hono} routed Hono instance\n *\n * @example\n * ```ts\n * const app = new Hono()\n * const app2 = new Hono()\n *\n * app2.get(\"/user\", (c) => c.text(\"user\"))\n * app.route(\"/api\", app2) // GET /api/user\n * ```\n */\n route(path, app) {\n const subApp = this.basePath(path);\n app.routes.map((r) => {\n let handler;\n if (app.errorHandler === errorHandler) {\n handler = r.handler;\n } else {\n handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;\n handler[COMPOSED_HANDLER] = r.handler;\n }\n subApp.#addRoute(r.method, r.path, handler, r.basePath);\n });\n return this;\n }\n /**\n * `.basePath()` allows base paths to be specified.\n *\n * @see {@link https://hono.dev/docs/api/routing#base-path}\n *\n * @param {string} path - base Path\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * const api = new Hono().basePath('/api')\n * ```\n */\n basePath(path) {\n const subApp = this.#clone();\n subApp._basePath = mergePath(this._basePath, path);\n return subApp;\n }\n /**\n * `.onError()` handles an error and returns a customized Response.\n *\n * @see {@link https://hono.dev/docs/api/hono#error-handling}\n *\n * @param {ErrorHandler} handler - request Handler for error\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * app.onError((err, c) => {\n * console.error(`${err}`)\n * return c.text('Custom Error Message', 500)\n * })\n * ```\n */\n onError = (handler) => {\n this.errorHandler = handler;\n return this;\n };\n /**\n * `.notFound()` allows you to customize a Not Found Response.\n *\n * @see {@link https://hono.dev/docs/api/hono#not-found}\n *\n * @param {NotFoundHandler} handler - request handler for not-found\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * app.notFound((c) => {\n * return c.text('Custom 404 Message', 404)\n * })\n * ```\n */\n notFound = (handler) => {\n this.#notFoundHandler = handler;\n return this;\n };\n /**\n * `.mount()` allows you to mount applications built with other frameworks into your Hono application.\n *\n * @see {@link https://hono.dev/docs/api/hono#mount}\n *\n * @param {string} path - base Path\n * @param {Function} applicationHandler - other Request Handler\n * @param {MountOptions} [options] - options of `.mount()`\n * @returns {Hono} mounted Hono instance\n *\n * @example\n * ```ts\n * import { Router as IttyRouter } from 'itty-router'\n * import { Hono } from 'hono'\n * // Create itty-router application\n * const ittyRouter = IttyRouter()\n * // GET /itty-router/hello\n * ittyRouter.get('/hello', () => new Response('Hello from itty-router'))\n *\n * const app = new Hono()\n * app.mount('/itty-router', ittyRouter.handle)\n * ```\n *\n * @example\n * ```ts\n * const app = new Hono()\n * // Send the request to another application without modification.\n * app.mount('/app', anotherApp, {\n * replaceRequest: (req) => req,\n * })\n * ```\n */\n mount(path, applicationHandler, options) {\n let replaceRequest;\n let optionHandler;\n if (options) {\n if (typeof options === \"function\") {\n optionHandler = options;\n } else {\n optionHandler = options.optionHandler;\n if (options.replaceRequest === false) {\n replaceRequest = (request) => request;\n } else {\n replaceRequest = options.replaceRequest;\n }\n }\n }\n const getOptions = optionHandler ? (c) => {\n const options2 = optionHandler(c);\n return Array.isArray(options2) ? options2 : [options2];\n } : (c) => {\n let executionContext = void 0;\n try {\n executionContext = c.executionCtx;\n } catch {\n }\n return [c.env, executionContext];\n };\n replaceRequest ||= (() => {\n const mergedPath = mergePath(this._basePath, path);\n const pathPrefixLength = mergedPath === \"/\" ? 0 : mergedPath.length;\n return (request) => {\n const url = new URL(request.url);\n url.pathname = this.getPath(request).slice(pathPrefixLength) || \"/\";\n return new Request(url, request);\n };\n })();\n const handler = async (c, next) => {\n const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));\n if (res) {\n return res;\n }\n await next();\n };\n this.#addRoute(METHOD_NAME_ALL, mergePath(path, \"*\"), handler);\n return this;\n }\n #addRoute(method, path, handler, baseRoutePath) {\n method = method.toUpperCase();\n path = mergePath(this._basePath, path);\n const r = {\n basePath: baseRoutePath !== void 0 ? mergePath(this._basePath, baseRoutePath) : this._basePath,\n path,\n method,\n handler\n };\n this.router.add(method, path, [handler, r]);\n this.routes.push(r);\n }\n #handleError(err, c) {\n if (err instanceof Error) {\n return this.errorHandler(err, c);\n }\n throw err;\n }\n #dispatch(request, executionCtx, env, method) {\n if (method === \"HEAD\") {\n return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, \"GET\")))();\n }\n const path = this.getPath(request, { env });\n const matchResult = this.router.match(method, path);\n const c = new Context(request, {\n path,\n matchResult,\n env,\n executionCtx,\n notFoundHandler: this.#notFoundHandler\n });\n if (matchResult[0].length === 1) {\n let res;\n try {\n res = matchResult[0][0][0][0](c, async () => {\n c.res = await this.#notFoundHandler(c);\n });\n } catch (err) {\n return this.#handleError(err, c);\n }\n return res instanceof Promise ? res.then(\n (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))\n ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);\n }\n const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);\n return (async () => {\n try {\n const context = await composed(c);\n if (!context.finalized) {\n throw new Error(\n \"Context is not finalized. Did you forget to return a Response object or `await next()`?\"\n );\n }\n return context.res;\n } catch (err) {\n return this.#handleError(err, c);\n }\n })();\n }\n /**\n * `.fetch()` will be entry point of your app.\n *\n * @see {@link https://hono.dev/docs/api/hono#fetch}\n *\n * @param {Request} request - request Object of request\n * @param {Env} Env - env Object\n * @param {ExecutionContext} - context of execution\n * @returns {Response | Promise<Response>} response of request\n *\n */\n fetch = (request, ...rest) => {\n return this.#dispatch(request, rest[1], rest[0], request.method);\n };\n /**\n * `.request()` is a useful method for testing.\n * You can pass a URL or pathname to send a GET request.\n * app will return a Response object.\n * ```ts\n * test('GET /hello is ok', async () => {\n * const res = await app.request('/hello')\n * expect(res.status).toBe(200)\n * })\n * ```\n * @see https://hono.dev/docs/api/hono#request\n */\n request = (input, requestInit, Env, executionCtx) => {\n if (input instanceof Request) {\n return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);\n }\n input = input.toString();\n return this.fetch(\n new Request(\n /^https?:\\/\\//.test(input) ? input : `http://localhost${mergePath(\"/\", input)}`,\n requestInit\n ),\n Env,\n executionCtx\n );\n };\n /**\n * `.fire()` automatically adds a global fetch event listener.\n * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.\n * @deprecated\n * Use `fire` from `hono/service-worker` instead.\n * ```ts\n * import { Hono } from 'hono'\n * import { fire } from 'hono/service-worker'\n *\n * const app = new Hono()\n * // ...\n * fire(app)\n * ```\n * @see https://hono.dev/docs/api/hono#fire\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/\n */\n fire = () => {\n addEventListener(\"fetch\", (event) => {\n event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));\n });\n };\n};\nexport {\n Hono as HonoBase\n};\n", "// src/router/reg-exp-router/matcher.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nvar emptyParam = [];\nfunction match(method, path) {\n const matchers = this.buildAllMatchers();\n const match2 = ((method2, path2) => {\n const matcher = matchers[method2] || matchers[METHOD_NAME_ALL];\n const staticMatch = matcher[2][path2];\n if (staticMatch) {\n return staticMatch;\n }\n const match3 = path2.match(matcher[0]);\n if (!match3) {\n return [[], emptyParam];\n }\n const index = match3.indexOf(\"\", 1);\n return [matcher[1][index], match3];\n });\n this.match = match2;\n return match2(method, path);\n}\nexport {\n emptyParam,\n match\n};\n", "// src/router/reg-exp-router/node.ts\nvar LABEL_REG_EXP_STR = \"[^/]+\";\nvar ONLY_WILDCARD_REG_EXP_STR = \".*\";\nvar TAIL_WILDCARD_REG_EXP_STR = \"(?:|/.*)\";\nvar PATH_ERROR = /* @__PURE__ */ Symbol();\nvar regExpMetaChars = new Set(\".\\\\+*[^]$()\");\nfunction compareKey(a, b) {\n if (a.length === 1) {\n return b.length === 1 ? a < b ? -1 : 1 : -1;\n }\n if (b.length === 1) {\n return 1;\n }\n if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) {\n return 1;\n } else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) {\n return -1;\n }\n if (a === LABEL_REG_EXP_STR) {\n return 1;\n } else if (b === LABEL_REG_EXP_STR) {\n return -1;\n }\n return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;\n}\nvar Node = class _Node {\n #index;\n #varIndex;\n #children = /* @__PURE__ */ Object.create(null);\n insert(tokens, index, paramMap, context, pathErrorCheckOnly) {\n if (tokens.length === 0) {\n if (this.#index !== void 0) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n this.#index = index;\n return;\n }\n const [token, ...restTokens] = tokens;\n const pattern = token === \"*\" ? restTokens.length === 0 ? [\"\", \"\", ONLY_WILDCARD_REG_EXP_STR] : [\"\", \"\", LABEL_REG_EXP_STR] : token === \"/*\" ? [\"\", \"\", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n let node;\n if (pattern) {\n const name = pattern[1];\n let regexpStr = pattern[2] || LABEL_REG_EXP_STR;\n if (name && pattern[2]) {\n if (regexpStr === \".*\") {\n throw PATH_ERROR;\n }\n regexpStr = regexpStr.replace(/^\\((?!\\?:)(?=[^)]+\\)$)/, \"(?:\");\n if (/\\((?!\\?:)/.test(regexpStr)) {\n throw PATH_ERROR;\n }\n }\n node = this.#children[regexpStr];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[regexpStr] = new _Node();\n if (name !== \"\") {\n node.#varIndex = context.varIndex++;\n }\n }\n if (!pathErrorCheckOnly && name !== \"\") {\n paramMap.push([name, node.#varIndex]);\n }\n } else {\n node = this.#children[token];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[token] = new _Node();\n }\n }\n node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly);\n }\n buildRegExpStr() {\n const childKeys = Object.keys(this.#children).sort(compareKey);\n const strList = childKeys.map((k) => {\n const c = this.#children[k];\n return (typeof c.#varIndex === \"number\" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\\\${k}` : k) + c.buildRegExpStr();\n });\n if (typeof this.#index === \"number\") {\n strList.unshift(`#${this.#index}`);\n }\n if (strList.length === 0) {\n return \"\";\n }\n if (strList.length === 1) {\n return strList[0];\n }\n return \"(?:\" + strList.join(\"|\") + \")\";\n }\n};\nexport {\n Node,\n PATH_ERROR\n};\n", "// src/router/reg-exp-router/trie.ts\nimport { Node } from \"./node.js\";\nvar Trie = class {\n #context = { varIndex: 0 };\n #root = new Node();\n insert(path, index, pathErrorCheckOnly) {\n const paramAssoc = [];\n const groups = [];\n for (let i = 0; ; ) {\n let replaced = false;\n path = path.replace(/\\{[^}]+\\}/g, (m) => {\n const mark = `@\\\\${i}`;\n groups[i] = [mark, m];\n i++;\n replaced = true;\n return mark;\n });\n if (!replaced) {\n break;\n }\n }\n const tokens = path.match(/(?::[^\\/]+)|(?:\\/\\*$)|./g) || [];\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = tokens.length - 1; j >= 0; j--) {\n if (tokens[j].indexOf(mark) !== -1) {\n tokens[j] = tokens[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly);\n return paramAssoc;\n }\n buildRegExp() {\n let regexp = this.#root.buildRegExpStr();\n if (regexp === \"\") {\n return [/^$/, [], []];\n }\n let captureIndex = 0;\n const indexReplacementMap = [];\n const paramReplacementMap = [];\n regexp = regexp.replace(/#(\\d+)|@(\\d+)|\\.\\*\\$/g, (_, handlerIndex, paramIndex) => {\n if (handlerIndex !== void 0) {\n indexReplacementMap[++captureIndex] = Number(handlerIndex);\n return \"$()\";\n }\n if (paramIndex !== void 0) {\n paramReplacementMap[Number(paramIndex)] = ++captureIndex;\n return \"\";\n }\n return \"\";\n });\n return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap];\n }\n};\nexport {\n Trie\n};\n", "// src/router/reg-exp-router/router.ts\nimport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHOD_NAME_ALL,\n UnsupportedPathError\n} from \"../../router.js\";\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { match, emptyParam } from \"./matcher.js\";\nimport { PATH_ERROR } from \"./node.js\";\nimport { Trie } from \"./trie.js\";\nvar nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];\nvar wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\nfunction buildWildcardRegExp(path) {\n return wildcardRegExpCache[path] ??= new RegExp(\n path === \"*\" ? \"\" : `^${path.replace(\n /\\/\\*$|([.\\\\+*[^\\]$()])/g,\n (_, metaChar) => metaChar ? `\\\\${metaChar}` : \"(?:|/.*)\"\n )}$`\n );\n}\nfunction clearWildcardRegExpCache() {\n wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\n}\nfunction buildMatcherFromPreprocessedRoutes(routes) {\n const trie = new Trie();\n const handlerData = [];\n if (routes.length === 0) {\n return nullMatcher;\n }\n const routesWithStaticPathFlag = routes.map(\n (route) => [!/\\*|\\/:/.test(route[0]), ...route]\n ).sort(\n ([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length\n );\n const staticMap = /* @__PURE__ */ Object.create(null);\n for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) {\n const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i];\n if (pathErrorCheckOnly) {\n staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam];\n } else {\n j++;\n }\n let paramAssoc;\n try {\n paramAssoc = trie.insert(path, j, pathErrorCheckOnly);\n } catch (e) {\n throw e === PATH_ERROR ? new UnsupportedPathError(path) : e;\n }\n if (pathErrorCheckOnly) {\n continue;\n }\n handlerData[j] = handlers.map(([h, paramCount]) => {\n const paramIndexMap = /* @__PURE__ */ Object.create(null);\n paramCount -= 1;\n for (; paramCount >= 0; paramCount--) {\n const [key, value] = paramAssoc[paramCount];\n paramIndexMap[key] = value;\n }\n return [h, paramIndexMap];\n });\n }\n const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();\n for (let i = 0, len = handlerData.length; i < len; i++) {\n for (let j = 0, len2 = handlerData[i].length; j < len2; j++) {\n const map = handlerData[i][j]?.[1];\n if (!map) {\n continue;\n }\n const keys = Object.keys(map);\n for (let k = 0, len3 = keys.length; k < len3; k++) {\n map[keys[k]] = paramReplacementMap[map[keys[k]]];\n }\n }\n }\n const handlerMap = [];\n for (const i in indexReplacementMap) {\n handlerMap[i] = handlerData[indexReplacementMap[i]];\n }\n return [regexp, handlerMap, staticMap];\n}\nfunction findMiddleware(middleware, path) {\n if (!middleware) {\n return void 0;\n }\n for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) {\n if (buildWildcardRegExp(k).test(path)) {\n return [...middleware[k]];\n }\n }\n return void 0;\n}\nvar RegExpRouter = class {\n name = \"RegExpRouter\";\n #middleware;\n #routes;\n constructor() {\n this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n }\n add(method, path, handler) {\n const middleware = this.#middleware;\n const routes = this.#routes;\n if (!middleware || !routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n if (!middleware[method]) {\n ;\n [middleware, routes].forEach((handlerMap) => {\n handlerMap[method] = /* @__PURE__ */ Object.create(null);\n Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => {\n handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]];\n });\n });\n }\n if (path === \"/*\") {\n path = \"*\";\n }\n const paramCount = (path.match(/\\/:/g) || []).length;\n if (/\\*$/.test(path)) {\n const re = buildWildcardRegExp(path);\n if (method === METHOD_NAME_ALL) {\n Object.keys(middleware).forEach((m) => {\n middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n });\n } else {\n middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n }\n Object.keys(middleware).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(middleware[m]).forEach((p) => {\n re.test(p) && middleware[m][p].push([handler, paramCount]);\n });\n }\n });\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(routes[m]).forEach(\n (p) => re.test(p) && routes[m][p].push([handler, paramCount])\n );\n }\n });\n return;\n }\n const paths = checkOptionalParameter(path) || [path];\n for (let i = 0, len = paths.length; i < len; i++) {\n const path2 = paths[i];\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n routes[m][path2] ||= [\n ...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || []\n ];\n routes[m][path2].push([handler, paramCount - len + i + 1]);\n }\n });\n }\n }\n match = match;\n buildAllMatchers() {\n const matchers = /* @__PURE__ */ Object.create(null);\n Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => {\n matchers[method] ||= this.#buildMatcher(method);\n });\n this.#middleware = this.#routes = void 0;\n clearWildcardRegExpCache();\n return matchers;\n }\n #buildMatcher(method) {\n const routes = [];\n let hasOwnRoute = method === METHOD_NAME_ALL;\n [this.#middleware, this.#routes].forEach((r) => {\n const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : [];\n if (ownRoute.length !== 0) {\n hasOwnRoute ||= true;\n routes.push(...ownRoute);\n } else if (method !== METHOD_NAME_ALL) {\n routes.push(\n ...Object.keys(r[METHOD_NAME_ALL]).map((path) => [path, r[METHOD_NAME_ALL][path]])\n );\n }\n });\n if (!hasOwnRoute) {\n return null;\n } else {\n return buildMatcherFromPreprocessedRoutes(routes);\n }\n }\n};\nexport {\n RegExpRouter\n};\n", "// src/router/smart-router/router.ts\nimport { MESSAGE_MATCHER_IS_ALREADY_BUILT, UnsupportedPathError } from \"../../router.js\";\nvar SmartRouter = class {\n name = \"SmartRouter\";\n #routers = [];\n #routes = [];\n constructor(init) {\n this.#routers = init.routers;\n }\n add(method, path, handler) {\n if (!this.#routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n this.#routes.push([method, path, handler]);\n }\n match(method, path) {\n if (!this.#routes) {\n throw new Error(\"Fatal error\");\n }\n const routers = this.#routers;\n const routes = this.#routes;\n const len = routers.length;\n let i = 0;\n let res;\n for (; i < len; i++) {\n const router = routers[i];\n try {\n for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) {\n router.add(...routes[i2]);\n }\n res = router.match(method, path);\n } catch (e) {\n if (e instanceof UnsupportedPathError) {\n continue;\n }\n throw e;\n }\n this.match = router.match.bind(router);\n this.#routers = [router];\n this.#routes = void 0;\n break;\n }\n if (i === len) {\n throw new Error(\"Fatal error\");\n }\n this.name = `SmartRouter + ${this.activeRouter.name}`;\n return res;\n }\n get activeRouter() {\n if (this.#routes || this.#routers.length !== 1) {\n throw new Error(\"No active router has been determined yet.\");\n }\n return this.#routers[0];\n }\n};\nexport {\n SmartRouter\n};\n", "// src/router/trie-router/node.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nimport { getPattern, splitPath, splitRoutingPath } from \"../../utils/url.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar hasChildren = (children) => {\n for (const _ in children) {\n return true;\n }\n return false;\n};\nvar Node = class _Node {\n #methods;\n #children;\n #patterns;\n #order = 0;\n #params = emptyParams;\n constructor(method, handler, children) {\n this.#children = children || /* @__PURE__ */ Object.create(null);\n this.#methods = [];\n if (method && handler) {\n const m = /* @__PURE__ */ Object.create(null);\n m[method] = { handler, possibleKeys: [], score: 0 };\n this.#methods = [m];\n }\n this.#patterns = [];\n }\n insert(method, path, handler) {\n this.#order = ++this.#order;\n let curNode = this;\n const parts = splitRoutingPath(path);\n const possibleKeys = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const p = parts[i];\n const nextP = parts[i + 1];\n const pattern = getPattern(p, nextP);\n const key = Array.isArray(pattern) ? pattern[0] : p;\n if (key in curNode.#children) {\n curNode = curNode.#children[key];\n if (pattern) {\n possibleKeys.push(pattern[1]);\n }\n continue;\n }\n curNode.#children[key] = new _Node();\n if (pattern) {\n curNode.#patterns.push(pattern);\n possibleKeys.push(pattern[1]);\n }\n curNode = curNode.#children[key];\n }\n curNode.#methods.push({\n [method]: {\n handler,\n possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),\n score: this.#order\n }\n });\n return curNode;\n }\n #pushHandlerSets(handlerSets, node, method, nodeParams, params) {\n for (let i = 0, len = node.#methods.length; i < len; i++) {\n const m = node.#methods[i];\n const handlerSet = m[method] || m[METHOD_NAME_ALL];\n const processedSet = {};\n if (handlerSet !== void 0) {\n handlerSet.params = /* @__PURE__ */ Object.create(null);\n handlerSets.push(handlerSet);\n if (nodeParams !== emptyParams || params && params !== emptyParams) {\n for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {\n const key = handlerSet.possibleKeys[i2];\n const processed = processedSet[handlerSet.score];\n handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];\n processedSet[handlerSet.score] = true;\n }\n }\n }\n }\n }\n search(method, path) {\n const handlerSets = [];\n this.#params = emptyParams;\n const curNode = this;\n let curNodes = [curNode];\n const parts = splitPath(path);\n const curNodesQueue = [];\n const len = parts.length;\n let partOffsets = null;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n const isLast = i === len - 1;\n const tempNodes = [];\n for (let j = 0, len2 = curNodes.length; j < len2; j++) {\n const node = curNodes[j];\n const nextNode = node.#children[part];\n if (nextNode) {\n nextNode.#params = node.#params;\n if (isLast) {\n if (nextNode.#children[\"*\"]) {\n this.#pushHandlerSets(handlerSets, nextNode.#children[\"*\"], method, node.#params);\n }\n this.#pushHandlerSets(handlerSets, nextNode, method, node.#params);\n } else {\n tempNodes.push(nextNode);\n }\n }\n for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {\n const pattern = node.#patterns[k];\n const params = node.#params === emptyParams ? {} : { ...node.#params };\n if (pattern === \"*\") {\n const astNode = node.#children[\"*\"];\n if (astNode) {\n this.#pushHandlerSets(handlerSets, astNode, method, node.#params);\n astNode.#params = params;\n tempNodes.push(astNode);\n }\n continue;\n }\n const [key, name, matcher] = pattern;\n if (!part && !(matcher instanceof RegExp)) {\n continue;\n }\n const child = node.#children[key];\n if (matcher instanceof RegExp) {\n if (partOffsets === null) {\n partOffsets = new Array(len);\n let offset = path[0] === \"/\" ? 1 : 0;\n for (let p = 0; p < len; p++) {\n partOffsets[p] = offset;\n offset += parts[p].length + 1;\n }\n }\n const restPathString = path.substring(partOffsets[i]);\n const m = matcher.exec(restPathString);\n if (m) {\n params[name] = m[0];\n this.#pushHandlerSets(handlerSets, child, method, node.#params, params);\n if (m[0].length === restPathString.length && child.#children[\"*\"]) {\n this.#pushHandlerSets(\n handlerSets,\n child.#children[\"*\"],\n method,\n node.#params,\n params\n );\n }\n if (hasChildren(child.#children)) {\n child.#params = params;\n const componentCount = m[0].match(/\\//)?.length ?? 0;\n const targetCurNodes = curNodesQueue[componentCount] ||= [];\n targetCurNodes.push(child);\n }\n continue;\n }\n }\n if (matcher === true || matcher.test(part)) {\n params[name] = part;\n if (isLast) {\n this.#pushHandlerSets(handlerSets, child, method, params, node.#params);\n if (child.#children[\"*\"]) {\n this.#pushHandlerSets(\n handlerSets,\n child.#children[\"*\"],\n method,\n params,\n node.#params\n );\n }\n } else {\n child.#params = params;\n tempNodes.push(child);\n }\n }\n }\n }\n const shifted = curNodesQueue.shift();\n curNodes = shifted ? tempNodes.concat(shifted) : tempNodes;\n }\n if (handlerSets.length > 1) {\n handlerSets.sort((a, b) => {\n return a.score - b.score;\n });\n }\n return [handlerSets.map(({ handler, params }) => [handler, params])];\n }\n};\nexport {\n Node\n};\n", "// src/router/trie-router/router.ts\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { Node } from \"./node.js\";\nvar TrieRouter = class {\n name = \"TrieRouter\";\n #node;\n constructor() {\n this.#node = new Node();\n }\n add(method, path, handler) {\n const results = checkOptionalParameter(path);\n if (results) {\n for (let i = 0, len = results.length; i < len; i++) {\n this.#node.insert(method, results[i], handler);\n }\n return;\n }\n this.#node.insert(method, path, handler);\n }\n match(method, path) {\n return this.#node.search(method, path);\n }\n};\nexport {\n TrieRouter\n};\n", "// src/hono.ts\nimport { HonoBase } from \"./hono-base.js\";\nimport { RegExpRouter } from \"./router/reg-exp-router/index.js\";\nimport { SmartRouter } from \"./router/smart-router/index.js\";\nimport { TrieRouter } from \"./router/trie-router/index.js\";\nvar Hono = class extends HonoBase {\n /**\n * Creates an instance of the Hono class.\n *\n * @param options - Optional configuration options for the Hono instance.\n */\n constructor(options = {}) {\n super(options);\n this.router = options.router ?? new SmartRouter({\n routers: [new RegExpRouter(), new TrieRouter()]\n });\n }\n};\nexport {\n Hono\n};\n", "import {\n DEFAULT_ROLLOUT_COHORT_COUNT,\n getAssetBaseStorageUri,\n getBundlePatches,\n getManifestFileHash,\n getManifestStorageUri,\n NIL_UUID,\n stripBundleArtifactMetadata,\n} from \"@hot-updater/core\";\nimport type {\n Bundle,\n DatabaseBundleQueryWhere,\n HotUpdaterContext,\n PaginationOptions,\n RequestEnvContext,\n} from \"@hot-updater/plugin-core\";\nimport {\n calculatePagination,\n createDatabasePlugin,\n filterCompatibleAppVersions,\n resolveUpdateInfoFromBundles,\n} from \"@hot-updater/plugin-core\";\n\ntype D1Result<T> = {\n results?: T[];\n};\n\ntype D1PreparedStatement = {\n bind: (...values: unknown[]) => {\n all: <T>() => Promise<D1Result<T>>;\n first: <T>() => Promise<T | null>;\n run: () => Promise<unknown>;\n };\n};\n\ntype D1Like = {\n prepare: (sql: string) => D1PreparedStatement;\n};\n\nexport interface CloudflareWorkerDatabaseEnv {\n DB: D1Like;\n}\n\ninterface CloudflareWorkerDatabaseConfig<\n TContext extends RequestEnvContext<CloudflareWorkerDatabaseEnv>,\n> {\n getDb: (context?: HotUpdaterContext<TContext>) => D1Like;\n}\n\ntype QueryConditions = DatabaseBundleQueryWhere;\n\ninterface BuildQueryResult {\n sql: string;\n params: unknown[];\n}\n\nconst buildJsonEachInClause = (\n columnName: string,\n values: string[],\n params: unknown[],\n) => {\n if (values.length === 0) {\n return \"1 = 0\";\n }\n\n params.push(JSON.stringify(values));\n return `${columnName} IN (SELECT value FROM json_each(?))`;\n};\n\ninterface D1WorkerBundleRow {\n id: string;\n channel: string;\n enabled: number | boolean;\n should_force_update: number | boolean;\n file_hash: string;\n git_commit_hash: string | null;\n message: string | null;\n platform: \"ios\" | \"android\";\n target_app_version: string | null;\n storage_uri: string;\n fingerprint_hash: string | null;\n metadata: unknown;\n manifest_storage_uri?: string | null;\n manifest_file_hash?: string | null;\n asset_base_storage_uri?: string | null;\n rollout_cohort_count: number | null;\n target_cohorts: string | null;\n}\n\ninterface D1WorkerBundlePatchRow {\n id: string;\n bundle_id: string;\n base_bundle_id: string;\n base_file_hash: string;\n patch_file_hash: string;\n patch_storage_uri: string;\n order_index: number | null;\n}\n\nfunction buildWhereClause(\n conditions: QueryConditions | undefined,\n): BuildQueryResult {\n if (!conditions) {\n return { sql: \"\", params: [] };\n }\n\n const clauses: string[] = [];\n const params: unknown[] = [];\n\n if (conditions.channel) {\n clauses.push(\"channel = ?\");\n params.push(conditions.channel);\n }\n\n if (conditions.platform) {\n clauses.push(\"platform = ?\");\n params.push(conditions.platform);\n }\n\n if (conditions.enabled !== undefined) {\n clauses.push(\"enabled = ?\");\n params.push(conditions.enabled ? 1 : 0);\n }\n\n if (conditions.id?.in) {\n clauses.push(buildJsonEachInClause(\"id\", conditions.id.in, params));\n }\n\n if (conditions.id?.eq) {\n clauses.push(\"id = ?\");\n params.push(conditions.id.eq);\n }\n\n if (conditions.id?.gt) {\n clauses.push(\"id > ?\");\n params.push(conditions.id.gt);\n }\n\n if (conditions.id?.gte) {\n clauses.push(\"id >= ?\");\n params.push(conditions.id.gte);\n }\n\n if (conditions.id?.lt) {\n clauses.push(\"id < ?\");\n params.push(conditions.id.lt);\n }\n\n if (conditions.id?.lte) {\n clauses.push(\"id <= ?\");\n params.push(conditions.id.lte);\n }\n\n if (conditions.targetAppVersionNotNull) {\n clauses.push(\"target_app_version IS NOT NULL\");\n }\n\n if (conditions.targetAppVersion !== undefined) {\n if (conditions.targetAppVersion === null) {\n clauses.push(\"target_app_version IS NULL\");\n } else {\n clauses.push(\"target_app_version = ?\");\n params.push(conditions.targetAppVersion);\n }\n }\n\n if (conditions.targetAppVersionIn) {\n clauses.push(\n buildJsonEachInClause(\n \"target_app_version\",\n conditions.targetAppVersionIn,\n params,\n ),\n );\n }\n\n if (conditions.fingerprintHash !== undefined) {\n if (conditions.fingerprintHash === null) {\n clauses.push(\"fingerprint_hash IS NULL\");\n } else {\n clauses.push(\"fingerprint_hash = ?\");\n params.push(conditions.fingerprintHash);\n }\n }\n\n const whereClause =\n clauses.length > 0 ? ` WHERE ${clauses.join(\" AND \")}` : \"\";\n\n return { sql: whereClause, params };\n}\n\nfunction parseTargetCohorts(value: unknown): string[] | null {\n if (!value) return null;\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === \"string\");\n }\n if (typeof value === \"string\") {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (Array.isArray(parsed)) {\n return parsed.filter(\n (item): item is string => typeof item === \"string\",\n );\n }\n } catch {\n return null;\n }\n }\n return null;\n}\n\nconst parseMetadata = (value: unknown): Bundle[\"metadata\"] => {\n if (!value) return undefined;\n if (typeof value === \"string\") {\n try {\n return parseMetadata(JSON.parse(value) as unknown);\n } catch {\n return undefined;\n }\n }\n return typeof value === \"object\" && !Array.isArray(value)\n ? (value as Bundle[\"metadata\"])\n : undefined;\n};\n\nconst buildBundlePatchId = (bundleId: string, baseBundleId: string) =>\n `${bundleId}:${baseBundleId}`;\n\nconst bundleToPatchRows = (bundle: Bundle): D1WorkerBundlePatchRow[] =>\n getBundlePatches(bundle).map((patch, index) => ({\n id: buildBundlePatchId(bundle.id, patch.baseBundleId),\n bundle_id: bundle.id,\n base_bundle_id: patch.baseBundleId,\n base_file_hash: patch.baseFileHash,\n patch_file_hash: patch.patchFileHash,\n patch_storage_uri: patch.patchStorageUri,\n order_index: index,\n }));\n\nfunction transformRowToBundle(\n row: D1WorkerBundleRow,\n patchRows: D1WorkerBundlePatchRow[] = [],\n): Bundle {\n const rawMetadata = parseMetadata(row.metadata);\n const patches = patchRows\n .slice()\n .sort(\n (left, right) =>\n (left.order_index ?? 0) - (right.order_index ?? 0) ||\n left.base_bundle_id.localeCompare(right.base_bundle_id),\n )\n .map((patch) => ({\n baseBundleId: patch.base_bundle_id,\n baseFileHash: patch.base_file_hash,\n patchFileHash: patch.patch_file_hash,\n patchStorageUri: patch.patch_storage_uri,\n }));\n const primaryPatch = patches[0] ?? null;\n\n return {\n id: row.id,\n channel: row.channel,\n enabled: Boolean(row.enabled),\n shouldForceUpdate: Boolean(row.should_force_update),\n fileHash: row.file_hash,\n gitCommitHash: row.git_commit_hash,\n message: row.message,\n platform: row.platform,\n targetAppVersion: row.target_app_version,\n storageUri: row.storage_uri,\n fingerprintHash: row.fingerprint_hash,\n metadata: stripBundleArtifactMetadata(rawMetadata),\n manifestStorageUri: row.manifest_storage_uri ?? null,\n manifestFileHash: row.manifest_file_hash ?? null,\n assetBaseStorageUri: row.asset_base_storage_uri ?? null,\n patches,\n patchBaseBundleId: primaryPatch?.baseBundleId ?? null,\n patchBaseFileHash: primaryPatch?.baseFileHash ?? null,\n patchFileHash: primaryPatch?.patchFileHash ?? null,\n patchStorageUri: primaryPatch?.patchStorageUri ?? null,\n rolloutCohortCount:\n (row.rollout_cohort_count as number | null) ??\n DEFAULT_ROLLOUT_COHORT_COUNT,\n targetCohorts: parseTargetCohorts(row.target_cohorts as unknown),\n };\n}\n\nconst resolveDbFromContext = (\n context?: RequestEnvContext<CloudflareWorkerDatabaseEnv>,\n) => {\n const db = context?.env?.DB;\n\n if (!db) {\n throw new Error(\n \"d1WorkerDatabase requires env.DB in the hot updater context.\",\n );\n }\n\n return db;\n};\n\nexport const d1WorkerDatabase = <\n TContext extends RequestEnvContext<CloudflareWorkerDatabaseEnv> =\n RequestEnvContext<CloudflareWorkerDatabaseEnv>,\n>() =>\n createDatabasePlugin<CloudflareWorkerDatabaseConfig<TContext>, TContext>({\n name: \"d1WorkerDatabase\",\n factory: (config) => {\n const queryAll = async <TRow>(\n sql: string,\n params: unknown[] = [],\n context?: HotUpdaterContext<TContext>,\n ): Promise<TRow[]> => {\n const result = await config\n .getDb(context)\n .prepare(sql)\n .bind(...params)\n .all<TRow>();\n return result.results ?? [];\n };\n\n const queryFirst = async <TRow>(\n sql: string,\n params: unknown[] = [],\n context?: HotUpdaterContext<TContext>,\n ): Promise<TRow | null> => {\n const result = await config\n .getDb(context)\n .prepare(sql)\n .bind(...params)\n .first<TRow>();\n return result ?? null;\n };\n\n const getPatchMap = async (\n bundleIds: string[],\n context?: HotUpdaterContext<TContext>,\n ) => {\n const patchMap = new Map<string, D1WorkerBundlePatchRow[]>();\n\n if (bundleIds.length === 0) {\n return patchMap;\n }\n\n const rows = await queryAll<D1WorkerBundlePatchRow>(\n `\n SELECT *\n FROM bundle_patches\n WHERE bundle_id IN (SELECT value FROM json_each(?))\n ORDER BY order_index ASC, base_bundle_id ASC\n `,\n [JSON.stringify(bundleIds)],\n context,\n );\n\n for (const row of rows) {\n const current = patchMap.get(row.bundle_id) ?? [];\n current.push(row);\n patchMap.set(row.bundle_id, current);\n }\n\n return patchMap;\n };\n\n const queryBundlesForUpdateInfo = async (\n conditions: QueryConditions,\n context?: HotUpdaterContext<TContext>,\n ): Promise<Bundle[]> => {\n const { sql: whereClause, params } = buildWhereClause(conditions);\n const rows = await queryAll<D1WorkerBundleRow>(\n `\n SELECT * FROM bundles\n ${whereClause}\n `,\n params,\n context,\n );\n const patchMap = await getPatchMap(\n rows.map((row) => row.id),\n context,\n );\n\n return rows.map((row) =>\n transformRowToBundle(row, patchMap.get(row.id)),\n );\n };\n\n const getTargetAppVersionsForUpdateInfo = async (\n {\n platform,\n channel,\n minBundleId,\n }: {\n platform: Bundle[\"platform\"];\n channel: string;\n minBundleId: string;\n },\n context?: HotUpdaterContext<TContext>,\n ): Promise<string[]> => {\n const rows = await queryAll<{ target_app_version: string }>(\n `\n SELECT target_app_version\n FROM bundles\n WHERE channel = ?\n AND platform = ?\n AND enabled = 1\n AND id >= ?\n AND target_app_version IS NOT NULL\n GROUP BY target_app_version\n `,\n [channel, platform, minBundleId],\n context,\n );\n\n return rows.map((row) => row.target_app_version);\n };\n\n return {\n async getUpdateInfo(args, context) {\n const channel = args.channel ?? \"production\";\n const minBundleId = args.minBundleId ?? NIL_UUID;\n\n if (args._updateStrategy === \"appVersion\") {\n const targetAppVersions = await getTargetAppVersionsForUpdateInfo(\n {\n platform: args.platform,\n channel,\n minBundleId,\n },\n context,\n );\n const compatibleAppVersions = filterCompatibleAppVersions(\n targetAppVersions,\n args.appVersion,\n );\n const bundles =\n compatibleAppVersions.length > 0\n ? await queryBundlesForUpdateInfo(\n {\n enabled: true,\n platform: args.platform,\n channel,\n id: {\n gte: minBundleId,\n },\n targetAppVersionIn: compatibleAppVersions,\n },\n context,\n )\n : [];\n\n return resolveUpdateInfoFromBundles({\n args: { ...args, channel, minBundleId },\n bundles,\n context,\n });\n }\n\n const bundles = await queryBundlesForUpdateInfo(\n {\n enabled: true,\n platform: args.platform,\n channel,\n id: {\n gte: minBundleId,\n },\n fingerprintHash: args.fingerprintHash,\n },\n context,\n );\n\n return resolveUpdateInfoFromBundles({\n args: { ...args, channel, minBundleId },\n bundles,\n context,\n });\n },\n\n async getBundleById(bundleId, context) {\n const [row, patchMap] = await Promise.all([\n queryFirst<D1WorkerBundleRow>(\n \"SELECT * FROM bundles WHERE id = ? LIMIT 1\",\n [bundleId],\n context,\n ),\n getPatchMap([bundleId], context),\n ]);\n\n return row ? transformRowToBundle(row, patchMap.get(bundleId)) : null;\n },\n\n async getBundles(options, context) {\n const { where, limit, orderBy } = options;\n const offset =\n ((\"offset\" in options ? options.offset : undefined) as\n | number\n | undefined) ?? 0;\n const { sql: whereClause, params } = buildWhereClause(where);\n const orderSql =\n orderBy?.direction === \"asc\"\n ? \"ORDER BY id ASC\"\n : \"ORDER BY id DESC\";\n\n const countRows = await queryAll<{ total: number }>(\n `SELECT COUNT(*) as total FROM bundles${whereClause}`,\n params,\n context,\n );\n const total = countRows[0]?.total ?? 0;\n\n const rows = await queryAll<D1WorkerBundleRow>(\n `SELECT * FROM bundles${whereClause} ${orderSql} LIMIT ? OFFSET ?`,\n [...params, limit, offset],\n context,\n );\n\n const patchMap = await getPatchMap(\n rows.map((row) => row.id),\n context,\n );\n const bundles = rows.map((row) =>\n transformRowToBundle(row, patchMap.get(row.id)),\n );\n\n const paginationOptions: PaginationOptions = { limit, offset };\n return {\n data: bundles,\n pagination: calculatePagination(total, paginationOptions),\n };\n },\n\n async getChannels(context) {\n const rows = await queryAll<{ channel: string }>(\n \"SELECT channel FROM bundles GROUP BY channel\",\n [],\n context,\n );\n return rows.map((row) => row.channel);\n },\n\n async commitBundle({ changedSets }, context) {\n if (changedSets.length === 0) {\n return;\n }\n\n const db = config.getDb(context);\n\n for (const operation of changedSets) {\n if (operation.operation === \"delete\") {\n await db\n .prepare(\"DELETE FROM bundle_patches WHERE bundle_id = ?\")\n .bind(operation.data.id)\n .run();\n await db\n .prepare(\"DELETE FROM bundle_patches WHERE base_bundle_id = ?\")\n .bind(operation.data.id)\n .run();\n await db\n .prepare(\"DELETE FROM bundles WHERE id = ?\")\n .bind(operation.data.id)\n .run();\n continue;\n }\n\n const bundle = operation.data;\n await db\n .prepare(`\n INSERT OR REPLACE INTO bundles (\n id,\n channel,\n enabled,\n should_force_update,\n file_hash,\n git_commit_hash,\n message,\n platform,\n target_app_version,\n storage_uri,\n fingerprint_hash,\n metadata,\n manifest_storage_uri,\n manifest_file_hash,\n asset_base_storage_uri,\n rollout_cohort_count,\n target_cohorts\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n .bind(\n bundle.id,\n bundle.channel,\n bundle.enabled ? 1 : 0,\n bundle.shouldForceUpdate ? 1 : 0,\n bundle.fileHash,\n bundle.gitCommitHash || null,\n bundle.message || null,\n bundle.platform,\n bundle.targetAppVersion,\n bundle.storageUri,\n bundle.fingerprintHash,\n JSON.stringify(\n stripBundleArtifactMetadata(bundle.metadata) ?? {},\n ),\n getManifestStorageUri(bundle),\n getManifestFileHash(bundle),\n getAssetBaseStorageUri(bundle),\n bundle.rolloutCohortCount ?? DEFAULT_ROLLOUT_COHORT_COUNT,\n bundle.targetCohorts\n ? JSON.stringify(bundle.targetCohorts)\n : null,\n )\n .run();\n\n await db\n .prepare(\"DELETE FROM bundle_patches WHERE bundle_id = ?\")\n .bind(bundle.id)\n .run();\n\n const patchRows = bundleToPatchRows(bundle);\n for (const patchRow of patchRows) {\n await db\n .prepare(`\n INSERT OR REPLACE INTO bundle_patches (\n id,\n bundle_id,\n base_bundle_id,\n base_file_hash,\n patch_file_hash,\n patch_storage_uri,\n order_index\n )\n VALUES (?, ?, ?, ?, ?, ?, ?)\n `)\n .bind(\n patchRow.id,\n patchRow.bundle_id,\n patchRow.base_bundle_id,\n patchRow.base_file_hash,\n patchRow.patch_file_hash,\n patchRow.patch_storage_uri,\n patchRow.order_index ?? 0,\n )\n .run();\n }\n }\n },\n };\n },\n })({\n getDb: resolveDbFromContext,\n });\n", "import { signToken } from \"@hot-updater/js\";\nimport {\n createRuntimeStoragePlugin,\n decodeStorageObjectKey,\n type HotUpdaterContext,\n type RequestEnvContext,\n} from \"@hot-updater/plugin-core\";\n\nexport interface CloudflareWorkerStorageEnv {\n JWT_SECRET: string;\n BUCKET: {\n get: (key: string) => Promise<{ text: () => Promise<string> } | null>;\n };\n}\n\ntype ContextResolver<TContext, TValue> = (\n context?: HotUpdaterContext<TContext>,\n) => TValue | Promise<TValue>;\n\nexport interface CloudflareWorkerStorageConfig<\n TContext extends RequestEnvContext<CloudflareWorkerStorageEnv>,\n> {\n jwtSecret?: string | ContextResolver<TContext, string>;\n publicBaseUrl: string | ContextResolver<TContext, string>;\n}\n\nconst resolveContextValue = async <TContext, TValue>(\n value: TValue | ContextResolver<TContext, TValue>,\n context?: HotUpdaterContext<TContext>,\n) => {\n return typeof value === \"function\"\n ? await (value as ContextResolver<TContext, TValue>)(context)\n : value;\n};\n\nconst resolveJwtSecretFromContext = (\n context?: RequestEnvContext<CloudflareWorkerStorageEnv>,\n) => {\n const jwtSecret = context?.env?.JWT_SECRET;\n\n if (!jwtSecret) {\n throw new Error(\n \"r2WorkerStorage requires env.JWT_SECRET in the hot updater context.\",\n );\n }\n\n return jwtSecret;\n};\n\nconst resolveR2BucketFromContext = (\n context?: RequestEnvContext<CloudflareWorkerStorageEnv>,\n) => {\n const bucket = context?.env?.BUCKET;\n\n if (!bucket) {\n throw new Error(\n \"r2WorkerStorage requires env.BUCKET in the hot updater context.\",\n );\n }\n\n return bucket;\n};\n\nconst createPublicObjectPath = (storageUrl: URL) =>\n `${storageUrl.host}${storageUrl.pathname}`;\n\nconst createR2ObjectKey = (storageUrl: URL) =>\n decodeStorageObjectKey(storageUrl.pathname.replace(/^\\/+/, \"\"));\n\nexport const r2WorkerStorage = <\n TContext extends RequestEnvContext<CloudflareWorkerStorageEnv> =\n RequestEnvContext<CloudflareWorkerStorageEnv>,\n>(\n config: CloudflareWorkerStorageConfig<TContext>,\n) => {\n return createRuntimeStoragePlugin<\n CloudflareWorkerStorageConfig<TContext>,\n TContext\n >({\n name: \"r2WorkerStorage\",\n supportedProtocol: \"r2\",\n factory: (config) => ({\n async readText(storageUri, context) {\n const storageUrl = new URL(storageUri);\n\n if (storageUrl.protocol !== \"r2:\") {\n throw new Error(\"Invalid R2 storage URI protocol\");\n }\n\n const bucket = resolveR2BucketFromContext(context);\n const key = createR2ObjectKey(storageUrl);\n const object = await bucket.get(key);\n if (!object) {\n return null;\n }\n\n return object.text();\n },\n async getDownloadUrl(storageUri, context) {\n const storageUrl = new URL(storageUri);\n\n if (storageUrl.protocol !== \"r2:\") {\n throw new Error(\"Invalid R2 storage URI protocol\");\n }\n\n const key = createPublicObjectPath(storageUrl);\n const [jwtSecret, publicBaseUrl] = await Promise.all([\n resolveContextValue(\n config.jwtSecret ?? resolveJwtSecretFromContext,\n context,\n ),\n resolveContextValue(config.publicBaseUrl, context),\n ]);\n const token = await signToken(key, jwtSecret);\n const url = new URL(publicBaseUrl);\n\n url.pathname = key;\n url.search = \"\";\n url.searchParams.set(\"token\", token);\n\n return {\n fileUrl: url.toString(),\n };\n },\n }),\n })(config);\n};\n", "export { verifyJwtSignedUrl } from \"@hot-updater/js\";\n\nimport type { RequestEnvContext as BaseRequestEnvContext } from \"@hot-updater/plugin-core\";\n\nimport {\n type CloudflareWorkerDatabaseEnv,\n d1WorkerDatabase,\n} from \"../cloudflareWorkerDatabase\";\nimport {\n type CloudflareWorkerStorageConfig,\n type CloudflareWorkerStorageEnv,\n r2WorkerStorage,\n} from \"../r2WorkerStorage\";\n\nexport type { CloudflareWorkerDatabaseEnv, CloudflareWorkerStorageEnv };\n\nexport interface CloudflareWorkerRuntimeEnv\n extends CloudflareWorkerDatabaseEnv, CloudflareWorkerStorageEnv {}\n\nexport type RequestEnvContext<TEnv = CloudflareWorkerRuntimeEnv> =\n BaseRequestEnvContext<TEnv>;\n\nexport const d1Database = <\n TContext extends RequestEnvContext<CloudflareWorkerRuntimeEnv> =\n RequestEnvContext<CloudflareWorkerRuntimeEnv>,\n>() => d1WorkerDatabase<TContext>();\n\nexport const r2Storage = <\n TContext extends RequestEnvContext<CloudflareWorkerRuntimeEnv> =\n RequestEnvContext<CloudflareWorkerRuntimeEnv>,\n>(\n config: CloudflareWorkerStorageConfig<TContext>,\n) => r2WorkerStorage<TContext>(config);\n", "import { decodeStorageObjectKey } from \"@hot-updater/plugin-core\";\nimport { createHotUpdater } from \"@hot-updater/server\";\nimport { Hono } from \"hono\";\n\nimport {\n d1Database,\n type RequestEnvContext,\n r2Storage,\n verifyJwtSignedUrl,\n} from \"../../src/worker\";\n\nexport type CloudflareWorkerEnv = {\n DB: {\n prepare: D1Database[\"prepare\"];\n };\n BUCKET: R2Bucket;\n JWT_SECRET: string;\n};\n\nexport const HOT_UPDATER_BASE_PATH = \"/api/check-update\";\n\nconst resolveRequestOrigin = (context?: RequestEnvContext) => {\n const request = context?.request;\n\n if (!request) {\n throw new Error(\n \"r2WorkerStorage requires a request to resolve publicBaseUrl.\",\n );\n }\n\n return new URL(request.url).origin;\n};\n\nconst hotUpdater = createHotUpdater({\n database: d1Database(),\n storages: [\n r2Storage({\n publicBaseUrl: resolveRequestOrigin,\n }),\n ],\n basePath: HOT_UPDATER_BASE_PATH,\n routes: {\n updateCheck: true,\n bundles: false,\n },\n});\n\nconst app = new Hono<{ Bindings: CloudflareWorkerEnv }>();\n\napp.mount(\n HOT_UPDATER_BASE_PATH,\n (request: Request, env: CloudflareWorkerEnv) => {\n return hotUpdater.handler(request, {\n request,\n env,\n });\n },\n {\n optionHandler: (c) => [c.env],\n },\n);\n\napp.get(\"*\", async (c) => {\n const result = await verifyJwtSignedUrl({\n path: new URL(c.req.url).pathname,\n token: c.req.query(\"token\"),\n jwtSecret: c.env.JWT_SECRET,\n handler: async (storageUri) => {\n const [, ...key] = decodeStorageObjectKey(storageUri).split(\"/\");\n const object = await c.env.BUCKET.get(key.join(\"/\"));\n if (!object) {\n return null;\n }\n\n return {\n body: object.body,\n contentType: object.httpMetadata?.contentType,\n };\n },\n });\n\n if (result.status !== 200) {\n return c.json({ error: result.error }, result.status);\n }\n\n return c.body(result.responseBody, 200, result.responseHeaders);\n});\n\nexport default app;\n"],
6
- "mappings": "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",
7
- "names": ["PerformanceMark", "clear", "count", "countReset", "createTask", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "profile", "profileEnd", "table", "time", "timeEnd", "timeLog", "timeStamp", "trace", "warn", "hrtime", "dir", "env", "count", "cwd", "assert", "hrtime", "error", "context", "config", "context", "options", "result", "version", "match", "match", "version", "version", "match", "raw", "version", "version", "version", "version", "context", "context", "LETTER_DASH_NUMBER", "NUMERIC_IDENTIFIER", "NUMERIC_IDENTIFIER_LOOSE", "NON_NUMERIC_IDENTIFIER", "MAIN_VERSION", "MAIN_VERSION_LOOSE", "PRERELEASE_IDENTIFIER", "PRERELEASE_IDENTIFIER_LOOSE", "PRERELEASE", "PRERELEASE_LOOSE", "BUILD_IDENTIFIER", "BUILD", "FULL_PLAIN", "LOOSE_PLAIN", "GREATER_LESS_THAN", "XRANGE_IDENTIFIER", "XRANGE_IDENTIFIER_LOOSE", "XRANGE_PLAIN", "XRANGE_PLAIN_LOOSE", "LONE_TILDE", "LONE_CARET", "COERCE_PLAIN", "COERCE", "COERCE_FULL", "makeSafeRegexSource", "safeRegex", "NUMERIC$1", "compareIdentifiers", "FULL", "LOOSE", "COERCE_EXACT", "COERCE_FULL_EXACT", "NUMERIC", "formatComparableVersion", "version", "formatFullVersion", "parse", "match", "tryParse", "compareMainParsed", "comparePrereleaseParsed", "compareParsed", "coerceParsedVersion", "STRICT_COMPARATOR", "LOOSE_COMPARATOR$1", "parseComparator", "testParsedComparator", "comparatorAllowsPrerelease", "testComparatorSet", "BUILD_STRIP", "BUILD_SAFE", "STRICT_HYPHEN", "LOOSE_HYPHEN", "COMPARATOR_TRIM", "TILDE_TRIM", "CARET_TRIM", "STRICT_TILDE", "LOOSE_TILDE", "STRICT_CARET", "LOOSE_CARET", "STRICT_XRANGE", "LOOSE_XRANGE", "STAR", "GTE_ZERO", "GTE_ZERO_PRERELEASE", "LOOSE_COMPARATOR", "isWildcard", "hasInvalidWildcardOrder", "replaceTilde", "replaceTildes", "replaceCaret", "replaceCarets", "replaceXRange", "replaceXRanges", "replaceHyphenRange", "expandComparator", "parseSimpleRange", "parseRange", "raw", "tryParseRange", "testParsedRange", "testRangeVersion", "satisfies", "coerce", "semverSatisfies", "channel", "platform", "semverSatisfies", "message", "context", "info", "context", "config", "profile", "version", "version", "message", "platform", "context", "channel", "match", "error", "context", "error", "bundleMatchesQueryWhere", "sortBundles", "makeResponse", "INIT_BUNDLE_ROLLBACK_UPDATE_INFO", "options", "context", "platform", "channel", "info", "fileUrl", "version", "context", "plugin", "context", "context", "match", "decoder", "raw", "context", "app", "env", "context", "context", "routes", "routes", "Node", "_Node", "Node", "Hono", "context", "config", "platform", "channel", "bundles", "context", "config", "config", "context", "Hono", "env"]
5
+ "sourcesContent": ["//#region package.json\nvar version = \"1.0.0-rc.0\";\n//#endregion\nexport { version };\n", "import { version } from \"./package.mjs\";\n//#region src/version.ts\nconst HOT_UPDATER_SERVER_VERSION = version;\n//#endregion\nexport { HOT_UPDATER_SERVER_VERSION };\n", "import { HOT_UPDATER_SERVER_VERSION } from \"./version.mjs\";\n//#region src/handlerVersionRoutes.ts\nconst HOT_UPDATER_INFRASTRUCTURE_GENERATION = 1;\nconst createVersionRouteHandlers = () => ({ version: async () => Response.json({\n\tinfrastructureGeneration: 1,\n\tversion: HOT_UPDATER_SERVER_VERSION\n}) });\n//#endregion\nexport { HOT_UPDATER_INFRASTRUCTURE_GENERATION, createVersionRouteHandlers };\n", "//#region src/analytics/errors.ts\nvar AnalyticsScanLimitExceededError = class extends Error {\n\tconstructor(limit) {\n\t\tsuper(`Analytics event scan exceeded ${limit} rows.`);\n\t\tthis.limit = limit;\n\t\tthis.name = \"AnalyticsScanLimitExceededError\";\n\t}\n};\nvar AnalyticsBadRequestError = class extends Error {\n\tname = \"AnalyticsBadRequestError\";\n};\nvar AnalyticsPayloadTooLargeError = class extends Error {\n\tname = \"AnalyticsPayloadTooLargeError\";\n\tconstructor(maximumBytes) {\n\t\tsuper(`Event payload exceeds ${maximumBytes} bytes`);\n\t\tthis.maximumBytes = maximumBytes;\n\t}\n};\n//#endregion\nexport { AnalyticsBadRequestError, AnalyticsPayloadTooLargeError, AnalyticsScanLimitExceededError };\n", "import { AnalyticsBadRequestError, AnalyticsPayloadTooLargeError } from \"./errors.mjs\";\n//#region src/analytics/eventInput.ts\nconst MAX_EVENT_STRING_LENGTH = 1024;\nconst EVENT_BODY_MAX_BYTES = 16 * 1024;\nconst eventKeys = new Set([\n\t\"type\",\n\t\"installId\",\n\t\"toBundleId\",\n\t\"userId\",\n\t\"username\",\n\t\"platform\",\n\t\"appVersion\",\n\t\"channel\",\n\t\"cohort\",\n\t\"fingerprintHash\",\n\t\"fromBundleId\",\n\t\"fromReleaseId\",\n\t\"toReleaseId\",\n\t\"updateStrategy\",\n\t\"sdkVersion\"\n]);\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction requireStringField(payload, key) {\n\tconst value = payload[key];\n\tif (typeof value !== \"string\" || value.length === 0 || value.length > MAX_EVENT_STRING_LENGTH) throw new AnalyticsBadRequestError(`Invalid event field: ${key}`);\n\treturn value;\n}\nfunction requireNullableStringField(payload, key) {\n\tif (payload[key] === null) return null;\n\treturn requireStringField(payload, key);\n}\nasync function readBoundedText(request) {\n\tconst contentLength = request.headers.get(\"content-length\");\n\tconst declaredByteLength = Number(contentLength);\n\tif (contentLength !== null && Number.isSafeInteger(declaredByteLength) && declaredByteLength > 16384) throw new AnalyticsPayloadTooLargeError(EVENT_BODY_MAX_BYTES);\n\tif (request.body === null) return \"\";\n\tconst reader = request.body.getReader();\n\tconst decoder = new TextDecoder();\n\tlet byteLength = 0;\n\tlet text = \"\";\n\twhile (true) {\n\t\tconst result = await reader.read();\n\t\tif (result.done) break;\n\t\tbyteLength += result.value.byteLength;\n\t\tif (byteLength > 16384) {\n\t\t\tawait reader.cancel();\n\t\t\tthrow new AnalyticsPayloadTooLargeError(EVENT_BODY_MAX_BYTES);\n\t\t}\n\t\ttext += decoder.decode(result.value, { stream: true });\n\t}\n\treturn text + decoder.decode();\n}\nasync function parseJson(request) {\n\tconst text = await readBoundedText(request);\n\ttry {\n\t\treturn JSON.parse(text);\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) throw new AnalyticsBadRequestError(\"Invalid event payload\");\n\t\tthrow error;\n\t}\n}\nfunction requireEvent(payload) {\n\tif (!isRecord(payload) || Object.keys(payload).some((key) => !eventKeys.has(key))) throw new AnalyticsBadRequestError(\"Invalid event payload\");\n\tconst platform = requireStringField(payload, \"platform\");\n\tif (platform !== \"ios\" && platform !== \"android\") throw new AnalyticsBadRequestError(\"Invalid event field: platform\");\n\tconst base = {\n\t\tinstallId: requireStringField(payload, \"installId\"),\n\t\ttoBundleId: requireStringField(payload, \"toBundleId\"),\n\t\t...payload.userId === void 0 ? {} : { userId: requireStringField(payload, \"userId\") },\n\t\t...payload.username === void 0 ? {} : { username: requireStringField(payload, \"username\") },\n\t\tplatform,\n\t\tappVersion: requireStringField(payload, \"appVersion\"),\n\t\tchannel: requireStringField(payload, \"channel\"),\n\t\tcohort: requireStringField(payload, \"cohort\"),\n\t\tfingerprintHash: requireNullableStringField(payload, \"fingerprintHash\"),\n\t\tsdkVersion: payload.sdkVersion === void 0 ? null : requireNullableStringField(payload, \"sdkVersion\"),\n\t\tfromReleaseId: requireNullableStringField(payload, \"fromReleaseId\"),\n\t\ttoReleaseId: requireNullableStringField(payload, \"toReleaseId\")\n\t};\n\tconst type = requireStringField(payload, \"type\");\n\tswitch (type) {\n\t\tcase \"UPDATE_APPLIED\":\n\t\tcase \"RECOVERED\":\n\t\tcase \"RELEASE_ADOPTED\": {\n\t\t\tconst updateStrategy = requireStringField(payload, \"updateStrategy\");\n\t\t\tif (updateStrategy !== \"fingerprint\" && updateStrategy !== \"appVersion\") throw new AnalyticsBadRequestError(\"Invalid event field: updateStrategy\");\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype,\n\t\t\t\tfromBundleId: requireStringField(payload, \"fromBundleId\"),\n\t\t\t\tupdateStrategy\n\t\t\t};\n\t\t}\n\t\tcase \"UNCHANGED\":\n\t\t\tif (payload.fromBundleId !== null || payload.updateStrategy !== null) throw new AnalyticsBadRequestError(\"Invalid unchanged event shape\");\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype,\n\t\t\t\tfromBundleId: null,\n\t\t\t\tupdateStrategy: null\n\t\t\t};\n\t\tdefault: throw new AnalyticsBadRequestError(\"Invalid event field: type\");\n\t}\n}\nasync function parseBundleEventRequest(request) {\n\treturn requireEvent(await parseJson(request));\n}\n//#endregion\nexport { parseBundleEventRequest };\n", "import { AnalyticsBadRequestError } from \"./errors.mjs\";\n//#region src/analytics/queryInput.ts\nconst EVENT_LIST_BOUNDS = {\n\tdefaultValue: 50,\n\tmaximum: 100,\n\tminimum: 1\n};\nconst EVENT_LIST_OFFSET_BOUNDS = {\n\tdefaultValue: 0,\n\tminimum: 0\n};\nconst MAX_USER_ID_LENGTH = 1024;\nfunction parseInteger(url, key, bounds) {\n\tconst value = url.searchParams.get(key);\n\tif (value === null) return bounds.defaultValue;\n\tconst parsed = Number(value);\n\tif (!Number.isSafeInteger(parsed) || parsed < bounds.minimum || bounds.maximum !== void 0 && parsed > bounds.maximum) throw new AnalyticsBadRequestError(`Invalid '${key}' query parameter.`);\n\treturn parsed;\n}\nconst parsePagination = (request) => {\n\tconst url = new URL(request.url);\n\treturn {\n\t\tlimit: parseInteger(url, \"limit\", EVENT_LIST_BOUNDS),\n\t\toffset: parseInteger(url, \"offset\", EVENT_LIST_OFFSET_BOUNDS)\n\t};\n};\nconst parseAnalyticsQuery = (request) => {\n\tconst window = new URL(request.url).searchParams.get(\"window\") ?? \"24h\";\n\tif (window !== \"24h\" && window !== \"7d\" && window !== \"30d\" && window !== \"all\") throw new AnalyticsBadRequestError(\"Invalid 'window' query parameter.\");\n\treturn {\n\t\t...parsePagination(request),\n\t\twindow\n\t};\n};\nconst parseActiveInstallationInput = (request) => {\n\tconst url = new URL(request.url);\n\tconst windows = url.searchParams.getAll(\"window\");\n\tif (windows.length > 1) throw new AnalyticsBadRequestError(\"Duplicate 'window' query parameter.\");\n\tconst window = windows[0] ?? \"30d\";\n\tif (window !== \"24h\" && window !== \"7d\" && window !== \"30d\") throw new AnalyticsBadRequestError(\"Invalid 'window' query parameter.\");\n\tconst userIds = url.searchParams.getAll(\"userId\");\n\tif (userIds.length > 1) throw new AnalyticsBadRequestError(\"Duplicate 'userId' query parameter.\");\n\tconst userId = userIds[0];\n\tif (userId !== void 0 && (userId.length === 0 || userId.length > MAX_USER_ID_LENGTH)) throw new AnalyticsBadRequestError(\"Invalid 'userId' query parameter.\");\n\treturn userId === void 0 ? { window } : {\n\t\twindow,\n\t\tuserId\n\t};\n};\nconst parseSearchInput = (request) => ({\n\t...parsePagination(request),\n\tquery: new URL(request.url).searchParams.get(\"query\")?.trim() ?? \"\"\n});\n//#endregion\nexport { parseActiveInstallationInput, parseAnalyticsQuery, parsePagination, parseSearchInput };\n", "import { AnalyticsBadRequestError, AnalyticsPayloadTooLargeError, AnalyticsScanLimitExceededError } from \"./errors.mjs\";\nimport { parseBundleEventRequest } from \"./eventInput.mjs\";\nimport { parseActiveInstallationInput, parseAnalyticsQuery, parsePagination, parseSearchInput } from \"./queryInput.mjs\";\n//#region src/analytics/routes.ts\nconst json = (body, status) => Response.json(body, {\n\theaders: { \"cache-control\": \"private, no-store\" },\n\tstatus\n});\nconst requireParam = (params, key) => {\n\tconst value = params[key];\n\tif (value === void 0 || value.length === 0) throw new AnalyticsBadRequestError(`Missing route parameter: ${key}`);\n\treturn value;\n};\nconst run = async (operation) => {\n\ttry {\n\t\treturn await operation();\n\t} catch (error) {\n\t\tif (error instanceof AnalyticsBadRequestError) return json({ error: error.message }, 400);\n\t\tif (error instanceof AnalyticsPayloadTooLargeError) return json({ error: error.message }, 413);\n\t\tif (error instanceof AnalyticsScanLimitExceededError) return json({ error: {\n\t\t\tcode: \"ANALYTICS_SCAN_LIMIT_EXCEEDED\",\n\t\t\tlimit: error.limit\n\t\t} }, 503);\n\t\tthrow error;\n\t}\n};\nconst query = (operation) => run(async () => json(await operation(), 200));\nconst createAnalyticsRouteHandlers = (provider) => ({\n\tappendBundleEvent: async (_params, request) => run(async () => {\n\t\tawait provider.appendBundleEvent(await parseBundleEventRequest(request));\n\t\treturn new Response(null, { status: 204 });\n\t}),\n\tgetBundleEventSummary: (params) => query(() => provider.getBundleEventSummary(requireParam(params, \"id\"))),\n\tgetBundleEventAnalytics: (params, request) => query(() => {\n\t\tconst input = parseAnalyticsQuery(request);\n\t\treturn provider.getBundleEventAnalytics(requireParam(params, \"id\"), input.window, input.limit, input.offset);\n\t}),\n\tgetBundleEventOverview: () => query(() => provider.getBundleEventOverview()),\n\tgetActiveInstallationOverview: (_params, request) => query(() => provider.getActiveInstallationOverview(parseActiveInstallationInput(request))),\n\tsearchInstallations: (_params, request) => query(() => {\n\t\tconst input = parseSearchInput(request);\n\t\treturn provider.searchInstallations(input.query, input.limit, input.offset);\n\t}),\n\tgetInstallationHistory: (params, request) => query(() => {\n\t\tconst input = parsePagination(request);\n\t\treturn provider.getInstallationHistory(requireParam(params, \"installId\"), input.limit, input.offset);\n\t})\n});\nconst registerAnalyticsClientRoutes = (add) => {\n\tadd(\"POST\", \"/events\", \"appendBundleEvent\");\n};\nconst registerAnalyticsAdminRoutes = (add) => {\n\tadd(\"GET\", \"/bundles/:id/events/summary\", \"getBundleEventSummary\");\n\tadd(\"GET\", \"/bundles/:id/events/analytics\", \"getBundleEventAnalytics\");\n\tadd(\"GET\", \"/installations/overview\", \"getBundleEventOverview\");\n\tadd(\"GET\", \"/installations/active\", \"getActiveInstallationOverview\");\n\tadd(\"GET\", \"/installations\", \"searchInstallations\");\n\tadd(\"GET\", \"/installations/:installId/events\", \"getInstallationHistory\");\n};\n//#endregion\nexport { createAnalyticsRouteHandlers, registerAnalyticsAdminRoutes, registerAnalyticsClientRoutes };\n", "//#region src/handlerErrors.ts\nvar HandlerBadRequestError = class extends Error {\n\tname = \"HandlerBadRequestError\";\n\tconstructor(message) {\n\t\tsuper(message);\n\t}\n};\n//#endregion\nexport { HandlerBadRequestError };\n", "import { HandlerBadRequestError } from \"./handlerErrors.mjs\";\n//#region src/handlerParameters.ts\nconst decodeMaybe = (value) => {\n\tif (value === void 0) return void 0;\n\ttry {\n\t\treturn decodeURIComponent(value);\n\t} catch {\n\t\treturn value;\n\t}\n};\nconst isPlatform = (value) => value === \"ios\" || value === \"android\";\nconst requireRouteParam = (params, key) => {\n\tconst value = params[key];\n\tif (!value) throw new HandlerBadRequestError(`Missing route parameter: ${key}`);\n\treturn value;\n};\nconst requirePlatformParam = (params) => {\n\tconst platform = requireRouteParam(params, \"platform\");\n\tif (!isPlatform(platform)) throw new HandlerBadRequestError(`Invalid platform: ${platform}. Expected 'ios' or 'android'.`);\n\treturn platform;\n};\nconst parseStringArraySearchParam = (url, key) => {\n\tconst values = url.searchParams.getAll(key);\n\treturn values.length > 0 ? values : void 0;\n};\nconst parsePositiveIntegerSearchParam = (url, key, bounds) => {\n\tconst value = url.searchParams.get(key);\n\tif (value === null) return bounds.defaultValue;\n\tconst parsed = Number(value);\n\tif (!Number.isInteger(parsed) || parsed < 1 || parsed > bounds.maxValue) throw new HandlerBadRequestError(`The '${key}' query parameter must be a positive integer between 1 and ${bounds.maxValue}.`);\n\treturn parsed;\n};\n//#endregion\nexport { decodeMaybe, isPlatform, parsePositiveIntegerSearchParam, parseStringArraySearchParam, requirePlatformParam, requireRouteParam };\n", "import { HandlerBadRequestError } from \"./handlerErrors.mjs\";\nimport { decodeMaybe, isPlatform, parsePositiveIntegerSearchParam, parseStringArraySearchParam, requireRouteParam } from \"./handlerParameters.mjs\";\n//#region src/handlerBundleRoutes.ts\nconst BUNDLE_LIST_BOUNDS = {\n\tdefaultValue: 50,\n\tmaxValue: 100\n};\nconst isChannelText = (value) => {\n\tif (typeof value !== \"string\" || value.length === 0) return false;\n\tlet codePoints = 0;\n\tfor (const _codePoint of value) {\n\t\tcodePoints += 1;\n\t\tif (codePoints > 255) return false;\n\t}\n\treturn true;\n};\nconst requireChannelInsertInput = (value) => {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value) || !(\"row\" in value) || !value.row || typeof value.row !== \"object\" || Array.isArray(value.row) || !(\"id\" in value.row) || !isChannelText(value.row.id) || !(\"name\" in value.row) || !isChannelText(value.row.name) || !(\"onConflict\" in value) || value.onConflict !== \"returnExisting\") throw new HandlerBadRequestError(\"Invalid Channel insert payload\");\n\treturn {\n\t\trow: {\n\t\t\tid: value.row.id,\n\t\t\tname: value.row.name\n\t\t},\n\t\tonConflict: value.onConflict\n\t};\n};\nconst requireBundlePatchPayload = (payload, bundleId) => {\n\tif (!payload || typeof payload !== \"object\" || Array.isArray(payload)) throw new HandlerBadRequestError(\"Invalid bundle payload\");\n\tconst bundlePatch = payload;\n\tif (bundlePatch.id !== void 0 && bundlePatch.id !== bundleId) throw new HandlerBadRequestError(\"Bundle id mismatch\");\n\tconst { id: _ignoredId, ...rest } = bundlePatch;\n\treturn rest;\n};\nconst createBundleRouteHandlers = () => ({\n\tgetBundle: async (params, _request, api) => {\n\t\tconst bundle = await api.getBundleById(requireRouteParam(params, \"id\"));\n\t\tif (!bundle) return new Response(JSON.stringify({ error: \"Bundle not found\" }), {\n\t\t\tstatus: 404,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\treturn new Response(JSON.stringify(bundle), {\n\t\t\tstatus: 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tgetBundles: async (_params, request, api) => {\n\t\tconst url = new URL(request.url);\n\t\tconst platform = url.searchParams.get(\"platform\");\n\t\tconst limit = parsePositiveIntegerSearchParam(url, \"limit\", BUNDLE_LIST_BOUNDS);\n\t\tconst pageParam = url.searchParams.get(\"page\");\n\t\tconst offset = url.searchParams.get(\"offset\");\n\t\tconst after = url.searchParams.get(\"after\") ?? void 0;\n\t\tconst before = url.searchParams.get(\"before\") ?? void 0;\n\t\tconst orderDirection = url.searchParams.get(\"orderDirection\");\n\t\tconst idEq = url.searchParams.get(\"idEq\") ?? void 0;\n\t\tconst idGt = url.searchParams.get(\"idGt\") ?? void 0;\n\t\tconst idGte = url.searchParams.get(\"idGte\") ?? void 0;\n\t\tconst idLt = url.searchParams.get(\"idLt\") ?? void 0;\n\t\tconst idLte = url.searchParams.get(\"idLte\") ?? void 0;\n\t\tconst idIn = parseStringArraySearchParam(url, \"idIn\");\n\t\tconst page = pageParam === null ? void 0 : Number.isSafeInteger(Number(pageParam)) && Number(pageParam) > 0 && Number.isSafeInteger((Number(pageParam) - 1) * limit) ? Number(pageParam) : null;\n\t\tif (offset !== null) throw new HandlerBadRequestError(\"The 'offset' query parameter has been removed. Use 'after' or 'before' cursor pagination instead.\");\n\t\tif (page === null) throw new HandlerBadRequestError(\"The 'page' query parameter must be a positive integer.\");\n\t\tif (after !== void 0 && before !== void 0) throw new HandlerBadRequestError(\"The 'after' and 'before' query parameters cannot be combined.\");\n\t\tif (page !== void 0 && (after !== void 0 || before !== void 0)) throw new HandlerBadRequestError(\"The 'page' query parameter cannot be combined with 'after' or 'before'.\");\n\t\tif (platform !== null && !isPlatform(platform)) throw new HandlerBadRequestError(`Invalid platform: ${platform}. Expected 'ios' or 'android'.`);\n\t\tif (orderDirection !== null && orderDirection !== \"asc\" && orderDirection !== \"desc\") throw new HandlerBadRequestError(\"The 'orderDirection' query parameter must be 'asc' or 'desc'.\");\n\t\tconst pagination = page === void 0 ? {\n\t\t\tcursor: after !== void 0 ? { after } : before !== void 0 ? { before } : void 0,\n\t\t\tpage: void 0\n\t\t} : {\n\t\t\tcursor: void 0,\n\t\t\tpage\n\t\t};\n\t\tconst result = await api.getBundles({\n\t\t\twhere: {\n\t\t\t\t...platform && { platform },\n\t\t\t\t...idEq || idGt || idGte || idLt || idLte || idIn?.length ? { id: {\n\t\t\t\t\t...idEq && { eq: idEq },\n\t\t\t\t\t...idGt && { gt: idGt },\n\t\t\t\t\t...idGte && { gte: idGte },\n\t\t\t\t\t...idLt && { lt: idLt },\n\t\t\t\t\t...idLte && { lte: idLte },\n\t\t\t\t\t...idIn?.length && { in: idIn }\n\t\t\t\t} } : {}\n\t\t\t},\n\t\t\tlimit,\n\t\t\t...pagination,\n\t\t\t...orderDirection && { orderBy: {\n\t\t\t\tfield: \"id\",\n\t\t\t\tdirection: orderDirection\n\t\t\t} }\n\t\t});\n\t\treturn new Response(JSON.stringify(result), {\n\t\t\tstatus: 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tcreateBundles: async (_params, request, api) => {\n\t\tconst body = await request.json();\n\t\tconst bundles = Array.isArray(body) ? body : [body];\n\t\tif (api.insertBundles) await api.insertBundles(bundles);\n\t\telse {\n\t\t\tif (bundles.length > 1) throw new HandlerBadRequestError(\"This server does not support atomic bundle batches\");\n\t\t\tconst bundle = bundles[0];\n\t\t\tif (bundle !== void 0) await api.insertBundle(bundle);\n\t\t}\n\t\treturn new Response(JSON.stringify({ success: true }), {\n\t\t\tstatus: 201,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tupdateBundle: async (params, request, api) => {\n\t\tconst bundleId = requireRouteParam(params, \"id\");\n\t\tconst body = await request.json();\n\t\tconst payload = Array.isArray(body) ? body[0] : body;\n\t\tawait api.updateBundleById(bundleId, requireBundlePatchPayload(payload, bundleId));\n\t\treturn new Response(JSON.stringify({ success: true }), {\n\t\t\tstatus: 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tdeleteBundle: async (params, _request, api) => {\n\t\tawait api.deleteBundleById(requireRouteParam(params, \"id\"));\n\t\treturn new Response(JSON.stringify({ success: true }), {\n\t\t\tstatus: 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tgetChannels: async (_params, _request, api) => {\n\t\tconst response = { data: { channels: await api.getChannels() } };\n\t\treturn new Response(JSON.stringify(response), {\n\t\t\tstatus: 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tcreateChannel: async (_params, request, api) => {\n\t\tconst result = await api.insertChannel(requireChannelInsertInput(await request.json()));\n\t\treturn new Response(JSON.stringify({ data: result }), {\n\t\t\tstatus: result.inserted ? 201 : 200,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t},\n\tdeleteChannel: async (params, _request, api) => {\n\t\tconst result = await api.deleteChannel({ id: decodeMaybe(requireRouteParam(params, \"id\")) ?? \"\" });\n\t\tif (result.deleted) return new Response(null, { status: 204 });\n\t\tconst status = result.reason === \"not_found\" ? 404 : 409;\n\t\treturn new Response(JSON.stringify({ data: result }), {\n\t\t\tstatus,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n});\n//#endregion\nexport { createBundleRouteHandlers };\n", "//#region src/calculatePagination.ts\n/**\n* Calculate pagination information based on total count, limit, and offset\n*/\nfunction calculatePagination(total, options) {\n\tconst { limit, offset } = options;\n\tif (total === 0) return {\n\t\ttotal: 0,\n\t\thasNextPage: false,\n\t\thasPreviousPage: false,\n\t\tcurrentPage: 1,\n\t\ttotalPages: 0\n\t};\n\tconst currentPage = Math.floor(offset / limit) + 1;\n\tconst totalPages = Math.ceil(total / limit);\n\treturn {\n\t\ttotal,\n\t\thasNextPage: offset + limit < total,\n\t\thasPreviousPage: offset > 0,\n\t\tcurrentPage,\n\t\ttotalPages\n\t};\n}\n//#endregion\nexport { calculatePagination };\n", "//#region src/contentAddressedAssets.ts\nconst CONTENT_ADDRESSED_ASSET_PREFIX = \"assets\";\nconst SHA256_FILE_HASH_RE = /^[0-9a-f]{64}$/;\nconst isContentAddressedAssetFileHash = (value) => {\n\treturn typeof value === \"string\" && SHA256_FILE_HASH_RE.test(value);\n};\nconst getContentAddressedAssetStoragePath = ({ assetPath, fileHash }) => {\n\tconst extension = assetPath.endsWith(\".br\") ? \".br\" : assetPath.includes(\".\") ? `.${assetPath.split(\".\").pop()}` : \"\";\n\treturn `sha256/${fileHash.slice(0, 2)}/${fileHash}${extension}`;\n};\n//#endregion\nexport { CONTENT_ADDRESSED_ASSET_PREFIX, getContentAddressedAssetStoragePath, isContentAddressedAssetFileHash };\n", "//#region src/createStorageKeyBuilder.ts\nconst normalizeStorageKeyParts = (values) => {\n\tif (values.some((value) => value.includes(\"\\\\\"))) throw new Error(\"Storage keys must use '/' as the hierarchy separator.\");\n\tconst segments = values.flatMap((value) => value.split(\"/\").filter(Boolean));\n\tif (segments.some((segment) => segment === \".\" || segment === \"..\")) throw new Error(\"Storage key segments must not be '.' or '..'.\");\n\treturn segments;\n};\nconst createStorageKeyBuilder = (basePath) => {\n\tconst baseSegments = normalizeStorageKeyParts([basePath ?? \"\"]);\n\treturn (...args) => [...baseSegments, ...normalizeStorageKeyParts(args)].join(\"/\");\n};\n//#endregion\nexport { createStorageKeyBuilder };\n", "//#region src/parseStorageUri.ts\nconst PROTOCOL_PATTERN = /^[a-z][a-z\\d+.-]*$/;\nconst INVALID_BUCKET_CHARACTER_PATTERN = /[\\s/?#%@:\\\\]/;\nconst assertProtocol = (protocol) => {\n\tif (!PROTOCOL_PATTERN.test(protocol)) throw new Error(`Invalid storage URI protocol: ${protocol}`);\n};\nconst assertBucket = (bucket) => {\n\tif (bucket.length === 0 || INVALID_BUCKET_CHARACTER_PATTERN.test(bucket)) throw new Error(`Invalid storage URI bucket: ${bucket}`);\n};\nconst getKeySegments = (key) => {\n\tif (key.length === 0) throw new Error(\"Invalid storage URI key: key must not be empty\");\n\tconst segments = key.split(\"/\");\n\tif (segments.some((segment) => segment.length === 0 || segment === \".\" || segment === \"..\" || segment.includes(\"\\\\\"))) throw new Error(\"Invalid storage URI key: segments must not be empty, '.', '..' or contain '\\\\'\");\n\treturn segments;\n};\n/**\n* Creates a hierarchical storage identifier in the form\n* `protocol://bucket/slash-separated-encoded-key`.\n*/\nconst createStorageUri = ({ protocol, bucket, key }) => {\n\tassertProtocol(protocol);\n\tassertBucket(bucket);\n\treturn `${protocol}://${bucket}/${getKeySegments(key).map(encodeURIComponent).join(\"/\")}`;\n};\n/**\n* Parses a hierarchical storage identifier and decodes each key segment.\n*\n* Search parameters and fragments are not part of a storage identifier.\n*/\nfunction parseStorageUri(storageUri, expectedProtocol) {\n\tassertProtocol(expectedProtocol);\n\tif (storageUri.includes(\"?\") || storageUri.includes(\"#\")) throw new Error(`Invalid storage URI format: ${storageUri}`);\n\tconst match = /^([a-z][a-z\\d+.-]*):\\/\\/([^/]+)\\/(.*)$/.exec(storageUri);\n\tif (!match) throw new Error(`Invalid storage URI format: ${storageUri}`);\n\tconst [, protocol, bucket, encodedKey] = match;\n\tif (protocol !== expectedProtocol) throw new Error(`Invalid storage URI protocol. Expected ${expectedProtocol}, got ${protocol}`);\n\tassertBucket(bucket);\n\tlet segments;\n\ttry {\n\t\tsegments = getKeySegments(encodedKey).map((segment) => {\n\t\t\tconst decoded = decodeURIComponent(segment);\n\t\t\tif (decoded.includes(\"/\") || decoded.includes(\"\\\\\")) throw new Error(\"encoded hierarchy separator\");\n\t\t\tif (encodeURIComponent(decoded) !== segment) throw new Error(\"non-canonical segment\");\n\t\t\treturn decoded;\n\t\t});\n\t} catch {\n\t\tthrow new Error(`Invalid storage URI format: ${storageUri}`);\n\t}\n\treturn {\n\t\tprotocol,\n\t\tbucket,\n\t\tkey: segments.join(\"/\")\n\t};\n}\n//#endregion\nexport { createStorageUri, parseStorageUri };\n", "import { getContentAddressedAssetStoragePath, isContentAddressedAssetFileHash } from \"./contentAddressedAssets.mjs\";\nimport { createStorageKeyBuilder } from \"./createStorageKeyBuilder.mjs\";\nimport { createStorageUri, parseStorageUri } from \"./parseStorageUri.mjs\";\n//#region src/assetStorageLayout.ts\nconst isBrotliManifestAssetPath = (assetPath) => /(^|\\/)index\\.[^/]+\\.bundle$/.test(assetPath.replace(/\\\\/g, \"/\"));\nconst getManifestAssetDownloadPath = (assetPath) => isBrotliManifestAssetPath(assetPath) ? `${assetPath}.br` : assetPath;\nconst createStorageUriWithRelativePath = ({ baseStorageUri, relativePath }) => {\n\tconst parsed = parseStorageUri(baseStorageUri, new URL(baseStorageUri).protocol.replace(\":\", \"\"));\n\tconst childKey = createStorageKeyBuilder(void 0)(relativePath);\n\tif (!childKey) throw new Error(\"Relative storage key must not be empty.\");\n\treturn createStorageUri({\n\t\tprotocol: parsed.protocol,\n\t\tbucket: parsed.bucket,\n\t\tkey: createStorageKeyBuilder(parsed.key)(childKey)\n\t});\n};\nconst replaceStorageUriKeySuffix = ({ storageUri, keySuffix, replacement }) => {\n\tconst parsed = parseStorageUri(storageUri, new URL(storageUri).protocol.replace(\":\", \"\"));\n\tconst normalizedSuffix = createStorageKeyBuilder(void 0)(keySuffix);\n\tconst normalizedReplacement = createStorageKeyBuilder(void 0)(replacement);\n\tif (!normalizedSuffix || !normalizedReplacement) throw new Error(\"Storage URI key suffix and replacement must not be empty.\");\n\tconst keySegments = parsed.key.split(\"/\");\n\tconst suffixSegments = normalizedSuffix.split(\"/\");\n\tconst suffixOffset = keySegments.length - suffixSegments.length;\n\tif (suffixOffset < 0 || suffixSegments.some((segment, index) => keySegments[suffixOffset + index] !== segment)) throw new Error(\"Storage URI key does not end with the expected suffix.\");\n\tconst prefix = keySegments.slice(0, suffixOffset).join(\"/\");\n\treturn createStorageUri({\n\t\tprotocol: parsed.protocol,\n\t\tbucket: parsed.bucket,\n\t\tkey: createStorageKeyBuilder(prefix)(normalizedReplacement)\n\t});\n};\nconst resolveManifestAssetStorageFileHash = ({ downloadFileHash, fileHash }) => isContentAddressedAssetFileHash(downloadFileHash) ? downloadFileHash : fileHash;\nconst getManifestAssetStoragePath = ({ assetPath, downloadFileHash, fileHash }) => getContentAddressedAssetStoragePath({\n\tassetPath,\n\tfileHash: resolveManifestAssetStorageFileHash({\n\t\tdownloadFileHash,\n\t\tfileHash\n\t})\n});\nconst resolveManifestAssetStorageUri = ({ assetBaseStorageUri, assetPath, downloadFileHash, fileHash }) => createStorageUriWithRelativePath({\n\tbaseStorageUri: assetBaseStorageUri,\n\trelativePath: getManifestAssetStoragePath({\n\t\tassetPath,\n\t\tdownloadFileHash,\n\t\tfileHash\n\t})\n});\n//#endregion\nexport { createStorageUriWithRelativePath, getManifestAssetDownloadPath, getManifestAssetStoragePath, isBrotliManifestAssetPath, replaceStorageUriKeySuffix, resolveManifestAssetStorageFileHash, resolveManifestAssetStorageUri };\n", "//#region src/databasePluginCrudValidationErrors.ts\nvar DatabasePluginInputError = class extends Error {\n\tname = \"DatabasePluginInputError\";\n\tconstructor(code) {\n\t\tsuper(`Invalid database plugin input: ${code}`);\n\t\tthis.code = code;\n\t}\n};\n//#endregion\nexport { DatabasePluginInputError };\n", "//#region src/databaseJsonValue.ts\nconst isDatabaseJsonValue = (value) => {\n\tconst ancestors = /* @__PURE__ */ new WeakSet();\n\tconst validate = (input) => {\n\t\tif (input === null || typeof input === \"string\" || typeof input === \"boolean\") return true;\n\t\tif (typeof input === \"number\") return Number.isFinite(input);\n\t\tif (typeof input !== \"object\") return false;\n\t\tif (ancestors.has(input)) return false;\n\t\tancestors.add(input);\n\t\ttry {\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tif (Object.getPrototypeOf(input) !== Array.prototype) return false;\n\t\t\t\tif (Reflect.ownKeys(input).length !== input.length + 1) return false;\n\t\t\t\tfor (let index = 0; index < input.length; index += 1) {\n\t\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(input, String(index));\n\t\t\t\t\tif (descriptor === void 0 || !descriptor.enumerable || !(\"value\" in descriptor) || !validate(descriptor.value)) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst prototype = Object.getPrototypeOf(input);\n\t\t\tif (prototype !== Object.prototype && prototype !== null) return false;\n\t\t\tfor (const key of Reflect.ownKeys(input)) {\n\t\t\t\tif (typeof key !== \"string\" || key === \"__proto__\") return false;\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(input, key);\n\t\t\t\tif (descriptor === void 0 || !descriptor.enumerable || !(\"value\" in descriptor) || !validate(descriptor.value)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} finally {\n\t\t\tancestors.delete(input);\n\t\t}\n\t};\n\treturn validate(value);\n};\nconst isDatabaseJsonObject = (value) => typeof value === \"object\" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);\nconst isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, \"app_version\") || typeof value[\"app_version\"] === \"string\");\n//#endregion\nexport { isDatabaseMetadataObject };\n", "//#region src/bundleArtifacts.ts\nconst stripBundleArtifactMetadata = (metadata) => metadata;\nconst getManifestStorageUri = (bundle) => bundle.manifestStorageUri ?? null;\nconst getManifestFileHash = (bundle) => bundle.manifestFileHash ?? null;\nconst getAssetBaseStorageUri = (bundle) => bundle.assetBaseStorageUri ?? null;\nconst isBundlePatchArtifact = (value) => {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst candidate = value;\n\treturn typeof candidate.baseBundleId === \"string\" && typeof candidate.baseFileHash === \"string\" && typeof candidate.patchFileHash === \"string\" && typeof candidate.patchStorageUri === \"string\";\n};\nconst readBundlePatchArray = (patches) => {\n\tif (!Array.isArray(patches)) return [];\n\treturn patches.filter(isBundlePatchArtifact);\n};\nconst getBundlePatches = (bundle) => {\n\tconst patches = readBundlePatchArray(bundle.patches);\n\tconst seenBaseBundleIds = /* @__PURE__ */ new Set();\n\treturn patches.filter((patch) => {\n\t\tif (seenBaseBundleIds.has(patch.baseBundleId)) return false;\n\t\tseenBaseBundleIds.add(patch.baseBundleId);\n\t\treturn true;\n\t});\n};\nconst getBundlePatch = (bundle, baseBundleId) => {\n\treturn getBundlePatches(bundle).find((patch) => patch.baseBundleId === baseBundleId) ?? null;\n};\nconst getPrimaryPatch = (bundle) => {\n\treturn getBundlePatches(bundle)[0] ?? null;\n};\nconst getPatchBaseBundleId = (bundle) => getPrimaryPatch(bundle)?.baseBundleId ?? null;\nconst getPatchBaseFileHash = (bundle) => getPrimaryPatch(bundle)?.baseFileHash ?? null;\nconst getPatchFileHash = (bundle) => getPrimaryPatch(bundle)?.patchFileHash ?? null;\nconst getPatchStorageUri = (bundle) => getPrimaryPatch(bundle)?.patchStorageUri ?? null;\n//#endregion\n//#region src/rollout.ts\nconst NUMERIC_COHORT_SIZE = 1e3;\nconst DEFAULT_ROLLOUT_COHORT_COUNT = NUMERIC_COHORT_SIZE;\nconst MAX_COHORT_LENGTH = 64;\nconst INVALID_COHORT_ERROR_MESSAGE = `Invalid cohort. Use 1-1000 or a lowercase slug without spaces, up to 64 characters.`;\nconst CUSTOM_COHORT_PATTERN = /^[a-z0-9-]+$/;\nfunction parseNumericCohortValue(cohort) {\n\tif (!/^\\d+$/.test(cohort)) return null;\n\tconst parsed = Number.parseInt(cohort, 10);\n\tif (Number.isNaN(parsed) || parsed < 1 || parsed > 1e3) return null;\n\treturn parsed;\n}\nfunction positiveMod(value, modulus) {\n\treturn (value % modulus + modulus) % modulus;\n}\nfunction hashString(value) {\n\tlet hash = 0;\n\tfor (let i = 0; i < value.length; i++) {\n\t\tconst char = value.charCodeAt(i);\n\t\thash = (hash << 5) - hash + char;\n\t\thash |= 0;\n\t}\n\treturn hash;\n}\nfunction gcd(a, b) {\n\tlet x = Math.abs(a);\n\tlet y = Math.abs(b);\n\twhile (y !== 0) {\n\t\tconst next = x % y;\n\t\tx = y;\n\t\ty = next;\n\t}\n\treturn x;\n}\nfunction modularInverse(value, modulus) {\n\tlet t = 0;\n\tlet newT = 1;\n\tlet r = modulus;\n\tlet newR = positiveMod(value, modulus);\n\twhile (newR !== 0) {\n\t\tconst quotient = Math.floor(r / newR);\n\t\t[t, newT] = [newT, t - quotient * newT];\n\t\t[r, newR] = [newR, r - quotient * newR];\n\t}\n\tif (r > 1) throw new Error(`No modular inverse for ${value} mod ${modulus}`);\n\treturn positiveMod(t, modulus);\n}\nfunction getRolloutShuffleParameters(bundleId) {\n\tlet multiplier = positiveMod(hashString(`${bundleId}:multiplier`), 997);\n\tif (multiplier === 0) multiplier = 1;\n\twhile (gcd(multiplier, NUMERIC_COHORT_SIZE) !== 1) {\n\t\tmultiplier = positiveMod(multiplier + 1, NUMERIC_COHORT_SIZE);\n\t\tif (multiplier === 0) multiplier = 1;\n\t}\n\tconst offset = positiveMod(hashString(`${bundleId}:offset`), NUMERIC_COHORT_SIZE);\n\treturn {\n\t\tmultiplier,\n\t\toffset,\n\t\tinverseMultiplier: modularInverse(multiplier, NUMERIC_COHORT_SIZE)\n\t};\n}\nfunction normalizeRolloutCohortCount(rolloutCohortCount) {\n\tif (rolloutCohortCount === null || rolloutCohortCount === void 0) return DEFAULT_ROLLOUT_COHORT_COUNT;\n\tif (rolloutCohortCount <= 0) return 0;\n\tif (rolloutCohortCount >= 1e3) return NUMERIC_COHORT_SIZE;\n\treturn Math.floor(rolloutCohortCount);\n}\nfunction normalizeCohortValue(cohort) {\n\tconst normalized = cohort.trim().toLowerCase();\n\tconst numericCohort = parseNumericCohortValue(normalized);\n\tif (numericCohort !== null) return String(numericCohort);\n\treturn normalized;\n}\nfunction getNumericCohortValue(cohort) {\n\treturn parseNumericCohortValue(normalizeCohortValue(cohort));\n}\nfunction isNumericCohort(cohort) {\n\treturn getNumericCohortValue(cohort) !== null;\n}\nfunction isCustomCohort(cohort) {\n\tconst normalized = normalizeCohortValue(cohort);\n\treturn normalized.length > 0 && normalized.length <= 64 && !/^\\d+$/.test(normalized) && CUSTOM_COHORT_PATTERN.test(normalized);\n}\nfunction isValidCohort(cohort) {\n\tconst normalized = normalizeCohortValue(cohort);\n\treturn isNumericCohort(normalized) || isCustomCohort(normalized);\n}\nfunction getDefaultNumericCohort(identifier) {\n\tconst cohortValue = positiveMod(hashString(identifier), NUMERIC_COHORT_SIZE) + 1;\n\treturn String(cohortValue);\n}\nfunction getNumericCohortRolloutPosition(bundleId, cohortValue) {\n\tif (cohortValue < 1 || cohortValue > 1e3) throw new Error(`Invalid numeric cohort: ${cohortValue}`);\n\tconst { offset, inverseMultiplier } = getRolloutShuffleParameters(bundleId);\n\treturn positiveMod(inverseMultiplier * (cohortValue - 1 - offset), NUMERIC_COHORT_SIZE);\n}\nfunction getRolledOutNumericCohorts(bundleId, rolloutCohortCount) {\n\tconst normalizedRolloutCount = normalizeRolloutCohortCount(rolloutCohortCount);\n\tif (normalizedRolloutCount <= 0) return [];\n\tif (normalizedRolloutCount >= 1e3) return Array.from({ length: NUMERIC_COHORT_SIZE }, (_, index) => index + 1);\n\tconst { multiplier, offset } = getRolloutShuffleParameters(bundleId);\n\treturn Array.from({ length: normalizedRolloutCount }, (_, position) => positiveMod(multiplier * position + offset, NUMERIC_COHORT_SIZE)).map((zeroBasedCohort) => zeroBasedCohort + 1).sort((left, right) => left - right);\n}\nfunction isCohortEligibleForUpdate(bundleId, cohort, rolloutCohortCount, targetCohorts) {\n\tconst normalizedCohort = cohort === null || cohort === void 0 ? void 0 : normalizeCohortValue(cohort);\n\tconst normalizedTargetCohorts = targetCohorts?.map((targetCohort) => normalizeCohortValue(targetCohort)) ?? [];\n\tif (normalizedCohort !== void 0 && normalizedTargetCohorts.includes(normalizedCohort)) return true;\n\tconst normalizedRolloutCount = normalizeRolloutCohortCount(rolloutCohortCount);\n\tif (normalizedRolloutCount <= 0) return false;\n\tif (normalizedCohort === void 0) return normalizedRolloutCount >= NUMERIC_COHORT_SIZE;\n\tconst numericCohort = getNumericCohortValue(normalizedCohort);\n\tif (numericCohort === null) return false;\n\tif (normalizedRolloutCount >= 1e3) return true;\n\treturn getNumericCohortRolloutPosition(bundleId, numericCohort) < normalizedRolloutCount;\n}\n//#endregion\n//#region src/releaseCatalog.ts\nconst RELEASE_CATALOG_SCHEMA_VERSION = 1;\nconst RELEASE_CATALOG_FALLBACK_POLICY = \"BUILTIN_IF_ACTIVE_INELIGIBLE\";\nconst MAX_CRASHED_BUNDLES = 10;\nconst MAX_TARGET_COHORTS_PER_RELEASE = 100;\nconst MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE = 512;\nconst MAX_COMPILED_CATALOG_BYTES = 256 * 1024;\nconst hashSelectionContext = (value) => {\n\tlet first = 2166136261;\n\tlet second = 2654435769;\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\tconst code = value.charCodeAt(index);\n\t\tfirst = Math.imul(first ^ code, 16777619);\n\t\tsecond = Math.imul(second ^ code, 2246822507);\n\t}\n\treturn `v1:${(first >>> 0).toString(16).padStart(8, \"0\")}${(second >>> 0).toString(16).padStart(8, \"0\")}`;\n};\nfunction createReleaseSelectionContextHash(input) {\n\tconst crashedBundleIds = [...new Set(input.crashedBundleIds)].sort().slice(0, 10);\n\treturn hashSelectionContext(JSON.stringify({\n\t\tactiveBundleId: input.activeBundleId ?? null,\n\t\tactiveReleaseId: input.activeReleaseId ?? null,\n\t\tcohort: normalizeCohortValue(input.cohort ?? \"\"),\n\t\tcrashedBundleIds,\n\t\tminimumReleaseId: input.minimumReleaseId,\n\t\tselectorSchemaVersion: 1,\n\t\tstrategy: input.strategy,\n\t\tstrategyValue: input.strategyValue\n\t}));\n}\nfunction isReleaseEligibleForCohort(release, cohort) {\n\tif (isCohortEligibleForUpdate(release.releaseId, cohort, release.rolloutCohortCount, release.targetCohorts)) return true;\n\treturn cohort !== null && cohort !== void 0 && isCustomCohort(normalizeCohortValue(cohort)) && normalizeRolloutCohortCount(release.rolloutCohortCount) === 1e3;\n}\nfunction selectDesiredRelease(catalog, input) {\n\tconst crashedBundleIds = new Set(input.crashedBundleIds);\n\tconst activeReleaseId = input.activeReleaseId ?? null;\n\tconst hasActiveBundle = input.currentBundleId !== input.builtInBundleId;\n\tconst isSafeBundleRelease = (release) => release.kind === \"BUNDLE\" && release.bundleId !== null && !crashedBundleIds.has(release.bundleId) && release.bundleId >= input.minimumReleaseId;\n\tconst desiredBundle = (release, status) => ({\n\t\tbundleId: release.bundleId,\n\t\tkind: \"BUNDLE\",\n\t\trelease,\n\t\treleaseId: release.releaseId,\n\t\tstatus\n\t});\n\tfor (const release of catalog.releases) {\n\t\tif (!isReleaseEligibleForCohort(release, input.cohort)) continue;\n\t\tif (activeReleaseId !== null && release.releaseId <= activeReleaseId || activeReleaseId === null && hasActiveBundle && (release.bundleId === null || release.bundleId <= input.currentBundleId)) continue;\n\t\tif (isSafeBundleRelease(release)) return desiredBundle(release, \"UPDATE\");\n\t\tif (release.bundleId !== null) continue;\n\t\treturn {\n\t\t\tbundleId: input.builtInBundleId,\n\t\t\tkind: \"EMBEDDED\",\n\t\t\trelease,\n\t\t\treleaseId: release.releaseId,\n\t\t\tstatus: \"ROLLBACK\"\n\t\t};\n\t}\n\tif (activeReleaseId !== null || hasActiveBundle) {\n\t\tconst rollbackReleases = catalog.rollbackReleases ?? catalog.releases;\n\t\tconst current = rollbackReleases.find((release) => release.releaseId === activeReleaseId || activeReleaseId === null && release.bundleId === input.currentBundleId);\n\t\tif (current !== void 0 && isSafeBundleRelease(current) && isReleaseEligibleForCohort(current, input.cohort)) return desiredBundle(current, \"UPDATE\");\n\t\tconst rollback = rollbackReleases.find((release) => isSafeBundleRelease(release) && (activeReleaseId !== null ? release.releaseId < activeReleaseId : release.bundleId < input.currentBundleId));\n\t\tif (rollback !== void 0 && isSafeBundleRelease(rollback)) return desiredBundle(rollback, \"ROLLBACK\");\n\t\tif (input.currentBundleId <= input.minimumReleaseId) return null;\n\t}\n\tif (catalog.fallbackPolicy !== \"BUILTIN_IF_ACTIVE_INELIGIBLE\") return null;\n\treturn {\n\t\tbundleId: input.builtInBundleId,\n\t\tkind: \"BUILTIN\",\n\t\trelease: null,\n\t\treleaseId: null,\n\t\tstatus: \"ROLLBACK\"\n\t};\n}\nfunction assessCatalogAcceptance(incoming, highestSeen) {\n\tif (highestSeen === null) return {\n\t\taccepted: true,\n\t\tshouldAdvanceHighWater: true\n\t};\n\tif (incoming.generation < highestSeen.generation) return {\n\t\taccepted: false,\n\t\treason: \"STALE_GENERATION\"\n\t};\n\tif (incoming.generation === highestSeen.generation && incoming.catalogHash !== highestSeen.catalogHash) return {\n\t\taccepted: false,\n\t\treason: \"GENERATION_HASH_MISMATCH\"\n\t};\n\treturn {\n\t\taccepted: true,\n\t\tshouldAdvanceHighWater: incoming.generation > highestSeen.generation\n\t};\n}\nfunction authorizeReleaseTransition(input) {\n\tconst { active, desired, explicitScopeSwitch } = input;\n\tif (active === null || active.scopeKey === null || active.generation === null) return {\n\t\tauthorized: true,\n\t\treason: \"FIRST_AUTHENTICATED_SELECTION\"\n\t};\n\tif (desired.catalogId !== active.catalogId || desired.scopeKey !== active.scopeKey) {\n\t\tif (!explicitScopeSwitch) return {\n\t\t\tauthorized: false,\n\t\t\treason: \"UNSOLICITED_SCOPE\"\n\t\t};\n\t\tif (desired.releaseId === null || desired.kind === \"BUILTIN\") return {\n\t\t\tauthorized: false,\n\t\t\treason: \"EMPTY_TARGET_SCOPE\"\n\t\t};\n\t\treturn {\n\t\t\tauthorized: true,\n\t\t\treason: \"EXPLICIT_SCOPE_SWITCH\"\n\t\t};\n\t}\n\tif (desired.generation === null || desired.generation < active.generation) return {\n\t\tauthorized: false,\n\t\treason: \"STALE_GENERATION\"\n\t};\n\tif (desired.generation > active.generation) return {\n\t\tauthorized: true,\n\t\treason: \"NEWER_POLICY\"\n\t};\n\tif (desired.selectionContextHash !== active.selectionContextHash) return {\n\t\tauthorized: true,\n\t\treason: \"CONTEXT_RESELECTION\"\n\t};\n\treturn {\n\t\tauthorized: false,\n\t\treason: \"BACKWARD_NOT_AUTHORIZED\"\n\t};\n}\n//#endregion\n//#region src/releaseCatalogScope.ts\nconst BASE64URL_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\nconst MAX_CATALOG_SEGMENT_LENGTH = 255;\nfunction assertCatalogSegment(value, name) {\n\tif (value.length === 0 || value.length > MAX_CATALOG_SEGMENT_LENGTH || !/^[A-Za-z0-9._~-]+$/.test(value)) throw new Error(`${name} must be 1-${MAX_CATALOG_SEGMENT_LENGTH} URL-safe ASCII characters`);\n}\nfunction encodeUtf8(value) {\n\tconst bytes = [];\n\tfor (const codePointText of value) {\n\t\tconst codePoint = codePointText.codePointAt(0);\n\t\tif (codePoint <= 127) bytes.push(codePoint);\n\t\telse if (codePoint <= 2047) bytes.push(192 | codePoint >> 6, 128 | codePoint & 63);\n\t\telse if (codePoint <= 65535) bytes.push(224 | codePoint >> 12, 128 | codePoint >> 6 & 63, 128 | codePoint & 63);\n\t\telse bytes.push(240 | codePoint >> 18, 128 | codePoint >> 12 & 63, 128 | codePoint >> 6 & 63, 128 | codePoint & 63);\n\t}\n\treturn bytes;\n}\nfunction decodeUtf8(bytes) {\n\tlet result = \"\";\n\tfor (let index = 0; index < bytes.length;) {\n\t\tconst first = bytes[index++];\n\t\tlet codePoint;\n\t\tlet continuationCount;\n\t\tif (first <= 127) {\n\t\t\tcodePoint = first;\n\t\t\tcontinuationCount = 0;\n\t\t} else if ((first & 224) === 192) {\n\t\t\tcodePoint = first & 31;\n\t\t\tcontinuationCount = 1;\n\t\t} else if ((first & 240) === 224) {\n\t\t\tcodePoint = first & 15;\n\t\t\tcontinuationCount = 2;\n\t\t} else if ((first & 248) === 240) {\n\t\t\tcodePoint = first & 7;\n\t\t\tcontinuationCount = 3;\n\t\t} else throw new Error(\"Invalid UTF-8 channel key\");\n\t\tfor (let offset = 0; offset < continuationCount; offset += 1) {\n\t\t\tconst continuation = bytes[index++];\n\t\t\tif (continuation === void 0 || (continuation & 192) !== 128) throw new Error(\"Invalid UTF-8 channel key\");\n\t\t\tcodePoint = codePoint << 6 | continuation & 63;\n\t\t}\n\t\tif (codePoint > 1114111 || codePoint >= 55296 && codePoint <= 57343 || continuationCount === 1 && codePoint < 128 || continuationCount === 2 && codePoint < 2048 || continuationCount === 3 && codePoint < 65536) throw new Error(\"Invalid UTF-8 channel key\");\n\t\tresult += String.fromCodePoint(codePoint);\n\t}\n\treturn result;\n}\nfunction base64UrlEncode(bytes) {\n\tlet result = \"\";\n\tfor (let index = 0; index < bytes.length; index += 3) {\n\t\tconst first = bytes[index];\n\t\tconst second = bytes[index + 1];\n\t\tconst third = bytes[index + 2];\n\t\tconst value = first << 16 | (second ?? 0) << 8 | (third ?? 0);\n\t\tresult += BASE64URL_ALPHABET[value >> 18 & 63];\n\t\tresult += BASE64URL_ALPHABET[value >> 12 & 63];\n\t\tif (second !== void 0) result += BASE64URL_ALPHABET[value >> 6 & 63];\n\t\tif (third !== void 0) result += BASE64URL_ALPHABET[value & 63];\n\t}\n\treturn result;\n}\nfunction base64UrlDecode(value) {\n\tif (!/^[A-Za-z0-9_-]*$/.test(value) || value.length % 4 === 1) throw new Error(\"Invalid channel key\");\n\tconst bytes = [];\n\tfor (let index = 0; index < value.length; index += 4) {\n\t\tconst chunk = value.slice(index, index + 4);\n\t\tconst encoded = [...chunk].map((character) => BASE64URL_ALPHABET.indexOf(character));\n\t\tif (encoded.some((part) => part < 0)) throw new Error(\"Invalid channel key\");\n\t\tconst bits = encoded[0] << 18 | encoded[1] << 12 | (encoded[2] ?? 0) << 6 | (encoded[3] ?? 0);\n\t\tbytes.push(bits >> 16 & 255);\n\t\tif (chunk.length >= 3) bytes.push(bits >> 8 & 255);\n\t\tif (chunk.length === 4) bytes.push(bits & 255);\n\t}\n\treturn bytes;\n}\nfunction normalizeChannelName(channel) {\n\treturn channel.trim().normalize(\"NFC\");\n}\nfunction assertCanonicalChannelName(channel) {\n\tconst normalized = normalizeChannelName(channel);\n\tif (normalized.length === 0 || normalized !== channel) throw new Error(\"Channel name must be non-empty, trimmed, and NFC-normalized\");\n\tlet codePointCount = 0;\n\tfor (const _codePoint of normalized) {\n\t\tcodePointCount += 1;\n\t\tif (codePointCount > 255) throw new Error(\"Channel name must not exceed 255 characters\");\n\t}\n}\nfunction encodeChannelKey(channel) {\n\tassertCanonicalChannelName(channel);\n\treturn base64UrlEncode(encodeUtf8(channel));\n}\nfunction decodeChannelKey(channelKey) {\n\tconst channel = decodeUtf8(base64UrlDecode(channelKey));\n\tassertCanonicalChannelName(channel);\n\tif (encodeChannelKey(channel) !== channelKey) throw new Error(\"Channel key is not canonically encoded\");\n\treturn channel;\n}\nfunction createReleaseCatalogScopeKey(input) {\n\tdecodeChannelKey(input.channelKey);\n\tif (input.strategy === \"APP_VERSION\") return `v1:app-version:${input.platform}:${input.channelKey}`;\n\tassertCatalogSegment(input.fingerprintHash, \"Fingerprint hash\");\n\treturn `v1:fingerprint:${input.platform}:${input.channelKey}:${input.fingerprintHash}`;\n}\nfunction parseReleaseCatalogScopeKey(scopeKey) {\n\tconst segments = scopeKey.split(\":\");\n\tconst [version, strategy, platform, channelKey] = segments;\n\tif (version !== \"v1\" || platform !== \"ios\" && platform !== \"android\" || channelKey === void 0) throw new Error(\"Invalid release catalog scope key\");\n\tconst input = strategy === \"app-version\" && segments.length === 4 ? {\n\t\tchannelKey,\n\t\tplatform,\n\t\tstrategy: \"APP_VERSION\"\n\t} : strategy === \"fingerprint\" && segments.length === 5 && segments[4] !== void 0 ? {\n\t\tchannelKey,\n\t\tfingerprintHash: segments[4],\n\t\tplatform,\n\t\tstrategy: \"FINGERPRINT\"\n\t} : (() => {\n\t\tthrow new Error(\"Invalid release catalog scope key\");\n\t})();\n\tif (createReleaseCatalogScopeKey(input) !== scopeKey) throw new Error(\"Release catalog scope key is not canonical\");\n\treturn input;\n}\n//#endregion\n//#region src/uuid.ts\nconst NIL_UUID = \"00000000-0000-0000-0000-000000000000\";\nconst UUID_V7_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\nconst isUUIDv7 = (value) => typeof value === \"string\" && UUID_V7_PATTERN.test(value);\n//#endregion\nexport { DEFAULT_ROLLOUT_COHORT_COUNT, INVALID_COHORT_ERROR_MESSAGE, MAX_COHORT_LENGTH, MAX_COMPILED_CATALOG_BYTES, MAX_CRASHED_BUNDLES, MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE, MAX_TARGET_COHORTS_PER_RELEASE, NIL_UUID, NUMERIC_COHORT_SIZE, RELEASE_CATALOG_FALLBACK_POLICY, RELEASE_CATALOG_SCHEMA_VERSION, assertCanonicalChannelName, assessCatalogAcceptance, authorizeReleaseTransition, createReleaseCatalogScopeKey, createReleaseSelectionContextHash, decodeChannelKey, encodeChannelKey, getAssetBaseStorageUri, getBundlePatch, getBundlePatches, getDefaultNumericCohort, getManifestFileHash, getManifestStorageUri, getNumericCohortRolloutPosition, getNumericCohortValue, getPatchBaseBundleId, getPatchBaseFileHash, getPatchFileHash, getPatchStorageUri, getRolledOutNumericCohorts, isCohortEligibleForUpdate, isCustomCohort, isNumericCohort, isReleaseEligibleForCohort, isUUIDv7, isValidCohort, normalizeChannelName, normalizeCohortValue, normalizeRolloutCohortCount, parseReleaseCatalogScopeKey, selectDesiredRelease, stripBundleArtifactMetadata };\n", "import { isUUIDv7, isUUIDv7 as isUUIDv7$1 } from \"@hot-updater/core\";\n//#region src/uuidv7.ts\nconst extractTimestampFromUUIDv7 = (uuid) => {\n\tif (!isUUIDv7(uuid)) throw new TypeError(\"Expected a canonical lowercase UUIDv7\");\n\tconst timestampHex = uuid.split(\"-\").join(\"\").slice(0, 12);\n\treturn Number.parseInt(timestampHex, 16);\n};\nfunction createUUIDv7FromTimestampHex(timestampHex) {\n\tconst randomBytes = new Uint8Array(10);\n\tcrypto.getRandomValues(randomBytes);\n\tconst randomHex = Array.from(randomBytes).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n\tconst randA = randomHex.slice(0, 3);\n\tconst randBHex = randomHex.slice(3, 19);\n\tconst versionAndRandA = `7${randA}`;\n\tconst variantAndFirstRandB = (128 | parseInt(randBHex.slice(0, 2), 16) & 63).toString(16).padStart(2, \"0\");\n\treturn [\n\t\ttimestampHex.slice(0, 8),\n\t\ttimestampHex.slice(8, 12),\n\t\tversionAndRandA,\n\t\tvariantAndFirstRandB + randBHex.slice(2, 4),\n\t\trandBHex.slice(4, 16)\n\t].join(\"-\");\n}\nconst createUUIDv7 = () => createUUIDv7FromTimestampHex(Date.now().toString(16).padStart(12, \"0\"));\nconst createUUIDv7After = (floor, nowMs = Date.now()) => {\n\tconst timestamp = Math.max(nowMs, floor === null ? 0 : extractTimestampFromUUIDv7(floor) + 1);\n\tif (!Number.isSafeInteger(timestamp) || timestamp < 0 || timestamp >= 2 ** 48) throw new RangeError(\"UUIDv7 timestamp is out of range\");\n\treturn createUUIDv7FromTimestampHex(timestamp.toString(16).padStart(12, \"0\"));\n};\nconst createUUIDv7WithSameTimestamp = (originalUuid) => {\n\treturn createUUIDv7FromTimestampHex(originalUuid.split(\"-\").join(\"\").slice(0, 12));\n};\n//#endregion\nexport { createUUIDv7, createUUIDv7After, createUUIDv7WithSameTimestamp, extractTimestampFromUUIDv7, isUUIDv7$1 as isUUIDv7 };\n", "//#region src/types/databaseFields.ts\nconst databaseFields = {\n\tbundles: [\n\t\t\"id\",\n\t\t\"platform\",\n\t\t\"file_hash\",\n\t\t\"git_commit_hash\",\n\t\t\"storage_uri\",\n\t\t\"archive_byte_size\",\n\t\t\"metadata\",\n\t\t\"manifest_storage_uri\",\n\t\t\"manifest_file_hash\",\n\t\t\"asset_base_storage_uri\"\n\t],\n\tbundle_patches: [\n\t\t\"id\",\n\t\t\"bundle_id\",\n\t\t\"base_bundle_id\",\n\t\t\"base_file_hash\",\n\t\t\"patch_file_hash\",\n\t\t\"patch_storage_uri\",\n\t\t\"byte_size\",\n\t\t\"order_index\"\n\t],\n\treleases: [\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"scope_key\",\n\t\t\"channel_id\",\n\t\t\"platform\",\n\t\t\"kind\",\n\t\t\"bundle_id\",\n\t\t\"strategy\",\n\t\t\"target_app_version\",\n\t\t\"fingerprint_hash\",\n\t\t\"enabled\",\n\t\t\"should_force_update\",\n\t\t\"message\",\n\t\t\"rollout_cohort_count\",\n\t\t\"target_cohorts\",\n\t\t\"operation\",\n\t\t\"source_release_id\",\n\t\t\"created_at_ms\",\n\t\t\"updated_at_ms\"\n\t],\n\trelease_catalogs: [\n\t\t\"scope_key\",\n\t\t\"catalog_id\",\n\t\t\"strategy\",\n\t\t\"channel_id\",\n\t\t\"channel_key\",\n\t\t\"platform\",\n\t\t\"fingerprint_hash\",\n\t\t\"generation\",\n\t\t\"payload\",\n\t\t\"catalog_hash\",\n\t\t\"byte_size\",\n\t\t\"is_tombstone\",\n\t\t\"updated_at_ms\"\n\t],\n\tchannels: [\"id\", \"name\"],\n\tbundle_events: [\n\t\t\"id\",\n\t\t\"type\",\n\t\t\"install_id\",\n\t\t\"user_id\",\n\t\t\"username\",\n\t\t\"from_bundle_id\",\n\t\t\"from_release_id\",\n\t\t\"to_release_id\",\n\t\t\"to_bundle_id\",\n\t\t\"platform\",\n\t\t\"app_version\",\n\t\t\"channel\",\n\t\t\"cohort\",\n\t\t\"update_strategy\",\n\t\t\"fingerprint_hash\",\n\t\t\"sdk_version\",\n\t\t\"received_at_ms\"\n\t],\n\tapi_keys: [\n\t\t\"id\",\n\t\t\"hash\",\n\t\t\"name\",\n\t\t\"prefix\",\n\t\t\"role\",\n\t\t\"created_at_ms\",\n\t\t\"revoked_at_ms\"\n\t]\n};\n//#endregion\nexport { databaseFields };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { isDatabaseMetadataObject } from \"./databaseJsonValue.mjs\";\nimport { databaseFields } from \"./types/databaseFields.mjs\";\nimport { isUUIDv7 } from \"./uuidv7.mjs\";\n//#region src/databasePluginCrudValidationFields.ts\nconst isRecord = (value) => typeof value === \"object\" && value !== null && !Array.isArray(value);\nconst isChannelText = (value) => {\n\tif (typeof value !== \"string\" || value.length === 0) return false;\n\tlet codePointCount = 0;\n\tfor (const _codePoint of value) {\n\t\tcodePointCount += 1;\n\t\tif (codePointCount > 255) return false;\n\t}\n\treturn true;\n};\nconst modelValidators = {\n\tbundles: {\n\t\tid: (value) => typeof value === \"string\",\n\t\tplatform: (value) => value === \"ios\" || value === \"android\",\n\t\tshould_force_update: (value) => typeof value === \"boolean\",\n\t\tenabled: (value) => typeof value === \"boolean\",\n\t\tfile_hash: (value) => typeof value === \"string\",\n\t\tgit_commit_hash: (value) => value === null || typeof value === \"string\",\n\t\tmessage: (value) => value === null || typeof value === \"string\",\n\t\tchannel: isChannelText,\n\t\tchannel_id: isChannelText,\n\t\tstorage_uri: (value) => typeof value === \"string\",\n\t\tarchive_byte_size: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0,\n\t\ttarget_app_version: (value) => value === null || typeof value === \"string\",\n\t\tfingerprint_hash: (value) => value === null || typeof value === \"string\",\n\t\tmetadata: isDatabaseMetadataObject,\n\t\trollout_cohort_count: (value) => typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value <= 1e3,\n\t\ttarget_cohorts: (value) => value === null || Array.isArray(value) && value.every((item) => typeof item === \"string\"),\n\t\tmanifest_storage_uri: (value) => value === null || typeof value === \"string\",\n\t\tmanifest_file_hash: (value) => value === null || typeof value === \"string\",\n\t\tasset_base_storage_uri: (value) => value === null || typeof value === \"string\"\n\t},\n\tbundle_patches: {\n\t\tid: (value) => typeof value === \"string\",\n\t\tbundle_id: (value) => typeof value === \"string\",\n\t\tbase_bundle_id: (value) => typeof value === \"string\",\n\t\tbase_file_hash: (value) => typeof value === \"string\",\n\t\tpatch_file_hash: (value) => typeof value === \"string\",\n\t\tpatch_storage_uri: (value) => typeof value === \"string\",\n\t\tbyte_size: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0,\n\t\torder_index: (value) => typeof value === \"number\" && Number.isInteger(value) && value >= 0\n\t},\n\treleases: {\n\t\tid: isUUIDv7,\n\t\trevision: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1,\n\t\tscope_key: (value) => typeof value === \"string\" && value.length > 0,\n\t\tchannel_id: isChannelText,\n\t\tplatform: (value) => value === \"ios\" || value === \"android\",\n\t\tkind: (value) => value === \"BUNDLE\" || value === \"EMBEDDED\",\n\t\tbundle_id: (value) => value === null || typeof value === \"string\",\n\t\tstrategy: (value) => value === \"APP_VERSION\" || value === \"FINGERPRINT\",\n\t\ttarget_app_version: (value) => value === null || typeof value === \"string\",\n\t\tfingerprint_hash: (value) => value === null || typeof value === \"string\",\n\t\tenabled: (value) => typeof value === \"boolean\",\n\t\tshould_force_update: (value) => typeof value === \"boolean\",\n\t\tmessage: (value) => value === null || typeof value === \"string\",\n\t\trollout_cohort_count: (value) => typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value <= 1e3,\n\t\ttarget_cohorts: (value) => Array.isArray(value) && value.every((item) => typeof item === \"string\"),\n\t\toperation: (value) => value === \"DEPLOY\" || value === \"PROMOTE\" || value === \"ROLLBACK\",\n\t\tsource_release_id: (value) => value === null || isUUIDv7(value),\n\t\tcreated_at_ms: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0,\n\t\tupdated_at_ms: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n\t},\n\trelease_catalogs: {\n\t\tscope_key: (value) => typeof value === \"string\" && value.length > 0,\n\t\tcatalog_id: (value) => typeof value === \"string\" && value.length > 0,\n\t\tstrategy: (value) => value === \"APP_VERSION\" || value === \"FINGERPRINT\",\n\t\tchannel_id: isChannelText,\n\t\tchannel_key: (value) => typeof value === \"string\" && value.length > 0,\n\t\tplatform: (value) => value === \"ios\" || value === \"android\",\n\t\tfingerprint_hash: (value) => value === null || typeof value === \"string\",\n\t\tgeneration: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1,\n\t\tpayload: (value) => typeof value === \"string\",\n\t\tcatalog_hash: (value) => typeof value === \"string\" && value.length > 0,\n\t\tbyte_size: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0,\n\t\tis_tombstone: (value) => typeof value === \"boolean\",\n\t\tupdated_at_ms: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n\t},\n\tchannels: {\n\t\tid: isChannelText,\n\t\tname: isChannelText\n\t},\n\tbundle_events: {\n\t\tid: (value) => typeof value === \"string\",\n\t\ttype: (value) => value === \"UPDATE_APPLIED\" || value === \"RECOVERED\" || value === \"RELEASE_ADOPTED\" || value === \"UNCHANGED\",\n\t\tinstall_id: (value) => typeof value === \"string\",\n\t\tuser_id: (value) => value === null || typeof value === \"string\",\n\t\tusername: (value) => value === null || typeof value === \"string\",\n\t\tfrom_bundle_id: (value) => value === null || typeof value === \"string\",\n\t\tfrom_release_id: (value) => value === null || typeof value === \"string\",\n\t\tto_release_id: (value) => value === null || typeof value === \"string\",\n\t\tto_bundle_id: (value) => typeof value === \"string\",\n\t\tplatform: (value) => value === \"ios\" || value === \"android\",\n\t\tapp_version: (value) => typeof value === \"string\",\n\t\tchannel: (value) => typeof value === \"string\",\n\t\tcohort: (value) => typeof value === \"string\",\n\t\tupdate_strategy: (value) => value === null || value === \"fingerprint\" || value === \"appVersion\",\n\t\tfingerprint_hash: (value) => value === null || typeof value === \"string\",\n\t\tsdk_version: (value) => value === null || typeof value === \"string\",\n\t\treceived_at_ms: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n\t},\n\tapi_keys: {\n\t\tid: (value) => typeof value === \"string\",\n\t\thash: (value) => typeof value === \"string\",\n\t\tname: (value) => typeof value === \"string\",\n\t\tprefix: (value) => typeof value === \"string\",\n\t\trole: (value) => value === \"client\",\n\t\tcreated_at_ms: (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0,\n\t\trevoked_at_ms: (value) => value === null || typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n\t}\n};\nconst stringFields = new Set([\n\t\"id\",\n\t\"platform\",\n\t\"file_hash\",\n\t\"git_commit_hash\",\n\t\"message\",\n\t\"channel\",\n\t\"channel_id\",\n\t\"storage_uri\",\n\t\"target_app_version\",\n\t\"fingerprint_hash\",\n\t\"bundle_id\",\n\t\"base_bundle_id\",\n\t\"base_file_hash\",\n\t\"patch_file_hash\",\n\t\"patch_storage_uri\",\n\t\"scope_key\",\n\t\"catalog_id\",\n\t\"channel_key\",\n\t\"kind\",\n\t\"bundle_id\",\n\t\"strategy\",\n\t\"operation\",\n\t\"source_release_id\",\n\t\"payload\",\n\t\"catalog_hash\",\n\t\"type\",\n\t\"install_id\",\n\t\"user_id\",\n\t\"username\",\n\t\"from_bundle_id\",\n\t\"to_bundle_id\",\n\t\"app_version\",\n\t\"cohort\",\n\t\"update_strategy\",\n\t\"sdk_version\",\n\t\"hash\",\n\t\"name\",\n\t\"prefix\",\n\t\"role\"\n]);\nconst numberFields = new Set([\n\t\"archive_byte_size\",\n\t\"byte_size\",\n\t\"rollout_cohort_count\",\n\t\"order_index\",\n\t\"revision\",\n\t\"generation\",\n\t\"byte_size\",\n\t\"updated_at_ms\",\n\t\"received_at_ms\",\n\t\"created_at_ms\",\n\t\"revoked_at_ms\"\n]);\nconst booleanFields = new Set([\n\t\"should_force_update\",\n\t\"enabled\",\n\t\"is_tombstone\"\n]);\nconst sortableFields = {\n\tbundles: new Set([\n\t\t\"id\",\n\t\t\"platform\",\n\t\t\"file_hash\",\n\t\t\"git_commit_hash\",\n\t\t\"message\",\n\t\t\"channel\",\n\t\t\"channel_id\",\n\t\t\"storage_uri\",\n\t\t\"archive_byte_size\",\n\t\t\"target_app_version\",\n\t\t\"fingerprint_hash\",\n\t\t\"rollout_cohort_count\",\n\t\t\"manifest_storage_uri\",\n\t\t\"manifest_file_hash\",\n\t\t\"asset_base_storage_uri\"\n\t]),\n\tbundle_patches: new Set([\n\t\t\"id\",\n\t\t\"bundle_id\",\n\t\t\"base_bundle_id\",\n\t\t\"base_file_hash\",\n\t\t\"patch_file_hash\",\n\t\t\"patch_storage_uri\",\n\t\t\"byte_size\",\n\t\t\"order_index\"\n\t]),\n\treleases: new Set([\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"scope_key\",\n\t\t\"channel_id\",\n\t\t\"platform\",\n\t\t\"kind\",\n\t\t\"bundle_id\",\n\t\t\"strategy\",\n\t\t\"target_app_version\",\n\t\t\"fingerprint_hash\",\n\t\t\"enabled\",\n\t\t\"should_force_update\",\n\t\t\"message\",\n\t\t\"rollout_cohort_count\",\n\t\t\"operation\",\n\t\t\"source_release_id\",\n\t\t\"created_at_ms\",\n\t\t\"updated_at_ms\"\n\t]),\n\trelease_catalogs: new Set([\n\t\t\"scope_key\",\n\t\t\"catalog_id\",\n\t\t\"strategy\",\n\t\t\"channel_id\",\n\t\t\"channel_key\",\n\t\t\"platform\",\n\t\t\"fingerprint_hash\",\n\t\t\"generation\",\n\t\t\"catalog_hash\",\n\t\t\"byte_size\",\n\t\t\"is_tombstone\",\n\t\t\"updated_at_ms\"\n\t]),\n\tchannels: new Set([\"id\", \"name\"]),\n\tbundle_events: new Set([\n\t\t\"id\",\n\t\t\"type\",\n\t\t\"install_id\",\n\t\t\"user_id\",\n\t\t\"username\",\n\t\t\"from_bundle_id\",\n\t\t\"from_release_id\",\n\t\t\"to_release_id\",\n\t\t\"to_bundle_id\",\n\t\t\"platform\",\n\t\t\"app_version\",\n\t\t\"channel\",\n\t\t\"cohort\",\n\t\t\"update_strategy\",\n\t\t\"fingerprint_hash\",\n\t\t\"sdk_version\",\n\t\t\"received_at_ms\"\n\t]),\n\tapi_keys: new Set([\n\t\t\"id\",\n\t\t\"hash\",\n\t\t\"name\",\n\t\t\"prefix\",\n\t\t\"role\",\n\t\t\"created_at_ms\",\n\t\t\"revoked_at_ms\"\n\t])\n};\nconst validateModel = (model) => {\n\tif (typeof model !== \"string\" || !Object.hasOwn(databaseFields, model)) throw new DatabasePluginInputError(\"invalid-model\");\n};\nconst validateField = (model, field) => {\n\tif (!databaseFields[model].includes(field)) throw new DatabasePluginInputError(\"invalid-field\");\n};\nconst validateFields = (model, fields) => {\n\tfor (const field of fields) validateField(model, field);\n};\nconst isStringField = (field) => stringFields.has(field);\nconst isNumberField = (field) => numberFields.has(field);\nconst isBooleanField = (field) => booleanFields.has(field);\n//#endregion\nexport { isBooleanField, isChannelText, isNumberField, isRecord, isStringField, modelValidators, sortableFields, validateField, validateFields, validateModel };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { databaseFields } from \"./types/databaseFields.mjs\";\nimport { isRecord, modelValidators, validateFields } from \"./databasePluginCrudValidationFields.mjs\";\n//#region src/databasePluginCrudValidationRows.ts\nconst hasValidReleaseInvariants = (data) => {\n\tconst kind = data.kind;\n\tconst bundleId = data.bundle_id;\n\tconst strategy = data.strategy;\n\tconst targetAppVersion = data.target_app_version;\n\tconst fingerprintHash = data.fingerprint_hash;\n\treturn (kind === \"BUNDLE\" && typeof bundleId === \"string\" || kind === \"EMBEDDED\" && bundleId === null) && (strategy === \"APP_VERSION\" && typeof targetAppVersion === \"string\" && fingerprintHash === null || strategy === \"FINGERPRINT\" && targetAppVersion === null && typeof fingerprintHash === \"string\");\n};\nconst hasValidBundleEventInvariants = (data) => (data.type === \"UPDATE_APPLIED\" || data.type === \"RECOVERED\" || data.type === \"RELEASE_ADOPTED\") && typeof data.from_bundle_id === \"string\" && (data.update_strategy === \"fingerprint\" || data.update_strategy === \"appVersion\") || data.type === \"UNCHANGED\" && data.from_bundle_id === null && data.update_strategy === null;\nconst validateCreateData = (model, data) => {\n\tif (!isRecord(data)) throw new DatabasePluginInputError(\"invalid-data\");\n\tvalidateFields(model, Object.keys(data));\n\tfor (const field of databaseFields[model]) {\n\t\tconst validator = modelValidators[model][field];\n\t\tif (!Object.hasOwn(data, field) || !validator || !validator(Reflect.get(data, field))) throw new DatabasePluginInputError(\"invalid-data\");\n\t}\n\tif (model === \"bundles\" && data.target_app_version === null && data.fingerprint_hash === null) throw new DatabasePluginInputError(\"invalid-data\");\n\tif (model === \"releases\" && !hasValidReleaseInvariants(data)) throw new DatabasePluginInputError(\"invalid-data\");\n\tif (model === \"release_catalogs\" && (data.strategy === \"APP_VERSION\" && data.fingerprint_hash !== null || data.strategy === \"FINGERPRINT\" && typeof data.fingerprint_hash !== \"string\")) throw new DatabasePluginInputError(\"invalid-data\");\n\tif (model === \"bundle_events\" && !hasValidBundleEventInvariants(data)) throw new DatabasePluginInputError(\"invalid-data\");\n};\nconst selectRow = (row, input) => {\n\tconst { select } = input;\n\tif (!select) return row;\n\treturn Object.fromEntries(select.map((field) => [field, Reflect.get(row, field)]));\n};\nconst validateResult = (model, row, select) => {\n\tif (!isRecord(row)) throw new DatabasePluginInputError(\"invalid-result\");\n\tconst fields = select ?? databaseFields[model];\n\tfor (const field of fields) {\n\t\tconst validator = modelValidators[model][field];\n\t\tif (!Object.hasOwn(row, field) || !validator || !validator(Reflect.get(row, field))) throw new DatabasePluginInputError(\"invalid-result\");\n\t}\n\tif (model === \"bundles\" && Object.hasOwn(row, \"target_app_version\") && Object.hasOwn(row, \"fingerprint_hash\") && Reflect.get(row, \"target_app_version\") === null && Reflect.get(row, \"fingerprint_hash\") === null) throw new DatabasePluginInputError(\"invalid-result\");\n\tif (model === \"releases\" && [\n\t\t\"kind\",\n\t\t\"bundle_id\",\n\t\t\"strategy\",\n\t\t\"target_app_version\",\n\t\t\"fingerprint_hash\"\n\t].every((field) => Object.hasOwn(row, field)) && !hasValidReleaseInvariants(row)) throw new DatabasePluginInputError(\"invalid-result\");\n\tif (model === \"bundle_events\" && [\n\t\t\"type\",\n\t\t\"from_bundle_id\",\n\t\t\"update_strategy\"\n\t].every((field) => Object.hasOwn(row, field)) && !hasValidBundleEventInvariants(row)) throw new DatabasePluginInputError(\"invalid-result\");\n};\n//#endregion\nexport { selectRow, validateCreateData, validateResult };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { isRecord, modelValidators, validateField } from \"./databasePluginCrudValidationFields.mjs\";\nimport { validateResult } from \"./databasePluginCrudValidationRows.mjs\";\n//#region src/databasePluginCrudValidationMutations.ts\nconst validateMutationWhere = (where) => {\n\tif (where.length === 0) throw new DatabasePluginInputError(\"empty-mutation-where\");\n};\nconst validateUpdateWhere = (model, where) => {\n\tconst selector = where[0];\n\tconst primaryField = model === \"release_catalogs\" ? \"scope_key\" : \"id\";\n\tif (where.length !== 1 || !isRecord(selector) || selector.field !== primaryField || selector.operator !== void 0 && selector.operator !== \"eq\" || typeof selector.value !== \"string\" || selector.connector !== void 0 || selector.mode !== void 0) throw new DatabasePluginInputError(\"invalid-update-selector\");\n};\nconst validateBundleUpdateData = (update) => {\n\tif (!isRecord(update)) throw new DatabasePluginInputError(\"invalid-data\");\n\tfor (const [field, value] of Object.entries(update)) {\n\t\tif (field === \"id\") throw new DatabasePluginInputError(\"invalid-data\");\n\t\tvalidateField(\"bundles\", field);\n\t\tconst validator = modelValidators.bundles[field];\n\t\tif (!validator || !validator(value)) throw new DatabasePluginInputError(\"invalid-data\");\n\t}\n};\nconst validateApiKeyUpdateData = (update) => {\n\tif (!isRecord(update) || Reflect.ownKeys(update).length !== 1 || !Object.hasOwn(update, \"revoked_at_ms\") || !modelValidators.api_keys.revoked_at_ms(Reflect.get(update, \"revoked_at_ms\"))) throw new DatabasePluginInputError(\"invalid-data\");\n};\nconst RELEASE_MUTABLE_FIELDS = new Set([\n\t\"revision\",\n\t\"scope_key\",\n\t\"target_app_version\",\n\t\"fingerprint_hash\",\n\t\"enabled\",\n\t\"should_force_update\",\n\t\"message\",\n\t\"rollout_cohort_count\",\n\t\"target_cohorts\",\n\t\"updated_at_ms\"\n]);\nconst validateReleaseUpdateData = (update) => {\n\tif (!isRecord(update) || Reflect.ownKeys(update).length === 0) throw new DatabasePluginInputError(\"invalid-data\");\n\tfor (const [field, value] of Object.entries(update)) {\n\t\tif (!RELEASE_MUTABLE_FIELDS.has(field)) throw new DatabasePluginInputError(\"invalid-data\");\n\t\tconst validator = modelValidators.releases[field];\n\t\tif (!validator || !validator(value)) throw new DatabasePluginInputError(\"invalid-data\");\n\t}\n};\nconst validateReleaseCatalogUpdateData = (update) => {\n\tif (!isRecord(update)) throw new DatabasePluginInputError(\"invalid-data\");\n\tconst expectedFields = Object.keys(modelValidators.release_catalogs).filter((field) => field !== \"scope_key\");\n\tif (Reflect.ownKeys(update).length !== expectedFields.length || expectedFields.some((field) => !Object.hasOwn(update, field))) throw new DatabasePluginInputError(\"invalid-data\");\n\tfor (const [field, value] of Object.entries(update)) {\n\t\tconst validator = modelValidators.release_catalogs[field];\n\t\tif (!validator || !validator(value)) throw new DatabasePluginInputError(\"invalid-data\");\n\t}\n};\nconst validateReleaseTargetUpdate = async (implementation, input) => {\n\tif (!Object.hasOwn(input.update, \"target_app_version\") && !Object.hasOwn(input.update, \"fingerprint_hash\")) return;\n\tconst id = input.where[0]?.value;\n\tif (typeof id !== \"string\") return;\n\tconst current = await implementation.findOne({\n\t\tmodel: \"releases\",\n\t\twhere: [{\n\t\t\tfield: \"id\",\n\t\t\tvalue: id\n\t\t}],\n\t\tselect: [\n\t\t\t\"strategy\",\n\t\t\t\"target_app_version\",\n\t\t\t\"fingerprint_hash\"\n\t\t]\n\t});\n\tif (current === null) return;\n\tvalidateResult(\"releases\", current, [\n\t\t\"strategy\",\n\t\t\"target_app_version\",\n\t\t\"fingerprint_hash\"\n\t]);\n\tconst strategy = Reflect.get(current, \"strategy\");\n\tconst targetAppVersion = Object.hasOwn(input.update, \"target_app_version\") ? input.update.target_app_version : Reflect.get(current, \"target_app_version\");\n\tconst fingerprintHash = Object.hasOwn(input.update, \"fingerprint_hash\") ? input.update.fingerprint_hash : Reflect.get(current, \"fingerprint_hash\");\n\tif (!(strategy === \"APP_VERSION\" && typeof targetAppVersion === \"string\" && fingerprintHash === null || strategy === \"FINGERPRINT\" && targetAppVersion === null && typeof fingerprintHash === \"string\")) throw new DatabasePluginInputError(\"invalid-data\");\n};\n//#endregion\nexport { validateApiKeyUpdateData, validateBundleUpdateData, validateMutationWhere, validateReleaseCatalogUpdateData, validateReleaseTargetUpdate, validateReleaseUpdateData, validateUpdateWhere };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { isBooleanField, isNumberField, isRecord, isStringField, modelValidators, sortableFields, validateField, validateFields } from \"./databasePluginCrudValidationFields.mjs\";\n//#region src/databasePluginCrudValidationQueries.ts\nconst validateSelect = (model, select) => {\n\tif (select === void 0) return;\n\tif (!Array.isArray(select) || select.length === 0) throw new DatabasePluginInputError(\"empty-select\");\n\tif (!select.every((field) => typeof field === \"string\")) throw new DatabasePluginInputError(\"invalid-query\");\n\tvalidateFields(model, select);\n};\nconst validateWhereValue = (model, condition) => {\n\tconst field = condition.field;\n\tif (typeof field !== \"string\") throw new DatabasePluginInputError(\"invalid-query\");\n\tvalidateField(model, field);\n\tconst operator = condition.operator ?? \"eq\";\n\tconst value = condition.value;\n\tconst mode = condition.mode;\n\tif (mode !== void 0 && mode !== \"sensitive\" && mode !== \"insensitive\") throw new DatabasePluginInputError(\"invalid-query\");\n\tswitch (operator) {\n\t\tcase \"eq\":\n\t\tcase \"ne\":\n\t\t\tif (!(isStringField(field) || isNumberField(field) || isBooleanField(field)) || !modelValidators[model][field]?.(value) || mode !== void 0 && (!isStringField(field) || typeof value !== \"string\")) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\treturn;\n\t\tcase \"gt\":\n\t\tcase \"gte\":\n\t\tcase \"lt\":\n\t\tcase \"lte\":\n\t\t\tif (mode !== void 0 || !(isStringField(field) || isNumberField(field)) || value === null || !modelValidators[model][field]?.(value)) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\treturn;\n\t\tcase \"in\":\n\t\tcase \"not_in\":\n\t\t\tif (!Array.isArray(value) || mode !== void 0) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\tif (!(isStringField(field) || isNumberField(field) || isBooleanField(field))) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\tif (!value.every((item) => modelValidators[model][field]?.(item))) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\treturn;\n\t\tcase \"contains\":\n\t\tcase \"starts_with\":\n\t\tcase \"ends_with\":\n\t\t\tif (!isStringField(field) || typeof value !== \"string\" || !modelValidators[model][field]?.(value)) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\treturn;\n\t\tdefault: throw new DatabasePluginInputError(\"invalid-query\");\n\t}\n};\nconst validateWhere = (model, where) => {\n\tif (where === void 0) return;\n\tif (!Array.isArray(where)) throw new DatabasePluginInputError(\"invalid-query\");\n\tfor (const item of where) {\n\t\tif (!isRecord(item)) throw new DatabasePluginInputError(\"invalid-query\");\n\t\tif (item.connector !== void 0 && item.connector !== \"AND\" && item.connector !== \"OR\") throw new DatabasePluginInputError(\"invalid-query\");\n\t\tvalidateWhereValue(model, item);\n\t}\n};\nconst validateDistinctFields = (model, fields) => {\n\tif (fields === void 0) return void 0;\n\tif (!Array.isArray(fields) || fields.length === 0) throw new DatabasePluginInputError(\"invalid-distinct\");\n\tif (!fields.every((field) => typeof field === \"string\")) throw new DatabasePluginInputError(\"invalid-distinct\");\n\tvalidateFields(model, fields);\n\treturn fields;\n};\nconst validateOrderBy = (model, orderBy) => {\n\tif (orderBy === void 0) return void 0;\n\tif (!Array.isArray(orderBy) || orderBy.length === 0) throw new DatabasePluginInputError(\"invalid-query\");\n\tconst fields = /* @__PURE__ */ new Set();\n\treturn orderBy.map((clause) => {\n\t\tif (!isRecord(clause) || typeof clause.field !== \"string\") throw new DatabasePluginInputError(\"invalid-query\");\n\t\tvalidateField(model, clause.field);\n\t\tif (!sortableFields[model].has(clause.field)) throw new DatabasePluginInputError(\"invalid-query\");\n\t\tif (clause.direction !== \"asc\" && clause.direction !== \"desc\") throw new DatabasePluginInputError(\"invalid-query\");\n\t\tif (clause.nulls !== void 0 && clause.nulls !== \"first\" && clause.nulls !== \"last\") throw new DatabasePluginInputError(\"invalid-query\");\n\t\tif (fields.has(clause.field)) throw new DatabasePluginInputError(\"invalid-operation\");\n\t\tfields.add(clause.field);\n\t\treturn clause;\n\t});\n};\nconst validateDistinctOn = (model, distinctOn, orderBy) => {\n\tif (distinctOn === void 0) return;\n\tif (!isRecord(distinctOn)) throw new DatabasePluginInputError(\"invalid-distinct\");\n\tconst fields = validateDistinctFields(model, distinctOn.fields);\n\tif (fields === void 0 || orderBy === void 0) throw new DatabasePluginInputError(\"invalid-distinct\");\n\tfor (const [index, field] of fields.entries()) if (orderBy[index]?.field !== field) throw new DatabasePluginInputError(\"invalid-distinct\");\n};\nconst validatePagination = (limit, offset) => {\n\tconst effectiveLimit = limit ?? 100;\n\tconst effectiveOffset = offset ?? 0;\n\tif (limit !== void 0 && (!Number.isSafeInteger(limit) || limit < 0) || offset !== void 0 && (!Number.isSafeInteger(offset) || offset < 0) || !Number.isSafeInteger(effectiveOffset + effectiveLimit)) throw new DatabasePluginInputError(\"invalid-pagination\");\n};\nconst validateBundlePagination = (options) => {\n\tif (!Number.isSafeInteger(options.limit) || options.limit <= 0 || options.page !== void 0 && (!Number.isSafeInteger(options.page) || options.page <= 0) || options.page !== void 0 && options.cursor !== void 0) throw new DatabasePluginInputError(\"invalid-pagination\");\n\tconst cursor = options.cursor;\n\tif (cursor === void 0) return;\n\tif (!isRecord(cursor)) throw new DatabasePluginInputError(\"invalid-pagination\");\n\tconst hasAfter = Object.hasOwn(cursor, \"after\");\n\tif (hasAfter === Object.hasOwn(cursor, \"before\")) throw new DatabasePluginInputError(\"invalid-pagination\");\n\tconst value = hasAfter ? cursor.after : cursor.before;\n\tif (typeof value !== \"string\" || value.length === 0) throw new DatabasePluginInputError(\"invalid-pagination\");\n};\n//#endregion\nexport { validateBundlePagination, validateDistinctFields, validateDistinctOn, validateOrderBy, validatePagination, validateSelect, validateWhere };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { validateModel } from \"./databasePluginCrudValidationFields.mjs\";\nimport { selectRow, validateCreateData, validateResult } from \"./databasePluginCrudValidationRows.mjs\";\nimport { validateApiKeyUpdateData, validateBundleUpdateData, validateMutationWhere, validateReleaseCatalogUpdateData, validateReleaseTargetUpdate, validateReleaseUpdateData, validateUpdateWhere } from \"./databasePluginCrudValidationMutations.mjs\";\nimport { validateDistinctFields, validateDistinctOn, validateOrderBy, validatePagination, validateSelect, validateWhere } from \"./databasePluginCrudValidationQueries.mjs\";\n//#region src/databasePluginCrud.ts\nconst createDatabasePluginCrud = (implementation) => {\n\tasync function create(input) {\n\t\tvalidateModel(input.model);\n\t\tvalidateCreateData(input.model, input.data);\n\t\tif (input.onConflict !== void 0 && !(input.onConflict === \"ignore\" && (input.model === \"channels\" || input.model === \"api_keys\"))) throw new DatabasePluginInputError(\"invalid-operation\");\n\t\tvalidateSelect(input.model, input.select);\n\t\tconst row = await implementation.create(input);\n\t\tvalidateResult(input.model, row, input.select);\n\t\treturn selectRow(row, input);\n\t}\n\tasync function update(input) {\n\t\tvalidateModel(input.model);\n\t\tvalidateWhere(input.model, input.where);\n\t\tvalidateMutationWhere(input.where);\n\t\tvalidateUpdateWhere(input.model, input.where);\n\t\tif (input.model === \"bundles\") validateBundleUpdateData(input.update);\n\t\telse if (input.model === \"releases\") validateReleaseUpdateData(input.update);\n\t\telse if (input.model === \"release_catalogs\") validateReleaseCatalogUpdateData(input.update);\n\t\telse if (input.model === \"api_keys\") validateApiKeyUpdateData(input.update);\n\t\telse throw new DatabasePluginInputError(\"invalid-operation\");\n\t\tvalidateSelect(input.model, input.select);\n\t\tif (input.model === \"bundles\") {} else if (input.model === \"releases\") await validateReleaseTargetUpdate(implementation, input);\n\t\tconst row = await implementation.update(input);\n\t\tif (row === null) return null;\n\t\tvalidateResult(input.model, row, input.select);\n\t\treturn selectRow(row, input);\n\t}\n\tasync function deleteRows(input) {\n\t\tvalidateModel(input.model);\n\t\tif (input.model !== \"bundles\" && input.model !== \"bundle_patches\" && input.model !== \"releases\" && input.model !== \"channels\") throw new DatabasePluginInputError(\"invalid-operation\");\n\t\tvalidateWhere(input.model, input.where);\n\t\tvalidateMutationWhere(input.where);\n\t\tawait implementation.delete(input);\n\t}\n\tasync function count(input) {\n\t\tvalidateModel(input.model);\n\t\tvalidateWhere(input.model, input.where);\n\t\tvalidateDistinctFields(input.model, input.distinct);\n\t\tconst value = await implementation.count(input);\n\t\tif (!Number.isSafeInteger(value) || value < 0) throw new DatabasePluginInputError(\"invalid-result\");\n\t\treturn value;\n\t}\n\tasync function findOne(input) {\n\t\tvalidateModel(input.model);\n\t\tvalidateWhere(input.model, input.where);\n\t\tvalidateSelect(input.model, input.select);\n\t\tconst row = await implementation.findOne(input);\n\t\tif (row === null) return null;\n\t\tvalidateResult(input.model, row, input.select);\n\t\treturn selectRow(row, input);\n\t}\n\tasync function findMany(input) {\n\t\tvalidateModel(input.model);\n\t\tvalidateWhere(input.model, input.where);\n\t\tvalidatePagination(input.limit, input.offset);\n\t\tvalidateSelect(input.model, input.select);\n\t\tconst validatedOrderBy = validateOrderBy(input.model, input.orderBy);\n\t\tvalidateDistinctOn(input.model, input.distinctOn, validatedOrderBy);\n\t\tconst normalizedInput = {\n\t\t\t...input,\n\t\t\torderBy: input.orderBy,\n\t\t\tlimit: input.limit ?? 100,\n\t\t\toffset: input.offset ?? 0\n\t\t};\n\t\tconst rows = await implementation.findMany(normalizedInput);\n\t\tif (!Array.isArray(rows)) throw new DatabasePluginInputError(\"invalid-result\");\n\t\trows.forEach((row) => validateResult(input.model, row, input.select));\n\t\treturn rows.map((row) => selectRow(row, input));\n\t}\n\treturn {\n\t\tcreate,\n\t\tupdate,\n\t\tdelete: deleteRows,\n\t\tcount,\n\t\tfindOne,\n\t\tfindMany\n\t};\n};\n//#endregion\nexport { createDatabasePluginCrud };\n", "import { createDatabasePluginCrud } from \"./databasePluginCrud.mjs\";\n//#region src/databasePluginTransaction.ts\nconst createTransactionDatabasePlugin = (implementation) => {\n\treturn createDatabasePluginCrud(implementation);\n};\n//#endregion\nexport { createTransactionDatabasePlugin };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { isChannelText, isRecord } from \"./databasePluginCrudValidationFields.mjs\";\nimport { validateCreateData, validateResult } from \"./databasePluginCrudValidationRows.mjs\";\nimport { validateApiKeyUpdateData, validateBundleUpdateData, validateReleaseUpdateData } from \"./databasePluginCrudValidationMutations.mjs\";\nimport { createDatabasePluginCrud } from \"./databasePluginCrud.mjs\";\nimport { createTransactionDatabasePlugin } from \"./databasePluginTransaction.mjs\";\n//#region src/createDatabasePlugin.ts\nconst PAGE_SIZE = 100;\nconst compareChannelRows = (left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0;\nvar DatabaseAtomicCommitUnsupportedError = class extends Error {\n\tname = \"DatabaseAtomicCommitUnsupportedError\";\n\tconstructor(pluginName) {\n\t\tsuper(`Database plugin \"${pluginName}\" cannot atomically commit changes across models.`);\n\t\tthis.pluginName = pluginName;\n\t}\n};\n/**\n* Internal provider signal for a delete rejected by a live reference.\n*\n* Provider implementations throw this after translating their native\n* foreign-key or reference-condition error. The public database contract\n* observes only the indexed `referenced` commit conflict.\n*/\nvar DatabaseRowReferencedError = class extends Error {\n\tname = \"DatabaseRowReferencedError\";\n\tconstructor() {\n\t\tsuper(\"The database row is still referenced.\");\n\t}\n};\nvar DatabaseCommitConflictError = class extends Error {\n\tname = \"DatabaseCommitConflictError\";\n\tconstructor(result) {\n\t\tsuper(\"Database commit precondition failed.\");\n\t\tthis.result = result;\n\t}\n};\nconst toBundleWhere = (where) => {\n\tif (!where) return [];\n\tconst filters = [];\n\tif (where.platform !== void 0) filters.push({\n\t\tfield: \"platform\",\n\t\tvalue: where.platform\n\t});\n\tif (where.id?.eq !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\tvalue: where.id.eq\n\t});\n\tif (where.id?.gt !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\toperator: \"gt\",\n\t\tvalue: where.id.gt\n\t});\n\tif (where.id?.gte !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\toperator: \"gte\",\n\t\tvalue: where.id.gte\n\t});\n\tif (where.id?.lt !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\toperator: \"lt\",\n\t\tvalue: where.id.lt\n\t});\n\tif (where.id?.lte !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\toperator: \"lte\",\n\t\tvalue: where.id.lte\n\t});\n\tif (where.id?.in !== void 0) filters.push({\n\t\tfield: \"id\",\n\t\toperator: \"in\",\n\t\tvalue: where.id.in\n\t});\n\treturn filters;\n};\nconst assertReleaseReferences = async (database, row) => {\n\tif (await database.findOne({\n\t\tmodel: \"channels\",\n\t\twhere: [{\n\t\t\tfield: \"id\",\n\t\t\tvalue: row.channel_id\n\t\t}]\n\t}) === null) throw new DatabasePluginInputError(\"invalid-data\");\n\tif (row.bundle_id !== null) {\n\t\tconst bundle = await database.findOne({\n\t\t\tmodel: \"bundles\",\n\t\t\twhere: [{\n\t\t\t\tfield: \"id\",\n\t\t\t\tvalue: row.bundle_id\n\t\t\t}]\n\t\t});\n\t\tif (bundle === null || bundle.platform !== row.platform) throw new DatabasePluginInputError(\"invalid-data\");\n\t}\n};\nconst applyChange = async (database, change, changeIndex) => {\n\tswitch (change.model) {\n\t\tcase \"bundles\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tawait database.create({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\tdata: change.row\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (await database.update({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}],\n\t\t\t\t\tupdate: change.update\n\t\t\t\t}) === null) throw new DatabaseCommitConflictError({\n\t\t\t\t\tcommitted: false,\n\t\t\t\t\tconflict: {\n\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\treason: \"not_found\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (await database.count({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"bundle_id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}]\n\t\t\t\t}) > 0) throw new DatabaseCommitConflictError({\n\t\t\t\t\tcommitted: false,\n\t\t\t\t\tconflict: {\n\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\treason: \"referenced\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tawait database.delete({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t\tcase \"releases\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tawait assertReleaseReferences(database, change.row);\n\t\t\t\tawait database.create({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\tdata: change.row\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (await database.update({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}],\n\t\t\t\t\tupdate: change.update\n\t\t\t\t}) === null) throw new DatabaseCommitConflictError({\n\t\t\t\t\tcommitted: false,\n\t\t\t\t\tconflict: {\n\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\treason: \"not_found\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tawait database.delete({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t\tcase \"releaseCatalogs\":\n\t\t\tif (await database.findOne({\n\t\t\t\tmodel: \"release_catalogs\",\n\t\t\t\twhere: [{\n\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\tvalue: change.row.scope_key\n\t\t\t\t}]\n\t\t\t}) === null) await database.create({\n\t\t\t\tmodel: \"release_catalogs\",\n\t\t\t\tdata: change.row\n\t\t\t});\n\t\t\telse {\n\t\t\t\tconst { scope_key: _scopeKey, ...update } = change.row;\n\t\t\t\tawait database.update({\n\t\t\t\t\tmodel: \"release_catalogs\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\t\tvalue: change.row.scope_key\n\t\t\t\t\t}],\n\t\t\t\t\tupdate\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"bundlePatches\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tawait database.create({\n\t\t\t\t\tmodel: \"bundle_patches\",\n\t\t\t\t\tdata: change.row\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tawait database.delete({\n\t\t\t\t\tmodel: \"bundle_patches\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"bundle_id\",\n\t\t\t\t\t\tvalue: change.where.bundleId\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t\tcase \"channels\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tawait database.create({\n\t\t\t\t\tmodel: \"channels\",\n\t\t\t\t\tdata: change.row,\n\t\t\t\t\tonConflict: change.onConflict\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (await database.count({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"channel_id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}]\n\t\t\t\t}) > 0) throw new DatabaseCommitConflictError({\n\t\t\t\t\tcommitted: false,\n\t\t\t\t\tconflict: {\n\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\treason: \"referenced\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttry {\n\t\t\t\t\tawait database.delete({\n\t\t\t\t\t\tmodel: \"channels\",\n\t\t\t\t\t\twhere: [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof DatabaseRowReferencedError) throw new DatabaseCommitConflictError({\n\t\t\t\t\t\tcommitted: false,\n\t\t\t\t\t\tconflict: {\n\t\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\t\treason: \"referenced\"\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t}\n\t\tcase \"analytics\":\n\t\t\tawait database.create({\n\t\t\t\tmodel: \"bundle_events\",\n\t\t\t\tdata: change.row\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"apiKeys\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tawait database.create({\n\t\t\t\t\tmodel: \"api_keys\",\n\t\t\t\t\tdata: change.row,\n\t\t\t\t\tonConflict: change.onConflict\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (await database.update({\n\t\t\t\t\tmodel: \"api_keys\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: change.where.id\n\t\t\t\t\t}],\n\t\t\t\t\tupdate: { revoked_at_ms: change.update.revokedAtMs }\n\t\t\t\t}) === null) throw new DatabaseCommitConflictError({\n\t\t\t\t\tcommitted: false,\n\t\t\t\t\tconflict: {\n\t\t\t\t\t\tchangeIndex,\n\t\t\t\t\t\treason: \"not_found\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t}\n};\nconst expectationVersion = async (database, expectation) => {\n\tif (expectation.model === \"releases\") return (await database.findOne({\n\t\tmodel: \"releases\",\n\t\twhere: [{\n\t\t\tfield: \"id\",\n\t\t\tvalue: expectation.id\n\t\t}],\n\t\tselect: [\"revision\"]\n\t}))?.revision ?? null;\n\treturn (await database.findOne({\n\t\tmodel: \"release_catalogs\",\n\t\twhere: [{\n\t\t\tfield: \"scope_key\",\n\t\t\tvalue: expectation.scopeKey\n\t\t}],\n\t\tselect: [\"generation\"]\n\t}))?.generation ?? null;\n};\nconst applyExpectations = async (database, expectations) => {\n\tfor (const expectation of expectations) {\n\t\tconst expectedVersion = expectation.model === \"releases\" ? expectation.revision : expectation.generation;\n\t\tconst actualVersion = await expectationVersion(database, expectation);\n\t\tif (actualVersion !== expectedVersion) throw new DatabaseCommitConflictError({\n\t\t\tcommitted: false,\n\t\t\tconflict: {\n\t\t\t\tactualVersion,\n\t\t\t\tchangeIndex: -1,\n\t\t\t\texpectedVersion,\n\t\t\t\tkey: expectation.model === \"releases\" ? expectation.id : expectation.scopeKey,\n\t\t\t\tmodel: expectation.model,\n\t\t\t\treason: \"version_conflict\"\n\t\t\t}\n\t\t});\n\t}\n};\nconst applyChanges = async (database, input) => {\n\tawait applyExpectations(database, input.expectations ?? []);\n\tfor (const [changeIndex, change] of input.changes.entries()) await applyChange(database, change, changeIndex);\n\treturn { committed: true };\n};\nconst hasOnlyKeys = (value, keys) => {\n\treturn Reflect.ownKeys(value).length === keys.length && keys.every((key) => Object.hasOwn(value, key));\n};\nconst validateWhere = (where, field, validateValue = (value) => typeof value === \"string\") => {\n\tif (!isRecord(where) || !hasOnlyKeys(where, [field]) || !validateValue(Reflect.get(where, field))) throw new DatabasePluginInputError(\"invalid-data\");\n};\nconst validateDatabaseChange = (change) => {\n\tif (!isRecord(change)) throw new DatabasePluginInputError(\"invalid-data\");\n\tswitch (change.model) {\n\t\tcase \"bundles\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"row\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateCreateData(\"bundles\", change.row);\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\",\n\t\t\t\t\t\"update\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\");\n\t\t\t\tvalidateBundleUpdateData(change.update);\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\");\n\t\t\t\treturn;\n\t\t\tdefault: throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t}\n\t\tcase \"bundlePatches\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"row\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateCreateData(\"bundle_patches\", change.row);\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"bundleId\");\n\t\t\t\treturn;\n\t\t\tdefault: throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t}\n\t\tcase \"releases\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"row\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateCreateData(\"releases\", change.row);\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\",\n\t\t\t\t\t\"update\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\");\n\t\t\t\tvalidateReleaseUpdateData(change.update);\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\");\n\t\t\t\treturn;\n\t\t\tdefault: throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t}\n\t\tcase \"releaseCatalogs\":\n\t\t\tif (change.operation !== \"put\" || !hasOnlyKeys(change, [\n\t\t\t\t\"model\",\n\t\t\t\t\"operation\",\n\t\t\t\t\"row\"\n\t\t\t])) throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t\tvalidateCreateData(\"release_catalogs\", change.row);\n\t\t\treturn;\n\t\tcase \"channels\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"row\",\n\t\t\t\t\t\"onConflict\"\n\t\t\t\t]) || change.onConflict !== \"ignore\") throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t\t\tvalidateCreateData(\"channels\", change.row);\n\t\t\t\treturn;\n\t\t\tcase \"delete\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\", isChannelText);\n\t\t\t\treturn;\n\t\t\tdefault: throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t}\n\t\tcase \"analytics\":\n\t\t\tif (change.operation !== \"insert\" || !hasOnlyKeys(change, [\n\t\t\t\t\"model\",\n\t\t\t\t\"operation\",\n\t\t\t\t\"row\"\n\t\t\t])) throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t\tvalidateCreateData(\"bundle_events\", change.row);\n\t\t\treturn;\n\t\tcase \"apiKeys\": switch (change.operation) {\n\t\t\tcase \"insert\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"row\",\n\t\t\t\t\t\"onConflict\"\n\t\t\t\t]) || change.onConflict !== \"ignore\") throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t\t\tvalidateCreateData(\"api_keys\", change.row);\n\t\t\t\treturn;\n\t\t\tcase \"update\":\n\t\t\t\tif (!hasOnlyKeys(change, [\n\t\t\t\t\t\"model\",\n\t\t\t\t\t\"operation\",\n\t\t\t\t\t\"where\",\n\t\t\t\t\t\"update\"\n\t\t\t\t])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateWhere(change.where, \"id\");\n\t\t\t\tif (!isRecord(change.update)) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tif (!hasOnlyKeys(change.update, [\"revokedAtMs\"])) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\tvalidateApiKeyUpdateData({ revoked_at_ms: change.update.revokedAtMs });\n\t\t\t\treturn;\n\t\t\tdefault: throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t}\n\t\tdefault: throw new DatabasePluginInputError(\"invalid-model\");\n\t}\n};\nconst validateDatabaseCommitExpectation = (expectation) => {\n\tif (!isRecord(expectation)) throw new DatabasePluginInputError(\"invalid-data\");\n\tif (expectation.model === \"releases\") {\n\t\tif (!hasOnlyKeys(expectation, [\n\t\t\t\"model\",\n\t\t\t\"id\",\n\t\t\t\"revision\"\n\t\t]) || typeof expectation.id !== \"string\" || !(expectation.revision === null || typeof expectation.revision === \"number\" && Number.isSafeInteger(expectation.revision) && expectation.revision >= 1)) throw new DatabasePluginInputError(\"invalid-data\");\n\t\treturn;\n\t}\n\tif (expectation.model === \"releaseCatalogs\") {\n\t\tif (!hasOnlyKeys(expectation, [\n\t\t\t\"model\",\n\t\t\t\"scopeKey\",\n\t\t\t\"generation\"\n\t\t]) || typeof expectation.scopeKey !== \"string\" || !(expectation.generation === null || typeof expectation.generation === \"number\" && Number.isSafeInteger(expectation.generation) && expectation.generation >= 1)) throw new DatabasePluginInputError(\"invalid-data\");\n\t\treturn;\n\t}\n\tthrow new DatabasePluginInputError(\"invalid-model\");\n};\nfunction validateDatabaseCommit(input) {\n\tif (!isRecord(input) || !Array.isArray(input.changes) || (Object.hasOwn(input, \"expectations\") ? !hasOnlyKeys(input, [\"changes\", \"expectations\"]) || !Array.isArray(input.expectations) : !hasOnlyKeys(input, [\"changes\"]))) throw new DatabasePluginInputError(\"invalid-data\");\n\tinput.changes.forEach(validateDatabaseChange);\n\tif (Array.isArray(input.expectations)) input.expectations.forEach(validateDatabaseCommitExpectation);\n}\nconst validateChannelInsertResult = (input, result) => {\n\tvalidateResult(\"channels\", result.row, void 0);\n\tif (typeof result.inserted !== \"boolean\" || result.row.name !== input.row.name || result.inserted && result.row.id !== input.row.id) throw new DatabasePluginInputError(\"invalid-result\");\n};\nconst validateChannelDeleteResult = (result) => {\n\tif (result.deleted) return;\n\tif (result.reason !== \"not_found\" && result.reason !== \"not_empty\") throw new DatabasePluginInputError(\"invalid-result\");\n};\nconst createDatabasePluginAdapter = (name, implementation) => {\n\tconst crud = createDatabasePluginCrud(implementation);\n\tconst transaction = implementation.transaction;\n\tconst executeCommit = implementation.commit ? implementation.commit : async (input) => {\n\t\tif (transaction) try {\n\t\t\treturn await transaction((database) => applyChanges(createTransactionDatabasePlugin(database), input));\n\t\t} catch (error) {\n\t\t\tif (error instanceof DatabaseCommitConflictError) return error.result;\n\t\t\tthrow error;\n\t\t}\n\t\tif ((input.expectations?.length ?? 0) > 0 || input.changes.length > 1 || input.changes.some((change) => change.model === \"channels\" && change.operation === \"delete\")) throw new DatabaseAtomicCommitUnsupportedError(name);\n\t\ttry {\n\t\t\treturn await applyChanges(crud, input);\n\t\t} catch (error) {\n\t\t\tif (error instanceof DatabaseCommitConflictError) return error.result;\n\t\t\tthrow error;\n\t\t}\n\t};\n\tconst commit = async (input) => {\n\t\tvalidateDatabaseCommit(input);\n\t\treturn executeCommit(input);\n\t};\n\tconst findApiKeyByHash = (database, hash) => database.findOne({\n\t\tmodel: \"api_keys\",\n\t\twhere: [{\n\t\t\tfield: \"hash\",\n\t\t\tvalue: hash\n\t\t}]\n\t});\n\treturn {\n\t\tmodels: {\n\t\t\tbundles: {\n\t\t\t\tfindById: (id) => crud.findOne({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: id\n\t\t\t\t\t}]\n\t\t\t\t}),\n\t\t\t\tfindMany: (query) => crud.findMany({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\twhere: toBundleWhere(query.where),\n\t\t\t\t\tlimit: query.limit,\n\t\t\t\t\toffset: query.offset,\n\t\t\t\t\torderBy: [query.orderBy]\n\t\t\t\t}),\n\t\t\t\tcount: (where) => crud.count({\n\t\t\t\t\tmodel: \"bundles\",\n\t\t\t\t\twhere: toBundleWhere(where)\n\t\t\t\t})\n\t\t\t},\n\t\t\tbundlePatches: { async findByBundleIds(bundleIds) {\n\t\t\t\tif (bundleIds.length === 0) return [];\n\t\t\t\tconst rows = [];\n\t\t\t\tfor (let offset = 0;; offset += PAGE_SIZE) {\n\t\t\t\t\tconst page = await crud.findMany({\n\t\t\t\t\t\tmodel: \"bundle_patches\",\n\t\t\t\t\t\twhere: [{\n\t\t\t\t\t\t\tfield: \"bundle_id\",\n\t\t\t\t\t\t\toperator: \"in\",\n\t\t\t\t\t\t\tvalue: bundleIds\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tlimit: PAGE_SIZE,\n\t\t\t\t\t\toffset,\n\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\trows.push(...page);\n\t\t\t\t\tif (page.length < PAGE_SIZE) return rows;\n\t\t\t\t}\n\t\t\t} },\n\t\t\treleases: {\n\t\t\t\tfindById: (id) => crud.findOne({\n\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: id\n\t\t\t\t\t}]\n\t\t\t\t}),\n\t\t\t\tfindMany(input) {\n\t\t\t\t\tif (!Number.isSafeInteger(input.limit) || input.limit <= 0 || input.afterReleaseId !== void 0 && input.beforeReleaseId !== void 0) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\t\t\tconst query = crud.findMany({\n\t\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\t\twhere: [\n\t\t\t\t\t\t\t...input.afterReleaseId === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\t\toperator: \"gt\",\n\t\t\t\t\t\t\t\tvalue: input.afterReleaseId\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.beforeReleaseId === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\t\toperator: \"lt\",\n\t\t\t\t\t\t\t\tvalue: input.beforeReleaseId\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.bundleId === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"bundle_id\",\n\t\t\t\t\t\t\t\tvalue: input.bundleId\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.channelId === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"channel_id\",\n\t\t\t\t\t\t\t\tvalue: input.channelId\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.enabled === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"enabled\",\n\t\t\t\t\t\t\t\tvalue: input.enabled\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.platform === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"platform\",\n\t\t\t\t\t\t\t\tvalue: input.platform\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\t...input.targetAppVersion === void 0 ? [] : [{\n\t\t\t\t\t\t\t\tfield: \"target_app_version\",\n\t\t\t\t\t\t\t\tvalue: input.targetAppVersion\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlimit: input.limit,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\tdirection: input.afterReleaseId === void 0 ? \"desc\" : \"asc\"\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\treturn input.afterReleaseId === void 0 ? query : query.then((rows) => [...rows].reverse());\n\t\t\t\t},\n\t\t\t\tfindManyByScope(input) {\n\t\t\t\t\tif (input.consistency !== \"strong\" || !Number.isSafeInteger(input.limit) || input.limit <= 0) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\t\t\treturn crud.findMany({\n\t\t\t\t\t\tmodel: \"releases\",\n\t\t\t\t\t\twhere: [{\n\t\t\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\t\t\tvalue: input.scopeKey\n\t\t\t\t\t\t}, ...input.afterReleaseId === void 0 ? [] : [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\toperator: \"gt\",\n\t\t\t\t\t\t\tvalue: input.afterReleaseId\n\t\t\t\t\t\t}]],\n\t\t\t\t\t\tlimit: input.limit,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\treleaseCatalogs: {\n\t\t\t\tfindByScopeKey: (scopeKey) => crud.findOne({\n\t\t\t\t\tmodel: \"release_catalogs\",\n\t\t\t\t\twhere: [{\n\t\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\t\tvalue: scopeKey\n\t\t\t\t\t}]\n\t\t\t\t}),\n\t\t\t\tfindMany(input) {\n\t\t\t\t\tif (!Number.isSafeInteger(input.limit) || input.limit <= 0) throw new DatabasePluginInputError(\"invalid-query\");\n\t\t\t\t\treturn crud.findMany({\n\t\t\t\t\t\tmodel: \"release_catalogs\",\n\t\t\t\t\t\twhere: input.afterScopeKey === void 0 ? [] : [{\n\t\t\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\t\t\toperator: \"gt\",\n\t\t\t\t\t\t\tvalue: input.afterScopeKey\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tlimit: input.limit,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\tfield: \"scope_key\",\n\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tchannels: {\n\t\t\t\tasync insert(input) {\n\t\t\t\t\tif (input.onConflict !== \"returnExisting\") throw new DatabasePluginInputError(\"invalid-operation\");\n\t\t\t\t\tvalidateCreateData(\"channels\", input.row);\n\t\t\t\t\tconst result = await implementation.insertChannel(input);\n\t\t\t\t\tvalidateChannelInsertResult(input, result);\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\tasync list(_input) {\n\t\t\t\t\tconst channels = [];\n\t\t\t\t\tfor (let offset = 0;; offset += PAGE_SIZE) {\n\t\t\t\t\t\tconst page = await crud.findMany({\n\t\t\t\t\t\t\tmodel: \"channels\",\n\t\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\t\tfield: \"name\",\n\t\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tlimit: PAGE_SIZE,\n\t\t\t\t\t\t\toffset\n\t\t\t\t\t\t});\n\t\t\t\t\t\tchannels.push(...page);\n\t\t\t\t\t\tif (page.length < PAGE_SIZE) {\n\t\t\t\t\t\t\tchannels.sort(compareChannelRows);\n\t\t\t\t\t\t\treturn { channels };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tasync delete(input) {\n\t\t\t\t\tif (!isChannelText(input.id)) throw new DatabasePluginInputError(\"invalid-data\");\n\t\t\t\t\tconst result = await implementation.deleteChannel(input);\n\t\t\t\t\tvalidateChannelDeleteResult(result);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t},\n\t\t\tanalytics: {\n\t\t\t\tasync append(row) {\n\t\t\t\t\tawait crud.create({\n\t\t\t\t\t\tmodel: \"bundle_events\",\n\t\t\t\t\t\tdata: row\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tasync scan(input) {\n\t\t\t\t\tconst rows = [];\n\t\t\t\t\tfor (let offset = 0; rows.length < input.limit; offset += PAGE_SIZE) {\n\t\t\t\t\t\tconst page = await crud.findMany({\n\t\t\t\t\t\t\tmodel: \"bundle_events\",\n\t\t\t\t\t\t\twhere: [{\n\t\t\t\t\t\t\t\tfield: \"received_at_ms\",\n\t\t\t\t\t\t\t\toperator: \"lt\",\n\t\t\t\t\t\t\t\tvalue: input.beforeReceivedAtMs\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\torderBy: [{\n\t\t\t\t\t\t\t\tfield: \"received_at_ms\",\n\t\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tlimit: PAGE_SIZE,\n\t\t\t\t\t\t\toffset\n\t\t\t\t\t\t});\n\t\t\t\t\t\trows.push(...page.filter((row) => input.after === void 0 || row.received_at_ms > input.after.receivedAtMs || row.received_at_ms === input.after.receivedAtMs && row.id > input.after.id));\n\t\t\t\t\t\tif (page.length < PAGE_SIZE) break;\n\t\t\t\t\t}\n\t\t\t\t\treturn rows.slice(0, input.limit);\n\t\t\t\t}\n\t\t\t},\n\t\t\tapiKeys: {\n\t\t\t\tasync create(row) {\n\t\t\t\t\tconst run = async (database) => {\n\t\t\t\t\t\tif (await findApiKeyByHash(database, row.hash) !== null) return \"existing\";\n\t\t\t\t\t\tawait database.create({\n\t\t\t\t\t\t\tmodel: \"api_keys\",\n\t\t\t\t\t\t\tdata: row\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn \"created\";\n\t\t\t\t\t};\n\t\t\t\t\treturn transaction ? transaction((database) => run(createTransactionDatabasePlugin(database))) : run(crud);\n\t\t\t\t},\n\t\t\t\tfindByHash: (hash) => findApiKeyByHash(crud, hash),\n\t\t\t\tlist: () => crud.findMany({\n\t\t\t\t\tmodel: \"api_keys\",\n\t\t\t\t\torderBy: [{\n\t\t\t\t\t\tfield: \"created_at_ms\",\n\t\t\t\t\t\tdirection: \"desc\"\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tdirection: \"asc\"\n\t\t\t\t\t}],\n\t\t\t\t\tlimit: Number.MAX_SAFE_INTEGER,\n\t\t\t\t\toffset: 0\n\t\t\t\t}),\n\t\t\t\tasync revoke({ id, revokedAtMs }) {\n\t\t\t\t\treturn crud.update({\n\t\t\t\t\t\tmodel: \"api_keys\",\n\t\t\t\t\t\twhere: [{\n\t\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\t\tvalue: id\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tupdate: { revoked_at_ms: revokedAtMs }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcommit,\n\t\t...implementation.dispose ? { dispose: implementation.dispose } : {}\n\t};\n};\nconst createDatabasePlugin = (options) => ({ ...options });\n//#endregion\nexport { DatabaseAtomicCommitUnsupportedError, DatabaseRowReferencedError, createDatabasePlugin, createDatabasePluginAdapter };\n", "//#region src/createStoragePlugin.ts\nconst createStoragePlugin = (options) => ({ ...options });\nfunction assertStorageOperations(plugin, operations) {\n\tfor (const operation of operations) if (typeof plugin[operation] !== \"function\") throw new Error(`Storage plugin \"${plugin.name}\" does not implement ${operation}.`);\n}\n//#endregion\nexport { assertStorageOperations, createStoragePlugin };\n", "import { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { isDatabaseMetadataObject } from \"./databaseJsonValue.mjs\";\nimport { stripBundleArtifactMetadata } from \"@hot-updater/core\";\n//#region src/databaseMetadata.ts\nconst bundleMetadataToRow = (metadata) => {\n\tconst value = stripBundleArtifactMetadata(metadata);\n\tif (value === void 0) return {};\n\tif (!isDatabaseMetadataObject(value)) throw new DatabasePluginInputError(\"invalid-data\");\n\treturn value;\n};\n//#endregion\nexport { bundleMetadataToRow };\n", "import { bundleMetadataToRow } from \"./databaseMetadata.mjs\";\nimport { getAssetBaseStorageUri, getBundlePatches, getManifestFileHash, getManifestStorageUri, stripBundleArtifactMetadata } from \"@hot-updater/core\";\n//#region src/databaseRows.ts\nconst releaseToRow = (release, scopeKey) => ({\n\tid: release.id,\n\trevision: release.revision,\n\tscope_key: scopeKey,\n\tchannel_id: release.channelId,\n\tplatform: release.platform,\n\tkind: release.kind,\n\tbundle_id: release.bundleId,\n\tstrategy: release.strategy,\n\ttarget_app_version: release.targetAppVersion,\n\tfingerprint_hash: release.fingerprintHash,\n\tenabled: release.enabled,\n\tshould_force_update: release.shouldForceUpdate,\n\tmessage: release.message,\n\trollout_cohort_count: release.rolloutCohortCount,\n\ttarget_cohorts: release.targetCohorts,\n\toperation: release.operation,\n\tsource_release_id: release.sourceReleaseId,\n\tcreated_at_ms: release.createdAtMs,\n\tupdated_at_ms: release.updatedAtMs\n});\nconst releaseRowToRelease = (row) => ({\n\tid: row.id,\n\trevision: row.revision,\n\tchannelId: row.channel_id,\n\tplatform: row.platform,\n\tkind: row.kind,\n\tbundleId: row.bundle_id,\n\tstrategy: row.strategy,\n\ttargetAppVersion: row.target_app_version,\n\tfingerprintHash: row.fingerprint_hash,\n\tenabled: row.enabled,\n\tshouldForceUpdate: row.should_force_update,\n\tmessage: row.message,\n\trolloutCohortCount: row.rollout_cohort_count,\n\ttargetCohorts: row.target_cohorts,\n\toperation: row.operation,\n\tsourceReleaseId: row.source_release_id,\n\tcreatedAtMs: row.created_at_ms,\n\tupdatedAtMs: row.updated_at_ms\n});\nconst BundleRowHydrationErrorReason = {\n\tduplicatePatchId: \"duplicate_patch_id\",\n\torphanPatchOwner: \"orphan_patch_owner\",\n\torphanPatchBase: \"orphan_patch_base\"\n};\nvar BundleRowHydrationError = class extends Error {\n\tname = \"BundleRowHydrationError\";\n\treason;\n\tpatchId;\n\tbundleId;\n\tconstructor({ reason, patchId, bundleId }) {\n\t\tsuper(`Cannot hydrate bundle rows: ${reason} for patch \"${patchId}\" and bundle \"${bundleId}\".`);\n\t\tthis.reason = reason;\n\t\tthis.patchId = patchId;\n\t\tthis.bundleId = bundleId;\n\t}\n};\nconst bundleToRow = (bundle) => {\n\tconst metadata = bundleMetadataToRow(bundle.metadata);\n\treturn {\n\t\tid: bundle.id,\n\t\tplatform: bundle.platform,\n\t\tfile_hash: bundle.fileHash,\n\t\tgit_commit_hash: bundle.gitCommitHash,\n\t\tstorage_uri: bundle.storageUri,\n\t\tarchive_byte_size: bundle.archiveByteSize,\n\t\tmetadata,\n\t\tmanifest_storage_uri: getManifestStorageUri(bundle),\n\t\tmanifest_file_hash: getManifestFileHash(bundle),\n\t\tasset_base_storage_uri: getAssetBaseStorageUri(bundle)\n\t};\n};\nconst bundleToPatchRows = (bundle) => getBundlePatches(bundle).map((patch, orderIndex) => ({\n\tid: `${bundle.id}:${patch.baseBundleId}`,\n\tbundle_id: bundle.id,\n\tbase_bundle_id: patch.baseBundleId,\n\tbase_file_hash: patch.baseFileHash,\n\tpatch_file_hash: patch.patchFileHash,\n\tpatch_storage_uri: patch.patchStorageUri,\n\tbyte_size: patch.byteSize,\n\torder_index: orderIndex\n}));\nconst comparePatchRows = (left, right) => left.order_index - right.order_index || left.id.localeCompare(right.id);\nconst patchRowToArtifact = (row) => ({\n\tbaseBundleId: row.base_bundle_id,\n\tbaseFileHash: row.base_file_hash,\n\tbyteSize: row.byte_size,\n\tpatchFileHash: row.patch_file_hash,\n\tpatchStorageUri: row.patch_storage_uri\n});\nconst rowToBundle = (row, patchRows = []) => {\n\tconst patches = patchRows.slice().sort(comparePatchRows).map(patchRowToArtifact);\n\treturn {\n\t\tid: row.id,\n\t\tplatform: row.platform,\n\t\tfileHash: row.file_hash,\n\t\tgitCommitHash: row.git_commit_hash,\n\t\tstorageUri: row.storage_uri,\n\t\tarchiveByteSize: row.archive_byte_size,\n\t\tmetadata: stripBundleArtifactMetadata(row.metadata),\n\t\tmanifestStorageUri: row.manifest_storage_uri,\n\t\tmanifestFileHash: row.manifest_file_hash,\n\t\tassetBaseStorageUri: row.asset_base_storage_uri,\n\t\tpatches\n\t};\n};\nconst rowsToBundles = (bundleRows, patchRows, referencedBundleRows) => {\n\tconst ownerIds = new Set(bundleRows.map(({ id }) => id));\n\tconst baseIds = new Set(ownerIds);\n\tfor (const row of referencedBundleRows) baseIds.add(row.id);\n\tconst patchIds = /* @__PURE__ */ new Set();\n\tconst patchesByOwner = /* @__PURE__ */ new Map();\n\tfor (const patch of patchRows) {\n\t\tif (patchIds.has(patch.id)) throw new BundleRowHydrationError({\n\t\t\treason: BundleRowHydrationErrorReason.duplicatePatchId,\n\t\t\tpatchId: patch.id,\n\t\t\tbundleId: patch.bundle_id\n\t\t});\n\t\tpatchIds.add(patch.id);\n\t\tif (!ownerIds.has(patch.bundle_id)) throw new BundleRowHydrationError({\n\t\t\treason: BundleRowHydrationErrorReason.orphanPatchOwner,\n\t\t\tpatchId: patch.id,\n\t\t\tbundleId: patch.bundle_id\n\t\t});\n\t\tif (!baseIds.has(patch.base_bundle_id)) throw new BundleRowHydrationError({\n\t\t\treason: BundleRowHydrationErrorReason.orphanPatchBase,\n\t\t\tpatchId: patch.id,\n\t\t\tbundleId: patch.base_bundle_id\n\t\t});\n\t\tconst ownerPatches = patchesByOwner.get(patch.bundle_id) ?? [];\n\t\townerPatches.push(patch);\n\t\tpatchesByOwner.set(patch.bundle_id, ownerPatches);\n\t}\n\treturn bundleRows.map((row) => rowToBundle(row, patchesByOwner.get(row.id) ?? []));\n};\n//#endregion\nexport { BundleRowHydrationError, BundleRowHydrationErrorReason, bundleToPatchRows, bundleToRow, releaseRowToRelease, releaseToRow, rowToBundle, rowsToBundles };\n", "import { bundleMetadataToRow } from \"./databaseMetadata.mjs\";\nimport { getBundlePatches } from \"@hot-updater/core\";\n//#region src/databaseClientUpdates.ts\nvar DatabasePatchUpdateUnsupportedError = class extends Error {\n\tname = \"DatabasePatchUpdateUnsupportedError\";\n\tconstructor(bundleId, pluginName) {\n\t\tsuper(`Database plugin \"${pluginName}\" cannot atomically replace patches for bundle \"${bundleId}\".`);\n\t\tthis.bundleId = bundleId;\n\t\tthis.pluginName = pluginName;\n\t}\n};\nconst bundleUpdateToRow = (update, _channelId) => {\n\treturn {\n\t\t...update.platform !== void 0 ? { platform: update.platform } : {},\n\t\t...update.fileHash !== void 0 ? { file_hash: update.fileHash } : {},\n\t\t...update.gitCommitHash !== void 0 ? { git_commit_hash: update.gitCommitHash } : {},\n\t\t...update.storageUri !== void 0 ? { storage_uri: update.storageUri } : {},\n\t\t...update.archiveByteSize !== void 0 ? { archive_byte_size: update.archiveByteSize } : {},\n\t\t...update.metadata !== void 0 ? { metadata: bundleMetadataToRow(update.metadata) } : {},\n\t\t...update.manifestStorageUri !== void 0 ? { manifest_storage_uri: update.manifestStorageUri } : {},\n\t\t...update.manifestFileHash !== void 0 ? { manifest_file_hash: update.manifestFileHash } : {},\n\t\t...update.assetBaseStorageUri !== void 0 ? { asset_base_storage_uri: update.assetBaseStorageUri } : {}\n\t};\n};\nconst bundleUpdateToPatchRows = (bundleId, update) => getBundlePatches({ patches: update.patches }).map((patch, orderIndex) => ({\n\tid: `${bundleId}:${patch.baseBundleId}`,\n\tbundle_id: bundleId,\n\tbase_bundle_id: patch.baseBundleId,\n\tbase_file_hash: patch.baseFileHash,\n\tpatch_file_hash: patch.patchFileHash,\n\tpatch_storage_uri: patch.patchStorageUri,\n\tbyte_size: patch.byteSize,\n\torder_index: orderIndex\n}));\n//#endregion\nexport { DatabasePatchUpdateUnsupportedError, bundleUpdateToPatchRows, bundleUpdateToRow };\n", "import { calculatePagination } from \"./calculatePagination.mjs\";\nimport { DatabasePluginInputError } from \"./databasePluginCrudValidationErrors.mjs\";\nimport { validateBundlePagination } from \"./databasePluginCrudValidationQueries.mjs\";\nimport { rowsToBundles } from \"./databaseRows.mjs\";\n//#region src/databaseClientReads.ts\nconst PAGE_SIZE = 100;\nconst mergeIdFilter = (where, id) => ({\n\t...where,\n\tid: {\n\t\t...where?.id,\n\t\t...id\n\t}\n});\nconst loadBundleRows = async (database, where) => {\n\tconst finiteIds = where?.id?.in;\n\tif (finiteIds) {\n\t\tif (finiteIds.length === 0) return [];\n\t\treturn [...await database.models.bundles.findMany({\n\t\t\twhere,\n\t\t\tlimit: finiteIds.length,\n\t\t\toffset: 0,\n\t\t\torderBy: {\n\t\t\t\tfield: \"id\",\n\t\t\t\tdirection: \"asc\"\n\t\t\t}\n\t\t})];\n\t}\n\tconst [cutoff] = await database.models.bundles.findMany({\n\t\twhere,\n\t\tlimit: 1,\n\t\toffset: 0,\n\t\torderBy: {\n\t\t\tfield: \"id\",\n\t\t\tdirection: \"desc\"\n\t\t}\n\t});\n\tif (!cutoff) return [];\n\tconst rows = [];\n\tlet after;\n\tfor (;;) {\n\t\tconst page = await database.models.bundles.findMany({\n\t\t\twhere: mergeIdFilter(where, {\n\t\t\t\tlte: cutoff.id,\n\t\t\t\t...after ? { gt: after } : {}\n\t\t\t}),\n\t\t\tlimit: PAGE_SIZE,\n\t\t\toffset: 0,\n\t\t\torderBy: {\n\t\t\t\tfield: \"id\",\n\t\t\t\tdirection: \"asc\"\n\t\t\t}\n\t\t});\n\t\trows.push(...page);\n\t\tif (page.length < PAGE_SIZE) return rows;\n\t\tafter = page.at(-1)?.id;\n\t}\n};\nconst hydrateRows = async (database, ownerRows) => {\n\tconst patchRows = await database.models.bundlePatches.findByBundleIds(ownerRows.map(({ id }) => id));\n\tconst ownerIds = new Set(ownerRows.map(({ id }) => id));\n\tconst referencedIds = [...new Set(patchRows.map(({ base_bundle_id }) => base_bundle_id).filter((id) => !ownerIds.has(id)))];\n\treturn rowsToBundles(ownerRows, patchRows, referencedIds.length === 0 ? [] : await loadBundleRows(database, { id: { in: referencedIds } }));\n};\nconst cursorIdFilter = (cursor, direction) => {\n\tif (cursor?.after) return { [direction === \"desc\" ? \"lt\" : \"gt\"]: cursor.after };\n\tif (cursor?.before) return { [direction === \"desc\" ? \"gt\" : \"lt\"]: cursor.before };\n};\nconst responsePage = async (database, options) => {\n\tvalidateBundlePagination(options);\n\tconst direction = options.orderBy?.direction ?? \"desc\";\n\tconst offset = options.page ? Math.max(0, options.page - 1) * options.limit : 0;\n\tconst cursor = options.page ? void 0 : options.cursor;\n\tconst queryLimit = cursor ? options.limit + 1 : options.limit;\n\tif (!Number.isSafeInteger(offset) || !Number.isSafeInteger(queryLimit) || !Number.isSafeInteger(offset + queryLimit)) throw new DatabasePluginInputError(\"invalid-pagination\");\n\tconst cursorFilter = cursorIdFilter(cursor, direction);\n\tconst where = cursorFilter ? mergeIdFilter(options.where, cursorFilter) : options.where;\n\tconst queryDirection = cursor?.before ? direction === \"desc\" ? \"asc\" : \"desc\" : direction;\n\tconst [queriedRows, total] = await Promise.all([database.models.bundles.findMany({\n\t\twhere,\n\t\tlimit: queryLimit,\n\t\toffset,\n\t\torderBy: {\n\t\t\tfield: \"id\",\n\t\t\tdirection: queryDirection\n\t\t}\n\t}), database.models.bundles.count(options.where)]);\n\tconst hasMore = cursor ? queriedRows.length > options.limit : false;\n\tconst pageRows = cursor ? queriedRows.slice(0, options.limit) : queriedRows;\n\tconst ownerRows = cursor?.before ? pageRows.toReversed() : pageRows;\n\tconst pagination = calculatePagination(total, {\n\t\tlimit: options.limit,\n\t\toffset\n\t});\n\tconst hasPreviousPage = cursor ? Boolean(cursor.after) || hasMore : pagination.hasPreviousPage;\n\tconst hasNextPage = cursor ? Boolean(cursor.before) || hasMore : pagination.hasNextPage;\n\tconst firstId = ownerRows[0]?.id;\n\tconst lastId = ownerRows.at(-1)?.id;\n\treturn {\n\t\tdata: await hydrateRows(database, ownerRows),\n\t\tpagination: {\n\t\t\t...pagination,\n\t\t\thasNextPage,\n\t\t\thasPreviousPage,\n\t\t\t...hasNextPage && lastId ? { nextCursor: lastId } : {},\n\t\t\t...hasPreviousPage && firstId ? { previousCursor: firstId } : {},\n\t\t\t...!firstId && cursor?.after ? { previousCursor: cursor.after } : {},\n\t\t\t...!lastId && cursor?.before ? { nextCursor: cursor.before } : {}\n\t\t}\n\t};\n};\n//#endregion\nexport { hydrateRows, responsePage };\n", "import { DatabaseAtomicCommitUnsupportedError, DatabaseRowReferencedError } from \"./createDatabasePlugin.mjs\";\nimport { bundleToPatchRows, bundleToRow } from \"./databaseRows.mjs\";\nimport { hydrateRows, responsePage } from \"./databaseClientReads.mjs\";\nimport { DatabasePatchUpdateUnsupportedError, bundleUpdateToPatchRows, bundleUpdateToRow } from \"./databaseClientUpdates.mjs\";\n//#region src/databaseClient.ts\nvar DatabaseBundleNotFoundError = class extends Error {\n\tname = \"DatabaseBundleNotFoundError\";\n\tconstructor(bundleId) {\n\t\tsuper(`Bundle \"${bundleId}\" was not found.`);\n\t\tthis.bundleId = bundleId;\n\t}\n};\nvar DatabasePatchInsertUnsupportedError = class extends Error {\n\tname = \"DatabasePatchInsertUnsupportedError\";\n\tconstructor(bundleId, pluginName) {\n\t\tsuper(`Database plugin \"${pluginName}\" cannot atomically insert patches for bundle \"${bundleId}\".`);\n\t\tthis.bundleId = bundleId;\n\t\tthis.pluginName = pluginName;\n\t}\n};\nconst insertChanges = (bundle) => [{\n\tmodel: \"bundles\",\n\toperation: \"insert\",\n\trow: bundleToRow(bundle)\n}, ...bundleToPatchRows(bundle).map((row) => ({\n\tmodel: \"bundlePatches\",\n\toperation: \"insert\",\n\trow\n}))];\nconst updateChanges = (bundleId, update) => {\n\tconst rowUpdate = bundleUpdateToRow(update);\n\treturn [{\n\t\tmodel: \"bundles\",\n\t\toperation: \"update\",\n\t\twhere: { id: bundleId },\n\t\tupdate: rowUpdate\n\t}, ...Object.hasOwn(update, \"patches\") ? [{\n\t\tmodel: \"bundlePatches\",\n\t\toperation: \"delete\",\n\t\twhere: { bundleId }\n\t}, ...bundleUpdateToPatchRows(bundleId, update).map((row) => ({\n\t\tmodel: \"bundlePatches\",\n\t\toperation: \"insert\",\n\t\trow\n\t}))] : []];\n};\nconst deleteChanges = (bundleId) => [{\n\tmodel: \"bundles\",\n\toperation: \"delete\",\n\twhere: { id: bundleId }\n}];\nconst createDatabaseClient = (plugin) => {\n\tconst getBundleById = async (id) => {\n\t\tconst row = await plugin.models.bundles.findById(id);\n\t\tif (!row) return null;\n\t\treturn (await hydrateRows(plugin, [row]))[0] ?? null;\n\t};\n\tconst insertChannel = (input) => plugin.models.channels.insert(input);\n\tconst createMutationClient = (commit) => ({\n\t\tgetBundleById,\n\t\tgetBundles: (options) => responsePage(plugin, options),\n\t\tasync getChannels() {\n\t\t\treturn (await plugin.models.channels.list({})).channels;\n\t\t},\n\t\tinsertChannel,\n\t\tasync insertBundle(bundle) {\n\t\t\ttry {\n\t\t\t\tawait commit(insertChanges(bundle));\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DatabaseAtomicCommitUnsupportedError && bundleToPatchRows(bundle).length > 0) throw new DatabasePatchInsertUnsupportedError(bundle.id, plugin.name);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tasync updateBundleById(bundleId, update) {\n\t\t\ttry {\n\t\t\t\tif (!(await commit(updateChanges(bundleId, update))).committed) throw new DatabaseBundleNotFoundError(bundleId);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DatabaseAtomicCommitUnsupportedError && Object.hasOwn(update, \"patches\")) throw new DatabasePatchUpdateUnsupportedError(bundleId, plugin.name);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tasync deleteBundleById(bundleId) {\n\t\t\tconst result = await commit(deleteChanges(bundleId));\n\t\t\tif (!result.committed && result.conflict.reason === \"referenced\") throw new DatabaseRowReferencedError();\n\t\t}\n\t});\n\tconst runMutation = async (operation) => {\n\t\tconst changes = [];\n\t\tconst result = await operation(createMutationClient(async (input) => {\n\t\t\tchanges.push(...input);\n\t\t\treturn { committed: true };\n\t\t}));\n\t\tif (changes.length === 0) return result;\n\t\tconst commitResult = await plugin.commit({ changes });\n\t\tif (!commitResult.committed) {\n\t\t\tconst change = changes[commitResult.conflict.changeIndex];\n\t\t\tif (commitResult.conflict.reason === \"referenced\" && change?.model === \"bundles\" && change.operation === \"delete\") throw new DatabaseRowReferencedError();\n\t\t\tif (change?.model === \"bundles\" && change.operation === \"update\") throw new DatabaseBundleNotFoundError(change.where.id);\n\t\t\tthrow new Error(`Database plugin \"${plugin.name}\" rejected a commit.`);\n\t\t}\n\t\treturn result;\n\t};\n\treturn {\n\t\t...createMutationClient((changes) => plugin.commit({ changes })),\n\t\tdeleteChannel: (input) => plugin.models.channels.delete(input),\n\t\tmutate: runMutation\n\t};\n};\n//#endregion\nexport { DatabaseBundleNotFoundError, DatabasePatchInsertUnsupportedError, createDatabaseClient };\n", "//#region ../../node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.js\nconst LETTER_DASH_NUMBER = \"[a-zA-Z0-9-]\";\nconst NUMERIC_IDENTIFIER = String.raw`0|[1-9]\\d*`;\nconst NUMERIC_IDENTIFIER_LOOSE = String.raw`\\d+`;\nconst NON_NUMERIC_IDENTIFIER = String.raw`\\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;\nconst MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})\\.(${NUMERIC_IDENTIFIER})`;\nconst MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})\\.(${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;\nconst PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;\nconst PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`;\nconst PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;\nconst BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;\nconst BUILD = String.raw`(?:\\+(${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`;\nconst FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;\nconst LOOSE_PLAIN = String.raw`[v=\\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;\nconst GREATER_LESS_THAN = \"((?:<|>)?=?)\";\nconst XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\\*`;\nconst XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\\*`;\nconst XRANGE_PLAIN = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:\\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;\nconst XRANGE_PLAIN_LOOSE = String.raw`[v=\\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:\\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;\nconst LONE_TILDE = \"(?:~>?)\";\nconst LONE_CARET = String.raw`(?:\\^)`;\nconst COERCE_PLAIN = String.raw`(^|[^\\d])(\\d{1,${16}})(?:\\.(\\d{1,${16}}))?(?:\\.(\\d{1,${16}}))?`;\nconst COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\\d])`;\nconst COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\\d])`;\nfunction makeSafeRegexSource(source) {\n\tconst replacements = [\n\t\t[String.raw`\\s`, 1],\n\t\t[String.raw`\\d`, 256],\n\t\t[LETTER_DASH_NUMBER, 250]\n\t];\n\tfor (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);\n\treturn source;\n}\nfunction safeRegex(source, flags) {\n\treturn new RegExp(makeSafeRegexSource(source), flags);\n}\nconst NUMERIC$1 = /^\\d+$/;\nfunction compareIdentifiers(left, right) {\n\tif (typeof left === \"number\" && typeof right === \"number\") return left === right ? 0 : left < right ? -1 : 1;\n\tconst leftNumeric = NUMERIC$1.test(String(left));\n\tconst rightNumeric = NUMERIC$1.test(String(right));\n\tconst normalizedLeft = leftNumeric ? Number(left) : left;\n\tconst normalizedRight = rightNumeric ? Number(right) : right;\n\treturn normalizedLeft === normalizedRight ? 0 : leftNumeric && !rightNumeric ? -1 : rightNumeric && !leftNumeric ? 1 : normalizedLeft < normalizedRight ? -1 : 1;\n}\nconst FULL = safeRegex(`^${FULL_PLAIN}$`);\nconst LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);\nsafeRegex(`^${PRERELEASE}$`);\nsafeRegex(`^${PRERELEASE_LOOSE}$`);\nconst COERCE_EXACT = safeRegex(COERCE);\nconst COERCE_FULL_EXACT = safeRegex(COERCE_FULL);\nconst NUMERIC = /^\\d+$/;\nfunction formatComparableVersion(version) {\n\tconst base = `${version.major}.${version.minor}.${version.patch}`;\n\treturn version.prerelease?.length ? `${base}-${version.prerelease.join(\".\")}` : base;\n}\nfunction formatFullVersion(version) {\n\tconst comparable = formatComparableVersion(version);\n\treturn version.build?.length ? `${comparable}+${version.build.join(\".\")}` : comparable;\n}\nfunction parse(version, options = {}) {\n\tif (typeof version !== \"string\") return version;\n\tif (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);\n\tconst match = version.trim().match(options.loose ? LOOSE : FULL);\n\tif (!match) throw new TypeError(`Invalid version syntax: ${version}`);\n\tconst major = Number(match[1]);\n\tconst minor = Number(match[2]);\n\tconst patch = Number(match[3]);\n\tif (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);\n\tif (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);\n\tif (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);\n\tconst prerelease = match[4] ? match[4].split(\".\").map((identifier) => {\n\t\tif (NUMERIC.test(identifier)) {\n\t\t\tconst numeric = Number(identifier);\n\t\t\tif (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;\n\t\t}\n\t\treturn identifier;\n\t}) : void 0;\n\treturn {\n\t\tbuild: match[5]?.split(\".\"),\n\t\tmajor,\n\t\tminor,\n\t\tpatch,\n\t\tprerelease\n\t};\n}\nfunction tryParse(version, options = {}) {\n\ttry {\n\t\treturn parse(version, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction compareMainParsed(left, right) {\n\treturn left.major === right.major ? left.minor === right.minor ? left.patch === right.patch ? 0 : left.patch < right.patch ? -1 : 1 : left.minor < right.minor ? -1 : 1 : left.major < right.major ? -1 : 1;\n}\nfunction comparePrereleaseParsed(left, right) {\n\tconst leftPrerelease = left.prerelease;\n\tconst rightPrerelease = right.prerelease;\n\tif (leftPrerelease?.length && !rightPrerelease?.length) return -1;\n\tif (!leftPrerelease?.length && rightPrerelease?.length) return 1;\n\tif (!leftPrerelease?.length && !rightPrerelease?.length) return 0;\n\tfor (let index = 0;; index++) {\n\t\tconst leftIdentifier = leftPrerelease?.[index];\n\t\tconst rightIdentifier = rightPrerelease?.[index];\n\t\tif (leftIdentifier === void 0 && rightIdentifier === void 0) return 0;\n\t\tif (rightIdentifier === void 0) return 1;\n\t\tif (leftIdentifier === void 0) return -1;\n\t\tif (leftIdentifier !== rightIdentifier) return compareIdentifiers(leftIdentifier, rightIdentifier);\n\t}\n}\nfunction compareParsed(left, right) {\n\treturn compareMainParsed(left, right) || comparePrereleaseParsed(left, right);\n}\nfunction coerceParsedVersion(value, options = {}) {\n\tif (typeof value === \"object\") return value;\n\tconst input = typeof value === \"number\" ? String(value) : value;\n\tif (typeof input !== \"string\") return null;\n\tlet match = null;\n\tif (options.rtl) {\n\t\tconst expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, \"g\");\n\t\tlet next;\n\t\twhile ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {\n\t\t\tif (!match || next.index + next[0].length !== match.index + match[0].length) match = next;\n\t\t\texpression.lastIndex = next.index + next[1].length + next[2].length;\n\t\t}\n\t} else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);\n\tif (!match) return null;\n\tconst major = match[2];\n\treturn tryParse(`${major}.${match[3] || \"0\"}.${match[4] || \"0\"}${options.includePrerelease && match[5] ? `-${match[5]}` : \"\"}${options.includePrerelease && match[6] ? `+${match[6]}` : \"\"}`, options);\n}\nconst STRICT_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${FULL_PLAIN})$|^$`);\nconst LOOSE_COMPARATOR$1 = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction parseComparator(comparator, options = {}) {\n\tconst normalized = comparator.trim().replaceAll(/\\s+/g, \" \");\n\tconst match = normalized.match(options.loose ? LOOSE_COMPARATOR$1 : STRICT_COMPARATOR);\n\tif (!match) throw new TypeError(`Invalid comparator: ${normalized}`);\n\tconst operator = match[1] === \"=\" ? \"\" : match[1] || \"\";\n\tconst version = match[2] ? parse(match[2], options) : null;\n\treturn {\n\t\toperator,\n\t\toptions,\n\t\tvalue: version ? `${operator}${formatComparableVersion(version)}` : \"\",\n\t\tversion\n\t};\n}\nfunction testParsedComparator(comparator, version) {\n\tif (!comparator.version) return true;\n\tconst comparison = compareParsed(version, comparator.version);\n\tswitch (comparator.operator) {\n\t\tcase \"\": return comparison === 0;\n\t\tcase \">\": return comparison > 0;\n\t\tcase \">=\": return comparison >= 0;\n\t\tcase \"<\": return comparison < 0;\n\t\tcase \"<=\": return comparison <= 0;\n\t}\n}\nfunction comparatorAllowsPrerelease(comparator, version) {\n\tconst allowed = comparator.version;\n\treturn allowed !== null && !!allowed.prerelease?.length && allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch;\n}\nfunction testComparatorSet(set, version, options) {\n\tif (set.some((comparator) => !testParsedComparator(comparator, version))) return false;\n\treturn !version.prerelease?.length || !!options.includePrerelease || set.some((comparator) => comparatorAllowsPrerelease(comparator, version));\n}\nfunction compare(left, right, options = {}) {\n\treturn compareParsed(parse(left, options), parse(right, options));\n}\nconst BUILD_STRIP = new RegExp(BUILD, \"g\");\nconst BUILD_SAFE = safeRegex(BUILD);\nconst STRICT_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN})\\s+-\\s+(${XRANGE_PLAIN})\\s*$`);\nconst LOOSE_HYPHEN = safeRegex(String.raw`^\\s*(${XRANGE_PLAIN_LOOSE})\\s+-\\s+(${XRANGE_PLAIN_LOOSE})\\s*$`);\nconst COMPARATOR_TRIM = safeRegex(String.raw`(\\s*)${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN}|${XRANGE_PLAIN})`, \"g\");\nconst TILDE_TRIM = safeRegex(String.raw`(\\s*)${LONE_TILDE}\\s+`, \"g\");\nconst CARET_TRIM = safeRegex(String.raw`(\\s*)${LONE_CARET}\\s+`, \"g\");\nconst STRICT_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN}$`);\nconst LOOSE_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN}$`);\nconst LOOSE_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN_LOOSE}$`);\nconst STRICT_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN}$`);\nconst LOOSE_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*${XRANGE_PLAIN_LOOSE}$`);\nconst STAR = safeRegex(String.raw`(<|>)?=?\\s*\\*`);\nconst GTE_ZERO = /^\\s*>=\\s*0\\.0\\.0\\s*$/;\nconst GTE_ZERO_PRERELEASE = /^\\s*>=\\s*0\\.0\\.0-0\\s*$/;\nconst LOOSE_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\\s*(${LOOSE_PLAIN})$|^$`);\nfunction isWildcard(value) {\n\treturn !value || String(value).toLowerCase() === \"x\" || String(value) === \"*\";\n}\nfunction hasInvalidWildcardOrder(major, minor, patch) {\n\treturn isWildcard(major) && !isWildcard(minor) || isWildcard(minor) && Boolean(patch) && !isWildcard(patch);\n}\nfunction replaceTilde(comparator, options) {\n\tconst expression = options.loose ? LOOSE_TILDE : STRICT_TILDE;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn prerelease ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;\n\t});\n}\nfunction replaceTildes(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceTilde(part, options)).join(\" \");\n}\nfunction replaceCaret(comparator, options) {\n\tconst expression = options.loose ? LOOSE_CARET : STRICT_CARET;\n\tconst lowerPrerelease = options.includePrerelease ? \"-0\" : \"\";\n\treturn comparator.replace(expression, (_match, major, minor, patch, prerelease) => {\n\t\tif (isWildcard(major)) return \"\";\n\t\tif (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (isWildcard(patch)) return major === \"0\" ? `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (prerelease) return major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch}-${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\treturn major === \"0\" ? minor === \"0\" ? `>=${major}.${minor}.${patch} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;\n\t});\n}\nfunction replaceCarets(comparator, options) {\n\treturn comparator.trim().split(/\\s+/).map((part) => replaceCaret(part, options)).join(\" \");\n}\nfunction replaceXRange(comparator, options) {\n\tconst expression = options.loose ? LOOSE_XRANGE : STRICT_XRANGE;\n\treturn comparator.trim().replace(expression, (match, rawOperator, rawMajor, rawMinor, rawPatch) => {\n\t\tlet operator = rawOperator;\n\t\tlet major = rawMajor;\n\t\tlet minor = rawMinor;\n\t\tlet patch = rawPatch;\n\t\tif (hasInvalidWildcardOrder(String(major), minor === void 0 ? void 0 : String(minor), patch === void 0 ? void 0 : String(patch))) return comparator;\n\t\tconst wildcardMajor = isWildcard(major);\n\t\tconst wildcardMinor = wildcardMajor || isWildcard(minor);\n\t\tconst wildcardPatch = wildcardMinor || isWildcard(patch);\n\t\tif (operator === \"=\" && wildcardPatch) operator = \"\";\n\t\tif (wildcardMajor) return operator === \">\" || operator === \"<\" ? \"<0.0.0-0\" : \"*\";\n\t\tlet prerelease = options.includePrerelease ? \"-0\" : \"\";\n\t\tif (operator && wildcardPatch) {\n\t\t\tif (wildcardMinor) minor = 0;\n\t\t\tpatch = 0;\n\t\t\tif (operator === \">\") {\n\t\t\t\toperator = \">=\";\n\t\t\t\tif (wildcardMinor) {\n\t\t\t\t\tmajor = Number(major) + 1;\n\t\t\t\t\tminor = 0;\n\t\t\t\t} else minor = Number(minor) + 1;\n\t\t\t} else if (operator === \"<=\") {\n\t\t\t\toperator = \"<\";\n\t\t\t\tif (wildcardMinor) major = Number(major) + 1;\n\t\t\t\telse minor = Number(minor) + 1;\n\t\t\t}\n\t\t\tif (operator === \"<\") prerelease = \"-0\";\n\t\t\treturn `${operator}${major}.${minor}.${patch}${prerelease}`;\n\t\t}\n\t\tif (wildcardMinor) return `>=${major}.0.0${prerelease} <${Number(major) + 1}.0.0-0`;\n\t\tif (wildcardPatch) return `>=${major}.${minor}.0${prerelease} <${major}.${Number(minor) + 1}.0-0`;\n\t\treturn match;\n\t});\n}\nfunction replaceXRanges(comparator, options) {\n\treturn comparator.split(/\\s+/).map((part) => replaceXRange(part, options)).join(\" \");\n}\nfunction replaceHyphenRange(range, options) {\n\tconst expression = options.loose ? LOOSE_HYPHEN : STRICT_HYPHEN;\n\treturn range.replace(expression, (_match, rawFrom, fromMajor, fromMinor, fromPatch, fromPrerelease, _fromBuild, rawTo, toMajor, toMinor, toPatch, toPrerelease) => {\n\t\tlet from = rawFrom;\n\t\tlet to = rawTo;\n\t\tif (isWildcard(fromMajor)) from = \"\";\n\t\telse if (isWildcard(fromMinor)) from = `>=${fromMajor}.0.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (isWildcard(fromPatch)) from = `>=${fromMajor}.${fromMinor}.0${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\telse if (fromPrerelease) from = `>=${from}`;\n\t\telse from = `>=${from}${options.includePrerelease ? \"-0\" : \"\"}`;\n\t\tif (isWildcard(toMajor)) to = \"\";\n\t\telse if (isWildcard(toMinor)) to = `<${Number(toMajor) + 1}.0.0-0`;\n\t\telse if (isWildcard(toPatch)) to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;\n\t\telse if (toPrerelease) to = `<=${toMajor}.${toMinor}.${toPatch}-${toPrerelease}`;\n\t\telse if (options.includePrerelease) to = `<${toMajor}.${toMinor}.${Number(toPatch) + 1}-0`;\n\t\telse to = `<=${to}`;\n\t\treturn `${from} ${to}`.trim();\n\t});\n}\nfunction expandComparator(comparator, options) {\n\treturn replaceXRanges(replaceTildes(replaceCarets(comparator.replace(BUILD_SAFE, \"\"), options), options), options).trim().replace(STAR, \"\");\n}\nfunction parseSimpleRange(input, options) {\n\tlet parts = replaceHyphenRange(input.replace(BUILD_STRIP, \"\"), options).replace(COMPARATOR_TRIM, \"$1$2$3\").replace(TILDE_TRIM, \"$1~\").replace(CARET_TRIM, \"$1^\").split(\" \").map((part) => expandComparator(part, options)).join(\" \").split(/\\s+/).map((part) => part.trim().replace(options.includePrerelease ? GTE_ZERO_PRERELEASE : GTE_ZERO, \"\"));\n\tif (options.loose) parts = parts.filter((part) => LOOSE_COMPARATOR.test(part));\n\tconst unique = /* @__PURE__ */ new Map();\n\tfor (const comparator of parts.map((part) => parseComparator(part, options))) {\n\t\tif (comparator.value === \"<0.0.0-0\") return [comparator];\n\t\tunique.set(comparator.value, comparator);\n\t}\n\tif (unique.size > 1) unique.delete(\"\");\n\treturn [...unique.values()];\n}\nfunction parseRange(range, options = {}) {\n\tif (typeof range !== \"string\") return range;\n\tconst parsedOptions = { ...options };\n\tconst raw = range.trim().replaceAll(/\\s+/g, \" \");\n\tlet sets = raw.split(\"||\").map((part) => parseSimpleRange(part.trim(), parsedOptions)).filter((set) => set.length);\n\tif (!sets.length) throw new TypeError(`Range contains no valid comparator sets: ${raw}`);\n\tif (sets.length > 1) {\n\t\tconst first = sets[0];\n\t\tsets = sets.filter((set) => set[0]?.value !== \"<0.0.0-0\");\n\t\tif (!sets.length) sets = [first];\n\t\telse if (sets.length > 1) {\n\t\t\tconst any = sets.find((set) => set.length === 1 && set[0]?.value === \"\");\n\t\t\tif (any) sets = [any];\n\t\t}\n\t}\n\treturn {\n\t\tnormalized: sets.map((set) => set.map((comparator) => comparator.value).join(\" \")).join(\"||\"),\n\t\toptions: parsedOptions,\n\t\traw,\n\t\tsets\n\t};\n}\nfunction tryParseRange(range, options = {}) {\n\ttry {\n\t\treturn parseRange(range, options);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction testParsedRange(range, version) {\n\treturn range.sets.some((set) => testComparatorSet(set, version, range.options));\n}\nfunction testRangeVersion(range, version) {\n\tconst parsed = tryParse(version, range.options);\n\treturn parsed ? testParsedRange(range, parsed) : false;\n}\nfunction satisfies(version, range, options = {}) {\n\tconst parsed = tryParseRange(range, options);\n\treturn parsed ? testRangeVersion(parsed, version) : false;\n}\nfunction normalize(version, options = {}) {\n\tconst parsed = tryParse(version, options);\n\treturn parsed ? formatComparableVersion(parsed) : null;\n}\nfunction coerce(value, options = {}) {\n\tconst parsed = coerceParsedVersion(value, options);\n\treturn parsed ? formatFullVersion(parsed) : null;\n}\n//#endregion\nexport { coerce, compare, normalize, parseRange, satisfies };\n", "import { isUUIDv7 as isUUIDv7$1 } from \"./uuidv7.mjs\";\nimport { coerce, compare, normalize, parseRange, satisfies } from \"./node_modules/.pnpm/verkit@0.3.2/node_modules/verkit/dist/index.mjs\";\nimport { MAX_COMPILED_CATALOG_BYTES, MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE, MAX_TARGET_COHORTS_PER_RELEASE, NUMERIC_COHORT_SIZE, RELEASE_CATALOG_FALLBACK_POLICY, RELEASE_CATALOG_SCHEMA_VERSION, getNumericCohortValue, getRolledOutNumericCohorts, isCustomCohort, normalizeCohortValue, normalizeRolloutCohortCount } from \"@hot-updater/core\";\n//#region src/releaseCatalogCompiler.ts\nvar ReleaseCatalogCompilationError = class extends Error {\n\tcode;\n\tconstructor(code, message) {\n\t\tsuper(message);\n\t\tthis.name = \"ReleaseCatalogCompilationError\";\n\t\tthis.code = code;\n\t}\n};\nfunction compareBounds(left, right) {\n\treturn compare(left, right);\n}\nfunction strongerLower(current, candidate) {\n\tif (current === null) return candidate;\n\tconst compared = compareBounds(candidate.version, current.version);\n\tif (compared > 0) return candidate;\n\tif (compared < 0) return current;\n\treturn {\n\t\tversion: current.version,\n\t\tinclusive: current.inclusive && candidate.inclusive\n\t};\n}\nfunction strongerUpper(current, candidate) {\n\tif (current === null) return candidate;\n\tconst compared = compareBounds(candidate.version, current.version);\n\tif (compared < 0) return candidate;\n\tif (compared > 0) return current;\n\treturn {\n\t\tversion: current.version,\n\t\tinclusive: current.inclusive && candidate.inclusive\n\t};\n}\nfunction comparatorVersion(comparator) {\n\tconst version = comparator.version && normalize(comparator.version);\n\tif (version === null) throw new ReleaseCatalogCompilationError(\"INVALID_TARGET_RANGE\", `Invalid comparator: ${comparator.value}`);\n\treturn version;\n}\nfunction comparatorSetToInterval(comparators) {\n\tlet lower = null;\n\tlet upper = null;\n\tfor (const comparator of comparators) {\n\t\tif (comparator.version === null) continue;\n\t\tconst version = comparatorVersion(comparator);\n\t\tif (comparator.operator === \"\") {\n\t\t\tlower = strongerLower(lower, {\n\t\t\t\tinclusive: true,\n\t\t\t\tversion\n\t\t\t});\n\t\t\tupper = strongerUpper(upper, {\n\t\t\t\tinclusive: true,\n\t\t\t\tversion\n\t\t\t});\n\t\t} else if (comparator.operator === \">\") lower = strongerLower(lower, {\n\t\t\tinclusive: false,\n\t\t\tversion\n\t\t});\n\t\telse if (comparator.operator === \">=\") lower = strongerLower(lower, {\n\t\t\tinclusive: true,\n\t\t\tversion\n\t\t});\n\t\telse if (comparator.operator === \"<\") upper = strongerUpper(upper, {\n\t\t\tinclusive: false,\n\t\t\tversion\n\t\t});\n\t\telse if (comparator.operator === \"<=\") upper = strongerUpper(upper, {\n\t\t\tinclusive: true,\n\t\t\tversion\n\t\t});\n\t}\n\tif (lower !== null && upper !== null) {\n\t\tconst compared = compareBounds(lower.version, upper.version);\n\t\tif (compared > 0 || compared === 0 && (!lower.inclusive || !upper.inclusive)) return null;\n\t}\n\treturn {\n\t\tlower,\n\t\tupper\n\t};\n}\nfunction rangeToIntervals(range) {\n\ttry {\n\t\treturn parseRange(range).sets.flatMap((comparators) => {\n\t\t\tconst interval = comparatorSetToInterval(comparators);\n\t\t\treturn interval === null ? [] : [interval];\n\t\t});\n\t} catch {\n\t\tthrow new ReleaseCatalogCompilationError(\"INVALID_TARGET_RANGE\", `Invalid target app-version range: ${range}`);\n\t}\n}\nfunction releaseDescriptor(release) {\n\treturn {\n\t\treleaseId: release.id,\n\t\tkind: release.kind,\n\t\tbundleId: release.bundleId,\n\t\trolloutCohortCount: release.rolloutCohortCount,\n\t\ttargetCohorts: [...new Set(release.targetCohorts)].sort(),\n\t\tshouldForceUpdate: release.shouldForceUpdate,\n\t\tmessage: release.message\n\t};\n}\nfunction validateReleases(releases, strategy) {\n\tconst enabled = releases.filter((release) => release.enabled).sort((left, right) => right.id.localeCompare(left.id));\n\tconst seenIds = /* @__PURE__ */ new Set();\n\tfor (const release of enabled) {\n\t\tif (!isUUIDv7$1(release.id)) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Release ${release.id} must use a canonical lowercase UUIDv7 ID`);\n\t\tif (seenIds.has(release.id)) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Duplicate Release ID: ${release.id}`);\n\t\tseenIds.add(release.id);\n\t\tif (release.strategy !== strategy) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Release ${release.id} has the wrong strategy`);\n\t\tif (release.kind === \"BUNDLE\" && release.bundleId === null || release.kind === \"EMBEDDED\" && release.bundleId !== null) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Release ${release.id} has an invalid kind/Bundle combination`);\n\t\tif (release.targetCohorts.length > MAX_TARGET_COHORTS_PER_RELEASE) throw new ReleaseCatalogCompilationError(\"TARGET_COHORT_LIMIT\", `Release ${release.id} exceeds ${MAX_TARGET_COHORTS_PER_RELEASE} target cohorts`);\n\t\tif (strategy === \"APP_VERSION\" && (release.targetAppVersion === null || release.fingerprintHash !== null)) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Release ${release.id} has an invalid app-version target`);\n\t\tif (strategy === \"FINGERPRINT\" && (release.fingerprintHash === null || release.targetAppVersion !== null)) throw new ReleaseCatalogCompilationError(\"INVALID_RELEASE\", `Release ${release.id} has an invalid fingerprint target`);\n\t}\n\treturn enabled.filter((release) => release.kind === \"BUNDLE\");\n}\nfunction collectFrontierReleaseIds(releases) {\n\tif (releases.every((release) => normalizeRolloutCohortCount(release.rolloutCohortCount) >= NUMERIC_COHORT_SIZE)) {\n\t\tconst retained = /* @__PURE__ */ new Set();\n\t\tconst bundleIds = /* @__PURE__ */ new Set();\n\t\tlet embedded = false;\n\t\tfor (const release of releases) {\n\t\t\tif (release.kind === \"EMBEDDED\") {\n\t\t\t\tif (!embedded) {\n\t\t\t\t\tembedded = true;\n\t\t\t\t\tretained.add(release.id);\n\t\t\t\t}\n\t\t\t} else if (release.bundleId !== null && bundleIds.size < 11 && !bundleIds.has(release.bundleId)) {\n\t\t\t\tbundleIds.add(release.bundleId);\n\t\t\t\tretained.add(release.id);\n\t\t\t}\n\t\t\tif (embedded && bundleIds.size >= 11) break;\n\t\t}\n\t\treturn retained;\n\t}\n\tconst explicitTargetCohorts = new Set(releases.flatMap((release) => release.targetCohorts));\n\tconst cohortStates = [\n\t\tvoid 0,\n\t\t...Array.from({ length: 1e3 }, (_, index) => String(index + 1)),\n\t\t...[...explicitTargetCohorts].sort(),\n\t\t\"release-catalog-non-targeted-cohort\"\n\t].map((cohort) => {\n\t\tconst normalized = cohort === void 0 ? void 0 : normalizeCohortValue(cohort);\n\t\treturn {\n\t\t\tisCustom: normalized !== void 0 && isCustomCohort(normalized),\n\t\t\tnormalized,\n\t\t\tnumeric: normalized === void 0 ? null : getNumericCohortValue(normalized),\n\t\t\tbundleIds: /* @__PURE__ */ new Set(),\n\t\t\tembedded: false,\n\t\t\tcomplete: false\n\t\t};\n\t});\n\tconst stateIndexesByCohort = /* @__PURE__ */ new Map();\n\tconst fullRolloutStateIndexes = [];\n\tfor (const [index, state] of cohortStates.entries()) {\n\t\tif (state.normalized !== void 0) {\n\t\t\tconst indexes = stateIndexesByCohort.get(state.normalized) ?? [];\n\t\t\tindexes.push(index);\n\t\t\tstateIndexesByCohort.set(state.normalized, indexes);\n\t\t}\n\t\tif (state.normalized === void 0 || state.numeric !== null || state.isCustom) fullRolloutStateIndexes.push(index);\n\t}\n\tconst retained = /* @__PURE__ */ new Set();\n\tlet incompleteStateCount = cohortStates.length;\n\tfor (const release of releases) {\n\t\tconst rolloutCohortCount = normalizeRolloutCohortCount(release.rolloutCohortCount);\n\t\tconst eligibleStateIndexes = /* @__PURE__ */ new Set();\n\t\tif (rolloutCohortCount >= NUMERIC_COHORT_SIZE) for (const index of fullRolloutStateIndexes) eligibleStateIndexes.add(index);\n\t\telse if (rolloutCohortCount > 0) for (const numericCohort of getRolledOutNumericCohorts(release.id, rolloutCohortCount)) for (const index of stateIndexesByCohort.get(String(numericCohort)) ?? []) eligibleStateIndexes.add(index);\n\t\tfor (const targetCohort of new Set(release.targetCohorts.map(normalizeCohortValue))) for (const index of stateIndexesByCohort.get(targetCohort) ?? []) eligibleStateIndexes.add(index);\n\t\tfor (const index of eligibleStateIndexes) {\n\t\t\tconst state = cohortStates[index];\n\t\t\tif (state.complete) continue;\n\t\t\tif (release.kind === \"EMBEDDED\") {\n\t\t\t\tif (!state.embedded) {\n\t\t\t\t\tstate.embedded = true;\n\t\t\t\t\tretained.add(release.id);\n\t\t\t\t}\n\t\t\t} else if (release.bundleId !== null && state.bundleIds.size < 11 && !state.bundleIds.has(release.bundleId)) {\n\t\t\t\tstate.bundleIds.add(release.bundleId);\n\t\t\t\tretained.add(release.id);\n\t\t\t}\n\t\t\tif (state.embedded && state.bundleIds.size >= 11) {\n\t\t\t\tstate.complete = true;\n\t\t\t\tincompleteStateCount -= 1;\n\t\t\t}\n\t\t}\n\t\tif (incompleteStateCount === 0) break;\n\t}\n\treturn retained;\n}\nfunction intervalContainsSegment(interval, segment) {\n\tif (interval.lower !== null) {\n\t\tif (segment.lower === null) return false;\n\t\tconst compared = compareBounds(segment.lower.version, interval.lower.version);\n\t\tif (compared < 0 || compared === 0 && segment.lower.inclusive && !interval.lower.inclusive) return false;\n\t}\n\tif (interval.upper !== null) {\n\t\tif (segment.upper === null) return false;\n\t\tconst compared = compareBounds(segment.upper.version, interval.upper.version);\n\t\tif (compared > 0 || compared === 0 && segment.upper.inclusive && !interval.upper.inclusive) return false;\n\t}\n\treturn true;\n}\nfunction atomicVersionSegments(intervals) {\n\tconst endpoints = [...new Set(intervals.flatMap((interval) => [interval.lower?.version, interval.upper?.version].filter((version) => version !== void 0)))].sort(compareBounds);\n\tif (endpoints.length === 0) return [{\n\t\tlower: null,\n\t\tupper: null\n\t}];\n\tconst segments = [{\n\t\tlower: null,\n\t\tupper: {\n\t\t\tinclusive: false,\n\t\t\tversion: endpoints[0]\n\t\t}\n\t}];\n\tfor (let index = 0; index < endpoints.length; index += 1) {\n\t\tconst endpoint = endpoints[index];\n\t\tsegments.push({\n\t\t\tlower: {\n\t\t\t\tinclusive: true,\n\t\t\t\tversion: endpoint\n\t\t\t},\n\t\t\tupper: {\n\t\t\t\tinclusive: true,\n\t\t\t\tversion: endpoint\n\t\t\t}\n\t\t});\n\t\tconst next = endpoints[index + 1];\n\t\tif (next !== void 0) segments.push({\n\t\t\tlower: {\n\t\t\t\tinclusive: false,\n\t\t\t\tversion: endpoint\n\t\t\t},\n\t\t\tupper: {\n\t\t\t\tinclusive: false,\n\t\t\t\tversion: next\n\t\t\t}\n\t\t});\n\t}\n\tsegments.push({\n\t\tlower: {\n\t\t\tinclusive: false,\n\t\t\tversion: endpoints.at(-1)\n\t\t},\n\t\tupper: null\n\t});\n\treturn segments;\n}\nfunction sameIndexes(left, right) {\n\treturn left.length === right.length && left.every((value, index) => value === right[index]);\n}\nfunction mergeSegments(segments) {\n\tconst merged = [];\n\tfor (const segment of segments) {\n\t\tconst previous = merged.at(-1);\n\t\tif (previous && sameIndexes(previous.releaseIndexes, segment.releaseIndexes) && sameIndexes(previous.rollbackReleaseIndexes, segment.rollbackReleaseIndexes)) merged[merged.length - 1] = {\n\t\t\t...previous,\n\t\t\tupper: segment.upper\n\t\t};\n\t\telse merged.push(segment);\n\t}\n\treturn merged;\n}\nfunction compileAppVersion(releases) {\n\tconst ranges = /* @__PURE__ */ new Map();\n\tfor (const release of releases) ranges.set(release.id, rangeToIntervals(release.targetAppVersion));\n\tconst segmentReleases = atomicVersionSegments([...ranges.values()].flat()).map((segment) => {\n\t\tconst applicable = releases.filter((release) => ranges.get(release.id).some((range) => intervalContainsSegment(range, segment)));\n\t\treturn {\n\t\t\trollbackIds: new Set(applicable.map(({ id }) => id)),\n\t\t\tsegment,\n\t\t\tretainedIds: collectFrontierReleaseIds(applicable)\n\t\t};\n\t});\n\tconst retainedIds = new Set(segmentReleases.flatMap(({ retainedIds, rollbackIds }) => [...retainedIds, ...rollbackIds]));\n\tconst retainedReleases = releases.filter((release) => retainedIds.has(release.id));\n\tconst descriptorIndex = new Map(retainedReleases.map((release, index) => [release.id, index]));\n\treturn {\n\t\tenvelope: {\n\t\t\tfallbackPolicy: RELEASE_CATALOG_FALLBACK_POLICY,\n\t\t\tschemaVersion: RELEASE_CATALOG_SCHEMA_VERSION,\n\t\t\tsegments: mergeSegments(segmentReleases.map(({ segment, retainedIds, rollbackIds }) => ({\n\t\t\t\t...segment,\n\t\t\t\treleaseIndexes: releases.filter((release) => retainedIds.has(release.id)).map((release) => descriptorIndex.get(release.id)).filter((index) => index !== void 0),\n\t\t\t\trollbackReleaseIndexes: releases.filter((release) => rollbackIds.has(release.id)).map((release) => descriptorIndex.get(release.id)).filter((index) => index !== void 0)\n\t\t\t})).filter((segment) => segment.releaseIndexes.length > 0 || segment.rollbackReleaseIndexes.length > 0)),\n\t\t\tstrategy: \"APP_VERSION\"\n\t\t},\n\t\tretainedReleases\n\t};\n}\nfunction compileFingerprint(releases) {\n\tconst retainedIds = collectFrontierReleaseIds(releases);\n\tconst retainedReleases = releases;\n\treturn {\n\t\tenvelope: {\n\t\t\tfallbackPolicy: RELEASE_CATALOG_FALLBACK_POLICY,\n\t\t\treleaseIndexes: retainedReleases.map((release, index) => retainedIds.has(release.id) ? index : -1).filter((index) => index >= 0),\n\t\t\trollbackReleaseIndexes: retainedReleases.map((_, index) => index),\n\t\t\tschemaVersion: RELEASE_CATALOG_SCHEMA_VERSION,\n\t\t\tstrategy: \"FINGERPRINT\"\n\t\t},\n\t\tretainedReleases\n\t};\n}\nasync function sha256(value) {\n\tconst digest = await globalThis.crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(value));\n\treturn `sha256:${[...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\nfunction canonicalStringify(value) {\n\tif (value === null || typeof value !== \"object\") return JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map(canonicalStringify).join(\",\")}]`;\n\tconst record = value;\n\treturn `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalStringify(record[key])}`).join(\",\")}}`;\n}\nasync function compileReleaseCatalog(input) {\n\tconst releases = validateReleases(input.releases, input.strategy);\n\tconst targetCohorts = new Set(releases.flatMap((release) => release.targetCohorts));\n\tif (targetCohorts.size > MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE) throw new ReleaseCatalogCompilationError(\"DISTINCT_TARGET_COHORT_LIMIT\", `Scope exceeds ${MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE} distinct target cohorts`);\n\tconst { envelope, retainedReleases } = input.strategy === \"APP_VERSION\" ? compileAppVersion(releases) : compileFingerprint(releases);\n\tconst payload = {\n\t\t...envelope,\n\t\treleaseDescriptors: retainedReleases.map(releaseDescriptor)\n\t};\n\tconst canonicalPayload = canonicalStringify(payload);\n\tconst byteSize = new TextEncoder().encode(canonicalPayload).byteLength;\n\tif (byteSize > MAX_COMPILED_CATALOG_BYTES) throw new ReleaseCatalogCompilationError(\"CATALOG_OVERSIZE\", `Compiled Release catalog is ${byteSize} bytes; maximum is ${MAX_COMPILED_CATALOG_BYTES}`);\n\treturn {\n\t\tbyteSize,\n\t\tcanonicalPayload,\n\t\tcatalogHash: await sha256(canonicalPayload),\n\t\tdiagnostics: {\n\t\t\tbyteSize,\n\t\t\tdescriptorCount: payload.releaseDescriptors.length,\n\t\t\tdistinctTargetCohortCount: targetCohorts.size,\n\t\t\treleaseCount: releases.length,\n\t\t\tsegmentCount: payload.strategy === \"APP_VERSION\" ? payload.segments.length : 1\n\t\t},\n\t\tpayload\n\t};\n}\nfunction versionInSegment(version, segment) {\n\tif (segment.lower !== null) {\n\t\tconst compared = compareBounds(version, segment.lower.version);\n\t\tif (compared < 0 || compared === 0 && !segment.lower.inclusive) return false;\n\t}\n\tif (segment.upper !== null) {\n\t\tconst compared = compareBounds(version, segment.upper.version);\n\t\tif (compared > 0 || compared === 0 && !segment.upper.inclusive) return false;\n\t}\n\treturn true;\n}\nfunction canonicalizeAppVersion(appVersion) {\n\treturn coerce(appVersion);\n}\nfunction projectCompiledCatalog(catalog, appVersion) {\n\tlet indexes;\n\tif (catalog.strategy === \"FINGERPRINT\") indexes = catalog.releaseIndexes;\n\telse {\n\t\tconst canonicalVersion = appVersion && canonicalizeAppVersion(appVersion);\n\t\tif (!canonicalVersion) return [];\n\t\tindexes = catalog.segments.find((segment) => versionInSegment(canonicalVersion, segment))?.releaseIndexes ?? [];\n\t}\n\treturn indexes.map((index) => catalog.releaseDescriptors[index]);\n}\nfunction projectCompiledRollbackCatalog(catalog, appVersion) {\n\tlet indexes;\n\tif (catalog.strategy === \"FINGERPRINT\") indexes = catalog.rollbackReleaseIndexes ?? catalog.releaseIndexes;\n\telse {\n\t\tconst canonicalVersion = appVersion && canonicalizeAppVersion(appVersion);\n\t\tif (!canonicalVersion) return [];\n\t\tconst segment = catalog.segments.find((candidate) => versionInSegment(canonicalVersion, candidate));\n\t\tindexes = segment?.rollbackReleaseIndexes ?? segment?.releaseIndexes ?? [];\n\t}\n\treturn indexes.map((index) => catalog.releaseDescriptors[index]);\n}\nfunction referenceCompatibleReleases(releases, appVersion) {\n\tconst canonicalVersion = canonicalizeAppVersion(appVersion);\n\tif (!canonicalVersion) return [];\n\treturn releases.filter((release) => release.enabled && release.targetAppVersion !== null && satisfies(canonicalVersion, release.targetAppVersion));\n}\n//#endregion\nexport { ReleaseCatalogCompilationError, canonicalizeAppVersion, compileReleaseCatalog, projectCompiledCatalog, projectCompiledRollbackCatalog, referenceCompatibleReleases };\n", "import { createUUIDv7 } from \"./uuidv7.mjs\";\nimport { releaseRowToRelease } from \"./databaseRows.mjs\";\nimport { compileReleaseCatalog } from \"./releaseCatalogCompiler.mjs\";\nimport { createReleaseCatalogScopeKey, encodeChannelKey } from \"@hot-updater/core\";\n//#region src/releaseCatalogMutation.ts\nconst RELEASE_PAGE_SIZE = 1e3;\nconst DEFAULT_MAX_ATTEMPTS = 3;\nvar ReleaseCatalogMutationError = class extends Error {\n\tname = \"ReleaseCatalogMutationError\";\n\tconstructor(code, message) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n};\nconst readScopeReleases = async (database, scopeKey) => {\n\tconst releases = [];\n\tlet afterReleaseId;\n\tfor (;;) {\n\t\tconst page = await database.models.releases.findManyByScope({\n\t\t\tscopeKey,\n\t\t\t...afterReleaseId === void 0 ? {} : { afterReleaseId },\n\t\t\tlimit: RELEASE_PAGE_SIZE,\n\t\t\tconsistency: \"strong\"\n\t\t});\n\t\tfor (const row of page) {\n\t\t\tif (row.scope_key !== scopeKey) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release \"${row.id}\" was returned for the wrong catalog scope`);\n\t\t\tif (releases.at(-1)?.id === row.id) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release \"${row.id}\" was returned more than once`);\n\t\t\treleases.push(row);\n\t\t}\n\t\tif (page.length < RELEASE_PAGE_SIZE) return releases;\n\t\tconst next = page.at(-1)?.id;\n\t\tif (next === void 0 || next === afterReleaseId) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", \"Release scope paging did not advance\");\n\t\tafterReleaseId = next;\n\t}\n};\nconst validateScope = (scope) => {\n\tconst channelKey = encodeChannelKey(scope.channelName);\n\tif (scope.strategy === \"FINGERPRINT\" !== (scope.fingerprintHash !== null)) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", \"Release catalog strategy and fingerprint are inconsistent\");\n\tconst expectedScopeKey = scope.strategy === \"APP_VERSION\" ? createReleaseCatalogScopeKey({\n\t\tchannelKey,\n\t\tplatform: scope.platform,\n\t\tstrategy: \"APP_VERSION\"\n\t}) : createReleaseCatalogScopeKey({\n\t\tchannelKey,\n\t\tfingerprintHash: scope.fingerprintHash ?? \"\",\n\t\tplatform: scope.platform,\n\t\tstrategy: \"FINGERPRINT\"\n\t});\n\tif (scope.scopeKey !== expectedScopeKey) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", \"Release catalog scope metadata is inconsistent\");\n};\nconst applyMutation = (rows, scope, mutation) => {\n\tconst currentIndex = mutation.operation === \"insert\" ? -1 : rows.findIndex(({ id }) => id === mutation.id);\n\tconst current = currentIndex < 0 ? void 0 : rows[currentIndex];\n\tif (mutation.operation === \"insert\") {\n\t\tconst latestId = rows.at(-1)?.id;\n\t\tif (mutation.row.scope_key !== scope.scopeKey || mutation.row.channel_id !== scope.channelId || mutation.row.platform !== scope.platform || mutation.row.strategy !== scope.strategy || mutation.row.fingerprint_hash !== scope.fingerprintHash || mutation.row.revision !== 1) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", \"Inserted Release does not match its catalog scope\");\n\t\tif (latestId !== void 0 && mutation.row.id <= latestId) throw new ReleaseCatalogMutationError(\"NON_MONOTONIC_RELEASE_ID\", `Release \"${mutation.row.id}\" must sort after \"${latestId}\"`);\n\t\treturn {\n\t\t\tchange: {\n\t\t\t\tmodel: \"releases\",\n\t\t\t\toperation: \"insert\",\n\t\t\t\trow: mutation.row\n\t\t\t},\n\t\t\texpectedRevision: null,\n\t\t\tnextRows: [...rows, mutation.row],\n\t\t\trelease: mutation.row\n\t\t};\n\t}\n\tif (current === void 0) throw new ReleaseCatalogMutationError(\"RELEASE_NOT_FOUND\", `Release \"${mutation.id}\" was not found in scope \"${scope.scopeKey}\"`);\n\tif (mutation.operation === \"delete\") return {\n\t\tchange: {\n\t\t\tmodel: \"releases\",\n\t\t\toperation: \"delete\",\n\t\t\twhere: { id: mutation.id }\n\t\t},\n\t\texpectedRevision: current.revision,\n\t\tnextRows: rows.filter(({ id }) => id !== mutation.id),\n\t\trelease: null\n\t};\n\tconst release = {\n\t\t...current,\n\t\t...mutation.update,\n\t\trevision: current.revision + 1\n\t};\n\treturn {\n\t\tchange: {\n\t\t\tmodel: \"releases\",\n\t\t\toperation: \"update\",\n\t\t\twhere: { id: mutation.id },\n\t\t\tupdate: {\n\t\t\t\t...mutation.update,\n\t\t\t\trevision: release.revision\n\t\t\t}\n\t\t},\n\t\texpectedRevision: current.revision,\n\t\tnextRows: rows.map((row) => row.id === release.id ? release : row),\n\t\trelease\n\t};\n};\nconst catalogIdentity = (current, rows) => {\n\tif (current !== null) return current.catalog_id;\n\tif (rows.length > 0) throw new ReleaseCatalogMutationError(\"CATALOG_IDENTITY_MISSING\", \"Catalog history is missing. Restore its catalog row from backup before rebuilding or deploying.\");\n\treturn createUUIDv7();\n};\nconst readCatalogScope = async (database, scopeKey) => {\n\tlet currentCatalog = await database.models.releaseCatalogs.findByScopeKey(scopeKey);\n\tlet rows = await readScopeReleases(database, scopeKey);\n\tif (currentCatalog === null && rows.length > 0) {\n\t\tcurrentCatalog = await database.models.releaseCatalogs.findByScopeKey(scopeKey);\n\t\tif (currentCatalog !== null) rows = await readScopeReleases(database, scopeKey);\n\t}\n\treturn {\n\t\tcurrentCatalog,\n\t\trows\n\t};\n};\nconst prepareReleaseCatalogMutation = async (database, mutationInput) => {\n\tconst { rows, currentCatalog } = await readCatalogScope(database, mutationInput.scope.scopeKey);\n\tconst applied = applyMutation(rows, mutationInput.scope, mutationInput.mutation);\n\tconst compilation = await compileReleaseCatalog({\n\t\tstrategy: mutationInput.scope.strategy,\n\t\treleases: applied.nextRows.map(releaseRowToRelease)\n\t});\n\tconst generation = (currentCatalog?.generation ?? 0) + 1;\n\tif (!Number.isSafeInteger(generation)) throw new ReleaseCatalogMutationError(\"CATALOG_GENERATION_EXHAUSTED\", `Catalog \"${mutationInput.scope.scopeKey}\" exhausted its generation counter`);\n\treturn {\n\t\tapplied,\n\t\tcatalog: {\n\t\t\tscope_key: mutationInput.scope.scopeKey,\n\t\t\tcatalog_id: catalogIdentity(currentCatalog, rows),\n\t\t\tstrategy: mutationInput.scope.strategy,\n\t\t\tchannel_id: mutationInput.scope.channelId,\n\t\t\tchannel_key: encodeChannelKey(mutationInput.scope.channelName),\n\t\t\tplatform: mutationInput.scope.platform,\n\t\t\tfingerprint_hash: mutationInput.scope.fingerprintHash,\n\t\t\tgeneration,\n\t\t\tpayload: compilation.canonicalPayload,\n\t\t\tcatalog_hash: compilation.catalogHash,\n\t\t\tbyte_size: compilation.byteSize,\n\t\t\tis_tombstone: compilation.payload.releaseDescriptors.length === 0,\n\t\t\tupdated_at_ms: mutationInput.updatedAtMs ?? Date.now()\n\t\t},\n\t\tcompilation,\n\t\tcurrentCatalog,\n\t\tmutationInput\n\t};\n};\nasync function preflightReleaseCatalogMutation(input) {\n\tvalidateScope(input.scope);\n\tconst prepared = await prepareReleaseCatalogMutation(input.database, input);\n\treturn {\n\t\tcatalog: prepared.catalog,\n\t\tcurrentCatalog: prepared.currentCatalog,\n\t\tdiagnostics: prepared.compilation.diagnostics,\n\t\texpectedReleaseRevision: prepared.applied.expectedRevision,\n\t\trelease: prepared.applied.release\n\t};\n}\nasync function commitReleaseCatalogMutations(input) {\n\tif (input.mutations.length === 0) return [];\n\tconst scopeKeys = /* @__PURE__ */ new Set();\n\tfor (const mutation of input.mutations) {\n\t\tvalidateScope(mutation.scope);\n\t\tif (scopeKeys.has(mutation.scope.scopeKey)) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `A batch cannot mutate catalog scope \"${mutation.scope.scopeKey}\" more than once`);\n\t\tscopeKeys.add(mutation.scope.scopeKey);\n\t}\n\tconst maxAttempts = input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n\tif (!Number.isSafeInteger(maxAttempts) || maxAttempts <= 0) throw new RangeError(\"maxAttempts must be a positive safe integer\");\n\tfor (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n\t\tconst prepared = await Promise.all(input.mutations.map((mutationInput) => prepareReleaseCatalogMutation(input.database, mutationInput)));\n\t\tconst result = await input.database.commit({\n\t\t\texpectations: prepared.flatMap(({ applied, currentCatalog, mutationInput }) => [{\n\t\t\t\tmodel: \"releases\",\n\t\t\t\tid: mutationInput.mutation.operation === \"insert\" ? mutationInput.mutation.row.id : mutationInput.mutation.id,\n\t\t\t\trevision: applied.expectedRevision\n\t\t\t}, {\n\t\t\t\tmodel: \"releaseCatalogs\",\n\t\t\t\tscopeKey: mutationInput.scope.scopeKey,\n\t\t\t\tgeneration: currentCatalog?.generation ?? null\n\t\t\t}]),\n\t\t\tchanges: prepared.flatMap(({ applied, catalog, mutationInput }) => [\n\t\t\t\t...mutationInput.companionChanges ?? [],\n\t\t\t\tapplied.change,\n\t\t\t\t{\n\t\t\t\t\tmodel: \"releaseCatalogs\",\n\t\t\t\t\toperation: \"put\",\n\t\t\t\t\trow: catalog\n\t\t\t\t},\n\t\t\t\t...mutationInput.trailingChanges ?? []\n\t\t\t])\n\t\t});\n\t\tif (result.committed) return prepared.map(({ applied, catalog }) => ({\n\t\t\tattempts: attempt,\n\t\t\tcatalog,\n\t\t\trelease: applied.release\n\t\t}));\n\t\tif (result.conflict.reason !== \"version_conflict\") throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release mutation failed: ${result.conflict.reason}`);\n\t}\n\tthrow new ReleaseCatalogMutationError(\"VERSION_CONFLICT\", `Release catalog mutation batch conflicted ${maxAttempts} times`);\n}\nasync function commitReleaseCatalogMutation(input) {\n\tconst [result] = await commitReleaseCatalogMutations({\n\t\tdatabase: input.database,\n\t\tmaxAttempts: input.maxAttempts,\n\t\tmutations: [input]\n\t});\n\treturn result;\n}\nconst catalogProjectionMatches = (current, scope, compilation) => current.strategy === scope.strategy && current.channel_id === scope.channelId && current.channel_key === encodeChannelKey(scope.channelName) && current.platform === scope.platform && current.fingerprint_hash === scope.fingerprintHash && current.payload === compilation.canonicalPayload && current.catalog_hash === compilation.catalogHash && current.byte_size === compilation.byteSize && current.is_tombstone === (compilation.payload.releaseDescriptors.length === 0);\nasync function preflightReleaseCatalogRebuild(input) {\n\tvalidateScope(input.scope);\n\tconst { rows, currentCatalog } = await readCatalogScope(input.database, input.scope.scopeKey);\n\tconst compilation = await compileReleaseCatalog({\n\t\treleases: rows.map(releaseRowToRelease),\n\t\tstrategy: input.scope.strategy\n\t});\n\tconst changed = currentCatalog === null || !catalogProjectionMatches(currentCatalog, input.scope, compilation);\n\tconst generation = changed ? (currentCatalog?.generation ?? 0) + 1 : currentCatalog.generation;\n\tif (!Number.isSafeInteger(generation)) throw new ReleaseCatalogMutationError(\"CATALOG_GENERATION_EXHAUSTED\", `Catalog \"${input.scope.scopeKey}\" exhausted its generation counter`);\n\treturn {\n\t\tchanged,\n\t\tcurrentCatalog,\n\t\tdiagnostics: compilation.diagnostics,\n\t\tprojectedCatalog: {\n\t\t\tcatalog_id: catalogIdentity(currentCatalog, rows),\n\t\t\tbyte_size: compilation.byteSize,\n\t\t\tcatalog_hash: compilation.catalogHash,\n\t\t\tchannel_id: input.scope.channelId,\n\t\t\tchannel_key: encodeChannelKey(input.scope.channelName),\n\t\t\tfingerprint_hash: input.scope.fingerprintHash,\n\t\t\tgeneration,\n\t\t\tis_tombstone: compilation.payload.releaseDescriptors.length === 0,\n\t\t\tpayload: compilation.canonicalPayload,\n\t\t\tplatform: input.scope.platform,\n\t\t\tscope_key: input.scope.scopeKey,\n\t\t\tstrategy: input.scope.strategy,\n\t\t\tupdated_at_ms: changed || currentCatalog === null ? input.updatedAtMs ?? Date.now() : currentCatalog.updated_at_ms\n\t\t}\n\t};\n}\nasync function rebuildReleaseCatalog(input) {\n\tvalidateScope(input.scope);\n\tconst maxAttempts = input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;\n\tif (!Number.isSafeInteger(maxAttempts) || maxAttempts <= 0) throw new RangeError(\"maxAttempts must be a positive safe integer\");\n\tfor (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n\t\tconst { rows, currentCatalog } = await readCatalogScope(input.database, input.scope.scopeKey);\n\t\tconst compilation = await compileReleaseCatalog({\n\t\t\treleases: rows.map(releaseRowToRelease),\n\t\t\tstrategy: input.scope.strategy\n\t\t});\n\t\tif (currentCatalog !== null && catalogProjectionMatches(currentCatalog, input.scope, compilation)) return {\n\t\t\tattempts: attempt,\n\t\t\tcatalog: currentCatalog,\n\t\t\tchanged: false,\n\t\t\tdiagnostics: compilation.diagnostics\n\t\t};\n\t\tconst generation = (currentCatalog?.generation ?? 0) + 1;\n\t\tif (!Number.isSafeInteger(generation)) throw new ReleaseCatalogMutationError(\"CATALOG_GENERATION_EXHAUSTED\", `Catalog \"${input.scope.scopeKey}\" exhausted its generation counter`);\n\t\tconst catalog = {\n\t\t\tcatalog_id: catalogIdentity(currentCatalog, rows),\n\t\t\tbyte_size: compilation.byteSize,\n\t\t\tcatalog_hash: compilation.catalogHash,\n\t\t\tchannel_id: input.scope.channelId,\n\t\t\tchannel_key: encodeChannelKey(input.scope.channelName),\n\t\t\tfingerprint_hash: input.scope.fingerprintHash,\n\t\t\tgeneration,\n\t\t\tis_tombstone: compilation.payload.releaseDescriptors.length === 0,\n\t\t\tpayload: compilation.canonicalPayload,\n\t\t\tplatform: input.scope.platform,\n\t\t\tscope_key: input.scope.scopeKey,\n\t\t\tstrategy: input.scope.strategy,\n\t\t\tupdated_at_ms: input.updatedAtMs ?? Date.now()\n\t\t};\n\t\tconst result = await input.database.commit({\n\t\t\tchanges: [{\n\t\t\t\tmodel: \"releaseCatalogs\",\n\t\t\t\toperation: \"put\",\n\t\t\t\trow: catalog\n\t\t\t}],\n\t\t\texpectations: [{\n\t\t\t\tgeneration: currentCatalog?.generation ?? null,\n\t\t\t\tmodel: \"releaseCatalogs\",\n\t\t\t\tscopeKey: input.scope.scopeKey\n\t\t\t}]\n\t\t});\n\t\tif (result.committed) return {\n\t\t\tattempts: attempt,\n\t\t\tcatalog,\n\t\t\tchanged: true,\n\t\t\tdiagnostics: compilation.diagnostics\n\t\t};\n\t\tif (result.conflict.reason !== \"version_conflict\") throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release catalog rebuild failed: ${result.conflict.reason}`);\n\t}\n\tthrow new ReleaseCatalogMutationError(\"VERSION_CONFLICT\", `Release catalog rebuild conflicted ${maxAttempts} times`);\n}\n//#endregion\nexport { ReleaseCatalogMutationError, commitReleaseCatalogMutation, commitReleaseCatalogMutations, preflightReleaseCatalogMutation, preflightReleaseCatalogRebuild, rebuildReleaseCatalog };\n", "import { createUUIDv7After, isUUIDv7 as isUUIDv7$1 } from \"./uuidv7.mjs\";\nimport { ReleaseCatalogMutationError, commitReleaseCatalogMutation, commitReleaseCatalogMutations, preflightReleaseCatalogMutation } from \"./releaseCatalogMutation.mjs\";\nimport { createReleaseCatalogScopeKey, decodeChannelKey, encodeChannelKey } from \"@hot-updater/core\";\n//#region src/releaseManagement.ts\nconst RELEASE_PAGE_SIZE = 1e3;\nvar ReleaseManagementError = class extends Error {\n\tname = \"ReleaseManagementError\";\n\tconstructor(code, message) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n};\nconst readReleaseScope = async (database, scopeKey) => {\n\tconst rows = [];\n\tlet afterReleaseId;\n\tfor (;;) {\n\t\tconst page = await database.models.releases.findManyByScope({\n\t\t\tscopeKey,\n\t\t\t...afterReleaseId === void 0 ? {} : { afterReleaseId },\n\t\t\tconsistency: \"strong\",\n\t\t\tlimit: RELEASE_PAGE_SIZE\n\t\t});\n\t\trows.push(...page);\n\t\tif (page.length < RELEASE_PAGE_SIZE) return rows;\n\t\tconst nextCursor = page.at(-1)?.id;\n\t\tif (nextCursor === void 0 || nextCursor === afterReleaseId) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release paging did not advance for scope \"${scopeKey}\".`);\n\t\tafterReleaseId = nextCursor;\n\t}\n};\nconst createForwardReleaseId = (rows, candidates, nowMs) => {\n\treturn createUUIDv7After([...candidates, rows.at(-1)?.id ?? null].filter((value) => value !== null && isUUIDv7$1(value)).sort().at(-1) ?? null, nowMs);\n};\nconst prepareTargetScope = async ({ channelName, database, fingerprintHash, platform, strategy }) => {\n\tconst channelKey = encodeChannelKey(channelName);\n\tconst channel = (await database.models.channels.list({})).channels.find(({ name }) => name === channelName) ?? (await database.models.channels.insert({\n\t\trow: {\n\t\t\tid: `channel:${channelKey}`,\n\t\t\tname: channelName\n\t\t},\n\t\tonConflict: \"returnExisting\"\n\t})).row;\n\tconst scopeKey = strategy === \"APP_VERSION\" ? createReleaseCatalogScopeKey({\n\t\tchannelKey,\n\t\tplatform,\n\t\tstrategy\n\t}) : createReleaseCatalogScopeKey({\n\t\tchannelKey,\n\t\tfingerprintHash: fingerprintHash ?? \"\",\n\t\tplatform,\n\t\tstrategy\n\t});\n\treturn { scope: {\n\t\tchannelId: channel.id,\n\t\tchannelName,\n\t\tfingerprintHash,\n\t\tplatform,\n\t\tscopeKey,\n\t\tstrategy\n\t} };\n};\nconst loadReleaseTarget = async (input) => {\n\tconst release = await input.database.models.releases.findById(input.releaseId);\n\tif (release === null) throw new ReleaseManagementError(\"RELEASE_NOT_FOUND\", `Release \"${input.releaseId}\" was not found.`);\n\tif (input.expectedRevision !== void 0 && input.expectedRevision !== release.revision) throw new ReleaseManagementError(\"VERSION_CONFLICT\", `Release \"${release.id}\" is revision ${release.revision}; expected ${input.expectedRevision}.`);\n\tconst catalog = await input.database.models.releaseCatalogs.findByScopeKey(release.scope_key);\n\tif (catalog === null) throw new ReleaseCatalogMutationError(\"INVALID_SCOPE\", `Release \"${release.id}\" has no catalog projection.`);\n\treturn {\n\t\trelease,\n\t\tscope: {\n\t\t\tchannelId: release.channel_id,\n\t\t\tchannelName: decodeChannelKey(catalog.channel_key),\n\t\t\tfingerprintHash: release.fingerprint_hash,\n\t\t\tplatform: release.platform,\n\t\t\tscopeKey: release.scope_key,\n\t\t\tstrategy: release.strategy\n\t\t}\n\t};\n};\nconst releasePolicyUpdate = (release, patch, updatedAtMs) => {\n\tif (patch.fingerprintHash !== void 0 && patch.fingerprintHash !== release.fingerprint_hash) throw new ReleaseManagementError(\"SCOPE_MOVE_UNSUPPORTED\", \"Changing a fingerprint target requires an atomic Release scope move.\");\n\treturn {\n\t\t...patch.enabled === void 0 ? {} : { enabled: patch.enabled },\n\t\t...patch.message === void 0 ? {} : { message: patch.message },\n\t\t...patch.rolloutCohortCount === void 0 ? {} : { rollout_cohort_count: patch.rolloutCohortCount },\n\t\t...patch.shouldForceUpdate === void 0 ? {} : { should_force_update: patch.shouldForceUpdate },\n\t\t...patch.targetAppVersion === void 0 ? {} : { target_app_version: patch.targetAppVersion },\n\t\t...patch.targetCohorts === void 0 ? {} : { target_cohorts: [...patch.targetCohorts] },\n\t\tupdated_at_ms: updatedAtMs\n\t};\n};\nasync function updateReleasePolicy(input) {\n\tconst { release, scope } = await loadReleaseTarget(input);\n\tconst updatedAtMs = input.updatedAtMs ?? Date.now();\n\treturn commitReleaseCatalogMutation({\n\t\tdatabase: input.database,\n\t\tmutation: {\n\t\t\tid: release.id,\n\t\t\toperation: \"update\",\n\t\t\tupdate: releasePolicyUpdate(release, input.patch, updatedAtMs)\n\t\t},\n\t\tscope,\n\t\tupdatedAtMs\n\t});\n}\nasync function preflightReleasePolicy(input) {\n\tconst { release, scope } = await loadReleaseTarget(input);\n\tconst updatedAtMs = input.updatedAtMs ?? Date.now();\n\treturn preflightReleaseCatalogMutation({\n\t\tdatabase: input.database,\n\t\tmutation: {\n\t\t\tid: release.id,\n\t\t\toperation: \"update\",\n\t\t\tupdate: releasePolicyUpdate(release, input.patch, updatedAtMs)\n\t\t},\n\t\tscope,\n\t\tupdatedAtMs\n\t});\n}\nasync function deleteRelease(input) {\n\tconst { release, scope } = await loadReleaseTarget(input);\n\tif (release.enabled) throw new ReleaseManagementError(\"ENABLED_RELEASE\", `Disable Release \"${release.id}\" before hard deletion.`);\n\treturn commitReleaseCatalogMutation({\n\t\tdatabase: input.database,\n\t\tmutation: {\n\t\t\tid: release.id,\n\t\t\toperation: \"delete\"\n\t\t},\n\t\tscope,\n\t\tupdatedAtMs: input.updatedAtMs\n\t});\n}\nasync function promoteRelease(input) {\n\tconst { release: source, scope: sourceScope } = await loadReleaseTarget(input);\n\tif (source.kind !== \"BUNDLE\" || source.bundle_id === null) throw new ReleaseManagementError(\"TARGET_RELEASE_INVALID\", \"Only a Bundle Release can be promoted.\");\n\tconst targetChannel = input.targetChannel.trim();\n\tif (targetChannel.length === 0) throw new ReleaseManagementError(\"TARGET_RELEASE_INVALID\", \"Promotion requires a target channel.\");\n\tconst { scope: targetScope } = await prepareTargetScope({\n\t\tchannelName: targetChannel,\n\t\tdatabase: input.database,\n\t\tfingerprintHash: source.fingerprint_hash,\n\t\tplatform: source.platform,\n\t\tstrategy: source.strategy\n\t});\n\tif (targetScope.scopeKey === sourceScope.scopeKey) throw new ReleaseManagementError(\"TARGET_RELEASE_INVALID\", \"Source and target Release scopes are the same.\");\n\tconst targetRows = await readReleaseScope(input.database, targetScope.scopeKey);\n\tconst updatedAtMs = input.updatedAtMs ?? Date.now();\n\tconst targetMutation = {\n\t\tmutation: {\n\t\t\toperation: \"insert\",\n\t\t\trow: {\n\t\t\t\t...source,\n\t\t\t\tid: createForwardReleaseId(targetRows, [source.id, source.bundle_id], updatedAtMs),\n\t\t\t\trevision: 1,\n\t\t\t\tscope_key: targetScope.scopeKey,\n\t\t\t\tchannel_id: targetScope.channelId,\n\t\t\t\tenabled: true,\n\t\t\t\trollout_cohort_count: 1e3,\n\t\t\t\ttarget_cohorts: [],\n\t\t\t\toperation: \"PROMOTE\",\n\t\t\t\tsource_release_id: source.id,\n\t\t\t\tcreated_at_ms: updatedAtMs,\n\t\t\t\tupdated_at_ms: updatedAtMs\n\t\t\t}\n\t\t},\n\t\tscope: targetScope,\n\t\tupdatedAtMs\n\t};\n\tconst sourceMutation = input.action === \"move\" ? {\n\t\tmutation: {\n\t\t\tid: source.id,\n\t\t\toperation: \"update\",\n\t\t\tupdate: {\n\t\t\t\tenabled: false,\n\t\t\t\tupdated_at_ms: updatedAtMs\n\t\t\t}\n\t\t},\n\t\tscope: sourceScope,\n\t\tupdatedAtMs\n\t} : null;\n\tconst results = await commitReleaseCatalogMutations({\n\t\tdatabase: input.database,\n\t\tmutations: sourceMutation === null ? [targetMutation] : [sourceMutation, targetMutation]\n\t});\n\treturn {\n\t\tsource: sourceMutation === null ? null : results[0],\n\t\ttarget: results.at(-1)\n\t};\n}\nconst prepareRollbackRelease = async (input) => {\n\tconst { release: source, scope } = await loadReleaseTarget(input);\n\tif (!source.enabled) throw new ReleaseManagementError(\"TARGET_RELEASE_INVALID\", \"Rollback requires an enabled Release.\");\n\tconst updatedAtMs = input.updatedAtMs ?? Date.now();\n\treturn {\n\t\tmutation: {\n\t\t\tid: source.id,\n\t\t\toperation: \"update\",\n\t\t\tupdate: {\n\t\t\t\tenabled: false,\n\t\t\t\tupdated_at_ms: updatedAtMs\n\t\t\t}\n\t\t},\n\t\tscope,\n\t\tupdatedAtMs\n\t};\n};\nasync function rollbackReleases(input) {\n\tconst mutations = await Promise.all(input.rollbacks.map((rollback) => prepareRollbackRelease({\n\t\t...rollback,\n\t\tdatabase: input.database\n\t})));\n\treturn commitReleaseCatalogMutations({\n\t\tdatabase: input.database,\n\t\tmutations\n\t});\n}\nasync function rollbackRelease(input) {\n\tconst [result] = await rollbackReleases({\n\t\tdatabase: input.database,\n\t\trollbacks: [input]\n\t});\n\treturn result;\n}\n//#endregion\nexport { ReleaseManagementError, deleteRelease, preflightReleasePolicy, promoteRelease, rollbackRelease, rollbackReleases, updateReleasePolicy };\n", "//#region src/storageDownloadPath.ts\nconst encodeBase64Url = (value) => {\n\tlet binary = \"\";\n\tfor (const byte of new TextEncoder().encode(value)) binary += String.fromCharCode(byte);\n\treturn btoa(binary).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/, \"\");\n};\nconst decodeBase64Url = (value) => {\n\ttry {\n\t\tconst base64 = value.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n\t\tconst binary = atob(base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\"));\n\t\treturn new TextDecoder(void 0, { fatal: true }).decode(Uint8Array.from(binary, (character) => character.charCodeAt(0)));\n\t} catch {\n\t\treturn null;\n\t}\n};\nconst encodeBytes = (bytes) => {\n\tlet binary = \"\";\n\tfor (const byte of bytes) binary += String.fromCharCode(byte);\n\treturn btoa(binary).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/, \"\");\n};\nconst createStorageDownloadPath = (storageUri, signature) => `/storage/${encodeBase64Url(storageUri)}/${encodeURIComponent(signature)}`;\nconst parseStorageDownloadPath = (path) => {\n\tconst match = /^\\/storage\\/([^/]+)\\/([^/]+)$/.exec(path);\n\tif (!match) return null;\n\tconst storageUri = decodeBase64Url(match[1]);\n\tif (storageUri === null) return null;\n\ttry {\n\t\treturn {\n\t\t\tsignature: decodeURIComponent(match[2]),\n\t\t\tstorageUri\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n};\nconst createStorageDownloadUrl = (signingKey) => {\n\tconst key = crypto.subtle.importKey(\"raw\", new TextEncoder().encode(signingKey), {\n\t\thash: \"SHA-256\",\n\t\tname: \"HMAC\"\n\t}, false, [\"sign\"]);\n\treturn async ({ storageUri }) => {\n\t\treturn { url: createStorageDownloadPath(storageUri, encodeBytes(new Uint8Array(await crypto.subtle.sign(\"HMAC\", await key, new TextEncoder().encode(storageUri))))) };\n\t};\n};\n//#endregion\nexport { createStorageDownloadPath, createStorageDownloadUrl, parseStorageDownloadPath };\n", "import { requirePlatformParam, requireRouteParam } from \"./handlerParameters.mjs\";\nimport { canonicalizeAppVersion } from \"@hot-updater/plugin-core\";\n//#region src/handlerReleaseCatalogRoutes.ts\nconst CATALOG_CONTENT_TYPE = \"application/vnd.hot-updater.release-catalog+json; version=1\";\nconst ORIGIN_CACHE_TTL_MS = 5e3;\nconst ORIGIN_CACHE_MAX_ENTRIES = 128;\nconst privateNotFound = () => Response.json({ error: \"Not found\" }, {\n\tstatus: 404,\n\theaders: { \"cache-control\": \"private, no-store\" }\n});\nconst responseHash = async (body) => {\n\tconst digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(body));\n\treturn [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n};\nconst catalogResponse = async (catalog, request, clientAccessHeaderName) => {\n\tif (catalog === null) return privateNotFound();\n\tconst body = JSON.stringify(catalog);\n\tconst etag = `\"sha256:${await responseHash(body)}\"`;\n\tconst headers = {\n\t\t\"cache-control\": \"public, max-age=0, s-maxage=5\",\n\t\t\"content-type\": CATALOG_CONTENT_TYPE,\n\t\tetag,\n\t\tvary: `Accept-Encoding, ${clientAccessHeaderName}`\n\t};\n\tif (request.headers.get(\"if-none-match\") === etag) return new Response(null, {\n\t\theaders,\n\t\tstatus: 304\n\t});\n\treturn new Response(body, {\n\t\theaders,\n\t\tstatus: 200\n\t});\n};\nconst createReleaseCatalogRouteHandlers = (clientAccessHeaderName = \"x-api-key\") => {\n\tconst cache = /* @__PURE__ */ new Map();\n\tconst inFlight = /* @__PURE__ */ new Map();\n\tconst loadCatalog = async (key, load) => {\n\t\tconst cached = cache.get(key);\n\t\tif (cached !== void 0 && cached.expiresAt > Date.now()) {\n\t\t\tcache.delete(key);\n\t\t\tcache.set(key, cached);\n\t\t\treturn cached.catalog;\n\t\t}\n\t\tif (cached !== void 0) cache.delete(key);\n\t\tconst pending = inFlight.get(key);\n\t\tif (pending !== void 0) return pending;\n\t\tconst next = load().then((catalog) => {\n\t\t\tif (catalog !== null) {\n\t\t\t\tcache.set(key, {\n\t\t\t\t\tcatalog,\n\t\t\t\t\texpiresAt: Date.now() + ORIGIN_CACHE_TTL_MS\n\t\t\t\t});\n\t\t\t\twhile (cache.size > ORIGIN_CACHE_MAX_ENTRIES) {\n\t\t\t\t\tconst oldestKey = cache.keys().next().value;\n\t\t\t\t\tif (oldestKey === void 0) break;\n\t\t\t\t\tcache.delete(oldestKey);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn catalog;\n\t\t});\n\t\tinFlight.set(key, next);\n\t\ttry {\n\t\t\treturn await next;\n\t\t} finally {\n\t\t\tinFlight.delete(key);\n\t\t}\n\t};\n\treturn {\n\t\tappVersionReleaseCatalog: async (params, request, api) => {\n\t\t\tif (api.getReleaseCatalog === void 0) return privateNotFound();\n\t\t\tconst rawAppVersion = requireRouteParam(params, \"appVersion\");\n\t\t\tconst appVersion = canonicalizeAppVersion(rawAppVersion);\n\t\t\tif (appVersion === null || appVersion !== rawAppVersion) return Response.json({ error: \"Invalid app version\" }, {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { \"cache-control\": \"private, no-store\" }\n\t\t\t});\n\t\t\tconst input = {\n\t\t\t\tappVersion,\n\t\t\t\tchannelKey: requireRouteParam(params, \"channelKey\"),\n\t\t\t\tplatform: requirePlatformParam(params),\n\t\t\t\tstrategy: \"APP_VERSION\"\n\t\t\t};\n\t\t\treturn catalogResponse(await loadCatalog(`app-version:${JSON.stringify(input)}`, () => api.getReleaseCatalog(input)), request, clientAccessHeaderName);\n\t\t},\n\t\tfingerprintReleaseCatalog: async (params, request, api) => {\n\t\t\tif (api.getReleaseCatalog === void 0) return privateNotFound();\n\t\t\tconst input = {\n\t\t\t\tchannelKey: requireRouteParam(params, \"channelKey\"),\n\t\t\t\tfingerprintHash: requireRouteParam(params, \"fingerprintHash\"),\n\t\t\t\tplatform: requirePlatformParam(params),\n\t\t\t\tstrategy: \"FINGERPRINT\"\n\t\t\t};\n\t\t\treturn catalogResponse(await loadCatalog(`fingerprint:${JSON.stringify(input)}`, () => api.getReleaseCatalog(input)), request, clientAccessHeaderName);\n\t\t},\n\t\tartifact: async (params, _request, api) => {\n\t\t\tif (api.getArtifactInfo === void 0) return privateNotFound();\n\t\t\tconst info = await api.getArtifactInfo(requireRouteParam(params, \"targetBundleId\"), requireRouteParam(params, \"currentBundleId\"));\n\t\t\tif (info === null) return privateNotFound();\n\t\t\treturn new Response(JSON.stringify(info), {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t\"cache-control\": \"private, no-store\",\n\t\t\t\t\t\"content-type\": \"application/json\"\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n//#endregion\nexport { createReleaseCatalogRouteHandlers };\n", "import { HandlerBadRequestError } from \"./handlerErrors.mjs\";\nimport { decodeMaybe, requireRouteParam } from \"./handlerParameters.mjs\";\nimport { ReleaseCatalogMutationError, ReleaseManagementError } from \"@hot-updater/plugin-core\";\n//#region src/handlerReleaseManagementRoutes.ts\nconst unavailable = () => Response.json({ error: \"Not found\" }, { status: 404 });\nconst isRecord = (value) => typeof value === \"object\" && value !== null && !Array.isArray(value);\nconst parseRevision = (value) => {\n\tif (value === void 0 || value === null || value === \"\") return void 0;\n\tconst revision = typeof value === \"number\" ? value : Number(value);\n\tif (!Number.isSafeInteger(revision) || revision < 1) throw new HandlerBadRequestError(\"Invalid expected Release revision\");\n\treturn revision;\n};\nconst parsePolicyInput = async (request) => {\n\tconst body = await request.json();\n\tif (!isRecord(body) || !isRecord(body.patch)) throw new HandlerBadRequestError(\"Invalid Release policy mutation\");\n\treturn {\n\t\texpectedRevision: parseRevision(body.expectedRevision),\n\t\tpatch: body.patch\n\t};\n};\nconst mutationResponse = async (operation) => {\n\ttry {\n\t\treturn Response.json({ data: await operation() });\n\t} catch (error) {\n\t\tif (error instanceof ReleaseManagementError || error instanceof ReleaseCatalogMutationError) {\n\t\t\tconst status = error.code === \"RELEASE_NOT_FOUND\" ? 404 : error.code === \"VERSION_CONFLICT\" ? 409 : 400;\n\t\t\treturn Response.json({\n\t\t\t\tcode: error.code,\n\t\t\t\terror: error.message\n\t\t\t}, { status });\n\t\t}\n\t\tthrow error;\n\t}\n};\nconst createReleaseManagementRouteHandlers = () => ({\n\tgetRelease: async (params, _request, api) => {\n\t\tif (api.getReleaseById === void 0) return unavailable();\n\t\tconst row = await api.getReleaseById(requireRouteParam(params, \"id\"));\n\t\treturn row === null ? unavailable() : Response.json({ data: row }, { status: 200 });\n\t},\n\tgetReleases: async (_params, request, api) => {\n\t\tconst url = new URL(request.url);\n\t\tconst scopeKey = url.searchParams.get(\"scopeKey\");\n\t\tconst limit = Number(url.searchParams.get(\"limit\") ?? \"100\");\n\t\tif (!Number.isSafeInteger(limit) || limit <= 0 || limit > 1e3) throw new HandlerBadRequestError(\"Invalid Release scope query\");\n\t\tif (scopeKey !== null) {\n\t\t\tif (scopeKey.length === 0 || api.getReleasesByScope === void 0) throw new HandlerBadRequestError(\"Invalid Release scope query\");\n\t\t\tconst afterReleaseId = url.searchParams.get(\"afterReleaseId\") ?? void 0;\n\t\t\treturn Response.json({ data: await api.getReleasesByScope({\n\t\t\t\t...afterReleaseId === void 0 ? {} : { afterReleaseId },\n\t\t\t\tlimit,\n\t\t\t\tscopeKey\n\t\t\t}) });\n\t\t}\n\t\tif (api.getReleases === void 0) return unavailable();\n\t\tconst enabledValue = url.searchParams.get(\"enabled\");\n\t\tconst enabled = enabledValue === null ? void 0 : enabledValue === \"true\" ? true : enabledValue === \"false\" ? false : null;\n\t\tconst platformValue = url.searchParams.get(\"platform\");\n\t\tconst platform = platformValue === null ? void 0 : platformValue === \"ios\" || platformValue === \"android\" ? platformValue : null;\n\t\tif (enabled === null || platform === null) throw new HandlerBadRequestError(\"Invalid Release list filter\");\n\t\treturn Response.json({ data: await api.getReleases({\n\t\t\tafterReleaseId: url.searchParams.get(\"afterReleaseId\") ?? void 0,\n\t\t\tbeforeReleaseId: url.searchParams.get(\"beforeReleaseId\") ?? void 0,\n\t\t\tbundleId: url.searchParams.get(\"bundleId\") ?? void 0,\n\t\t\tchannelId: url.searchParams.get(\"channelId\") ?? void 0,\n\t\t\tenabled,\n\t\t\tlimit,\n\t\t\tplatform,\n\t\t\ttargetAppVersion: url.searchParams.get(\"targetAppVersion\") ?? void 0\n\t\t}) });\n\t},\n\tgetReleaseCatalogRow: async (params, _request, api) => {\n\t\tif (api.getReleaseCatalogByScopeKey === void 0) return unavailable();\n\t\tconst row = await api.getReleaseCatalogByScopeKey(decodeMaybe(requireRouteParam(params, \"scopeKey\")) ?? \"\");\n\t\treturn row === null ? unavailable() : Response.json({ data: row }, { status: 200 });\n\t},\n\tgetReleaseCatalogs: async (_params, request, api) => {\n\t\tif (api.getReleaseCatalogs === void 0) return unavailable();\n\t\tconst url = new URL(request.url);\n\t\tconst limit = Number(url.searchParams.get(\"limit\") ?? \"100\");\n\t\tif (!Number.isSafeInteger(limit) || limit <= 0 || limit > 1e3) throw new HandlerBadRequestError(\"Invalid Release catalog list query\");\n\t\treturn Response.json({ data: await api.getReleaseCatalogs({\n\t\t\tafterScopeKey: url.searchParams.get(\"afterScopeKey\") ?? void 0,\n\t\t\tlimit\n\t\t}) });\n\t},\n\tupdateRelease: async (params, request, api) => {\n\t\tif (api.updateReleasePolicy === void 0) return unavailable();\n\t\tconst input = await parsePolicyInput(request);\n\t\treturn mutationResponse(() => api.updateReleasePolicy({\n\t\t\t...input,\n\t\t\treleaseId: requireRouteParam(params, \"id\")\n\t\t}));\n\t},\n\tpreflightRelease: async (params, request, api) => {\n\t\tif (api.preflightReleasePolicy === void 0) return unavailable();\n\t\tconst input = await parsePolicyInput(request);\n\t\treturn mutationResponse(() => api.preflightReleasePolicy({\n\t\t\t...input,\n\t\t\treleaseId: requireRouteParam(params, \"id\")\n\t\t}));\n\t},\n\tdeleteRelease: async (params, request, api) => {\n\t\tif (api.deleteRelease === void 0) return unavailable();\n\t\tconst releaseId = requireRouteParam(params, \"id\");\n\t\tconst url = new URL(request.url);\n\t\tif (url.searchParams.get(\"confirm\") !== releaseId) throw new HandlerBadRequestError(\"Release hard deletion requires confirm=<release-id>\");\n\t\treturn mutationResponse(() => api.deleteRelease({\n\t\t\texpectedRevision: parseRevision(url.searchParams.get(\"expectedRevision\")),\n\t\t\treleaseId\n\t\t}));\n\t},\n\trebuildReleaseCatalog: async (params, _request, api) => {\n\t\tif (api.rebuildReleaseCatalog === void 0) return unavailable();\n\t\treturn mutationResponse(() => api.rebuildReleaseCatalog(decodeMaybe(requireRouteParam(params, \"scopeKey\")) ?? \"\"));\n\t},\n\tcommitDatabase: async (_params, request, api) => {\n\t\tif (api.commitDatabase === void 0) return unavailable();\n\t\tconst input = await request.json();\n\t\treturn Response.json({ data: await api.commitDatabase(input) });\n\t}\n});\n//#endregion\nexport { createReleaseManagementRouteHandlers };\n", "//#region src/internalRouter.ts\nconst normalizePath = (path) => {\n\tif (!path) return \"/\";\n\tif (path === \"/\") return path;\n\tconst withLeadingSlash = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn withLeadingSlash.endsWith(\"/\") ? withLeadingSlash.slice(0, -1) : withLeadingSlash;\n};\nconst toSegments = (path) => {\n\tconst normalized = normalizePath(path);\n\treturn normalized === \"/\" ? [] : normalized.slice(1).split(\"/\");\n};\nfunction createRouter() {\n\treturn { routes: [] };\n}\nfunction addRoute(router, method, path, data) {\n\tconst segments = toSegments(path);\n\tconst paramNames = segments.filter((segment) => segment.startsWith(\":\")).map((segment) => segment.slice(1));\n\trouter.routes.push({\n\t\tdata,\n\t\tmethod: method.toUpperCase(),\n\t\tparamNames,\n\t\tsegments\n\t});\n}\nfunction findRoute(router, method, path) {\n\tconst normalizedMethod = method.toUpperCase();\n\tconst pathSegments = toSegments(path);\n\tfor (const route of router.routes) {\n\t\tif (route.method !== normalizedMethod) continue;\n\t\tif (route.segments.length !== pathSegments.length) continue;\n\t\tconst params = {};\n\t\tlet matched = true;\n\t\tfor (let index = 0; index < route.segments.length; index += 1) {\n\t\t\tconst routeSegment = route.segments[index];\n\t\t\tconst pathSegment = pathSegments[index];\n\t\t\tif (routeSegment.startsWith(\":\")) {\n\t\t\t\tparams[routeSegment.slice(1)] = pathSegment;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (routeSegment !== pathSegment) {\n\t\t\t\tmatched = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (matched) return {\n\t\t\tdata: route.data,\n\t\t\tparams\n\t\t};\n\t}\n}\n//#endregion\nexport { addRoute, createRouter, findRoute };\n", "import { createAnalyticsRouteHandlers, registerAnalyticsAdminRoutes, registerAnalyticsClientRoutes } from \"./analytics/routes.mjs\";\nimport { HandlerBadRequestError } from \"./handlerErrors.mjs\";\nimport { createBundleRouteHandlers } from \"./handlerBundleRoutes.mjs\";\nimport { createReleaseCatalogRouteHandlers } from \"./handlerReleaseCatalogRoutes.mjs\";\nimport { createReleaseManagementRouteHandlers } from \"./handlerReleaseManagementRoutes.mjs\";\nimport { createVersionRouteHandlers } from \"./handlerVersionRoutes.mjs\";\nimport { addRoute, createRouter, findRoute } from \"./internalRouter.mjs\";\n//#region src/handler.ts\nconst withPrivateNoStore = (response) => {\n\tconst headers = new Headers(response.headers);\n\theaders.set(\"cache-control\", \"private, no-store\");\n\treturn new Response(response.body, {\n\t\theaders,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText\n\t});\n};\nconst errorResponse = (error, status) => Response.json({ error }, {\n\theaders: { \"cache-control\": \"private, no-store\" },\n\tstatus\n});\nconst requiresApiKey = (handlerName) => handlerName === \"appVersionReleaseCatalog\" || handlerName === \"fingerprintReleaseCatalog\" || handlerName === \"artifact\" || handlerName === \"appendBundleEvent\";\nconst createRequestHandler = ({ api, apiKeyAuth, privateResponses = false, routeHandlers, router }) => async (request) => {\n\ttry {\n\t\tconst match = findRoute(router, request.method, new URL(request.url).pathname);\n\t\tif (!match) return errorResponse(\"Not found\", 404);\n\t\tif (apiKeyAuth !== void 0 && requiresApiKey(match.data)) {\n\t\t\tlet authenticated;\n\t\t\ttry {\n\t\t\t\tauthenticated = await apiKeyAuth.authenticate(request);\n\t\t\t} catch {\n\t\t\t\treturn errorResponse(\"Service unavailable\", 503);\n\t\t\t}\n\t\t\tif (!authenticated) return errorResponse(\"Unauthorized\", 401);\n\t\t}\n\t\tconst handler = routeHandlers[match.data];\n\t\tif (!handler) return errorResponse(\"Handler not found\", 500);\n\t\tconst response = await handler(match.params, request, api);\n\t\treturn privateResponses ? withPrivateNoStore(response) : response;\n\t} catch (error) {\n\t\tif (error instanceof HandlerBadRequestError) return errorResponse(error.message, 400);\n\t\tconsole.error(\"Hot Updater handler error:\", error);\n\t\treturn Response.json({ error: \"Internal server error\" }, {\n\t\t\theaders: { \"cache-control\": \"private, no-store\" },\n\t\t\tstatus: 500\n\t\t});\n\t}\n};\nconst createDownloadStorageRouteHandler = (downloadStorageObject) => async (params) => {\n\tconst token = params.token;\n\tconst signature = params.signature;\n\tif (!token || !signature) return errorResponse(\"Not found\", 404);\n\tconst response = await downloadStorageObject(token, signature);\n\tif (!response) return errorResponse(\"Not found\", 404);\n\tconst headers = new Headers(response.headers);\n\tif (!headers.has(\"cache-control\")) headers.set(\"cache-control\", \"public, max-age=31536000, immutable\");\n\treturn new Response(response.body, {\n\t\theaders,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText\n\t});\n};\nfunction createHandlers(api) {\n\treturn createHotUpdaterHandlers(api);\n}\nfunction createHotUpdaterHandlers(api, analytics, apiKeyAuth, downloadStorageObject) {\n\tconst routeHandlers = {\n\t\t...createVersionRouteHandlers(),\n\t\t...createReleaseCatalogRouteHandlers(apiKeyAuth?.headerName),\n\t\t...createReleaseManagementRouteHandlers(),\n\t\t...createBundleRouteHandlers(),\n\t\t...analytics === void 0 ? {} : createAnalyticsRouteHandlers(analytics),\n\t\t...downloadStorageObject === void 0 ? {} : { downloadStorageObject: createDownloadStorageRouteHandler(downloadStorageObject) }\n\t};\n\tconst clientRouter = createRouter();\n\tconst addClientRoute = (method, path, handler) => addRoute(clientRouter, method, path, handler);\n\taddClientRoute(\"GET\", \"/version\", \"version\");\n\tif (downloadStorageObject !== void 0) addClientRoute(\"GET\", \"/storage/:token/:signature\", \"downloadStorageObject\");\n\taddClientRoute(\"GET\", \"/release-catalogs/app-version/:platform/:channelKey/:appVersion\", \"appVersionReleaseCatalog\");\n\taddClientRoute(\"GET\", \"/release-catalogs/fingerprint/:platform/:channelKey/:fingerprintHash\", \"fingerprintReleaseCatalog\");\n\taddClientRoute(\"GET\", \"/artifacts/:targetBundleId/from/:currentBundleId\", \"artifact\");\n\tif (analytics !== void 0) registerAnalyticsClientRoutes(addClientRoute);\n\tconst adminRouter = createRouter();\n\tconst addAdminRoute = (method, path, handler) => addRoute(adminRouter, method, path, handler);\n\taddAdminRoute(\"GET\", \"/releases/:id\", \"getRelease\");\n\taddAdminRoute(\"GET\", \"/releases\", \"getReleases\");\n\taddAdminRoute(\"PATCH\", \"/releases/:id\", \"updateRelease\");\n\taddAdminRoute(\"POST\", \"/releases/:id/preflight\", \"preflightRelease\");\n\taddAdminRoute(\"DELETE\", \"/releases/:id\", \"deleteRelease\");\n\taddAdminRoute(\"GET\", \"/release-catalogs/:scopeKey\", \"getReleaseCatalogRow\");\n\taddAdminRoute(\"GET\", \"/release-catalogs\", \"getReleaseCatalogs\");\n\taddAdminRoute(\"POST\", \"/release-catalogs/:scopeKey/rebuild\", \"rebuildReleaseCatalog\");\n\taddAdminRoute(\"POST\", \"/database/commit\", \"commitDatabase\");\n\taddAdminRoute(\"GET\", \"/channels\", \"getChannels\");\n\taddAdminRoute(\"POST\", \"/channels\", \"createChannel\");\n\taddAdminRoute(\"DELETE\", \"/channels/:id\", \"deleteChannel\");\n\taddAdminRoute(\"GET\", \"/bundles/:id\", \"getBundle\");\n\taddAdminRoute(\"GET\", \"/bundles\", \"getBundles\");\n\taddAdminRoute(\"POST\", \"/bundles\", \"createBundles\");\n\taddAdminRoute(\"PATCH\", \"/bundles/:id\", \"updateBundle\");\n\taddAdminRoute(\"DELETE\", \"/bundles/:id\", \"deleteBundle\");\n\tif (analytics !== void 0) registerAnalyticsAdminRoutes(addAdminRoute);\n\treturn Object.freeze({\n\t\tclient: createRequestHandler({\n\t\t\tapi,\n\t\t\tapiKeyAuth,\n\t\t\trouteHandlers,\n\t\t\trouter: clientRouter\n\t\t}),\n\t\tadmin: createRequestHandler({\n\t\t\tapi,\n\t\t\tprivateResponses: true,\n\t\t\trouteHandlers,\n\t\t\trouter: adminRouter\n\t\t})\n\t});\n}\n//#endregion\nexport { createHandlers, createHotUpdaterHandlers };\n", "//#region src/analytics/bounded/activeOverview.ts\nconst HOUR_MS = 3600 * 1e3;\nconst DAY_MS = 24 * HOUR_MS;\nconst ACTIVE_BUNDLE_EVENT_TYPES = [\n\t\"UPDATE_APPLIED\",\n\t\"RECOVERED\",\n\t\"RELEASE_ADOPTED\",\n\t\"UNCHANGED\"\n];\nconst activeWindowDefinitions = {\n\t\"24h\": {\n\t\tbucketCount: 24,\n\t\tbucketSizeMs: HOUR_MS\n\t},\n\t\"7d\": {\n\t\tbucketCount: 7,\n\t\tbucketSizeMs: DAY_MS\n\t},\n\t\"30d\": {\n\t\tbucketCount: 30,\n\t\tbucketSizeMs: DAY_MS\n\t}\n};\nfunction getActiveWindowDefinition(window) {\n\treturn activeWindowDefinitions[window];\n}\nfunction compareCodePoints(left, right) {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n}\nfunction isNewer(candidate, current) {\n\treturn candidate.received_at_ms > current.received_at_ms || candidate.received_at_ms === current.received_at_ms && compareCodePoints(candidate.id, current.id) > 0;\n}\nfunction collectActiveInstallationOverview(request) {\n\tconst definition = getActiveWindowDefinition(request.window);\n\tconst windowStartMs = request.asOfMs - definition.bucketCount * definition.bucketSizeMs;\n\tconst rows = request.rows.filter((row) => row.received_at_ms >= windowStartMs && row.received_at_ms < request.asOfMs);\n\tconst latestByInstall = /* @__PURE__ */ new Map();\n\tfor (const row of rows) {\n\t\tconst current = latestByInstall.get(row.install_id);\n\t\tif (current === void 0 || isNewer(row, current)) latestByInstall.set(row.install_id, row);\n\t}\n\tconst selectedRows = [...latestByInstall.values()].filter((row) => request.userId === void 0 || row.user_id === request.userId);\n\tconst selectedInstallIds = new Set(selectedRows.map((row) => row.install_id));\n\tconst bundleCounts = /* @__PURE__ */ new Map();\n\tfor (const row of selectedRows) bundleCounts.set(row.to_bundle_id, (bundleCounts.get(row.to_bundle_id) ?? 0) + 1);\n\tconst latestByBucket = Array.from({ length: definition.bucketCount }, () => /* @__PURE__ */ new Map());\n\tfor (const row of rows) {\n\t\tif (!selectedInstallIds.has(row.install_id)) continue;\n\t\tconst bucket = latestByBucket[Math.floor((row.received_at_ms - windowStartMs) / definition.bucketSizeMs)];\n\t\tif (bucket === void 0) continue;\n\t\tconst current = bucket.get(row.install_id);\n\t\tif (current === void 0 || isNewer(row, current)) bucket.set(row.install_id, row);\n\t}\n\tconst bundleCountsByBucket = latestByBucket.map((bucket) => {\n\t\tconst counts = /* @__PURE__ */ new Map();\n\t\tfor (const row of bucket.values()) counts.set(row.to_bundle_id, (counts.get(row.to_bundle_id) ?? 0) + 1);\n\t\treturn counts;\n\t});\n\tconst bundleObservationTotals = /* @__PURE__ */ new Map();\n\tfor (const counts of bundleCountsByBucket) for (const [bundleId, count] of counts) bundleObservationTotals.set(bundleId, (bundleObservationTotals.get(bundleId) ?? 0) + count);\n\treturn {\n\t\tasOfMs: request.asOfMs,\n\t\twindow: request.window,\n\t\tactiveInstallations: selectedInstallIds.size,\n\t\tseries: latestByBucket.map((bucket, index) => ({\n\t\t\tbucketStartMs: windowStartMs + index * definition.bucketSizeMs,\n\t\t\tvalue: bucket.size\n\t\t})),\n\t\tbundleSeries: [...bundleObservationTotals].sort(([leftId, leftTotal], [rightId, rightTotal]) => rightTotal - leftTotal || compareCodePoints(leftId, rightId)).map(([bundleId]) => ({\n\t\t\tbundleId,\n\t\t\tseries: bundleCountsByBucket.map((counts, index) => ({\n\t\t\t\tbucketStartMs: windowStartMs + index * definition.bucketSizeMs,\n\t\t\t\tvalue: counts.get(bundleId) ?? 0\n\t\t\t}))\n\t\t})),\n\t\tbundles: [...bundleCounts].map(([bundleId, installations]) => ({\n\t\t\tbundleId,\n\t\t\tinstallations\n\t\t})).sort((left, right) => right.installations - left.installations || compareCodePoints(left.bundleId, right.bundleId))\n\t};\n}\n//#endregion\nexport { ACTIVE_BUNDLE_EVENT_TYPES, collectActiveInstallationOverview, getActiveWindowDefinition };\n", "import { AnalyticsScanLimitExceededError } from \"../errors.mjs\";\nimport { ACTIVE_BUNDLE_EVENT_TYPES, getActiveWindowDefinition } from \"./activeOverview.mjs\";\n//#region src/analytics/bounded/scan.ts\nconst ANALYTICS_SCAN_MAX_ROWS = 5e4;\nconst ANALYTICS_MATERIALIZATION_LIMIT = ANALYTICS_SCAN_MAX_ROWS + 1;\nconst ANALYTICS_SCAN_PAGE_SIZE = 1e3;\nconst ANALYTICS_LOWER_BOUND_ID = \"00000000-0000-0000-0000-000000000000\";\nconst compareCodePoints = (left, right) => {\n\tif (left < right) return -1;\n\tif (left > right) return 1;\n\treturn 0;\n};\nconst compareEventNewest = (left, right) => right.received_at_ms - left.received_at_ms || compareCodePoints(right.id, left.id);\nconst compareEventOldest = (left, right) => left.received_at_ms - right.received_at_ms || compareCodePoints(left.id, right.id);\nconst materializeEventRows = async (scope) => {\n\tconst rows = [];\n\tconst seenIds = /* @__PURE__ */ new Set();\n\tlet after = scope.lowerBoundMs === void 0 ? void 0 : {\n\t\treceivedAtMs: scope.lowerBoundMs,\n\t\tid: ANALYTICS_LOWER_BOUND_ID\n\t};\n\twhile (rows.length < ANALYTICS_MATERIALIZATION_LIMIT) {\n\t\tconst limit = Math.min(ANALYTICS_SCAN_PAGE_SIZE, ANALYTICS_MATERIALIZATION_LIMIT - rows.length);\n\t\tconst page = await scope.persistence.scan({\n\t\t\tbeforeReceivedAtMs: scope.cutoffMs,\n\t\t\t...after === void 0 ? {} : { after },\n\t\t\tlimit\n\t\t});\n\t\tif (page.length === 0) break;\n\t\tif (page.length > limit) throw new AnalyticsPersistenceOrderError();\n\t\tlet previous = after === void 0 ? void 0 : {\n\t\t\treceived_at_ms: after.receivedAtMs,\n\t\t\tid: after.id\n\t\t};\n\t\tfor (const row of page) {\n\t\t\tif (row.received_at_ms >= scope.cutoffMs || previous !== void 0 && compareEventOldest(previous, row) >= 0 || seenIds.has(row.id)) throw new AnalyticsPersistenceOrderError();\n\t\t\tseenIds.add(row.id);\n\t\t\trows.push(row);\n\t\t\tprevious = row;\n\t\t}\n\t\tconst last = page.at(-1);\n\t\tif (last !== void 0) after = {\n\t\t\treceivedAtMs: last.received_at_ms,\n\t\t\tid: last.id\n\t\t};\n\t\tif (rows.length > 5e4) throw new AnalyticsScanLimitExceededError(ANALYTICS_SCAN_MAX_ROWS);\n\t}\n\treturn rows;\n};\nvar AnalyticsPersistenceOrderError = class extends Error {\n\tname = \"AnalyticsPersistenceOrderError\";\n\tconstructor() {\n\t\tsuper(\"Analytics persistence did not advance its scan cursor.\");\n\t}\n};\nconst materializeActiveRows = async (scope, window) => {\n\tconst definition = getActiveWindowDefinition(window);\n\tconst durationMs = definition.bucketCount * definition.bucketSizeMs;\n\treturn (await materializeEventRows({\n\t\t...scope,\n\t\tlowerBoundMs: scope.cutoffMs - durationMs\n\t})).filter((row) => row.received_at_ms >= scope.cutoffMs - durationMs && ACTIVE_BUNDLE_EVENT_TYPES.includes(row.type));\n};\nconst startOfUtcHour = (value) => {\n\tconst date = new Date(value);\n\treturn Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours());\n};\nconst startOfUtcDay = (value) => {\n\tconst date = new Date(value);\n\treturn Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n};\nconst getWindowRange = (window, now) => {\n\tif (window === \"24h\") return {\n\t\tsizeMs: 3600 * 1e3,\n\t\trangeStart: startOfUtcHour(now) - 1380 * 60 * 1e3\n\t};\n\tconst days = window === \"7d\" ? 7 : 30;\n\treturn {\n\t\tsizeMs: 1440 * 60 * 1e3,\n\t\trangeStart: startOfUtcDay(now) - (days - 1) * 24 * 60 * 60 * 1e3\n\t};\n};\nconst materializeRowsForWindow = async (scope, window) => {\n\tif (window === \"all\") return materializeEventRows(scope);\n\tconst range = getWindowRange(window, scope.cutoffMs);\n\treturn (await materializeEventRows({\n\t\t...scope,\n\t\tlowerBoundMs: range.rangeStart\n\t})).filter(({ received_at_ms }) => received_at_ms >= range.rangeStart);\n};\nconst bucketStart = (receivedAtMs, sizeMs) => sizeMs === 3600 * 1e3 ? startOfUtcHour(receivedAtMs) : startOfUtcDay(receivedAtMs);\nconst createSeries = (request) => {\n\tconst range = request.window === \"all\" ? void 0 : getWindowRange(request.window, request.cutoffMs);\n\tconst sizeMs = range?.sizeMs ?? 1440 * 60 * 1e3;\n\tconst installIdsByBucket = /* @__PURE__ */ new Map();\n\tlet oldestMs = request.cutoffMs;\n\tfor (const row of request.rows) {\n\t\toldestMs = Math.min(oldestMs, row.received_at_ms);\n\t\tconst start = bucketStart(row.received_at_ms, sizeMs);\n\t\tconst installIds = installIdsByBucket.get(start) ?? /* @__PURE__ */ new Set();\n\t\tinstallIds.add(row.install_id);\n\t\tinstallIdsByBucket.set(start, installIds);\n\t}\n\tconst first = range?.rangeStart ?? startOfUtcDay(oldestMs);\n\tconst last = bucketStart(request.cutoffMs, sizeMs);\n\treturn Array.from({ length: Math.floor((last - first) / sizeMs) + 1 }, (_, index) => {\n\t\tconst start = first + index * sizeMs;\n\t\treturn {\n\t\t\tbucketStartMs: start,\n\t\t\tvalue: installIdsByBucket.get(start)?.size ?? 0\n\t\t};\n\t});\n};\nconst collectEventActivity = (request) => {\n\tconst range = request.window === \"all\" ? void 0 : getWindowRange(request.window, request.cutoffMs);\n\tconst rows = range === void 0 ? request.rows : request.rows.filter(({ received_at_ms }) => received_at_ms >= range.rangeStart && received_at_ms < request.cutoffMs);\n\tconst installs = /* @__PURE__ */ new Set();\n\tconst installsByCohort = /* @__PURE__ */ new Map();\n\tfor (const row of rows) {\n\t\tinstalls.add(row.install_id);\n\t\tconst cohort = installsByCohort.get(row.cohort) ?? /* @__PURE__ */ new Set();\n\t\tcohort.add(row.install_id);\n\t\tinstallsByCohort.set(row.cohort, cohort);\n\t}\n\treturn {\n\t\tsummary: installs.size,\n\t\tcohorts: [...installsByCohort].sort(([left], [right]) => compareCodePoints(left, right)).map(([cohort, installIds]) => ({\n\t\t\tcohort,\n\t\t\tvalue: installIds.size\n\t\t})),\n\t\tseries: createSeries({\n\t\t\t...request,\n\t\t\trows\n\t\t})\n\t};\n};\n//#endregion\nexport { ANALYTICS_SCAN_MAX_ROWS, collectEventActivity, compareCodePoints, compareEventNewest, materializeActiveRows, materializeEventRows, materializeRowsForWindow };\n", "import { compareCodePoints, compareEventNewest } from \"./scan.mjs\";\n//#region src/analytics/bounded/installationSearch.ts\nfunction toSearchRow(row) {\n\treturn {\n\t\tinstallId: row.install_id,\n\t\tusername: row.username,\n\t\tuserId: row.user_id,\n\t\tlastKnownBundleId: row.to_bundle_id,\n\t\tlatestStatus: row.type,\n\t\tplatform: row.platform,\n\t\tappVersion: row.app_version,\n\t\tchannel: row.channel,\n\t\tcohort: row.cohort,\n\t\treceivedAtMs: row.received_at_ms\n\t};\n}\nfunction matchesIdentity(row, query) {\n\treturn row.install_id.toLowerCase().includes(query) || row.user_id?.toLowerCase().includes(query) === true || row.username?.toLowerCase().includes(query) === true;\n}\nfunction searchEventInstallations(request) {\n\tconst query = request.query.toLowerCase();\n\tconst matchingInstallIds = /* @__PURE__ */ new Set();\n\tfor (const row of request.rows) if (query.length === 0 || matchesIdentity(row, query)) matchingInstallIds.add(row.install_id);\n\tconst latestByInstall = /* @__PURE__ */ new Map();\n\tfor (const row of request.rows) {\n\t\tif (!matchingInstallIds.has(row.install_id)) continue;\n\t\tconst current = latestByInstall.get(row.install_id);\n\t\tif (current === void 0 || compareEventNewest(row, current) < 0) latestByInstall.set(row.install_id, row);\n\t}\n\tconst matchingRows = [...latestByInstall.values()].sort((left, right) => compareCodePoints(left.install_id, right.install_id));\n\tconst pageSize = Math.min(Math.max(request.limit, 0), 100);\n\treturn {\n\t\tdata: matchingRows.slice(request.offset, request.offset + pageSize).map(toSearchRow),\n\t\tpagination: {\n\t\t\ttotal: matchingRows.length,\n\t\t\tlimit: request.limit,\n\t\t\toffset: request.offset\n\t\t}\n\t};\n}\n//#endregion\nexport { searchEventInstallations };\n", "import { createUUIDv7 } from \"@hot-updater/plugin-core\";\n//#region src/analytics/bounded/persistence.ts\nfunction createBundleEventRow(input) {\n\tconst base = {\n\t\tid: createUUIDv7(),\n\t\tinstall_id: input.installId,\n\t\tuser_id: input.userId ?? null,\n\t\tusername: input.username ?? null,\n\t\tfrom_release_id: input.fromReleaseId,\n\t\tto_release_id: input.toReleaseId,\n\t\tto_bundle_id: input.toBundleId,\n\t\tplatform: input.platform,\n\t\tapp_version: input.appVersion,\n\t\tchannel: input.channel,\n\t\tcohort: input.cohort,\n\t\tfingerprint_hash: input.fingerprintHash,\n\t\tsdk_version: input.sdkVersion ?? null,\n\t\treceived_at_ms: Date.now()\n\t};\n\tswitch (input.type) {\n\t\tcase \"UPDATE_APPLIED\":\n\t\tcase \"RECOVERED\":\n\t\tcase \"RELEASE_ADOPTED\": return {\n\t\t\t...base,\n\t\t\ttype: input.type,\n\t\t\tfrom_bundle_id: input.fromBundleId,\n\t\t\tupdate_strategy: input.updateStrategy\n\t\t};\n\t\tcase \"UNCHANGED\": return {\n\t\t\t...base,\n\t\t\ttype: input.type,\n\t\t\tfrom_bundle_id: null,\n\t\t\tupdate_strategy: null\n\t\t};\n\t}\n}\n//#endregion\nexport { createBundleEventRow };\n", "import { collectActiveInstallationOverview } from \"./activeOverview.mjs\";\nimport { ANALYTICS_SCAN_MAX_ROWS, collectEventActivity, compareCodePoints, compareEventNewest, materializeActiveRows, materializeEventRows, materializeRowsForWindow } from \"./scan.mjs\";\nimport { searchEventInstallations } from \"./installationSearch.mjs\";\nimport { createBundleEventRow } from \"./persistence.mjs\";\n//#region src/analytics/bounded/provider.ts\nconst isTransitionEventRow = (row) => row.type === \"UPDATE_APPLIED\" || row.type === \"RECOVERED\";\nconst toHistoryRow = (row) => ({\n\tid: row.id,\n\ttype: row.type,\n\tfromBundleId: row.from_bundle_id,\n\ttoBundleId: row.to_bundle_id,\n\tusername: row.username,\n\tuserId: row.user_id,\n\tplatform: row.platform,\n\tappVersion: row.app_version,\n\tchannel: row.channel,\n\tcohort: row.cohort,\n\treceivedAtMs: row.received_at_ms\n});\nconst isInstalledForBundle = (row, bundleId) => row.type === \"UPDATE_APPLIED\" && row.to_bundle_id === bundleId;\nconst isRecoveredFromBundle = (row, bundleId) => row.type === \"RECOVERED\" && row.from_bundle_id === bundleId;\nconst countDistinctInstallations = (rows) => new Set(rows.map(({ install_id }) => install_id)).size;\nconst getAnalyticsResult = async (persistence, bundleId, window, limit, offset) => {\n\tconst scope = {\n\t\tpersistence,\n\t\tcutoffMs: Date.now()\n\t};\n\tconst rows = (await materializeRowsForWindow(scope, window)).filter(isTransitionEventRow);\n\tconst installedRows = rows.filter((row) => isInstalledForBundle(row, bundleId));\n\tconst recoveredRows = rows.filter((row) => isRecoveredFromBundle(row, bundleId));\n\tconst installed = collectEventActivity({\n\t\trows: installedRows,\n\t\twindow,\n\t\tcutoffMs: scope.cutoffMs\n\t});\n\tconst recovered = collectEventActivity({\n\t\trows: recoveredRows,\n\t\twindow,\n\t\tcutoffMs: scope.cutoffMs\n\t});\n\tconst recentRows = [...installedRows, ...recoveredRows].sort(compareEventNewest);\n\treturn {\n\t\tsummary: {\n\t\t\tinstalled: installed.summary,\n\t\t\trecovered: recovered.summary\n\t\t},\n\t\tseries: {\n\t\t\tinstalled: installed.series,\n\t\t\trecovered: recovered.series\n\t\t},\n\t\tcohorts: {\n\t\t\tinstalled: installed.cohorts,\n\t\t\trecovered: recovered.cohorts\n\t\t},\n\t\trecentEvents: {\n\t\t\tdata: recentRows.slice(offset, offset + limit).map(toHistoryRow),\n\t\t\tpagination: {\n\t\t\t\ttotal: recentRows.length,\n\t\t\t\tlimit,\n\t\t\t\toffset\n\t\t\t}\n\t\t}\n\t};\n};\nconst getAnalyticsSummaries = async (persistence, bundleIds, window) => {\n\tconst normalizedBundleIds = [...new Set(bundleIds)];\n\tif (normalizedBundleIds.length === 0) return [];\n\tconst requestedBundleIds = new Set(normalizedBundleIds);\n\tconst installedByBundleId = /* @__PURE__ */ new Map();\n\tconst recoveredByBundleId = /* @__PURE__ */ new Map();\n\tconst rows = (await materializeRowsForWindow({\n\t\tpersistence,\n\t\tcutoffMs: Date.now()\n\t}, window)).filter(isTransitionEventRow);\n\tfor (const row of rows) {\n\t\tconst bundleId = row.type === \"UPDATE_APPLIED\" ? row.to_bundle_id : row.from_bundle_id;\n\t\tif (!requestedBundleIds.has(bundleId)) continue;\n\t\tconst counts = row.type === \"UPDATE_APPLIED\" ? installedByBundleId : recoveredByBundleId;\n\t\tconst installIds = counts.get(bundleId) ?? /* @__PURE__ */ new Set();\n\t\tinstallIds.add(row.install_id);\n\t\tcounts.set(bundleId, installIds);\n\t}\n\treturn normalizedBundleIds.map((bundleId) => ({\n\t\tbundleId,\n\t\tinstalled: installedByBundleId.get(bundleId)?.size ?? 0,\n\t\trecovered: recoveredByBundleId.get(bundleId)?.size ?? 0\n\t}));\n};\nconst createAnalyticsProvider = (persistence) => Object.freeze({\n\tmode: \"bounded\",\n\tmaxMatchingRows: ANALYTICS_SCAN_MAX_ROWS,\n\tasync appendBundleEvent(input) {\n\t\tawait persistence.append(createBundleEventRow(input));\n\t},\n\tasync getBundleEventSummary(bundleId) {\n\t\tconst rows = (await materializeEventRows({\n\t\t\tpersistence,\n\t\t\tcutoffMs: Date.now()\n\t\t})).filter(isTransitionEventRow);\n\t\treturn {\n\t\t\tinstalled: countDistinctInstallations(rows.filter((row) => isInstalledForBundle(row, bundleId))),\n\t\t\trecovered: countDistinctInstallations(rows.filter((row) => isRecoveredFromBundle(row, bundleId)))\n\t\t};\n\t},\n\tgetBundleEventSummaries(bundleIds, window) {\n\t\treturn getAnalyticsSummaries(persistence, bundleIds, window);\n\t},\n\tgetBundleEventAnalytics(bundleId, window, limit, offset) {\n\t\treturn getAnalyticsResult(persistence, bundleId, window, limit, offset);\n\t},\n\tasync getBundleEventOverview() {\n\t\tconst rows = await materializeEventRows({\n\t\t\tpersistence,\n\t\t\tcutoffMs: Date.now()\n\t\t});\n\t\tconst latestByInstall = /* @__PURE__ */ new Map();\n\t\tfor (const row of rows) {\n\t\t\tconst current = latestByInstall.get(row.install_id);\n\t\t\tif (current === void 0 || compareEventNewest(row, current) < 0) latestByInstall.set(row.install_id, row);\n\t\t}\n\t\tconst counts = /* @__PURE__ */ new Map();\n\t\tfor (const row of latestByInstall.values()) counts.set(row.to_bundle_id, (counts.get(row.to_bundle_id) ?? 0) + 1);\n\t\treturn {\n\t\t\ttrackedInstallations: latestByInstall.size,\n\t\t\tbundles: [...counts].map(([bundleId, installations]) => ({\n\t\t\t\tbundleId,\n\t\t\t\tinstallations\n\t\t\t})).sort((left, right) => right.installations - left.installations || compareCodePoints(left.bundleId, right.bundleId))\n\t\t};\n\t},\n\tasync getActiveInstallationOverview(input) {\n\t\tconst asOfMs = Date.now();\n\t\treturn collectActiveInstallationOverview({\n\t\t\trows: await materializeActiveRows({\n\t\t\t\tpersistence,\n\t\t\t\tcutoffMs: asOfMs\n\t\t\t}, input.window),\n\t\t\tasOfMs,\n\t\t\twindow: input.window,\n\t\t\t...input.userId === void 0 ? {} : { userId: input.userId }\n\t\t});\n\t},\n\tasync searchInstallations(query, limit, offset) {\n\t\treturn searchEventInstallations({\n\t\t\trows: await materializeEventRows({\n\t\t\t\tpersistence,\n\t\t\t\tcutoffMs: Date.now()\n\t\t\t}),\n\t\t\tquery,\n\t\t\tlimit,\n\t\t\toffset\n\t\t});\n\t},\n\tasync getInstallationHistory(installId, limit, offset) {\n\t\tconst ordered = (await materializeEventRows({\n\t\t\tpersistence,\n\t\t\tcutoffMs: Date.now()\n\t\t})).filter((row) => row.install_id === installId && isTransitionEventRow(row)).toSorted(compareEventNewest);\n\t\treturn {\n\t\t\tdata: ordered.slice(offset, offset + limit).map(toHistoryRow),\n\t\t\tpagination: {\n\t\t\t\ttotal: ordered.length,\n\t\t\t\tlimit,\n\t\t\t\toffset\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\nexport { createAnalyticsProvider };\n", "//#region src/apiKeys.ts\nconst API_KEY_HEADER_NAME = \"x-api-key\";\nconst BASE64URL_32_PATTERN = /^[A-Za-z0-9_-]{43}$/u;\nconst bytesToBase64Url = (bytes) => {\n\tlet binary = \"\";\n\tfor (const byte of bytes) binary += String.fromCharCode(byte);\n\treturn btoa(binary).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/u, \"\");\n};\nconst isApiKey = (value) => {\n\tif (!BASE64URL_32_PATTERN.test(value)) return false;\n\ttry {\n\t\tconst base64 = value.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n\t\tconst binary = atob(`${base64}=`);\n\t\tconst bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0));\n\t\treturn bytes.byteLength === 32 && bytesToBase64Url(bytes) === value;\n\t} catch {\n\t\treturn false;\n\t}\n};\nconst normalizeApiKeyHeaderName = (value = API_KEY_HEADER_NAME) => {\n\tif (typeof value !== \"string\" || value.length === 0) throw new TypeError(\"clientAccess.headerName must be a valid header name.\");\n\ttry {\n\t\tconst headers = new Headers();\n\t\theaders.set(value, \"\");\n\t\treturn headers.keys().next().value;\n\t} catch {\n\t\tthrow new TypeError(\"clientAccess.headerName must be a valid header name.\");\n\t}\n};\nconst hashApiKey = async (apiKey) => {\n\tif (!isApiKey(apiKey)) throw new TypeError(\"API key must be a canonical 32-byte base64url value.\");\n\tconst digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(apiKey));\n\treturn bytesToBase64Url(new Uint8Array(digest));\n};\nconst apiKeyId = () => {\n\tconst bytes = new Uint8Array(16);\n\tcrypto.getRandomValues(bytes);\n\treturn `api-${bytesToBase64Url(bytes)}`;\n};\nconst normalizeApiKeyName = (name) => {\n\tconst normalized = name.trim();\n\tif (normalized.length === 0 || normalized.length > 64 || /[\\p{Cc}\\p{Cf}]/u.test(normalized)) throw new TypeError(\"API key names must contain 1-64 visible characters.\");\n\treturn normalized;\n};\nconst toApiKeyMetadata = ({ hash: _hash, ...metadata }) => Object.freeze(metadata);\nconst registerApiKey = async (input) => {\n\tconst hash = await hashApiKey(input.apiKey);\n\tconst createdAtMs = input.createdAtMs ?? Date.now();\n\tif (!Number.isSafeInteger(createdAtMs) || createdAtMs < 0) throw new TypeError(\"API key creation time must be non-negative.\");\n\tconst record = Object.freeze({\n\t\tcreated_at_ms: createdAtMs,\n\t\thash,\n\t\tid: apiKeyId(),\n\t\tname: normalizeApiKeyName(input.name),\n\t\tprefix: input.apiKey.slice(0, 6),\n\t\trevoked_at_ms: null,\n\t\trole: \"client\"\n\t});\n\tif (await input.apiKeys.create(record) === \"existing\") {\n\t\tconst existing = await input.apiKeys.findByHash(hash);\n\t\tif (existing === null || existing.revoked_at_ms !== null) throw new Error(\"The API key has been revoked.\");\n\t\treturn Object.freeze({\n\t\t\tapiKey: input.apiKey,\n\t\t\trecord: toApiKeyMetadata(existing)\n\t\t});\n\t}\n\treturn Object.freeze({\n\t\tapiKey: input.apiKey,\n\t\trecord: toApiKeyMetadata(record)\n\t});\n};\nconst createApiKey = (input) => {\n\tconst bytes = new Uint8Array(32);\n\tcrypto.getRandomValues(bytes);\n\treturn registerApiKey({\n\t\tapiKey: bytesToBase64Url(bytes),\n\t\tapiKeys: input.apiKeys,\n\t\tname: input.name\n\t});\n};\n/**\n* Provisions the client API key used by managed init.\n*\n* A saved plaintext key is registered idempotently; otherwise a new key is\n* created. Callers must persist or display the returned plaintext because the\n* database stores only its hash.\n*/\nconst provisionApiKey = (input) => {\n\tconst existingApiKey = input.existingApiKey?.trim();\n\treturn existingApiKey ? registerApiKey({\n\t\tapiKey: existingApiKey,\n\t\tapiKeys: input.apiKeys,\n\t\tname: input.name\n\t}) : createApiKey({\n\t\tapiKeys: input.apiKeys,\n\t\tname: input.name\n\t});\n};\nconst authenticateApiKey = async (input) => {\n\tconst apiKey = input.request.headers.get(normalizeApiKeyHeaderName(input.headerName));\n\tif (apiKey === null || !isApiKey(apiKey)) return false;\n\tconst hash = await hashApiKey(apiKey);\n\tawait input.beforeLookup?.();\n\tconst record = await input.apiKeys.findByHash(hash);\n\treturn record !== null && record.hash === hash && record.role === \"client\" && record.revoked_at_ms === null;\n};\nconst createApiKeyManagement = (input) => Object.freeze({\n\tasync create({ name }) {\n\t\tawait input.beforeOperation();\n\t\tconst created = await createApiKey({\n\t\t\tapiKeys: input.apiKeys,\n\t\t\tname\n\t\t});\n\t\treturn Object.freeze({\n\t\t\tapiKey: created.apiKey,\n\t\t\trecord: created.record\n\t\t});\n\t},\n\tasync list() {\n\t\tawait input.beforeOperation();\n\t\treturn Object.freeze((await input.apiKeys.list()).map(toApiKeyMetadata));\n\t},\n\tasync revoke({ id }) {\n\t\tawait input.beforeOperation();\n\t\tconst record = await input.apiKeys.revoke({\n\t\t\tid,\n\t\t\trevokedAtMs: Date.now()\n\t\t});\n\t\treturn record === null ? null : toApiKeyMetadata(record);\n\t}\n});\n//#endregion\nexport { API_KEY_HEADER_NAME, authenticateApiKey, createApiKey, createApiKeyManagement, normalizeApiKeyHeaderName, provisionApiKey, registerApiKey };\n", "import { getManifestAssetDownloadPath, isContentAddressedAssetFileHash, resolveManifestAssetStorageUri } from \"@hot-updater/plugin-core\";\nimport { getAssetBaseStorageUri, getBundlePatch, getManifestFileHash, getManifestStorageUri } from \"@hot-updater/core\";\n//#region src/db/updateArtifacts.ts\nconst HBC_ASSET_PATH_RE = /\\.bundle$/;\nconst asByteSize = (value) => typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0 ? value : null;\nconst sumByteSizes = (byteSizes) => {\n\tlet total = 0;\n\tfor (const byteSize of byteSizes) {\n\t\tif (byteSize === null || total > Number.MAX_SAFE_INTEGER - byteSize) return null;\n\t\ttotal += byteSize;\n\t}\n\treturn total;\n};\nconst shouldUseArchive = (targetBundle, downloadByteSize) => {\n\tconst archiveByteSize = asByteSize(targetBundle.archiveByteSize);\n\treturn archiveByteSize !== null && downloadByteSize !== null && downloadByteSize >= archiveByteSize;\n};\nconst resolveUniqueHbcAssetPath = (manifest) => {\n\tconst candidates = Object.keys(manifest.assets).sort((left, right) => left.localeCompare(right)).filter((candidate) => HBC_ASSET_PATH_RE.test(candidate));\n\treturn candidates.length === 1 ? candidates[0] : null;\n};\nconst isBundleManifest = (value) => {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst manifest = value;\n\tif (typeof manifest.bundleId !== \"string\") return false;\n\tif (!manifest.assets || typeof manifest.assets !== \"object\") return false;\n\treturn Object.values(manifest.assets).every((asset) => {\n\t\tif (!asset || typeof asset !== \"object\" || Array.isArray(asset)) return false;\n\t\tconst manifestAsset = asset;\n\t\treturn typeof manifestAsset.fileHash === \"string\" && (manifestAsset.signature === void 0 || typeof manifestAsset.signature === \"string\");\n\t});\n};\nasync function fetchBundleManifest(storageUri, readStorageText) {\n\tconst storageText = await readStorageText(storageUri);\n\tif (storageText === null) return null;\n\tlet payload;\n\ttry {\n\t\tpayload = JSON.parse(storageText);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (!isBundleManifest(payload)) return null;\n\treturn {\n\t\tbyteSize: asByteSize(new TextEncoder().encode(storageText).byteLength),\n\t\tmanifest: payload\n\t};\n}\nfunction resolveHbcPatchPlan({ currentBundle, targetBundle, targetManifest }) {\n\tconst matchingPatch = currentBundle ? getBundlePatch(targetBundle, currentBundle.id) : null;\n\tconst patchAssetPath = resolveUniqueHbcAssetPath(targetManifest);\n\tif (!currentBundle || !matchingPatch || !patchAssetPath || !matchingPatch.patchStorageUri || !matchingPatch.patchFileHash || !matchingPatch.baseFileHash) return null;\n\treturn {\n\t\tassetPath: patchAssetPath,\n\t\tpatch: {\n\t\t\tbaseBundleId: matchingPatch.baseBundleId,\n\t\t\tbaseFileHash: matchingPatch.baseFileHash,\n\t\t\tbyteSize: asByteSize(matchingPatch.byteSize),\n\t\t\tpatchFileHash: matchingPatch.patchFileHash,\n\t\t\tstorageUri: matchingPatch.patchStorageUri\n\t\t}\n\t};\n}\nfunction createManifestArtifactPlan({ assetBaseStorageUri, currentManifest, currentBundle, targetBundle, targetManifest, targetManifestByteSize }) {\n\tconst patchCandidate = resolveHbcPatchPlan({\n\t\tcurrentBundle,\n\t\ttargetBundle,\n\t\ttargetManifest\n\t});\n\tconst changedAssets = Object.entries(targetManifest.assets).flatMap(([assetPath, asset]) => {\n\t\tif ((currentManifest?.assets[assetPath])?.fileHash === asset.fileHash) return [];\n\t\tconst downloadByteSize = asByteSize(asset.downloadByteSize);\n\t\tconst downloadPath = getManifestAssetDownloadPath(assetPath);\n\t\tconst isTransformedDownload = downloadPath !== assetPath;\n\t\tconst hasValidDownloadFileHash = isContentAddressedAssetFileHash(asset.downloadFileHash);\n\t\tconst file = {\n\t\t\tbyteSize: downloadByteSize !== null && (hasValidDownloadFileHash || !isTransformedDownload && asset.downloadFileHash === void 0) ? downloadByteSize : null,\n\t\t\tstorageUri: resolveManifestAssetStorageUri({\n\t\t\t\tassetBaseStorageUri,\n\t\t\t\tassetPath: downloadPath,\n\t\t\t\tdownloadFileHash: asset.downloadFileHash,\n\t\t\t\tfileHash: asset.fileHash\n\t\t\t})\n\t\t};\n\t\tif (isTransformedDownload) file.compression = \"br\";\n\t\tconst patch = patchCandidate?.assetPath === assetPath ? patchCandidate.patch : null;\n\t\treturn [{\n\t\t\tassetPath,\n\t\t\tfile,\n\t\t\tfileHash: asset.fileHash,\n\t\t\tpatch\n\t\t}];\n\t});\n\tconst allPossibleByteSizesKnown = targetManifestByteSize !== null && changedAssets.every((asset) => asset.file.byteSize !== null && (asset.patch === null || asset.patch.byteSize !== null));\n\tconst primaryByteSizes = changedAssets.map((asset) => {\n\t\tif (!asset.patch) return asset.file.byteSize;\n\t\tif (asset.patch.byteSize === null || asset.file.byteSize === null) return null;\n\t\treturn Math.min(asset.patch.byteSize, asset.file.byteSize);\n\t});\n\treturn {\n\t\tallPossibleByteSizesKnown,\n\t\tchangedAssets,\n\t\tmanifestByteSize: targetManifestByteSize,\n\t\tminimumDownloadByteSize: allPossibleByteSizesKnown ? sumByteSizes([targetManifestByteSize, ...primaryByteSizes]) : null\n\t};\n}\nasync function resolveChangedAssets(plan, resolveFileUrl) {\n\tconst patchAsset = plan.changedAssets.find((asset) => asset.patch !== null);\n\tlet resolvedPatch = null;\n\tif (patchAsset?.patch) {\n\t\tconst patchUrl = await resolveFileUrl(patchAsset.patch.storageUri);\n\t\tif (patchUrl) resolvedPatch = {\n\t\t\tassetPath: patchAsset.assetPath,\n\t\t\tpatch: {\n\t\t\t\talgorithm: \"bsdiff\",\n\t\t\t\tbaseBundleId: patchAsset.patch.baseBundleId,\n\t\t\t\tbaseFileHash: patchAsset.patch.baseFileHash,\n\t\t\t\tpatchFileHash: patchAsset.patch.patchFileHash,\n\t\t\t\tpatchUrl\n\t\t\t}\n\t\t};\n\t}\n\tconst changedEntries = await Promise.all(plan.changedAssets.map(async (asset) => {\n\t\tlet patch = resolvedPatch?.assetPath === asset.assetPath ? resolvedPatch.patch : null;\n\t\tlet fileUrl = null;\n\t\ttry {\n\t\t\tfileUrl = await resolveFileUrl(asset.file.storageUri);\n\t\t} catch (error) {\n\t\t\tif (!patch) throw error;\n\t\t}\n\t\tif (fileUrl && patch && asset.file.byteSize !== null && asset.patch !== null && asset.patch.byteSize !== null && asset.patch.byteSize >= asset.file.byteSize) patch = null;\n\t\tif (!fileUrl && !patch) return null;\n\t\tconst changedAsset = { fileHash: asset.fileHash };\n\t\tif (fileUrl) {\n\t\t\tchangedAsset.file = { url: fileUrl };\n\t\t\tif (asset.file.compression) changedAsset.file.compression = asset.file.compression;\n\t\t}\n\t\tif (patch) changedAsset.patch = patch;\n\t\treturn {\n\t\t\tasset: [asset.assetPath, changedAsset],\n\t\t\tprimaryByteSize: patch ? asset.patch?.byteSize ?? null : asset.file.byteSize\n\t\t};\n\t}));\n\tif (changedEntries.some((entry) => entry === null)) return null;\n\tconst resolvedEntries = changedEntries.filter((entry) => entry !== null);\n\treturn {\n\t\tchangedAssets: Object.fromEntries(resolvedEntries.map((entry) => entry.asset)),\n\t\tprimaryByteSizes: resolvedEntries.map((entry) => entry.primaryByteSize)\n\t};\n}\nasync function resolveManifestArtifacts({ archiveUrlUsable, currentBundle, resolveFileUrl, readStorageText, targetBundle }) {\n\tconst manifestStorageUri = targetBundle ? getManifestStorageUri(targetBundle) : null;\n\tconst manifestFileHash = targetBundle ? getManifestFileHash(targetBundle) : null;\n\tconst assetBaseStorageUri = targetBundle ? getAssetBaseStorageUri(targetBundle) : null;\n\tif (!targetBundle || !manifestStorageUri || !manifestFileHash || !assetBaseStorageUri) return null;\n\tconst currentManifestStorageUri = currentBundle ? getManifestStorageUri(currentBundle) : null;\n\tconst [targetManifestResult, currentManifestResult] = await Promise.all([fetchBundleManifest(manifestStorageUri, readStorageText), currentManifestStorageUri ? fetchBundleManifest(currentManifestStorageUri, readStorageText) : null]);\n\tif (!targetManifestResult) return null;\n\tconst plan = createManifestArtifactPlan({\n\t\tassetBaseStorageUri,\n\t\tcurrentManifest: currentManifestResult?.manifest ?? null,\n\t\tcurrentBundle,\n\t\ttargetBundle,\n\t\ttargetManifest: targetManifestResult.manifest,\n\t\ttargetManifestByteSize: targetManifestResult.byteSize\n\t});\n\tif (archiveUrlUsable && plan.allPossibleByteSizesKnown && shouldUseArchive(targetBundle, plan.minimumDownloadByteSize)) return null;\n\tconst manifestUrl = await resolveFileUrl(manifestStorageUri);\n\tif (!manifestUrl) return null;\n\tconst resolved = await resolveChangedAssets(plan, resolveFileUrl);\n\tif (!resolved) return null;\n\tconst resolvedDownloadByteSize = sumByteSizes([plan.manifestByteSize, ...resolved.primaryByteSizes]);\n\tif (archiveUrlUsable && shouldUseArchive(targetBundle, resolvedDownloadByteSize)) return null;\n\treturn {\n\t\tchangedAssets: resolved.changedAssets,\n\t\tmanifestFileHash,\n\t\tmanifestUrl\n\t};\n}\n//#endregion\nexport { resolveManifestArtifacts };\n", "import { resolveManifestArtifacts } from \"./updateArtifacts.mjs\";\nimport { createDatabaseClient, projectCompiledCatalog, projectCompiledRollbackCatalog } from \"@hot-updater/plugin-core\";\nimport { NIL_UUID, RELEASE_CATALOG_FALLBACK_POLICY, RELEASE_CATALOG_SCHEMA_VERSION, createReleaseCatalogScopeKey } from \"@hot-updater/core\";\n//#region src/db/releaseCatalog.ts\nconst parseCompiledCatalog = (payload, strategy) => {\n\tconst parsed = JSON.parse(payload);\n\tif (typeof parsed !== \"object\" || parsed === null || Reflect.get(parsed, \"schemaVersion\") !== RELEASE_CATALOG_SCHEMA_VERSION || Reflect.get(parsed, \"strategy\") !== strategy || Reflect.get(parsed, \"fallbackPolicy\") !== RELEASE_CATALOG_FALLBACK_POLICY || !Array.isArray(Reflect.get(parsed, \"releaseDescriptors\"))) throw new Error(\"Stored Release catalog payload is invalid\");\n\tif (strategy === \"APP_VERSION\" && !Array.isArray(Reflect.get(parsed, \"segments\"))) throw new Error(\"Stored app-version Release catalog is invalid\");\n\tif (strategy === \"FINGERPRINT\" && !Array.isArray(Reflect.get(parsed, \"releaseIndexes\"))) throw new Error(\"Stored fingerprint Release catalog is invalid\");\n\treturn parsed;\n};\nconst createReleaseCatalogReader = (database) => async (input) => {\n\tconst scopeKey = input.strategy === \"APP_VERSION\" ? createReleaseCatalogScopeKey({\n\t\tchannelKey: input.channelKey,\n\t\tplatform: input.platform,\n\t\tstrategy: \"APP_VERSION\"\n\t}) : createReleaseCatalogScopeKey({\n\t\tchannelKey: input.channelKey,\n\t\tfingerprintHash: input.fingerprintHash,\n\t\tplatform: input.platform,\n\t\tstrategy: \"FINGERPRINT\"\n\t});\n\tconst row = await database.models.releaseCatalogs.findByScopeKey(scopeKey);\n\tif (row === null || row.platform !== input.platform || row.strategy !== input.strategy || row.channel_key !== input.channelKey || row.scope_key !== scopeKey || row.fingerprint_hash !== (input.strategy === \"FINGERPRINT\" ? input.fingerprintHash : null)) return null;\n\tconst compiled = parseCompiledCatalog(row.payload, input.strategy);\n\tconst releases = projectCompiledCatalog(compiled, input.strategy === \"APP_VERSION\" ? input.appVersion : void 0);\n\tconst rollbackReleases = projectCompiledRollbackCatalog(compiled, input.strategy === \"APP_VERSION\" ? input.appVersion : void 0);\n\treturn {\n\t\tcatalogId: row.catalog_id,\n\t\tcatalogHash: row.catalog_hash,\n\t\tfallbackPolicy: RELEASE_CATALOG_FALLBACK_POLICY,\n\t\tgeneration: row.generation,\n\t\treleases,\n\t\trollbackReleases,\n\t\tschemaVersion: RELEASE_CATALOG_SCHEMA_VERSION,\n\t\tscopeKey\n\t};\n};\nconst createArtifactResolver = (input) => {\n\tconst databaseClient = createDatabaseClient(input.database);\n\treturn async (targetBundleId, currentBundleId) => {\n\t\tconst [targetBundle, currentBundle] = await Promise.all([databaseClient.getBundleById(targetBundleId), currentBundleId === NIL_UUID ? null : databaseClient.getBundleById(currentBundleId)]);\n\t\tif (targetBundle === null) return null;\n\t\tconst fileUrl = await input.resolveFileUrl(targetBundle.storageUri);\n\t\tconst base = {\n\t\t\tfileHash: targetBundle.fileHash,\n\t\t\tfileUrl\n\t\t};\n\t\tif (input.readStorageText === void 0) return base;\n\t\tconst manifest = await resolveManifestArtifacts({\n\t\t\tarchiveUrlUsable: fileUrl !== null,\n\t\t\tcurrentBundle,\n\t\t\treadStorageText: input.readStorageText,\n\t\t\tresolveFileUrl: input.resolveFileUrl,\n\t\t\ttargetBundle\n\t\t});\n\t\treturn manifest === null ? base : {\n\t\t\t...base,\n\t\t\t...manifest\n\t\t};\n\t};\n};\n//#endregion\nexport { createArtifactResolver, createReleaseCatalogReader };\n", "import { createArtifactResolver, createReleaseCatalogReader } from \"./releaseCatalog.mjs\";\nimport { createDatabaseClient, deleteRelease, preflightReleasePolicy, rebuildReleaseCatalog, updateReleasePolicy } from \"@hot-updater/plugin-core\";\nimport { decodeChannelKey } from \"@hot-updater/core\";\n//#region src/db/databasePluginCore.ts\nfunction createDatabasePluginCore(database, resolveFileUrl, options) {\n\tconst client = createDatabaseClient(database);\n\tconst beforeOperation = options?.beforeOperation;\n\tconst getReleaseCatalog = createReleaseCatalogReader(database);\n\tconst getArtifact = createArtifactResolver({\n\t\tdatabase,\n\t\treadStorageText: options?.readStorageText,\n\t\tresolveFileUrl\n\t});\n\treturn {\n\t\tapi: {\n\t\t\tasync getBundleById(id) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn client.getBundleById(id);\n\t\t\t},\n\t\t\tasync getReleaseCatalog(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn getReleaseCatalog(input);\n\t\t\t},\n\t\t\tasync getArtifactInfo(targetBundleId, currentBundleId) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn getArtifact(targetBundleId, currentBundleId);\n\t\t\t},\n\t\t\tasync getReleaseById(id) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.releases.findById(id);\n\t\t\t},\n\t\t\tasync getReleasesByScope(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.releases.findManyByScope({\n\t\t\t\t\t...input,\n\t\t\t\t\tconsistency: \"strong\"\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync getReleases(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.releases.findMany(input);\n\t\t\t},\n\t\t\tasync getReleaseCatalogByScopeKey(scopeKey) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.releaseCatalogs.findByScopeKey(scopeKey);\n\t\t\t},\n\t\t\tasync getReleaseCatalogs(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.releaseCatalogs.findMany(input);\n\t\t\t},\n\t\t\tasync updateReleasePolicy(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn updateReleasePolicy({\n\t\t\t\t\tdatabase,\n\t\t\t\t\t...input\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync preflightReleasePolicy(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn preflightReleasePolicy({\n\t\t\t\t\tdatabase,\n\t\t\t\t\t...input\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync deleteRelease(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn deleteRelease({\n\t\t\t\t\tdatabase,\n\t\t\t\t\t...input\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync rebuildReleaseCatalog(scopeKey) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\tconst catalog = await database.models.releaseCatalogs.findByScopeKey(scopeKey);\n\t\t\t\tif (catalog === null) throw new Error(`Release catalog \"${scopeKey}\" was not found.`);\n\t\t\t\treturn rebuildReleaseCatalog({\n\t\t\t\t\tdatabase,\n\t\t\t\t\tscope: {\n\t\t\t\t\t\tchannelId: catalog.channel_id,\n\t\t\t\t\t\tchannelName: decodeChannelKey(catalog.channel_key),\n\t\t\t\t\t\tfingerprintHash: catalog.fingerprint_hash,\n\t\t\t\t\t\tplatform: catalog.platform,\n\t\t\t\t\t\tscopeKey: catalog.scope_key,\n\t\t\t\t\t\tstrategy: catalog.strategy\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync commitDatabase(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.commit(input);\n\t\t\t},\n\t\t\tasync getChannels() {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn client.getChannels();\n\t\t\t},\n\t\t\tasync insertChannel(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.channels.insert(input);\n\t\t\t},\n\t\t\tasync deleteChannel(input) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn database.models.channels.delete(input);\n\t\t\t},\n\t\t\tasync getBundles(options) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\treturn client.getBundles(options);\n\t\t\t},\n\t\t\tasync insertBundle(bundle) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\tawait client.insertBundle(bundle);\n\t\t\t},\n\t\t\tasync insertBundles(bundles) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\tawait client.mutate(async (transaction) => {\n\t\t\t\t\tfor (const bundle of bundles) await transaction.insertBundle(bundle);\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync updateBundleById(bundleId, update) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\tawait client.updateBundleById(bundleId, update);\n\t\t\t},\n\t\t\tasync deleteBundleById(bundleId) {\n\t\t\t\tawait beforeOperation?.();\n\t\t\t\tawait client.deleteBundleById(bundleId);\n\t\t\t}\n\t\t},\n\t\tadapterName: database.name,\n\t\tcreateMigrator: () => {\n\t\t\tthrow new Error(\"createMigrator is only available for Kysely/MongoDB database plugins.\");\n\t\t},\n\t\tgenerateSchema: () => {\n\t\t\tthrow new Error(\"generateSchema is only available for Drizzle/Prisma database plugins.\");\n\t\t}\n\t};\n}\n//#endregion\nexport { createDatabasePluginCore };\n", "//#region src/schema/types.ts\nconst HOT_UPDATER_SCHEMA_VERSION = \"1.0.0\";\nconst HOT_UPDATER_CORE_SCHEMA_KEY = \"schema.core\";\nconst HOT_UPDATER_SETTINGS_TABLE = \"private_hot_updater_settings\";\n//#endregion\nexport { HOT_UPDATER_CORE_SCHEMA_KEY, HOT_UPDATER_SCHEMA_VERSION, HOT_UPDATER_SETTINGS_TABLE };\n", "import { HOT_UPDATER_SCHEMA_VERSION } from \"../schema/types.mjs\";\n//#region src/db/fixedMigratorShared.ts\nconst getEmptyMigrationResult = () => ({\n\toperations: [],\n\texecute: async () => {},\n\tgetSQL: () => \"\"\n});\nconst assertSupportedMigrationMode = (options) => {\n\tif (options.mode === \"from-database\") throw new Error(\"Hot Updater migrations support only mode: 'from-schema'.\");\n};\nconst unsupportedSchemaUpgradeMessage = (version) => `Hot Updater v1 cannot migrate schema ${version} in place. Create a new empty database and run migrate or generate against schema ${HOT_UPDATER_SCHEMA_VERSION}.`;\nconst assertCurrentOrEmptySchemaVersion = (currentVersion) => {\n\tif (currentVersion !== void 0 && currentVersion !== \"1.0.0\") throw new Error(unsupportedSchemaUpgradeMessage(currentVersion));\n};\nconst inferLegacyCoreSchemaVersion = (legacyVersion) => legacyVersion;\nconst isCurrentSchemaVersion = (currentVersion) => currentVersion === HOT_UPDATER_SCHEMA_VERSION;\n//#endregion\nexport { assertCurrentOrEmptySchemaVersion, assertSupportedMigrationMode, getEmptyMigrationResult, inferLegacyCoreSchemaVersion, isCurrentSchemaVersion, unsupportedSchemaUpgradeMessage };\n", "import \"../schema/types.mjs\";\nimport { unsupportedSchemaUpgradeMessage } from \"./fixedMigratorShared.mjs\";\n//#region src/db/schemaReadiness.ts\nvar HotUpdaterSchemaMigrationRequiredError = class extends Error {\n\tconstructor(adapterName, currentVersion) {\n\t\tsuper(currentVersion === void 0 ? `Hot Updater database schema is not initialized for ${adapterName}. Run \\`hot-updater db migrate\\` before using this adapter.` : unsupportedSchemaUpgradeMessage(currentVersion));\n\t\tthis.adapterName = adapterName;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.name = \"HotUpdaterSchemaMigrationRequiredError\";\n\t}\n};\nconst createSchemaReadinessChecker = (adapterName, createMigrator) => {\n\tif (!createMigrator) return async () => {};\n\tlet ready = false;\n\treturn async () => {\n\t\tif (ready) return;\n\t\tconst version = await createMigrator().getVersion();\n\t\tif (version !== \"1.0.0\") throw new HotUpdaterSchemaMigrationRequiredError(adapterName, version);\n\t\tready = true;\n\t};\n};\n//#endregion\nexport { HotUpdaterSchemaMigrationRequiredError, createSchemaReadinessChecker };\n", "//#region src/db/types.ts\nconst sqlProviders = [\n\t\"sqlite\",\n\t\"cockroachdb\",\n\t\"mysql\",\n\t\"postgresql\",\n\t\"mssql\"\n];\nconst noSqlProviders = [\"mongodb\"];\n[...sqlProviders, ...noSqlProviders];\nfunction isDatabasePlugin(plugin) {\n\treturn typeof plugin === \"object\" && plugin !== null && \"name\" in plugin && typeof plugin.name === \"string\" && \"models\" in plugin && typeof plugin.models === \"object\" && plugin.models !== null && \"bundles\" in plugin.models && typeof plugin.models.bundles === \"object\" && plugin.models.bundles !== null && \"findById\" in plugin.models.bundles && typeof plugin.models.bundles.findById === \"function\" && \"findMany\" in plugin.models.bundles && typeof plugin.models.bundles.findMany === \"function\" && \"count\" in plugin.models.bundles && typeof plugin.models.bundles.count === \"function\" && \"bundlePatches\" in plugin.models && typeof plugin.models.bundlePatches === \"object\" && plugin.models.bundlePatches !== null && \"findByBundleIds\" in plugin.models.bundlePatches && typeof plugin.models.bundlePatches.findByBundleIds === \"function\" && \"channels\" in plugin.models && typeof plugin.models.channels === \"object\" && plugin.models.channels !== null && \"insert\" in plugin.models.channels && typeof plugin.models.channels.insert === \"function\" && \"list\" in plugin.models.channels && typeof plugin.models.channels.list === \"function\" && \"delete\" in plugin.models.channels && typeof plugin.models.channels.delete === \"function\" && \"analytics\" in plugin.models && typeof plugin.models.analytics === \"object\" && plugin.models.analytics !== null && \"append\" in plugin.models.analytics && typeof plugin.models.analytics.append === \"function\" && \"scan\" in plugin.models.analytics && typeof plugin.models.analytics.scan === \"function\" && \"apiKeys\" in plugin.models && typeof plugin.models.apiKeys === \"object\" && plugin.models.apiKeys !== null && \"create\" in plugin.models.apiKeys && typeof plugin.models.apiKeys.create === \"function\" && \"findByHash\" in plugin.models.apiKeys && typeof plugin.models.apiKeys.findByHash === \"function\" && \"list\" in plugin.models.apiKeys && typeof plugin.models.apiKeys.list === \"function\" && \"revoke\" in plugin.models.apiKeys && typeof plugin.models.apiKeys.revoke === \"function\" && \"commit\" in plugin && typeof plugin.commit === \"function\" && (!(\"dispose\" in plugin) || plugin.dispose === void 0 || typeof plugin.dispose === \"function\");\n}\nfunction getSQLProvider(provider) {\n\tif (!provider) return;\n\treturn sqlProviders.includes(provider) ? provider : void 0;\n}\n//#endregion\nexport { getSQLProvider, isDatabasePlugin };\n", "import { parseStorageDownloadPath } from \"@hot-updater/plugin-core\";\n//#region src/storageAccess.ts\nconst assertRemoteUrl = (value) => {\n\tconst protocol = new URL(value).protocol;\n\tif (protocol !== \"http:\" && protocol !== \"https:\") throw new Error(\"Storage getDownloadUrl must resolve to an HTTP(S) URL.\");\n\treturn value;\n};\nconst getStorageProtocol = (storageUri) => new URL(storageUri).protocol.replace(\":\", \"\");\nconst isRemoteUrlProtocol = (protocol) => protocol === \"http\" || protocol === \"https\";\nconst resolveDownloadPath = (value, storageUri) => {\n\tconst parsed = parseStorageDownloadPath(value);\n\tif (!parsed || parsed.storageUri !== storageUri) throw new Error(\"Storage getDownloadUrl must return an HTTP(S) URL or a valid storage download path.\");\n\treturn value;\n};\nconst tokensEqual = (left, right) => {\n\tconst leftBytes = new TextEncoder().encode(left);\n\tconst rightBytes = new TextEncoder().encode(right);\n\tlet difference = leftBytes.length ^ rightBytes.length;\n\tconst length = Math.max(leftBytes.length, rightBytes.length);\n\tfor (let index = 0; index < length; index += 1) difference |= (leftBytes[index] ?? 0) ^ (rightBytes[index] ?? 0);\n\treturn difference === 0;\n};\nconst createStorageAccess = (storagePlugins) => {\n\tconst protocols = /* @__PURE__ */ new Set();\n\tfor (const storage of storagePlugins) {\n\t\tif (protocols.has(storage.protocol)) throw new Error(`Multiple storage plugins handle protocol: ${storage.protocol}`);\n\t\tprotocols.add(storage.protocol);\n\t}\n\tconst findStorage = (protocol) => storagePlugins.find((item) => item.protocol === protocol);\n\tconst readStorageResponse = async (storageUri) => {\n\t\tconst protocol = getStorageProtocol(storageUri);\n\t\tconst storage = findStorage(protocol);\n\t\tif (storage) return (await storage.get({ storageUri })).response;\n\t\tif (isRemoteUrlProtocol(protocol)) {\n\t\t\tconst response = await fetch(storageUri);\n\t\t\treturn response.ok ? response : null;\n\t\t}\n\t\tthrow new Error(`No storage plugin for protocol: ${protocol}`);\n\t};\n\tconst resolveFileUrl = async (storageUri) => {\n\t\tif (!storageUri) return null;\n\t\tconst protocol = getStorageProtocol(storageUri);\n\t\tconst storage = findStorage(protocol);\n\t\tif (!storage) {\n\t\t\tif (isRemoteUrlProtocol(protocol)) return storageUri;\n\t\t\tthrow new Error(`No storage plugin for protocol: ${protocol}`);\n\t\t}\n\t\tif (!storage.getDownloadUrl) throw new Error(`Storage plugin \"${storage.name}\" does not implement getDownloadUrl.`);\n\t\tconst { url: downloadUrl } = await storage.getDownloadUrl({ storageUri });\n\t\ttry {\n\t\t\treturn assertRemoteUrl(downloadUrl);\n\t\t} catch (error) {\n\t\t\tif (/^[a-z][a-z\\d+.-]*:/i.test(downloadUrl)) throw error;\n\t\t}\n\t\treturn resolveDownloadPath(downloadUrl, storageUri);\n\t};\n\tconst readStorageText = async (storageUri) => {\n\t\treturn (await readStorageResponse(storageUri))?.text() ?? null;\n\t};\n\treturn {\n\t\tdownloadStorageObject: storagePlugins.some((storage) => storage.getDownloadUrl !== void 0) ? async (storageUriToken, encodedSignature) => {\n\t\t\tconst requestedPath = `/storage/${storageUriToken}/${encodedSignature}`;\n\t\t\tconst requested = parseStorageDownloadPath(requestedPath);\n\t\t\tif (!requested) return null;\n\t\t\tlet storage;\n\t\t\ttry {\n\t\t\t\tstorage = findStorage(getStorageProtocol(requested.storageUri));\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!storage?.getDownloadUrl) return null;\n\t\t\tconst { url: downloadUrl } = await storage.getDownloadUrl({ storageUri: requested.storageUri });\n\t\t\ttry {\n\t\t\t\tnew URL(downloadUrl);\n\t\t\t\treturn null;\n\t\t\t} catch {\n\t\t\t\tif (/^[a-z][a-z\\d+.-]*:/i.test(downloadUrl)) return null;\n\t\t\t}\n\t\t\tif (!tokensEqual(downloadUrl, requestedPath)) return null;\n\t\t\treturn (await storage.get({ storageUri: requested.storageUri })).response;\n\t\t} : void 0,\n\t\treadStorageText,\n\t\tresolveFileUrl\n\t};\n};\n//#endregion\nexport { createStorageAccess };\n", "import { createHotUpdaterHandlers } from \"./handler.mjs\";\nimport { createAnalyticsProvider } from \"./analytics/bounded/provider.mjs\";\nimport { authenticateApiKey, createApiKeyManagement, normalizeApiKeyHeaderName } from \"./apiKeys.mjs\";\nimport { createDatabasePluginCore } from \"./db/databasePluginCore.mjs\";\nimport { createSchemaReadinessChecker } from \"./db/schemaReadiness.mjs\";\nimport { isDatabasePlugin } from \"./db/types.mjs\";\nimport { createStorageAccess } from \"./storageAccess.mjs\";\nimport { assertStorageOperations } from \"@hot-updater/plugin-core\";\n//#region src/createHotUpdaterCore.ts\nconst normalizeClientAccess = (value) => {\n\tif (value === null || typeof value !== \"object\" || Array.isArray(value)) throw new TypeError(\"clientAccess must be an object.\");\n\tconst policy = value;\n\tif (policy.type === \"public\") return { type: \"public\" };\n\tif (policy.type === \"api-key\") return {\n\t\theaderName: normalizeApiKeyHeaderName(policy.headerName),\n\t\ttype: \"api-key\"\n\t};\n\tthrow new TypeError(\"clientAccess.type must be either \\\"public\\\" or \\\"api-key\\\".\");\n};\nconst hotUpdaterCoreMetadata = Symbol.for(\"@hot-updater/server/core-metadata\");\nfunction getHotUpdaterCoreMetadata(hotUpdater) {\n\treturn hotUpdater[hotUpdaterCoreMetadata];\n}\nfunction createHotUpdaterCore(options) {\n\tfor (const key of [\"authorityId\", \"catalogId\"]) if (Object.hasOwn(options, key)) throw new TypeError(`Remove ${key} from createHotUpdater options. Catalog identity is managed internally.`);\n\tconst database = options.database;\n\tconst { downloadStorageObject, readStorageText, resolveFileUrl } = createStorageAccess((options.storage ?? []).map((storage) => {\n\t\tassertStorageOperations(storage, [\"get\", \"getDownloadUrl\"]);\n\t\treturn storage;\n\t}));\n\tconst adapterCapabilities = database;\n\tif (!isDatabasePlugin(database)) throw new Error(\"@hot-updater/server only supports database plugins.\");\n\tconst plugin = database;\n\tconst assertSchemaReady = createSchemaReadinessChecker(adapterCapabilities.adapterName ?? plugin.name, adapterCapabilities.createMigrator);\n\tconst core = createDatabasePluginCore(plugin, resolveFileUrl, {\n\t\tbeforeOperation: assertSchemaReady,\n\t\treadStorageText\n\t});\n\tconst clientAccess = normalizeClientAccess(options.clientAccess);\n\tconst analytics = createAnalyticsProvider({\n\t\tasync append(row) {\n\t\t\tawait assertSchemaReady();\n\t\t\treturn plugin.models.analytics.append(row);\n\t\t},\n\t\tasync scan(input) {\n\t\t\tawait assertSchemaReady();\n\t\t\treturn plugin.models.analytics.scan(input);\n\t\t}\n\t});\n\tconst apiKeys = createApiKeyManagement({\n\t\tapiKeys: plugin.models.apiKeys,\n\t\tbeforeOperation: assertSchemaReady\n\t});\n\tconst handlers = createHotUpdaterHandlers(core.api, analytics, clientAccess.type === \"api-key\" ? {\n\t\tauthenticate: (request) => authenticateApiKey({\n\t\t\tapiKeys: plugin.models.apiKeys,\n\t\t\tbeforeLookup: assertSchemaReady,\n\t\t\theaderName: clientAccess.headerName,\n\t\t\trequest\n\t\t}),\n\t\theaderName: clientAccess.headerName\n\t} : void 0, downloadStorageObject);\n\tconst api = Object.assign({\n\t\tadapterName: adapterCapabilities.adapterName ?? core.adapterName,\n\t\tanalytics,\n\t\tapiKeys,\n\t\thandlers\n\t}, core.api);\n\tObject.defineProperty(api, hotUpdaterCoreMetadata, {\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tadapterCapabilities,\n\t\t\tcore\n\t\t}\n\t});\n\treturn {\n\t\tapi,\n\t\tadapterCapabilities,\n\t\tcore\n\t};\n}\nfunction createHotUpdater(options) {\n\treturn createHotUpdaterCore(options).api;\n}\n//#endregion\nexport { createHotUpdater, getHotUpdaterCoreMetadata };\n", "import { createHotUpdater } from \"@hot-updater/server\";\nimport { env } from \"cloudflare:workers\";\nimport { Hono } from \"hono\";\n\nimport { d1Database, r2Storage } from \"../../src/worker\";\n\nexport type CloudflareWorkerEnv = {\n DB: {\n batch: D1Database[\"batch\"];\n prepare: D1Database[\"prepare\"];\n };\n BUCKET: R2Bucket;\n BUCKET_NAME: string;\n STORAGE_DOWNLOAD_URL_SIGNING_KEY: string;\n};\n\nexport const HOT_UPDATER_BASE_PATH = \"/\";\n\nconst hotUpdater = createHotUpdater({\n database: d1Database(env.DB),\n clientAccess: { type: \"api-key\" },\n storage: [\n r2Storage({\n bucket: env.BUCKET,\n bucketName: env.BUCKET_NAME,\n downloadUrlSigningKey: env.STORAGE_DOWNLOAD_URL_SIGNING_KEY,\n }),\n ],\n});\n\nconst app = new Hono<{ Bindings: CloudflareWorkerEnv }>();\n\napp.mount(HOT_UPDATER_BASE_PATH, (request: Request) =>\n hotUpdater.handlers.client(request),\n);\n\nexport default app;\n", "// src/compose.ts\nvar compose = (middleware, onError, onNotFound) => {\n return (context, next) => {\n let index = -1;\n return dispatch(0);\n async function dispatch(i) {\n if (i <= index) {\n throw new Error(\"next() called multiple times\");\n }\n index = i;\n let res;\n let isError = false;\n let handler;\n if (middleware[i]) {\n handler = middleware[i][0][0];\n context.req.routeIndex = i;\n } else {\n handler = i === middleware.length && next || void 0;\n }\n if (handler) {\n try {\n res = await handler(context, () => dispatch(i + 1));\n } catch (err) {\n if (err instanceof Error && onError) {\n context.error = err;\n res = await onError(err, context);\n isError = true;\n } else {\n throw err;\n }\n }\n } else {\n if (context.finalized === false && onNotFound) {\n res = await onNotFound(context);\n }\n }\n if (res && (context.finalized === false || isError)) {\n context.res = res;\n }\n return context;\n }\n };\n};\nexport {\n compose\n};\n", "// src/request/constants.ts\nvar GET_MATCH_RESULT = /* @__PURE__ */ Symbol();\nexport {\n GET_MATCH_RESULT\n};\n", "// src/utils/buffer.ts\nimport { sha256 } from \"./crypto.js\";\nvar equal = (a, b) => {\n if (a === b) {\n return true;\n }\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n const va = new DataView(a);\n const vb = new DataView(b);\n let i = va.byteLength;\n while (i--) {\n if (va.getUint8(i) !== vb.getUint8(i)) {\n return false;\n }\n }\n return true;\n};\nvar constantTimeEqualString = (a, b) => {\n const aLen = a.length;\n const bLen = b.length;\n const maxLen = Math.max(aLen, bLen);\n let out = aLen ^ bLen;\n for (let i = 0; i < maxLen; i++) {\n const aChar = i < aLen ? a.charCodeAt(i) : 0;\n const bChar = i < bLen ? b.charCodeAt(i) : 0;\n out |= aChar ^ bChar;\n }\n return out === 0;\n};\nvar timingSafeEqualString = async (a, b, hashFunction) => {\n if (!hashFunction) {\n hashFunction = sha256;\n }\n const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);\n if (sa == null || sb == null || typeof sa !== \"string\" || typeof sb !== \"string\") {\n return false;\n }\n const hashEqual = constantTimeEqualString(sa, sb);\n const originalEqual = constantTimeEqualString(a, b);\n return hashEqual && originalEqual;\n};\nvar timingSafeEqual = async (a, b, hashFunction) => {\n if (typeof a === \"string\" && typeof b === \"string\") {\n return timingSafeEqualString(a, b, hashFunction);\n }\n if (!hashFunction) {\n hashFunction = sha256;\n }\n const [sa, sb] = await Promise.all([hashFunction(a), hashFunction(b)]);\n if (!sa || !sb || typeof sa !== \"string\" || typeof sb !== \"string\") {\n return false;\n }\n return timingSafeEqualString(sa, sb);\n};\nvar bufferToString = (buffer) => {\n if (buffer instanceof ArrayBuffer) {\n const enc = new TextDecoder(\"utf-8\");\n return enc.decode(buffer);\n }\n return buffer;\n};\nvar bufferToFormData = (arrayBuffer, contentType) => {\n const response = new Response(arrayBuffer, {\n headers: {\n // Normalize the media type (case-insensitive) while keeping parameters like the boundary\n \"Content-Type\": contentType.replace(/^[^;]+/, (mediaType) => mediaType.toLowerCase())\n }\n });\n return response.formData();\n};\nexport {\n bufferToFormData,\n bufferToString,\n equal,\n timingSafeEqual\n};\n", "// src/utils/body.ts\nimport { bufferToFormData } from \"./buffer.js\";\nvar isRawRequest = (request) => \"headers\" in request;\nvar parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {\n const { all = false, dot = false } = options;\n const headers = isRawRequest(request) ? request.headers : request.raw.headers;\n const contentType = headers.get(\"Content-Type\");\n const mediaType = contentType?.split(\";\")[0].trim().toLowerCase();\n if (mediaType === \"multipart/form-data\" || mediaType === \"application/x-www-form-urlencoded\") {\n return parseFormData(request, { all, dot });\n }\n return {};\n};\nasync function parseFormData(request, options) {\n if (!isRawRequest(request) && request.bodyCache.formData) {\n return convertFormDataToBodyData(\n await request.bodyCache.formData,\n options\n );\n }\n const headers = isRawRequest(request) ? request.headers : request.raw.headers;\n const arrayBuffer = await request.arrayBuffer();\n const formDataPromise = bufferToFormData(arrayBuffer, headers.get(\"Content-Type\") || \"\");\n if (!isRawRequest(request)) {\n request.bodyCache.formData = formDataPromise;\n }\n const formData = await formDataPromise;\n if (formData) {\n return convertFormDataToBodyData(formData, options);\n }\n return {};\n}\nfunction convertFormDataToBodyData(formData, options) {\n const form = /* @__PURE__ */ Object.create(null);\n formData.forEach((value, key) => {\n const shouldParseAllValues = options.all || key.endsWith(\"[]\");\n if (!shouldParseAllValues) {\n form[key] = value;\n } else {\n handleParsingAllValues(form, key, value);\n }\n });\n if (options.dot) {\n Object.entries(form).forEach(([key, value]) => {\n const shouldParseDotValues = key.includes(\".\");\n if (shouldParseDotValues) {\n handleParsingNestedValues(form, key, value);\n delete form[key];\n }\n });\n }\n return form;\n}\nvar handleParsingAllValues = (form, key, value) => {\n if (form[key] !== void 0) {\n if (Array.isArray(form[key])) {\n ;\n form[key].push(value);\n } else {\n form[key] = [form[key], value];\n }\n } else {\n if (!key.endsWith(\"[]\")) {\n form[key] = value;\n } else {\n form[key] = [value];\n }\n }\n};\nvar handleParsingNestedValues = (form, key, value) => {\n if (/(?:^|\\.)__proto__\\./.test(key)) {\n return;\n }\n let nestedForm = form;\n const keys = key.split(\".\");\n keys.forEach((key2, index) => {\n if (index === keys.length - 1) {\n nestedForm[key2] = value;\n } else {\n if (!nestedForm[key2] || typeof nestedForm[key2] !== \"object\" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {\n nestedForm[key2] = /* @__PURE__ */ Object.create(null);\n }\n nestedForm = nestedForm[key2];\n }\n });\n};\nexport {\n parseBody\n};\n", "// src/utils/url.ts\nvar splitPath = (path) => {\n const paths = path.split(\"/\");\n if (paths[0] === \"\") {\n paths.shift();\n }\n return paths;\n};\nvar splitRoutingPath = (routePath) => {\n const { groups, path } = extractGroupsFromPath(routePath);\n const paths = splitPath(path);\n return replaceGroupMarks(paths, groups);\n};\nvar extractGroupsFromPath = (path) => {\n const groups = [];\n path = path.replace(/\\{[^}]+\\}/g, (match, index) => {\n const mark = `@${index}`;\n groups.push([mark, match]);\n return mark;\n });\n return { groups, path };\n};\nvar replaceGroupMarks = (paths, groups) => {\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = paths.length - 1; j >= 0; j--) {\n if (paths[j].includes(mark)) {\n paths[j] = paths[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n return paths;\n};\nvar patternCache = {};\nvar getPattern = (label, next) => {\n if (label === \"*\") {\n return \"*\";\n }\n const match = label.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n if (match) {\n const cacheKey = `${label}#${next}`;\n if (!patternCache[cacheKey]) {\n if (match[2]) {\n patternCache[cacheKey] = next && next[0] !== \":\" && next[0] !== \"*\" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];\n } else {\n patternCache[cacheKey] = [label, match[1], true];\n }\n }\n return patternCache[cacheKey];\n }\n return null;\n};\nvar tryDecode = (str, decoder) => {\n try {\n return decoder(str);\n } catch {\n return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {\n try {\n return decoder(match);\n } catch {\n return match;\n }\n });\n }\n};\nvar tryDecodeURI = (str) => tryDecode(str, decodeURI);\nvar getPath = (request) => {\n const url = request.url;\n const start = url.indexOf(\"/\", url.indexOf(\":\") + 4);\n let i = start;\n for (; i < url.length; i++) {\n const charCode = url.charCodeAt(i);\n if (charCode === 37) {\n const queryIndex = url.indexOf(\"?\", i);\n const hashIndex = url.indexOf(\"#\", i);\n const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex);\n const path = url.slice(start, end);\n return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n } else if (charCode === 63 || charCode === 35) {\n break;\n }\n }\n return url.slice(start, i);\n};\nvar getQueryStrings = (url) => {\n const queryIndex = url.indexOf(\"?\", 8);\n return queryIndex === -1 ? \"\" : \"?\" + url.slice(queryIndex + 1);\n};\nvar getPathNoStrict = (request) => {\n const result = getPath(request);\n return result.length > 1 && result.at(-1) === \"/\" ? result.slice(0, -1) : result;\n};\nvar mergePath = (base, sub, ...rest) => {\n if (rest.length) {\n sub = mergePath(sub, ...rest);\n }\n return `${base?.[0] === \"/\" ? \"\" : \"/\"}${base}${sub === \"/\" ? \"\" : `${base?.at(-1) === \"/\" ? \"\" : \"/\"}${sub?.[0] === \"/\" ? sub.slice(1) : sub}`}`;\n};\nvar checkOptionalParameter = (path) => {\n if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(\":\")) {\n return null;\n }\n const segments = path.split(\"/\");\n const results = [];\n let basePath = \"\";\n segments.forEach((segment) => {\n if (segment !== \"\" && !/\\:/.test(segment)) {\n basePath += \"/\" + segment;\n } else if (/\\:/.test(segment)) {\n if (/\\?/.test(segment)) {\n if (results.length === 0 && basePath === \"\") {\n results.push(\"/\");\n } else {\n results.push(basePath);\n }\n const optionalSegment = segment.replace(\"?\", \"\");\n basePath += \"/\" + optionalSegment;\n results.push(basePath);\n } else {\n basePath += \"/\" + segment;\n }\n }\n });\n return results.filter((v, i, a) => a.indexOf(v) === i);\n};\nvar _decodeURI = (value) => {\n if (!/[%+]/.test(value)) {\n return value;\n }\n if (value.indexOf(\"+\") !== -1) {\n value = value.replace(/\\+/g, \" \");\n }\n return value.indexOf(\"%\") !== -1 ? tryDecode(value, decodeURIComponent_) : value;\n};\nvar _getQueryParam = (url, key, multiple) => {\n let encoded;\n if (!multiple && key && !/[%+]/.test(key)) {\n let keyIndex2 = url.indexOf(\"?\", 8);\n if (keyIndex2 === -1) {\n return void 0;\n }\n if (!url.startsWith(key, keyIndex2 + 1)) {\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n while (keyIndex2 !== -1) {\n const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);\n if (trailingKeyCode === 61) {\n const valueIndex = keyIndex2 + key.length + 2;\n const endIndex = url.indexOf(\"&\", valueIndex);\n return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));\n } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {\n return \"\";\n }\n keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n }\n encoded = /[%+]/.test(url);\n if (!encoded) {\n return void 0;\n }\n }\n const results = /* @__PURE__ */ Object.create(null);\n encoded ??= /[%+]/.test(url);\n let keyIndex = url.indexOf(\"?\", 8);\n while (keyIndex !== -1) {\n const nextKeyIndex = url.indexOf(\"&\", keyIndex + 1);\n let valueIndex = url.indexOf(\"=\", keyIndex);\n if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {\n valueIndex = -1;\n }\n let name = url.slice(\n keyIndex + 1,\n valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex\n );\n if (encoded) {\n name = _decodeURI(name);\n }\n keyIndex = nextKeyIndex;\n if (name === \"\") {\n continue;\n }\n let value;\n if (valueIndex === -1) {\n value = \"\";\n } else {\n value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);\n if (encoded) {\n value = _decodeURI(value);\n }\n }\n if (multiple) {\n if (!(results[name] && Array.isArray(results[name]))) {\n results[name] = [];\n }\n ;\n results[name].push(value);\n } else {\n results[name] ??= value;\n }\n }\n return key ? results[key] : results;\n};\nvar getQueryParam = _getQueryParam;\nvar getQueryParams = (url, key) => {\n return _getQueryParam(url, key, true);\n};\nvar decodeURIComponent_ = decodeURIComponent;\nexport {\n checkOptionalParameter,\n decodeURIComponent_,\n getPath,\n getPathNoStrict,\n getPattern,\n getQueryParam,\n getQueryParams,\n getQueryStrings,\n mergePath,\n splitPath,\n splitRoutingPath,\n tryDecode,\n tryDecodeURI\n};\n", "// src/request.ts\nimport { HTTPException } from \"./http-exception.js\";\nimport { GET_MATCH_RESULT } from \"./request/constants.js\";\nimport { parseBody } from \"./utils/body.js\";\nimport { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from \"./utils/url.js\";\nvar tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);\nvar HonoRequest = class {\n /**\n * `.raw` can get the raw Request object.\n *\n * @see {@link https://hono.dev/docs/api/request#raw}\n *\n * @example\n * ```ts\n * // For Cloudflare Workers\n * app.post('/', async (c) => {\n * const metadata = c.req.raw.cf?.hostMetadata?\n * ...\n * })\n * ```\n */\n raw;\n #validatedData;\n // Short name of validatedData\n #matchResult;\n routeIndex = 0;\n /**\n * `.path` can get the pathname of the request.\n *\n * @see {@link https://hono.dev/docs/api/request#path}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const pathname = c.req.path // `/about/me`\n * })\n * ```\n */\n path;\n bodyCache = {};\n constructor(request, path = \"/\", matchResult = [[]]) {\n this.raw = request;\n this.path = path;\n this.#matchResult = matchResult;\n this.#validatedData = {};\n }\n param(key) {\n return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();\n }\n #getDecodedParam(key) {\n const paramKey = this.#matchResult[0][this.routeIndex][1][key];\n const param = this.#getParamValue(paramKey);\n return param && /\\%/.test(param) ? tryDecodeURIComponent(param) : param;\n }\n #getAllDecodedParams() {\n const decoded = {};\n const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);\n for (const key of keys) {\n const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);\n if (value !== void 0) {\n decoded[key] = /\\%/.test(value) ? tryDecodeURIComponent(value) : value;\n }\n }\n return decoded;\n }\n #getParamValue(paramKey) {\n return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;\n }\n query(key) {\n return getQueryParam(this.url, key);\n }\n queries(key) {\n return getQueryParams(this.url, key);\n }\n header(name) {\n if (name) {\n return this.raw.headers.get(name) ?? void 0;\n }\n const headerData = /* @__PURE__ */ Object.create(null);\n this.raw.headers.forEach((value, key) => {\n headerData[key] = value;\n });\n return headerData;\n }\n async parseBody(options) {\n return parseBody(this, options);\n }\n #cachedBody = (key) => {\n const { bodyCache, raw } = this;\n const cachedBody = bodyCache[key];\n if (cachedBody) {\n return cachedBody;\n }\n const anyCachedKey = Object.keys(bodyCache)[0];\n if (anyCachedKey) {\n return bodyCache[anyCachedKey].then((body) => {\n if (anyCachedKey === \"json\") {\n body = JSON.stringify(body);\n }\n return new Response(body)[key]();\n });\n }\n return bodyCache[key] = raw[key]();\n };\n /**\n * `.json()` can parse Request body of type `application/json`\n *\n * @see {@link https://hono.dev/docs/api/request#json}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.json()\n * })\n * ```\n */\n json() {\n return this.#cachedBody(\"text\").then((text) => JSON.parse(text));\n }\n /**\n * `.text()` can parse Request body of type `text/plain`\n *\n * @see {@link https://hono.dev/docs/api/request#text}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.text()\n * })\n * ```\n */\n text() {\n return this.#cachedBody(\"text\");\n }\n /**\n * `.arrayBuffer()` parse Request body as an `ArrayBuffer`\n *\n * @see {@link https://hono.dev/docs/api/request#arraybuffer}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.arrayBuffer()\n * })\n * ```\n */\n arrayBuffer() {\n return this.#cachedBody(\"arrayBuffer\");\n }\n /**\n * `.bytes()` parses the request body as a `Uint8Array`.\n *\n * @see {@link https://hono.dev/docs/api/request#bytes}\n *\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.bytes()\n * })\n * ```\n */\n bytes() {\n return this.#cachedBody(\"arrayBuffer\").then((buffer) => new Uint8Array(buffer));\n }\n /**\n * Parses the request body as a `Blob`.\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.blob();\n * });\n * ```\n * @see https://hono.dev/docs/api/request#blob\n */\n blob() {\n return this.#cachedBody(\"blob\");\n }\n /**\n * Parses the request body as `FormData`.\n * @example\n * ```ts\n * app.post('/entry', async (c) => {\n * const body = await c.req.formData();\n * });\n * ```\n * @see https://hono.dev/docs/api/request#formdata\n */\n formData() {\n return this.#cachedBody(\"formData\");\n }\n /**\n * Adds validated data to the request.\n *\n * @param target - The target of the validation.\n * @param data - The validated data to add.\n */\n addValidatedData(target, data) {\n this.#validatedData[target] = data;\n }\n valid(target) {\n return this.#validatedData[target];\n }\n /**\n * `.url()` can get the request url strings.\n *\n * @see {@link https://hono.dev/docs/api/request#url}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const url = c.req.url // `http://localhost:8787/about/me`\n * ...\n * })\n * ```\n */\n get url() {\n return this.raw.url;\n }\n /**\n * `.method()` can get the method name of the request.\n *\n * @see {@link https://hono.dev/docs/api/request#method}\n *\n * @example\n * ```ts\n * app.get('/about/me', (c) => {\n * const method = c.req.method // `GET`\n * })\n * ```\n */\n get method() {\n return this.raw.method;\n }\n get [GET_MATCH_RESULT]() {\n return this.#matchResult;\n }\n /**\n * `.matchedRoutes()` can return a matched route in the handler\n *\n * @deprecated\n *\n * Use matchedRoutes helper defined in \"hono/route\" instead.\n *\n * @see {@link https://hono.dev/docs/api/request#matchedroutes}\n *\n * @example\n * ```ts\n * app.use('*', async function logger(c, next) {\n * await next()\n * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {\n * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')\n * console.log(\n * method,\n * ' ',\n * path,\n * ' '.repeat(Math.max(10 - path.length, 0)),\n * name,\n * i === c.req.routeIndex ? '<- respond from here' : ''\n * )\n * })\n * })\n * ```\n */\n get matchedRoutes() {\n return this.#matchResult[0].map(([[, route]]) => route);\n }\n /**\n * `routePath()` can retrieve the path registered within the handler\n *\n * @deprecated\n *\n * Use routePath helper defined in \"hono/route\" instead.\n *\n * @see {@link https://hono.dev/docs/api/request#routepath}\n *\n * @example\n * ```ts\n * app.get('/posts/:id', (c) => {\n * return c.json({ path: c.req.routePath })\n * })\n * ```\n */\n get routePath() {\n return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;\n }\n};\nvar cloneRawRequest = async (req) => {\n if (!req.raw.bodyUsed) {\n return req.raw.clone();\n }\n const cacheKey = Object.keys(req.bodyCache)[0];\n if (!cacheKey) {\n throw new HTTPException(500, {\n message: \"Cannot clone request: body was already consumed and not cached. Please use HonoRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly.\"\n });\n }\n const body = await req[cacheKey]();\n const headers = req.header();\n if (body instanceof FormData) {\n delete headers[\"content-type\"];\n }\n const requestInit = {\n body,\n cache: req.raw.cache,\n credentials: req.raw.credentials,\n headers,\n integrity: req.raw.integrity,\n keepalive: req.raw.keepalive,\n method: req.method,\n mode: req.raw.mode,\n redirect: req.raw.redirect,\n referrer: req.raw.referrer,\n referrerPolicy: req.raw.referrerPolicy,\n signal: req.raw.signal\n };\n return new Request(req.url, requestInit);\n};\nexport {\n HonoRequest,\n cloneRawRequest\n};\n", "// src/utils/html.ts\nvar HtmlEscapedCallbackPhase = {\n Stringify: 1,\n BeforeStream: 2,\n Stream: 3\n};\nvar raw = (value, callbacks) => {\n const escapedString = new String(value);\n escapedString.isEscaped = true;\n escapedString.callbacks = callbacks;\n return escapedString;\n};\nvar escapeRe = /[&<>'\"]/;\nvar stringBufferToString = async (buffer, callbacks) => {\n let str = \"\";\n callbacks ||= [];\n const resolvedBuffer = await Promise.all(buffer);\n for (let i = resolvedBuffer.length - 1; ; i--) {\n str += resolvedBuffer[i];\n i--;\n if (i < 0) {\n break;\n }\n let r = resolvedBuffer[i];\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n const isEscaped = r.isEscaped;\n r = await (typeof r === \"object\" ? r.toString() : r);\n if (typeof r === \"object\") {\n callbacks.push(...r.callbacks || []);\n }\n if (r.isEscaped ?? isEscaped) {\n str += r;\n } else {\n const buf = [str];\n escapeToBuffer(r, buf);\n str = buf[0];\n }\n }\n return raw(str, callbacks);\n};\nvar escapeToBuffer = (str, buffer) => {\n const match = str.search(escapeRe);\n if (match === -1) {\n buffer[0] += str;\n return;\n }\n let escape;\n let index;\n let lastIndex = 0;\n for (index = match; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escape = \"&quot;\";\n break;\n case 39:\n escape = \"&#39;\";\n break;\n case 38:\n escape = \"&amp;\";\n break;\n case 60:\n escape = \"&lt;\";\n break;\n case 62:\n escape = \"&gt;\";\n break;\n default:\n continue;\n }\n buffer[0] += str.substring(lastIndex, index) + escape;\n lastIndex = index + 1;\n }\n buffer[0] += str.substring(lastIndex, index);\n};\nvar resolveCallbackSync = (str) => {\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return str;\n }\n const buffer = [str];\n const context = {};\n callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));\n return buffer[0];\n};\nvar resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {\n if (typeof str === \"object\" && !(str instanceof String)) {\n if (!(str instanceof Promise)) {\n str = str.toString();\n }\n if (str instanceof Promise) {\n str = await str;\n }\n }\n const callbacks = str.callbacks;\n if (!callbacks?.length) {\n return Promise.resolve(str);\n }\n if (buffer) {\n buffer[0] += str;\n } else {\n buffer = [str];\n }\n const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(\n (res) => Promise.all(\n res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))\n ).then(() => buffer[0])\n );\n if (preserveCallbacks) {\n return raw(await resStr, callbacks);\n } else {\n return resStr;\n }\n};\nexport {\n HtmlEscapedCallbackPhase,\n escapeToBuffer,\n raw,\n resolveCallback,\n resolveCallbackSync,\n stringBufferToString\n};\n", "// src/context.ts\nimport { HonoRequest } from \"./request.js\";\nimport { HtmlEscapedCallbackPhase, resolveCallback } from \"./utils/html.js\";\nvar TEXT_PLAIN = \"text/plain; charset=UTF-8\";\nvar setDefaultContentType = (contentType, headers) => {\n return {\n \"Content-Type\": contentType,\n ...headers\n };\n};\nvar createResponseInstance = (body, init) => new Response(body, init);\nvar Context = class {\n #rawRequest;\n #req;\n /**\n * `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.\n *\n * @see {@link https://hono.dev/docs/api/context#env}\n *\n * @example\n * ```ts\n * // Environment object for Cloudflare Workers\n * app.get('*', async c => {\n * const counter = c.env.COUNTER\n * })\n * ```\n */\n env = {};\n #var;\n finalized = false;\n /**\n * `.error` can get the error object from the middleware if the Handler throws an error.\n *\n * @see {@link https://hono.dev/docs/api/context#error}\n *\n * @example\n * ```ts\n * app.use('*', async (c, next) => {\n * await next()\n * if (c.error) {\n * // do something...\n * }\n * })\n * ```\n */\n error;\n #status;\n #executionCtx;\n #res;\n #layout;\n #renderer;\n #notFoundHandler;\n #preparedHeaders;\n #matchResult;\n #path;\n /**\n * Creates an instance of the Context class.\n *\n * @param req - The Request object.\n * @param options - Optional configuration options for the context.\n */\n constructor(req, options) {\n this.#rawRequest = req;\n if (options) {\n this.#executionCtx = options.executionCtx;\n this.env = options.env;\n this.#notFoundHandler = options.notFoundHandler;\n this.#path = options.path;\n this.#matchResult = options.matchResult;\n }\n }\n /**\n * `.req` is the instance of {@link HonoRequest}.\n */\n get req() {\n this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);\n return this.#req;\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#event}\n * The FetchEvent associated with the current request.\n *\n * @throws Will throw an error if the context does not have a FetchEvent.\n */\n get event() {\n if (this.#executionCtx && \"respondWith\" in this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no FetchEvent\");\n }\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#executionctx}\n * The ExecutionContext associated with the current request.\n *\n * @throws Will throw an error if the context does not have an ExecutionContext.\n */\n get executionCtx() {\n if (this.#executionCtx) {\n return this.#executionCtx;\n } else {\n throw Error(\"This context has no ExecutionContext\");\n }\n }\n /**\n * @see {@link https://hono.dev/docs/api/context#res}\n * The Response object for the current request.\n */\n get res() {\n return this.#res ||= createResponseInstance(null, {\n headers: this.#preparedHeaders ??= new Headers()\n });\n }\n /**\n * Sets the Response object for the current request.\n *\n * @param _res - The Response object to set.\n */\n set res(_res) {\n if (this.#res && _res) {\n _res = createResponseInstance(_res.body, _res);\n for (const [k, v] of this.#res.headers.entries()) {\n if (k === \"content-type\") {\n continue;\n }\n if (k === \"set-cookie\") {\n const cookies = this.#res.headers.getSetCookie();\n _res.headers.delete(\"set-cookie\");\n for (const cookie of cookies) {\n _res.headers.append(\"set-cookie\", cookie);\n }\n } else {\n _res.headers.set(k, v);\n }\n }\n }\n this.#res = _res;\n this.finalized = true;\n }\n /**\n * `.render()` can create a response within a layout.\n *\n * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n *\n * @example\n * ```ts\n * app.get('/', (c) => {\n * return c.render('Hello!')\n * })\n * ```\n */\n render = (...args) => {\n this.#renderer ??= (content) => this.html(content);\n return this.#renderer(...args);\n };\n /**\n * Sets the layout for the response.\n *\n * @param layout - The layout to set.\n * @returns The layout function.\n */\n setLayout = (layout) => this.#layout = layout;\n /**\n * Gets the current layout for the response.\n *\n * @returns The current layout function.\n */\n getLayout = () => this.#layout;\n /**\n * `.setRenderer()` can set the layout in the custom middleware.\n *\n * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n *\n * @example\n * ```tsx\n * app.use('*', async (c, next) => {\n * c.setRenderer((content) => {\n * return c.html(\n * <html>\n * <body>\n * <p>{content}</p>\n * </body>\n * </html>\n * )\n * })\n * await next()\n * })\n * ```\n */\n setRenderer = (renderer) => {\n this.#renderer = renderer;\n };\n /**\n * `.header()` can set headers.\n *\n * @see {@link https://hono.dev/docs/api/context#header}\n *\n * @example\n * ```ts\n * app.get('/welcome', (c) => {\n * // Set headers\n * c.header('X-Message', 'Hello!')\n * c.header('Content-Type', 'text/plain')\n *\n * return c.body('Thank you for coming')\n * })\n * ```\n */\n header = (name, value, options) => {\n if (this.finalized) {\n this.#res = createResponseInstance(this.#res.body, this.#res);\n }\n const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();\n if (value === void 0) {\n headers.delete(name);\n } else if (options?.append) {\n headers.append(name, value);\n } else {\n headers.set(name, value);\n }\n };\n status = (status) => {\n this.#status = status;\n };\n /**\n * `.set()` can set the value specified by the key.\n *\n * @see {@link https://hono.dev/docs/api/context#set-get}\n *\n * @example\n * ```ts\n * app.use('*', async (c, next) => {\n * c.set('message', 'Hono is hot!!')\n * await next()\n * })\n * ```\n */\n set = (key, value) => {\n this.#var ??= /* @__PURE__ */ new Map();\n this.#var.set(key, value);\n };\n /**\n * `.get()` can use the value specified by the key.\n *\n * @see {@link https://hono.dev/docs/api/context#set-get}\n *\n * @example\n * ```ts\n * app.get('/', (c) => {\n * const message = c.get('message')\n * return c.text(`The message is \"${message}\"`)\n * })\n * ```\n */\n get = (key) => {\n return this.#var ? this.#var.get(key) : void 0;\n };\n /**\n * `.var` can access the value of a variable.\n *\n * @see {@link https://hono.dev/docs/api/context#var}\n *\n * @example\n * ```ts\n * const result = c.var.client.oneMethod()\n * ```\n */\n // c.var.propName is a read-only\n get var() {\n if (!this.#var) {\n return {};\n }\n return Object.fromEntries(this.#var);\n }\n #newResponse(data, arg, headers) {\n const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();\n if (typeof arg === \"object\" && \"headers\" in arg) {\n const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);\n for (const [key, value] of argHeaders) {\n if (key.toLowerCase() === \"set-cookie\") {\n responseHeaders.append(key, value);\n } else {\n responseHeaders.set(key, value);\n }\n }\n }\n if (headers) {\n for (const [k, v] of Object.entries(headers)) {\n if (typeof v === \"string\") {\n responseHeaders.set(k, v);\n } else {\n responseHeaders.delete(k);\n for (const v2 of v) {\n responseHeaders.append(k, v2);\n }\n }\n }\n }\n const status = typeof arg === \"number\" ? arg : arg?.status ?? this.#status;\n return createResponseInstance(data, { status, headers: responseHeaders });\n }\n newResponse = (...args) => this.#newResponse(...args);\n /**\n * `.body()` can return the HTTP response.\n * You can set headers with `.header()` and set HTTP status code with `.status`.\n * This can also be set in `.text()`, `.json()` and so on.\n *\n * @see {@link https://hono.dev/docs/api/context#body}\n *\n * @example\n * ```ts\n * app.get('/welcome', (c) => {\n * // Set headers\n * c.header('X-Message', 'Hello!')\n * c.header('Content-Type', 'text/plain')\n * // Set HTTP status code\n * c.status(201)\n *\n * // Return the response body\n * return c.body('Thank you for coming')\n * })\n * ```\n */\n body = (data, arg, headers) => this.#newResponse(data, arg, headers);\n /**\n * `.text()` can render text as `Content-Type:text/plain`.\n *\n * @see {@link https://hono.dev/docs/api/context#text}\n *\n * @example\n * ```ts\n * app.get('/say', (c) => {\n * return c.text('Hello!')\n * })\n * ```\n */\n text = (text, arg, headers) => {\n return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(\n text,\n arg,\n setDefaultContentType(TEXT_PLAIN, headers)\n );\n };\n /**\n * `.json()` can render JSON as `Content-Type:application/json`.\n *\n * @see {@link https://hono.dev/docs/api/context#json}\n *\n * @example\n * ```ts\n * app.get('/api', (c) => {\n * return c.json({ message: 'Hello!' })\n * })\n * ```\n */\n json = (object, arg, headers) => {\n return this.#newResponse(\n JSON.stringify(object),\n arg,\n setDefaultContentType(\"application/json\", headers)\n );\n };\n html = (html, arg, headers) => {\n const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType(\"text/html; charset=UTF-8\", headers));\n return typeof html === \"object\" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);\n };\n /**\n * `.redirect()` can Redirect, default status code is 302.\n *\n * @see {@link https://hono.dev/docs/api/context#redirect}\n *\n * @example\n * ```ts\n * app.get('/redirect', (c) => {\n * return c.redirect('/')\n * })\n * app.get('/redirect-permanently', (c) => {\n * return c.redirect('/', 301)\n * })\n * ```\n */\n redirect = (location, status) => {\n const locationString = String(location);\n this.header(\n \"Location\",\n // Multibyes should be encoded\n // eslint-disable-next-line no-control-regex\n !/[^\\x00-\\xFF]/.test(locationString) ? locationString : encodeURI(locationString)\n );\n return this.newResponse(null, status ?? 302);\n };\n /**\n * `.notFound()` can return the Not Found Response.\n *\n * @see {@link https://hono.dev/docs/api/context#notfound}\n *\n * @example\n * ```ts\n * app.get('/notfound', (c) => {\n * return c.notFound()\n * })\n * ```\n */\n notFound = () => {\n this.#notFoundHandler ??= () => createResponseInstance();\n return this.#notFoundHandler(this);\n };\n};\nexport {\n Context,\n TEXT_PLAIN\n};\n", "// src/router.ts\nvar METHOD_NAME_ALL = \"ALL\";\nvar METHOD_NAME_ALL_LOWERCASE = \"all\";\nvar METHODS = [\"get\", \"post\", \"put\", \"delete\", \"options\", \"patch\"];\nvar MESSAGE_MATCHER_IS_ALREADY_BUILT = \"Can not add a route since the matcher is already built.\";\nvar UnsupportedPathError = class extends Error {\n};\nexport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHODS,\n METHOD_NAME_ALL,\n METHOD_NAME_ALL_LOWERCASE,\n UnsupportedPathError\n};\n", "// src/utils/constants.ts\nvar COMPOSED_HANDLER = \"__COMPOSED_HANDLER\";\nexport {\n COMPOSED_HANDLER\n};\n", "// src/hono-base.ts\nimport { compose } from \"./compose.js\";\nimport { Context } from \"./context.js\";\nimport { METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE } from \"./router.js\";\nimport { COMPOSED_HANDLER } from \"./utils/constants.js\";\nimport { getPath, getPathNoStrict, mergePath } from \"./utils/url.js\";\nvar notFoundHandler = (c) => {\n return c.text(\"404 Not Found\", 404);\n};\nvar errorHandler = (err, c) => {\n if (\"getResponse\" in err) {\n const res = err.getResponse();\n return c.newResponse(res.body, res);\n }\n console.error(err);\n return c.text(\"Internal Server Error\", 500);\n};\nvar Hono = class _Hono {\n get;\n post;\n put;\n delete;\n options;\n patch;\n all;\n on;\n use;\n /*\n This class is like an abstract class and does not have a router.\n To use it, inherit the class and implement router in the constructor.\n */\n router;\n getPath;\n // Cannot use `#` because it requires visibility at JavaScript runtime.\n _basePath = \"/\";\n #path = \"/\";\n routes = [];\n constructor(options = {}) {\n const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE];\n allMethods.forEach((method) => {\n this[method] = (args1, ...args) => {\n if (typeof args1 === \"string\") {\n this.#path = args1;\n } else {\n this.#addRoute(method, this.#path, args1);\n }\n args.forEach((handler) => {\n this.#addRoute(method, this.#path, handler);\n });\n return this;\n };\n });\n this.on = (method, path, ...handlers) => {\n for (const p of [path].flat()) {\n this.#path = p;\n for (const m of [method].flat()) {\n handlers.map((handler) => {\n this.#addRoute(m.toUpperCase(), this.#path, handler);\n });\n }\n }\n return this;\n };\n this.use = (arg1, ...handlers) => {\n if (typeof arg1 === \"string\") {\n this.#path = arg1;\n } else {\n this.#path = \"*\";\n handlers.unshift(arg1);\n }\n handlers.forEach((handler) => {\n this.#addRoute(METHOD_NAME_ALL, this.#path, handler);\n });\n return this;\n };\n const { strict, ...optionsWithoutStrict } = options;\n Object.assign(this, optionsWithoutStrict);\n this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;\n }\n #clone() {\n const clone = new _Hono({\n router: this.router,\n getPath: this.getPath\n });\n clone.errorHandler = this.errorHandler;\n clone.#notFoundHandler = this.#notFoundHandler;\n clone.routes = this.routes;\n return clone;\n }\n #notFoundHandler = notFoundHandler;\n // Cannot use `#` because it requires visibility at JavaScript runtime.\n errorHandler = errorHandler;\n /**\n * `.route()` allows grouping other Hono instance in routes.\n *\n * @see {@link https://hono.dev/docs/api/routing#grouping}\n *\n * @param {string} path - base Path\n * @param {Hono} app - other Hono instance\n * @returns {Hono} routed Hono instance\n *\n * @example\n * ```ts\n * const app = new Hono()\n * const app2 = new Hono()\n *\n * app2.get(\"/user\", (c) => c.text(\"user\"))\n * app.route(\"/api\", app2) // GET /api/user\n * ```\n */\n route(path, app) {\n const subApp = this.basePath(path);\n app.routes.map((r) => {\n let handler;\n if (app.errorHandler === errorHandler) {\n handler = r.handler;\n } else {\n handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;\n handler[COMPOSED_HANDLER] = r.handler;\n }\n subApp.#addRoute(r.method, r.path, handler, r.basePath);\n });\n return this;\n }\n /**\n * `.basePath()` allows base paths to be specified.\n *\n * @see {@link https://hono.dev/docs/api/routing#base-path}\n *\n * @param {string} path - base Path\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * const api = new Hono().basePath('/api')\n * ```\n */\n basePath(path) {\n const subApp = this.#clone();\n subApp._basePath = mergePath(this._basePath, path);\n return subApp;\n }\n /**\n * `.onError()` handles an error and returns a customized Response.\n *\n * @see {@link https://hono.dev/docs/api/hono#error-handling}\n *\n * @param {ErrorHandler} handler - request Handler for error\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * app.onError((err, c) => {\n * console.error(`${err}`)\n * return c.text('Custom Error Message', 500)\n * })\n * ```\n */\n onError = (handler) => {\n this.errorHandler = handler;\n return this;\n };\n /**\n * `.notFound()` allows you to customize a Not Found Response.\n *\n * @see {@link https://hono.dev/docs/api/hono#not-found}\n *\n * @param {NotFoundHandler} handler - request handler for not-found\n * @returns {Hono} changed Hono instance\n *\n * @example\n * ```ts\n * app.notFound((c) => {\n * return c.text('Custom 404 Message', 404)\n * })\n * ```\n */\n notFound = (handler) => {\n this.#notFoundHandler = handler;\n return this;\n };\n /**\n * `.mount()` allows you to mount applications built with other frameworks into your Hono application.\n *\n * @see {@link https://hono.dev/docs/api/hono#mount}\n *\n * @param {string} path - base Path\n * @param {Function} applicationHandler - other Request Handler\n * @param {MountOptions} [options] - options of `.mount()`\n * @returns {Hono} mounted Hono instance\n *\n * @example\n * ```ts\n * import { Router as IttyRouter } from 'itty-router'\n * import { Hono } from 'hono'\n * // Create itty-router application\n * const ittyRouter = IttyRouter()\n * // GET /itty-router/hello\n * ittyRouter.get('/hello', () => new Response('Hello from itty-router'))\n *\n * const app = new Hono()\n * app.mount('/itty-router', ittyRouter.handle)\n * ```\n *\n * @example\n * ```ts\n * const app = new Hono()\n * // Send the request to another application without modification.\n * app.mount('/app', anotherApp, {\n * replaceRequest: (req) => req,\n * })\n * ```\n */\n mount(path, applicationHandler, options) {\n let replaceRequest;\n let optionHandler;\n if (options) {\n if (typeof options === \"function\") {\n optionHandler = options;\n } else {\n optionHandler = options.optionHandler;\n if (options.replaceRequest === false) {\n replaceRequest = (request) => request;\n } else {\n replaceRequest = options.replaceRequest;\n }\n }\n }\n const getOptions = optionHandler ? (c) => {\n const options2 = optionHandler(c);\n return Array.isArray(options2) ? options2 : [options2];\n } : (c) => {\n let executionContext = void 0;\n try {\n executionContext = c.executionCtx;\n } catch {\n }\n return [c.env, executionContext];\n };\n replaceRequest ||= (() => {\n const mergedPath = mergePath(this._basePath, path);\n const pathPrefixLength = mergedPath === \"/\" ? 0 : mergedPath.length;\n return (request) => {\n const url = new URL(request.url);\n url.pathname = this.getPath(request).slice(pathPrefixLength) || \"/\";\n return new Request(url, request);\n };\n })();\n const handler = async (c, next) => {\n const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));\n if (res) {\n return res;\n }\n await next();\n };\n this.#addRoute(METHOD_NAME_ALL, mergePath(path, \"*\"), handler);\n return this;\n }\n #addRoute(method, path, handler, baseRoutePath) {\n method = method.toUpperCase();\n path = mergePath(this._basePath, path);\n const r = {\n basePath: baseRoutePath !== void 0 ? mergePath(this._basePath, baseRoutePath) : this._basePath,\n path,\n method,\n handler\n };\n this.router.add(method, path, [handler, r]);\n this.routes.push(r);\n }\n #handleError(err, c) {\n if (err instanceof Error) {\n return this.errorHandler(err, c);\n }\n throw err;\n }\n #dispatch(request, executionCtx, env, method) {\n if (method === \"HEAD\") {\n return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, \"GET\")))();\n }\n const path = this.getPath(request, { env });\n const matchResult = this.router.match(method, path);\n const c = new Context(request, {\n path,\n matchResult,\n env,\n executionCtx,\n notFoundHandler: this.#notFoundHandler\n });\n if (matchResult[0].length === 1) {\n let res;\n try {\n res = matchResult[0][0][0][0](c, async () => {\n c.res = await this.#notFoundHandler(c);\n });\n } catch (err) {\n return this.#handleError(err, c);\n }\n return res instanceof Promise ? res.then(\n (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))\n ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);\n }\n const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);\n return (async () => {\n try {\n const context = await composed(c);\n if (!context.finalized) {\n throw new Error(\n \"Context is not finalized. Did you forget to return a Response object or `await next()`?\"\n );\n }\n return context.res;\n } catch (err) {\n return this.#handleError(err, c);\n }\n })();\n }\n /**\n * `.fetch()` will be entry point of your app.\n *\n * @see {@link https://hono.dev/docs/api/hono#fetch}\n *\n * @param {Request} request - request Object of request\n * @param {Env} Env - env Object\n * @param {ExecutionContext} - context of execution\n * @returns {Response | Promise<Response>} response of request\n *\n */\n fetch = (request, ...rest) => {\n return this.#dispatch(request, rest[1], rest[0], request.method);\n };\n /**\n * `.request()` is a useful method for testing.\n * You can pass a URL or pathname to send a GET request.\n * app will return a Response object.\n * ```ts\n * test('GET /hello is ok', async () => {\n * const res = await app.request('/hello')\n * expect(res.status).toBe(200)\n * })\n * ```\n * @see https://hono.dev/docs/api/hono#request\n */\n request = (input, requestInit, Env, executionCtx) => {\n if (input instanceof Request) {\n return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);\n }\n input = input.toString();\n return this.fetch(\n new Request(\n /^https?:\\/\\//.test(input) ? input : `http://localhost${mergePath(\"/\", input)}`,\n requestInit\n ),\n Env,\n executionCtx\n );\n };\n /**\n * `.fire()` automatically adds a global fetch event listener.\n * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.\n * @deprecated\n * Use `fire` from `hono/service-worker` instead.\n * ```ts\n * import { Hono } from 'hono'\n * import { fire } from 'hono/service-worker'\n *\n * const app = new Hono()\n * // ...\n * fire(app)\n * ```\n * @see https://hono.dev/docs/api/hono#fire\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/\n */\n fire = () => {\n addEventListener(\"fetch\", (event) => {\n event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));\n });\n };\n};\nexport {\n Hono as HonoBase\n};\n", "// src/router/reg-exp-router/matcher.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nvar emptyParam = [];\nfunction match(method, path) {\n const matchers = this.buildAllMatchers();\n const match2 = ((method2, path2) => {\n const matcher = matchers[method2] || matchers[METHOD_NAME_ALL];\n const staticMatch = matcher[2][path2];\n if (staticMatch) {\n return staticMatch;\n }\n const match3 = path2.match(matcher[0]);\n if (!match3) {\n return [[], emptyParam];\n }\n const index = match3.indexOf(\"\", 1);\n return [matcher[1][index], match3];\n });\n this.match = match2;\n return match2(method, path);\n}\nexport {\n emptyParam,\n match\n};\n", "// src/router/reg-exp-router/node.ts\nvar LABEL_REG_EXP_STR = \"[^/]+\";\nvar ONLY_WILDCARD_REG_EXP_STR = \".*\";\nvar TAIL_WILDCARD_REG_EXP_STR = \"(?:|/.*)\";\nvar PATH_ERROR = /* @__PURE__ */ Symbol();\nvar regExpMetaChars = new Set(\".\\\\+*[^]$()\");\nfunction compareKey(a, b) {\n if (a.length === 1) {\n return b.length === 1 ? a < b ? -1 : 1 : -1;\n }\n if (b.length === 1) {\n return 1;\n }\n if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) {\n return 1;\n } else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) {\n return -1;\n }\n if (a === LABEL_REG_EXP_STR) {\n return 1;\n } else if (b === LABEL_REG_EXP_STR) {\n return -1;\n }\n return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length;\n}\nvar Node = class _Node {\n #index;\n #varIndex;\n #children = /* @__PURE__ */ Object.create(null);\n insert(tokens, index, paramMap, context, pathErrorCheckOnly) {\n if (tokens.length === 0) {\n if (this.#index !== void 0) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n this.#index = index;\n return;\n }\n const [token, ...restTokens] = tokens;\n const pattern = token === \"*\" ? restTokens.length === 0 ? [\"\", \"\", ONLY_WILDCARD_REG_EXP_STR] : [\"\", \"\", LABEL_REG_EXP_STR] : token === \"/*\" ? [\"\", \"\", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n let node;\n if (pattern) {\n const name = pattern[1];\n let regexpStr = pattern[2] || LABEL_REG_EXP_STR;\n if (name && pattern[2]) {\n if (regexpStr === \".*\") {\n throw PATH_ERROR;\n }\n regexpStr = regexpStr.replace(/^\\((?!\\?:)(?=[^)]+\\)$)/, \"(?:\");\n if (/\\((?!\\?:)/.test(regexpStr)) {\n throw PATH_ERROR;\n }\n }\n node = this.#children[regexpStr];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[regexpStr] = new _Node();\n if (name !== \"\") {\n node.#varIndex = context.varIndex++;\n }\n }\n if (!pathErrorCheckOnly && name !== \"\") {\n paramMap.push([name, node.#varIndex]);\n }\n } else {\n node = this.#children[token];\n if (!node) {\n if (Object.keys(this.#children).some(\n (k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR\n )) {\n throw PATH_ERROR;\n }\n if (pathErrorCheckOnly) {\n return;\n }\n node = this.#children[token] = new _Node();\n }\n }\n node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly);\n }\n buildRegExpStr() {\n const childKeys = Object.keys(this.#children).sort(compareKey);\n const strList = childKeys.map((k) => {\n const c = this.#children[k];\n return (typeof c.#varIndex === \"number\" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\\\${k}` : k) + c.buildRegExpStr();\n });\n if (typeof this.#index === \"number\") {\n strList.unshift(`#${this.#index}`);\n }\n if (strList.length === 0) {\n return \"\";\n }\n if (strList.length === 1) {\n return strList[0];\n }\n return \"(?:\" + strList.join(\"|\") + \")\";\n }\n};\nexport {\n Node,\n PATH_ERROR\n};\n", "// src/router/reg-exp-router/trie.ts\nimport { Node } from \"./node.js\";\nvar Trie = class {\n #context = { varIndex: 0 };\n #root = new Node();\n insert(path, index, pathErrorCheckOnly) {\n const paramAssoc = [];\n const groups = [];\n for (let i = 0; ; ) {\n let replaced = false;\n path = path.replace(/\\{[^}]+\\}/g, (m) => {\n const mark = `@\\\\${i}`;\n groups[i] = [mark, m];\n i++;\n replaced = true;\n return mark;\n });\n if (!replaced) {\n break;\n }\n }\n const tokens = path.match(/(?::[^\\/]+)|(?:\\/\\*$)|./g) || [];\n for (let i = groups.length - 1; i >= 0; i--) {\n const [mark] = groups[i];\n for (let j = tokens.length - 1; j >= 0; j--) {\n if (tokens[j].indexOf(mark) !== -1) {\n tokens[j] = tokens[j].replace(mark, groups[i][1]);\n break;\n }\n }\n }\n this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly);\n return paramAssoc;\n }\n buildRegExp() {\n let regexp = this.#root.buildRegExpStr();\n if (regexp === \"\") {\n return [/^$/, [], []];\n }\n let captureIndex = 0;\n const indexReplacementMap = [];\n const paramReplacementMap = [];\n regexp = regexp.replace(/#(\\d+)|@(\\d+)|\\.\\*\\$/g, (_, handlerIndex, paramIndex) => {\n if (handlerIndex !== void 0) {\n indexReplacementMap[++captureIndex] = Number(handlerIndex);\n return \"$()\";\n }\n if (paramIndex !== void 0) {\n paramReplacementMap[Number(paramIndex)] = ++captureIndex;\n return \"\";\n }\n return \"\";\n });\n return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap];\n }\n};\nexport {\n Trie\n};\n", "// src/router/reg-exp-router/router.ts\nimport {\n MESSAGE_MATCHER_IS_ALREADY_BUILT,\n METHOD_NAME_ALL,\n UnsupportedPathError\n} from \"../../router.js\";\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { match, emptyParam } from \"./matcher.js\";\nimport { PATH_ERROR } from \"./node.js\";\nimport { Trie } from \"./trie.js\";\nvar nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];\nvar wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\nfunction buildWildcardRegExp(path) {\n return wildcardRegExpCache[path] ??= new RegExp(\n path === \"*\" ? \"\" : `^${path.replace(\n /\\/\\*$|([.\\\\+*[^\\]$()])/g,\n (_, metaChar) => metaChar ? `\\\\${metaChar}` : \"(?:|/.*)\"\n )}$`\n );\n}\nfunction clearWildcardRegExpCache() {\n wildcardRegExpCache = /* @__PURE__ */ Object.create(null);\n}\nfunction buildMatcherFromPreprocessedRoutes(routes) {\n const trie = new Trie();\n const handlerData = [];\n if (routes.length === 0) {\n return nullMatcher;\n }\n const routesWithStaticPathFlag = routes.map(\n (route) => [!/\\*|\\/:/.test(route[0]), ...route]\n ).sort(\n ([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length\n );\n const staticMap = /* @__PURE__ */ Object.create(null);\n for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) {\n const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i];\n if (pathErrorCheckOnly) {\n staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam];\n } else {\n j++;\n }\n let paramAssoc;\n try {\n paramAssoc = trie.insert(path, j, pathErrorCheckOnly);\n } catch (e) {\n throw e === PATH_ERROR ? new UnsupportedPathError(path) : e;\n }\n if (pathErrorCheckOnly) {\n continue;\n }\n handlerData[j] = handlers.map(([h, paramCount]) => {\n const paramIndexMap = /* @__PURE__ */ Object.create(null);\n paramCount -= 1;\n for (; paramCount >= 0; paramCount--) {\n const [key, value] = paramAssoc[paramCount];\n paramIndexMap[key] = value;\n }\n return [h, paramIndexMap];\n });\n }\n const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp();\n for (let i = 0, len = handlerData.length; i < len; i++) {\n for (let j = 0, len2 = handlerData[i].length; j < len2; j++) {\n const map = handlerData[i][j]?.[1];\n if (!map) {\n continue;\n }\n const keys = Object.keys(map);\n for (let k = 0, len3 = keys.length; k < len3; k++) {\n map[keys[k]] = paramReplacementMap[map[keys[k]]];\n }\n }\n }\n const handlerMap = [];\n for (const i in indexReplacementMap) {\n handlerMap[i] = handlerData[indexReplacementMap[i]];\n }\n return [regexp, handlerMap, staticMap];\n}\nfunction findMiddleware(middleware, path) {\n if (!middleware) {\n return void 0;\n }\n for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) {\n if (buildWildcardRegExp(k).test(path)) {\n return [...middleware[k]];\n }\n }\n return void 0;\n}\nvar RegExpRouter = class {\n name = \"RegExpRouter\";\n #middleware;\n #routes;\n constructor() {\n this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) };\n }\n add(method, path, handler) {\n const middleware = this.#middleware;\n const routes = this.#routes;\n if (!middleware || !routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n if (!middleware[method]) {\n ;\n [middleware, routes].forEach((handlerMap) => {\n handlerMap[method] = /* @__PURE__ */ Object.create(null);\n Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => {\n handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]];\n });\n });\n }\n if (path === \"/*\") {\n path = \"*\";\n }\n const paramCount = (path.match(/\\/:/g) || []).length;\n if (/\\*$/.test(path)) {\n const re = buildWildcardRegExp(path);\n if (method === METHOD_NAME_ALL) {\n Object.keys(middleware).forEach((m) => {\n middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n });\n } else {\n middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || [];\n }\n Object.keys(middleware).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(middleware[m]).forEach((p) => {\n re.test(p) && middleware[m][p].push([handler, paramCount]);\n });\n }\n });\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n Object.keys(routes[m]).forEach(\n (p) => re.test(p) && routes[m][p].push([handler, paramCount])\n );\n }\n });\n return;\n }\n const paths = checkOptionalParameter(path) || [path];\n for (let i = 0, len = paths.length; i < len; i++) {\n const path2 = paths[i];\n Object.keys(routes).forEach((m) => {\n if (method === METHOD_NAME_ALL || method === m) {\n routes[m][path2] ||= [\n ...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || []\n ];\n routes[m][path2].push([handler, paramCount - len + i + 1]);\n }\n });\n }\n }\n match = match;\n buildAllMatchers() {\n const matchers = /* @__PURE__ */ Object.create(null);\n Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => {\n matchers[method] ||= this.#buildMatcher(method);\n });\n this.#middleware = this.#routes = void 0;\n clearWildcardRegExpCache();\n return matchers;\n }\n #buildMatcher(method) {\n const routes = [];\n let hasOwnRoute = method === METHOD_NAME_ALL;\n [this.#middleware, this.#routes].forEach((r) => {\n const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : [];\n if (ownRoute.length !== 0) {\n hasOwnRoute ||= true;\n routes.push(...ownRoute);\n } else if (method !== METHOD_NAME_ALL) {\n routes.push(\n ...Object.keys(r[METHOD_NAME_ALL]).map((path) => [path, r[METHOD_NAME_ALL][path]])\n );\n }\n });\n if (!hasOwnRoute) {\n return null;\n } else {\n return buildMatcherFromPreprocessedRoutes(routes);\n }\n }\n};\nexport {\n RegExpRouter\n};\n", "// src/router/smart-router/router.ts\nimport { MESSAGE_MATCHER_IS_ALREADY_BUILT, UnsupportedPathError } from \"../../router.js\";\nvar SmartRouter = class {\n name = \"SmartRouter\";\n #routers = [];\n #routes = [];\n constructor(init) {\n this.#routers = init.routers;\n }\n add(method, path, handler) {\n if (!this.#routes) {\n throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT);\n }\n this.#routes.push([method, path, handler]);\n }\n match(method, path) {\n if (!this.#routes) {\n throw new Error(\"Fatal error\");\n }\n const routers = this.#routers;\n const routes = this.#routes;\n const len = routers.length;\n let i = 0;\n let res;\n for (; i < len; i++) {\n const router = routers[i];\n try {\n for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) {\n router.add(...routes[i2]);\n }\n res = router.match(method, path);\n } catch (e) {\n if (e instanceof UnsupportedPathError) {\n continue;\n }\n throw e;\n }\n this.match = router.match.bind(router);\n this.#routers = [router];\n this.#routes = void 0;\n break;\n }\n if (i === len) {\n throw new Error(\"Fatal error\");\n }\n this.name = `SmartRouter + ${this.activeRouter.name}`;\n return res;\n }\n get activeRouter() {\n if (this.#routes || this.#routers.length !== 1) {\n throw new Error(\"No active router has been determined yet.\");\n }\n return this.#routers[0];\n }\n};\nexport {\n SmartRouter\n};\n", "// src/router/trie-router/node.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nimport { getPattern, splitPath, splitRoutingPath } from \"../../utils/url.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar hasChildren = (children) => {\n for (const _ in children) {\n return true;\n }\n return false;\n};\nvar Node = class _Node {\n #methods;\n #children;\n #patterns;\n #order = 0;\n #params = emptyParams;\n constructor(method, handler, children) {\n this.#children = children || /* @__PURE__ */ Object.create(null);\n this.#methods = [];\n if (method && handler) {\n const m = /* @__PURE__ */ Object.create(null);\n m[method] = { handler, possibleKeys: [], score: 0 };\n this.#methods = [m];\n }\n this.#patterns = [];\n }\n insert(method, path, handler) {\n this.#order = ++this.#order;\n let curNode = this;\n const parts = splitRoutingPath(path);\n const possibleKeys = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const p = parts[i];\n const nextP = parts[i + 1];\n const pattern = getPattern(p, nextP);\n const key = Array.isArray(pattern) ? pattern[0] : p;\n if (key in curNode.#children) {\n curNode = curNode.#children[key];\n if (pattern) {\n possibleKeys.push(pattern[1]);\n }\n continue;\n }\n curNode.#children[key] = new _Node();\n if (pattern) {\n curNode.#patterns.push(pattern);\n possibleKeys.push(pattern[1]);\n }\n curNode = curNode.#children[key];\n }\n curNode.#methods.push({\n [method]: {\n handler,\n possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),\n score: this.#order\n }\n });\n return curNode;\n }\n #pushHandlerSets(handlerSets, node, method, nodeParams, params) {\n for (let i = 0, len = node.#methods.length; i < len; i++) {\n const m = node.#methods[i];\n const handlerSet = m[method] || m[METHOD_NAME_ALL];\n const processedSet = {};\n if (handlerSet !== void 0) {\n handlerSet.params = /* @__PURE__ */ Object.create(null);\n handlerSets.push(handlerSet);\n if (nodeParams !== emptyParams || params && params !== emptyParams) {\n for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {\n const key = handlerSet.possibleKeys[i2];\n const processed = processedSet[handlerSet.score];\n handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];\n processedSet[handlerSet.score] = true;\n }\n }\n }\n }\n }\n search(method, path) {\n const handlerSets = [];\n this.#params = emptyParams;\n const curNode = this;\n let curNodes = [curNode];\n const parts = splitPath(path);\n const curNodesQueue = [];\n const len = parts.length;\n let partOffsets = null;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n const isLast = i === len - 1;\n const tempNodes = [];\n for (let j = 0, len2 = curNodes.length; j < len2; j++) {\n const node = curNodes[j];\n const nextNode = node.#children[part];\n if (nextNode) {\n nextNode.#params = node.#params;\n if (isLast) {\n if (nextNode.#children[\"*\"]) {\n this.#pushHandlerSets(handlerSets, nextNode.#children[\"*\"], method, node.#params);\n }\n this.#pushHandlerSets(handlerSets, nextNode, method, node.#params);\n } else {\n tempNodes.push(nextNode);\n }\n }\n for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {\n const pattern = node.#patterns[k];\n const params = node.#params === emptyParams ? {} : { ...node.#params };\n if (pattern === \"*\") {\n const astNode = node.#children[\"*\"];\n if (astNode) {\n this.#pushHandlerSets(handlerSets, astNode, method, node.#params);\n astNode.#params = params;\n tempNodes.push(astNode);\n }\n continue;\n }\n const [key, name, matcher] = pattern;\n if (!part && !(matcher instanceof RegExp)) {\n continue;\n }\n const child = node.#children[key];\n if (matcher instanceof RegExp) {\n if (partOffsets === null) {\n partOffsets = new Array(len);\n let offset = path[0] === \"/\" ? 1 : 0;\n for (let p = 0; p < len; p++) {\n partOffsets[p] = offset;\n offset += parts[p].length + 1;\n }\n }\n const restPathString = path.substring(partOffsets[i]);\n const m = matcher.exec(restPathString);\n if (m) {\n params[name] = m[0];\n this.#pushHandlerSets(handlerSets, child, method, node.#params, params);\n if (m[0].length === restPathString.length && child.#children[\"*\"]) {\n this.#pushHandlerSets(\n handlerSets,\n child.#children[\"*\"],\n method,\n node.#params,\n params\n );\n }\n if (hasChildren(child.#children)) {\n child.#params = params;\n const componentCount = m[0].match(/\\//)?.length ?? 0;\n const targetCurNodes = curNodesQueue[componentCount] ||= [];\n targetCurNodes.push(child);\n }\n continue;\n }\n }\n if (matcher === true || matcher.test(part)) {\n params[name] = part;\n if (isLast) {\n this.#pushHandlerSets(handlerSets, child, method, params, node.#params);\n if (child.#children[\"*\"]) {\n this.#pushHandlerSets(\n handlerSets,\n child.#children[\"*\"],\n method,\n params,\n node.#params\n );\n }\n } else {\n child.#params = params;\n tempNodes.push(child);\n }\n }\n }\n }\n const shifted = curNodesQueue.shift();\n curNodes = shifted ? tempNodes.concat(shifted) : tempNodes;\n }\n if (handlerSets.length > 1) {\n handlerSets.sort((a, b) => {\n return a.score - b.score;\n });\n }\n return [handlerSets.map(({ handler, params }) => [handler, params])];\n }\n};\nexport {\n Node\n};\n", "// src/router/trie-router/router.ts\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { Node } from \"./node.js\";\nvar TrieRouter = class {\n name = \"TrieRouter\";\n #node;\n constructor() {\n this.#node = new Node();\n }\n add(method, path, handler) {\n const results = checkOptionalParameter(path);\n if (results) {\n for (let i = 0, len = results.length; i < len; i++) {\n this.#node.insert(method, results[i], handler);\n }\n return;\n }\n this.#node.insert(method, path, handler);\n }\n match(method, path) {\n return this.#node.search(method, path);\n }\n};\nexport {\n TrieRouter\n};\n", "// src/hono.ts\nimport { HonoBase } from \"./hono-base.js\";\nimport { RegExpRouter } from \"./router/reg-exp-router/index.js\";\nimport { SmartRouter } from \"./router/smart-router/index.js\";\nimport { TrieRouter } from \"./router/trie-router/index.js\";\nvar Hono = class extends HonoBase {\n /**\n * Creates an instance of the Hono class.\n *\n * @param options - Optional configuration options for the Hono instance.\n */\n constructor(options = {}) {\n super(options);\n this.router = options.router ?? new SmartRouter({\n routers: [new RegExpRouter(), new TrieRouter()]\n });\n }\n};\nexport {\n Hono\n};\n", "import type {\n BundlePatchRow,\n BundleRow,\n BundleEventRow,\n ChannelRow,\n ApiKeyRow,\n ReleaseCatalogRow,\n ReleaseRow,\n} from \"@hot-updater/plugin-core\";\nimport { isDatabaseMetadataObject } from \"@hot-updater/plugin-core\";\nimport type {\n DatabaseModel,\n DatabaseRow,\n} from \"@hot-updater/plugin-core/internal\";\n\nclass InvalidD1RowError extends Error {\n readonly name = \"InvalidD1RowError\";\n readonly model: DatabaseModel;\n\n constructor(model: DatabaseModel) {\n super(`D1 returned an invalid ${model} row`);\n this.model = model;\n }\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst stringValue = (\n row: Record<string, unknown>,\n field: string,\n model: DatabaseModel,\n): string => {\n const value = row[field];\n if (typeof value !== \"string\") throw new InvalidD1RowError(model);\n return value;\n};\n\nconst nullableString = (\n row: Record<string, unknown>,\n field: string,\n model: DatabaseModel,\n): string | null => {\n const value = row[field];\n if (value === null) return null;\n if (typeof value !== \"string\") throw new InvalidD1RowError(model);\n return value;\n};\n\nconst numberValue = (\n row: Record<string, unknown>,\n field: string,\n model: DatabaseModel,\n): number => {\n const value = row[field];\n if (typeof value !== \"number\") throw new InvalidD1RowError(model);\n return value;\n};\n\nconst byteSizeValue = (\n row: Record<string, unknown>,\n field: string,\n model: DatabaseModel,\n): number => {\n const value = row[field];\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n throw new InvalidD1RowError(model);\n }\n return value;\n};\n\nconst booleanValue = (\n row: Record<string, unknown>,\n field: string,\n model: DatabaseModel,\n): boolean => {\n const value = row[field];\n if (value === true || value === 1) return true;\n if (value === false || value === 0) return false;\n throw new InvalidD1RowError(model);\n};\n\nconst jsonValue = (value: unknown, model: DatabaseModel): unknown => {\n if (typeof value !== \"string\") throw new InvalidD1RowError(model);\n try {\n return JSON.parse(value);\n } catch (error) {\n if (error instanceof SyntaxError) throw new InvalidD1RowError(model);\n throw error;\n }\n};\n\nconst metadata = (row: Record<string, unknown>) => {\n const value = jsonValue(row[\"metadata\"], \"bundles\");\n if (!isDatabaseMetadataObject(value)) {\n throw new InvalidD1RowError(\"bundles\");\n }\n return value;\n};\n\nconst bundleRow = (row: Record<string, unknown>): BundleRow => {\n const platform = stringValue(row, \"platform\", \"bundles\");\n if (platform !== \"ios\" && platform !== \"android\") {\n throw new InvalidD1RowError(\"bundles\");\n }\n return {\n id: stringValue(row, \"id\", \"bundles\"),\n platform,\n file_hash: stringValue(row, \"file_hash\", \"bundles\"),\n git_commit_hash: nullableString(row, \"git_commit_hash\", \"bundles\"),\n storage_uri: stringValue(row, \"storage_uri\", \"bundles\"),\n archive_byte_size:\n row[\"archive_byte_size\"] === undefined\n ? 0\n : byteSizeValue(row, \"archive_byte_size\", \"bundles\"),\n metadata: metadata(row),\n manifest_storage_uri: nullableString(\n row,\n \"manifest_storage_uri\",\n \"bundles\",\n ),\n manifest_file_hash: nullableString(row, \"manifest_file_hash\", \"bundles\"),\n asset_base_storage_uri: nullableString(\n row,\n \"asset_base_storage_uri\",\n \"bundles\",\n ),\n };\n};\n\nconst patchRow = (row: Record<string, unknown>): BundlePatchRow => ({\n id: stringValue(row, \"id\", \"bundle_patches\"),\n bundle_id: stringValue(row, \"bundle_id\", \"bundle_patches\"),\n base_bundle_id: stringValue(row, \"base_bundle_id\", \"bundle_patches\"),\n base_file_hash: stringValue(row, \"base_file_hash\", \"bundle_patches\"),\n patch_file_hash: stringValue(row, \"patch_file_hash\", \"bundle_patches\"),\n patch_storage_uri: stringValue(row, \"patch_storage_uri\", \"bundle_patches\"),\n byte_size: byteSizeValue(row, \"byte_size\", \"bundle_patches\"),\n order_index: numberValue(row, \"order_index\", \"bundle_patches\"),\n});\n\nconst channelRow = (row: Record<string, unknown>): ChannelRow => ({\n id: stringValue(row, \"id\", \"channels\"),\n name: stringValue(row, \"name\", \"channels\"),\n});\n\nconst eventRow = (row: Record<string, unknown>): BundleEventRow => {\n const type = stringValue(row, \"type\", \"bundle_events\");\n const platform = stringValue(row, \"platform\", \"bundle_events\");\n const fromBundleId = nullableString(row, \"from_bundle_id\", \"bundle_events\");\n const updateStrategy = nullableString(\n row,\n \"update_strategy\",\n \"bundle_events\",\n );\n if (\n (platform !== \"ios\" && platform !== \"android\") ||\n !(\n ((type === \"UPDATE_APPLIED\" ||\n type === \"RECOVERED\" ||\n type === \"RELEASE_ADOPTED\") &&\n typeof fromBundleId === \"string\" &&\n (updateStrategy === \"fingerprint\" ||\n updateStrategy === \"appVersion\")) ||\n (type === \"UNCHANGED\" && fromBundleId === null && updateStrategy === null)\n )\n ) {\n throw new InvalidD1RowError(\"bundle_events\");\n }\n return {\n id: stringValue(row, \"id\", \"bundle_events\"),\n type,\n install_id: stringValue(row, \"install_id\", \"bundle_events\"),\n user_id: nullableString(row, \"user_id\", \"bundle_events\"),\n username: nullableString(row, \"username\", \"bundle_events\"),\n from_release_id: nullableString(row, \"from_release_id\", \"bundle_events\"),\n from_bundle_id: fromBundleId,\n to_release_id: nullableString(row, \"to_release_id\", \"bundle_events\"),\n to_bundle_id: stringValue(row, \"to_bundle_id\", \"bundle_events\"),\n platform,\n app_version: stringValue(row, \"app_version\", \"bundle_events\"),\n channel: stringValue(row, \"channel\", \"bundle_events\"),\n cohort: stringValue(row, \"cohort\", \"bundle_events\"),\n update_strategy: updateStrategy,\n fingerprint_hash: nullableString(row, \"fingerprint_hash\", \"bundle_events\"),\n sdk_version: nullableString(row, \"sdk_version\", \"bundle_events\"),\n received_at_ms: numberValue(row, \"received_at_ms\", \"bundle_events\"),\n } as BundleEventRow;\n};\n\nconst apiKeyRow = (row: Record<string, unknown>): ApiKeyRow => {\n const role = stringValue(row, \"role\", \"api_keys\");\n if (role !== \"client\") throw new InvalidD1RowError(\"api_keys\");\n const revokedAt = row[\"revoked_at_ms\"];\n return {\n id: stringValue(row, \"id\", \"api_keys\"),\n hash: stringValue(row, \"hash\", \"api_keys\"),\n name: stringValue(row, \"name\", \"api_keys\"),\n prefix: stringValue(row, \"prefix\", \"api_keys\"),\n role,\n created_at_ms: numberValue(row, \"created_at_ms\", \"api_keys\"),\n revoked_at_ms:\n revokedAt === null ? null : numberValue(row, \"revoked_at_ms\", \"api_keys\"),\n };\n};\n\nconst releaseTargetCohorts = (\n row: Record<string, unknown>,\n): readonly string[] => {\n const value = jsonValue(row[\"target_cohorts\"], \"releases\");\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw new InvalidD1RowError(\"releases\");\n }\n return value.filter((item): item is string => typeof item === \"string\");\n};\n\nconst releaseRow = (row: Record<string, unknown>): ReleaseRow => {\n const platform = stringValue(row, \"platform\", \"releases\");\n const kind = stringValue(row, \"kind\", \"releases\");\n const strategy = stringValue(row, \"strategy\", \"releases\");\n const operation = stringValue(row, \"operation\", \"releases\");\n if (\n (platform !== \"ios\" && platform !== \"android\") ||\n (kind !== \"BUNDLE\" && kind !== \"EMBEDDED\") ||\n (strategy !== \"APP_VERSION\" && strategy !== \"FINGERPRINT\") ||\n (operation !== \"DEPLOY\" &&\n operation !== \"PROMOTE\" &&\n operation !== \"ROLLBACK\")\n ) {\n throw new InvalidD1RowError(\"releases\");\n }\n return {\n id: stringValue(row, \"id\", \"releases\"),\n revision: numberValue(row, \"revision\", \"releases\"),\n scope_key: stringValue(row, \"scope_key\", \"releases\"),\n channel_id: stringValue(row, \"channel_id\", \"releases\"),\n platform,\n kind,\n bundle_id: nullableString(row, \"bundle_id\", \"releases\"),\n strategy,\n target_app_version: nullableString(row, \"target_app_version\", \"releases\"),\n fingerprint_hash: nullableString(row, \"fingerprint_hash\", \"releases\"),\n enabled: booleanValue(row, \"enabled\", \"releases\"),\n should_force_update: booleanValue(row, \"should_force_update\", \"releases\"),\n message: nullableString(row, \"message\", \"releases\"),\n rollout_cohort_count: numberValue(row, \"rollout_cohort_count\", \"releases\"),\n target_cohorts: releaseTargetCohorts(row),\n operation,\n source_release_id: nullableString(row, \"source_release_id\", \"releases\"),\n created_at_ms: numberValue(row, \"created_at_ms\", \"releases\"),\n updated_at_ms: numberValue(row, \"updated_at_ms\", \"releases\"),\n };\n};\n\nconst releaseCatalogRow = (row: Record<string, unknown>): ReleaseCatalogRow => {\n const platform = stringValue(row, \"platform\", \"release_catalogs\");\n const strategy = stringValue(row, \"strategy\", \"release_catalogs\");\n if (\n (platform !== \"ios\" && platform !== \"android\") ||\n (strategy !== \"APP_VERSION\" && strategy !== \"FINGERPRINT\")\n ) {\n throw new InvalidD1RowError(\"release_catalogs\");\n }\n return {\n scope_key: stringValue(row, \"scope_key\", \"release_catalogs\"),\n catalog_id: stringValue(row, \"catalog_id\", \"release_catalogs\"),\n strategy,\n channel_id: stringValue(row, \"channel_id\", \"release_catalogs\"),\n channel_key: stringValue(row, \"channel_key\", \"release_catalogs\"),\n platform,\n fingerprint_hash: nullableString(\n row,\n \"fingerprint_hash\",\n \"release_catalogs\",\n ),\n generation: numberValue(row, \"generation\", \"release_catalogs\"),\n payload: stringValue(row, \"payload\", \"release_catalogs\"),\n catalog_hash: stringValue(row, \"catalog_hash\", \"release_catalogs\"),\n byte_size: numberValue(row, \"byte_size\", \"release_catalogs\"),\n is_tombstone: booleanValue(row, \"is_tombstone\", \"release_catalogs\"),\n updated_at_ms: numberValue(row, \"updated_at_ms\", \"release_catalogs\"),\n };\n};\n\nexport function parseD1Row(model: \"bundles\", value: unknown): BundleRow;\nexport function parseD1Row(model: \"channels\", value: unknown): ChannelRow;\nexport function parseD1Row(\n model: \"bundle_patches\",\n value: unknown,\n): BundlePatchRow;\nexport function parseD1Row(\n model: \"bundle_events\",\n value: unknown,\n): BundleEventRow;\nexport function parseD1Row(model: \"api_keys\", value: unknown): ApiKeyRow;\nexport function parseD1Row(model: \"releases\", value: unknown): ReleaseRow;\nexport function parseD1Row(\n model: \"release_catalogs\",\n value: unknown,\n): ReleaseCatalogRow;\nexport function parseD1Row(\n model: DatabaseModel,\n value: unknown,\n): DatabaseRow<DatabaseModel>;\nexport function parseD1Row(\n model: DatabaseModel,\n value: unknown,\n): DatabaseRow<DatabaseModel> {\n if (!isRecord(value)) throw new InvalidD1RowError(model);\n switch (model) {\n case \"bundles\":\n return bundleRow(value);\n case \"bundle_patches\":\n return patchRow(value);\n case \"channels\":\n return channelRow(value);\n case \"bundle_events\":\n return eventRow(value);\n case \"api_keys\":\n return apiKeyRow(value);\n case \"releases\":\n return releaseRow(value);\n case \"release_catalogs\":\n return releaseCatalogRow(value);\n }\n}\n", "import type {\n DatabaseStringComparisonMode,\n DatabaseWhereConnector,\n DatabaseWhereOperator,\n} from \"@hot-updater/plugin-core/internal\";\n\nexport type D1Query = {\n readonly sql: string;\n readonly params: readonly string[];\n};\n\ntype D1Predicate = {\n readonly field: string;\n readonly operator?: DatabaseWhereOperator;\n readonly value: unknown;\n readonly connector?: DatabaseWhereConnector;\n readonly mode?: DatabaseStringComparisonMode;\n};\n\ntype D1Sort = {\n readonly field: string;\n readonly direction: \"asc\" | \"desc\";\n readonly nulls?: \"first\" | \"last\";\n};\n\nclass InvalidD1PredicateError extends Error {\n readonly name = \"InvalidD1PredicateError\";\n}\n\nconst encodeD1Value = (value: unknown): string => {\n const encoded = JSON.stringify(value);\n if (encoded === undefined) {\n throw new TypeError(\"D1 values must be JSON-serializable.\");\n }\n return encoded;\n};\n\nconst bind = (value: unknown): D1Query => ({\n sql: \"json_extract(?, '$')\",\n params: [encodeD1Value(value)],\n});\n\nconst escapeLikePattern = (value: string): string =>\n value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll(\"%\", \"\\\\%\").replaceAll(\"_\", \"\\\\_\");\n\nconst stringPredicate = (\n condition: D1Predicate,\n operator: \"contains\" | \"ends_with\" | \"starts_with\",\n): D1Query => {\n if (typeof condition.value !== \"string\") {\n throw new InvalidD1PredicateError();\n }\n\n if (condition.mode !== \"insensitive\") {\n const parameter = bind(condition.value);\n const column = `${condition.field} COLLATE BINARY`;\n const value = `${parameter.sql} COLLATE BINARY`;\n if (operator === \"contains\" || operator === \"starts_with\") {\n return {\n sql: `instr(${column}, ${value}) ${operator === \"contains\" ? \"> 0\" : \"= 1\"}`,\n params: parameter.params,\n };\n }\n return {\n sql: `substr(${column}, length(${condition.field}) - length(${parameter.sql}) + 1) = ${value}`,\n params: [...parameter.params, ...parameter.params],\n };\n }\n\n const literal = escapeLikePattern(condition.value);\n const pattern =\n operator === \"contains\"\n ? `%${literal}%`\n : operator === \"starts_with\"\n ? `${literal}%`\n : `%${literal}`;\n const parameter = bind(pattern);\n return {\n sql: `lower(${condition.field}) LIKE lower(${parameter.sql}) ESCAPE '\\\\'`,\n params: parameter.params,\n };\n};\n\nconst predicate = (condition: D1Predicate): D1Query => {\n const operator = condition.operator ?? \"eq\";\n switch (operator) {\n case \"eq\":\n case \"ne\": {\n if (condition.value === null) {\n return {\n sql: `${condition.field} IS ${operator === \"ne\" ? \"NOT \" : \"\"}NULL`,\n params: [],\n };\n }\n const parameter = bind(condition.value);\n const insensitive =\n \"mode\" in condition && condition.mode === \"insensitive\";\n const column = insensitive\n ? `lower(${condition.field})`\n : condition.field;\n const value = insensitive ? `lower(${parameter.sql})` : parameter.sql;\n return {\n sql: `${column} ${operator === \"eq\" ? \"=\" : \"<>\"} ${value}`,\n params: parameter.params,\n };\n }\n case \"gt\":\n case \"gte\":\n case \"lt\":\n case \"lte\": {\n const sqlOperator = {\n gt: \">\",\n gte: \">=\",\n lt: \"<\",\n lte: \"<=\",\n }[operator];\n const parameter = bind(condition.value);\n return {\n sql: `${condition.field} ${sqlOperator} ${parameter.sql}`,\n params: parameter.params,\n };\n }\n case \"in\":\n case \"not_in\": {\n if (!Array.isArray(condition.value)) {\n throw new InvalidD1PredicateError();\n }\n if (condition.value.length === 0) {\n return { sql: operator === \"not_in\" ? \"1 = 1\" : \"1 = 0\", params: [] };\n }\n return {\n sql: `${condition.field} ${operator === \"not_in\" ? \"NOT \" : \"\"}IN (SELECT value FROM json_each(?))`,\n params: [encodeD1Value(condition.value)],\n };\n }\n case \"contains\":\n case \"starts_with\":\n case \"ends_with\":\n return stringPredicate(condition, operator);\n }\n};\n\nexport const buildD1Where = (\n where: readonly D1Predicate[] | undefined,\n): D1Query => {\n const [first, ...rest] = where ?? [];\n if (first === undefined) return { sql: \"\", params: [] };\n const initial = predicate(first);\n let sql = initial.sql;\n const params = [...initial.params];\n for (const condition of rest) {\n const next = predicate(condition);\n sql = `(${sql} ${condition.connector === \"OR\" ? \"OR\" : \"AND\"} ${next.sql})`;\n params.push(...next.params);\n }\n return { sql: ` WHERE ${sql}`, params };\n};\n\nexport const buildD1Order = (orderBy: readonly D1Sort[] | undefined): string =>\n orderBy === undefined\n ? \"\"\n : ` ORDER BY ${orderBy\n .map(\n (clause) =>\n `${clause.field} ${clause.direction.toUpperCase()}${\n clause.nulls ? ` NULLS ${clause.nulls.toUpperCase()}` : \"\"\n }`,\n )\n .join(\", \")}`;\n\nexport const d1Placeholders = (count: number): string =>\n Array.from({ length: count }, () => \"json_extract(?, '$')\").join(\", \");\n\nexport const encodeD1Values = (values: readonly unknown[]): readonly string[] =>\n values.map(encodeD1Value);\n", "import type {\n CountDatabaseImplementationInput,\n DatabaseImplementationResult,\n DatabaseModel,\n FindManyDatabaseImplementationInput,\n} from \"@hot-updater/plugin-core/internal\";\n\nimport type { D1Executor } from \"./d1Implementation\";\nimport { parseD1Row } from \"./d1Rows\";\nimport { buildD1Order, buildD1Where, encodeD1Values } from \"./d1Sql\";\n\nexport const d1TableNames = {\n bundles: \"bundles\",\n bundle_patches: \"bundle_patches\",\n channels: \"channels\",\n bundle_events: \"bundle_events\",\n api_keys: \"api_keys\",\n release_catalogs: \"release_catalogs\",\n releases: \"releases\",\n} as const satisfies Record<DatabaseModel, string>;\n\nexport class D1QueryResultError extends Error {\n readonly name = \"D1QueryResultError\";\n readonly operation = \"count\";\n\n constructor(readonly result: unknown) {\n super(\"D1 count query returned a malformed first row\");\n }\n}\n\nexport const countD1Rows = async (\n executor: D1Executor,\n input: CountDatabaseImplementationInput,\n): Promise<number> => {\n const where = buildD1Where(input.where);\n const table = d1TableNames[input.model];\n const source =\n input.distinct === undefined\n ? `${table}${where.sql}`\n : `(SELECT DISTINCT ${input.distinct.join(\", \")} FROM ${table}${where.sql}) AS distinct_rows`;\n const rows = await executor.query(\n `SELECT COUNT(*) AS count FROM ${source}`,\n where.params,\n );\n const row = rows[0];\n if (typeof row !== \"object\" || row === null || Array.isArray(row)) {\n throw new D1QueryResultError(row);\n }\n const count = Reflect.get(row, \"count\");\n if (typeof count !== \"number\" || !Number.isFinite(count)) {\n throw new D1QueryResultError(row);\n }\n return count;\n};\n\nexport const findManyD1Rows = async (\n executor: D1Executor,\n input: FindManyDatabaseImplementationInput,\n): Promise<readonly DatabaseImplementationResult[]> => {\n const where = buildD1Where(input.where);\n const orderBy = input.orderBy;\n const order = buildD1Order(orderBy);\n const table = d1TableNames[input.model];\n const source =\n input.distinctOn === undefined\n ? `SELECT * FROM ${table}${where.sql}${order}`\n : `SELECT * FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY ${input.distinctOn.fields.join(\", \")}${order}) AS __hot_updater_rank FROM ${table}${where.sql}) AS distinct_rows WHERE __hot_updater_rank = 1${order}`;\n const pageParams = encodeD1Values([input.limit, input.offset]);\n const rows = await executor.query(\n `${source} LIMIT json_extract(?, '$') OFFSET json_extract(?, '$')`,\n [...where.params, ...pageParams],\n );\n switch (input.model) {\n case \"bundles\":\n return rows.map((row) => parseD1Row(\"bundles\", row));\n case \"bundle_patches\":\n return rows.map((row) => parseD1Row(\"bundle_patches\", row));\n case \"channels\":\n return rows.map((row) => parseD1Row(\"channels\", row));\n case \"bundle_events\":\n return rows.map((row) => parseD1Row(\"bundle_events\", row));\n case \"api_keys\":\n return rows.map((row) => parseD1Row(\"api_keys\", row));\n case \"releases\":\n return rows.map((row) => parseD1Row(\"releases\", row));\n case \"release_catalogs\":\n return rows.map((row) => parseD1Row(\"release_catalogs\", row));\n }\n};\n", "import type {\n BundlePatchRow,\n BundleRow,\n ChannelInsertInput,\n ChannelInsertResult,\n ChannelRow,\n ChannelDeleteInput,\n ChannelDeleteResult,\n DatabaseChange,\n DatabaseCommit,\n DatabaseCommitExpectation,\n DatabaseCommitResult,\n} from \"@hot-updater/plugin-core\";\nimport type {\n CreateDatabaseImplementationInput,\n DatabasePluginImplementation,\n DeleteDatabaseImplementationInput,\n FindOneDatabaseImplementationInput,\n UpdateDatabaseImplementationInput,\n} from \"@hot-updater/plugin-core/internal\";\n\nimport { countD1Rows, d1TableNames, findManyD1Rows } from \"./d1Query\";\nimport { parseD1Row } from \"./d1Rows\";\nimport { buildD1Where, d1Placeholders, encodeD1Values } from \"./d1Sql\";\n\nexport interface D1Executor {\n query(sql: string, params: readonly string[]): Promise<readonly unknown[]>;\n batch(\n statements: readonly D1Statement[],\n ): Promise<readonly (readonly unknown[])[]>;\n}\n\nexport interface D1Statement {\n readonly sql: string;\n readonly params: readonly string[];\n}\n\ntype D1Guard = {\n readonly sql: string;\n readonly params: readonly string[];\n};\n\nconst EXPECTATION_CONFLICT_MARKER = \"HOT_UPDATER_COMMIT_EXPECTATION_CONFLICT\";\n\nconst expectationGuard = (\n expectations: readonly DatabaseCommitExpectation[],\n): D1Guard => {\n const clauses: string[] = [];\n const params: string[] = [];\n for (const expectation of expectations) {\n const isRelease = expectation.model === \"releases\";\n const table = isRelease ? \"releases\" : \"release_catalogs\";\n const keyField = isRelease ? \"id\" : \"scope_key\";\n const versionField = isRelease ? \"revision\" : \"generation\";\n const key = isRelease ? expectation.id : expectation.scopeKey;\n const version = isRelease ? expectation.revision : expectation.generation;\n if (version === null) {\n clauses.push(\n `NOT EXISTS (SELECT 1 FROM ${table} WHERE ${keyField} = json_extract(?, '$'))`,\n );\n params.push(...encodeD1Values([key]));\n } else {\n clauses.push(\n `EXISTS (SELECT 1 FROM ${table} WHERE ${keyField} = json_extract(?, '$') AND ${versionField} = json_extract(?, '$'))`,\n );\n params.push(...encodeD1Values([key, version]));\n }\n }\n return { sql: clauses.join(\" AND \") || \"1\", params };\n};\n\nconst readVersion = (\n row: unknown,\n field: \"generation\" | \"revision\",\n): number | null => {\n if (typeof row !== \"object\" || row === null) return null;\n const value = Reflect.get(row, field);\n return typeof value === \"number\" ? value : null;\n};\n\nconst expectationConflict = async (\n executor: D1Executor,\n expectations: readonly DatabaseCommitExpectation[],\n): Promise<DatabaseCommitResult | null> => {\n for (const expectation of expectations) {\n const isRelease = expectation.model === \"releases\";\n const table = isRelease ? \"releases\" : \"release_catalogs\";\n const keyField = isRelease ? \"id\" : \"scope_key\";\n const versionField = isRelease ? \"revision\" : \"generation\";\n const key = isRelease ? expectation.id : expectation.scopeKey;\n const expectedVersion = isRelease\n ? expectation.revision\n : expectation.generation;\n const rows = await executor.query(\n `SELECT ${versionField} FROM ${table} WHERE ${keyField} = json_extract(?, '$') LIMIT 1`,\n encodeD1Values([key]),\n );\n const actualVersion = readVersion(rows[0], versionField);\n if (actualVersion !== expectedVersion) {\n return {\n committed: false,\n conflict: {\n actualVersion,\n changeIndex: -1,\n expectedVersion,\n key,\n model: expectation.model,\n reason: \"version_conflict\",\n },\n };\n }\n }\n return null;\n};\n\nconst isExpectationConflictError = (error: unknown): boolean => {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes(EXPECTATION_CONFLICT_MARKER) ||\n message.toLowerCase().includes(\"malformed json\")\n );\n};\n\nconst bundleValues = (row: BundleRow): readonly unknown[] => [\n row.id,\n row.platform,\n row.file_hash,\n row.git_commit_hash,\n row.storage_uri,\n row.archive_byte_size,\n row.metadata,\n row.manifest_storage_uri,\n row.manifest_file_hash,\n row.asset_base_storage_uri,\n];\n\nconst patchValues = (row: BundlePatchRow): readonly unknown[] => [\n row.id,\n row.bundle_id,\n row.base_bundle_id,\n row.base_file_hash,\n row.patch_file_hash,\n row.patch_storage_uri,\n row.byte_size,\n row.order_index,\n];\n\nconst channelValues = (row: ChannelRow): readonly unknown[] => [\n row.id,\n row.name,\n];\n\nconst insertQuery = (\n input: CreateDatabaseImplementationInput,\n guard?: D1Guard,\n conflictMode: \"returnExisting\" | \"ignore\" = \"returnExisting\",\n): D1Statement => {\n let columns: readonly string[];\n let values: readonly unknown[];\n switch (input.model) {\n case \"bundles\":\n columns = [\n \"id\",\n \"platform\",\n \"file_hash\",\n \"git_commit_hash\",\n \"storage_uri\",\n \"archive_byte_size\",\n \"metadata\",\n \"manifest_storage_uri\",\n \"manifest_file_hash\",\n \"asset_base_storage_uri\",\n ];\n values = bundleValues(input.data);\n break;\n case \"bundle_patches\":\n columns = [\n \"id\",\n \"bundle_id\",\n \"base_bundle_id\",\n \"base_file_hash\",\n \"patch_file_hash\",\n \"patch_storage_uri\",\n \"byte_size\",\n \"order_index\",\n ];\n values = patchValues(input.data);\n break;\n case \"channels\":\n columns = [\"id\", \"name\"];\n values = channelValues(input.data);\n break;\n case \"bundle_events\":\n case \"api_keys\":\n case \"release_catalogs\":\n case \"releases\":\n columns = Object.keys(input.data);\n values = Object.values(input.data);\n break;\n }\n\n const conflict =\n input.onConflict !== \"ignore\"\n ? \"\"\n : input.model === \"channels\"\n ? conflictMode === \"ignore\"\n ? \" ON CONFLICT(name) DO NOTHING\"\n : \" ON CONFLICT(name) DO UPDATE SET name = excluded.name\"\n : input.model === \"api_keys\"\n ? conflictMode === \"ignore\"\n ? \" ON CONFLICT(hash) DO NOTHING\"\n : \" ON CONFLICT(hash) DO UPDATE SET hash = excluded.hash\"\n : \"\";\n\n return {\n sql: `INSERT INTO ${d1TableNames[input.model]} (${columns.join(\", \")}) ${\n guard === undefined\n ? `VALUES (${d1Placeholders(values.length)})`\n : `SELECT ${d1Placeholders(values.length)} WHERE ${guard.sql}`\n }${conflict} RETURNING *`,\n params: [...encodeD1Values(values), ...(guard?.params ?? [])],\n };\n};\n\nconst updateEntries = (\n update: UpdateDatabaseImplementationInput[\"update\"],\n): readonly [string, unknown][] => Object.entries(update);\n\nconst updateQuery = (\n input: UpdateDatabaseImplementationInput,\n guard?: D1Guard,\n): D1Statement => {\n const entries = updateEntries(input.update);\n const where = buildD1Where(input.where);\n if (entries.length === 0) {\n return {\n sql: `SELECT * FROM ${d1TableNames[input.model]}${where.sql}${guard ? ` AND ${guard.sql}` : \"\"} LIMIT 1`,\n params: [...where.params, ...(guard?.params ?? [])],\n };\n }\n const assignments = entries\n .map(([field]) => `${field} = json_extract(?, '$')`)\n .join(\", \");\n return {\n sql: `UPDATE ${d1TableNames[input.model]} SET ${assignments}${where.sql}${guard ? ` AND ${guard.sql}` : \"\"} RETURNING *`,\n params: [\n ...encodeD1Values(entries.map(([, value]) => value)),\n ...where.params,\n ...(guard?.params ?? []),\n ],\n };\n};\n\nconst deleteQuery = (\n input: DeleteDatabaseImplementationInput,\n guard?: D1Guard,\n): D1Statement => {\n const where = buildD1Where(input.where);\n return {\n sql: `DELETE FROM ${d1TableNames[input.model]}${where.sql}${guard ? ` AND ${guard.sql}` : \"\"}`,\n params: [...where.params, ...(guard?.params ?? [])],\n };\n};\n\ntype D1RequiredRow = {\n readonly model: \"bundles\" | \"api_keys\" | \"releases\";\n readonly id: string;\n readonly changeIndex: number;\n};\n\ntype D1Check = {\n readonly changeIndex: number;\n readonly resultIndex: number;\n readonly conflictWhen: \"empty\" | \"nonempty\";\n readonly reason: \"not_found\" | \"referenced\";\n};\n\ntype D1CommitPlan = {\n readonly checks: readonly D1Check[];\n readonly statements: readonly D1Statement[];\n};\n\nconst insertedKey = (change: DatabaseChange): string | undefined => {\n if (change.operation !== \"insert\") return undefined;\n if (change.model === \"bundles\") return `bundles:${change.row.id}`;\n if (change.model === \"apiKeys\") {\n return `api_keys:${change.row.id}`;\n }\n if (change.model === \"releases\") {\n return `releases:${change.row.id}`;\n }\n return undefined;\n};\n\nconst requiredRow = (\n change: DatabaseChange,\n changeIndex: number,\n): D1RequiredRow | undefined => {\n if (change.operation !== \"update\") return undefined;\n if (change.model === \"bundles\") {\n return {\n model: \"bundles\",\n id: change.where.id,\n changeIndex,\n };\n }\n if (change.model === \"apiKeys\") {\n return {\n model: \"api_keys\",\n id: change.where.id,\n changeIndex,\n };\n }\n if (change.model === \"releases\") {\n return {\n model: \"releases\",\n id: change.where.id,\n changeIndex,\n };\n }\n return undefined;\n};\n\ntype D1ChannelDeletePrecondition = {\n readonly id: string;\n readonly excludedReleaseIds: readonly string[];\n readonly addedReferenceReleaseIds: readonly string[];\n};\n\nconst channelDeletePrecondition = (\n changes: readonly DatabaseChange[],\n changeIndex: number,\n channelId: string,\n): D1ChannelDeletePrecondition => {\n const releaseEffects = new Map<string, string | null>();\n for (const change of changes.slice(0, changeIndex)) {\n if (change.model !== \"releases\") continue;\n switch (change.operation) {\n case \"insert\":\n releaseEffects.set(change.row.id, change.row.channel_id);\n break;\n case \"update\":\n break;\n case \"delete\":\n releaseEffects.set(change.where.id, null);\n break;\n }\n }\n return {\n id: channelId,\n excludedReleaseIds: [...releaseEffects.keys()],\n addedReferenceReleaseIds: [...releaseEffects]\n .filter(([, finalChannelId]) => finalChannelId === channelId)\n .map(([releaseId]) => releaseId),\n };\n};\n\nconst changeQuery = (change: DatabaseChange, guard: D1Guard): D1Statement => {\n switch (change.model) {\n case \"bundles\":\n switch (change.operation) {\n case \"insert\":\n return insertQuery({ model: \"bundles\", data: change.row }, guard);\n case \"update\":\n return updateQuery(\n {\n model: \"bundles\",\n where: [{ field: \"id\", value: change.where.id }],\n update: change.update,\n },\n guard,\n );\n case \"delete\":\n return deleteQuery(\n {\n model: \"bundles\",\n where: [{ field: \"id\", value: change.where.id }],\n },\n guard,\n );\n }\n case \"bundlePatches\":\n return change.operation === \"insert\"\n ? insertQuery({ model: \"bundle_patches\", data: change.row }, guard)\n : deleteQuery(\n {\n model: \"bundle_patches\",\n where: [{ field: \"bundle_id\", value: change.where.bundleId }],\n },\n guard,\n );\n case \"releases\":\n switch (change.operation) {\n case \"insert\":\n return insertQuery({ model: \"releases\", data: change.row }, guard);\n case \"update\":\n return updateQuery(\n {\n model: \"releases\",\n where: [{ field: \"id\", value: change.where.id }],\n update: change.update,\n },\n guard,\n );\n case \"delete\":\n return deleteQuery(\n {\n model: \"releases\",\n where: [{ field: \"id\", value: change.where.id }],\n },\n guard,\n );\n }\n case \"releaseCatalogs\":\n return {\n sql: `INSERT INTO release_catalogs (${Object.keys(change.row).join(\", \")}) SELECT ${d1Placeholders(Object.keys(change.row).length)} WHERE ${guard.sql} ON CONFLICT(scope_key) DO UPDATE SET ${Object.keys(\n change.row,\n )\n .filter((field) => field !== \"scope_key\")\n .map((field) => `${field} = excluded.${field}`)\n .join(\", \")} RETURNING *`,\n params: [...encodeD1Values(Object.values(change.row)), ...guard.params],\n };\n case \"channels\":\n return change.operation === \"insert\"\n ? insertQuery(\n {\n model: \"channels\",\n data: change.row,\n onConflict: change.onConflict,\n },\n guard,\n \"ignore\",\n )\n : {\n sql: `DELETE FROM channels WHERE id = json_extract(?, '$') AND NOT EXISTS (SELECT 1 FROM releases WHERE channel_id = json_extract(?, '$')) AND ${guard.sql}`,\n params: [\n ...encodeD1Values([change.where.id, change.where.id]),\n ...guard.params,\n ],\n };\n case \"analytics\":\n return insertQuery({ model: \"bundle_events\", data: change.row }, guard);\n case \"apiKeys\":\n return change.operation === \"insert\"\n ? insertQuery(\n {\n model: \"api_keys\",\n data: change.row,\n onConflict: change.onConflict,\n },\n guard,\n \"ignore\",\n )\n : updateQuery(\n {\n model: \"api_keys\",\n where: [{ field: \"id\", value: change.where.id }],\n update: { revoked_at_ms: change.update.revokedAtMs },\n },\n guard,\n );\n }\n};\n\nconst createCommitPlan = (input: DatabaseCommit): D1CommitPlan => {\n const checks: D1Check[] = [];\n const statements: D1Statement[] = [];\n const expectations = input.expectations ?? [];\n if (expectations.length > 0) {\n const guard = expectationGuard(expectations);\n statements.push({\n sql: `SELECT CASE WHEN ${guard.sql} THEN 1 ELSE json_extract('${EXPECTATION_CONFLICT_MARKER}', '$') END AS expectation_guard`,\n params: guard.params,\n });\n }\n const requiredRows: D1RequiredRow[] = [];\n const channelDeletes: D1ChannelDeletePrecondition[] = [];\n const inserted = new Set<string>();\n for (const [changeIndex, change] of input.changes.entries()) {\n const required = requiredRow(change, changeIndex);\n if (required !== undefined) {\n if (!inserted.has(`${required.model}:${required.id}`)) {\n requiredRows.push(required);\n checks.push({\n changeIndex,\n resultIndex: statements.length,\n conflictWhen: \"empty\",\n reason: \"not_found\",\n });\n statements.push({\n sql: `SELECT id FROM ${d1TableNames[required.model]} WHERE id = json_extract(?, '$') LIMIT 1`,\n params: encodeD1Values([required.id]),\n });\n }\n }\n if (change.model === \"channels\" && change.operation === \"delete\") {\n const precondition = channelDeletePrecondition(\n input.changes,\n changeIndex,\n change.where.id,\n );\n channelDeletes.push(precondition);\n checks.push({\n changeIndex,\n resultIndex: statements.length,\n conflictWhen: \"nonempty\",\n reason: \"referenced\",\n });\n statements.push({\n sql: \"SELECT id FROM releases WHERE channel_id = json_extract(?, '$') AND id NOT IN (SELECT value FROM json_each(?)) UNION ALL SELECT value AS id FROM json_each(?) LIMIT 1\",\n params: encodeD1Values([\n precondition.id,\n precondition.excludedReleaseIds,\n precondition.addedReferenceReleaseIds,\n ]),\n });\n }\n const key = insertedKey(change);\n if (key !== undefined) inserted.add(key);\n }\n\n const guard: D1Guard = {\n sql: `NOT EXISTS (\n SELECT 1 FROM json_each(?) AS required\n WHERE NOT EXISTS (\n SELECT 1 FROM bundles\n WHERE json_extract(required.value, '$.model') = 'bundles'\n AND bundles.id = json_extract(required.value, '$.id')\n UNION ALL\n SELECT 1 FROM api_keys\n WHERE json_extract(required.value, '$.model') = 'api_keys'\n AND api_keys.id = json_extract(required.value, '$.id')\n UNION ALL\n SELECT 1 FROM channels\n WHERE json_extract(required.value, '$.model') = 'channels'\n AND channels.id = json_extract(required.value, '$.id')\n UNION ALL\n SELECT 1 FROM releases\n WHERE json_extract(required.value, '$.model') = 'releases'\n AND releases.id = json_extract(required.value, '$.id')\n )\n ) AND NOT EXISTS (\n SELECT 1 FROM json_each(?) AS channel_delete\n WHERE EXISTS (\n SELECT 1 FROM releases\n WHERE releases.channel_id = json_extract(channel_delete.value, '$.id')\n AND releases.id NOT IN (\n SELECT value FROM json_each(\n json_extract(channel_delete.value, '$.excludedReleaseIds')\n )\n )\n UNION ALL\n SELECT value FROM json_each(\n json_extract(channel_delete.value, '$.addedReferenceReleaseIds')\n )\n )\n )`,\n params: encodeD1Values([\n requiredRows.map(({ model, id }) => ({ model, id })),\n channelDeletes,\n ]),\n };\n\n statements.push(...input.changes.map((change) => changeQuery(change, guard)));\n return { checks, statements };\n};\n\nconst resultForPlan = (\n plan: D1CommitPlan,\n results: readonly (readonly unknown[])[],\n): DatabaseCommitResult => {\n const missing = plan.checks.find(({ conflictWhen, resultIndex }) =>\n conflictWhen === \"empty\"\n ? (results[resultIndex]?.length ?? 0) === 0\n : (results[resultIndex]?.length ?? 0) > 0,\n );\n return missing === undefined\n ? { committed: true }\n : {\n committed: false,\n conflict: {\n changeIndex: missing.changeIndex,\n reason: missing.reason,\n },\n };\n};\n\nconst insertChannel = async (\n executor: D1Executor,\n input: ChannelInsertInput,\n): Promise<ChannelInsertResult> => {\n const insert = insertQuery(\n { model: \"channels\", data: input.row, onConflict: \"ignore\" },\n undefined,\n \"ignore\",\n );\n const select = {\n sql: \"SELECT id, name FROM channels WHERE name = json_extract(?, '$') LIMIT 1\",\n params: encodeD1Values([input.row.name]),\n };\n const [insertedRows = [], canonicalRows = []] = await executor.batch([\n insert,\n select,\n ]);\n return {\n row: parseD1Row(\"channels\", canonicalRows[0]),\n inserted: insertedRows.length > 0,\n };\n};\n\nconst deleteChannel = async (\n executor: D1Executor,\n input: ChannelDeleteInput,\n): Promise<ChannelDeleteResult> => {\n const [channelRows = [], referenceRows = [], deletedRows = []] =\n await executor.batch([\n {\n sql: \"SELECT id FROM channels WHERE id = json_extract(?, '$') LIMIT 1\",\n params: encodeD1Values([input.id]),\n },\n {\n sql: \"SELECT id FROM releases WHERE channel_id = json_extract(?, '$') LIMIT 1\",\n params: encodeD1Values([input.id]),\n },\n {\n sql: \"DELETE FROM channels WHERE id = json_extract(?, '$') AND NOT EXISTS (SELECT 1 FROM releases WHERE channel_id = json_extract(?, '$')) RETURNING id\",\n params: encodeD1Values([input.id, input.id]),\n },\n ]);\n if (channelRows.length === 0) return { deleted: false, reason: \"not_found\" };\n if (referenceRows.length > 0) return { deleted: false, reason: \"not_empty\" };\n return deletedRows.length > 0\n ? { deleted: true }\n : { deleted: false, reason: \"not_empty\" };\n};\n\nexport const createD1Implementation = (\n executor: D1Executor,\n): DatabasePluginImplementation => ({\n async create(input) {\n const query = insertQuery(input);\n const rows = await executor.query(query.sql, query.params);\n switch (input.model) {\n case \"bundles\":\n return parseD1Row(\"bundles\", rows[0]);\n case \"bundle_patches\":\n return parseD1Row(\"bundle_patches\", rows[0]);\n case \"channels\":\n return parseD1Row(\"channels\", rows[0]);\n case \"bundle_events\":\n return parseD1Row(\"bundle_events\", rows[0]);\n case \"api_keys\":\n return parseD1Row(\"api_keys\", rows[0]);\n case \"releases\":\n return parseD1Row(\"releases\", rows[0]);\n case \"release_catalogs\":\n return parseD1Row(\"release_catalogs\", rows[0]);\n }\n },\n async update(input) {\n const query = updateQuery(input);\n const rows = await executor.query(query.sql, query.params);\n if (rows[0] === undefined) return null;\n switch (input.model) {\n case \"bundles\":\n return parseD1Row(\"bundles\", rows[0]);\n case \"api_keys\":\n return parseD1Row(\"api_keys\", rows[0]);\n case \"releases\":\n return parseD1Row(\"releases\", rows[0]);\n case \"release_catalogs\":\n return parseD1Row(\"release_catalogs\", rows[0]);\n }\n },\n async delete(input) {\n const query = deleteQuery(input);\n await executor.query(query.sql, query.params);\n },\n count: (input) => countD1Rows(executor, input),\n async findOne(input: FindOneDatabaseImplementationInput) {\n const where = buildD1Where(input.where);\n const rows = await executor.query(\n `SELECT * FROM ${d1TableNames[input.model]}${where.sql} LIMIT 1`,\n where.params,\n );\n if (rows[0] === undefined) return null;\n switch (input.model) {\n case \"bundles\":\n return parseD1Row(\"bundles\", rows[0]);\n case \"bundle_patches\":\n return parseD1Row(\"bundle_patches\", rows[0]);\n case \"channels\":\n return parseD1Row(\"channels\", rows[0]);\n case \"api_keys\":\n return parseD1Row(\"api_keys\", rows[0]);\n case \"releases\":\n return parseD1Row(\"releases\", rows[0]);\n case \"release_catalogs\":\n return parseD1Row(\"release_catalogs\", rows[0]);\n }\n },\n findMany: (input) => findManyD1Rows(executor, input),\n insertChannel: (input) => insertChannel(executor, input),\n deleteChannel: (input) => deleteChannel(executor, input),\n async commit(input) {\n if (input.changes.length === 0) return { committed: true };\n const expectations = input.expectations ?? [];\n const conflict = await expectationConflict(executor, expectations);\n if (conflict !== null) return conflict;\n const plan = createCommitPlan(input);\n try {\n return resultForPlan(plan, await executor.batch(plan.statements));\n } catch (error) {\n if (expectations.length === 0 || !isExpectationConflictError(error)) {\n throw error;\n }\n return (\n (await expectationConflict(executor, expectations)) ?? {\n committed: false,\n conflict: {\n actualVersion:\n expectations[0].model === \"releases\"\n ? expectations[0].revision\n : expectations[0].generation,\n changeIndex: -1,\n expectedVersion:\n expectations[0].model === \"releases\"\n ? expectations[0].revision\n : expectations[0].generation,\n key:\n expectations[0].model === \"releases\"\n ? expectations[0].id\n : expectations[0].scopeKey,\n model: expectations[0].model,\n reason: \"version_conflict\",\n },\n }\n );\n }\n },\n});\n", "import { createDatabasePlugin } from \"@hot-updater/plugin-core\";\nimport { createDatabasePluginAdapter } from \"@hot-updater/plugin-core/internal\";\n\nimport { createD1Implementation } from \"../d1Implementation\";\n\ntype D1Result = {\n readonly results?: readonly unknown[];\n};\n\ntype D1BoundStatement = {\n all: () => Promise<D1Result>;\n};\n\ntype D1PreparedStatement = {\n bind: (...values: readonly unknown[]) => D1BoundStatement;\n};\n\nexport type D1Like = {\n prepare(sql: string): D1PreparedStatement;\n batch(statements: D1BoundStatement[]): Promise<readonly D1Result[]>;\n};\n\nexport interface CloudflareWorkerDatabaseEnv {\n readonly DB: D1Like;\n}\n\nexport const d1Database = (database: D1Like) => {\n const implementation = createD1Implementation({\n async query(sql, params) {\n const result = await database\n .prepare(sql)\n .bind(...params)\n .all();\n return result.results ?? [];\n },\n async batch(statements) {\n const results = await database.batch(\n statements.map(({ sql, params }) =>\n database.prepare(sql).bind(...params),\n ),\n );\n return results.map(({ results }) => results ?? []);\n },\n });\n const adapter = createDatabasePluginAdapter(\"d1Database\", implementation);\n return createDatabasePlugin({\n name: \"d1Database\",\n models: adapter.models,\n commit: adapter.commit,\n ...(adapter.dispose ? { dispose: adapter.dispose } : {}),\n });\n};\n", "import {\n createStorageKeyBuilder,\n createStorageDownloadUrl,\n createStoragePlugin,\n createStorageUri,\n parseStorageUri,\n type StoragePluginWith,\n} from \"@hot-updater/plugin-core\";\n\nexport interface CloudflareWorkerStorageConfig {\n readonly bucket: R2Bucket;\n readonly bucketName: string;\n readonly basePath?: string;\n readonly downloadUrlSigningKey: string;\n}\n\nexport const r2WorkerStorage = (\n config: CloudflareWorkerStorageConfig,\n): StoragePluginWith<\n \"put\" | \"get\" | \"getDownloadUrl\" | \"exists\" | \"delete\"\n> => {\n const getStorageKey = createStorageKeyBuilder(config.basePath);\n const getDownloadUrl = createStorageDownloadUrl(config.downloadUrlSigningKey);\n\n const parseAndValidate = (storageUri: string) => {\n const parsed = parseStorageUri(storageUri, \"r2\");\n if (parsed.bucket !== config.bucketName) {\n throw new Error(\n `Bucket name mismatch: expected \"${config.bucketName}\", but found \"${parsed.bucket}\".`,\n );\n }\n return parsed;\n };\n\n return createStoragePlugin({\n name: \"r2Storage\",\n protocol: \"r2\",\n async put({ key, body, contentLength, contentType }) {\n const storageKey = getStorageKey(key);\n const uploadOptions = {\n httpMetadata: {\n contentType,\n cacheControl: \"max-age=31536000\",\n },\n };\n if (contentLength === undefined) {\n const bufferedBody = new Uint8Array(\n await new Response(body).arrayBuffer(),\n );\n await config.bucket.put(storageKey, bufferedBody, uploadOptions);\n } else {\n const fixedLengthBody = new FixedLengthStream(contentLength);\n await Promise.all([\n body.pipeTo(fixedLengthBody.writable),\n config.bucket.put(\n storageKey,\n fixedLengthBody.readable,\n uploadOptions,\n ),\n ]);\n }\n return {\n storageUri: createStorageUri({\n protocol: \"r2\",\n bucket: config.bucketName,\n key: storageKey,\n }),\n };\n },\n async get({ storageUri }) {\n const { key } = parseAndValidate(storageUri);\n const object = await config.bucket.get(key);\n if (!object) return { response: null };\n const headers = new Headers();\n object.writeHttpMetadata(headers);\n headers.set(\"etag\", object.httpEtag);\n headers.set(\"content-length\", String(object.size));\n return { response: new Response(object.body, { headers }) };\n },\n async getDownloadUrl({ storageUri }) {\n parseAndValidate(storageUri);\n return getDownloadUrl({ storageUri });\n },\n async exists({ storageUri }) {\n const { key } = parseAndValidate(storageUri);\n return { exists: (await config.bucket.head(key)) !== null };\n },\n async delete({ storageUri }) {\n const { key } = parseAndValidate(storageUri);\n await config.bucket.delete(key);\n return { deleted: true };\n },\n });\n};\n"],
6
+ "mappings": "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",
7
+ "names": ["match", "metadata", "isRecord", "isChannelText", "isRecord", "isRecord", "isRecord", "validateWhere", "isRecord", "isChannelText", "query", "run", "metadata", "metadata", "PAGE_SIZE", "insertChannel", "version", "match", "match", "raw", "version", "version", "retained", "retainedIds", "match", "isRecord", "match", "compareCodePoints", "query", "compareCodePoints", "compareCodePoints", "query", "metadata", "rollbackReleases", "options", "version", "version", "match", "raw", "app", "env", "Node", "_Node", "Node", "Hono", "isRecord", "parameter", "version", "guard", "query", "results", "Hono"]
8
8
  }