@copilotkit/shared 1.51.3-next.7 → 1.51.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/utils/conditions.ts","../src/utils/console-styling.ts","../src/utils/errors.ts","../src/utils/json-schema.ts","../src/utils/random-id.ts","../src/constants/index.ts","../../../../../node_modules/.pnpm/@rollup+plugin-typescript@12.3.0_rollup@4.57.0_tslib@2.8.1_typescript@5.9.2/node_modules/tslib/tslib.es6.js","../../../../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.mjs","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/utils/pick.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/validation/errors.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/validation/helpers.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/validation/assertions.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/events/index.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/callback/index.js","../../../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/esm/create-deferred/create-deferred.js","../../../../../node_modules/.pnpm/@segment+analytics-generic-utils@1.2.0/node_modules/@segment/analytics-generic-utils/dist/esm/emitter/emitter.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/priority-queue/backoff.js","../../../../../node_modules/.pnpm/@lukeed+uuid@2.0.1/node_modules/@lukeed/uuid/dist/index.mjs","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/priority-queue/index.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/logger/index.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/stats/index.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/context/index.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/queue/delivery.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/queue/event-queue.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/task/task-group.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/utils/is-thenable.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/utils/group-by.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/settings.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/generated/version.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/plugins/segmentio/context-batch.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/webcrypto.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/buffer_utils.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/base64url.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/util/errors.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/crypto_key.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/invalid_key_input.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/is_key_like.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_object.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_jwk.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/jwk_to_key.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/normalize_key.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/asn1.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/check_key_type.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/epoch.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/secs.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/sign.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/get_sign_verify_key.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/check_key_length.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/runtime/subtle_dsa.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jws/flattened/sign.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/is_disjoint.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/lib/validate_crit.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jws/compact/sign.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jwt/produce.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/jwt/sign.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/token-manager.js","../../../../../node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/browser/key/import.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/plugins/segmentio/publisher.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/create-url.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/env.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/plugins/segmentio/index.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/get-message-id.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/event-factory.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/context.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/dispatch-emit.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/analytics/dispatch.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/emitter.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/event-queue.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/abort.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/fetch.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/lib/http-client.js","../../../../../node_modules/.pnpm/@segment+analytics-node@2.3.0_encoding@0.1.13/node_modules/@segment/analytics-node/dist/esm/app/analytics-node.js","../../../../../node_modules/.pnpm/@segment+analytics-core@1.8.2/node_modules/@segment/analytics-core/dist/esm/utils/bind-all.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js","../../../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js","../../../../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js","../src/telemetry/utils.ts","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js","../../../../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/browser.js","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js","../src/telemetry/scarf-client.ts","../src/telemetry/telemetry-client.ts","../src/index.ts","../../../../../node_modules/.pnpm/node-fetch@2.7.0_encoding@0.1.13/node_modules/node-fetch/browser.js","../src/utils/index.ts","../src/utils/requests.ts"],"sourcesContent":[null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","export 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","export var 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};\n//# sourceMappingURL=pick.js.map","import { __extends } from \"tslib\";\nvar ValidationError = /** @class */ (function (_super) {\n __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));\nexport { ValidationError };\n//# sourceMappingURL=errors.js.map","export function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function exists(val) {\n return val !== undefined && val !== null;\n}\nexport function isPlainObject(obj) {\n return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');\n}\n//# sourceMappingURL=helpers.js.map","import { ValidationError } from './errors';\nimport { isString, isPlainObject, exists } from './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\nexport function 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 (!exists(id)) {\n throw new ValidationError(USER_FIELD_NAME, nilError);\n }\n else if (!isString(id)) {\n throw new ValidationError(USER_FIELD_NAME, stringError);\n }\n}\nexport function assertEventExists(event) {\n if (!exists(event)) {\n throw new ValidationError('Event', nilError);\n }\n if (typeof event !== 'object') {\n throw new ValidationError('Event', objError);\n }\n}\nexport function assertEventType(event) {\n if (!isString(event.type)) {\n throw new ValidationError('.type', stringError);\n }\n}\nexport function assertTrackEventName(event) {\n if (!isString(event.event)) {\n throw new ValidationError('.event', stringError);\n }\n}\nexport function assertTrackEventProperties(event) {\n if (!isPlainObject(event.properties)) {\n throw new ValidationError('.properties', objError);\n }\n}\nexport function assertTraits(event) {\n if (!isPlainObject(event.traits)) {\n throw new ValidationError('.traits', objError);\n }\n}\nexport function assertMessageId(event) {\n if (!isString(event.messageId)) {\n throw new ValidationError('.messageId', stringError);\n }\n}\nexport function 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}\n//# sourceMappingURL=assertions.js.map","import { __assign, __rest } from \"tslib\";\nexport * from './interfaces';\nimport { dset } from 'dset';\nimport { pickBy } from '../utils/pick';\nimport { validateEvent } from '../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(__assign(__assign({}, this.baseEvent()), { event: event, type: 'track', properties: properties !== null && properties !== void 0 ? properties : {}, options: __assign({}, options), integrations: __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: __assign({}, properties),\n options: __assign({}, options),\n integrations: __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(__assign(__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: __assign({}, properties),\n options: __assign({}, options),\n integrations: __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(__assign(__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(__assign(__assign({}, this.baseEvent()), { type: 'identify', userId: userId, traits: traits !== null && traits !== void 0 ? traits : {}, options: __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(__assign(__assign({}, this.baseEvent()), { type: 'group', traits: traits !== null && traits !== void 0 ? traits : {}, options: __assign({}, options), integrations: __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: __assign({}, options),\n integrations: __assign({}, integrationOptions),\n };\n if (from !== null) {\n base.previousId = from;\n }\n if (to === undefined) {\n return this.normalize(__assign(__assign({}, base), this.baseEvent()));\n }\n return this.normalize(__assign(__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 dset(eventOverrides, key, options[key]);\n }\n else {\n 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 __assign(__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 = 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 = __assign(__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 = __rest(event, [\"options\"]);\n var evt = __assign(__assign(__assign(__assign({ timestamp: new Date() }, rest), { context: context, integrations: allIntegrations }), overrides), { messageId: options.messageId || this.settings.createMessageId() });\n this.settings.onFinishedEvent(evt);\n validateEvent(evt);\n return evt;\n };\n return CoreEventFactory;\n}());\nexport { CoreEventFactory };\n//# sourceMappingURL=index.js.map","export function 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}\nexport function sleep(timeoutInMs) {\n return new Promise(function (resolve) { return setTimeout(resolve, timeoutInMs); });\n}\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 */\nexport function 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}\n//# sourceMappingURL=index.js.map","/**\n * Return a promise that can be externally resolved\n */\nexport var 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};\n//# sourceMappingURL=create-deferred.js.map","/**\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}());\nexport { Emitter };\n//# sourceMappingURL=emitter.js.map","export function 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}\n//# sourceMappingURL=backoff.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function 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","import { __extends } from \"tslib\";\nimport { Emitter } from '@segment/analytics-generic-utils';\nimport { backoff } from './backoff';\n/**\n * @internal\n */\nexport var ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture';\nvar PriorityQueue = /** @class */ (function (_super) {\n __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 var _this = this;\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 attempt = this.updateAttempts(item);\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false;\n }\n var timeout = backoff({ attempt: attempt - 1 });\n if (minTimeout > 0 && timeout < minTimeout) {\n timeout = minTimeout;\n }\n setTimeout(function () {\n _this.queue.push(item);\n // remove from future list\n _this.future = _this.future.filter(function (f) { return f.id !== item.id; });\n // Lets listeners know that a 'future' message is now available in the queue\n _this.emit(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}(Emitter));\nexport { PriorityQueue };\n//# sourceMappingURL=index.js.map","import { __assign } from \"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 = __assign(__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 __assign(__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}());\nexport { CoreLogger };\n//# sourceMappingURL=index.js.map","import { __assign, __extends } from \"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 (__assign(__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}());\nexport { CoreStats };\nvar NullStats = /** @class */ (function (_super) {\n __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));\nexport { NullStats };\n//# sourceMappingURL=index.js.map","import { v4 as uuid } from '@lukeed/uuid';\nimport { dset } from 'dset';\nimport { CoreLogger } from '../logger';\nimport { NullStats } from '../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}());\nexport { ContextCancelation };\nvar CoreContext = /** @class */ (function () {\n function CoreContext(event, id, stats, logger) {\n if (id === void 0) { id = uuid(); }\n if (stats === void 0) { stats = new NullStats(); }\n if (logger === void 0) { logger = new 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 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}());\nexport { CoreContext };\n//# sourceMappingURL=index.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { CoreContext, ContextCancelation } from '../context';\nfunction tryAsync(fn) {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __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}\nexport function 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 ContextCancelation &&\n err.type === 'middleware_cancellation') {\n throw err;\n }\n if (err instanceof 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}\nexport function ensure(ctx, plugin) {\n return attempt(ctx, plugin).then(function (newContext) {\n if (newContext instanceof CoreContext) {\n return newContext;\n }\n ctx.log('debug', 'Context canceled');\n ctx.stats.increment('context_canceled');\n ctx.cancel(newContext);\n });\n}\n//# sourceMappingURL=delivery.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { groupBy } from '../utils/group-by';\nimport { ON_REMOVE_FROM_FUTURE } from '../priority-queue';\nimport { CoreContext, ContextCancelation } from '../context';\nimport { Emitter } from '@segment/analytics-generic-utils';\nimport { createTaskGroup } from '../task/task-group';\nimport { attempt, ensure } from './delivery';\nvar CoreEventQueue = /** @class */ (function (_super) {\n __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 = createTaskGroup();\n _this.plugins = [];\n _this.failedInitializations = [];\n _this.flushing = false;\n _this.queue = priorityQueue;\n _this.queue.on(ON_REMOVE_FROM_FUTURE, function () {\n _this.scheduleFlush(0);\n });\n return _this;\n }\n CoreEventQueue.prototype.register = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var handleLoadError, err_1;\n var _this = this;\n return __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 __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __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 __awaiter(this, void 0, void 0, function () {\n var willDeliver;\n return __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 __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __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 __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __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 return __awaiter(this, void 0, void 0, function () {\n var start, done, err_2, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.criticalTasks.done()];\n case 1:\n _a.sent();\n start = Date.now();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.flushOne(ctx)];\n case 3:\n ctx = _a.sent();\n done = Date.now() - start;\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 = _a.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 ContextCancelation) || err.retry;\n if (!retriable) {\n return false;\n }\n return this.queue.pushWithBackoff(ctx);\n };\n CoreEventQueue.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ctx, err_3, accepted;\n return __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 case 2:\n ctx = _a.sent();\n this.emit('flush', ctx, true);\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 = 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 __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 __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*/, ensure(ctx, beforeWare)];\n case 2:\n temp = _f.sent();\n if (temp instanceof 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*/, attempt(ctx, enrichmentWare)];\n case 6:\n temp = _f.sent();\n if (temp instanceof 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 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 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}(Emitter));\nexport { CoreEventQueue };\n//# sourceMappingURL=event-queue.js.map","import { isThenable } from '../utils/is-thenable';\nexport var 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 (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};\n//# sourceMappingURL=task-group.js.map","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport var isThenable = function (value) {\n return typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function';\n};\n//# sourceMappingURL=is-thenable.js.map","import { __spreadArray } from \"tslib\";\nexport function 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] = __spreadArray(__spreadArray([], ((_a = results[key]) !== null && _a !== void 0 ? _a : []), true), [item], false);\n });\n return results;\n}\n//# sourceMappingURL=group-by.js.map","import { ValidationError } from '@segment/analytics-core';\nexport const validateSettings = (settings) => {\n if (!settings.writeKey) {\n throw new ValidationError('writeKey', 'writeKey is missing.');\n }\n};\n//# sourceMappingURL=settings.js.map","// This file is generated.\nexport const version = '2.3.0';\n//# sourceMappingURL=version.js.map","import { uuid } from '../../lib/uuid';\nconst MAX_EVENT_SIZE_IN_KB = 32;\nconst MAX_BATCH_SIZE_IN_KB = 480; // (500 KB is the limit, leaving some padding)\nexport class ContextBatch {\n id = 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}\n//# sourceMappingURL=context-batch.js.map","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function 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}\nexport function p2s(alg, p2sInput) {\n return concat(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}\nexport function 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}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async 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 digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","export class JOSEError extends Error {\n constructor(message, options) {\n super(message, options);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nexport class JWTClaimValidationFailed extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nexport class JWTExpired extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nexport class JWEDecryptionFailed extends JOSEError {\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nexport class JWKSTimeout extends JOSEError {\n constructor(message = 'request timed out', options) {\n super(message, options);\n this.code = 'ERR_JWKS_TIMEOUT';\n }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n","function 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}\nexport function 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}\nexport function 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","function 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}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function 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","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import { isJWK } from '../lib/is_jwk.js';\nimport { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst exportKeyValue = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { encodeBase64, decodeBase64 } from './base64url.js';\nimport formatPEM from '../lib/format_pem.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { types } from './is_key_like.js';\nconst genericExport = async (keyType, keyFormat, key) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n if (!key.extractable) {\n throw new TypeError('CryptoKey is not extractable');\n }\n if (key.type !== keyType) {\n throw new TypeError(`key is not a ${keyType} key`);\n }\n return formatPEM(encodeBase64(new Uint8Array(await crypto.subtle.exportKey(keyFormat, key))), `${keyType.toUpperCase()} KEY`);\n};\nexport const toSPKI = (key) => {\n return genericExport('public', 'spki', key);\n};\nexport const toPKCS8 = (key) => {\n return genericExport('private', 'pkcs8', key);\n};\nconst findOid = (keyData, oid, from = 0) => {\n if (from === 0) {\n oid.unshift(oid.length);\n oid.unshift(0x06);\n }\n const i = keyData.indexOf(oid[0], from);\n if (i === -1)\n return false;\n const sub = keyData.subarray(i, i + oid.length);\n if (sub.length !== oid.length)\n return false;\n return sub.every((value, index) => value === oid[index]) || findOid(keyData, oid, i + 1);\n};\nconst getNamedCurve = (keyData) => {\n switch (true) {\n case findOid(keyData, [0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07]):\n return 'P-256';\n case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x22]):\n return 'P-384';\n case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x23]):\n return 'P-521';\n case findOid(keyData, [0x2b, 0x65, 0x6e]):\n return 'X25519';\n case findOid(keyData, [0x2b, 0x65, 0x6f]):\n return 'X448';\n case findOid(keyData, [0x2b, 0x65, 0x70]):\n return 'Ed25519';\n case findOid(keyData, [0x2b, 0x65, 0x71]):\n return 'Ed448';\n default:\n throw new JOSENotSupported('Invalid or unsupported EC Key Curve or OKP Key Sub Type');\n }\n};\nconst genericImport = async (replace, keyFormat, pem, alg, options) => {\n let algorithm;\n let keyUsages;\n const keyData = new Uint8Array(atob(pem.replace(replace, ''))\n .split('')\n .map((c) => c.charCodeAt(0)));\n const isPublic = keyFormat === 'spki';\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${alg.slice(-3)}` };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${alg.slice(-3)}` };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n };\n keyUsages = isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n const namedCurve = getNamedCurve(keyData);\n algorithm = namedCurve.startsWith('P-') ? { name: 'ECDH', namedCurve } : { name: namedCurve };\n keyUsages = isPublic ? [] : ['deriveBits'];\n break;\n }\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'EdDSA':\n algorithm = { name: getNamedCurve(keyData) };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported \"alg\" (Algorithm) value');\n }\n return crypto.subtle.importKey(keyFormat, keyData, algorithm, options?.extractable ?? false, keyUsages);\n};\nexport const fromPKCS8 = (pem, alg, options) => {\n return genericImport(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g, 'pkcs8', pem, alg, options);\n};\nexport const fromSPKI = (pem, alg, options) => {\n return genericImport(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g, 'spki', pem, alg, options);\n};\nfunction getElement(seq) {\n const result = [];\n let next = 0;\n while (next < seq.length) {\n const nextPart = parseElement(seq.subarray(next));\n result.push(nextPart);\n next += nextPart.byteLength;\n }\n return result;\n}\nfunction parseElement(bytes) {\n let position = 0;\n let tag = bytes[0] & 0x1f;\n position++;\n if (tag === 0x1f) {\n tag = 0;\n while (bytes[position] >= 0x80) {\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n let length = 0;\n if (bytes[position] < 0x80) {\n length = bytes[position];\n position++;\n }\n else if (length === 0x80) {\n length = 0;\n while (bytes[position + length] !== 0 || bytes[position + length + 1] !== 0) {\n if (length > bytes.byteLength) {\n throw new TypeError('invalid indefinite form length');\n }\n length++;\n }\n const byteLength = position + length + 2;\n return {\n byteLength,\n contents: bytes.subarray(position, position + length),\n raw: bytes.subarray(0, byteLength),\n };\n }\n else {\n const numberOfDigits = bytes[position] & 0x7f;\n position++;\n length = 0;\n for (let i = 0; i < numberOfDigits; i++) {\n length = length * 256 + bytes[position];\n position++;\n }\n }\n const byteLength = position + length;\n return {\n byteLength,\n contents: bytes.subarray(position, byteLength),\n raw: bytes.subarray(0, byteLength),\n };\n}\nfunction spkiFromX509(buf) {\n const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents);\n return encodeBase64(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw);\n}\nfunction getSPKI(x509) {\n const pem = x509.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '');\n const raw = decodeBase64(pem);\n return formatPEM(spkiFromX509(raw), 'PUBLIC KEY');\n}\nexport const fromX509 = (pem, alg, options) => {\n let spki;\n try {\n spki = getSPKI(pem);\n }\n catch (cause) {\n throw new TypeError('Failed to parse the X.509 certificate', { cause });\n }\n return fromSPKI(spki, alg, options);\n};\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nimport * as jwk from './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 (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...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 (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...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}\nexport default checkKeyType.bind(undefined, false);\nexport const checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const 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;\nexport 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","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getSignKey from './get_sign_verify_key.js';\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getSignKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\nexport default sign;\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nimport normalize from './normalize_key.js';\nexport default async function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n return { name: 'Ed25519' };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","import { encode as base64url } from '../../runtime/base64url.js';\nimport sign from '../../runtime/sign.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nexport class FlattenedSign {\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 JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader)) {\n throw new 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 = validateCrit(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 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 JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyTypeWithJwk(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(base64url(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(base64url(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign(alg, key, data);\n const jws = {\n signature: base64url(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n","const 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};\nexport default isDisjoint;\n","import { JOSENotSupported } from '../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 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}\nexport default validateCrit;\n","import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n constructor(payload) {\n this._flattened = new 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}\n","import epoch from '../lib/epoch.js';\nimport isObject from '../lib/is_object.js';\nimport secs from '../lib/secs.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nexport class ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(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', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(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', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n","import { CompactSign } from '../jws/compact/sign.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { encoder } from '../lib/buffer_utils.js';\nimport { ProduceJWT } from './produce.js';\nexport class SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(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 JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n","import { uuid } from './uuid';\nimport { SignJWT, importPKCS8 } from 'jose';\nimport { backoff, sleep } from '@segment/analytics-core';\nimport { Emitter } from '@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}\nexport class 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 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 const timeUntilRefreshInMs = backoff({\n attempt: this.retryCount,\n minTimeout: 25,\n maxTimeout: 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 if (headers['x-ratelimit-reset']) {\n const rateLimitResetTimestamp = parseInt(headers['x-ratelimit-reset'], 10);\n if (isFinite(rateLimitResetTimestamp)) {\n timeUntilRefreshInMs =\n rateLimitResetTimestamp - Date.now() + this.clockSkewInSeconds * 1000;\n }\n else {\n timeUntilRefreshInMs = 5 * 1000;\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 sleep(timeUntilRefreshInMs);\n timeUntilRefreshInMs = 0;\n }\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 = 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 importPKCS8(this.clientKey, 'RS256');\n const signedJwt = await new 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_in < Date.now() / 1000);\n }\n}\n//# sourceMappingURL=token-manager.js.map","import { decode as decodeBase64URL } from '../runtime/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async 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 fromSPKI(spki, alg, options);\n}\nexport async 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 fromX509(x509, alg, options);\n}\nexport async 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 fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (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 decodeBase64URL(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { backoff } from '@segment/analytics-core';\nimport { tryCreateFormattedUrl } from '../../lib/create-url';\nimport { createDeferred } from '@segment/analytics-generic-utils';\nimport { ContextBatch } from './context-batch';\nimport { TokenManager } from '../../lib/token-manager';\nfunction sleep(timeoutInMs) {\n return new Promise((resolve) => setTimeout(resolve, timeoutInMs));\n}\nfunction noop() { }\n/**\n * The Publisher is responsible for batching events and sending them to the Segment API.\n */\nexport class 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 _tokenManager;\n constructor({ host, path, maxRetries, flushAt, flushInterval, writeKey, httpRequestTimeout, httpClient, disable, oauthSettings, }, emitter) {\n this._emitter = emitter;\n this._maxRetries = maxRetries;\n this._flushAt = Math.max(flushAt, 1);\n this._flushInterval = flushInterval;\n this._url = 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 if (oauthSettings) {\n this._tokenManager = new TokenManager({\n ...oauthSettings,\n httpClient: oauthSettings.httpClient ?? httpClient,\n maxRetries: oauthSettings.maxRetries ?? maxRetries,\n });\n }\n }\n createBatch() {\n this.pendingFlushTimeout && clearTimeout(this.pendingFlushTimeout);\n const batch = new 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 } = 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 async send(batch) {\n if (this._flushPendingItemsCount) {\n this._flushPendingItemsCount -= batch.length;\n }\n const events = batch.getEvents();\n const maxAttempts = this._maxRetries + 1;\n let currentAttempt = 0;\n while (currentAttempt < maxAttempts) {\n currentAttempt++;\n let requestedRetryTimeout;\n let failureReason;\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 const headers = {\n 'Content-Type': 'application/json',\n 'User-Agent': 'analytics-node-next/latest',\n ...(authString ? { Authorization: authString } : {}),\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 if (response.status >= 200 && response.status < 300) {\n // Successfully sent events, so exit!\n batch.resolveEvents();\n return;\n }\n else if (this._tokenManager &&\n (response.status === 400 ||\n response.status === 401 ||\n response.status === 403)) {\n // Retry with a new OAuth token if we have OAuth data\n this._tokenManager.clearToken();\n failureReason = new Error(`[${response.status}] ${response.statusText}`);\n }\n else if (response.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(`[${response.status}] ${response.statusText}`));\n return;\n }\n else if (response.status === 429) {\n // Rate limited, wait for the reset time\n if (response.headers && 'x-ratelimit-reset' in response.headers) {\n const rateLimitResetTimestamp = parseInt(response.headers['x-ratelimit-reset'], 10);\n if (isFinite(rateLimitResetTimestamp)) {\n requestedRetryTimeout = rateLimitResetTimestamp - Date.now();\n }\n }\n failureReason = new Error(`[${response.status}] ${response.statusText}`);\n }\n else {\n // Treat other errors as transient and retry.\n failureReason = new Error(`[${response.status}] ${response.statusText}`);\n }\n }\n catch (err) {\n // Network errors get thrown, retry them.\n failureReason = err;\n }\n // Final attempt failed, update context and resolve events.\n if (currentAttempt === maxAttempts) {\n resolveFailedBatch(batch, failureReason);\n return;\n }\n // Retry after attempt-based backoff.\n await sleep(requestedRetryTimeout\n ? requestedRetryTimeout\n : backoff({\n attempt: currentAttempt,\n minTimeout: 25,\n maxTimeout: 1000,\n }));\n }\n }\n}\nfunction resolveFailedBatch(batch, reason) {\n batch.getContexts().forEach((ctx) => ctx.setFailedDelivery({ reason }));\n batch.resolveEvents();\n}\n//# sourceMappingURL=publisher.js.map","const 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 */\nexport const tryCreateFormattedUrl = (host, path) => {\n return stripTrailingSlash(new URL(path || '', host).href);\n};\n//# sourceMappingURL=create-url.js.map","export const 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};\n//# sourceMappingURL=env.js.map","import { Publisher } from './publisher';\nimport { version } from '../../generated/version';\nimport { detectRuntime } from '../../lib/env';\nfunction normalizeEvent(ctx) {\n ctx.updateEvent('context.library.name', '@segment/analytics-node');\n ctx.updateEvent('context.library.version', version);\n const runtime = 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}\nexport function 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}\nexport const createConfiguredNodePlugin = (props, emitter) => {\n const publisher = new Publisher(props, emitter);\n return {\n publisher: publisher,\n plugin: createNodePlugin(publisher),\n };\n};\n//# sourceMappingURL=index.js.map","import { uuid } from './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 */\nexport const createMessageId = () => {\n return `node-next-${Date.now()}-${uuid()}`;\n};\n//# sourceMappingURL=get-message-id.js.map","import { assertUserIdentity, CoreEventFactory } from '@segment/analytics-core';\nimport { createMessageId } from '../lib/get-message-id';\nexport class NodeEventFactory extends CoreEventFactory {\n constructor() {\n super({\n createMessageId,\n onFinishedEvent: (event) => {\n assertUserIdentity(event);\n },\n });\n }\n}\n//# sourceMappingURL=event-factory.js.map","// create a derived class since we may want to add node specific things to Context later\nimport { CoreContext } from '@segment/analytics-core';\n// While this is not a type, it is a definition\nexport class Context extends CoreContext {\n static system() {\n return new this({ type: 'track', event: 'system' });\n }\n}\n//# sourceMappingURL=context.js.map","import { dispatch } from '@segment/analytics-core';\nimport { Context } from './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 */\nexport const dispatchAndEmit = async (event, queue, emitter, callback) => {\n try {\n const context = new Context(event);\n const ctx = await 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};\n//# sourceMappingURL=dispatch-emit.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { invokeCallback } from '../callback';\n/* The amount of time in ms to wait before invoking the callback. */\nexport var 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};\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 */\nexport function dispatch(ctx, queue, emitter, options) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, dispatched;\n return __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*/, invokeCallback(dispatched, options.callback, 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}\n//# sourceMappingURL=dispatch.js.map","import { Emitter } from '@segment/analytics-generic-utils';\nexport class NodeEmitter extends Emitter {\n}\n//# sourceMappingURL=emitter.js.map","import { CoreEventQueue, PriorityQueue } from '@segment/analytics-core';\nclass NodePriorityQueue extends 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}\nexport class NodeEventQueue extends CoreEventQueue {\n constructor() {\n super(new NodePriorityQueue());\n }\n}\n//# sourceMappingURL=event-queue.js.map","/**\n * use non-native event emitter for the benefit of non-node runtimes like CF workers.\n */\nimport { Emitter } from '@segment/analytics-generic-utils';\nimport { detectRuntime } from './env';\n/**\n * adapted from: https://www.npmjs.com/package/node-abort-controller\n */\nexport class AbortSignal {\n onabort = null;\n aborted = false;\n eventEmitter = new 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}\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 */\nexport class 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}\n/**\n * @param timeoutMs - Set a request timeout, after which the request is cancelled.\n */\nexport const abortSignalAfterTimeout = (timeoutMs) => {\n if (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};\n//# sourceMappingURL=abort.js.map","export const fetch = async (...args) => {\n if (globalThis.fetch) {\n return globalThis.fetch(...args);\n }\n // This guard causes is important, as it causes dead-code elimination to be enabled inside this block.\n // @ts-ignore\n else if (typeof EdgeRuntime !== 'string') {\n return (await import('node-fetch')).default(...args);\n }\n else {\n throw new Error('Invariant: an edge runtime that does not support fetch should not exist');\n }\n};\n//# sourceMappingURL=fetch.js.map","import { abortSignalAfterTimeout } from './abort';\nimport { fetch as defaultFetch } from './fetch';\n/**\n * Default HTTP client implementation using fetch\n */\nexport class FetchHTTPClient {\n _fetch;\n constructor(fetchFn) {\n this._fetch = fetchFn ?? defaultFetch;\n }\n async makeRequest(options) {\n const [signal, timeoutId] = 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}\n//# sourceMappingURL=http-client.js.map","import { bindAll, pTimeout } from '@segment/analytics-core';\nimport { validateSettings } from './settings';\nimport { version } from '../generated/version';\nimport { createConfiguredNodePlugin } from '../plugins/segmentio';\nimport { NodeEventFactory } from './event-factory';\nimport { dispatchAndEmit } from './dispatch-emit';\nimport { NodeEmitter } from './emitter';\nimport { Context } from './context';\nimport { NodeEventQueue } from './event-queue';\nimport { FetchHTTPClient } from '../lib/http-client';\nexport class Analytics extends 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 validateSettings(settings);\n this._eventFactory = new NodeEventFactory();\n this._queue = new NodeEventQueue();\n const flushInterval = settings.flushInterval ?? 10000;\n this._closeAndFlushDefaultTimeout = flushInterval * 1.25; // add arbitrary multiplier in case an event is in a plugin.\n const { plugin, publisher } = createConfiguredNodePlugin({\n writeKey: settings.writeKey,\n host: settings.host,\n path: settings.path,\n maxRetries: settings.maxRetries ?? 3,\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 FetchHTTPClient(settings.httpClient)\n : settings.httpClient ?? new FetchHTTPClient(),\n oauthSettings: settings.oauthSettings,\n }, this);\n this._publisher = publisher;\n this.ready = this.register(plugin).then(() => undefined);\n this.emit('initialize', settings);\n bindAll(this);\n }\n get VERSION() {\n return 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 return timeout ? pTimeout(promise, timeout).catch(() => undefined) : promise;\n }\n _dispatch(segmentEvent, callback) {\n if (this._isClosed) {\n this.emit('call_after_close', segmentEvent);\n return undefined;\n }\n this._pendingEvents++;\n 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.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.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}\n//# sourceMappingURL=analytics-node.js.map","export function 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}\n//# sourceMappingURL=bind-all.js.map","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n",null,"'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n",null,null,null,"\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar globalObject = getGlobal();\n\nmodule.exports = exports = globalObject.fetch;\n\n// Needed for TypeScript and Webpack.\nif (globalObject.fetch) {\n\texports.default = globalObject.fetch.bind(globalObject);\n}\n\nexports.Headers = globalObject.Headers;\nexports.Request = globalObject.Request;\nexports.Response = globalObject.Response;\n",null,null],"names":["executeCondition","condition","value","targetValue","path","obj","split","reduce","acc","part","rule","conditions","every","c","some","Array","isArray","includes","RegExp","test","String","startsWith","endsWith","ConsoleColors","primary","success","feature","cta","info","inherit","warning","ConsoleStyles","header","section","highlight","link","body","logCopilotKitPlatformMessage","console","log","publicApiKeyRequired","trim","logStyled","template","styles","styledConsole","message","Severity","ErrorVisibility","ERROR_NAMES","COPILOT_ERROR","COPILOT_API_DISCOVERY_ERROR","COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR","COPILOT_KIT_AGENT_DISCOVERY_ERROR","COPILOT_KIT_LOW_LEVEL_ERROR","COPILOT_KIT_VERSION_MISMATCH_ERROR","RESOLVED_COPILOT_KIT_ERROR","CONFIGURATION_ERROR","MISSING_PUBLIC_API_KEY_ERROR","UPGRADE_REQUIRED_ERROR","BANNER_ERROR_NAMES","COPILOT_CLOUD_ERROR_NAMES","CopilotKitErrorCode","BASE_URL","getSeeMoreMarkdown","ERROR_CONFIG","NETWORK_ERROR","statusCode","troubleshootingUrl","visibility","BANNER","severity","CRITICAL","NOT_FOUND","AGENT_NOT_FOUND","API_NOT_FOUND","REMOTE_ENDPOINT_NOT_FOUND","AUTHENTICATION_ERROR","MISUSE","DEV_ONLY","WARNING","UNKNOWN","TOAST","VERSION_MISMATCH","INFO","CopilotKitError","GraphQLError","constructor","code","name","config","resolvedVisibility","_a","resolvedSeverity","undefined","super","extensions","originalError","stack","Error","this","getVersionMismatchErrorMessage","reactCoreVersion","runtimeVersion","runtimeClientGqlVersion","CopilotKitApiDiscoveryError","params","url","operationSuffix","_b","_c","CopilotKitRemoteEndpointDiscoveryError","CopilotKitLowLevelError","error","errorCode","resolveLowLevelErrorMessage","ConfigurationError","isStructuredCopilotKitError","troubleshootingLink","genericMessage","description","actionParametersToJsonSchema","actionParameters","parameters","parameter","convertAttribute","requiredParameterNames","arg","required","push","type","properties","convertJsonSchemaToParameter","schema","isRequired","baseParameter","Object","assign","enum","attributes","requiredFields","propName","propSchema","entries","items","attribute","attr","filter","map","length","slice","convertJsonSchemaToZodSchema","jsonSchema","spec","keys","z","object","optional","key","describe","string","number","boolean","itemSchema","array","toSerializable","toString","result","COPILOT_CLOUD_API_URL","COPILOT_CLOUD_CHAT_URL","extendStatics","d","b","setPrototypeOf","__proto__","p","prototype","hasOwnProperty","call","__extends","TypeError","__","create","__assign","t","s","i","n","arguments","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","__spreadArray","to","from","pack","ar","l","concat","dset","val","x","k","indexOf","SuppressedError","ValidationError","_super","field","_this","isString","exists","isPlainObject","toLowerCase","stringError","objError","nilError","validateEvent","event","assertEventExists","assertEventType","messageId","assertMessageId","assertTrackEventName","assertTrackEventProperties","traits","assertTraits","InternalEventFactorySettings","settings","createMessageId","onEventMethodCall","onFinishedEvent","CoreEventFactory","track","options","integrationOptions","normalize","baseEvent","integrations","page","category","screen","identify","userId","integrationsOptions","group","groupId","alias","base","previousId","context","eventOverrideKeys","providedOptionsKeys","eventOverrides","forEach","fn","integrationBooleans","integrationNames","Boolean","allIntegrations","overrides","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","evt","timestamp","Date","pTimeout","promise","timeout","timeoutId","setTimeout","clearTimeout","catch","sleep","timeoutInMs","invokeCallback","ctx","callback","delay","err","cb","stats","increment","Emitter","callbacks","warned","maxListeners","warnIfPossibleMemoryLeak","warn","on","once","args","_i","off","without","emit","backoff","random","Math","minTimeout","factor","attempt","maxTimeout","Infinity","min","pow","BUFFER","ON_REMOVE_FROM_FUTURE","PriorityQueue","maxAttempts","queue","seen","future","accepted","operation","updateAttempts","sort","a","getAttempts","pushWithBackoff","item","id","find","shift","defineProperty","get","enumerable","configurable","IDX","HEX","substring","v4","num","out","CoreLogger","_logs","level","extras","time","flush","logs","formatted","line","json","JSON","stringify","toISOString","table","logEntry","NullStats","gauge","serialize","CoreStats","metrics","metric","by","tags","now","m","join","counter","ContextCancelation","retry","reason","CoreContext","logger","uuid","attempts","_id","system","isSame","other","cancel","updateEvent","integrationName","failedDelivery","_failedDelivery","setFailedDelivery","toJSON","plugin","start","getTime","hook","err_1","tryAsync","ensure","newContext","CoreEventQueue","priorityQueue","taskCompletionPromise","resolvePromise","count","criticalTasks","run","returnValue","res","finally","plugins","failedInitializations","flushing","scheduleFlush","register","instance","handleLoadError","load","deregister","e_1","unload","dispatch","willDeliver","subscribeToDelivery","onDeliver","flushed","delivered","dispatchSingle","deliver","enqueuRetry","isEmpty","err_2","flushOne","err_3","isReady","availableExtensions","denyList","grouper","results","available","alternativeNameMatch","alternativeNames","All","suggestedKey","before","enrichment","_d","destination","_e","after","destinations","before_1","beforeWare","enrichment_1","enrichmentWare","temp","afterCalls","_f","all","version","ContextBatch","sizeInBytes","maxEventCount","max","tryAdd","eventSize","calculateSize","MAX_EVENT_SIZE_IN_KB","MAX_BATCH_SIZE_IN_KB","encodeURI","getEvents","getContexts","resolveEvents","resolver","crypto$1","crypto","isCryptoKey","CryptoKey","encoder","TextEncoder","decoder","TextDecoder","encode","input","unencoded","arr","fromCharCode","subarray","btoa","encodeBase64","replace","decode","encoded","Uint8Array","binary","atob","bytes","charCodeAt","decodeBase64","JOSEError","captureStackTrace","payload","claim","cause","JOSENotSupported","JWSInvalid","JWTInvalid","unusable","prop","isAlgorithm","algorithm","getHashLength","hash","parseInt","checkSigCryptoKey","alg","usages","expected","getNamedCurve","namedCurve","msg","last","checkUsage","actual","types","invalidKeyInput","withAlg","isKeyLike","toStringTag","isObject","getPrototypeOf","proto","isJWK","kty","parse","async","jwk","keyUsages","crv","subtleMapping","ext","key_ops","keyData","use","subtle","importKey","exportKeyValue","privCache","isKeyObject","importAndCache","cache","freeze","cached","cryptoKey","importJWK","set","export","format","WeakMap","findOid","oid","unshift","sub","index","fromPKCS8","pem","keyFormat","genericImport","tag","jwkMatchesOp","usage","symmetricTypeCheck","allowJwk","jwk.isJWK","jwk.isSecretJWK","checkKeyType","jwk.isPrivateJWK","jwk.isPublicJWK","asymmetricTypeCheck","bind","checkKeyTypeWithJwk","epoch","date","floor","day","hour","REGEX","secs","str","matched","exec","parseFloat","numericDate","round","minute","sign","data","getSignKey","modulusLength","checkKeyLength","signature","saltLength","subtleAlgorithm","FlattenedSign","_payload","setProtectedHeader","protectedHeader","_protectedHeader","setUnprotectedHeader","unprotectedHeader","_unprotectedHeader","headers","sources","size","has","add","Set","isDisjoint","joseHeader","Err","recognizedDefault","recognizedOption","crit","recognized","Map","validateCrit","b64","base64url","buffers","buf","buffer","jws","protected","CompactSign","_flattened","validateInput","Number","isFinite","ProduceJWT","setIssuer","issuer","iss","setSubject","subject","setAudience","audience","aud","setJti","jwtId","jti","setNotBefore","nbf","setExpirationTime","exp","setIssuedAt","iat","SignJWT","sig","convertHeaders","lowercaseHeaders","thing","isHeaders","TokenManager","grantType","clientAssertionType","clientId","clientKey","keyId","scope","authServer","httpClient","maxRetries","clockSkewInSeconds","accessToken","tokenEmitter","retryCount","pollerTimer","props","token","stopPoller","pollerLoop","response","timeUntilRefreshInMs","requestAccessToken","handleTransientError","text","isValidCustomResponse","handleInvalidCustomResponse","updateClockSkew","status","handleRateLimited","handleUnrecoverableErrors","statusText","access_token","expires_in","expires_at","queueNextPoll","forceEmitError","incrementRetries","rateLimitResetTimestamp","dateInMs","unref","currentUTCInSeconds","jwtBody","MAX_EXPIRY_IN_SECONDS","pkcs8","importPKCS8","signedJwt","kid","typ","requestBody","requestOptions","method","httpRequestTimeout","makeRequest","getAccessToken","isValidToken","clearToken","noop","Publisher","pendingFlushTimeout","_batch","_flushInterval","_flushAt","_maxRetries","_url","_flushPendingItemsCount","_httpRequestTimeout","_emitter","_disable","_httpClient","_writeKey","_tokenManager","host","flushAt","flushInterval","writeKey","disable","oauthSettings","emitter","URL","href","tryCreateFormattedUrl","createBatch","batch","send","clearBatch","pendingItemsCount","enqueue","ctxPromise","settled","_resolve","_reject","isSettled","createDeferred","pendingItem","isExpectingNoMoreItems","fallbackBatch","fbAddStatus","events","currentAttempt","requestedRetryTimeout","failureReason","authString","Authorization","request","sentAt","resolveFailedBatch","detectRuntime","process","env","window","WebSocketPair","EdgeRuntime","WorkerGlobalScope","importScripts","createNodePlugin","publisher","action","runtime","normalizeEvent","isLoaded","NodeEventFactory","USER_FIELD_NAME","anonymousId","getAnyUserId","assertUserIdentity","Context","dispatchAndEmit","startTime","dispatched","startTimeInEpochMS","timeoutInMS","elapsedTime","debug","NodeEmitter","NodePriorityQueue","NodeEventQueue","AbortSignal","onabort","aborted","eventEmitter","removeEventListener","addEventListener","dispatchEvent","target","handlerName","AbortController$1","signal","abort","fetch","globalThis","browser$1","default","FetchHTTPClient","_fetch","fetchFn","defaultFetch","timeoutMs","ac","AbortController","abortSignalAfterTimeout","requestInit","Analytics","_eventFactory","_isClosed","_pendingEvents","_closeAndFlushDefaultTimeout","_publisher","_isFlushing","_queue","ready","validateSettings","createConfiguredNodePlugin","maxEventsInBatch","getOwnPropertyNames","desc","getOwnPropertyDescriptor","bindAll","VERSION","closeAndFlush","close","_dispatch","segmentEvent","registrations","xt","el","pluginNames","deregistrations","pl","cssKeywords","colorName","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","conversions","model","comparativeDistance","r","delta","h","rdif","gdif","bdif","diff","diffc","w","reversed","currentClosestKeyword","currentClosestDistance","distance","t2","t3","t1","smin","lmin","hi","q","vmin","sl","wh","bl","ratio","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","saturation","ansi","color","mult","rem","toUpperCase","match","colorString","char","integer","chroma","grayscale","hue","pure","mg","require$$0","deriveBFS","fromModel","graph","models","len","parent","buildGraph","current","adjacents","adjacent","node","wrapConversion","toModel","cur","conversion","route","require$$1","routes","wrappedFn","arg0","wrapRounded","raw","wrapRaw","colorConvert","wrapAnsi16","offset","wrapAnsi256","wrapAnsi16m","ansi2ansi","rgb2rgb","setLazyProperty","property","makeDynamicStyles","wrap","targetSpace","identity","isBackground","sourceSpace","suite","module","codes","modifier","reset","bold","dim","italic","underline","inverse","hidden","strikethrough","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","bgGray","bgGrey","groupName","styleName","style","open","flattenObject","parentKey","ansiStyles","stdout","stdoutColor","stderr","stderrColor","browser","stringReplaceAll","stringEncaseCRLFWithFirstIndex","util","replacer","substringLength","endIndex","substr","prefix","postfix","gotCR","levelMapping","ChalkClass","chalkFactory","chalk","isInteger","colorLevel","applyOptions","arguments_","chalkTag","Chalk","Instance","builder","createBuilder","createStyler","_styler","_isEmpty","visible","usedModels","styler","defineProperties","_generator","openAll","closeAll","self","applyStyle","lfIndex","strings","firstString","parts","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","unescape","u","bracket","fromCodePoint","parseArguments","chunks","matches","chunk","isNaN","escape","character","parseStyle","lastIndex","buildStyle","enabled","layer","templates","temporary","escapeCharacter","errMessage","require$$3","supportsColor","source","SCARF_BASE_URL","packageJson.version","scarfClient","logEvent","controller","queryParams","URLSearchParams","append","ok","isTelemetryDisabled","COPILOTKIT_TELEMETRY_DISABLED","DO_NOT_TRACK","COPILOTKIT_VERSION","globalObject","global","getGlobal","exports","Headers","Request","Response","agentName","availableAgents","seeMore","agentList","agent","docsLink","isRemoteEndpoint","resolvedCode","packageName","packageVersion","telemetryDisabled","telemetryBaseUrl","sampleRate","globalProperties","cloudConfiguration","uuidv4","setSampleRate","COPILOTKIT_SEGMENT_WRITE_KEY","segment","setGlobalProperties","shouldSendEvent","capture","flattenedProperties","propertiesWithGlobal","orderedPropertiesWithGlobal","setCloudConfiguration","cloud","publicApiKey","baseUrl","_sampleRate","COPILOTKIT_TELEMETRY_SAMPLE_RATE","sampleRateAdjustmentFactor","sampleWeight","namespace","BASE_NAMESPACE","boundNamespace","uuidv5","stringInput","converter","navigator","userAgent","validate","fallback","clone","trimmed","stream","reader","getReader","read"],"mappings":"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","x_google_ignoreList":[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,79,80,81,82,86]}