{"version":3,"file":"cjs-CC1S3xV3.cjs","names":["node_crypto_1","node_buffer_1","node_crypto_1","util","node_crypto_1","crypto","node_crypto_1","node_crypto_1","node_buffer_1","node_crypto_1","node_crypto_1","node_crypto_1","node_util_1","node_util_1","node_crypto_1","node_crypto_1","node_crypto_1","node_util_1","node_crypto_1","node_crypto_1","node_crypto_1","node_crypto_1","node_crypto_1","node_crypto_1","crypto","node_util_1","node_util_1"],"sources":["../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/emitter/interface.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/plugins/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/events/interfaces.js","../../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/utils/pick.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/validation/errors.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/validation/helpers.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/validation/assertions.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/events/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/callback/index.js","../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/cjs/create-deferred/create-deferred.js","../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/cjs/create-deferred/index.js","../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/cjs/emitter/emitter.js","../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/cjs/emitter/index.js","../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/cjs/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/priority-queue/backoff.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/priority-queue/index.js","../../../node_modules/.pnpm/@lukeed+uuid@2.0.1/node_modules/@lukeed/uuid/dist/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/logger/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/stats/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/context/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/utils/group-by.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/utils/is-thenable.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/task/task-group.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/queue/delivery.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/queue/event-queue.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/analytics/index.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/analytics/dispatch.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/utils/bind-all.js","../../../node_modules/.pnpm/@segment+analytics-core@1.8.3/node_modules/@segment/analytics-core/dist/cjs/index.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/settings.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/generated/version.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/create-url.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/uuid.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/plugins/segmentio/context-batch.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js","../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/token-manager.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/base-64-encode.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/plugins/segmentio/publisher.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/env.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/plugins/segmentio/index.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/get-message-id.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/event-factory.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/context.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/dispatch-emit.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/emitter.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/event-queue.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/abort.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/fetch.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/lib/http-client.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/app/analytics-node.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/index.common.js","../../../node_modules/.pnpm/@segment+analytics-node@3.1.0/node_modules/@segment/analytics-node/dist/cjs/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=interface.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=interfaces.js.map","function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n\nexports.dset = dset;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pickBy = void 0;\nvar pickBy = function (obj, fn) {\n    return Object.keys(obj)\n        .filter(function (k) { return fn(k, obj[k]); })\n        .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});\n};\nexports.pickBy = pickBy;\n//# sourceMappingURL=pick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValidationError = void 0;\nvar tslib_1 = require(\"tslib\");\nvar ValidationError = /** @class */ (function (_super) {\n    tslib_1.__extends(ValidationError, _super);\n    function ValidationError(field, message) {\n        var _this = _super.call(this, \"\".concat(field, \" \").concat(message)) || this;\n        _this.field = field;\n        return _this;\n    }\n    return ValidationError;\n}(Error));\nexports.ValidationError = ValidationError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = exports.exists = exports.isFunction = exports.isNumber = exports.isString = void 0;\nfunction isString(obj) {\n    return typeof obj === 'string';\n}\nexports.isString = isString;\nfunction isNumber(obj) {\n    return typeof obj === 'number';\n}\nexports.isNumber = isNumber;\nfunction isFunction(obj) {\n    return typeof obj === 'function';\n}\nexports.isFunction = isFunction;\nfunction exists(val) {\n    return val !== undefined && val !== null;\n}\nexports.exists = exists;\nfunction isPlainObject(obj) {\n    return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');\n}\nexports.isPlainObject = isPlainObject;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateEvent = exports.assertMessageId = exports.assertTraits = exports.assertTrackEventProperties = exports.assertTrackEventName = exports.assertEventType = exports.assertEventExists = exports.assertUserIdentity = void 0;\nvar errors_1 = require(\"./errors\");\nvar helpers_1 = require(\"./helpers\");\nvar stringError = 'is not a string';\nvar objError = 'is not an object';\nvar nilError = 'is nil';\n// user identity check could hypothetically could be used in the browser event factory, but not 100% sure -- so this is node only for now\nfunction assertUserIdentity(event) {\n    var USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId';\n    var getAnyUserId = function (event) { var _a, _b, _c; return (_c = (_b = (_a = event.userId) !== null && _a !== void 0 ? _a : event.anonymousId) !== null && _b !== void 0 ? _b : event.groupId) !== null && _c !== void 0 ? _c : event.previousId; };\n    var id = getAnyUserId(event);\n    if (!(0, helpers_1.exists)(id)) {\n        throw new errors_1.ValidationError(USER_FIELD_NAME, nilError);\n    }\n    else if (!(0, helpers_1.isString)(id)) {\n        throw new errors_1.ValidationError(USER_FIELD_NAME, stringError);\n    }\n}\nexports.assertUserIdentity = assertUserIdentity;\nfunction assertEventExists(event) {\n    if (!(0, helpers_1.exists)(event)) {\n        throw new errors_1.ValidationError('Event', nilError);\n    }\n    if (typeof event !== 'object') {\n        throw new errors_1.ValidationError('Event', objError);\n    }\n}\nexports.assertEventExists = assertEventExists;\nfunction assertEventType(event) {\n    if (!(0, helpers_1.isString)(event.type)) {\n        throw new errors_1.ValidationError('.type', stringError);\n    }\n}\nexports.assertEventType = assertEventType;\nfunction assertTrackEventName(event) {\n    if (!(0, helpers_1.isString)(event.event)) {\n        throw new errors_1.ValidationError('.event', stringError);\n    }\n}\nexports.assertTrackEventName = assertTrackEventName;\nfunction assertTrackEventProperties(event) {\n    if (!(0, helpers_1.isPlainObject)(event.properties)) {\n        throw new errors_1.ValidationError('.properties', objError);\n    }\n}\nexports.assertTrackEventProperties = assertTrackEventProperties;\nfunction assertTraits(event) {\n    if (!(0, helpers_1.isPlainObject)(event.traits)) {\n        throw new errors_1.ValidationError('.traits', objError);\n    }\n}\nexports.assertTraits = assertTraits;\nfunction assertMessageId(event) {\n    if (!(0, helpers_1.isString)(event.messageId)) {\n        throw new errors_1.ValidationError('.messageId', stringError);\n    }\n}\nexports.assertMessageId = assertMessageId;\nfunction validateEvent(event) {\n    assertEventExists(event);\n    assertEventType(event);\n    assertMessageId(event);\n    if (event.type === 'track') {\n        assertTrackEventName(event);\n        assertTrackEventProperties(event);\n    }\n    if (['group', 'identify'].includes(event.type)) {\n        assertTraits(event);\n    }\n}\nexports.validateEvent = validateEvent;\n//# sourceMappingURL=assertions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoreEventFactory = void 0;\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./interfaces\"), exports);\nvar dset_1 = require(\"dset\");\nvar pick_1 = require(\"../utils/pick\");\nvar assertions_1 = require(\"../validation/assertions\");\n/**\n * Internal settings object that is used internally by the factory\n */\nvar InternalEventFactorySettings = /** @class */ (function () {\n    function InternalEventFactorySettings(settings) {\n        var _a, _b;\n        this.settings = settings;\n        this.createMessageId = settings.createMessageId;\n        this.onEventMethodCall = (_a = settings.onEventMethodCall) !== null && _a !== void 0 ? _a : (function () { });\n        this.onFinishedEvent = (_b = settings.onFinishedEvent) !== null && _b !== void 0 ? _b : (function () { });\n    }\n    return InternalEventFactorySettings;\n}());\nvar CoreEventFactory = /** @class */ (function () {\n    function CoreEventFactory(settings) {\n        this.settings = new InternalEventFactorySettings(settings);\n    }\n    CoreEventFactory.prototype.track = function (event, properties, options, integrationOptions) {\n        this.settings.onEventMethodCall({ type: 'track', options: options });\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), { event: event, type: 'track', properties: properties !== null && properties !== void 0 ? properties : {}, options: tslib_1.__assign({}, options), integrations: tslib_1.__assign({}, integrationOptions) }));\n    };\n    CoreEventFactory.prototype.page = function (category, page, properties, options, integrationOptions) {\n        var _a;\n        this.settings.onEventMethodCall({ type: 'page', options: options });\n        var event = {\n            type: 'page',\n            properties: tslib_1.__assign({}, properties),\n            options: tslib_1.__assign({}, options),\n            integrations: tslib_1.__assign({}, integrationOptions),\n        };\n        if (category !== null) {\n            event.category = category;\n            event.properties = (_a = event.properties) !== null && _a !== void 0 ? _a : {};\n            event.properties.category = category;\n        }\n        if (page !== null) {\n            event.name = page;\n        }\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), event));\n    };\n    CoreEventFactory.prototype.screen = function (category, screen, properties, options, integrationOptions) {\n        this.settings.onEventMethodCall({ type: 'screen', options: options });\n        var event = {\n            type: 'screen',\n            properties: tslib_1.__assign({}, properties),\n            options: tslib_1.__assign({}, options),\n            integrations: tslib_1.__assign({}, integrationOptions),\n        };\n        if (category !== null) {\n            event.category = category;\n        }\n        if (screen !== null) {\n            event.name = screen;\n        }\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), event));\n    };\n    CoreEventFactory.prototype.identify = function (userId, traits, options, integrationsOptions) {\n        this.settings.onEventMethodCall({ type: 'identify', options: options });\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), { type: 'identify', userId: userId, traits: traits !== null && traits !== void 0 ? traits : {}, options: tslib_1.__assign({}, options), integrations: integrationsOptions }));\n    };\n    CoreEventFactory.prototype.group = function (groupId, traits, options, integrationOptions) {\n        this.settings.onEventMethodCall({ type: 'group', options: options });\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), { type: 'group', traits: traits !== null && traits !== void 0 ? traits : {}, options: tslib_1.__assign({}, options), integrations: tslib_1.__assign({}, integrationOptions), //\n            groupId: groupId }));\n    };\n    CoreEventFactory.prototype.alias = function (to, from, // TODO: can we make this undefined?\n    options, integrationOptions) {\n        this.settings.onEventMethodCall({ type: 'alias', options: options });\n        var base = {\n            userId: to,\n            type: 'alias',\n            options: tslib_1.__assign({}, options),\n            integrations: tslib_1.__assign({}, integrationOptions),\n        };\n        if (from !== null) {\n            base.previousId = from;\n        }\n        if (to === undefined) {\n            return this.normalize(tslib_1.__assign(tslib_1.__assign({}, base), this.baseEvent()));\n        }\n        return this.normalize(tslib_1.__assign(tslib_1.__assign({}, this.baseEvent()), base));\n    };\n    CoreEventFactory.prototype.baseEvent = function () {\n        return {\n            integrations: {},\n            options: {},\n        };\n    };\n    /**\n     * Builds the context part of an event based on \"foreign\" keys that\n     * are provided in the `Options` parameter for an Event\n     */\n    CoreEventFactory.prototype.context = function (options) {\n        var _a;\n        /**\n         * If the event options are known keys from this list, we move them to the top level of the event.\n         * Any other options are moved to context.\n         */\n        var eventOverrideKeys = [\n            'userId',\n            'anonymousId',\n            'timestamp',\n            'messageId',\n        ];\n        delete options['integrations'];\n        var providedOptionsKeys = Object.keys(options);\n        var context = (_a = options.context) !== null && _a !== void 0 ? _a : {};\n        var eventOverrides = {};\n        providedOptionsKeys.forEach(function (key) {\n            if (key === 'context') {\n                return;\n            }\n            if (eventOverrideKeys.includes(key)) {\n                (0, dset_1.dset)(eventOverrides, key, options[key]);\n            }\n            else {\n                (0, dset_1.dset)(context, key, options[key]);\n            }\n        });\n        return [context, eventOverrides];\n    };\n    CoreEventFactory.prototype.normalize = function (event) {\n        var _a, _b;\n        var integrationBooleans = Object.keys((_a = event.integrations) !== null && _a !== void 0 ? _a : {}).reduce(function (integrationNames, name) {\n            var _a;\n            var _b;\n            return tslib_1.__assign(tslib_1.__assign({}, integrationNames), (_a = {}, _a[name] = Boolean((_b = event.integrations) === null || _b === void 0 ? void 0 : _b[name]), _a));\n        }, {});\n        // filter out any undefined options\n        event.options = (0, pick_1.pickBy)(event.options || {}, function (_, value) {\n            return value !== undefined;\n        });\n        // This is pretty trippy, but here's what's going on:\n        // - a) We don't pass initial integration options as part of the event, only if they're true or false\n        // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n        // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n        var allIntegrations = tslib_1.__assign(tslib_1.__assign({}, integrationBooleans), (_b = event.options) === null || _b === void 0 ? void 0 : _b.integrations);\n        var _c = event.options\n            ? this.context(event.options)\n            : [], context = _c[0], overrides = _c[1];\n        var options = event.options, rest = tslib_1.__rest(event, [\"options\"]);\n        var evt = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ timestamp: new Date() }, rest), { context: context, integrations: allIntegrations }), overrides), { messageId: options.messageId || this.settings.createMessageId() });\n        this.settings.onFinishedEvent(evt);\n        (0, assertions_1.validateEvent)(evt);\n        return evt;\n    };\n    return CoreEventFactory;\n}());\nexports.CoreEventFactory = CoreEventFactory;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.invokeCallback = exports.sleep = exports.pTimeout = void 0;\nfunction pTimeout(promise, timeout) {\n    return new Promise(function (resolve, reject) {\n        var timeoutId = setTimeout(function () {\n            reject(Error('Promise timed out'));\n        }, timeout);\n        promise\n            .then(function (val) {\n            clearTimeout(timeoutId);\n            return resolve(val);\n        })\n            .catch(reject);\n    });\n}\nexports.pTimeout = pTimeout;\nfunction sleep(timeoutInMs) {\n    return new Promise(function (resolve) { return setTimeout(resolve, timeoutInMs); });\n}\nexports.sleep = sleep;\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nfunction invokeCallback(ctx, callback, delay) {\n    var cb = function () {\n        try {\n            return Promise.resolve(callback(ctx));\n        }\n        catch (err) {\n            return Promise.reject(err);\n        }\n    };\n    return (sleep(delay)\n        // pTimeout ensures that the callback can't cause the context to hang\n        .then(function () { return pTimeout(cb(), 1000); })\n        .catch(function (err) {\n        ctx === null || ctx === void 0 ? void 0 : ctx.log('warn', 'Callback Error', { error: err });\n        ctx === null || ctx === void 0 ? void 0 : ctx.stats.increment('callback_error');\n    })\n        .then(function () { return ctx; }));\n}\nexports.invokeCallback = invokeCallback;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = void 0;\n/**\n * Return a promise that can be externally resolved\n */\nvar createDeferred = function () {\n    var resolve;\n    var reject;\n    var settled = false;\n    var promise = new Promise(function (_resolve, _reject) {\n        resolve = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            settled = true;\n            _resolve.apply(void 0, args);\n        };\n        reject = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            settled = true;\n            _reject.apply(void 0, args);\n        };\n    });\n    return {\n        resolve: resolve,\n        reject: reject,\n        promise: promise,\n        isSettled: function () { return settled; },\n    };\n};\nexports.createDeferred = createDeferred;\n//# sourceMappingURL=create-deferred.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./create-deferred\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = void 0;\n/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n *  type Contract = {\n *    delivery_success: [DeliverySuccessResponse, Metrics],\n *    delivery_failure: [DeliveryError]\n * }\n *  new Emitter<Contract>()\n *  .on('delivery_success', (res, metrics) => ...)\n *  .on('delivery_failure', (err) => ...)\n * ```\n */\nvar Emitter = /** @class */ (function () {\n    function Emitter(options) {\n        var _a;\n        this.callbacks = {};\n        this.warned = false;\n        this.maxListeners = (_a = options === null || options === void 0 ? void 0 : options.maxListeners) !== null && _a !== void 0 ? _a : 10;\n    }\n    Emitter.prototype.warnIfPossibleMemoryLeak = function (event) {\n        if (this.warned) {\n            return;\n        }\n        if (this.maxListeners &&\n            this.callbacks[event].length > this.maxListeners) {\n            console.warn(\"Event Emitter: Possible memory leak detected; \".concat(String(event), \" has exceeded \").concat(this.maxListeners, \" listeners.\"));\n            this.warned = true;\n        }\n    };\n    Emitter.prototype.on = function (event, callback) {\n        if (!this.callbacks[event]) {\n            this.callbacks[event] = [callback];\n        }\n        else {\n            this.callbacks[event].push(callback);\n            this.warnIfPossibleMemoryLeak(event);\n        }\n        return this;\n    };\n    Emitter.prototype.once = function (event, callback) {\n        var _this = this;\n        var on = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            _this.off(event, on);\n            callback.apply(_this, args);\n        };\n        this.on(event, on);\n        return this;\n    };\n    Emitter.prototype.off = function (event, callback) {\n        var _a;\n        var fns = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n        var without = fns.filter(function (fn) { return fn !== callback; });\n        this.callbacks[event] = without;\n        return this;\n    };\n    Emitter.prototype.emit = function (event) {\n        var _this = this;\n        var _a;\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        var callbacks = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n        callbacks.forEach(function (callback) {\n            callback.apply(_this, args);\n        });\n        return this;\n    };\n    return Emitter;\n}());\nexports.Emitter = Emitter;\n//# sourceMappingURL=emitter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./emitter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./create-deferred\"), exports);\ntslib_1.__exportStar(require(\"./emitter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.backoff = void 0;\nfunction backoff(params) {\n    var random = Math.random() + 1;\n    var _a = params.minTimeout, minTimeout = _a === void 0 ? 500 : _a, _b = params.factor, factor = _b === void 0 ? 2 : _b, attempt = params.attempt, _c = params.maxTimeout, maxTimeout = _c === void 0 ? Infinity : _c;\n    return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout);\n}\nexports.backoff = backoff;\n//# sourceMappingURL=backoff.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PriorityQueue = exports.ON_REMOVE_FROM_FUTURE = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nvar backoff_1 = require(\"./backoff\");\n/**\n * @internal\n */\nexports.ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture';\nvar PriorityQueue = /** @class */ (function (_super) {\n    tslib_1.__extends(PriorityQueue, _super);\n    function PriorityQueue(maxAttempts, queue, seen) {\n        var _this = _super.call(this) || this;\n        _this.future = [];\n        _this.maxAttempts = maxAttempts;\n        _this.queue = queue;\n        _this.seen = seen !== null && seen !== void 0 ? seen : {};\n        return _this;\n    }\n    PriorityQueue.prototype.push = function () {\n        var _this = this;\n        var items = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            items[_i] = arguments[_i];\n        }\n        var accepted = items.map(function (operation) {\n            var attempts = _this.updateAttempts(operation);\n            if (attempts > _this.maxAttempts || _this.includes(operation)) {\n                return false;\n            }\n            _this.queue.push(operation);\n            return true;\n        });\n        this.queue = this.queue.sort(function (a, b) { return _this.getAttempts(a) - _this.getAttempts(b); });\n        return accepted;\n    };\n    PriorityQueue.prototype.pushWithBackoff = function (item, minTimeout) {\n        if (minTimeout === void 0) { minTimeout = 0; }\n        // One immediate retry unless we have a minimum timeout (e.g. for rate limiting)\n        if (minTimeout == 0 && this.getAttempts(item) === 0) {\n            return this.push(item)[0];\n        }\n        var timeout = (0, backoff_1.backoff)({ attempt: this.getAttempts(item) });\n        if (minTimeout > 0 && timeout < minTimeout) {\n            timeout = minTimeout;\n        }\n        return this.scheduleItem(item, timeout);\n    };\n    PriorityQueue.prototype.pushWithDelay = function (item, delay) {\n        return this.scheduleItem(item, delay);\n    };\n    PriorityQueue.prototype.scheduleItem = function (item, timeout) {\n        var _this = this;\n        var attempt = this.updateAttempts(item);\n        if (attempt > this.maxAttempts || this.includes(item)) {\n            return false;\n        }\n        setTimeout(function () {\n            _this.queue.push(item);\n            _this.future = _this.future.filter(function (f) { return f.id !== item.id; });\n            _this.emit(exports.ON_REMOVE_FROM_FUTURE);\n        }, timeout);\n        this.future.push(item);\n        return true;\n    };\n    PriorityQueue.prototype.getAttempts = function (item) {\n        var _a;\n        return (_a = this.seen[item.id]) !== null && _a !== void 0 ? _a : 0;\n    };\n    PriorityQueue.prototype.updateAttempts = function (item) {\n        this.seen[item.id] = this.getAttempts(item) + 1;\n        return this.getAttempts(item);\n    };\n    PriorityQueue.prototype.includes = function (item) {\n        return (this.queue.includes(item) ||\n            this.future.includes(item) ||\n            Boolean(this.queue.find(function (i) { return i.id === item.id; })) ||\n            Boolean(this.future.find(function (i) { return i.id === item.id; })));\n    };\n    PriorityQueue.prototype.pop = function () {\n        return this.queue.shift();\n    };\n    Object.defineProperty(PriorityQueue.prototype, \"length\", {\n        get: function () {\n            return this.queue.length;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PriorityQueue.prototype, \"todo\", {\n        get: function () {\n            return this.queue.length + this.future.length;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return PriorityQueue;\n}(analytics_generic_utils_1.Emitter));\nexports.PriorityQueue = PriorityQueue;\n//# sourceMappingURL=index.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nfunction v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n\nexports.v4 = v4;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoreLogger = void 0;\nvar tslib_1 = require(\"tslib\");\nvar CoreLogger = /** @class */ (function () {\n    function CoreLogger() {\n        this._logs = [];\n    }\n    CoreLogger.prototype.log = function (level, message, extras) {\n        var time = new Date();\n        this._logs.push({\n            level: level,\n            message: message,\n            time: time,\n            extras: extras,\n        });\n    };\n    Object.defineProperty(CoreLogger.prototype, \"logs\", {\n        get: function () {\n            return this._logs;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    CoreLogger.prototype.flush = function () {\n        if (this.logs.length > 1) {\n            var formatted = this._logs.reduce(function (logs, log) {\n                var _a;\n                var _b, _c;\n                var line = tslib_1.__assign(tslib_1.__assign({}, log), { json: JSON.stringify(log.extras, null, ' '), extras: log.extras });\n                delete line['time'];\n                var key = (_c = (_b = log.time) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : '';\n                if (logs[key]) {\n                    key = \"\".concat(key, \"-\").concat(Math.random());\n                }\n                return tslib_1.__assign(tslib_1.__assign({}, logs), (_a = {}, _a[key] = line, _a));\n            }, {});\n            // ie doesn't like console.table\n            if (console.table) {\n                console.table(formatted);\n            }\n            else {\n                console.log(formatted);\n            }\n        }\n        else {\n            this.logs.forEach(function (logEntry) {\n                var level = logEntry.level, message = logEntry.message, extras = logEntry.extras;\n                if (level === 'info' || level === 'debug') {\n                    console.log(message, extras !== null && extras !== void 0 ? extras : '');\n                }\n                else {\n                    console[level](message, extras !== null && extras !== void 0 ? extras : '');\n                }\n            });\n        }\n        this._logs = [];\n    };\n    return CoreLogger;\n}());\nexports.CoreLogger = CoreLogger;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullStats = exports.CoreStats = void 0;\nvar tslib_1 = require(\"tslib\");\nvar compactMetricType = function (type) {\n    var enums = {\n        gauge: 'g',\n        counter: 'c',\n    };\n    return enums[type];\n};\nvar CoreStats = /** @class */ (function () {\n    function CoreStats() {\n        this.metrics = [];\n    }\n    CoreStats.prototype.increment = function (metric, by, tags) {\n        if (by === void 0) { by = 1; }\n        this.metrics.push({\n            metric: metric,\n            value: by,\n            tags: tags !== null && tags !== void 0 ? tags : [],\n            type: 'counter',\n            timestamp: Date.now(),\n        });\n    };\n    CoreStats.prototype.gauge = function (metric, value, tags) {\n        this.metrics.push({\n            metric: metric,\n            value: value,\n            tags: tags !== null && tags !== void 0 ? tags : [],\n            type: 'gauge',\n            timestamp: Date.now(),\n        });\n    };\n    CoreStats.prototype.flush = function () {\n        var formatted = this.metrics.map(function (m) { return (tslib_1.__assign(tslib_1.__assign({}, m), { tags: m.tags.join(',') })); });\n        // ie doesn't like console.table\n        if (console.table) {\n            console.table(formatted);\n        }\n        else {\n            console.log(formatted);\n        }\n        this.metrics = [];\n    };\n    /**\n     * compact keys for smaller payload\n     */\n    CoreStats.prototype.serialize = function () {\n        return this.metrics.map(function (m) {\n            return {\n                m: m.metric,\n                v: m.value,\n                t: m.tags,\n                k: compactMetricType(m.type),\n                e: m.timestamp,\n            };\n        });\n    };\n    return CoreStats;\n}());\nexports.CoreStats = CoreStats;\nvar NullStats = /** @class */ (function (_super) {\n    tslib_1.__extends(NullStats, _super);\n    function NullStats() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NullStats.prototype.gauge = function () {\n        var _args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            _args[_i] = arguments[_i];\n        }\n    };\n    NullStats.prototype.increment = function () {\n        var _args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            _args[_i] = arguments[_i];\n        }\n    };\n    NullStats.prototype.flush = function () {\n        var _args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            _args[_i] = arguments[_i];\n        }\n    };\n    NullStats.prototype.serialize = function () {\n        var _args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            _args[_i] = arguments[_i];\n        }\n        return [];\n    };\n    return NullStats;\n}(CoreStats));\nexports.NullStats = NullStats;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoreContext = exports.ContextCancelation = void 0;\nvar uuid_1 = require(\"@lukeed/uuid\");\nvar dset_1 = require(\"dset\");\nvar logger_1 = require(\"../logger\");\nvar stats_1 = require(\"../stats\");\nvar ContextCancelation = /** @class */ (function () {\n    function ContextCancelation(options) {\n        var _a, _b, _c;\n        this.retry = (_a = options.retry) !== null && _a !== void 0 ? _a : true;\n        this.type = (_b = options.type) !== null && _b !== void 0 ? _b : 'plugin Error';\n        this.reason = (_c = options.reason) !== null && _c !== void 0 ? _c : '';\n    }\n    return ContextCancelation;\n}());\nexports.ContextCancelation = ContextCancelation;\nvar CoreContext = /** @class */ (function () {\n    function CoreContext(event, id, stats, logger) {\n        if (id === void 0) { id = (0, uuid_1.v4)(); }\n        if (stats === void 0) { stats = new stats_1.NullStats(); }\n        if (logger === void 0) { logger = new logger_1.CoreLogger(); }\n        this.attempts = 0;\n        this.event = event;\n        this._id = id;\n        this.logger = logger;\n        this.stats = stats;\n    }\n    CoreContext.system = function () {\n        // This should be overridden by the subclass to return an instance of the subclass.\n    };\n    CoreContext.prototype.isSame = function (other) {\n        return other.id === this.id;\n    };\n    CoreContext.prototype.cancel = function (error) {\n        if (error) {\n            throw error;\n        }\n        throw new ContextCancelation({ reason: 'Context Cancel' });\n    };\n    CoreContext.prototype.log = function (level, message, extras) {\n        this.logger.log(level, message, extras);\n    };\n    Object.defineProperty(CoreContext.prototype, \"id\", {\n        get: function () {\n            return this._id;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    CoreContext.prototype.updateEvent = function (path, val) {\n        var _a;\n        // Don't allow integrations that are set to false to be overwritten with integration settings.\n        if (path.split('.')[0] === 'integrations') {\n            var integrationName = path.split('.')[1];\n            if (((_a = this.event.integrations) === null || _a === void 0 ? void 0 : _a[integrationName]) === false) {\n                return this.event;\n            }\n        }\n        (0, dset_1.dset)(this.event, path, val);\n        return this.event;\n    };\n    CoreContext.prototype.failedDelivery = function () {\n        return this._failedDelivery;\n    };\n    CoreContext.prototype.setFailedDelivery = function (options) {\n        this._failedDelivery = options;\n    };\n    CoreContext.prototype.logs = function () {\n        return this.logger.logs;\n    };\n    CoreContext.prototype.flush = function () {\n        this.logger.flush();\n        this.stats.flush();\n    };\n    CoreContext.prototype.toJSON = function () {\n        return {\n            id: this._id,\n            event: this.event,\n            logs: this.logger.logs,\n            metrics: this.stats.metrics,\n        };\n    };\n    return CoreContext;\n}());\nexports.CoreContext = CoreContext;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupBy = void 0;\nvar tslib_1 = require(\"tslib\");\nfunction groupBy(collection, grouper) {\n    var results = {};\n    collection.forEach(function (item) {\n        var _a;\n        var key = undefined;\n        if (typeof grouper === 'string') {\n            var suggestedKey = item[grouper];\n            key =\n                typeof suggestedKey !== 'string'\n                    ? JSON.stringify(suggestedKey)\n                    : suggestedKey;\n        }\n        else if (grouper instanceof Function) {\n            key = grouper(item);\n        }\n        if (key === undefined) {\n            return;\n        }\n        results[key] = tslib_1.__spreadArray(tslib_1.__spreadArray([], ((_a = results[key]) !== null && _a !== void 0 ? _a : []), true), [item], false);\n    });\n    return results;\n}\nexports.groupBy = groupBy;\n//# sourceMappingURL=group-by.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isThenable = void 0;\n/**\n *  Check if  thenable\n *  (instanceof Promise doesn't respect realms)\n */\nvar isThenable = function (value) {\n    return typeof value === 'object' &&\n        value !== null &&\n        'then' in value &&\n        typeof value.then === 'function';\n};\nexports.isThenable = isThenable;\n//# sourceMappingURL=is-thenable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaskGroup = void 0;\nvar is_thenable_1 = require(\"../utils/is-thenable\");\nvar createTaskGroup = function () {\n    var taskCompletionPromise;\n    var resolvePromise;\n    var count = 0;\n    return {\n        done: function () { return taskCompletionPromise; },\n        run: function (op) {\n            var returnValue = op();\n            if ((0, is_thenable_1.isThenable)(returnValue)) {\n                if (++count === 1) {\n                    taskCompletionPromise = new Promise(function (res) { return (resolvePromise = res); });\n                }\n                returnValue.finally(function () { return --count === 0 && resolvePromise(); });\n            }\n            return returnValue;\n        },\n    };\n};\nexports.createTaskGroup = createTaskGroup;\n//# sourceMappingURL=task-group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensure = exports.attempt = void 0;\nvar tslib_1 = require(\"tslib\");\nvar context_1 = require(\"../context\");\nfunction tryAsync(fn) {\n    return tslib_1.__awaiter(this, void 0, void 0, function () {\n        var err_1;\n        return tslib_1.__generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 2, , 3]);\n                    return [4 /*yield*/, fn()];\n                case 1: return [2 /*return*/, _a.sent()];\n                case 2:\n                    err_1 = _a.sent();\n                    return [2 /*return*/, Promise.reject(err_1)];\n                case 3: return [2 /*return*/];\n            }\n        });\n    });\n}\nfunction attempt(ctx, plugin) {\n    ctx.log('debug', 'plugin', { plugin: plugin.name });\n    var start = new Date().getTime();\n    var hook = plugin[ctx.event.type];\n    if (hook === undefined) {\n        return Promise.resolve(ctx);\n    }\n    var newCtx = tryAsync(function () { return hook.apply(plugin, [ctx]); })\n        .then(function (ctx) {\n        var done = new Date().getTime() - start;\n        ctx.stats.gauge('plugin_time', done, [\"plugin:\".concat(plugin.name)]);\n        return ctx;\n    })\n        .catch(function (err) {\n        if (err instanceof context_1.ContextCancelation &&\n            err.type === 'middleware_cancellation') {\n            throw err;\n        }\n        if (err instanceof context_1.ContextCancelation) {\n            ctx.log('warn', err.type, {\n                plugin: plugin.name,\n                error: err,\n            });\n            return err;\n        }\n        ctx.log('error', 'plugin Error', {\n            plugin: plugin.name,\n            error: err,\n        });\n        ctx.stats.increment('plugin_error', 1, [\"plugin:\".concat(plugin.name)]);\n        return err;\n    });\n    return newCtx;\n}\nexports.attempt = attempt;\nfunction ensure(ctx, plugin) {\n    return attempt(ctx, plugin).then(function (newContext) {\n        if (newContext instanceof context_1.CoreContext) {\n            return newContext;\n        }\n        ctx.log('debug', 'Context canceled');\n        ctx.stats.increment('context_canceled');\n        ctx.cancel(newContext);\n    });\n}\nexports.ensure = ensure;\n//# sourceMappingURL=delivery.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoreEventQueue = void 0;\nvar tslib_1 = require(\"tslib\");\nvar group_by_1 = require(\"../utils/group-by\");\nvar priority_queue_1 = require(\"../priority-queue\");\nvar context_1 = require(\"../context\");\nvar analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nvar task_group_1 = require(\"../task/task-group\");\nvar delivery_1 = require(\"./delivery\");\nvar CoreEventQueue = /** @class */ (function (_super) {\n    tslib_1.__extends(CoreEventQueue, _super);\n    function CoreEventQueue(priorityQueue) {\n        var _this = _super.call(this) || this;\n        /**\n         * All event deliveries get suspended until all the tasks in this task group are complete.\n         * For example: a middleware that augments the event object should be loaded safely as a\n         * critical task, this way, event queue will wait for it to be ready before sending events.\n         *\n         * This applies to all the events already in the queue, and the upcoming ones\n         */\n        _this.criticalTasks = (0, task_group_1.createTaskGroup)();\n        _this.plugins = [];\n        _this.failedInitializations = [];\n        _this.flushing = false;\n        _this.queue = priorityQueue;\n        _this.queue.on(priority_queue_1.ON_REMOVE_FROM_FUTURE, function () {\n            _this.scheduleFlush(0);\n        });\n        return _this;\n    }\n    CoreEventQueue.prototype.register = function (ctx, plugin, instance) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var handleLoadError, err_1;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.plugins.push(plugin);\n                        handleLoadError = function (err) {\n                            _this.failedInitializations.push(plugin.name);\n                            _this.emit('initialization_failure', plugin);\n                            console.warn(plugin.name, err);\n                            ctx.log('warn', 'Failed to load destination', {\n                                plugin: plugin.name,\n                                error: err,\n                            });\n                            // Filter out the failed plugin by excluding it from the list\n                            _this.plugins = _this.plugins.filter(function (p) { return p !== plugin; });\n                        };\n                        if (!(plugin.type === 'destination' && plugin.name !== 'Segment.io')) return [3 /*break*/, 1];\n                        plugin.load(ctx, instance).catch(handleLoadError);\n                        return [3 /*break*/, 4];\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, plugin.load(ctx, instance)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        err_1 = _a.sent();\n                        handleLoadError(err_1);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CoreEventQueue.prototype.deregister = function (ctx, plugin, instance) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var e_1;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 3, , 4]);\n                        if (!plugin.unload) return [3 /*break*/, 2];\n                        return [4 /*yield*/, Promise.resolve(plugin.unload(ctx, instance))];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2:\n                        this.plugins = this.plugins.filter(function (p) { return p.name !== plugin.name; });\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        ctx.log('warn', 'Failed to unload destination', {\n                            plugin: plugin.name,\n                            error: e_1,\n                        });\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CoreEventQueue.prototype.dispatch = function (ctx) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var willDeliver;\n            return tslib_1.__generator(this, function (_a) {\n                ctx.log('debug', 'Dispatching');\n                ctx.stats.increment('message_dispatched');\n                this.queue.push(ctx);\n                willDeliver = this.subscribeToDelivery(ctx);\n                this.scheduleFlush(0);\n                return [2 /*return*/, willDeliver];\n            });\n        });\n    };\n    CoreEventQueue.prototype.subscribeToDelivery = function (ctx) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                return [2 /*return*/, new Promise(function (resolve) {\n                        var onDeliver = function (flushed, delivered) {\n                            if (flushed.isSame(ctx)) {\n                                _this.off('flush', onDeliver);\n                                if (delivered) {\n                                    resolve(flushed);\n                                }\n                                else {\n                                    resolve(flushed);\n                                }\n                            }\n                        };\n                        _this.on('flush', onDeliver);\n                    })];\n            });\n        });\n    };\n    CoreEventQueue.prototype.dispatchSingle = function (ctx) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                ctx.log('debug', 'Dispatching');\n                ctx.stats.increment('message_dispatched');\n                this.queue.updateAttempts(ctx);\n                ctx.attempts = 1;\n                return [2 /*return*/, this.deliver(ctx).catch(function (err) {\n                        var accepted = _this.enqueuRetry(err, ctx);\n                        if (!accepted) {\n                            ctx.setFailedDelivery({ reason: err });\n                            return ctx;\n                        }\n                        return _this.subscribeToDelivery(ctx);\n                    })];\n            });\n        });\n    };\n    CoreEventQueue.prototype.isEmpty = function () {\n        return this.queue.length === 0;\n    };\n    CoreEventQueue.prototype.scheduleFlush = function (timeout) {\n        var _this = this;\n        if (timeout === void 0) { timeout = 500; }\n        if (this.flushing) {\n            return;\n        }\n        this.flushing = true;\n        setTimeout(function () {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            _this.flush().then(function () {\n                setTimeout(function () {\n                    _this.flushing = false;\n                    if (_this.queue.length) {\n                        _this.scheduleFlush(0);\n                    }\n                }, 0);\n            });\n        }, timeout);\n    };\n    CoreEventQueue.prototype.deliver = function (ctx) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var start, done, failure, error, err_2, error;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4 /*yield*/, this.criticalTasks.done()];\n                    case 1:\n                        _b.sent();\n                        start = Date.now();\n                        _b.label = 2;\n                    case 2:\n                        _b.trys.push([2, 4, , 5]);\n                        return [4 /*yield*/, this.flushOne(ctx)];\n                    case 3:\n                        ctx = _b.sent();\n                        done = Date.now() - start;\n                        failure = ctx.failedDelivery();\n                        if (failure) {\n                            error = failure.reason instanceof Error\n                                ? failure.reason\n                                : new Error(String((_a = failure.reason) !== null && _a !== void 0 ? _a : 'Unknown delivery failure'));\n                            ctx.log('error', 'Failed to deliver', error);\n                            this.emit('delivery_failure', ctx, error);\n                            ctx.stats.increment('delivery_failed');\n                            return [2 /*return*/, ctx];\n                        }\n                        this.emit('delivery_success', ctx);\n                        ctx.stats.gauge('delivered', done);\n                        ctx.log('debug', 'Delivered', ctx.event);\n                        return [2 /*return*/, ctx];\n                    case 4:\n                        err_2 = _b.sent();\n                        error = err_2;\n                        ctx.log('error', 'Failed to deliver', error);\n                        this.emit('delivery_failure', ctx, error);\n                        ctx.stats.increment('delivery_failed');\n                        throw err_2;\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CoreEventQueue.prototype.enqueuRetry = function (err, ctx) {\n        var retriable = !(err instanceof context_1.ContextCancelation) || err.retry;\n        if (!retriable) {\n            return false;\n        }\n        return this.queue.pushWithBackoff(ctx);\n    };\n    CoreEventQueue.prototype.flush = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var ctx, delivered, err_3, accepted;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (this.queue.length === 0) {\n                            return [2 /*return*/, []];\n                        }\n                        ctx = this.queue.pop();\n                        if (!ctx) {\n                            return [2 /*return*/, []];\n                        }\n                        ctx.attempts = this.queue.getAttempts(ctx);\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, this.deliver(ctx)\n                            // deliver() now handles failedDelivery state internally without throwing,\n                            // so we check ctx.failedDelivery() to determine the correct flush status\n                        ];\n                    case 2:\n                        ctx = _a.sent();\n                        delivered = !ctx.failedDelivery();\n                        this.emit('flush', ctx, delivered);\n                        return [3 /*break*/, 4];\n                    case 3:\n                        err_3 = _a.sent();\n                        accepted = this.enqueuRetry(err_3, ctx);\n                        if (!accepted) {\n                            ctx.setFailedDelivery({ reason: err_3 });\n                            this.emit('flush', ctx, false);\n                        }\n                        return [2 /*return*/, []];\n                    case 4: return [2 /*return*/, [ctx]];\n                }\n            });\n        });\n    };\n    CoreEventQueue.prototype.isReady = function () {\n        // return this.plugins.every((p) => p.isLoaded())\n        // should we wait for every plugin to load?\n        return true;\n    };\n    CoreEventQueue.prototype.availableExtensions = function (denyList) {\n        var available = this.plugins.filter(function (p) {\n            var _a, _b, _c;\n            // Only filter out destination plugins or the Segment.io plugin\n            if (p.type !== 'destination' && p.name !== 'Segment.io') {\n                return true;\n            }\n            var alternativeNameMatch = undefined;\n            (_a = p.alternativeNames) === null || _a === void 0 ? void 0 : _a.forEach(function (name) {\n                if (denyList[name] !== undefined) {\n                    alternativeNameMatch = denyList[name];\n                }\n            });\n            // Explicit integration option takes precedence, `All: false` does not apply to Segment.io\n            return ((_c = (_b = denyList[p.name]) !== null && _b !== void 0 ? _b : alternativeNameMatch) !== null && _c !== void 0 ? _c : (p.name === 'Segment.io' ? true : denyList.All) !== false);\n        });\n        var _a = (0, group_by_1.groupBy)(available, 'type'), _b = _a.before, before = _b === void 0 ? [] : _b, _c = _a.enrichment, enrichment = _c === void 0 ? [] : _c, _d = _a.destination, destination = _d === void 0 ? [] : _d, _e = _a.after, after = _e === void 0 ? [] : _e;\n        return {\n            before: before,\n            enrichment: enrichment,\n            destinations: destination,\n            after: after,\n        };\n    };\n    CoreEventQueue.prototype.flushOne = function (ctx) {\n        var _a, _b;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _c, before, enrichment, _i, before_1, beforeWare, temp, _d, enrichment_1, enrichmentWare, temp, _e, destinations, after, afterCalls;\n            return tslib_1.__generator(this, function (_f) {\n                switch (_f.label) {\n                    case 0:\n                        if (!this.isReady()) {\n                            throw new Error('Not ready');\n                        }\n                        if (ctx.attempts > 1) {\n                            this.emit('delivery_retry', ctx);\n                        }\n                        _c = this.availableExtensions((_a = ctx.event.integrations) !== null && _a !== void 0 ? _a : {}), before = _c.before, enrichment = _c.enrichment;\n                        _i = 0, before_1 = before;\n                        _f.label = 1;\n                    case 1:\n                        if (!(_i < before_1.length)) return [3 /*break*/, 4];\n                        beforeWare = before_1[_i];\n                        return [4 /*yield*/, (0, delivery_1.ensure)(ctx, beforeWare)];\n                    case 2:\n                        temp = _f.sent();\n                        if (temp instanceof context_1.CoreContext) {\n                            ctx = temp;\n                        }\n                        this.emit('message_enriched', ctx, beforeWare);\n                        _f.label = 3;\n                    case 3:\n                        _i++;\n                        return [3 /*break*/, 1];\n                    case 4:\n                        _d = 0, enrichment_1 = enrichment;\n                        _f.label = 5;\n                    case 5:\n                        if (!(_d < enrichment_1.length)) return [3 /*break*/, 8];\n                        enrichmentWare = enrichment_1[_d];\n                        return [4 /*yield*/, (0, delivery_1.attempt)(ctx, enrichmentWare)];\n                    case 6:\n                        temp = _f.sent();\n                        if (temp instanceof context_1.CoreContext) {\n                            ctx = temp;\n                        }\n                        this.emit('message_enriched', ctx, enrichmentWare);\n                        _f.label = 7;\n                    case 7:\n                        _d++;\n                        return [3 /*break*/, 5];\n                    case 8:\n                        _e = this.availableExtensions((_b = ctx.event.integrations) !== null && _b !== void 0 ? _b : {}), destinations = _e.destinations, after = _e.after;\n                        return [4 /*yield*/, new Promise(function (resolve, reject) {\n                                setTimeout(function () {\n                                    var attempts = destinations.map(function (destination) {\n                                        return (0, delivery_1.attempt)(ctx, destination);\n                                    });\n                                    Promise.all(attempts).then(resolve).catch(reject);\n                                }, 0);\n                            })];\n                    case 9:\n                        _f.sent();\n                        ctx.stats.increment('message_delivered');\n                        this.emit('message_delivered', ctx);\n                        afterCalls = after.map(function (after) { return (0, delivery_1.attempt)(ctx, after); });\n                        return [4 /*yield*/, Promise.all(afterCalls)];\n                    case 10:\n                        _f.sent();\n                        return [2 /*return*/, ctx];\n                }\n            });\n        });\n    };\n    return CoreEventQueue;\n}(analytics_generic_utils_1.Emitter));\nexports.CoreEventQueue = CoreEventQueue;\n//# sourceMappingURL=event-queue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dispatch = exports.getDelay = void 0;\nvar tslib_1 = require(\"tslib\");\nvar callback_1 = require(\"../callback\");\n/* The amount of time in ms to wait before invoking the callback. */\nvar getDelay = function (startTimeInEpochMS, timeoutInMS) {\n    var elapsedTime = Date.now() - startTimeInEpochMS;\n    // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n    return Math.max((timeoutInMS !== null && timeoutInMS !== void 0 ? timeoutInMS : 300) - elapsedTime, 0);\n};\nexports.getDelay = getDelay;\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Segment event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nfunction dispatch(ctx, queue, emitter, options) {\n    return tslib_1.__awaiter(this, void 0, void 0, function () {\n        var startTime, dispatched;\n        return tslib_1.__generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    emitter.emit('dispatch_start', ctx);\n                    startTime = Date.now();\n                    if (!queue.isEmpty()) return [3 /*break*/, 2];\n                    return [4 /*yield*/, queue.dispatchSingle(ctx)];\n                case 1:\n                    dispatched = _a.sent();\n                    return [3 /*break*/, 4];\n                case 2: return [4 /*yield*/, queue.dispatch(ctx)];\n                case 3:\n                    dispatched = _a.sent();\n                    _a.label = 4;\n                case 4:\n                    if (!(options === null || options === void 0 ? void 0 : options.callback)) return [3 /*break*/, 6];\n                    return [4 /*yield*/, (0, callback_1.invokeCallback)(dispatched, options.callback, (0, exports.getDelay)(startTime, options.timeout))];\n                case 5:\n                    dispatched = _a.sent();\n                    _a.label = 6;\n                case 6:\n                    if (options === null || options === void 0 ? void 0 : options.debug) {\n                        dispatched.flush();\n                    }\n                    return [2 /*return*/, dispatched];\n            }\n        });\n    });\n}\nexports.dispatch = dispatch;\n//# sourceMappingURL=dispatch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindAll = void 0;\nfunction bindAll(obj) {\n    var proto = obj.constructor.prototype;\n    for (var _i = 0, _a = Object.getOwnPropertyNames(proto); _i < _a.length; _i++) {\n        var key = _a[_i];\n        if (key !== 'constructor') {\n            var desc = Object.getOwnPropertyDescriptor(obj.constructor.prototype, key);\n            if (!!desc && typeof desc.value === 'function') {\n                obj[key] = obj[key].bind(obj);\n            }\n        }\n    }\n    return obj;\n}\nexports.bindAll = bindAll;\n//# sourceMappingURL=bind-all.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoreLogger = exports.backoff = void 0;\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./emitter/interface\"), exports);\ntslib_1.__exportStar(require(\"./plugins\"), exports);\ntslib_1.__exportStar(require(\"./events/interfaces\"), exports);\ntslib_1.__exportStar(require(\"./events\"), exports);\ntslib_1.__exportStar(require(\"./callback\"), exports);\ntslib_1.__exportStar(require(\"./priority-queue\"), exports);\nvar backoff_1 = require(\"./priority-queue/backoff\");\nObject.defineProperty(exports, \"backoff\", { enumerable: true, get: function () { return backoff_1.backoff; } });\ntslib_1.__exportStar(require(\"./context\"), exports);\ntslib_1.__exportStar(require(\"./queue/event-queue\"), exports);\ntslib_1.__exportStar(require(\"./analytics\"), exports);\ntslib_1.__exportStar(require(\"./analytics/dispatch\"), exports);\ntslib_1.__exportStar(require(\"./validation/helpers\"), exports);\ntslib_1.__exportStar(require(\"./validation/errors\"), exports);\ntslib_1.__exportStar(require(\"./validation/assertions\"), exports);\ntslib_1.__exportStar(require(\"./utils/bind-all\"), exports);\ntslib_1.__exportStar(require(\"./stats\"), exports);\nvar logger_1 = require(\"./logger\");\nObject.defineProperty(exports, \"CoreLogger\", { enumerable: true, get: function () { return logger_1.CoreLogger; } });\ntslib_1.__exportStar(require(\"./queue/delivery\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSettings = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst validateSettings = (settings) => {\n    if (!settings.writeKey) {\n        throw new analytics_core_1.ValidationError('writeKey', 'writeKey is missing.');\n    }\n};\nexports.validateSettings = validateSettings;\n//# sourceMappingURL=settings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\n// This file is generated.\nexports.version = '3.1.0';\n//# sourceMappingURL=version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryCreateFormattedUrl = void 0;\nconst stripTrailingSlash = (str) => str.replace(/\\/$/, '');\n/**\n *\n * @param host e.g. \"http://foo.com\"\n * @param path e.g. \"/bar\"\n * @returns \"e.g.\" \"http://foo.com/bar\"\n */\nconst tryCreateFormattedUrl = (host, path) => {\n    return stripTrailingSlash(new URL(path || '', host).href);\n};\nexports.tryCreateFormattedUrl = tryCreateFormattedUrl;\n//# sourceMappingURL=create-url.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uuid = void 0;\nvar uuid_1 = require(\"@lukeed/uuid\");\nObject.defineProperty(exports, \"uuid\", { enumerable: true, get: function () { return uuid_1.v4; } });\n//# sourceMappingURL=uuid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextBatch = void 0;\nconst uuid_1 = require(\"../../lib/uuid\");\nconst MAX_EVENT_SIZE_IN_KB = 32;\nconst MAX_BATCH_SIZE_IN_KB = 480; //  (500 KB is the limit, leaving some padding)\nclass ContextBatch {\n    id = (0, uuid_1.uuid)();\n    items = [];\n    sizeInBytes = 0;\n    maxEventCount;\n    constructor(maxEventCount) {\n        this.maxEventCount = Math.max(1, maxEventCount);\n    }\n    tryAdd(item) {\n        if (this.length === this.maxEventCount)\n            return {\n                success: false,\n                message: `Event limit of ${this.maxEventCount} has been exceeded.`,\n            };\n        const eventSize = this.calculateSize(item.context);\n        if (eventSize > MAX_EVENT_SIZE_IN_KB * 1024) {\n            return {\n                success: false,\n                message: `Event exceeds maximum event size of ${MAX_EVENT_SIZE_IN_KB} KB`,\n            };\n        }\n        if (this.sizeInBytes + eventSize > MAX_BATCH_SIZE_IN_KB * 1024) {\n            return {\n                success: false,\n                message: `Event has caused batch size to exceed ${MAX_BATCH_SIZE_IN_KB} KB`,\n            };\n        }\n        this.items.push(item);\n        this.sizeInBytes += eventSize;\n        return { success: true };\n    }\n    get length() {\n        return this.items.length;\n    }\n    calculateSize(ctx) {\n        return encodeURI(JSON.stringify(ctx.event)).split(/%..|i/).length;\n    }\n    getEvents() {\n        const events = this.items.map(({ context }) => context.event);\n        return events;\n    }\n    getContexts() {\n        return this.items.map((item) => item.context);\n    }\n    resolveEvents() {\n        this.items.forEach(({ resolver, context }) => resolver(context));\n    }\n}\nexports.ContextBatch = ContextBatch;\n//# sourceMappingURL=context-batch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst digest = (algorithm, data) => (0, node_crypto_1.createHash)(algorithm).update(data).digest();\nexports.default = digest;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decoder = exports.encoder = void 0;\nexports.concat = concat;\nexports.p2s = p2s;\nexports.uint64be = uint64be;\nexports.uint32be = uint32be;\nexports.lengthAndInput = lengthAndInput;\nexports.concatKdf = concatKdf;\nconst digest_js_1 = require(\"../runtime/digest.js\");\nexports.encoder = new TextEncoder();\nexports.decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nfunction concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    for (const buffer of buffers) {\n        buf.set(buffer, i);\n        i += buffer.length;\n    }\n    return buf;\n}\nfunction p2s(alg, p2sInput) {\n    return concat(exports.encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nfunction uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nfunction uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nfunction lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nasync function concatKdf(secret, bits, value) {\n    const iterations = Math.ceil((bits >> 3) / 32);\n    const res = new Uint8Array(iterations * 32);\n    for (let iter = 0; iter < iterations; iter++) {\n        const buf = new Uint8Array(4 + secret.length + value.length);\n        buf.set(uint32be(iter + 1));\n        buf.set(secret, 4);\n        buf.set(value, 4 + secret.length);\n        res.set(await (0, digest_js_1.default)('sha256', buf), iter * 32);\n    }\n    return res.slice(0, bits >> 3);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = exports.encodeBase64 = exports.decodeBase64 = void 0;\nconst node_buffer_1 = require(\"node:buffer\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nfunction normalize(input) {\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = buffer_utils_js_1.decoder.decode(encoded);\n    }\n    return encoded;\n}\nconst encode = (input) => node_buffer_1.Buffer.from(input).toString('base64url');\nexports.encode = encode;\nconst decodeBase64 = (input) => new Uint8Array(node_buffer_1.Buffer.from(input, 'base64'));\nexports.decodeBase64 = decodeBase64;\nconst encodeBase64 = (input) => node_buffer_1.Buffer.from(input).toString('base64');\nexports.encodeBase64 = encodeBase64;\nconst decode = (input) => new Uint8Array(node_buffer_1.Buffer.from(normalize(input), 'base64url'));\nexports.decode = decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JWSSignatureVerificationFailed = exports.JWKSTimeout = exports.JWKSMultipleMatchingKeys = exports.JWKSNoMatchingKey = exports.JWKSInvalid = exports.JWKInvalid = exports.JWTInvalid = exports.JWSInvalid = exports.JWEInvalid = exports.JWEDecryptionFailed = exports.JOSENotSupported = exports.JOSEAlgNotAllowed = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JOSEError = void 0;\nclass JOSEError extends Error {\n    static code = 'ERR_JOSE_GENERIC';\n    code = 'ERR_JOSE_GENERIC';\n    constructor(message, options) {\n        super(message, options);\n        this.name = this.constructor.name;\n        Error.captureStackTrace?.(this, this.constructor);\n    }\n}\nexports.JOSEError = JOSEError;\nclass JWTClaimValidationFailed extends JOSEError {\n    static code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexports.JWTClaimValidationFailed = JWTClaimValidationFailed;\nclass JWTExpired extends JOSEError {\n    static code = 'ERR_JWT_EXPIRED';\n    code = 'ERR_JWT_EXPIRED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexports.JWTExpired = JWTExpired;\nclass JOSEAlgNotAllowed extends JOSEError {\n    static code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n}\nexports.JOSEAlgNotAllowed = JOSEAlgNotAllowed;\nclass JOSENotSupported extends JOSEError {\n    static code = 'ERR_JOSE_NOT_SUPPORTED';\n    code = 'ERR_JOSE_NOT_SUPPORTED';\n}\nexports.JOSENotSupported = JOSENotSupported;\nclass JWEDecryptionFailed extends JOSEError {\n    static code = 'ERR_JWE_DECRYPTION_FAILED';\n    code = 'ERR_JWE_DECRYPTION_FAILED';\n    constructor(message = 'decryption operation failed', options) {\n        super(message, options);\n    }\n}\nexports.JWEDecryptionFailed = JWEDecryptionFailed;\nclass JWEInvalid extends JOSEError {\n    static code = 'ERR_JWE_INVALID';\n    code = 'ERR_JWE_INVALID';\n}\nexports.JWEInvalid = JWEInvalid;\nclass JWSInvalid extends JOSEError {\n    static code = 'ERR_JWS_INVALID';\n    code = 'ERR_JWS_INVALID';\n}\nexports.JWSInvalid = JWSInvalid;\nclass JWTInvalid extends JOSEError {\n    static code = 'ERR_JWT_INVALID';\n    code = 'ERR_JWT_INVALID';\n}\nexports.JWTInvalid = JWTInvalid;\nclass JWKInvalid extends JOSEError {\n    static code = 'ERR_JWK_INVALID';\n    code = 'ERR_JWK_INVALID';\n}\nexports.JWKInvalid = JWKInvalid;\nclass JWKSInvalid extends JOSEError {\n    static code = 'ERR_JWKS_INVALID';\n    code = 'ERR_JWKS_INVALID';\n}\nexports.JWKSInvalid = JWKSInvalid;\nclass JWKSNoMatchingKey extends JOSEError {\n    static code = 'ERR_JWKS_NO_MATCHING_KEY';\n    code = 'ERR_JWKS_NO_MATCHING_KEY';\n    constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexports.JWKSNoMatchingKey = JWKSNoMatchingKey;\nclass JWKSMultipleMatchingKeys extends JOSEError {\n    [Symbol.asyncIterator];\n    static code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexports.JWKSMultipleMatchingKeys = JWKSMultipleMatchingKeys;\nclass JWKSTimeout extends JOSEError {\n    static code = 'ERR_JWKS_TIMEOUT';\n    code = 'ERR_JWKS_TIMEOUT';\n    constructor(message = 'request timed out', options) {\n        super(message, options);\n    }\n}\nexports.JWKSTimeout = JWKSTimeout;\nclass JWSSignatureVerificationFailed extends JOSEError {\n    static code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    constructor(message = 'signature verification failed', options) {\n        super(message, options);\n    }\n}\nexports.JWSSignatureVerificationFailed = JWSSignatureVerificationFailed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar node_crypto_1 = require(\"node:crypto\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return node_crypto_1.randomFillSync; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bitLength = bitLength;\nconst errors_js_1 = require(\"../util/errors.js\");\nconst random_js_1 = require(\"../runtime/random.js\");\nfunction bitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A128GCMKW':\n        case 'A192GCM':\n        case 'A192GCMKW':\n        case 'A256GCM':\n        case 'A256GCMKW':\n            return 96;\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return 128;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexports.default = (alg) => (0, random_js_1.default)(new Uint8Array(bitLength(alg) >> 3));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst iv_js_1 = require(\"./iv.js\");\nconst checkIvLength = (enc, iv) => {\n    if (iv.length << 3 !== (0, iv_js_1.bitLength)(enc)) {\n        throw new errors_js_1.JWEInvalid('Invalid Initialization Vector length');\n    }\n};\nexports.default = checkIvLength;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util = require(\"node:util\");\nexports.default = (obj) => util.types.isKeyObject(obj);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst checkCekLength = (enc, cek) => {\n    let expected;\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            expected = parseInt(enc.slice(-3), 10);\n            break;\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            expected = parseInt(enc.slice(1, 4), 10);\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Content Encryption Algorithm ${enc} is not supported either by JOSE or your javascript runtime`);\n    }\n    if (cek instanceof Uint8Array) {\n        const actual = cek.byteLength << 3;\n        if (actual !== expected) {\n            throw new errors_js_1.JWEInvalid(`Invalid Content Encryption Key length. Expected ${expected} bits, got ${actual} bits`);\n        }\n        return;\n    }\n    if ((0, is_key_object_js_1.default)(cek) && cek.type === 'secret') {\n        const actual = cek.symmetricKeySize << 3;\n        if (actual !== expected) {\n            throw new errors_js_1.JWEInvalid(`Invalid Content Encryption Key length. Expected ${expected} bits, got ${actual} bits`);\n        }\n        return;\n    }\n    throw new TypeError('Invalid Content Encryption Key type');\n};\nexports.default = checkCekLength;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst timingSafeEqual = node_crypto_1.timingSafeEqual;\nexports.default = timingSafeEqual;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = cbcTag;\nconst node_crypto_1 = require(\"node:crypto\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nfunction cbcTag(aad, iv, ciphertext, macSize, macKey, keySize) {\n    const macData = (0, buffer_utils_js_1.concat)(aad, iv, ciphertext, (0, buffer_utils_js_1.uint64be)(aad.length << 3));\n    const hmac = (0, node_crypto_1.createHmac)(`sha${macSize}`, macKey);\n    hmac.update(macData);\n    return hmac.digest().slice(0, keySize >> 3);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCryptoKey = void 0;\nconst crypto = require(\"node:crypto\");\nconst util = require(\"node:util\");\nconst webcrypto = crypto.webcrypto;\nexports.default = webcrypto;\nconst isCryptoKey = (key) => util.types.isCryptoKey(key);\nexports.isCryptoKey = isCryptoKey;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkSigCryptoKey = checkSigCryptoKey;\nexports.checkEncCryptoKey = checkEncCryptoKey;\nfunction unusable(name, prop = 'algorithm.name') {\n    return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n    return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n    return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n    switch (alg) {\n        case 'ES256':\n            return 'P-256';\n        case 'ES384':\n            return 'P-384';\n        case 'ES512':\n            return 'P-521';\n        default:\n            throw new Error('unreachable');\n    }\n}\nfunction checkUsage(key, usages) {\n    if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n        let msg = 'CryptoKey does not support this operation, its usages must include ';\n        if (usages.length > 2) {\n            const last = usages.pop();\n            msg += `one of ${usages.join(', ')}, or ${last}.`;\n        }\n        else if (usages.length === 2) {\n            msg += `one of ${usages[0]} or ${usages[1]}.`;\n        }\n        else {\n            msg += `${usages[0]}.`;\n        }\n        throw new TypeError(msg);\n    }\n}\nfunction checkSigCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512': {\n            if (!isAlgorithm(key.algorithm, 'HMAC'))\n                throw unusable('HMAC');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'RS256':\n        case 'RS384':\n        case 'RS512': {\n            if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n                throw unusable('RSASSA-PKCS1-v1_5');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'PS256':\n        case 'PS384':\n        case 'PS512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n                throw unusable('RSA-PSS');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'EdDSA': {\n            if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n                throw unusable('Ed25519 or Ed448');\n            }\n            break;\n        }\n        case 'Ed25519': {\n            if (!isAlgorithm(key.algorithm, 'Ed25519'))\n                throw unusable('Ed25519');\n            break;\n        }\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            if (!isAlgorithm(key.algorithm, 'ECDSA'))\n                throw unusable('ECDSA');\n            const expected = getNamedCurve(alg);\n            const actual = key.algorithm.namedCurve;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.namedCurve');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\nfunction checkEncCryptoKey(key, alg, ...usages) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM': {\n            if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n                throw unusable('AES-GCM');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (!isAlgorithm(key.algorithm, 'AES-KW'))\n                throw unusable('AES-KW');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'ECDH': {\n            switch (key.algorithm.name) {\n                case 'ECDH':\n                case 'X25519':\n                case 'X448':\n                    break;\n                default:\n                    throw unusable('ECDH, X25519, or X448');\n            }\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW':\n            if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n                throw unusable('PBKDF2');\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n                throw unusable('RSA-OAEP');\n            const expected = parseInt(alg.slice(9), 10) || 1;\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usages);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withAlg = withAlg;\nfunction message(msg, actual, ...types) {\n    types = types.filter(Boolean);\n    if (types.length > 2) {\n        const last = types.pop();\n        msg += `one of type ${types.join(', ')}, or ${last}.`;\n    }\n    else if (types.length === 2) {\n        msg += `one of type ${types[0]} or ${types[1]}.`;\n    }\n    else {\n        msg += `of type ${types[0]}.`;\n    }\n    if (actual == null) {\n        msg += ` Received ${actual}`;\n    }\n    else if (typeof actual === 'function' && actual.name) {\n        msg += ` Received function ${actual.name}`;\n    }\n    else if (typeof actual === 'object' && actual != null) {\n        if (actual.constructor?.name) {\n            msg += ` Received an instance of ${actual.constructor.name}`;\n        }\n    }\n    return msg;\n}\nexports.default = (actual, ...types) => {\n    return message('Key must be ', actual, ...types);\n};\nfunction withAlg(alg, actual, ...types) {\n    return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nlet ciphers;\nexports.default = (algorithm) => {\n    ciphers ||= new Set((0, node_crypto_1.getCiphers)());\n    return ciphers.has(algorithm);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.types = void 0;\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nexports.default = (key) => (0, is_key_object_js_1.default)(key) || (0, webcrypto_js_1.isCryptoKey)(key);\nconst types = ['KeyObject'];\nexports.types = types;\nif (globalThis.CryptoKey || webcrypto_js_1.default?.CryptoKey) {\n    types.push('CryptoKey');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst check_iv_length_js_1 = require(\"../lib/check_iv_length.js\");\nconst check_cek_length_js_1 = require(\"./check_cek_length.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst timing_safe_equal_js_1 = require(\"./timing_safe_equal.js\");\nconst cbc_tag_js_1 = require(\"./cbc_tag.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst ciphers_js_1 = require(\"./ciphers.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nfunction cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    if ((0, is_key_object_js_1.default)(cek)) {\n        cek = cek.export();\n    }\n    const encKey = cek.subarray(keySize >> 3);\n    const macKey = cek.subarray(0, keySize >> 3);\n    const macSize = parseInt(enc.slice(-3), 10);\n    const algorithm = `aes-${keySize}-cbc`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const expectedTag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);\n    let macCheckPassed;\n    try {\n        macCheckPassed = (0, timing_safe_equal_js_1.default)(tag, expectedTag);\n    }\n    catch {\n    }\n    if (!macCheckPassed) {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n    let plaintext;\n    try {\n        const decipher = (0, node_crypto_1.createDecipheriv)(algorithm, encKey, iv);\n        plaintext = (0, buffer_utils_js_1.concat)(decipher.update(ciphertext), decipher.final());\n    }\n    catch {\n    }\n    if (!plaintext) {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n    return plaintext;\n}\nfunction gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const algorithm = `aes-${keySize}-gcm`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    try {\n        const decipher = (0, node_crypto_1.createDecipheriv)(algorithm, cek, iv, { authTagLength: 16 });\n        decipher.setAuthTag(tag);\n        if (aad.byteLength) {\n            decipher.setAAD(aad, { plaintextLength: ciphertext.length });\n        }\n        const plaintext = decipher.update(ciphertext);\n        decipher.final();\n        return plaintext;\n    }\n    catch {\n        throw new errors_js_1.JWEDecryptionFailed();\n    }\n}\nconst decrypt = (enc, cek, ciphertext, iv, tag, aad) => {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(cek)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(cek, enc, 'decrypt');\n        key = node_crypto_1.KeyObject.from(cek);\n    }\n    else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {\n        key = cek;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(cek, ...is_key_like_js_1.types, 'Uint8Array'));\n    }\n    if (!iv) {\n        throw new errors_js_1.JWEInvalid('JWE Initialization Vector missing');\n    }\n    if (!tag) {\n        throw new errors_js_1.JWEInvalid('JWE Authentication Tag missing');\n    }\n    (0, check_cek_length_js_1.default)(enc, key);\n    (0, check_iv_length_js_1.default)(enc, iv);\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return cbcDecrypt(enc, key, ciphertext, iv, tag, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            return gcmDecrypt(enc, key, ciphertext, iv, tag, aad);\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n    }\n};\nexports.default = decrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isDisjoint = (...headers) => {\n    const sources = headers.filter(Boolean);\n    if (sources.length === 0 || sources.length === 1) {\n        return true;\n    }\n    let acc;\n    for (const header of sources) {\n        const parameters = Object.keys(header);\n        if (!acc || acc.size === 0) {\n            acc = new Set(parameters);\n            continue;\n        }\n        for (const parameter of parameters) {\n            if (acc.has(parameter)) {\n                return false;\n            }\n            acc.add(parameter);\n        }\n    }\n    return true;\n};\nexports.default = isDisjoint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = isObject;\nfunction isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nfunction isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unwrap = exports.wrap = void 0;\nconst node_buffer_1 = require(\"node:buffer\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst ciphers_js_1 = require(\"./ciphers.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nfunction checkKeySize(key, alg) {\n    if (key.symmetricKeySize << 3 !== parseInt(alg.slice(1, 4), 10)) {\n        throw new TypeError(`Invalid key size for alg: ${alg}`);\n    }\n}\nfunction ensureKeyObject(key, alg, usage) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key;\n    }\n    if (key instanceof Uint8Array) {\n        return (0, node_crypto_1.createSecretKey)(key);\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, usage);\n        return node_crypto_1.KeyObject.from(key);\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));\n}\nconst wrap = (alg, key, cek) => {\n    const size = parseInt(alg.slice(1, 4), 10);\n    const algorithm = `aes${size}-wrap`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n    const keyObject = ensureKeyObject(key, alg, 'wrapKey');\n    checkKeySize(keyObject, alg);\n    const cipher = (0, node_crypto_1.createCipheriv)(algorithm, keyObject, node_buffer_1.Buffer.alloc(8, 0xa6));\n    return (0, buffer_utils_js_1.concat)(cipher.update(cek), cipher.final());\n};\nexports.wrap = wrap;\nconst unwrap = (alg, key, encryptedKey) => {\n    const size = parseInt(alg.slice(1, 4), 10);\n    const algorithm = `aes${size}-wrap`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n    const keyObject = ensureKeyObject(key, alg, 'unwrapKey');\n    checkKeySize(keyObject, alg);\n    const cipher = (0, node_crypto_1.createDecipheriv)(algorithm, keyObject, node_buffer_1.Buffer.alloc(8, 0xa6));\n    return (0, buffer_utils_js_1.concat)(cipher.update(encryptedKey), cipher.final());\n};\nexports.unwrap = unwrap;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isJWK = isJWK;\nexports.isPrivateJWK = isPrivateJWK;\nexports.isPublicJWK = isPublicJWK;\nexports.isSecretJWK = isSecretJWK;\nconst is_object_js_1 = require(\"./is_object.js\");\nfunction isJWK(key) {\n    return (0, is_object_js_1.default)(key) && typeof key.kty === 'string';\n}\nfunction isPrivateJWK(key) {\n    return key.kty !== 'oct' && typeof key.d === 'string';\n}\nfunction isPublicJWK(key) {\n    return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nfunction isSecretJWK(key) {\n    return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.weakMap = void 0;\nconst node_crypto_1 = require(\"node:crypto\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst is_jwk_js_1 = require(\"../lib/is_jwk.js\");\nexports.weakMap = new WeakMap();\nconst namedCurveToJOSE = (namedCurve) => {\n    switch (namedCurve) {\n        case 'prime256v1':\n            return 'P-256';\n        case 'secp384r1':\n            return 'P-384';\n        case 'secp521r1':\n            return 'P-521';\n        case 'secp256k1':\n            return 'secp256k1';\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported key curve for this operation');\n    }\n};\nconst getNamedCurve = (kee, raw) => {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(kee)) {\n        key = node_crypto_1.KeyObject.from(kee);\n    }\n    else if ((0, is_key_object_js_1.default)(kee)) {\n        key = kee;\n    }\n    else if ((0, is_jwk_js_1.isJWK)(kee)) {\n        return kee.crv;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(kee, ...is_key_like_js_1.types));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError('only \"private\" or \"public\" type keys can be used for this operation');\n    }\n    switch (key.asymmetricKeyType) {\n        case 'ed25519':\n        case 'ed448':\n            return `Ed${key.asymmetricKeyType.slice(2)}`;\n        case 'x25519':\n        case 'x448':\n            return `X${key.asymmetricKeyType.slice(1)}`;\n        case 'ec': {\n            const namedCurve = key.asymmetricKeyDetails.namedCurve;\n            if (raw) {\n                return namedCurve;\n            }\n            return namedCurveToJOSE(namedCurve);\n        }\n        default:\n            throw new TypeError('Invalid asymmetric key type for this operation');\n    }\n};\nexports.default = getNamedCurve;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ecdhAllowed = void 0;\nexports.deriveKey = deriveKey;\nexports.generateEpk = generateEpk;\nconst node_crypto_1 = require(\"node:crypto\");\nconst node_util_1 = require(\"node:util\");\nconst get_named_curve_js_1 = require(\"./get_named_curve.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst generateKeyPair = (0, node_util_1.promisify)(node_crypto_1.generateKeyPair);\nasync function deriveKey(publicKee, privateKee, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) {\n    let publicKey;\n    if ((0, webcrypto_js_1.isCryptoKey)(publicKee)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(publicKee, 'ECDH');\n        publicKey = node_crypto_1.KeyObject.from(publicKee);\n    }\n    else if ((0, is_key_object_js_1.default)(publicKee)) {\n        publicKey = publicKee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(publicKee, ...is_key_like_js_1.types));\n    }\n    let privateKey;\n    if ((0, webcrypto_js_1.isCryptoKey)(privateKee)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(privateKee, 'ECDH', 'deriveBits');\n        privateKey = node_crypto_1.KeyObject.from(privateKee);\n    }\n    else if ((0, is_key_object_js_1.default)(privateKee)) {\n        privateKey = privateKee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(privateKee, ...is_key_like_js_1.types));\n    }\n    const value = (0, buffer_utils_js_1.concat)((0, buffer_utils_js_1.lengthAndInput)(buffer_utils_js_1.encoder.encode(algorithm)), (0, buffer_utils_js_1.lengthAndInput)(apu), (0, buffer_utils_js_1.lengthAndInput)(apv), (0, buffer_utils_js_1.uint32be)(keyLength));\n    const sharedSecret = (0, node_crypto_1.diffieHellman)({ privateKey, publicKey });\n    return (0, buffer_utils_js_1.concatKdf)(sharedSecret, keyLength, value);\n}\nasync function generateEpk(kee) {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(kee)) {\n        key = node_crypto_1.KeyObject.from(kee);\n    }\n    else if ((0, is_key_object_js_1.default)(kee)) {\n        key = kee;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(kee, ...is_key_like_js_1.types));\n    }\n    switch (key.asymmetricKeyType) {\n        case 'x25519':\n            return generateKeyPair('x25519');\n        case 'x448': {\n            return generateKeyPair('x448');\n        }\n        case 'ec': {\n            const namedCurve = (0, get_named_curve_js_1.default)(key);\n            return generateKeyPair('ec', { namedCurve });\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported EPK');\n    }\n}\nconst ecdhAllowed = (key) => ['P-256', 'P-384', 'P-521', 'X25519', 'X448'].includes((0, get_named_curve_js_1.default)(key));\nexports.ecdhAllowed = ecdhAllowed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = checkP2s;\nconst errors_js_1 = require(\"../util/errors.js\");\nfunction checkP2s(p2s) {\n    if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n        throw new errors_js_1.JWEInvalid('PBES2 Salt Input must be 8 or more octets');\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decrypt = exports.encrypt = void 0;\nconst node_util_1 = require(\"node:util\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst random_js_1 = require(\"./random.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst base64url_js_1 = require(\"./base64url.js\");\nconst aeskw_js_1 = require(\"./aeskw.js\");\nconst check_p2s_js_1 = require(\"../lib/check_p2s.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst pbkdf2 = (0, node_util_1.promisify)(node_crypto_1.pbkdf2);\nfunction getPassword(key, alg) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key.export();\n    }\n    if (key instanceof Uint8Array) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, 'deriveBits', 'deriveKey');\n        return node_crypto_1.KeyObject.from(key).export();\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));\n}\nconst encrypt = async (alg, key, cek, p2c = 2048, p2s = (0, random_js_1.default)(new Uint8Array(16))) => {\n    (0, check_p2s_js_1.default)(p2s);\n    const salt = (0, buffer_utils_js_1.p2s)(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n    const password = getPassword(key, alg);\n    const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n    const encryptedKey = await (0, aeskw_js_1.wrap)(alg.slice(-6), derivedKey, cek);\n    return { encryptedKey, p2c, p2s: (0, base64url_js_1.encode)(p2s) };\n};\nexports.encrypt = encrypt;\nconst decrypt = async (alg, key, encryptedKey, p2c, p2s) => {\n    (0, check_p2s_js_1.default)(p2s);\n    const salt = (0, buffer_utils_js_1.p2s)(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n    const password = getPassword(key, alg);\n    const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n    return (0, aeskw_js_1.unwrap)(alg.slice(-6), derivedKey, encryptedKey);\n};\nexports.decrypt = decrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nexports.default = (key, alg) => {\n    let modulusLength;\n    try {\n        if (key instanceof node_crypto_1.KeyObject) {\n            modulusLength = key.asymmetricKeyDetails?.modulusLength;\n        }\n        else {\n            modulusLength = Buffer.from(key.n, 'base64url').byteLength << 3;\n        }\n    }\n    catch { }\n    if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n        throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n    }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decrypt = exports.encrypt = void 0;\nconst node_crypto_1 = require(\"node:crypto\");\nconst node_util_1 = require(\"node:util\");\nconst check_key_length_js_1 = require(\"./check_key_length.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst checkKey = (key, alg) => {\n    if (key.asymmetricKeyType !== 'rsa') {\n        throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n    }\n    (0, check_key_length_js_1.default)(key, alg);\n};\nconst RSA1_5 = (0, node_util_1.deprecate)(() => node_crypto_1.constants.RSA_PKCS1_PADDING, 'The RSA1_5 \"alg\" (JWE Algorithm) is deprecated and will be removed in the next major revision.');\nconst resolvePadding = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            return node_crypto_1.constants.RSA_PKCS1_OAEP_PADDING;\n        case 'RSA1_5':\n            return RSA1_5();\n        default:\n            return undefined;\n    }\n};\nconst resolveOaepHash = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n            return 'sha1';\n        case 'RSA-OAEP-256':\n            return 'sha256';\n        case 'RSA-OAEP-384':\n            return 'sha384';\n        case 'RSA-OAEP-512':\n            return 'sha512';\n        default:\n            return undefined;\n    }\n};\nfunction ensureKeyObject(key, alg, ...usages) {\n    if ((0, is_key_object_js_1.default)(key)) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(key, alg, ...usages);\n        return node_crypto_1.KeyObject.from(key);\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n}\nconst encrypt = (alg, key, cek) => {\n    const padding = resolvePadding(alg);\n    const oaepHash = resolveOaepHash(alg);\n    const keyObject = ensureKeyObject(key, alg, 'wrapKey', 'encrypt');\n    checkKey(keyObject, alg);\n    return (0, node_crypto_1.publicEncrypt)({ key: keyObject, oaepHash, padding }, cek);\n};\nexports.encrypt = encrypt;\nconst decrypt = (alg, key, encryptedKey) => {\n    const padding = resolvePadding(alg);\n    const oaepHash = resolveOaepHash(alg);\n    const keyObject = ensureKeyObject(key, alg, 'unwrapKey', 'decrypt');\n    checkKey(keyObject, alg);\n    return (0, node_crypto_1.privateDecrypt)({ key: keyObject, oaepHash, padding }, encryptedKey);\n};\nexports.decrypt = decrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bitLength = bitLength;\nconst errors_js_1 = require(\"../util/errors.js\");\nconst random_js_1 = require(\"../runtime/random.js\");\nfunction bitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n            return 128;\n        case 'A192GCM':\n            return 192;\n        case 'A256GCM':\n        case 'A128CBC-HS256':\n            return 256;\n        case 'A192CBC-HS384':\n            return 384;\n        case 'A256CBC-HS512':\n            return 512;\n        default:\n            throw new errors_js_1.JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexports.default = (alg) => (0, random_js_1.default)(new Uint8Array(bitLength(alg) >> 3));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromX509 = exports.fromSPKI = exports.fromPKCS8 = exports.toPKCS8 = exports.toSPKI = void 0;\nconst node_crypto_1 = require(\"node:crypto\");\nconst node_buffer_1 = require(\"node:buffer\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst genericExport = (keyType, keyFormat, key) => {\n    let keyObject;\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        if (!key.extractable) {\n            throw new TypeError('CryptoKey is not extractable');\n        }\n        keyObject = node_crypto_1.KeyObject.from(key);\n    }\n    else if ((0, is_key_object_js_1.default)(key)) {\n        keyObject = key;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n    }\n    if (keyObject.type !== keyType) {\n        throw new TypeError(`key is not a ${keyType} key`);\n    }\n    return keyObject.export({ format: 'pem', type: keyFormat });\n};\nconst toSPKI = (key) => {\n    return genericExport('public', 'spki', key);\n};\nexports.toSPKI = toSPKI;\nconst toPKCS8 = (key) => {\n    return genericExport('private', 'pkcs8', key);\n};\nexports.toPKCS8 = toPKCS8;\nconst fromPKCS8 = (pem) => (0, node_crypto_1.createPrivateKey)({\n    key: node_buffer_1.Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g, ''), 'base64'),\n    type: 'pkcs8',\n    format: 'der',\n});\nexports.fromPKCS8 = fromPKCS8;\nconst fromSPKI = (pem) => (0, node_crypto_1.createPublicKey)({\n    key: node_buffer_1.Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g, ''), 'base64'),\n    type: 'spki',\n    format: 'der',\n});\nexports.fromSPKI = fromSPKI;\nconst fromX509 = (pem) => (0, node_crypto_1.createPublicKey)({\n    key: pem,\n    type: 'spki',\n    format: 'pem',\n});\nexports.fromX509 = fromX509;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst parse = (key) => {\n    if (key.d) {\n        return (0, node_crypto_1.createPrivateKey)({ format: 'jwk', key });\n    }\n    return (0, node_crypto_1.createPublicKey)({ format: 'jwk', key });\n};\nexports.default = parse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.importSPKI = importSPKI;\nexports.importX509 = importX509;\nexports.importPKCS8 = importPKCS8;\nexports.importJWK = importJWK;\nconst base64url_js_1 = require(\"../runtime/base64url.js\");\nconst asn1_js_1 = require(\"../runtime/asn1.js\");\nconst jwk_to_key_js_1 = require(\"../runtime/jwk_to_key.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nasync function importSPKI(spki, alg, options) {\n    if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n        throw new TypeError('\"spki\" must be SPKI formatted string');\n    }\n    return (0, asn1_js_1.fromSPKI)(spki, alg, options);\n}\nasync function importX509(x509, alg, options) {\n    if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n        throw new TypeError('\"x509\" must be X.509 formatted string');\n    }\n    return (0, asn1_js_1.fromX509)(x509, alg, options);\n}\nasync function importPKCS8(pkcs8, alg, options) {\n    if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n        throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n    }\n    return (0, asn1_js_1.fromPKCS8)(pkcs8, alg, options);\n}\nasync function importJWK(jwk, alg) {\n    if (!(0, is_object_js_1.default)(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    alg ||= jwk.alg;\n    switch (jwk.kty) {\n        case 'oct':\n            if (typeof jwk.k !== 'string' || !jwk.k) {\n                throw new TypeError('missing \"k\" (Key Value) Parameter value');\n            }\n            return (0, base64url_js_1.decode)(jwk.k);\n        case 'RSA':\n            if ('oth' in jwk && jwk.oth !== undefined) {\n                throw new errors_js_1.JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n            }\n        case 'EC':\n        case 'OKP':\n            return (0, jwk_to_key_js_1.default)({ ...jwk, alg });\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkKeyTypeWithJwk = void 0;\nconst invalid_key_input_js_1 = require(\"./invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"../runtime/is_key_like.js\");\nconst jwk = require(\"./is_jwk.js\");\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n    if (key.use !== undefined && key.use !== 'sig') {\n        throw new TypeError('Invalid key for this operation, when present its use must be sig');\n    }\n    if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n        throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n    }\n    if (key.alg !== undefined && key.alg !== alg) {\n        throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n    }\n    return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n    if (key instanceof Uint8Array)\n        return;\n    if (allowJwk && jwk.isJWK(key)) {\n        if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n            return;\n        throw 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    }\n    if (!(0, is_key_like_js_1.default)(key)) {\n        throw new TypeError((0, invalid_key_input_js_1.withAlg)(alg, key, ...is_key_like_js_1.types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n    }\n    if (key.type !== 'secret') {\n        throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n    }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n    if (allowJwk && jwk.isJWK(key)) {\n        switch (usage) {\n            case 'sign':\n                if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n            case 'verify':\n                if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n        }\n    }\n    if (!(0, is_key_like_js_1.default)(key)) {\n        throw new TypeError((0, invalid_key_input_js_1.withAlg)(alg, key, ...is_key_like_js_1.types, allowJwk ? 'JSON Web Key' : null));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n    }\n    if (usage === 'sign' && key.type === 'public') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n    }\n    if (usage === 'decrypt' && key.type === 'public') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n    }\n    if (key.algorithm && usage === 'verify' && key.type === 'private') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n    }\n    if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n    }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n    const symmetric = alg.startsWith('HS') ||\n        alg === 'dir' ||\n        alg.startsWith('PBES2') ||\n        /^A\\d{3}(?:GCM)?KW$/.test(alg);\n    if (symmetric) {\n        symmetricTypeCheck(alg, key, usage, allowJwk);\n    }\n    else {\n        asymmetricTypeCheck(alg, key, usage, allowJwk);\n    }\n}\nexports.default = checkKeyType.bind(undefined, false);\nexports.checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst check_iv_length_js_1 = require(\"../lib/check_iv_length.js\");\nconst check_cek_length_js_1 = require(\"./check_cek_length.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst cbc_tag_js_1 = require(\"./cbc_tag.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst iv_js_1 = require(\"../lib/iv.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst ciphers_js_1 = require(\"./ciphers.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nfunction cbcEncrypt(enc, plaintext, cek, iv, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    if ((0, is_key_object_js_1.default)(cek)) {\n        cek = cek.export();\n    }\n    const encKey = cek.subarray(keySize >> 3);\n    const macKey = cek.subarray(0, keySize >> 3);\n    const algorithm = `aes-${keySize}-cbc`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const cipher = (0, node_crypto_1.createCipheriv)(algorithm, encKey, iv);\n    const ciphertext = (0, buffer_utils_js_1.concat)(cipher.update(plaintext), cipher.final());\n    const macSize = parseInt(enc.slice(-3), 10);\n    const tag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);\n    return { ciphertext, tag, iv };\n}\nfunction gcmEncrypt(enc, plaintext, cek, iv, aad) {\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const algorithm = `aes-${keySize}-gcm`;\n    if (!(0, ciphers_js_1.default)(algorithm)) {\n        throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);\n    }\n    const cipher = (0, node_crypto_1.createCipheriv)(algorithm, cek, iv, { authTagLength: 16 });\n    if (aad.byteLength) {\n        cipher.setAAD(aad, { plaintextLength: plaintext.length });\n    }\n    const ciphertext = cipher.update(plaintext);\n    cipher.final();\n    const tag = cipher.getAuthTag();\n    return { ciphertext, tag, iv };\n}\nconst encrypt = (enc, plaintext, cek, iv, aad) => {\n    let key;\n    if ((0, webcrypto_js_1.isCryptoKey)(cek)) {\n        (0, crypto_key_js_1.checkEncCryptoKey)(cek, enc, 'encrypt');\n        key = node_crypto_1.KeyObject.from(cek);\n    }\n    else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {\n        key = cek;\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(cek, ...is_key_like_js_1.types, 'Uint8Array'));\n    }\n    (0, check_cek_length_js_1.default)(enc, key);\n    if (iv) {\n        (0, check_iv_length_js_1.default)(enc, iv);\n    }\n    else {\n        iv = (0, iv_js_1.default)(enc);\n    }\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return cbcEncrypt(enc, plaintext, key, iv, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            return gcmEncrypt(enc, plaintext, key, iv, aad);\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n    }\n};\nexports.default = encrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrap = wrap;\nexports.unwrap = unwrap;\nconst encrypt_js_1 = require(\"../runtime/encrypt.js\");\nconst decrypt_js_1 = require(\"../runtime/decrypt.js\");\nconst base64url_js_1 = require(\"../runtime/base64url.js\");\nasync function wrap(alg, key, cek, iv) {\n    const jweAlgorithm = alg.slice(0, 7);\n    const wrapped = await (0, encrypt_js_1.default)(jweAlgorithm, cek, key, iv, new Uint8Array(0));\n    return {\n        encryptedKey: wrapped.ciphertext,\n        iv: (0, base64url_js_1.encode)(wrapped.iv),\n        tag: (0, base64url_js_1.encode)(wrapped.tag),\n    };\n}\nasync function unwrap(alg, key, encryptedKey, iv, tag) {\n    const jweAlgorithm = alg.slice(0, 7);\n    return (0, decrypt_js_1.default)(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst aeskw_js_1 = require(\"../runtime/aeskw.js\");\nconst ECDH = require(\"../runtime/ecdhes.js\");\nconst pbes2kw_js_1 = require(\"../runtime/pbes2kw.js\");\nconst rsaes_js_1 = require(\"../runtime/rsaes.js\");\nconst base64url_js_1 = require(\"../runtime/base64url.js\");\nconst normalize_key_js_1 = require(\"../runtime/normalize_key.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst cek_js_1 = require(\"../lib/cek.js\");\nconst import_js_1 = require(\"../key/import.js\");\nconst check_key_type_js_1 = require(\"./check_key_type.js\");\nconst is_object_js_1 = require(\"./is_object.js\");\nconst aesgcmkw_js_1 = require(\"./aesgcmkw.js\");\nasync function decryptKeyManagement(alg, key, encryptedKey, joseHeader, options) {\n    (0, check_key_type_js_1.default)(alg, key, 'decrypt');\n    key = (await normalize_key_js_1.default.normalizePrivateKey?.(key, alg)) || key;\n    switch (alg) {\n        case 'dir': {\n            if (encryptedKey !== undefined)\n                throw new errors_js_1.JWEInvalid('Encountered unexpected JWE Encrypted Key');\n            return key;\n        }\n        case 'ECDH-ES':\n            if (encryptedKey !== undefined)\n                throw new errors_js_1.JWEInvalid('Encountered unexpected JWE Encrypted Key');\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!(0, is_object_js_1.default)(joseHeader.epk))\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"epk\" (Ephemeral Public Key) missing or invalid`);\n            if (!ECDH.ecdhAllowed(key))\n                throw new errors_js_1.JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            const epk = await (0, import_js_1.importJWK)(joseHeader.epk, alg);\n            let partyUInfo;\n            let partyVInfo;\n            if (joseHeader.apu !== undefined) {\n                if (typeof joseHeader.apu !== 'string')\n                    throw new errors_js_1.JWEInvalid(`JOSE Header \"apu\" (Agreement PartyUInfo) invalid`);\n                try {\n                    partyUInfo = (0, base64url_js_1.decode)(joseHeader.apu);\n                }\n                catch {\n                    throw new errors_js_1.JWEInvalid('Failed to base64url decode the apu');\n                }\n            }\n            if (joseHeader.apv !== undefined) {\n                if (typeof joseHeader.apv !== 'string')\n                    throw new errors_js_1.JWEInvalid(`JOSE Header \"apv\" (Agreement PartyVInfo) invalid`);\n                try {\n                    partyVInfo = (0, base64url_js_1.decode)(joseHeader.apv);\n                }\n                catch {\n                    throw new errors_js_1.JWEInvalid('Failed to base64url decode the apv');\n                }\n            }\n            const sharedSecret = await ECDH.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, alg === 'ECDH-ES' ? (0, cek_js_1.bitLength)(joseHeader.enc) : parseInt(alg.slice(-5, -2), 10), partyUInfo, partyVInfo);\n            if (alg === 'ECDH-ES')\n                return sharedSecret;\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, aeskw_js_1.unwrap)(alg.slice(-6), sharedSecret, encryptedKey);\n        }\n        case 'RSA1_5':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, rsaes_js_1.decrypt)(alg, key, encryptedKey);\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.p2c !== 'number')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) missing or invalid`);\n            const p2cLimit = options?.maxPBES2Count || 10_000;\n            if (joseHeader.p2c > p2cLimit)\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) out is of acceptable bounds`);\n            if (typeof joseHeader.p2s !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"p2s\" (PBES2 Salt) missing or invalid`);\n            let p2s;\n            try {\n                p2s = (0, base64url_js_1.decode)(joseHeader.p2s);\n            }\n            catch {\n                throw new errors_js_1.JWEInvalid('Failed to base64url decode the p2s');\n            }\n            return (0, pbes2kw_js_1.decrypt)(alg, key, encryptedKey, joseHeader.p2c, p2s);\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            return (0, aeskw_js_1.unwrap)(alg, key, encryptedKey);\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            if (encryptedKey === undefined)\n                throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.iv !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"iv\" (Initialization Vector) missing or invalid`);\n            if (typeof joseHeader.tag !== 'string')\n                throw new errors_js_1.JWEInvalid(`JOSE Header \"tag\" (Authentication Tag) missing or invalid`);\n            let iv;\n            try {\n                iv = (0, base64url_js_1.decode)(joseHeader.iv);\n            }\n            catch {\n                throw new errors_js_1.JWEInvalid('Failed to base64url decode the iv');\n            }\n            let tag;\n            try {\n                tag = (0, base64url_js_1.decode)(joseHeader.tag);\n            }\n            catch {\n                throw new errors_js_1.JWEInvalid('Failed to base64url decode the tag');\n            }\n            return (0, aesgcmkw_js_1.unwrap)(alg, key, encryptedKey, iv, tag);\n        }\n        default: {\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n}\nexports.default = decryptKeyManagement;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n    if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n    }\n    if (!protectedHeader || protectedHeader.crit === undefined) {\n        return new Set();\n    }\n    if (!Array.isArray(protectedHeader.crit) ||\n        protectedHeader.crit.length === 0 ||\n        protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n    }\n    let recognized;\n    if (recognizedOption !== undefined) {\n        recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n    }\n    else {\n        recognized = recognizedDefault;\n    }\n    for (const parameter of protectedHeader.crit) {\n        if (!recognized.has(parameter)) {\n            throw new errors_js_1.JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n        }\n        if (joseHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n        }\n        if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n        }\n    }\n    return new Set(protectedHeader.crit);\n}\nexports.default = validateCrit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validateAlgorithms = (option, algorithms) => {\n    if (algorithms !== undefined &&\n        (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n        throw new TypeError(`\"${option}\" option must be an array of strings`);\n    }\n    if (!algorithms) {\n        return undefined;\n    }\n    return new Set(algorithms);\n};\nexports.default = validateAlgorithms;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flattenedDecrypt = flattenedDecrypt;\nconst base64url_js_1 = require(\"../../runtime/base64url.js\");\nconst decrypt_js_1 = require(\"../../runtime/decrypt.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst is_disjoint_js_1 = require(\"../../lib/is_disjoint.js\");\nconst is_object_js_1 = require(\"../../lib/is_object.js\");\nconst decrypt_key_management_js_1 = require(\"../../lib/decrypt_key_management.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nconst cek_js_1 = require(\"../../lib/cek.js\");\nconst validate_crit_js_1 = require(\"../../lib/validate_crit.js\");\nconst validate_algorithms_js_1 = require(\"../../lib/validate_algorithms.js\");\nasync function flattenedDecrypt(jwe, key, options) {\n    if (!(0, is_object_js_1.default)(jwe)) {\n        throw new errors_js_1.JWEInvalid('Flattened JWE must be an object');\n    }\n    if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n        throw new errors_js_1.JWEInvalid('JOSE Header missing');\n    }\n    if (jwe.iv !== undefined && typeof jwe.iv !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Initialization Vector incorrect type');\n    }\n    if (typeof jwe.ciphertext !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Ciphertext missing or incorrect type');\n    }\n    if (jwe.tag !== undefined && typeof jwe.tag !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Authentication Tag incorrect type');\n    }\n    if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Protected Header incorrect type');\n    }\n    if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE Encrypted Key incorrect type');\n    }\n    if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n        throw new errors_js_1.JWEInvalid('JWE AAD incorrect type');\n    }\n    if (jwe.header !== undefined && !(0, is_object_js_1.default)(jwe.header)) {\n        throw new errors_js_1.JWEInvalid('JWE Shared Unprotected Header incorrect type');\n    }\n    if (jwe.unprotected !== undefined && !(0, is_object_js_1.default)(jwe.unprotected)) {\n        throw new errors_js_1.JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n    }\n    let parsedProt;\n    if (jwe.protected) {\n        try {\n            const protectedHeader = (0, base64url_js_1.decode)(jwe.protected);\n            parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('JWE Protected Header is invalid');\n        }\n    }\n    if (!(0, is_disjoint_js_1.default)(parsedProt, jwe.header, jwe.unprotected)) {\n        throw new errors_js_1.JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jwe.header,\n        ...jwe.unprotected,\n    };\n    (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options?.crit, parsedProt, joseHeader);\n    if (joseHeader.zip !== undefined) {\n        throw new errors_js_1.JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n    }\n    const { alg, enc } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new errors_js_1.JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n    }\n    if (typeof enc !== 'string' || !enc) {\n        throw new errors_js_1.JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n    }\n    const keyManagementAlgorithms = options && (0, validate_algorithms_js_1.default)('keyManagementAlgorithms', options.keyManagementAlgorithms);\n    const contentEncryptionAlgorithms = options &&\n        (0, validate_algorithms_js_1.default)('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);\n    if ((keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) ||\n        (!keyManagementAlgorithms && alg.startsWith('PBES2'))) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter value not allowed');\n    }\n    let encryptedKey;\n    if (jwe.encrypted_key !== undefined) {\n        try {\n            encryptedKey = (0, base64url_js_1.decode)(jwe.encrypted_key);\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('Failed to base64url decode the encrypted_key');\n        }\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jwe);\n        resolvedKey = true;\n    }\n    let cek;\n    try {\n        cek = await (0, decrypt_key_management_js_1.default)(alg, key, encryptedKey, joseHeader, options);\n    }\n    catch (err) {\n        if (err instanceof TypeError || err instanceof errors_js_1.JWEInvalid || err instanceof errors_js_1.JOSENotSupported) {\n            throw err;\n        }\n        cek = (0, cek_js_1.default)(enc);\n    }\n    let iv;\n    let tag;\n    if (jwe.iv !== undefined) {\n        try {\n            iv = (0, base64url_js_1.decode)(jwe.iv);\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('Failed to base64url decode the iv');\n        }\n    }\n    if (jwe.tag !== undefined) {\n        try {\n            tag = (0, base64url_js_1.decode)(jwe.tag);\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('Failed to base64url decode the tag');\n        }\n    }\n    const protectedHeader = buffer_utils_js_1.encoder.encode(jwe.protected ?? '');\n    let additionalData;\n    if (jwe.aad !== undefined) {\n        additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(jwe.aad));\n    }\n    else {\n        additionalData = protectedHeader;\n    }\n    let ciphertext;\n    try {\n        ciphertext = (0, base64url_js_1.decode)(jwe.ciphertext);\n    }\n    catch {\n        throw new errors_js_1.JWEInvalid('Failed to base64url decode the ciphertext');\n    }\n    const plaintext = await (0, decrypt_js_1.default)(enc, cek, ciphertext, iv, tag, additionalData);\n    const result = { plaintext };\n    if (jwe.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jwe.aad !== undefined) {\n        try {\n            result.additionalAuthenticatedData = (0, base64url_js_1.decode)(jwe.aad);\n        }\n        catch {\n            throw new errors_js_1.JWEInvalid('Failed to base64url decode the aad');\n        }\n    }\n    if (jwe.unprotected !== undefined) {\n        result.sharedUnprotectedHeader = jwe.unprotected;\n    }\n    if (jwe.header !== undefined) {\n        result.unprotectedHeader = jwe.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compactDecrypt = compactDecrypt;\nconst decrypt_js_1 = require(\"../flattened/decrypt.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nasync function compactDecrypt(jwe, key, options) {\n    if (jwe instanceof Uint8Array) {\n        jwe = buffer_utils_js_1.decoder.decode(jwe);\n    }\n    if (typeof jwe !== 'string') {\n        throw new errors_js_1.JWEInvalid('Compact JWE must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n    if (length !== 5) {\n        throw new errors_js_1.JWEInvalid('Invalid Compact JWE');\n    }\n    const decrypted = await (0, decrypt_js_1.flattenedDecrypt)({\n        ciphertext,\n        iv: iv || undefined,\n        protected: protectedHeader,\n        tag: tag || undefined,\n        encrypted_key: encryptedKey || undefined,\n    }, key, options);\n    const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generalDecrypt = generalDecrypt;\nconst decrypt_js_1 = require(\"../flattened/decrypt.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst is_object_js_1 = require(\"../../lib/is_object.js\");\nasync function generalDecrypt(jwe, key, options) {\n    if (!(0, is_object_js_1.default)(jwe)) {\n        throw new errors_js_1.JWEInvalid('General JWE must be an object');\n    }\n    if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(is_object_js_1.default)) {\n        throw new errors_js_1.JWEInvalid('JWE Recipients missing or incorrect type');\n    }\n    if (!jwe.recipients.length) {\n        throw new errors_js_1.JWEInvalid('JWE Recipients has no members');\n    }\n    for (const recipient of jwe.recipients) {\n        try {\n            return await (0, decrypt_js_1.flattenedDecrypt)({\n                aad: jwe.aad,\n                ciphertext: jwe.ciphertext,\n                encrypted_key: recipient.encrypted_key,\n                header: recipient.header,\n                iv: jwe.iv,\n                protected: jwe.protected,\n                tag: jwe.tag,\n                unprotected: jwe.unprotected,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new errors_js_1.JWEDecryptionFailed();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unprotected = void 0;\nexports.unprotected = Symbol();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst node_crypto_1 = require(\"node:crypto\");\nconst base64url_js_1 = require(\"./base64url.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst is_key_object_js_1 = require(\"./is_key_object.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst keyToJWK = (key) => {\n    let keyObject;\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        if (!key.extractable) {\n            throw new TypeError('CryptoKey is not extractable');\n        }\n        keyObject = node_crypto_1.KeyObject.from(key);\n    }\n    else if ((0, is_key_object_js_1.default)(key)) {\n        keyObject = key;\n    }\n    else if (key instanceof Uint8Array) {\n        return {\n            kty: 'oct',\n            k: (0, base64url_js_1.encode)(key),\n        };\n    }\n    else {\n        throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));\n    }\n    if (keyObject.type !== 'secret' &&\n        !['rsa', 'ec', 'ed25519', 'x25519', 'ed448', 'x448'].includes(keyObject.asymmetricKeyType)) {\n        throw new errors_js_1.JOSENotSupported('Unsupported key asymmetricKeyType');\n    }\n    return keyObject.export({ format: 'jwk' });\n};\nexports.default = keyToJWK;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exportSPKI = exportSPKI;\nexports.exportPKCS8 = exportPKCS8;\nexports.exportJWK = exportJWK;\nconst asn1_js_1 = require(\"../runtime/asn1.js\");\nconst asn1_js_2 = require(\"../runtime/asn1.js\");\nconst key_to_jwk_js_1 = require(\"../runtime/key_to_jwk.js\");\nasync function exportSPKI(key) {\n    return (0, asn1_js_1.toSPKI)(key);\n}\nasync function exportPKCS8(key) {\n    return (0, asn1_js_2.toPKCS8)(key);\n}\nasync function exportJWK(key) {\n    return (0, key_to_jwk_js_1.default)(key);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst aeskw_js_1 = require(\"../runtime/aeskw.js\");\nconst ECDH = require(\"../runtime/ecdhes.js\");\nconst pbes2kw_js_1 = require(\"../runtime/pbes2kw.js\");\nconst rsaes_js_1 = require(\"../runtime/rsaes.js\");\nconst base64url_js_1 = require(\"../runtime/base64url.js\");\nconst normalize_key_js_1 = require(\"../runtime/normalize_key.js\");\nconst cek_js_1 = require(\"../lib/cek.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst export_js_1 = require(\"../key/export.js\");\nconst check_key_type_js_1 = require(\"./check_key_type.js\");\nconst aesgcmkw_js_1 = require(\"./aesgcmkw.js\");\nasync function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n    let encryptedKey;\n    let parameters;\n    let cek;\n    (0, check_key_type_js_1.default)(alg, key, 'encrypt');\n    key = (await normalize_key_js_1.default.normalizePublicKey?.(key, alg)) || key;\n    switch (alg) {\n        case 'dir': {\n            cek = key;\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!ECDH.ecdhAllowed(key)) {\n                throw new errors_js_1.JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            }\n            const { apu, apv } = providedParameters;\n            let { epk: ephemeralKey } = providedParameters;\n            ephemeralKey ||= (await ECDH.generateEpk(key)).privateKey;\n            const { x, y, crv, kty } = await (0, export_js_1.exportJWK)(ephemeralKey);\n            const sharedSecret = await ECDH.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, alg === 'ECDH-ES' ? (0, cek_js_1.bitLength)(enc) : parseInt(alg.slice(-5, -2), 10), apu, apv);\n            parameters = { epk: { x, crv, kty } };\n            if (kty === 'EC')\n                parameters.epk.y = y;\n            if (apu)\n                parameters.apu = (0, base64url_js_1.encode)(apu);\n            if (apv)\n                parameters.apv = (0, base64url_js_1.encode)(apv);\n            if (alg === 'ECDH-ES') {\n                cek = sharedSecret;\n                break;\n            }\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const kwAlg = alg.slice(-6);\n            encryptedKey = await (0, aeskw_js_1.wrap)(kwAlg, sharedSecret, cek);\n            break;\n        }\n        case 'RSA1_5':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            encryptedKey = await (0, rsaes_js_1.encrypt)(alg, key, cek);\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const { p2c, p2s } = providedParameters;\n            ({ encryptedKey, ...parameters } = await (0, pbes2kw_js_1.encrypt)(alg, key, cek, p2c, p2s));\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            encryptedKey = await (0, aeskw_js_1.wrap)(alg, key, cek);\n            break;\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            cek = providedCek || (0, cek_js_1.default)(enc);\n            const { iv } = providedParameters;\n            ({ encryptedKey, ...parameters } = await (0, aesgcmkw_js_1.wrap)(alg, key, cek, iv));\n            break;\n        }\n        default: {\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n    return { cek, encryptedKey, parameters };\n}\nexports.default = encryptKeyManagement;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlattenedEncrypt = void 0;\nconst base64url_js_1 = require(\"../../runtime/base64url.js\");\nconst private_symbols_js_1 = require(\"../../lib/private_symbols.js\");\nconst encrypt_js_1 = require(\"../../runtime/encrypt.js\");\nconst encrypt_key_management_js_1 = require(\"../../lib/encrypt_key_management.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst is_disjoint_js_1 = require(\"../../lib/is_disjoint.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nconst validate_crit_js_1 = require(\"../../lib/validate_crit.js\");\nclass FlattenedEncrypt {\n    _plaintext;\n    _protectedHeader;\n    _sharedUnprotectedHeader;\n    _unprotectedHeader;\n    _aad;\n    _cek;\n    _iv;\n    _keyManagementParameters;\n    constructor(plaintext) {\n        if (!(plaintext instanceof Uint8Array)) {\n            throw new TypeError('plaintext must be an instance of Uint8Array');\n        }\n        this._plaintext = plaintext;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this._keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this._keyManagementParameters = parameters;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this._sharedUnprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this._sharedUnprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this._aad = aad;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this._cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this._cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this._iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this._iv = iv;\n        return this;\n    }\n    async encrypt(key, options) {\n        if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {\n            throw new errors_js_1.JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n        }\n        if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {\n            throw new errors_js_1.JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this._protectedHeader,\n            ...this._unprotectedHeader,\n            ...this._sharedUnprotectedHeader,\n        };\n        (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options?.crit, this._protectedHeader, joseHeader);\n        if (joseHeader.zip !== undefined) {\n            throw new errors_js_1.JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n        }\n        const { alg, enc } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new errors_js_1.JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        if (typeof enc !== 'string' || !enc) {\n            throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n        }\n        let encryptedKey;\n        if (this._cek && (alg === 'dir' || alg === 'ECDH-ES')) {\n            throw new TypeError(`setContentEncryptionKey cannot be called with JWE \"alg\" (Algorithm) Header ${alg}`);\n        }\n        let cek;\n        {\n            let parameters;\n            ({ cek, encryptedKey, parameters } = await (0, encrypt_key_management_js_1.default)(alg, enc, key, this._cek, this._keyManagementParameters));\n            if (parameters) {\n                if (options && private_symbols_js_1.unprotected in options) {\n                    if (!this._unprotectedHeader) {\n                        this.setUnprotectedHeader(parameters);\n                    }\n                    else {\n                        this._unprotectedHeader = { ...this._unprotectedHeader, ...parameters };\n                    }\n                }\n                else if (!this._protectedHeader) {\n                    this.setProtectedHeader(parameters);\n                }\n                else {\n                    this._protectedHeader = { ...this._protectedHeader, ...parameters };\n                }\n            }\n        }\n        let additionalData;\n        let protectedHeader;\n        let aadMember;\n        if (this._protectedHeader) {\n            protectedHeader = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(JSON.stringify(this._protectedHeader)));\n        }\n        else {\n            protectedHeader = buffer_utils_js_1.encoder.encode('');\n        }\n        if (this._aad) {\n            aadMember = (0, base64url_js_1.encode)(this._aad);\n            additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(aadMember));\n        }\n        else {\n            additionalData = protectedHeader;\n        }\n        const { ciphertext, tag, iv } = await (0, encrypt_js_1.default)(enc, this._plaintext, cek, this._iv, additionalData);\n        const jwe = {\n            ciphertext: (0, base64url_js_1.encode)(ciphertext),\n        };\n        if (iv) {\n            jwe.iv = (0, base64url_js_1.encode)(iv);\n        }\n        if (tag) {\n            jwe.tag = (0, base64url_js_1.encode)(tag);\n        }\n        if (encryptedKey) {\n            jwe.encrypted_key = (0, base64url_js_1.encode)(encryptedKey);\n        }\n        if (aadMember) {\n            jwe.aad = aadMember;\n        }\n        if (this._protectedHeader) {\n            jwe.protected = buffer_utils_js_1.decoder.decode(protectedHeader);\n        }\n        if (this._sharedUnprotectedHeader) {\n            jwe.unprotected = this._sharedUnprotectedHeader;\n        }\n        if (this._unprotectedHeader) {\n            jwe.header = this._unprotectedHeader;\n        }\n        return jwe;\n    }\n}\nexports.FlattenedEncrypt = FlattenedEncrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GeneralEncrypt = void 0;\nconst encrypt_js_1 = require(\"../flattened/encrypt.js\");\nconst private_symbols_js_1 = require(\"../../lib/private_symbols.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst cek_js_1 = require(\"../../lib/cek.js\");\nconst is_disjoint_js_1 = require(\"../../lib/is_disjoint.js\");\nconst encrypt_key_management_js_1 = require(\"../../lib/encrypt_key_management.js\");\nconst base64url_js_1 = require(\"../../runtime/base64url.js\");\nconst validate_crit_js_1 = require(\"../../lib/validate_crit.js\");\nclass IndividualRecipient {\n    parent;\n    unprotectedHeader;\n    key;\n    options;\n    constructor(enc, key, options) {\n        this.parent = enc;\n        this.key = key;\n        this.options = options;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    addRecipient(...args) {\n        return this.parent.addRecipient(...args);\n    }\n    encrypt(...args) {\n        return this.parent.encrypt(...args);\n    }\n    done() {\n        return this.parent;\n    }\n}\nclass GeneralEncrypt {\n    _plaintext;\n    _recipients = [];\n    _protectedHeader;\n    _unprotectedHeader;\n    _aad;\n    constructor(plaintext) {\n        this._plaintext = plaintext;\n    }\n    addRecipient(key, options) {\n        const recipient = new IndividualRecipient(this, key, { crit: options?.crit });\n        this._recipients.push(recipient);\n        return recipient;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this._aad = aad;\n        return this;\n    }\n    async encrypt() {\n        if (!this._recipients.length) {\n            throw new errors_js_1.JWEInvalid('at least one recipient must be added');\n        }\n        if (this._recipients.length === 1) {\n            const [recipient] = this._recipients;\n            const flattened = await new encrypt_js_1.FlattenedEncrypt(this._plaintext)\n                .setAdditionalAuthenticatedData(this._aad)\n                .setProtectedHeader(this._protectedHeader)\n                .setSharedUnprotectedHeader(this._unprotectedHeader)\n                .setUnprotectedHeader(recipient.unprotectedHeader)\n                .encrypt(recipient.key, { ...recipient.options });\n            const jwe = {\n                ciphertext: flattened.ciphertext,\n                iv: flattened.iv,\n                recipients: [{}],\n                tag: flattened.tag,\n            };\n            if (flattened.aad)\n                jwe.aad = flattened.aad;\n            if (flattened.protected)\n                jwe.protected = flattened.protected;\n            if (flattened.unprotected)\n                jwe.unprotected = flattened.unprotected;\n            if (flattened.encrypted_key)\n                jwe.recipients[0].encrypted_key = flattened.encrypted_key;\n            if (flattened.header)\n                jwe.recipients[0].header = flattened.header;\n            return jwe;\n        }\n        let enc;\n        for (let i = 0; i < this._recipients.length; i++) {\n            const recipient = this._recipients[i];\n            if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader, recipient.unprotectedHeader)) {\n                throw new errors_js_1.JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n            }\n            const joseHeader = {\n                ...this._protectedHeader,\n                ...this._unprotectedHeader,\n                ...recipient.unprotectedHeader,\n            };\n            const { alg } = joseHeader;\n            if (typeof alg !== 'string' || !alg) {\n                throw new errors_js_1.JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n            }\n            if (alg === 'dir' || alg === 'ECDH-ES') {\n                throw new errors_js_1.JWEInvalid('\"dir\" and \"ECDH-ES\" alg may only be used with a single recipient');\n            }\n            if (typeof joseHeader.enc !== 'string' || !joseHeader.enc) {\n                throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n            }\n            if (!enc) {\n                enc = joseHeader.enc;\n            }\n            else if (enc !== joseHeader.enc) {\n                throw new errors_js_1.JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter must be the same for all recipients');\n            }\n            (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), recipient.options.crit, this._protectedHeader, joseHeader);\n            if (joseHeader.zip !== undefined) {\n                throw new errors_js_1.JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n            }\n        }\n        const cek = (0, cek_js_1.default)(enc);\n        const jwe = {\n            ciphertext: '',\n            iv: '',\n            recipients: [],\n            tag: '',\n        };\n        for (let i = 0; i < this._recipients.length; i++) {\n            const recipient = this._recipients[i];\n            const target = {};\n            jwe.recipients.push(target);\n            const joseHeader = {\n                ...this._protectedHeader,\n                ...this._unprotectedHeader,\n                ...recipient.unprotectedHeader,\n            };\n            const p2c = joseHeader.alg.startsWith('PBES2') ? 2048 + i : undefined;\n            if (i === 0) {\n                const flattened = await new encrypt_js_1.FlattenedEncrypt(this._plaintext)\n                    .setAdditionalAuthenticatedData(this._aad)\n                    .setContentEncryptionKey(cek)\n                    .setProtectedHeader(this._protectedHeader)\n                    .setSharedUnprotectedHeader(this._unprotectedHeader)\n                    .setUnprotectedHeader(recipient.unprotectedHeader)\n                    .setKeyManagementParameters({ p2c })\n                    .encrypt(recipient.key, {\n                    ...recipient.options,\n                    [private_symbols_js_1.unprotected]: true,\n                });\n                jwe.ciphertext = flattened.ciphertext;\n                jwe.iv = flattened.iv;\n                jwe.tag = flattened.tag;\n                if (flattened.aad)\n                    jwe.aad = flattened.aad;\n                if (flattened.protected)\n                    jwe.protected = flattened.protected;\n                if (flattened.unprotected)\n                    jwe.unprotected = flattened.unprotected;\n                target.encrypted_key = flattened.encrypted_key;\n                if (flattened.header)\n                    target.header = flattened.header;\n                continue;\n            }\n            const { encryptedKey, parameters } = await (0, encrypt_key_management_js_1.default)(recipient.unprotectedHeader?.alg ||\n                this._protectedHeader?.alg ||\n                this._unprotectedHeader?.alg, enc, recipient.key, cek, { p2c });\n            target.encrypted_key = (0, base64url_js_1.encode)(encryptedKey);\n            if (recipient.unprotectedHeader || parameters)\n                target.header = { ...recipient.unprotectedHeader, ...parameters };\n        }\n        return jwe;\n    }\n}\nexports.GeneralEncrypt = GeneralEncrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = dsaDigest;\nconst errors_js_1 = require(\"../util/errors.js\");\nfunction dsaDigest(alg) {\n    switch (alg) {\n        case 'PS256':\n        case 'RS256':\n        case 'ES256':\n        case 'ES256K':\n            return 'sha256';\n        case 'PS384':\n        case 'RS384':\n        case 'ES384':\n            return 'sha384';\n        case 'PS512':\n        case 'RS512':\n        case 'ES512':\n            return 'sha512';\n        case 'Ed25519':\n        case 'EdDSA':\n            return undefined;\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = keyForCrypto;\nconst node_crypto_1 = require(\"node:crypto\");\nconst get_named_curve_js_1 = require(\"./get_named_curve.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst check_key_length_js_1 = require(\"./check_key_length.js\");\nconst ecCurveAlgMap = new Map([\n    ['ES256', 'P-256'],\n    ['ES256K', 'secp256k1'],\n    ['ES384', 'P-384'],\n    ['ES512', 'P-521'],\n]);\nfunction keyForCrypto(alg, key) {\n    let asymmetricKeyType;\n    let asymmetricKeyDetails;\n    let isJWK;\n    if (key instanceof node_crypto_1.KeyObject) {\n        asymmetricKeyType = key.asymmetricKeyType;\n        asymmetricKeyDetails = key.asymmetricKeyDetails;\n    }\n    else {\n        isJWK = true;\n        switch (key.kty) {\n            case 'RSA':\n                asymmetricKeyType = 'rsa';\n                break;\n            case 'EC':\n                asymmetricKeyType = 'ec';\n                break;\n            case 'OKP': {\n                if (key.crv === 'Ed25519') {\n                    asymmetricKeyType = 'ed25519';\n                    break;\n                }\n                if (key.crv === 'Ed448') {\n                    asymmetricKeyType = 'ed448';\n                    break;\n                }\n                throw new TypeError('Invalid key for this operation, its crv must be Ed25519 or Ed448');\n            }\n            default:\n                throw new TypeError('Invalid key for this operation, its kty must be RSA, OKP, or EC');\n        }\n    }\n    let options;\n    switch (alg) {\n        case 'Ed25519':\n            if (asymmetricKeyType !== 'ed25519') {\n                throw new TypeError(`Invalid key for this operation, its asymmetricKeyType must be ed25519`);\n            }\n            break;\n        case 'EdDSA':\n            if (!['ed25519', 'ed448'].includes(asymmetricKeyType)) {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448');\n            }\n            break;\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            if (asymmetricKeyType !== 'rsa') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n            }\n            (0, check_key_length_js_1.default)(key, alg);\n            break;\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            if (asymmetricKeyType === 'rsa-pss') {\n                const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = asymmetricKeyDetails;\n                const length = parseInt(alg.slice(-3), 10);\n                if (hashAlgorithm !== undefined &&\n                    (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm)) {\n                    throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${alg}`);\n                }\n                if (saltLength !== undefined && saltLength > length >> 3) {\n                    throw new TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${alg}`);\n                }\n            }\n            else if (asymmetricKeyType !== 'rsa') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss');\n            }\n            (0, check_key_length_js_1.default)(key, alg);\n            options = {\n                padding: node_crypto_1.constants.RSA_PKCS1_PSS_PADDING,\n                saltLength: node_crypto_1.constants.RSA_PSS_SALTLEN_DIGEST,\n            };\n            break;\n        case 'ES256':\n        case 'ES256K':\n        case 'ES384':\n        case 'ES512': {\n            if (asymmetricKeyType !== 'ec') {\n                throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ec');\n            }\n            const actual = (0, get_named_curve_js_1.default)(key);\n            const expected = ecCurveAlgMap.get(alg);\n            if (actual !== expected) {\n                throw new TypeError(`Invalid key curve for the algorithm, its curve must be ${expected}, got ${actual}`);\n            }\n            options = { dsaEncoding: 'ieee-p1363' };\n            break;\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n    if (isJWK) {\n        return { format: 'jwk', key, ...options };\n    }\n    return options ? { ...options, key } : key;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = hmacDigest;\nconst errors_js_1 = require(\"../util/errors.js\");\nfunction hmacDigest(alg) {\n    switch (alg) {\n        case 'HS256':\n            return 'sha256';\n        case 'HS384':\n            return 'sha384';\n        case 'HS512':\n            return 'sha512';\n        default:\n            throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getSignVerifyKey;\nconst node_crypto_1 = require(\"node:crypto\");\nconst webcrypto_js_1 = require(\"./webcrypto.js\");\nconst crypto_key_js_1 = require(\"../lib/crypto_key.js\");\nconst invalid_key_input_js_1 = require(\"../lib/invalid_key_input.js\");\nconst is_key_like_js_1 = require(\"./is_key_like.js\");\nconst jwk = require(\"../lib/is_jwk.js\");\nfunction getSignVerifyKey(alg, key, usage) {\n    if (key instanceof Uint8Array) {\n        if (!alg.startsWith('HS')) {\n            throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));\n        }\n        return (0, node_crypto_1.createSecretKey)(key);\n    }\n    if (key instanceof node_crypto_1.KeyObject) {\n        return key;\n    }\n    if ((0, webcrypto_js_1.isCryptoKey)(key)) {\n        (0, crypto_key_js_1.checkSigCryptoKey)(key, alg, usage);\n        return node_crypto_1.KeyObject.from(key);\n    }\n    if (jwk.isJWK(key)) {\n        if (alg.startsWith('HS')) {\n            return (0, node_crypto_1.createSecretKey)(Buffer.from(key.k, 'base64url'));\n        }\n        return key;\n    }\n    throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array', 'JSON Web Key'));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"node:crypto\");\nconst node_util_1 = require(\"node:util\");\nconst dsa_digest_js_1 = require(\"./dsa_digest.js\");\nconst hmac_digest_js_1 = require(\"./hmac_digest.js\");\nconst node_key_js_1 = require(\"./node_key.js\");\nconst get_sign_verify_key_js_1 = require(\"./get_sign_verify_key.js\");\nconst oneShotSign = (0, node_util_1.promisify)(crypto.sign);\nconst sign = async (alg, key, data) => {\n    const k = (0, get_sign_verify_key_js_1.default)(alg, key, 'sign');\n    if (alg.startsWith('HS')) {\n        const hmac = crypto.createHmac((0, hmac_digest_js_1.default)(alg), k);\n        hmac.update(data);\n        return hmac.digest();\n    }\n    return oneShotSign((0, dsa_digest_js_1.default)(alg), data, (0, node_key_js_1.default)(alg, k));\n};\nexports.default = sign;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto = require(\"node:crypto\");\nconst node_util_1 = require(\"node:util\");\nconst dsa_digest_js_1 = require(\"./dsa_digest.js\");\nconst node_key_js_1 = require(\"./node_key.js\");\nconst sign_js_1 = require(\"./sign.js\");\nconst get_sign_verify_key_js_1 = require(\"./get_sign_verify_key.js\");\nconst oneShotVerify = (0, node_util_1.promisify)(crypto.verify);\nconst verify = async (alg, key, signature, data) => {\n    const k = (0, get_sign_verify_key_js_1.default)(alg, key, 'verify');\n    if (alg.startsWith('HS')) {\n        const expected = await (0, sign_js_1.default)(alg, k, data);\n        const actual = signature;\n        try {\n            return crypto.timingSafeEqual(actual, expected);\n        }\n        catch {\n            return false;\n        }\n    }\n    const algorithm = (0, dsa_digest_js_1.default)(alg);\n    const keyInput = (0, node_key_js_1.default)(alg, k);\n    try {\n        return await oneShotVerify(algorithm, data, keyInput, signature);\n    }\n    catch {\n        return false;\n    }\n};\nexports.default = verify;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flattenedVerify = flattenedVerify;\nconst base64url_js_1 = require(\"../../runtime/base64url.js\");\nconst verify_js_1 = require(\"../../runtime/verify.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nconst is_disjoint_js_1 = require(\"../../lib/is_disjoint.js\");\nconst is_object_js_1 = require(\"../../lib/is_object.js\");\nconst check_key_type_js_1 = require(\"../../lib/check_key_type.js\");\nconst validate_crit_js_1 = require(\"../../lib/validate_crit.js\");\nconst validate_algorithms_js_1 = require(\"../../lib/validate_algorithms.js\");\nconst is_jwk_js_1 = require(\"../../lib/is_jwk.js\");\nconst import_js_1 = require(\"../../key/import.js\");\nasync function flattenedVerify(jws, key, options) {\n    if (!(0, is_object_js_1.default)(jws)) {\n        throw new errors_js_1.JWSInvalid('Flattened JWS must be an object');\n    }\n    if (jws.protected === undefined && jws.header === undefined) {\n        throw new errors_js_1.JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n    }\n    if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n        throw new errors_js_1.JWSInvalid('JWS Protected Header incorrect type');\n    }\n    if (jws.payload === undefined) {\n        throw new errors_js_1.JWSInvalid('JWS Payload missing');\n    }\n    if (typeof jws.signature !== 'string') {\n        throw new errors_js_1.JWSInvalid('JWS Signature missing or incorrect type');\n    }\n    if (jws.header !== undefined && !(0, is_object_js_1.default)(jws.header)) {\n        throw new errors_js_1.JWSInvalid('JWS Unprotected Header incorrect type');\n    }\n    let parsedProt = {};\n    if (jws.protected) {\n        try {\n            const protectedHeader = (0, base64url_js_1.decode)(jws.protected);\n            parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new errors_js_1.JWSInvalid('JWS Protected Header is invalid');\n        }\n    }\n    if (!(0, is_disjoint_js_1.default)(parsedProt, jws.header)) {\n        throw new errors_js_1.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jws.header,\n    };\n    const extensions = (0, validate_crit_js_1.default)(errors_js_1.JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n    let b64 = true;\n    if (extensions.has('b64')) {\n        b64 = parsedProt.b64;\n        if (typeof b64 !== 'boolean') {\n            throw new errors_js_1.JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n        }\n    }\n    const { alg } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new errors_js_1.JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n    }\n    const algorithms = options && (0, validate_algorithms_js_1.default)('algorithms', options.algorithms);\n    if (algorithms && !algorithms.has(alg)) {\n        throw new errors_js_1.JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (b64) {\n        if (typeof jws.payload !== 'string') {\n            throw new errors_js_1.JWSInvalid('JWS Payload must be a string');\n        }\n    }\n    else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n        throw new errors_js_1.JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jws);\n        resolvedKey = true;\n        (0, check_key_type_js_1.checkKeyTypeWithJwk)(alg, key, 'verify');\n        if ((0, is_jwk_js_1.isJWK)(key)) {\n            key = await (0, import_js_1.importJWK)(key, alg);\n        }\n    }\n    else {\n        (0, check_key_type_js_1.checkKeyTypeWithJwk)(alg, key, 'verify');\n    }\n    const data = (0, buffer_utils_js_1.concat)(buffer_utils_js_1.encoder.encode(jws.protected ?? ''), buffer_utils_js_1.encoder.encode('.'), typeof jws.payload === 'string' ? buffer_utils_js_1.encoder.encode(jws.payload) : jws.payload);\n    let signature;\n    try {\n        signature = (0, base64url_js_1.decode)(jws.signature);\n    }\n    catch {\n        throw new errors_js_1.JWSInvalid('Failed to base64url decode the signature');\n    }\n    const verified = await (0, verify_js_1.default)(alg, key, signature, data);\n    if (!verified) {\n        throw new errors_js_1.JWSSignatureVerificationFailed();\n    }\n    let payload;\n    if (b64) {\n        try {\n            payload = (0, base64url_js_1.decode)(jws.payload);\n        }\n        catch {\n            throw new errors_js_1.JWSInvalid('Failed to base64url decode the payload');\n        }\n    }\n    else if (typeof jws.payload === 'string') {\n        payload = buffer_utils_js_1.encoder.encode(jws.payload);\n    }\n    else {\n        payload = jws.payload;\n    }\n    const result = { payload };\n    if (jws.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jws.header !== undefined) {\n        result.unprotectedHeader = jws.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compactVerify = compactVerify;\nconst verify_js_1 = require(\"../flattened/verify.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nasync function compactVerify(jws, key, options) {\n    if (jws instanceof Uint8Array) {\n        jws = buffer_utils_js_1.decoder.decode(jws);\n    }\n    if (typeof jws !== 'string') {\n        throw new errors_js_1.JWSInvalid('Compact JWS must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n    if (length !== 3) {\n        throw new errors_js_1.JWSInvalid('Invalid Compact JWS');\n    }\n    const verified = await (0, verify_js_1.flattenedVerify)({ payload, protected: protectedHeader, signature }, key, options);\n    const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generalVerify = generalVerify;\nconst verify_js_1 = require(\"../flattened/verify.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst is_object_js_1 = require(\"../../lib/is_object.js\");\nasync function generalVerify(jws, key, options) {\n    if (!(0, is_object_js_1.default)(jws)) {\n        throw new errors_js_1.JWSInvalid('General JWS must be an object');\n    }\n    if (!Array.isArray(jws.signatures) || !jws.signatures.every(is_object_js_1.default)) {\n        throw new errors_js_1.JWSInvalid('JWS Signatures missing or incorrect type');\n    }\n    for (const signature of jws.signatures) {\n        try {\n            return await (0, verify_js_1.flattenedVerify)({\n                header: signature.header,\n                payload: jws.payload,\n                protected: signature.protected,\n                signature: signature.signature,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new errors_js_1.JWSSignatureVerificationFailed();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = (date) => Math.floor(date.getTime() / 1000);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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;\nexports.default = (str) => {\n    const matched = REGEX.exec(str);\n    if (!matched || (matched[4] && matched[1])) {\n        throw new TypeError('Invalid time period format');\n    }\n    const value = parseFloat(matched[2]);\n    const unit = matched[3].toLowerCase();\n    let numericDate;\n    switch (unit) {\n        case 'sec':\n        case 'secs':\n        case 'second':\n        case 'seconds':\n        case 's':\n            numericDate = Math.round(value);\n            break;\n        case 'minute':\n        case 'minutes':\n        case 'min':\n        case 'mins':\n        case 'm':\n            numericDate = Math.round(value * minute);\n            break;\n        case 'hour':\n        case 'hours':\n        case 'hr':\n        case 'hrs':\n        case 'h':\n            numericDate = Math.round(value * hour);\n            break;\n        case 'day':\n        case 'days':\n        case 'd':\n            numericDate = Math.round(value * day);\n            break;\n        case 'week':\n        case 'weeks':\n        case 'w':\n            numericDate = Math.round(value * week);\n            break;\n        default:\n            numericDate = Math.round(value * year);\n            break;\n    }\n    if (matched[1] === '-' || matched[4] === 'ago') {\n        return -numericDate;\n    }\n    return numericDate;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst buffer_utils_js_1 = require(\"./buffer_utils.js\");\nconst epoch_js_1 = require(\"./epoch.js\");\nconst secs_js_1 = require(\"./secs.js\");\nconst is_object_js_1 = require(\"./is_object.js\");\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n    if (typeof audPayload === 'string') {\n        return audOption.includes(audPayload);\n    }\n    if (Array.isArray(audPayload)) {\n        return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n    }\n    return false;\n};\nexports.default = (protectedHeader, encodedPayload, options = {}) => {\n    let payload;\n    try {\n        payload = JSON.parse(buffer_utils_js_1.decoder.decode(encodedPayload));\n    }\n    catch {\n    }\n    if (!(0, is_object_js_1.default)(payload)) {\n        throw new errors_js_1.JWTInvalid('JWT Claims Set must be a top-level JSON object');\n    }\n    const { typ } = options;\n    if (typ &&\n        (typeof protectedHeader.typ !== 'string' ||\n            normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n    }\n    const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n    const presenceCheck = [...requiredClaims];\n    if (maxTokenAge !== undefined)\n        presenceCheck.push('iat');\n    if (audience !== undefined)\n        presenceCheck.push('aud');\n    if (subject !== undefined)\n        presenceCheck.push('sub');\n    if (issuer !== undefined)\n        presenceCheck.push('iss');\n    for (const claim of new Set(presenceCheck.reverse())) {\n        if (!(claim in payload)) {\n            throw new errors_js_1.JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n        }\n    }\n    if (issuer &&\n        !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n    }\n    if (subject && payload.sub !== subject) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n    }\n    if (audience &&\n        !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n        throw new errors_js_1.JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n    }\n    let tolerance;\n    switch (typeof options.clockTolerance) {\n        case 'string':\n            tolerance = (0, secs_js_1.default)(options.clockTolerance);\n            break;\n        case 'number':\n            tolerance = options.clockTolerance;\n            break;\n        case 'undefined':\n            tolerance = 0;\n            break;\n        default:\n            throw new TypeError('Invalid clockTolerance option type');\n    }\n    const { currentDate } = options;\n    const now = (0, epoch_js_1.default)(currentDate || new Date());\n    if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n        throw new errors_js_1.JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n    }\n    if (payload.nbf !== undefined) {\n        if (typeof payload.nbf !== 'number') {\n            throw new errors_js_1.JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n        }\n        if (payload.nbf > now + tolerance) {\n            throw new errors_js_1.JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n        }\n    }\n    if (payload.exp !== undefined) {\n        if (typeof payload.exp !== 'number') {\n            throw new errors_js_1.JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n        }\n        if (payload.exp <= now - tolerance) {\n            throw new errors_js_1.JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n        }\n    }\n    if (maxTokenAge) {\n        const age = now - payload.iat;\n        const max = typeof maxTokenAge === 'number' ? maxTokenAge : (0, secs_js_1.default)(maxTokenAge);\n        if (age - tolerance > max) {\n            throw new errors_js_1.JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n        }\n        if (age < 0 - tolerance) {\n            throw new errors_js_1.JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n        }\n    }\n    return payload;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwtVerify = jwtVerify;\nconst verify_js_1 = require(\"../jws/compact/verify.js\");\nconst jwt_claims_set_js_1 = require(\"../lib/jwt_claims_set.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nasync function jwtVerify(jwt, key, options) {\n    const verified = await (0, verify_js_1.compactVerify)(jwt, key, options);\n    if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n        throw new errors_js_1.JWTInvalid('JWTs MUST NOT use unencoded payload');\n    }\n    const payload = (0, jwt_claims_set_js_1.default)(verified.protectedHeader, verified.payload, options);\n    const result = { payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jwtDecrypt = jwtDecrypt;\nconst decrypt_js_1 = require(\"../jwe/compact/decrypt.js\");\nconst jwt_claims_set_js_1 = require(\"../lib/jwt_claims_set.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nasync function jwtDecrypt(jwt, key, options) {\n    const decrypted = await (0, decrypt_js_1.compactDecrypt)(jwt, key, options);\n    const payload = (0, jwt_claims_set_js_1.default)(decrypted.protectedHeader, decrypted.plaintext, options);\n    const { protectedHeader } = decrypted;\n    if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"iss\" claim header parameter mismatch', payload, 'iss', 'mismatch');\n    }\n    if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"sub\" claim header parameter mismatch', payload, 'sub', 'mismatch');\n    }\n    if (protectedHeader.aud !== undefined &&\n        JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {\n        throw new errors_js_1.JWTClaimValidationFailed('replicated \"aud\" claim header parameter mismatch', payload, 'aud', 'mismatch');\n    }\n    const result = { payload, protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompactEncrypt = void 0;\nconst encrypt_js_1 = require(\"../flattened/encrypt.js\");\nclass CompactEncrypt {\n    _flattened;\n    constructor(plaintext) {\n        this._flattened = new encrypt_js_1.FlattenedEncrypt(plaintext);\n    }\n    setContentEncryptionKey(cek) {\n        this._flattened.setContentEncryptionKey(cek);\n        return this;\n    }\n    setInitializationVector(iv) {\n        this._flattened.setInitializationVector(iv);\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        this._flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        this._flattened.setKeyManagementParameters(parameters);\n        return this;\n    }\n    async encrypt(key, options) {\n        const jwe = await this._flattened.encrypt(key, options);\n        return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');\n    }\n}\nexports.CompactEncrypt = CompactEncrypt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlattenedSign = void 0;\nconst base64url_js_1 = require(\"../../runtime/base64url.js\");\nconst sign_js_1 = require(\"../../runtime/sign.js\");\nconst is_disjoint_js_1 = require(\"../../lib/is_disjoint.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../../lib/buffer_utils.js\");\nconst check_key_type_js_1 = require(\"../../lib/check_key_type.js\");\nconst validate_crit_js_1 = require(\"../../lib/validate_crit.js\");\nclass FlattenedSign {\n    _payload;\n    _protectedHeader;\n    _unprotectedHeader;\n    constructor(payload) {\n        if (!(payload instanceof Uint8Array)) {\n            throw new TypeError('payload must be an instance of Uint8Array');\n        }\n        this._payload = payload;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this._unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this._unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        if (!this._protectedHeader && !this._unprotectedHeader) {\n            throw new errors_js_1.JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n        }\n        if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader)) {\n            throw new errors_js_1.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this._protectedHeader,\n            ...this._unprotectedHeader,\n        };\n        const extensions = (0, validate_crit_js_1.default)(errors_js_1.JWSInvalid, new Map([['b64', true]]), options?.crit, this._protectedHeader, joseHeader);\n        let b64 = true;\n        if (extensions.has('b64')) {\n            b64 = this._protectedHeader.b64;\n            if (typeof b64 !== 'boolean') {\n                throw new errors_js_1.JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n            }\n        }\n        const { alg } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new errors_js_1.JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        (0, check_key_type_js_1.checkKeyTypeWithJwk)(alg, key, 'sign');\n        let payload = this._payload;\n        if (b64) {\n            payload = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(payload));\n        }\n        let protectedHeader;\n        if (this._protectedHeader) {\n            protectedHeader = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(JSON.stringify(this._protectedHeader)));\n        }\n        else {\n            protectedHeader = buffer_utils_js_1.encoder.encode('');\n        }\n        const data = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), payload);\n        const signature = await (0, sign_js_1.default)(alg, key, data);\n        const jws = {\n            signature: (0, base64url_js_1.encode)(signature),\n            payload: '',\n        };\n        if (b64) {\n            jws.payload = buffer_utils_js_1.decoder.decode(payload);\n        }\n        if (this._unprotectedHeader) {\n            jws.header = this._unprotectedHeader;\n        }\n        if (this._protectedHeader) {\n            jws.protected = buffer_utils_js_1.decoder.decode(protectedHeader);\n        }\n        return jws;\n    }\n}\nexports.FlattenedSign = FlattenedSign;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompactSign = void 0;\nconst sign_js_1 = require(\"../flattened/sign.js\");\nclass CompactSign {\n    _flattened;\n    constructor(payload) {\n        this._flattened = new sign_js_1.FlattenedSign(payload);\n    }\n    setProtectedHeader(protectedHeader) {\n        this._flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    async sign(key, options) {\n        const jws = await this._flattened.sign(key, options);\n        if (jws.payload === undefined) {\n            throw new TypeError('use the flattened module for creating JWS with b64: false');\n        }\n        return `${jws.protected}.${jws.payload}.${jws.signature}`;\n    }\n}\nexports.CompactSign = CompactSign;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GeneralSign = void 0;\nconst sign_js_1 = require(\"../flattened/sign.js\");\nconst errors_js_1 = require(\"../../util/errors.js\");\nclass IndividualSignature {\n    parent;\n    protectedHeader;\n    unprotectedHeader;\n    options;\n    key;\n    constructor(sig, key, options) {\n        this.parent = sig;\n        this.key = key;\n        this.options = options;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this.protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this.protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    addSignature(...args) {\n        return this.parent.addSignature(...args);\n    }\n    sign(...args) {\n        return this.parent.sign(...args);\n    }\n    done() {\n        return this.parent;\n    }\n}\nclass GeneralSign {\n    _payload;\n    _signatures = [];\n    constructor(payload) {\n        this._payload = payload;\n    }\n    addSignature(key, options) {\n        const signature = new IndividualSignature(this, key, options);\n        this._signatures.push(signature);\n        return signature;\n    }\n    async sign() {\n        if (!this._signatures.length) {\n            throw new errors_js_1.JWSInvalid('at least one signature must be added');\n        }\n        const jws = {\n            signatures: [],\n            payload: '',\n        };\n        for (let i = 0; i < this._signatures.length; i++) {\n            const signature = this._signatures[i];\n            const flattened = new sign_js_1.FlattenedSign(this._payload);\n            flattened.setProtectedHeader(signature.protectedHeader);\n            flattened.setUnprotectedHeader(signature.unprotectedHeader);\n            const { payload, ...rest } = await flattened.sign(signature.key, signature.options);\n            if (i === 0) {\n                jws.payload = payload;\n            }\n            else if (jws.payload !== payload) {\n                throw new errors_js_1.JWSInvalid('inconsistent use of JWS Unencoded Payload (RFC7797)');\n            }\n            jws.signatures.push(rest);\n        }\n        return jws;\n    }\n}\nexports.GeneralSign = GeneralSign;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProduceJWT = void 0;\nconst epoch_js_1 = require(\"../lib/epoch.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nconst secs_js_1 = require(\"../lib/secs.js\");\nfunction validateInput(label, input) {\n    if (!Number.isFinite(input)) {\n        throw new TypeError(`Invalid ${label} input`);\n    }\n    return input;\n}\nclass ProduceJWT {\n    _payload;\n    constructor(payload = {}) {\n        if (!(0, is_object_js_1.default)(payload)) {\n            throw new TypeError('JWT Claims Set MUST be an object');\n        }\n        this._payload = payload;\n    }\n    setIssuer(issuer) {\n        this._payload = { ...this._payload, iss: issuer };\n        return this;\n    }\n    setSubject(subject) {\n        this._payload = { ...this._payload, sub: subject };\n        return this;\n    }\n    setAudience(audience) {\n        this._payload = { ...this._payload, aud: audience };\n        return this;\n    }\n    setJti(jwtId) {\n        this._payload = { ...this._payload, jti: jwtId };\n        return this;\n    }\n    setNotBefore(input) {\n        if (typeof input === 'number') {\n            this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n        }\n        else if (input instanceof Date) {\n            this._payload = { ...this._payload, nbf: validateInput('setNotBefore', (0, epoch_js_1.default)(input)) };\n        }\n        else {\n            this._payload = { ...this._payload, nbf: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };\n        }\n        return this;\n    }\n    setExpirationTime(input) {\n        if (typeof input === 'number') {\n            this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n        }\n        else if (input instanceof Date) {\n            this._payload = { ...this._payload, exp: validateInput('setExpirationTime', (0, epoch_js_1.default)(input)) };\n        }\n        else {\n            this._payload = { ...this._payload, exp: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };\n        }\n        return this;\n    }\n    setIssuedAt(input) {\n        if (typeof input === 'undefined') {\n            this._payload = { ...this._payload, iat: (0, epoch_js_1.default)(new Date()) };\n        }\n        else if (input instanceof Date) {\n            this._payload = { ...this._payload, iat: validateInput('setIssuedAt', (0, epoch_js_1.default)(input)) };\n        }\n        else if (typeof input === 'string') {\n            this._payload = {\n                ...this._payload,\n                iat: validateInput('setIssuedAt', (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input)),\n            };\n        }\n        else {\n            this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n        }\n        return this;\n    }\n}\nexports.ProduceJWT = ProduceJWT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignJWT = void 0;\nconst sign_js_1 = require(\"../jws/compact/sign.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst produce_js_1 = require(\"./produce.js\");\nclass SignJWT extends produce_js_1.ProduceJWT {\n    _protectedHeader;\n    setProtectedHeader(protectedHeader) {\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        const sig = new sign_js_1.CompactSign(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));\n        sig.setProtectedHeader(this._protectedHeader);\n        if (Array.isArray(this._protectedHeader?.crit) &&\n            this._protectedHeader.crit.includes('b64') &&\n            this._protectedHeader.b64 === false) {\n            throw new errors_js_1.JWTInvalid('JWTs MUST NOT use unencoded payload');\n        }\n        return sig.sign(key, options);\n    }\n}\nexports.SignJWT = SignJWT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EncryptJWT = void 0;\nconst encrypt_js_1 = require(\"../jwe/compact/encrypt.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst produce_js_1 = require(\"./produce.js\");\nclass EncryptJWT extends produce_js_1.ProduceJWT {\n    _cek;\n    _iv;\n    _keyManagementParameters;\n    _protectedHeader;\n    _replicateIssuerAsHeader;\n    _replicateSubjectAsHeader;\n    _replicateAudienceAsHeader;\n    setProtectedHeader(protectedHeader) {\n        if (this._protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this._protectedHeader = protectedHeader;\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this._keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this._keyManagementParameters = parameters;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this._cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this._cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this._iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this._iv = iv;\n        return this;\n    }\n    replicateIssuerAsHeader() {\n        this._replicateIssuerAsHeader = true;\n        return this;\n    }\n    replicateSubjectAsHeader() {\n        this._replicateSubjectAsHeader = true;\n        return this;\n    }\n    replicateAudienceAsHeader() {\n        this._replicateAudienceAsHeader = true;\n        return this;\n    }\n    async encrypt(key, options) {\n        const enc = new encrypt_js_1.CompactEncrypt(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));\n        if (this._replicateIssuerAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };\n        }\n        if (this._replicateSubjectAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };\n        }\n        if (this._replicateAudienceAsHeader) {\n            this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };\n        }\n        enc.setProtectedHeader(this._protectedHeader);\n        if (this._iv) {\n            enc.setInitializationVector(this._iv);\n        }\n        if (this._cek) {\n            enc.setContentEncryptionKey(this._cek);\n        }\n        if (this._keyManagementParameters) {\n            enc.setKeyManagementParameters(this._keyManagementParameters);\n        }\n        return enc.encrypt(key, options);\n    }\n}\nexports.EncryptJWT = EncryptJWT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateJwkThumbprint = calculateJwkThumbprint;\nexports.calculateJwkThumbprintUri = calculateJwkThumbprintUri;\nconst digest_js_1 = require(\"../runtime/digest.js\");\nconst base64url_js_1 = require(\"../runtime/base64url.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nconst check = (value, description) => {\n    if (typeof value !== 'string' || !value) {\n        throw new errors_js_1.JWKInvalid(`${description} missing or invalid`);\n    }\n};\nasync function calculateJwkThumbprint(jwk, digestAlgorithm) {\n    if (!(0, is_object_js_1.default)(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    digestAlgorithm ??= 'sha256';\n    if (digestAlgorithm !== 'sha256' &&\n        digestAlgorithm !== 'sha384' &&\n        digestAlgorithm !== 'sha512') {\n        throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n    }\n    let components;\n    switch (jwk.kty) {\n        case 'EC':\n            check(jwk.crv, '\"crv\" (Curve) Parameter');\n            check(jwk.x, '\"x\" (X Coordinate) Parameter');\n            check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n            break;\n        case 'OKP':\n            check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n            check(jwk.x, '\"x\" (Public Key) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n            break;\n        case 'RSA':\n            check(jwk.e, '\"e\" (Exponent) Parameter');\n            check(jwk.n, '\"n\" (Modulus) Parameter');\n            components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n            break;\n        case 'oct':\n            check(jwk.k, '\"k\" (Key Value) Parameter');\n            components = { k: jwk.k, kty: jwk.kty };\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n    }\n    const data = buffer_utils_js_1.encoder.encode(JSON.stringify(components));\n    return (0, base64url_js_1.encode)(await (0, digest_js_1.default)(digestAlgorithm, data));\n}\nasync function calculateJwkThumbprintUri(jwk, digestAlgorithm) {\n    digestAlgorithm ??= 'sha256';\n    const thumbprint = await calculateJwkThumbprint(jwk, digestAlgorithm);\n    return `urn:ietf:params:oauth:jwk-thumbprint:sha-${digestAlgorithm.slice(-3)}:${thumbprint}`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmbeddedJWK = EmbeddedJWK;\nconst import_js_1 = require(\"../key/import.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nasync function EmbeddedJWK(protectedHeader, token) {\n    const joseHeader = {\n        ...protectedHeader,\n        ...token?.header,\n    };\n    if (!(0, is_object_js_1.default)(joseHeader.jwk)) {\n        throw new errors_js_1.JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a JSON object');\n    }\n    const key = await (0, import_js_1.importJWK)({ ...joseHeader.jwk, ext: true }, joseHeader.alg);\n    if (key instanceof Uint8Array || key.type !== 'public') {\n        throw new errors_js_1.JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a public key');\n    }\n    return key;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLocalJWKSet = createLocalJWKSet;\nconst import_js_1 = require(\"../key/import.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nfunction getKtyFromAlg(alg) {\n    switch (typeof alg === 'string' && alg.slice(0, 2)) {\n        case 'RS':\n        case 'PS':\n            return 'RSA';\n        case 'ES':\n            return 'EC';\n        case 'Ed':\n            return 'OKP';\n        default:\n            throw new errors_js_1.JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n    }\n}\nfunction isJWKSLike(jwks) {\n    return (jwks &&\n        typeof jwks === 'object' &&\n        Array.isArray(jwks.keys) &&\n        jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n    return (0, is_object_js_1.default)(key);\n}\nfunction clone(obj) {\n    if (typeof structuredClone === 'function') {\n        return structuredClone(obj);\n    }\n    return JSON.parse(JSON.stringify(obj));\n}\nclass LocalJWKSet {\n    _jwks;\n    _cached = new WeakMap();\n    constructor(jwks) {\n        if (!isJWKSLike(jwks)) {\n            throw new errors_js_1.JWKSInvalid('JSON Web Key Set malformed');\n        }\n        this._jwks = clone(jwks);\n    }\n    async getKey(protectedHeader, token) {\n        const { alg, kid } = { ...protectedHeader, ...token?.header };\n        const kty = getKtyFromAlg(alg);\n        const candidates = this._jwks.keys.filter((jwk) => {\n            let candidate = kty === jwk.kty;\n            if (candidate && typeof kid === 'string') {\n                candidate = kid === jwk.kid;\n            }\n            if (candidate && typeof jwk.alg === 'string') {\n                candidate = alg === jwk.alg;\n            }\n            if (candidate && typeof jwk.use === 'string') {\n                candidate = jwk.use === 'sig';\n            }\n            if (candidate && Array.isArray(jwk.key_ops)) {\n                candidate = jwk.key_ops.includes('verify');\n            }\n            if (candidate) {\n                switch (alg) {\n                    case 'ES256':\n                        candidate = jwk.crv === 'P-256';\n                        break;\n                    case 'ES256K':\n                        candidate = jwk.crv === 'secp256k1';\n                        break;\n                    case 'ES384':\n                        candidate = jwk.crv === 'P-384';\n                        break;\n                    case 'ES512':\n                        candidate = jwk.crv === 'P-521';\n                        break;\n                    case 'Ed25519':\n                        candidate = jwk.crv === 'Ed25519';\n                        break;\n                    case 'EdDSA':\n                        candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448';\n                        break;\n                }\n            }\n            return candidate;\n        });\n        const { 0: jwk, length } = candidates;\n        if (length === 0) {\n            throw new errors_js_1.JWKSNoMatchingKey();\n        }\n        if (length !== 1) {\n            const error = new errors_js_1.JWKSMultipleMatchingKeys();\n            const { _cached } = this;\n            error[Symbol.asyncIterator] = async function* () {\n                for (const jwk of candidates) {\n                    try {\n                        yield await importWithAlgCache(_cached, jwk, alg);\n                    }\n                    catch { }\n                }\n            };\n            throw error;\n        }\n        return importWithAlgCache(this._cached, jwk, alg);\n    }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n    const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n    if (cached[alg] === undefined) {\n        const key = await (0, import_js_1.importJWK)({ ...jwk, ext: true }, alg);\n        if (key instanceof Uint8Array || key.type !== 'public') {\n            throw new errors_js_1.JWKSInvalid('JSON Web Key Set members must be public keys');\n        }\n        cached[alg] = key;\n    }\n    return cached[alg];\n}\nfunction createLocalJWKSet(jwks) {\n    const set = new LocalJWKSet(jwks);\n    const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n    Object.defineProperties(localJWKSet, {\n        jwks: {\n            value: () => clone(set._jwks),\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        },\n    });\n    return localJWKSet;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst http = require(\"node:http\");\nconst https = require(\"node:https\");\nconst node_events_1 = require(\"node:events\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst fetchJwks = async (url, timeout, options) => {\n    let get;\n    switch (url.protocol) {\n        case 'https:':\n            get = https.get;\n            break;\n        case 'http:':\n            get = http.get;\n            break;\n        default:\n            throw new TypeError('Unsupported URL protocol.');\n    }\n    const { agent, headers } = options;\n    const req = get(url.href, {\n        agent,\n        timeout,\n        headers,\n    });\n    const [response] = (await Promise.race([(0, node_events_1.once)(req, 'response'), (0, node_events_1.once)(req, 'timeout')]));\n    if (!response) {\n        req.destroy();\n        throw new errors_js_1.JWKSTimeout();\n    }\n    if (response.statusCode !== 200) {\n        throw new errors_js_1.JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n    }\n    const parts = [];\n    for await (const part of response) {\n        parts.push(part);\n    }\n    try {\n        return JSON.parse(buffer_utils_js_1.decoder.decode((0, buffer_utils_js_1.concat)(...parts)));\n    }\n    catch {\n        throw new errors_js_1.JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n    }\n};\nexports.default = fetchJwks;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.experimental_jwksCache = exports.jwksCache = void 0;\nexports.createRemoteJWKSet = createRemoteJWKSet;\nconst fetch_jwks_js_1 = require(\"../runtime/fetch_jwks.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst local_js_1 = require(\"./local.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nfunction isCloudflareWorkers() {\n    return (typeof WebSocketPair !== 'undefined' ||\n        (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n        (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n    const NAME = 'jose';\n    const VERSION = 'v5.10.0';\n    USER_AGENT = `${NAME}/${VERSION}`;\n}\nexports.jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n    if (typeof input !== 'object' || input === null) {\n        return false;\n    }\n    if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n        return false;\n    }\n    if (!('jwks' in input) ||\n        !(0, is_object_js_1.default)(input.jwks) ||\n        !Array.isArray(input.jwks.keys) ||\n        !Array.prototype.every.call(input.jwks.keys, is_object_js_1.default)) {\n        return false;\n    }\n    return true;\n}\nclass RemoteJWKSet {\n    _url;\n    _timeoutDuration;\n    _cooldownDuration;\n    _cacheMaxAge;\n    _jwksTimestamp;\n    _pendingFetch;\n    _options;\n    _local;\n    _cache;\n    constructor(url, options) {\n        if (!(url instanceof URL)) {\n            throw new TypeError('url must be an instance of URL');\n        }\n        this._url = new URL(url.href);\n        this._options = { agent: options?.agent, headers: options?.headers };\n        this._timeoutDuration =\n            typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n        this._cooldownDuration =\n            typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n        this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n        if (options?.[exports.jwksCache] !== undefined) {\n            this._cache = options?.[exports.jwksCache];\n            if (isFreshJwksCache(options?.[exports.jwksCache], this._cacheMaxAge)) {\n                this._jwksTimestamp = this._cache.uat;\n                this._local = (0, local_js_1.createLocalJWKSet)(this._cache.jwks);\n            }\n        }\n    }\n    coolingDown() {\n        return typeof this._jwksTimestamp === 'number'\n            ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n            : false;\n    }\n    fresh() {\n        return typeof this._jwksTimestamp === 'number'\n            ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n            : false;\n    }\n    async getKey(protectedHeader, token) {\n        if (!this._local || !this.fresh()) {\n            await this.reload();\n        }\n        try {\n            return await this._local(protectedHeader, token);\n        }\n        catch (err) {\n            if (err instanceof errors_js_1.JWKSNoMatchingKey) {\n                if (this.coolingDown() === false) {\n                    await this.reload();\n                    return this._local(protectedHeader, token);\n                }\n            }\n            throw err;\n        }\n    }\n    async reload() {\n        if (this._pendingFetch && isCloudflareWorkers()) {\n            this._pendingFetch = undefined;\n        }\n        const headers = new Headers(this._options.headers);\n        if (USER_AGENT && !headers.has('User-Agent')) {\n            headers.set('User-Agent', USER_AGENT);\n            this._options.headers = Object.fromEntries(headers.entries());\n        }\n        this._pendingFetch ||= (0, fetch_jwks_js_1.default)(this._url, this._timeoutDuration, this._options)\n            .then((json) => {\n            this._local = (0, local_js_1.createLocalJWKSet)(json);\n            if (this._cache) {\n                this._cache.uat = Date.now();\n                this._cache.jwks = json;\n            }\n            this._jwksTimestamp = Date.now();\n            this._pendingFetch = undefined;\n        })\n            .catch((err) => {\n            this._pendingFetch = undefined;\n            throw err;\n        });\n        await this._pendingFetch;\n    }\n}\nfunction createRemoteJWKSet(url, options) {\n    const set = new RemoteJWKSet(url, options);\n    const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n    Object.defineProperties(remoteJWKSet, {\n        coolingDown: {\n            get: () => set.coolingDown(),\n            enumerable: true,\n            configurable: false,\n        },\n        fresh: {\n            get: () => set.fresh(),\n            enumerable: true,\n            configurable: false,\n        },\n        reload: {\n            value: () => set.reload(),\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        },\n        reloading: {\n            get: () => !!set._pendingFetch,\n            enumerable: true,\n            configurable: false,\n        },\n        jwks: {\n            value: () => set._local?.jwks(),\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        },\n    });\n    return remoteJWKSet;\n}\nexports.experimental_jwksCache = exports.jwksCache;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsecuredJWT = void 0;\nconst base64url = require(\"../runtime/base64url.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst jwt_claims_set_js_1 = require(\"../lib/jwt_claims_set.js\");\nconst produce_js_1 = require(\"./produce.js\");\nclass UnsecuredJWT extends produce_js_1.ProduceJWT {\n    encode() {\n        const header = base64url.encode(JSON.stringify({ alg: 'none' }));\n        const payload = base64url.encode(JSON.stringify(this._payload));\n        return `${header}.${payload}.`;\n    }\n    static decode(jwt, options) {\n        if (typeof jwt !== 'string') {\n            throw new errors_js_1.JWTInvalid('Unsecured JWT must be a string');\n        }\n        const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');\n        if (length !== 3 || signature !== '') {\n            throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');\n        }\n        let header;\n        try {\n            header = JSON.parse(buffer_utils_js_1.decoder.decode(base64url.decode(encodedHeader)));\n            if (header.alg !== 'none')\n                throw new Error();\n        }\n        catch {\n            throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');\n        }\n        const payload = (0, jwt_claims_set_js_1.default)(header, base64url.decode(encodedPayload), options);\n        return { payload, header };\n    }\n}\nexports.UnsecuredJWT = UnsecuredJWT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\nconst base64url = require(\"../runtime/base64url.js\");\nexports.encode = base64url.encode;\nexports.decode = base64url.decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeProtectedHeader = decodeProtectedHeader;\nconst base64url_js_1 = require(\"./base64url.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nfunction decodeProtectedHeader(token) {\n    let protectedB64u;\n    if (typeof token === 'string') {\n        const parts = token.split('.');\n        if (parts.length === 3 || parts.length === 5) {\n            ;\n            [protectedB64u] = parts;\n        }\n    }\n    else if (typeof token === 'object' && token) {\n        if ('protected' in token) {\n            protectedB64u = token.protected;\n        }\n        else {\n            throw new TypeError('Token does not contain a Protected Header');\n        }\n    }\n    try {\n        if (typeof protectedB64u !== 'string' || !protectedB64u) {\n            throw new Error();\n        }\n        const result = JSON.parse(buffer_utils_js_1.decoder.decode((0, base64url_js_1.decode)(protectedB64u)));\n        if (!(0, is_object_js_1.default)(result)) {\n            throw new Error();\n        }\n        return result;\n    }\n    catch {\n        throw new TypeError('Invalid Token or Protected Header formatting');\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeJwt = decodeJwt;\nconst base64url_js_1 = require(\"./base64url.js\");\nconst buffer_utils_js_1 = require(\"../lib/buffer_utils.js\");\nconst is_object_js_1 = require(\"../lib/is_object.js\");\nconst errors_js_1 = require(\"./errors.js\");\nfunction decodeJwt(jwt) {\n    if (typeof jwt !== 'string')\n        throw new errors_js_1.JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n    const { 1: payload, length } = jwt.split('.');\n    if (length === 5)\n        throw new errors_js_1.JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n    if (length !== 3)\n        throw new errors_js_1.JWTInvalid('Invalid JWT');\n    if (!payload)\n        throw new errors_js_1.JWTInvalid('JWTs must contain a payload');\n    let decoded;\n    try {\n        decoded = (0, base64url_js_1.decode)(payload);\n    }\n    catch {\n        throw new errors_js_1.JWTInvalid('Failed to base64url decode the payload');\n    }\n    let result;\n    try {\n        result = JSON.parse(buffer_utils_js_1.decoder.decode(decoded));\n    }\n    catch {\n        throw new errors_js_1.JWTInvalid('Failed to parse the decoded payload as JSON');\n    }\n    if (!(0, is_object_js_1.default)(result))\n        throw new errors_js_1.JWTInvalid('Invalid JWT Claims Set');\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateSecret = generateSecret;\nexports.generateKeyPair = generateKeyPair;\nconst node_crypto_1 = require(\"node:crypto\");\nconst node_util_1 = require(\"node:util\");\nconst random_js_1 = require(\"./random.js\");\nconst errors_js_1 = require(\"../util/errors.js\");\nconst generate = (0, node_util_1.promisify)(node_crypto_1.generateKeyPair);\nasync function generateSecret(alg, options) {\n    let length;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            length = parseInt(alg.slice(-3), 10);\n            break;\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW':\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW':\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            length = parseInt(alg.slice(1, 4), 10);\n            break;\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n    return (0, node_crypto_1.createSecretKey)((0, random_js_1.default)(new Uint8Array(length >> 3)));\n}\nasync function generateKeyPair(alg, options) {\n    switch (alg) {\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n        case 'RSA1_5': {\n            const modulusLength = options?.modulusLength ?? 2048;\n            if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n                throw new errors_js_1.JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n            }\n            const keypair = await generate('rsa', {\n                modulusLength,\n                publicExponent: 0x10001,\n            });\n            return keypair;\n        }\n        case 'ES256':\n            return generate('ec', { namedCurve: 'P-256' });\n        case 'ES256K':\n            return generate('ec', { namedCurve: 'secp256k1' });\n        case 'ES384':\n            return generate('ec', { namedCurve: 'P-384' });\n        case 'ES512':\n            return generate('ec', { namedCurve: 'P-521' });\n        case 'Ed25519':\n            return generate('ed25519');\n        case 'EdDSA': {\n            switch (options?.crv) {\n                case undefined:\n                case 'Ed25519':\n                    return generate('ed25519');\n                case 'Ed448':\n                    return generate('ed448');\n                default:\n                    throw new errors_js_1.JOSENotSupported('Invalid or unsupported crv option provided, supported values are Ed25519 and Ed448');\n            }\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            const crv = options?.crv ?? 'P-256';\n            switch (crv) {\n                case undefined:\n                case 'P-256':\n                case 'P-384':\n                case 'P-521':\n                    return generate('ec', { namedCurve: crv });\n                case 'X25519':\n                    return generate('x25519');\n                case 'X448':\n                    return generate('x448');\n                default:\n                    throw new errors_js_1.JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n            }\n        }\n        default:\n            throw new errors_js_1.JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateKeyPair = generateKeyPair;\nconst generate_js_1 = require(\"../runtime/generate.js\");\nasync function generateKeyPair(alg, options) {\n    return (0, generate_js_1.generateKeyPair)(alg, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateSecret = generateSecret;\nconst generate_js_1 = require(\"../runtime/generate.js\");\nasync function generateSecret(alg, options) {\n    return (0, generate_js_1.generateSecret)(alg, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'node:crypto';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst runtime_js_1 = require(\"../runtime/runtime.js\");\nexports.default = runtime_js_1.default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cryptoRuntime = exports.base64url = exports.generateSecret = exports.generateKeyPair = exports.errors = exports.decodeJwt = exports.decodeProtectedHeader = exports.importJWK = exports.importX509 = exports.importPKCS8 = exports.importSPKI = exports.exportJWK = exports.exportSPKI = exports.exportPKCS8 = exports.UnsecuredJWT = exports.experimental_jwksCache = exports.jwksCache = exports.createRemoteJWKSet = exports.createLocalJWKSet = exports.EmbeddedJWK = exports.calculateJwkThumbprintUri = exports.calculateJwkThumbprint = exports.EncryptJWT = exports.SignJWT = exports.GeneralSign = exports.FlattenedSign = exports.CompactSign = exports.FlattenedEncrypt = exports.CompactEncrypt = exports.jwtDecrypt = exports.jwtVerify = exports.generalVerify = exports.flattenedVerify = exports.compactVerify = exports.GeneralEncrypt = exports.generalDecrypt = exports.flattenedDecrypt = exports.compactDecrypt = void 0;\nvar decrypt_js_1 = require(\"./jwe/compact/decrypt.js\");\nObject.defineProperty(exports, \"compactDecrypt\", { enumerable: true, get: function () { return decrypt_js_1.compactDecrypt; } });\nvar decrypt_js_2 = require(\"./jwe/flattened/decrypt.js\");\nObject.defineProperty(exports, \"flattenedDecrypt\", { enumerable: true, get: function () { return decrypt_js_2.flattenedDecrypt; } });\nvar decrypt_js_3 = require(\"./jwe/general/decrypt.js\");\nObject.defineProperty(exports, \"generalDecrypt\", { enumerable: true, get: function () { return decrypt_js_3.generalDecrypt; } });\nvar encrypt_js_1 = require(\"./jwe/general/encrypt.js\");\nObject.defineProperty(exports, \"GeneralEncrypt\", { enumerable: true, get: function () { return encrypt_js_1.GeneralEncrypt; } });\nvar verify_js_1 = require(\"./jws/compact/verify.js\");\nObject.defineProperty(exports, \"compactVerify\", { enumerable: true, get: function () { return verify_js_1.compactVerify; } });\nvar verify_js_2 = require(\"./jws/flattened/verify.js\");\nObject.defineProperty(exports, \"flattenedVerify\", { enumerable: true, get: function () { return verify_js_2.flattenedVerify; } });\nvar verify_js_3 = require(\"./jws/general/verify.js\");\nObject.defineProperty(exports, \"generalVerify\", { enumerable: true, get: function () { return verify_js_3.generalVerify; } });\nvar verify_js_4 = require(\"./jwt/verify.js\");\nObject.defineProperty(exports, \"jwtVerify\", { enumerable: true, get: function () { return verify_js_4.jwtVerify; } });\nvar decrypt_js_4 = require(\"./jwt/decrypt.js\");\nObject.defineProperty(exports, \"jwtDecrypt\", { enumerable: true, get: function () { return decrypt_js_4.jwtDecrypt; } });\nvar encrypt_js_2 = require(\"./jwe/compact/encrypt.js\");\nObject.defineProperty(exports, \"CompactEncrypt\", { enumerable: true, get: function () { return encrypt_js_2.CompactEncrypt; } });\nvar encrypt_js_3 = require(\"./jwe/flattened/encrypt.js\");\nObject.defineProperty(exports, \"FlattenedEncrypt\", { enumerable: true, get: function () { return encrypt_js_3.FlattenedEncrypt; } });\nvar sign_js_1 = require(\"./jws/compact/sign.js\");\nObject.defineProperty(exports, \"CompactSign\", { enumerable: true, get: function () { return sign_js_1.CompactSign; } });\nvar sign_js_2 = require(\"./jws/flattened/sign.js\");\nObject.defineProperty(exports, \"FlattenedSign\", { enumerable: true, get: function () { return sign_js_2.FlattenedSign; } });\nvar sign_js_3 = require(\"./jws/general/sign.js\");\nObject.defineProperty(exports, \"GeneralSign\", { enumerable: true, get: function () { return sign_js_3.GeneralSign; } });\nvar sign_js_4 = require(\"./jwt/sign.js\");\nObject.defineProperty(exports, \"SignJWT\", { enumerable: true, get: function () { return sign_js_4.SignJWT; } });\nvar encrypt_js_4 = require(\"./jwt/encrypt.js\");\nObject.defineProperty(exports, \"EncryptJWT\", { enumerable: true, get: function () { return encrypt_js_4.EncryptJWT; } });\nvar thumbprint_js_1 = require(\"./jwk/thumbprint.js\");\nObject.defineProperty(exports, \"calculateJwkThumbprint\", { enumerable: true, get: function () { return thumbprint_js_1.calculateJwkThumbprint; } });\nObject.defineProperty(exports, \"calculateJwkThumbprintUri\", { enumerable: true, get: function () { return thumbprint_js_1.calculateJwkThumbprintUri; } });\nvar embedded_js_1 = require(\"./jwk/embedded.js\");\nObject.defineProperty(exports, \"EmbeddedJWK\", { enumerable: true, get: function () { return embedded_js_1.EmbeddedJWK; } });\nvar local_js_1 = require(\"./jwks/local.js\");\nObject.defineProperty(exports, \"createLocalJWKSet\", { enumerable: true, get: function () { return local_js_1.createLocalJWKSet; } });\nvar remote_js_1 = require(\"./jwks/remote.js\");\nObject.defineProperty(exports, \"createRemoteJWKSet\", { enumerable: true, get: function () { return remote_js_1.createRemoteJWKSet; } });\nObject.defineProperty(exports, \"jwksCache\", { enumerable: true, get: function () { return remote_js_1.jwksCache; } });\nObject.defineProperty(exports, \"experimental_jwksCache\", { enumerable: true, get: function () { return remote_js_1.experimental_jwksCache; } });\nvar unsecured_js_1 = require(\"./jwt/unsecured.js\");\nObject.defineProperty(exports, \"UnsecuredJWT\", { enumerable: true, get: function () { return unsecured_js_1.UnsecuredJWT; } });\nvar export_js_1 = require(\"./key/export.js\");\nObject.defineProperty(exports, \"exportPKCS8\", { enumerable: true, get: function () { return export_js_1.exportPKCS8; } });\nObject.defineProperty(exports, \"exportSPKI\", { enumerable: true, get: function () { return export_js_1.exportSPKI; } });\nObject.defineProperty(exports, \"exportJWK\", { enumerable: true, get: function () { return export_js_1.exportJWK; } });\nvar import_js_1 = require(\"./key/import.js\");\nObject.defineProperty(exports, \"importSPKI\", { enumerable: true, get: function () { return import_js_1.importSPKI; } });\nObject.defineProperty(exports, \"importPKCS8\", { enumerable: true, get: function () { return import_js_1.importPKCS8; } });\nObject.defineProperty(exports, \"importX509\", { enumerable: true, get: function () { return import_js_1.importX509; } });\nObject.defineProperty(exports, \"importJWK\", { enumerable: true, get: function () { return import_js_1.importJWK; } });\nvar decode_protected_header_js_1 = require(\"./util/decode_protected_header.js\");\nObject.defineProperty(exports, \"decodeProtectedHeader\", { enumerable: true, get: function () { return decode_protected_header_js_1.decodeProtectedHeader; } });\nvar decode_jwt_js_1 = require(\"./util/decode_jwt.js\");\nObject.defineProperty(exports, \"decodeJwt\", { enumerable: true, get: function () { return decode_jwt_js_1.decodeJwt; } });\nexports.errors = require(\"./util/errors.js\");\nvar generate_key_pair_js_1 = require(\"./key/generate_key_pair.js\");\nObject.defineProperty(exports, \"generateKeyPair\", { enumerable: true, get: function () { return generate_key_pair_js_1.generateKeyPair; } });\nvar generate_secret_js_1 = require(\"./key/generate_secret.js\");\nObject.defineProperty(exports, \"generateSecret\", { enumerable: true, get: function () { return generate_secret_js_1.generateSecret; } });\nexports.base64url = require(\"./util/base64url.js\");\nvar runtime_js_1 = require(\"./util/runtime.js\");\nObject.defineProperty(exports, \"cryptoRuntime\", { enumerable: true, get: function () { return runtime_js_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenManager = void 0;\nconst uuid_1 = require(\"./uuid\");\nconst jose_1 = require(\"jose\");\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nconst isAccessToken = (thing) => {\n    return Boolean(thing &&\n        typeof thing === 'object' &&\n        'access_token' in thing &&\n        'expires_in' in thing &&\n        typeof thing.access_token === 'string' &&\n        typeof thing.expires_in === 'number');\n};\nconst isValidCustomResponse = (response) => {\n    return typeof response.text === 'function';\n};\nfunction convertHeaders(headers) {\n    const lowercaseHeaders = {};\n    if (!headers)\n        return {};\n    if (isHeaders(headers)) {\n        for (const [name, value] of headers.entries()) {\n            lowercaseHeaders[name.toLowerCase()] = value;\n        }\n        return lowercaseHeaders;\n    }\n    for (const [name, value] of Object.entries(headers)) {\n        lowercaseHeaders[name.toLowerCase()] = value;\n    }\n    return lowercaseHeaders;\n}\nfunction isHeaders(thing) {\n    if (typeof thing === 'object' &&\n        thing !== null &&\n        'entries' in Object(thing) &&\n        typeof Object(thing).entries === 'function') {\n        return true;\n    }\n    return false;\n}\nclass TokenManager {\n    alg = 'RS256';\n    grantType = 'client_credentials';\n    clientAssertionType = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer';\n    clientId;\n    clientKey;\n    keyId;\n    scope;\n    authServer;\n    httpClient;\n    maxRetries;\n    clockSkewInSeconds = 0;\n    accessToken;\n    tokenEmitter = new analytics_generic_utils_1.Emitter();\n    retryCount;\n    pollerTimer;\n    constructor(props) {\n        this.keyId = props.keyId;\n        this.clientId = props.clientId;\n        this.clientKey = props.clientKey;\n        this.authServer = props.authServer ?? 'https://oauth2.segment.io';\n        this.scope = props.scope ?? 'tracking_api:write';\n        this.httpClient = props.httpClient;\n        this.maxRetries = props.maxRetries;\n        this.tokenEmitter.on('access_token', (event) => {\n            if ('token' in event) {\n                this.accessToken = event.token;\n            }\n        });\n        this.retryCount = 0;\n    }\n    stopPoller() {\n        clearTimeout(this.pollerTimer);\n    }\n    async pollerLoop() {\n        let timeUntilRefreshInMs = 25;\n        let response;\n        try {\n            response = await this.requestAccessToken();\n        }\n        catch (err) {\n            // Error without a status code - likely networking, retry\n            return this.handleTransientError({ error: err });\n        }\n        if (!isValidCustomResponse(response)) {\n            return this.handleInvalidCustomResponse();\n        }\n        const headers = convertHeaders(response.headers);\n        if (headers['date']) {\n            this.updateClockSkew(Date.parse(headers['date']));\n        }\n        // Handle status codes!\n        if (response.status === 200) {\n            try {\n                const body = await response.text();\n                const token = JSON.parse(body);\n                if (!isAccessToken(token)) {\n                    throw new Error('Response did not contain a valid access_token and expires_in');\n                }\n                // Success, we have a token!\n                token.expires_at = Math.round(Date.now() / 1000) + token.expires_in;\n                this.tokenEmitter.emit('access_token', { token });\n                // Reset our failure count\n                this.retryCount = 0;\n                // Refresh the token after half the expiry time passes\n                timeUntilRefreshInMs = (token.expires_in / 2) * 1000;\n                return this.queueNextPoll(timeUntilRefreshInMs);\n            }\n            catch (err) {\n                // Something went really wrong with the body, lets surface an error and try again?\n                return this.handleTransientError({ error: err, forceEmitError: true });\n            }\n        }\n        else if (response.status === 429) {\n            // Rate limited, wait for the reset time\n            return await this.handleRateLimited(response, headers, timeUntilRefreshInMs);\n        }\n        else if ([400, 401, 415].includes(response.status)) {\n            // Unrecoverable errors, stops the poller\n            return this.handleUnrecoverableErrors(response);\n        }\n        else {\n            return this.handleTransientError({\n                error: new Error(`[${response.status}] ${response.statusText}`),\n            });\n        }\n    }\n    handleTransientError({ error, forceEmitError, }) {\n        this.incrementRetries({ error, forceEmitError });\n        // First retry immediately, backoff the rest.\n        if (this.retryCount === 1) {\n            this.queueNextPoll(0);\n            return;\n        }\n        const timeUntilRefreshInMs = (0, analytics_core_1.backoff)({\n            attempt: Math.max(this.retryCount - 1, 0),\n            minTimeout: 100,\n            maxTimeout: 60 * 1000,\n        });\n        this.queueNextPoll(timeUntilRefreshInMs);\n    }\n    handleInvalidCustomResponse() {\n        this.tokenEmitter.emit('access_token', {\n            error: new Error('HTTPClient does not implement response.text method'),\n        });\n    }\n    async handleRateLimited(response, headers, timeUntilRefreshInMs) {\n        this.incrementRetries({\n            error: new Error(`[${response.status}] ${response.statusText}`),\n        });\n        const getRateLimitWaitTime = (headerValue) => {\n            const value = parseInt(headerValue, 10);\n            if (!isFinite(value))\n                return null;\n            const clampedSeconds = Math.max(0, Math.min(value, 300));\n            return Math.max(0, (clampedSeconds + this.clockSkewInSeconds) * 1000);\n        };\n        const retryAfter = headers['retry-after'];\n        const maxWaitMs = 5 * 60 * 1000; // 5 minutes\n        let waitTimeMs = 5 * 1000; // default fallback\n        if (retryAfter) {\n            const waitTime = getRateLimitWaitTime(retryAfter);\n            if (waitTime !== null) {\n                waitTimeMs = Math.min(waitTime, maxWaitMs);\n            }\n        }\n        // We want subsequent calls to get_token to be able to interrupt our\n        //  Timeout when it's waiting for e.g. a long normal expiration, but\n        //  not when we're waiting for a rate limit reset. Sleep instead.\n        await (0, analytics_core_1.sleep)(waitTimeMs);\n        timeUntilRefreshInMs = 0;\n        this.queueNextPoll(timeUntilRefreshInMs);\n    }\n    handleUnrecoverableErrors(response) {\n        this.retryCount = 0;\n        this.tokenEmitter.emit('access_token', {\n            error: new Error(`[${response.status}] ${response.statusText}`),\n        });\n        this.stopPoller();\n    }\n    updateClockSkew(dateInMs) {\n        this.clockSkewInSeconds = (Date.now() - dateInMs) / 1000;\n    }\n    incrementRetries({ error, forceEmitError, }) {\n        this.retryCount++;\n        if (forceEmitError || this.retryCount % this.maxRetries === 0) {\n            this.retryCount = 0;\n            this.tokenEmitter.emit('access_token', { error: error });\n        }\n    }\n    queueNextPoll(timeUntilRefreshInMs) {\n        this.pollerTimer = setTimeout(() => this.pollerLoop(), timeUntilRefreshInMs);\n        if (this.pollerTimer.unref) {\n            this.pollerTimer.unref();\n        }\n    }\n    /**\n     * Solely responsible for building the HTTP request and calling the token service.\n     */\n    async requestAccessToken() {\n        // Set issued at time to 5 seconds in the past to account for clock skew\n        const ISSUED_AT_BUFFER_IN_SECONDS = 5;\n        const MAX_EXPIRY_IN_SECONDS = 60;\n        // Final expiry time takes into account the issued at time, so need to subtract IAT buffer\n        const EXPIRY_IN_SECONDS = MAX_EXPIRY_IN_SECONDS - ISSUED_AT_BUFFER_IN_SECONDS;\n        const jti = (0, uuid_1.uuid)();\n        const currentUTCInSeconds = Math.round(Date.now() / 1000) - this.clockSkewInSeconds;\n        const jwtBody = {\n            iss: this.clientId,\n            sub: this.clientId,\n            aud: this.authServer,\n            iat: currentUTCInSeconds - ISSUED_AT_BUFFER_IN_SECONDS,\n            exp: currentUTCInSeconds + EXPIRY_IN_SECONDS,\n            jti,\n        };\n        const key = await (0, jose_1.importPKCS8)(this.clientKey, 'RS256');\n        const signedJwt = await new jose_1.SignJWT(jwtBody)\n            .setProtectedHeader({ alg: this.alg, kid: this.keyId, typ: 'JWT' })\n            .sign(key);\n        const requestBody = `grant_type=${this.grantType}&client_assertion_type=${this.clientAssertionType}&client_assertion=${signedJwt}&scope=${this.scope}`;\n        const accessTokenEndpoint = `${this.authServer}/token`;\n        const requestOptions = {\n            method: 'POST',\n            url: accessTokenEndpoint,\n            body: requestBody,\n            headers: {\n                'Content-Type': 'application/x-www-form-urlencoded',\n            },\n            httpRequestTimeout: 10000,\n        };\n        return this.httpClient.makeRequest(requestOptions);\n    }\n    async getAccessToken() {\n        // Use the cached token if it is still valid, otherwise wait for a new token.\n        if (this.isValidToken(this.accessToken)) {\n            return this.accessToken;\n        }\n        // stop poller first in order to make sure that it's not sleeping if we need a token immediately\n        // Otherwise it could be hours before the expiration time passes normally\n        this.stopPoller();\n        // startPoller needs to be called somewhere, either lazily when a token is first requested, or at instantiation.\n        // Doing it lazily currently\n        this.pollerLoop().catch(() => { });\n        return new Promise((resolve, reject) => {\n            this.tokenEmitter.once('access_token', (event) => {\n                if ('token' in event) {\n                    resolve(event.token);\n                }\n                else {\n                    reject(event.error);\n                }\n            });\n        });\n    }\n    clearToken() {\n        this.accessToken = undefined;\n    }\n    isValidToken(token) {\n        return (typeof token !== 'undefined' &&\n            token !== null &&\n            (token.expires_at ?? 0) > Date.now() / 1000);\n    }\n}\nexports.TokenManager = TokenManager;\n//# sourceMappingURL=token-manager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.b64encode = void 0;\n// eslint-disable-next-line import/no-nodejs-modules\nconst buffer_1 = require(\"buffer\");\n/**\n * Base64 encoder that works in browser, worker, node runtimes.\n */\nconst b64encode = (str) => {\n    return buffer_1.Buffer.from(str).toString('base64');\n};\nexports.b64encode = b64encode;\n//# sourceMappingURL=base-64-encode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Publisher = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst create_url_1 = require(\"../../lib/create-url\");\nconst analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nconst context_batch_1 = require(\"./context-batch\");\nconst token_manager_1 = require(\"../../lib/token-manager\");\nconst base_64_encode_1 = require(\"../../lib/base-64-encode\");\nconst MAX_RETRY_AFTER_SECONDS = 300;\nconst MAX_RETRY_AFTER_RETRIES = 20;\nfunction sleep(timeoutInMs, signal) {\n    return new Promise((resolve, reject) => {\n        if (signal?.aborted) {\n            reject(signal.reason);\n            return;\n        }\n        const timer = setTimeout(resolve, timeoutInMs);\n        signal?.addEventListener('abort', () => {\n            clearTimeout(timer);\n            reject(signal.reason);\n        }, { once: true });\n    });\n}\nfunction noop() { }\nfunction convertHeaders(headers) {\n    const lowercaseHeaders = {};\n    if (!headers)\n        return lowercaseHeaders;\n    if (typeof headers.entries === 'function') {\n        for (const [name, value] of headers.entries()) {\n            lowercaseHeaders[name.toLowerCase()] = String(value);\n        }\n        return lowercaseHeaders;\n    }\n    for (const [name, value] of Object.entries(headers)) {\n        lowercaseHeaders[name.toLowerCase()] = String(value);\n    }\n    return lowercaseHeaders;\n}\nfunction getRetryAfterInSeconds(headers) {\n    if (!headers)\n        return undefined;\n    const lowercaseHeaders = convertHeaders(headers);\n    const raw = lowercaseHeaders['retry-after'];\n    if (!raw)\n        return undefined;\n    const seconds = parseInt(raw, 10);\n    if (!Number.isFinite(seconds) || seconds < 0) {\n        return undefined;\n    }\n    return Math.min(seconds, MAX_RETRY_AFTER_SECONDS);\n}\n/**\n * The Publisher is responsible for batching events and sending them to the Segment API.\n */\nclass Publisher {\n    pendingFlushTimeout;\n    _batch;\n    _flushInterval;\n    _flushAt;\n    _maxRetries;\n    _url;\n    _flushPendingItemsCount;\n    _httpRequestTimeout;\n    _emitter;\n    _disable;\n    _httpClient;\n    _writeKey;\n    _basicAuth;\n    _tokenManager;\n    _maxTotalBackoffDuration;\n    _maxRateLimitDuration;\n    // Rate-limit state: set when a 429 is received, cleared on success or expiry\n    _rateLimitedUntil;\n    _rateLimitStartTime;\n    _abortController = new AbortController();\n    constructor({ host, path, maxRetries, flushAt, flushInterval, writeKey, httpRequestTimeout, httpClient, disable, oauthSettings, maxTotalBackoffDuration, maxRateLimitDuration, }, emitter) {\n        this._emitter = emitter;\n        this._maxRetries = maxRetries;\n        this._flushAt = Math.max(flushAt, 1);\n        this._flushInterval = flushInterval;\n        this._url = (0, create_url_1.tryCreateFormattedUrl)(host ?? 'https://api.segment.io', path ?? '/v1/batch');\n        this._httpRequestTimeout = httpRequestTimeout ?? 10000;\n        this._disable = Boolean(disable);\n        this._httpClient = httpClient;\n        this._writeKey = writeKey;\n        this._basicAuth = (0, base_64_encode_1.b64encode)(`${writeKey}:`);\n        this._maxTotalBackoffDuration = maxTotalBackoffDuration ?? 43200;\n        this._maxRateLimitDuration = maxRateLimitDuration ?? 43200;\n        if (oauthSettings) {\n            this._tokenManager = new token_manager_1.TokenManager({\n                ...oauthSettings,\n                httpClient: oauthSettings.httpClient ?? httpClient,\n                maxRetries: oauthSettings.maxRetries ?? maxRetries,\n            });\n        }\n    }\n    abort() {\n        this._abortController.abort(new Error('Flush timeout'));\n        this._abortController = new AbortController();\n    }\n    createBatch() {\n        this.pendingFlushTimeout && clearTimeout(this.pendingFlushTimeout);\n        const batch = new context_batch_1.ContextBatch(this._flushAt);\n        this._batch = batch;\n        this.pendingFlushTimeout = setTimeout(() => {\n            if (batch === this._batch) {\n                this._batch = undefined;\n            }\n            this.pendingFlushTimeout = undefined;\n            if (batch.length) {\n                this.send(batch).catch(noop);\n            }\n        }, this._flushInterval);\n        return batch;\n    }\n    clearBatch() {\n        this.pendingFlushTimeout && clearTimeout(this.pendingFlushTimeout);\n        this._batch = undefined;\n    }\n    flush(pendingItemsCount) {\n        if (!pendingItemsCount) {\n            // if number of pending items is 0, there will never be anything else entering the batch, since the app is closed.\n            if (this._tokenManager) {\n                this._tokenManager.stopPoller();\n            }\n            return;\n        }\n        this._flushPendingItemsCount = pendingItemsCount;\n        // if batch is empty, there's nothing to flush, and when things come in, enqueue will handle them.\n        if (!this._batch)\n            return;\n        // the number of globally pending items will always be larger or the same as batch size.\n        // Any mismatch is because some globally pending items are in plugins.\n        const isExpectingNoMoreItems = this._batch.length === pendingItemsCount;\n        if (isExpectingNoMoreItems) {\n            this.send(this._batch)\n                .catch(noop)\n                .finally(() => {\n                // stop poller so program can exit ().\n                if (this._tokenManager) {\n                    this._tokenManager.stopPoller();\n                }\n            });\n            this.clearBatch();\n        }\n    }\n    /**\n     * Enqueues the context for future delivery.\n     * @param ctx - Context containing a Segment event.\n     * @returns a promise that resolves with the context after the event has been delivered.\n     */\n    enqueue(ctx) {\n        const batch = this._batch ?? this.createBatch();\n        const { promise: ctxPromise, resolve } = (0, analytics_generic_utils_1.createDeferred)();\n        const pendingItem = {\n            context: ctx,\n            resolver: resolve,\n        };\n        /*\n          The following logic ensures that a batch is never orphaned,\n          and is always sent before a new batch is created.\n    \n          Add an event to the existing batch.\n            Success: Check if batch is full or no more items are expected to come in (i.e. closing). If so, send batch.\n            Failure: Assume event is too big to fit in current batch - send existing batch.\n              Add an event to the new batch.\n                Success: Check if batch is full and send if it is.\n                Failure: Event exceeds maximum size (it will never fit), fail the event.\n        */\n        const addStatus = batch.tryAdd(pendingItem);\n        if (addStatus.success) {\n            const isExpectingNoMoreItems = batch.length === this._flushPendingItemsCount;\n            const isFull = batch.length === this._flushAt;\n            if (isFull || isExpectingNoMoreItems) {\n                this.send(batch).catch(noop);\n                this.clearBatch();\n            }\n            return ctxPromise;\n        }\n        // If the new item causes the maximimum event size to be exceeded, send the current batch and create a new one.\n        if (batch.length) {\n            this.send(batch).catch(noop);\n            this.clearBatch();\n        }\n        const fallbackBatch = this.createBatch();\n        const fbAddStatus = fallbackBatch.tryAdd(pendingItem);\n        if (fbAddStatus.success) {\n            const isExpectingNoMoreItems = fallbackBatch.length === this._flushPendingItemsCount;\n            if (isExpectingNoMoreItems) {\n                this.send(fallbackBatch).catch(noop);\n                this.clearBatch();\n            }\n            return ctxPromise;\n        }\n        else {\n            // this should only occur if max event size is exceeded\n            ctx.setFailedDelivery({\n                reason: new Error(fbAddStatus.message),\n            });\n            return Promise.resolve(ctx);\n        }\n    }\n    _isRateLimited() {\n        if (this._rateLimitedUntil === undefined)\n            return false;\n        // Check if maxRateLimitDuration has been exceeded.\n        // Returns false so the caller can detect the cleared state and drop the batch.\n        if (this._rateLimitStartTime !== undefined &&\n            Date.now() - this._rateLimitStartTime >= this._maxRateLimitDuration * 1000) {\n            this._rateLimitedUntil = undefined;\n            this._rateLimitStartTime = undefined;\n            return false;\n        }\n        if (Date.now() >= this._rateLimitedUntil) {\n            // Rate limit window has elapsed, clear state and proceed\n            this._rateLimitedUntil = undefined;\n            // Keep rateLimitStartTime — it persists until success or maxRateLimitDuration\n            return false;\n        }\n        return true;\n    }\n    _setRateLimitState(headers) {\n        const retryAfterSeconds = getRetryAfterInSeconds(headers);\n        if (typeof retryAfterSeconds === 'number') {\n            // Enforce a minimum of 1 second to prevent tight loops on Retry-After: 0\n            this._rateLimitedUntil =\n                Date.now() + Math.max(retryAfterSeconds, 1) * 1000;\n        }\n        else {\n            // No Retry-After header — use a default backoff of 60s\n            this._rateLimitedUntil = Date.now() + 60000;\n        }\n        if (this._rateLimitStartTime === undefined) {\n            this._rateLimitStartTime = Date.now();\n        }\n    }\n    _clearRateLimitState() {\n        this._rateLimitedUntil = undefined;\n        this._rateLimitStartTime = undefined;\n    }\n    async send(batch) {\n        if (this._flushPendingItemsCount) {\n            this._flushPendingItemsCount -= batch.length;\n        }\n        const events = batch.getEvents();\n        const maxRetries = this._maxRetries;\n        const signal = this._abortController.signal;\n        let countedRetries = 0;\n        let totalAttempts = 0;\n        let firstFailureTime;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            if (signal.aborted) {\n                resolveFailedBatch(batch, signal.reason);\n                return;\n            }\n            // Check rate-limit state before making a request\n            const wasRateLimited = this._rateLimitStartTime !== undefined;\n            if (this._isRateLimited()) {\n                const untilRetryAfter = Math.max(0, (this._rateLimitedUntil ?? Date.now()) - Date.now());\n                const untilDurationLimit = this._rateLimitStartTime === undefined\n                    ? untilRetryAfter\n                    : Math.max(0, this._maxRateLimitDuration * 1000 -\n                        (Date.now() - this._rateLimitStartTime));\n                const waitMs = Math.min(untilRetryAfter, untilDurationLimit);\n                try {\n                    await sleep(waitMs, signal);\n                }\n                catch {\n                    resolveFailedBatch(batch, signal.reason);\n                    return;\n                }\n                continue;\n            }\n            // If we were rate-limited but _isRateLimited() now returns false with\n            // cleared state, maxRateLimitDuration was exceeded — drop the batch.\n            if (wasRateLimited && this._rateLimitStartTime === undefined) {\n                resolveFailedBatch(batch, new Error('Rate limit duration exceeded'));\n                return;\n            }\n            let failureReason;\n            let shouldRetry = false;\n            let shouldCountTowardsMaxRetries = true;\n            try {\n                if (this._disable) {\n                    return batch.resolveEvents();\n                }\n                let authString = undefined;\n                if (this._tokenManager) {\n                    const token = await this._tokenManager.getAccessToken();\n                    if (token && token.access_token) {\n                        authString = `Bearer ${token.access_token}`;\n                    }\n                }\n                totalAttempts++;\n                const headers = {\n                    'Content-Type': 'application/json',\n                    'User-Agent': 'analytics-node-next/latest',\n                    ...(totalAttempts > 1\n                        ? { 'X-Retry-Count': String(totalAttempts - 1) }\n                        : {}),\n                    // Prefer OAuth Bearer token when available; otherwise fall back to Basic auth with write key.\n                    ...(authString\n                        ? { Authorization: authString }\n                        : { Authorization: `Basic ${this._basicAuth}` }),\n                };\n                const request = {\n                    url: this._url,\n                    method: 'POST',\n                    headers: headers,\n                    body: JSON.stringify({\n                        batch: events,\n                        writeKey: this._writeKey,\n                        sentAt: new Date(),\n                    }),\n                    httpRequestTimeout: this._httpRequestTimeout,\n                };\n                this._emitter.emit('http_request', {\n                    body: request.body,\n                    method: request.method,\n                    url: request.url,\n                    headers: request.headers,\n                });\n                const response = await this._httpClient.makeRequest(request);\n                this._emitter.emit('http_response', {\n                    status: response.status,\n                    statusText: response.statusText,\n                    url: request.url,\n                    body: request.body,\n                    headers: convertHeaders(response.headers),\n                });\n                // 2xx and 3xx are treated as successful delivery.\n                if (response.status >= 200 && response.status < 400) {\n                    // Success — clear rate-limit state\n                    this._clearRateLimitState();\n                    batch.resolveEvents();\n                    return;\n                }\n                else if (this._tokenManager &&\n                    (response.status === 400 ||\n                        response.status === 401 ||\n                        response.status === 403 ||\n                        response.status === 511)) {\n                    // Clear OAuth token if we have OAuth data\n                    this._tokenManager.clearToken();\n                }\n                const status = response.status;\n                const statusText = response.statusText;\n                // 400 is always non-retriable (malformed request / size exceeded)\n                if (status === 400) {\n                    // https://segment.com/docs/connections/sources/catalog/libraries/server/http-api/#max-request-size\n                    // Request either malformed or size exceeded - don't retry.\n                    resolveFailedBatch(batch, new Error(`[${status}] ${statusText}`));\n                    return;\n                }\n                failureReason = new Error(`[${status}] ${statusText}`);\n                // 429: set rate-limit state, requeue batch, halt this flush iteration\n                if (status === 429) {\n                    const retryAfterSeconds = getRetryAfterInSeconds(response.headers);\n                    if (typeof retryAfterSeconds === 'number') {\n                        // Has Retry-After header — set rate-limit state and retry without consuming maxRetries\n                        this._setRateLimitState(response.headers);\n                        shouldRetry = true;\n                        shouldCountTowardsMaxRetries = false;\n                    }\n                    else {\n                        // No Retry-After header — retry with backoff (counted)\n                        shouldRetry = true;\n                        shouldCountTowardsMaxRetries = true;\n                    }\n                }\n                // If we haven't already decided to retry based on 429 handling,\n                // apply the general retry policy.\n                if (!shouldRetry) {\n                    if (status >= 500 && status < 600) {\n                        // Retry all 5xx except 501 and 505.\n                        // 511 is retried only when a token manager is configured.\n                        if (status === 511 && this._tokenManager) {\n                            shouldRetry = true;\n                        }\n                        else if (![501, 505, 511].includes(status)) {\n                            shouldRetry = true;\n                        }\n                    }\n                    else if (status >= 400 && status < 500) {\n                        // 4xx are non-retriable except a specific allowlist.\n                        if ([408, 410, 429, 460].includes(status)) {\n                            shouldRetry = true;\n                        }\n                        else {\n                            resolveFailedBatch(batch, failureReason);\n                            return;\n                        }\n                    }\n                    else {\n                        // Treat other status codes as transient and retry.\n                        shouldRetry = true;\n                    }\n                }\n            }\n            catch (err) {\n                // Network errors get thrown, retry them.\n                failureReason = err;\n                shouldRetry = true;\n            }\n            if (!shouldRetry) {\n                resolveFailedBatch(batch, failureReason);\n                return;\n            }\n            // Track first failure time for counted retries (non-rate-limit backoff path)\n            if (shouldCountTowardsMaxRetries) {\n                if (!firstFailureTime)\n                    firstFailureTime = Date.now();\n                if (Date.now() - firstFailureTime >\n                    this._maxTotalBackoffDuration * 1000) {\n                    resolveFailedBatch(batch, failureReason);\n                    return;\n                }\n            }\n            if (shouldCountTowardsMaxRetries) {\n                countedRetries++;\n                if (countedRetries > maxRetries) {\n                    resolveFailedBatch(batch, failureReason);\n                    return;\n                }\n            }\n            // Safety cap: prevent infinite retries when server keeps returning Retry-After\n            if (totalAttempts > maxRetries + MAX_RETRY_AFTER_RETRIES) {\n                resolveFailedBatch(batch, failureReason);\n                return;\n            }\n            const delayMs = shouldCountTowardsMaxRetries\n                ? (0, analytics_core_1.backoff)({\n                    attempt: countedRetries,\n                    minTimeout: 500,\n                    maxTimeout: 60000,\n                })\n                : 0;\n            try {\n                await sleep(delayMs, signal);\n            }\n            catch {\n                resolveFailedBatch(batch, signal.reason);\n                return;\n            }\n        }\n    }\n}\nexports.Publisher = Publisher;\nfunction resolveFailedBatch(batch, reason) {\n    batch.getContexts().forEach((ctx) => ctx.setFailedDelivery({ reason }));\n    batch.resolveEvents();\n}\n//# sourceMappingURL=publisher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectRuntime = void 0;\nconst detectRuntime = () => {\n    if (typeof process === 'object' &&\n        process &&\n        typeof process.env === 'object' &&\n        process.env &&\n        typeof process.version === 'string') {\n        return 'node';\n    }\n    if (typeof window === 'object') {\n        return 'browser';\n    }\n    // @ts-ignore\n    if (typeof WebSocketPair !== 'undefined') {\n        return 'cloudflare-worker';\n    }\n    // @ts-ignore\n    if (typeof EdgeRuntime === 'string') {\n        return 'vercel-edge';\n    }\n    if (\n    // @ts-ignore\n    typeof WorkerGlobalScope !== 'undefined' &&\n        // @ts-ignore\n        typeof importScripts === 'function') {\n        return 'web-worker';\n    }\n    return 'unknown';\n};\nexports.detectRuntime = detectRuntime;\n//# sourceMappingURL=env.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConfiguredNodePlugin = exports.createNodePlugin = void 0;\nconst publisher_1 = require(\"./publisher\");\nconst version_1 = require(\"../../generated/version\");\nconst env_1 = require(\"../../lib/env\");\nfunction normalizeEvent(ctx) {\n    ctx.updateEvent('context.library.name', '@segment/analytics-node');\n    ctx.updateEvent('context.library.version', version_1.version);\n    const runtime = (0, env_1.detectRuntime)();\n    if (runtime === 'node') {\n        // eslint-disable-next-line no-restricted-globals\n        ctx.updateEvent('_metadata.nodeVersion', process.version);\n    }\n    ctx.updateEvent('_metadata.jsRuntime', runtime);\n}\nfunction createNodePlugin(publisher) {\n    function action(ctx) {\n        normalizeEvent(ctx);\n        return publisher.enqueue(ctx);\n    }\n    return {\n        name: 'Segment.io',\n        type: 'destination',\n        version: '1.0.0',\n        isLoaded: () => true,\n        load: () => Promise.resolve(),\n        alias: action,\n        group: action,\n        identify: action,\n        page: action,\n        screen: action,\n        track: action,\n    };\n}\nexports.createNodePlugin = createNodePlugin;\nconst createConfiguredNodePlugin = (props, emitter) => {\n    const publisher = new publisher_1.Publisher(props, emitter);\n    return {\n        publisher: publisher,\n        plugin: createNodePlugin(publisher),\n    };\n};\nexports.createConfiguredNodePlugin = createConfiguredNodePlugin;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageId = void 0;\nconst uuid_1 = require(\"./uuid\");\n/**\n * get a unique messageId with a very low chance of collisions\n * using @lukeed/uuid/secure uses the node crypto module, which is the fastest\n * @example \"node-next-1668208232027-743be593-7789-4b74-8078-cbcc8894c586\"\n */\nconst createMessageId = () => {\n    return `node-next-${Date.now()}-${(0, uuid_1.uuid)()}`;\n};\nexports.createMessageId = createMessageId;\n//# sourceMappingURL=get-message-id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeEventFactory = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst get_message_id_1 = require(\"../lib/get-message-id\");\nclass NodeEventFactory extends analytics_core_1.CoreEventFactory {\n    constructor() {\n        super({\n            createMessageId: get_message_id_1.createMessageId,\n            onFinishedEvent: (event) => {\n                (0, analytics_core_1.assertUserIdentity)(event);\n            },\n        });\n    }\n}\nexports.NodeEventFactory = NodeEventFactory;\n//# sourceMappingURL=event-factory.js.map","\"use strict\";\n// create a derived class since we may want to add node specific things to Context later\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\n// While this is not a type, it is a definition\nclass Context extends analytics_core_1.CoreContext {\n    static system() {\n        return new this({ type: 'track', event: 'system' });\n    }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dispatchAndEmit = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst context_1 = require(\"./context\");\nconst normalizeDispatchCb = (cb) => (ctx) => {\n    const failedDelivery = ctx.failedDelivery();\n    return failedDelivery ? cb(failedDelivery.reason, ctx) : cb(undefined, ctx);\n};\n/* Dispatch function, but swallow promise rejections and use event emitter instead */\nconst dispatchAndEmit = async (event, queue, emitter, callback) => {\n    try {\n        const context = new context_1.Context(event);\n        const ctx = await (0, analytics_core_1.dispatch)(context, queue, emitter, {\n            ...(callback ? { callback: normalizeDispatchCb(callback) } : {}),\n        });\n        const failedDelivery = ctx.failedDelivery();\n        if (failedDelivery) {\n            emitter.emit('error', {\n                code: 'delivery_failure',\n                reason: failedDelivery.reason,\n                ctx: ctx,\n            });\n        }\n        else {\n            emitter.emit(event.type, ctx);\n        }\n    }\n    catch (err) {\n        emitter.emit('error', {\n            code: 'unknown',\n            reason: err,\n        });\n    }\n};\nexports.dispatchAndEmit = dispatchAndEmit;\n//# sourceMappingURL=dispatch-emit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeEmitter = void 0;\nconst analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nclass NodeEmitter extends analytics_generic_utils_1.Emitter {\n}\nexports.NodeEmitter = NodeEmitter;\n//# sourceMappingURL=emitter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeEventQueue = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nclass NodePriorityQueue extends analytics_core_1.PriorityQueue {\n    constructor() {\n        super(1, []);\n    }\n    // do not use an internal \"seen\" map\n    getAttempts(ctx) {\n        return ctx.attempts ?? 0;\n    }\n    updateAttempts(ctx) {\n        ctx.attempts = this.getAttempts(ctx) + 1;\n        return this.getAttempts(ctx);\n    }\n}\nclass NodeEventQueue extends analytics_core_1.CoreEventQueue {\n    constructor() {\n        super(new NodePriorityQueue());\n    }\n}\nexports.NodeEventQueue = NodeEventQueue;\n//# sourceMappingURL=event-queue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.abortSignalAfterTimeout = exports.AbortController = exports.AbortSignal = void 0;\n/**\n * use non-native event emitter for the benefit of non-node runtimes like CF workers.\n */\nconst analytics_generic_utils_1 = require(\"@segment/analytics-generic-utils\");\nconst env_1 = require(\"./env\");\n/**\n * adapted from: https://www.npmjs.com/package/node-abort-controller\n */\nclass AbortSignal {\n    onabort = null;\n    aborted = false;\n    eventEmitter = new analytics_generic_utils_1.Emitter();\n    toString() {\n        return '[object AbortSignal]';\n    }\n    get [Symbol.toStringTag]() {\n        return 'AbortSignal';\n    }\n    removeEventListener(...args) {\n        this.eventEmitter.off(...args);\n    }\n    addEventListener(...args) {\n        this.eventEmitter.on(...args);\n    }\n    dispatchEvent(type) {\n        const event = { type, target: this };\n        const handlerName = `on${type}`;\n        if (typeof this[handlerName] === 'function') {\n            ;\n            this[handlerName](event);\n        }\n        this.eventEmitter.emit(type, event);\n    }\n}\nexports.AbortSignal = AbortSignal;\n/**\n * This polyfill is only neccessary to support versions of node < 14.17.\n * Can be removed once node 14 support is dropped.\n */\nclass AbortController {\n    signal = new AbortSignal();\n    abort() {\n        if (this.signal.aborted)\n            return;\n        this.signal.aborted = true;\n        this.signal.dispatchEvent('abort');\n    }\n    toString() {\n        return '[object AbortController]';\n    }\n    get [Symbol.toStringTag]() {\n        return 'AbortController';\n    }\n}\nexports.AbortController = AbortController;\n/**\n * @param timeoutMs - Set a request timeout, after which the request is cancelled.\n */\nconst abortSignalAfterTimeout = (timeoutMs) => {\n    if ((0, env_1.detectRuntime)() === 'cloudflare-worker') {\n        return []; // TODO: this is broken in cloudflare workers, otherwise results in \"A hanging Promise was canceled...\" error.\n    }\n    const ac = new (globalThis.AbortController || AbortController)();\n    const timeoutId = setTimeout(() => {\n        ac.abort();\n    }, timeoutMs);\n    // Allow Node.js processes to exit early if only the timeout is running\n    timeoutId?.unref?.();\n    return [ac.signal, timeoutId];\n};\nexports.abortSignalAfterTimeout = abortSignalAfterTimeout;\n//# sourceMappingURL=abort.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetch = void 0;\nconst fetch = (...args) => {\n    return globalThis.fetch(...args);\n};\nexports.fetch = fetch;\n//# sourceMappingURL=fetch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchHTTPClient = void 0;\nconst abort_1 = require(\"./abort\");\nconst fetch_1 = require(\"./fetch\");\n/**\n * Default HTTP client implementation using fetch\n */\nclass FetchHTTPClient {\n    _fetch;\n    constructor(fetchFn) {\n        this._fetch = fetchFn ?? fetch_1.fetch;\n    }\n    async makeRequest(options) {\n        const [signal, timeoutId] = (0, abort_1.abortSignalAfterTimeout)(options.httpRequestTimeout);\n        const requestInit = {\n            url: options.url,\n            method: options.method,\n            headers: options.headers,\n            body: options.body,\n            signal: signal,\n        };\n        return this._fetch(options.url, requestInit).finally(() => clearTimeout(timeoutId));\n    }\n}\nexports.FetchHTTPClient = FetchHTTPClient;\n//# sourceMappingURL=http-client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Analytics = void 0;\nconst analytics_core_1 = require(\"@segment/analytics-core\");\nconst settings_1 = require(\"./settings\");\nconst version_1 = require(\"../generated/version\");\nconst segmentio_1 = require(\"../plugins/segmentio\");\nconst event_factory_1 = require(\"./event-factory\");\nconst dispatch_emit_1 = require(\"./dispatch-emit\");\nconst emitter_1 = require(\"./emitter\");\nconst context_1 = require(\"./context\");\nconst event_queue_1 = require(\"./event-queue\");\nconst http_client_1 = require(\"../lib/http-client\");\nclass Analytics extends emitter_1.NodeEmitter {\n    _eventFactory;\n    _isClosed = false;\n    _pendingEvents = 0;\n    _closeAndFlushDefaultTimeout;\n    _publisher;\n    _isFlushing = false;\n    _queue;\n    ready;\n    constructor(settings) {\n        super();\n        (0, settings_1.validateSettings)(settings);\n        this._eventFactory = new event_factory_1.NodeEventFactory();\n        this._queue = new event_queue_1.NodeEventQueue();\n        const flushInterval = settings.flushInterval ?? 10000;\n        this._closeAndFlushDefaultTimeout = Math.max(60000, flushInterval) * 1.25;\n        const { plugin, publisher } = (0, segmentio_1.createConfiguredNodePlugin)({\n            writeKey: settings.writeKey,\n            host: settings.host,\n            path: settings.path,\n            maxRetries: settings.maxRetries ?? 10,\n            flushAt: settings.flushAt ?? settings.maxEventsInBatch ?? 15,\n            httpRequestTimeout: settings.httpRequestTimeout,\n            disable: settings.disable,\n            flushInterval,\n            httpClient: typeof settings.httpClient === 'function'\n                ? new http_client_1.FetchHTTPClient(settings.httpClient)\n                : settings.httpClient ?? new http_client_1.FetchHTTPClient(),\n            oauthSettings: settings.oauthSettings,\n            maxTotalBackoffDuration: settings.maxTotalBackoffDuration,\n            maxRateLimitDuration: settings.maxRateLimitDuration,\n        }, this);\n        this._publisher = publisher;\n        this.ready = this.register(plugin).then(() => undefined);\n        this.emit('initialize', settings);\n        (0, analytics_core_1.bindAll)(this);\n    }\n    get VERSION() {\n        return version_1.version;\n    }\n    /**\n     * Call this method to stop collecting new events and flush all existing events.\n     * This method also waits for any event method-specific callbacks to be triggered,\n     * and any of their subsequent promises to be resolved/rejected.\n     */\n    closeAndFlush({ timeout = this._closeAndFlushDefaultTimeout, } = {}) {\n        return this.flush({ timeout, close: true });\n    }\n    /**\n     * Call this method to flush all existing events..\n     * This method also waits for any event method-specific callbacks to be triggered,\n     * and any of their subsequent promises to be resolved/rejected.\n     */\n    async flush({ timeout, close = false, } = {}) {\n        if (this._isFlushing) {\n            // if we're already flushing, then we don't need to do anything\n            console.warn('Overlapping flush calls detected. Please wait for the previous flush to finish before calling .flush again');\n            return;\n        }\n        else {\n            this._isFlushing = true;\n        }\n        if (close) {\n            this._isClosed = true;\n        }\n        this._publisher.flush(this._pendingEvents);\n        const promise = new Promise((resolve) => {\n            if (!this._pendingEvents) {\n                resolve();\n            }\n            else {\n                this.once('drained', () => {\n                    resolve();\n                });\n            }\n        }).finally(() => {\n            this._isFlushing = false;\n        });\n        if (!timeout)\n            return promise;\n        return (0, analytics_core_1.pTimeout)(promise, timeout).catch(() => {\n            this._publisher.abort();\n        });\n    }\n    _dispatch(segmentEvent, callback) {\n        if (this._isClosed) {\n            this.emit('call_after_close', segmentEvent);\n            return undefined;\n        }\n        this._pendingEvents++;\n        (0, dispatch_emit_1.dispatchAndEmit)(segmentEvent, this._queue, this, callback)\n            .catch((ctx) => ctx)\n            .finally(() => {\n            this._pendingEvents--;\n            if (!this._pendingEvents) {\n                this.emit('drained');\n            }\n        });\n    }\n    /**\n     * Combines two unassociated user identities.\n     * @link https://segment.com/docs/connections/sources/catalog/libraries/server/node/#alias\n     */\n    alias({ userId, previousId, context, timestamp, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.alias(userId, previousId, {\n            context,\n            integrations,\n            timestamp,\n            messageId,\n        });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * Associates an identified user with a collective.\n     *  @link https://segment.com/docs/connections/sources/catalog/libraries/server/node/#group\n     */\n    group({ timestamp, groupId, userId, anonymousId, traits = {}, context, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.group(groupId, traits, {\n            context,\n            anonymousId,\n            userId,\n            timestamp,\n            integrations,\n            messageId,\n        });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * Includes a unique userId and (maybe anonymousId) and any optional traits you know about them.\n     * @link https://segment.com/docs/connections/sources/catalog/libraries/server/node/#identify\n     */\n    identify({ userId, anonymousId, traits = {}, context, timestamp, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.identify(userId, traits, {\n            context,\n            anonymousId,\n            userId,\n            timestamp,\n            integrations,\n            messageId,\n        });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * The page method lets you record page views on your website, along with optional extra information about the page being viewed.\n     * @link https://segment.com/docs/connections/sources/catalog/libraries/server/node/#page\n     */\n    page({ userId, anonymousId, category, name, properties, context, timestamp, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.page(category ?? null, name ?? null, properties, { context, anonymousId, userId, timestamp, integrations, messageId });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * Records screen views on your app, along with optional extra information\n     * about the screen viewed by the user.\n     *\n     * TODO: This is not documented on the segment docs ATM (for node).\n     */\n    screen({ userId, anonymousId, category, name, properties, context, timestamp, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.screen(category ?? null, name ?? null, properties, { context, anonymousId, userId, timestamp, integrations, messageId });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * Records actions your users perform.\n     * @link https://segment.com/docs/connections/sources/catalog/libraries/server/node/#track\n     */\n    track({ userId, anonymousId, event, properties, context, timestamp, integrations, messageId, }, callback) {\n        const segmentEvent = this._eventFactory.track(event, properties, {\n            context,\n            userId,\n            anonymousId,\n            timestamp,\n            integrations,\n            messageId,\n        });\n        this._dispatch(segmentEvent, callback);\n    }\n    /**\n     * Registers one or more plugins to augment Analytics functionality.\n     * @param plugins\n     */\n    register(...plugins) {\n        return this._queue.criticalTasks.run(async () => {\n            const ctx = context_1.Context.system();\n            const registrations = plugins.map((xt) => this._queue.register(ctx, xt, this));\n            await Promise.all(registrations);\n            this.emit('register', plugins.map((el) => el.name));\n        });\n    }\n    /**\n     * Deregisters one or more plugins based on their names.\n     * @param pluginNames - The names of one or more plugins to deregister.\n     */\n    async deregister(...pluginNames) {\n        const ctx = context_1.Context.system();\n        const deregistrations = pluginNames.map((pl) => {\n            const plugin = this._queue.plugins.find((p) => p.name === pl);\n            if (plugin) {\n                return this._queue.deregister(ctx, plugin, this);\n            }\n            else {\n                ctx.log('warn', `plugin ${pl} not found`);\n            }\n        });\n        await Promise.all(deregistrations);\n        this.emit('deregister', pluginNames);\n    }\n}\nexports.Analytics = Analytics;\n//# sourceMappingURL=analytics-node.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchHTTPClient = exports.Context = exports.Analytics = void 0;\nvar analytics_node_1 = require(\"./app/analytics-node\");\nObject.defineProperty(exports, \"Analytics\", { enumerable: true, get: function () { return analytics_node_1.Analytics; } });\nvar context_1 = require(\"./app/context\");\nObject.defineProperty(exports, \"Context\", { enumerable: true, get: function () { return context_1.Context; } });\nvar http_client_1 = require(\"./lib/http-client\");\nObject.defineProperty(exports, \"FetchHTTPClient\", { enumerable: true, get: function () { return http_client_1.FetchHTTPClient; } });\n//# sourceMappingURL=index.common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./index.common\"), exports);\n// export Analytics as both a named export and a default export (for backwards-compat. reasons)\nconst index_common_1 = require(\"./index.common\");\nexports.default = index_common_1.Analytics;\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134],"mappings":"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"}