@amplitude/session-replay-browser 1.30.3 → 1.30.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/index-min.js +1 -1
- package/lib/scripts/index-min.js.gz +0 -0
- package/lib/scripts/index-min.js.map +1 -1
- package/lib/scripts/session-replay-browser-min.js +1 -1
- package/lib/scripts/session-replay-browser-min.js.gz +0 -0
- package/lib/scripts/session-replay-browser-min.js.map +1 -1
- package/lib/scripts/targeting-min.js +1 -1
- package/lib/scripts/targeting-min.js.gz +0 -0
- package/lib/scripts/targeting-min.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targeting-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../node_modules/idb/build/index.js","../../../../node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js","../../../targeting/lib/esm/targeting-idb-store.js","../../../targeting/lib/esm/targeting.js","../../../targeting/lib/esm/index.js","../../../targeting/lib/esm/targeting-factory.js"],"sourcesContent":["/******************************************************************************\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","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","/******************************************************************************\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar EvaluationOperator = {\n IS: 'is',\n IS_NOT: 'is not',\n CONTAINS: 'contains',\n DOES_NOT_CONTAIN: 'does not contain',\n LESS_THAN: 'less',\n LESS_THAN_EQUALS: 'less or equal',\n GREATER_THAN: 'greater',\n GREATER_THAN_EQUALS: 'greater or equal',\n VERSION_LESS_THAN: 'version less',\n VERSION_LESS_THAN_EQUALS: 'version less or equal',\n VERSION_GREATER_THAN: 'version greater',\n VERSION_GREATER_THAN_EQUALS: 'version greater or equal',\n SET_IS: 'set is',\n SET_IS_NOT: 'set is not',\n SET_CONTAINS: 'set contains',\n SET_DOES_NOT_CONTAIN: 'set does not contain',\n SET_CONTAINS_ANY: 'set contains any',\n SET_DOES_NOT_CONTAIN_ANY: 'set does not contain any',\n REGEX_MATCH: 'regex match',\n REGEX_DOES_NOT_MATCH: 'regex does not match',\n};\n\nvar stringToUtf8ByteArray = function (str) {\n var out = [];\n var p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) == 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return Uint8Array.from(out);\n};\n\nvar C1_32 = -0x3361d2af;\nvar C2_32 = 0x1b873593;\nvar R1_32 = 15;\nvar R2_32 = 13;\nvar M_32 = 5;\nvar N_32 = -0x19ab949c;\nvar hash32x86 = function (input, seed) {\n if (seed === void 0) { seed = 0; }\n var data = stringToUtf8ByteArray(input);\n var length = data.length;\n var nBlocks = length >> 2;\n var hash = seed;\n // body\n for (var i = 0; i < nBlocks; i++) {\n var index_1 = i << 2;\n var k = readIntLe(data, index_1);\n hash = mix32(k, hash);\n }\n // tail\n var index = nBlocks << 2;\n var k1 = 0;\n switch (length - index) {\n case 3:\n k1 ^= data[index + 2] << 16;\n k1 ^= data[index + 1] << 8;\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n case 2:\n k1 ^= data[index + 1] << 8;\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n case 1:\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n }\n hash ^= length;\n return fmix32(hash) >>> 0;\n};\nvar mix32 = function (k, hash) {\n var kResult = k;\n var hashResult = hash;\n kResult = Math.imul(kResult, C1_32);\n kResult = rotateLeft(kResult, R1_32);\n kResult = Math.imul(kResult, C2_32);\n hashResult ^= kResult;\n hashResult = rotateLeft(hashResult, R2_32);\n hashResult = Math.imul(hashResult, M_32);\n return (hashResult + N_32) | 0;\n};\nvar fmix32 = function (hash) {\n var hashResult = hash;\n hashResult ^= hashResult >>> 16;\n hashResult = Math.imul(hashResult, -0x7a143595);\n hashResult ^= hashResult >>> 13;\n hashResult = Math.imul(hashResult, -0x3d4d51cb);\n hashResult ^= hashResult >>> 16;\n return hashResult;\n};\nvar rotateLeft = function (x, n, width) {\n if (width === void 0) { width = 32; }\n if (n > width)\n n = n % width;\n var mask = (0xffffffff << (width - n)) >>> 0;\n var r = (((x & mask) >>> 0) >>> (width - n)) >>> 0;\n return ((x << n) | r) >>> 0;\n};\nvar readIntLe = function (data, index) {\n if (index === void 0) { index = 0; }\n var n = (data[index] << 24) |\n (data[index + 1] << 16) |\n (data[index + 2] << 8) |\n data[index + 3];\n return reverseBytes(n);\n};\nvar reverseBytes = function (n) {\n return (((n & -0x1000000) >>> 24) |\n ((n & 0x00ff0000) >>> 8) |\n ((n & 0x0000ff00) << 8) |\n ((n & 0x000000ff) << 24));\n};\n\nvar select = function (selectable, selector) {\n var e_1, _a;\n if (!selector || selector.length === 0) {\n return undefined;\n }\n try {\n for (var selector_1 = __values(selector), selector_1_1 = selector_1.next(); !selector_1_1.done; selector_1_1 = selector_1.next()) {\n var selectorElement = selector_1_1.value;\n if (!selectorElement || !selectable || typeof selectable !== 'object') {\n return undefined;\n }\n selectable = selectable[selectorElement];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (selector_1_1 && !selector_1_1.done && (_a = selector_1.return)) _a.call(selector_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!selectable) {\n return undefined;\n }\n else {\n return selectable;\n }\n};\n\n// major and minor should be non-negative numbers separated by a dot\nvar MAJOR_MINOR_REGEX = '(\\\\d+)\\\\.(\\\\d+)';\n// patch should be a non-negative number\nvar PATCH_REGEX = '(\\\\d+)';\n// prerelease is optional. If provided, it should be a hyphen followed by a\n// series of dot separated identifiers where an identifer can contain anything in [-0-9a-zA-Z]\nvar PRERELEASE_REGEX = '(-(([-\\\\w]+\\\\.?)*))?';\n// version pattern should be major.minor(.patchAndPreRelease) where .patchAndPreRelease is optional\nvar VERSION_PATTERN = \"^\".concat(MAJOR_MINOR_REGEX, \"(\\\\.\").concat(PATCH_REGEX).concat(PRERELEASE_REGEX, \")?$\");\nvar SemanticVersion = /** @class */ (function () {\n function SemanticVersion(major, minor, patch, preRelease) {\n if (preRelease === void 0) { preRelease = undefined; }\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.preRelease = preRelease;\n }\n SemanticVersion.parse = function (version) {\n if (!version) {\n return undefined;\n }\n var matchGroup = new RegExp(VERSION_PATTERN).exec(version);\n if (!matchGroup) {\n return undefined;\n }\n var major = Number(matchGroup[1]);\n var minor = Number(matchGroup[2]);\n if (isNaN(major) || isNaN(minor)) {\n return undefined;\n }\n var patch = Number(matchGroup[4]) || 0;\n var preRelease = matchGroup[5] || undefined;\n return new SemanticVersion(major, minor, patch, preRelease);\n };\n SemanticVersion.prototype.compareTo = function (other) {\n if (this.major > other.major)\n return 1;\n if (this.major < other.major)\n return -1;\n if (this.minor > other.minor)\n return 1;\n if (this.minor < other.minor)\n return -1;\n if (this.patch > other.patch)\n return 1;\n if (this.patch < other.patch)\n return -1;\n if (this.preRelease && !other.preRelease)\n return -1;\n if (!this.preRelease && other.preRelease)\n return 1;\n if (this.preRelease && other.preRelease) {\n if (this.preRelease > other.preRelease)\n return 1;\n if (this.preRelease < other.preRelease)\n return -1;\n return 0;\n }\n return 0;\n };\n return SemanticVersion;\n}());\n\nvar EvaluationEngine = /** @class */ (function () {\n function EvaluationEngine() {\n }\n EvaluationEngine.prototype.evaluate = function (context, flags) {\n var e_1, _a;\n var results = {};\n var target = {\n context: context,\n result: results,\n };\n try {\n for (var flags_1 = __values(flags), flags_1_1 = flags_1.next(); !flags_1_1.done; flags_1_1 = flags_1.next()) {\n var flag = flags_1_1.value;\n // Evaluate flag and update results.\n var variant = this.evaluateFlag(target, flag);\n if (variant) {\n results[flag.key] = variant;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (flags_1_1 && !flags_1_1.done && (_a = flags_1.return)) _a.call(flags_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return results;\n };\n EvaluationEngine.prototype.evaluateFlag = function (target, flag) {\n var e_2, _a;\n var result;\n try {\n for (var _b = __values(flag.segments), _c = _b.next(); !_c.done; _c = _b.next()) {\n var segment = _c.value;\n result = this.evaluateSegment(target, flag, segment);\n if (result) {\n // Merge all metadata into the result\n var metadata = __assign(__assign(__assign({}, flag.metadata), segment.metadata), result.metadata);\n result = __assign(__assign({}, result), { metadata: metadata });\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n };\n EvaluationEngine.prototype.evaluateSegment = function (target, flag, segment) {\n var e_3, _a, e_4, _b;\n if (!segment.conditions) {\n // Null conditions always match\n var variantKey = this.bucket(target, segment);\n if (variantKey !== undefined) {\n return flag.variants[variantKey];\n }\n else {\n return undefined;\n }\n }\n try {\n // Outer list logic is \"or\" (||)\n for (var _c = __values(segment.conditions), _d = _c.next(); !_d.done; _d = _c.next()) {\n var conditions = _d.value;\n var match = true;\n try {\n for (var conditions_1 = (e_4 = void 0, __values(conditions)), conditions_1_1 = conditions_1.next(); !conditions_1_1.done; conditions_1_1 = conditions_1.next()) {\n var condition = conditions_1_1.value;\n match = this.matchCondition(target, condition);\n if (!match) {\n break;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (conditions_1_1 && !conditions_1_1.done && (_b = conditions_1.return)) _b.call(conditions_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n // On match, bucket the user.\n if (match) {\n var variantKey = this.bucket(target, segment);\n if (variantKey !== undefined) {\n return flag.variants[variantKey];\n }\n else {\n return undefined;\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return undefined;\n };\n EvaluationEngine.prototype.matchCondition = function (target, condition) {\n var propValue = select(target, condition.selector);\n // We need special matching for null properties and set type prop values\n // and operators. All other values are matched as strings, since the\n // filter values are always strings.\n if (!propValue) {\n return this.matchNull(condition.op, condition.values);\n }\n else if (this.isSetOperator(condition.op)) {\n var propValueStringList = this.coerceStringArray(propValue);\n if (!propValueStringList) {\n return false;\n }\n return this.matchSet(propValueStringList, condition.op, condition.values);\n }\n else {\n var propValueString = this.coerceString(propValue);\n if (propValueString !== undefined) {\n return this.matchString(propValueString, condition.op, condition.values);\n }\n else {\n return false;\n }\n }\n };\n EvaluationEngine.prototype.getHash = function (key) {\n return hash32x86(key);\n };\n EvaluationEngine.prototype.bucket = function (target, segment) {\n var e_5, _a, e_6, _b;\n if (!segment.bucket) {\n // A null bucket means the segment is fully rolled out. Select the\n // default variant.\n return segment.variant;\n }\n // Select the bucketing value.\n var bucketingValue = this.coerceString(select(target, segment.bucket.selector));\n if (!bucketingValue || bucketingValue.length === 0) {\n // A null or empty bucketing value cannot be bucketed. Select the\n // default variant.\n return segment.variant;\n }\n // Salt and has the value, and compute the allocation and distribution\n // values.\n var keyToHash = \"\".concat(segment.bucket.salt, \"/\").concat(bucketingValue);\n var hash = this.getHash(keyToHash);\n var allocationValue = hash % 100;\n var distributionValue = Math.floor(hash / 100);\n try {\n for (var _c = __values(segment.bucket.allocations), _d = _c.next(); !_d.done; _d = _c.next()) {\n var allocation = _d.value;\n var allocationStart = allocation.range[0];\n var allocationEnd = allocation.range[1];\n if (allocationValue >= allocationStart &&\n allocationValue < allocationEnd) {\n try {\n for (var _e = (e_6 = void 0, __values(allocation.distributions)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var distribution = _f.value;\n var distributionStart = distribution.range[0];\n var distributionEnd = distribution.range[1];\n if (distributionValue >= distributionStart &&\n distributionValue < distributionEnd) {\n return distribution.variant;\n }\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return segment.variant;\n };\n EvaluationEngine.prototype.matchNull = function (op, filterValues) {\n var containsNone = this.containsNone(filterValues);\n switch (op) {\n case EvaluationOperator.IS:\n case EvaluationOperator.CONTAINS:\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n case EvaluationOperator.SET_IS:\n case EvaluationOperator.SET_CONTAINS:\n case EvaluationOperator.SET_CONTAINS_ANY:\n return containsNone;\n case EvaluationOperator.IS_NOT:\n case EvaluationOperator.DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return !containsNone;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchSet = function (propValues, op, filterValues) {\n switch (op) {\n case EvaluationOperator.SET_IS:\n return this.setEquals(propValues, filterValues);\n case EvaluationOperator.SET_IS_NOT:\n return !this.setEquals(propValues, filterValues);\n case EvaluationOperator.SET_CONTAINS:\n return this.matchesSetContainsAll(propValues, filterValues);\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n return !this.matchesSetContainsAll(propValues, filterValues);\n case EvaluationOperator.SET_CONTAINS_ANY:\n return this.matchesSetContainsAny(propValues, filterValues);\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return !this.matchesSetContainsAny(propValues, filterValues);\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchString = function (propValue, op, filterValues) {\n var _this = this;\n switch (op) {\n case EvaluationOperator.IS:\n return this.matchesIs(propValue, filterValues);\n case EvaluationOperator.IS_NOT:\n return !this.matchesIs(propValue, filterValues);\n case EvaluationOperator.CONTAINS:\n return this.matchesContains(propValue, filterValues);\n case EvaluationOperator.DOES_NOT_CONTAIN:\n return !this.matchesContains(propValue, filterValues);\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.GREATER_THAN_EQUALS:\n return this.matchesComparable(propValue, op, filterValues, function (value) { return _this.parseNumber(value); }, this.comparator);\n case EvaluationOperator.VERSION_LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return this.matchesComparable(propValue, op, filterValues, function (value) { return SemanticVersion.parse(value); }, this.versionComparator);\n case EvaluationOperator.REGEX_MATCH:\n return this.matchesRegex(propValue, filterValues);\n case EvaluationOperator.REGEX_DOES_NOT_MATCH:\n return !this.matchesRegex(propValue, filterValues);\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchesIs = function (propValue, filterValues) {\n if (this.containsBooleans(filterValues)) {\n var lower_1 = propValue.toLowerCase();\n if (lower_1 === 'true' || lower_1 === 'false') {\n return filterValues.some(function (value) { return value.toLowerCase() === lower_1; });\n }\n }\n return filterValues.some(function (value) { return propValue === value; });\n };\n EvaluationEngine.prototype.matchesContains = function (propValue, filterValues) {\n var e_7, _a;\n try {\n for (var filterValues_1 = __values(filterValues), filterValues_1_1 = filterValues_1.next(); !filterValues_1_1.done; filterValues_1_1 = filterValues_1.next()) {\n var filterValue = filterValues_1_1.value;\n if (propValue.toLowerCase().includes(filterValue.toLowerCase())) {\n return true;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (filterValues_1_1 && !filterValues_1_1.done && (_a = filterValues_1.return)) _a.call(filterValues_1);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return false;\n };\n EvaluationEngine.prototype.matchesComparable = function (propValue, op, filterValues, typeTransformer, typeComparator) {\n var _this = this;\n var propValueTransformed = typeTransformer(propValue);\n var filterValuesTransformed = filterValues\n .map(function (filterValue) {\n return typeTransformer(filterValue);\n })\n .filter(function (filterValue) {\n return filterValue !== undefined;\n });\n if (propValueTransformed === undefined ||\n filterValuesTransformed.length === 0) {\n return filterValues.some(function (filterValue) {\n return _this.comparator(propValue, op, filterValue);\n });\n }\n else {\n return filterValuesTransformed.some(function (filterValueTransformed) {\n return typeComparator(propValueTransformed, op, filterValueTransformed);\n });\n }\n };\n EvaluationEngine.prototype.comparator = function (propValue, op, filterValue) {\n switch (op) {\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN:\n return propValue < filterValue;\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n return propValue <= filterValue;\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN:\n return propValue > filterValue;\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return propValue >= filterValue;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.versionComparator = function (propValue, op, filterValue) {\n var compareTo = propValue.compareTo(filterValue);\n switch (op) {\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN:\n return compareTo < 0;\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n return compareTo <= 0;\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN:\n return compareTo > 0;\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return compareTo >= 0;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchesRegex = function (propValue, filterValues) {\n return filterValues.some(function (filterValue) {\n return Boolean(new RegExp(filterValue).exec(propValue));\n });\n };\n EvaluationEngine.prototype.containsNone = function (filterValues) {\n return filterValues.some(function (filterValue) {\n return filterValue === '(none)';\n });\n };\n EvaluationEngine.prototype.containsBooleans = function (filterValues) {\n return filterValues.some(function (filterValue) {\n switch (filterValue.toLowerCase()) {\n case 'true':\n case 'false':\n return true;\n default:\n return false;\n }\n });\n };\n EvaluationEngine.prototype.parseNumber = function (value) {\n var _a;\n return (_a = Number(value)) !== null && _a !== void 0 ? _a : undefined;\n };\n EvaluationEngine.prototype.coerceString = function (value) {\n if (!value) {\n return undefined;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n };\n EvaluationEngine.prototype.coerceStringArray = function (value) {\n var _this = this;\n if (Array.isArray(value)) {\n var anyArray = value;\n return anyArray\n .map(function (e) { return _this.coerceString(e); })\n .filter(Boolean);\n }\n var stringValue = String(value);\n try {\n var parsedValue = JSON.parse(stringValue);\n if (Array.isArray(parsedValue)) {\n var anyArray = value;\n return anyArray\n .map(function (e) { return _this.coerceString(e); })\n .filter(Boolean);\n }\n else {\n return undefined;\n }\n }\n catch (_a) {\n return undefined;\n }\n };\n EvaluationEngine.prototype.isSetOperator = function (op) {\n switch (op) {\n case EvaluationOperator.SET_IS:\n case EvaluationOperator.SET_IS_NOT:\n case EvaluationOperator.SET_CONTAINS:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_CONTAINS_ANY:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return true;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.setEquals = function (xa, ya) {\n var xs = new Set(xa);\n var ys = new Set(ya);\n return xs.size === ys.size && __spreadArray([], __read(ys), false).every(function (y) { return xs.has(y); });\n };\n EvaluationEngine.prototype.matchesSetContainsAll = function (propValues, filterValues) {\n var e_8, _a;\n if (propValues.length < filterValues.length) {\n return false;\n }\n try {\n for (var filterValues_2 = __values(filterValues), filterValues_2_1 = filterValues_2.next(); !filterValues_2_1.done; filterValues_2_1 = filterValues_2.next()) {\n var filterValue = filterValues_2_1.value;\n if (!this.matchesIs(filterValue, propValues)) {\n return false;\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (filterValues_2_1 && !filterValues_2_1.done && (_a = filterValues_2.return)) _a.call(filterValues_2);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return true;\n };\n EvaluationEngine.prototype.matchesSetContainsAny = function (propValues, filterValues) {\n var e_9, _a;\n try {\n for (var filterValues_3 = __values(filterValues), filterValues_3_1 = filterValues_3.next(); !filterValues_3_1.done; filterValues_3_1 = filterValues_3.next()) {\n var filterValue = filterValues_3_1.value;\n if (this.matchesIs(filterValue, propValues)) {\n return true;\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (filterValues_3_1 && !filterValues_3_1.done && (_a = filterValues_3.return)) _a.call(filterValues_3);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return false;\n };\n return EvaluationEngine;\n}());\n\nvar topologicalSort = function (flags, flagKeys) {\n var e_1, _a;\n var available = __assign({}, flags);\n var result = [];\n var startingKeys = flagKeys || Object.keys(available);\n try {\n for (var startingKeys_1 = __values(startingKeys), startingKeys_1_1 = startingKeys_1.next(); !startingKeys_1_1.done; startingKeys_1_1 = startingKeys_1.next()) {\n var flagKey = startingKeys_1_1.value;\n var traversal = parentTraversal(flagKey, available);\n if (traversal) {\n result.push.apply(result, __spreadArray([], __read(traversal), false));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (startingKeys_1_1 && !startingKeys_1_1.done && (_a = startingKeys_1.return)) _a.call(startingKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n};\nvar parentTraversal = function (flagKey, available, path) {\n var e_2, _a;\n if (path === void 0) { path = []; }\n var flag = available[flagKey];\n if (!flag) {\n return undefined;\n }\n else if (!flag.dependencies || flag.dependencies.length === 0) {\n delete available[flag.key];\n return [flag];\n }\n path.push(flag.key);\n var result = [];\n var _loop_1 = function (parentKey) {\n if (path.some(function (p) { return p === parentKey; })) {\n throw Error(\"Detected a cycle between flags \".concat(path));\n }\n var traversal = parentTraversal(parentKey, available, path);\n if (traversal) {\n result.push.apply(result, __spreadArray([], __read(traversal), false));\n }\n };\n try {\n for (var _b = __values(flag.dependencies), _c = _b.next(); !_c.done; _c = _b.next()) {\n var parentKey = _c.value;\n _loop_1(parentKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n result.push(flag);\n path.pop();\n delete available[flag.key];\n return result;\n};\n\n/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.5';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = (a => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function' ? Uint8Array.from.bind(Uint8Array) : it => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = src => src.replace(/=/g, '').replace(/[+\\/]/g, m0 => m0 == '+' ? '-' : '_');\nconst _tidyB64 = s => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = bin => {\n // console.log('polyfilled');\n let u32,\n c0,\n c1,\n c2,\n asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255) throw new TypeError('invalid character found');\n u32 = c0 << 16 | c1 << 8 | c2;\n asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? bin => btoa(bin) : _hasBuffer ? bin => Buffer.from(bin, 'binary').toString('base64') : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer ? u8a => Buffer.from(u8a).toString('base64') : u8a => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n};\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = c => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c : cc < 0x800 ? _fromCC(0xc0 | cc >>> 6) + _fromCC(0x80 | cc & 0x3f) : _fromCC(0xe0 | cc >>> 12 & 0x0f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f);\n } else {\n var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00);\n return _fromCC(0xf0 | cc >>> 18 & 0x07) + _fromCC(0x80 | cc >>> 12 & 0x3f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f);\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = u => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer ? s => Buffer.from(s, 'utf8').toString('base64') : _TE ? s => _fromUint8Array(_TE.encode(s)) : s => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = src => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = cccc => {\n switch (cccc.length) {\n case 4:\n var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3),\n offset = cp - 0x10000;\n return _fromCC((offset >>> 10) + 0xD800) + _fromCC((offset & 0x3FF) + 0xDC00);\n case 3:\n return _fromCC((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2));\n default:\n return _fromCC((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = b => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = asc => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc)) throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24,\n bin = '',\n r1,\n r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? asc => atob(_tidyB64(asc)) : _hasBuffer ? asc => Buffer.from(asc, 'base64').toString('binary') : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer ? a => _U8Afrom(Buffer.from(a, 'base64')) : a => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = a => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer ? a => Buffer.from(a, 'base64').toString('utf8') : _TD ? a => _TD.decode(_toUint8Array(a)) : a => btou(_atob(a));\nconst _unURI = a => _tidyB64(a.replace(/[-_]/g, m0 => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = src => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = src => {\n if (typeof src !== 'string') return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = v => {\n return {\n value: v,\n enumerable: false,\n writable: true,\n configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () {\n return decode(this);\n });\n _add('toBase64', function (urlsafe) {\n return encode(this, urlsafe);\n });\n _add('toBase64URI', function () {\n return encode(this, true);\n });\n _add('toBase64URL', function () {\n return encode(this, true);\n });\n _add('toUint8Array', function () {\n return toUint8Array(this);\n });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) {\n return fromUint8Array(this, urlsafe);\n });\n _add('toBase64URI', function () {\n return fromUint8Array(this, true);\n });\n _add('toBase64URL', function () {\n return fromUint8Array(this, true);\n });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n\nvar FetchError = /** @class */ (function (_super) {\n __extends(FetchError, _super);\n function FetchError(statusCode, message) {\n var _this = _super.call(this, message) || this;\n _this.statusCode = statusCode;\n Object.setPrototypeOf(_this, FetchError.prototype);\n return _this;\n }\n return FetchError;\n}(Error));\n\nvar SdkEvaluationApi = /** @class */ (function () {\n function SdkEvaluationApi(deploymentKey, serverUrl, httpClient) {\n this.deploymentKey = deploymentKey;\n this.serverUrl = serverUrl;\n this.httpClient = httpClient;\n }\n SdkEvaluationApi.prototype.getVariants = function (user, options) {\n return __awaiter(this, void 0, void 0, function () {\n var userJsonBase64, headers, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n userJsonBase64 = gBase64.encodeURL(JSON.stringify(user));\n headers = {\n Authorization: \"Api-Key \".concat(this.deploymentKey),\n 'X-Amp-Exp-User': userJsonBase64,\n };\n if (options === null || options === void 0 ? void 0 : options.flagKeys) {\n headers['X-Amp-Exp-Flag-Keys'] = gBase64.encodeURL(JSON.stringify(options.flagKeys));\n }\n if (options === null || options === void 0 ? void 0 : options.trackingOption) {\n headers['X-Amp-Exp-Track'] = options.trackingOption;\n }\n return [4 /*yield*/, this.httpClient.request({\n requestUrl: \"\".concat(this.serverUrl, \"/sdk/v2/vardata?v=0\"),\n method: 'GET',\n headers: headers,\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n })];\n case 1:\n response = _a.sent();\n if (response.status != 200) {\n throw new FetchError(response.status, \"Fetch error response: status=\".concat(response.status));\n }\n return [2 /*return*/, JSON.parse(response.body)];\n }\n });\n });\n };\n return SdkEvaluationApi;\n}());\n\nvar SdkFlagApi = /** @class */ (function () {\n function SdkFlagApi(deploymentKey, serverUrl, httpClient) {\n this.deploymentKey = deploymentKey;\n this.serverUrl = serverUrl;\n this.httpClient = httpClient;\n }\n SdkFlagApi.prototype.getFlags = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, response, flagsArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = {\n Authorization: \"Api-Key \".concat(this.deploymentKey),\n };\n if ((options === null || options === void 0 ? void 0 : options.libraryName) && (options === null || options === void 0 ? void 0 : options.libraryVersion)) {\n headers['X-Amp-Exp-Library'] = \"\".concat(options.libraryName, \"/\").concat(options.libraryVersion);\n }\n return [4 /*yield*/, this.httpClient.request({\n requestUrl: \"\".concat(this.serverUrl, \"/sdk/v2/flags\"),\n method: 'GET',\n headers: headers,\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n })];\n case 1:\n response = _a.sent();\n if (response.status != 200) {\n throw Error(\"Flags error response: status=\".concat(response.status));\n }\n flagsArray = JSON.parse(response.body);\n return [2 /*return*/, flagsArray.reduce(function (map, flag) {\n map[flag.key] = flag;\n return map;\n }, {})];\n }\n });\n });\n };\n return SdkFlagApi;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined' ? globalThis : global || self;\n\nvar Poller = /** @class */ (function () {\n function Poller(action, ms) {\n this.poller = undefined;\n this.action = action;\n this.ms = ms;\n }\n Poller.prototype.start = function () {\n if (this.poller) {\n return;\n }\n this.poller = safeGlobal.setInterval(this.action, this.ms);\n void this.action();\n };\n Poller.prototype.stop = function () {\n if (!this.poller) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n safeGlobal.clearInterval(this.poller);\n this.poller = undefined;\n };\n return Poller;\n}());\n\nexport { EvaluationEngine, EvaluationOperator, FetchError, Poller, SdkEvaluationApi, SdkFlagApi, safeGlobal, topologicalSort };\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { openDB } from 'idb';\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 2; // 2 days\nvar TargetingIDBStore = /** @class */ (function () {\n function TargetingIDBStore() {\n var _this = this;\n this.dbs = {};\n this.createStore = function (dbName) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: function (db) {\n if (!db.objectStoreNames.contains('eventTypesForSession')) {\n db.createObjectStore('eventTypesForSession', {\n keyPath: 'sessionId',\n });\n }\n },\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n this.openOrCreateDB = function (apiKey) { return __awaiter(_this, void 0, void 0, function () {\n var dbName, db;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.dbs && this.dbs[apiKey]) {\n return [2 /*return*/, this.dbs[apiKey]];\n }\n dbName = \"\".concat(apiKey.substring(0, 10), \"_amp_targeting\");\n return [4 /*yield*/, this.createStore(dbName)];\n case 1:\n db = _a.sent();\n this.dbs[apiKey] = db;\n return [2 /*return*/, db];\n }\n });\n }); };\n this.updateEventListForSession = function (_a) {\n var sessionId = _a.sessionId, eventType = _a.eventType, eventTime = _a.eventTime, loggerProvider = _a.loggerProvider, tx = _a.tx;\n return __awaiter(_this, void 0, void 0, function () {\n var sessionIdStr, sessionData, eventTypes, eventTypeStore, updatedEventTypes, updatedSessionData, e_1;\n var _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 3, , 4]);\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, tx.store.get(sessionIdStr)];\n case 1:\n sessionData = _d.sent();\n eventTypes = sessionData ? sessionData.eventTypes : {};\n eventTypeStore = eventTypes[eventType] || {};\n updatedEventTypes = __assign(__assign({}, eventTypes), (_b = {}, _b[eventType] = __assign(__assign({}, eventTypeStore), (_c = {}, _c[eventTime] = { event_type: eventType }, _c)), _b));\n updatedSessionData = {\n sessionId: sessionIdStr,\n eventTypes: updatedEventTypes,\n lastUpdated: Date.now(),\n };\n return [4 /*yield*/, tx.store.put(updatedSessionData)];\n case 2:\n _d.sent();\n return [2 /*return*/, updatedEventTypes];\n case 3:\n e_1 = _d.sent();\n loggerProvider.warn(\"Failed to store events for targeting \".concat(sessionId, \": \").concat(e_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.deleteOldSessionEventTypes = function (_a) {\n var currentSessionId = _a.currentSessionId, loggerProvider = _a.loggerProvider, tx = _a.tx;\n return __awaiter(_this, void 0, void 0, function () {\n var currentSessionIdStr, allSessions, i, session, amountOfTimeSinceSession, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 6, , 7]);\n currentSessionIdStr = String(currentSessionId);\n return [4 /*yield*/, tx.store.getAll()];\n case 1:\n allSessions = _b.sent();\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < allSessions.length)) return [3 /*break*/, 5];\n session = allSessions[i];\n amountOfTimeSinceSession = Date.now() - session.lastUpdated;\n if (!(session.sessionId !== currentSessionIdStr && amountOfTimeSinceSession > MAX_IDB_STORAGE_LENGTH)) return [3 /*break*/, 4];\n return [4 /*yield*/, tx.store.delete(session.sessionId)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 7];\n case 6:\n e_2 = _b.sent();\n loggerProvider.warn(\"Failed to clear old session event types for targeting: \".concat(e_2));\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n this.storeEventTypeForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, sessionId = _a.sessionId, eventType = _a.eventType, eventTime = _a.eventTime, apiKey = _a.apiKey;\n return __awaiter(_this, void 0, void 0, function () {\n var db, tx, updatedEventTypes, e_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, , 6]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n tx = db.transaction('eventTypesForSession', 'readwrite');\n if (!tx) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.updateEventListForSession({\n sessionId: sessionId,\n tx: tx,\n loggerProvider: loggerProvider,\n eventType: eventType,\n eventTime: eventTime,\n })];\n case 2:\n updatedEventTypes = _b.sent();\n // Clear out sessions older than 2 days\n return [4 /*yield*/, this.deleteOldSessionEventTypes({ currentSessionId: sessionId, tx: tx, loggerProvider: loggerProvider })];\n case 3:\n // Clear out sessions older than 2 days\n _b.sent();\n return [4 /*yield*/, tx.done];\n case 4:\n _b.sent();\n return [2 /*return*/, updatedEventTypes];\n case 5:\n e_3 = _b.sent();\n loggerProvider.warn(\"Failed to store events for targeting \".concat(sessionId, \": \").concat(e_3));\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, undefined];\n }\n });\n });\n };\n }\n return TargetingIDBStore;\n}());\nexport { TargetingIDBStore };\nexport var targetingIDBStore = new TargetingIDBStore();\n//# sourceMappingURL=targeting-idb-store.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { EvaluationEngine } from '@amplitude/experiment-core';\nimport { targetingIDBStore } from './targeting-idb-store';\nvar Targeting = /** @class */ (function () {\n function Targeting() {\n var _this = this;\n this.evaluateTargeting = function (_a) {\n var apiKey = _a.apiKey, loggerProvider = _a.loggerProvider, event = _a.event, sessionId = _a.sessionId, userProperties = _a.userProperties, deviceId = _a.deviceId, flag = _a.flag;\n return __awaiter(_this, void 0, void 0, function () {\n var eventTypes, _b, eventStrings, context, targetingBucket;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(event && event.time)) return [3 /*break*/, 2];\n return [4 /*yield*/, targetingIDBStore.storeEventTypeForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n eventType: event.event_type,\n eventTime: event.time,\n })];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = undefined;\n _c.label = 3;\n case 3:\n eventTypes = _b;\n eventStrings = eventTypes && new Set(Object.keys(eventTypes));\n context = {\n session_id: sessionId,\n event: event,\n event_types: eventStrings && Array.from(eventStrings),\n user: {\n device_id: deviceId,\n user_properties: userProperties,\n },\n };\n targetingBucket = this.evaluationEngine.evaluate(context, [flag]);\n return [2 /*return*/, targetingBucket];\n }\n });\n });\n };\n this.evaluationEngine = new EvaluationEngine();\n }\n return Targeting;\n}());\nexport { Targeting };\n//# sourceMappingURL=targeting.js.map","import targeting from './targeting-factory';\nexport var evaluateTargeting = targeting.evaluateTargeting;\n//# sourceMappingURL=index.js.map","import { Targeting } from './targeting';\nvar createInstance = function () {\n var targeting = new Targeting();\n return {\n evaluateTargeting: targeting.evaluateTargeting.bind(targeting),\n };\n};\nexport default createInstance();\n//# sourceMappingURL=targeting-factory.js.map"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__read","o","m","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","SuppressedError","instanceOfAny","object","constructors","some","c","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","WeakMap","transformCache","reverseTransformCache","idbProxyTraps","get","target","prop","receiver","IDBTransaction","objectStoreNames","undefined","objectStore","wrap","set","has","replaceTraps","callback","wrapFunction","func","IDBCursor","advance","continue","continuePrimaryKey","includes","args","unwrap","request","transformCachableValue","tx","unlisten","removeEventListener","complete","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBDatabase","IDBObjectStore","IDBIndex","Proxy","IDBRequest","promise","success","promisifyRequest","newValue","openDB","name","version","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","event","oldVersion","newVersion","transaction","db","catch","readMethods","writeMethods","cachedMethods","Map","getMethod","targetFuncName","replace","useIndex","isWrite","method","async","storeName","store","index","shift","all","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","delete","isIteratorProp","asyncIterator","__values","EvaluationOperator","C1_32","C2_32","hash32x86","input","seed","data","str","out","charCodeAt","Uint8Array","stringToUtf8ByteArray","nBlocks","hash","k","readIntLe","mix32","k1","Math","imul","rotateLeft","fmix32","kResult","hashResult","x","width","reverseBytes","select","selectable","selector","e_1","_a","selector_1","selector_1_1","selectorElement","e_1_1","return","VERSION_PATTERN","SemanticVersion","major","minor","patch","preRelease","parse","matchGroup","RegExp","exec","Number","isNaN","compareTo","other","EvaluationEngine","evaluate","context","flags","results","flags_1","flags_1_1","flag","variant","evaluateFlag","key","e_2","_b","segments","_c","segment","evaluateSegment","metadata","e_2_1","e_3","e_4","conditions","variantKey","bucket","variants","_d","match","conditions_1","conditions_1_1","condition","matchCondition","e_4_1","e_3_1","propValue","isSetOperator","propValueStringList","coerceStringArray","matchSet","values","propValueString","coerceString","matchString","matchNull","getHash","e_5","e_6","bucketingValue","keyToHash","salt","allocationValue","distributionValue","floor","allocations","allocation","allocationStart","range","allocationEnd","_e","distributions","_f","distribution","distributionStart","distributionEnd","e_6_1","e_5_1","filterValues","containsNone","propValues","setEquals","matchesSetContainsAll","matchesSetContainsAny","_this","matchesIs","matchesContains","matchesComparable","parseNumber","comparator","versionComparator","matchesRegex","containsBooleans","lower_1","toLowerCase","e_7","filterValues_1","filterValues_1_1","filterValue","e_7_1","typeTransformer","typeComparator","propValueTransformed","filterValuesTransformed","map","filter","filterValueTransformed","Boolean","JSON","stringify","isArray","stringValue","parsedValue","xa","ya","xs","Set","ys","size","every","e_8","filterValues_2","filterValues_2_1","e_8_1","e_9","filterValues_3","filterValues_3_1","e_9_1","TextDecoder","TextEncoder","b64chs","tab","forEach","fromCharCode","bind","_super","FetchError","statusCode","message","Error","targetingIDBStore","dbs","createStore","dbName","contains","createObjectStore","keyPath","openOrCreateDB","apiKey","substring","updateEventListForSession","sessionId","eventType","eventTime","loggerProvider","sessionIdStr","sessionData","eventTypes","eventTypeStore","updatedEventTypes","updatedSessionData","event_type","lastUpdated","Date","now","put","warn","deleteOldSessionEventTypes","currentSessionId","currentSessionIdStr","allSessions","session","amountOfTimeSinceSession","getAll","storeEventTypeForSession","Targeting","evaluateTargeting","userProperties","deviceId","eventStrings","time","keys","session_id","event_types","user","device_id","user_properties","evaluationEngine","targeting","createInstance"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"targeting-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../node_modules/idb/build/index.js","../../../../node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js","../../../targeting/lib/esm/targeting-idb-store.js","../../../targeting/lib/esm/targeting.js","../../../targeting/lib/esm/index.js","../../../targeting/lib/esm/targeting-factory.js"],"sourcesContent":["/******************************************************************************\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","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","/******************************************************************************\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar EvaluationOperator = {\n IS: 'is',\n IS_NOT: 'is not',\n CONTAINS: 'contains',\n DOES_NOT_CONTAIN: 'does not contain',\n LESS_THAN: 'less',\n LESS_THAN_EQUALS: 'less or equal',\n GREATER_THAN: 'greater',\n GREATER_THAN_EQUALS: 'greater or equal',\n VERSION_LESS_THAN: 'version less',\n VERSION_LESS_THAN_EQUALS: 'version less or equal',\n VERSION_GREATER_THAN: 'version greater',\n VERSION_GREATER_THAN_EQUALS: 'version greater or equal',\n SET_IS: 'set is',\n SET_IS_NOT: 'set is not',\n SET_CONTAINS: 'set contains',\n SET_DOES_NOT_CONTAIN: 'set does not contain',\n SET_CONTAINS_ANY: 'set contains any',\n SET_DOES_NOT_CONTAIN_ANY: 'set does not contain any',\n REGEX_MATCH: 'regex match',\n REGEX_DOES_NOT_MATCH: 'regex does not match',\n};\n\nvar stringToUtf8ByteArray = function (str) {\n var out = [];\n var p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) == 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return Uint8Array.from(out);\n};\n\nvar C1_32 = -0x3361d2af;\nvar C2_32 = 0x1b873593;\nvar R1_32 = 15;\nvar R2_32 = 13;\nvar M_32 = 5;\nvar N_32 = -0x19ab949c;\nvar hash32x86 = function (input, seed) {\n if (seed === void 0) { seed = 0; }\n var data = stringToUtf8ByteArray(input);\n var length = data.length;\n var nBlocks = length >> 2;\n var hash = seed;\n // body\n for (var i = 0; i < nBlocks; i++) {\n var index_1 = i << 2;\n var k = readIntLe(data, index_1);\n hash = mix32(k, hash);\n }\n // tail\n var index = nBlocks << 2;\n var k1 = 0;\n switch (length - index) {\n case 3:\n k1 ^= data[index + 2] << 16;\n k1 ^= data[index + 1] << 8;\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n case 2:\n k1 ^= data[index + 1] << 8;\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n case 1:\n k1 ^= data[index];\n k1 = Math.imul(k1, C1_32);\n k1 = rotateLeft(k1, R1_32);\n k1 = Math.imul(k1, C2_32);\n hash ^= k1;\n break;\n }\n hash ^= length;\n return fmix32(hash) >>> 0;\n};\nvar mix32 = function (k, hash) {\n var kResult = k;\n var hashResult = hash;\n kResult = Math.imul(kResult, C1_32);\n kResult = rotateLeft(kResult, R1_32);\n kResult = Math.imul(kResult, C2_32);\n hashResult ^= kResult;\n hashResult = rotateLeft(hashResult, R2_32);\n hashResult = Math.imul(hashResult, M_32);\n return (hashResult + N_32) | 0;\n};\nvar fmix32 = function (hash) {\n var hashResult = hash;\n hashResult ^= hashResult >>> 16;\n hashResult = Math.imul(hashResult, -0x7a143595);\n hashResult ^= hashResult >>> 13;\n hashResult = Math.imul(hashResult, -0x3d4d51cb);\n hashResult ^= hashResult >>> 16;\n return hashResult;\n};\nvar rotateLeft = function (x, n, width) {\n if (width === void 0) { width = 32; }\n if (n > width)\n n = n % width;\n var mask = (0xffffffff << (width - n)) >>> 0;\n var r = (((x & mask) >>> 0) >>> (width - n)) >>> 0;\n return ((x << n) | r) >>> 0;\n};\nvar readIntLe = function (data, index) {\n if (index === void 0) { index = 0; }\n var n = (data[index] << 24) |\n (data[index + 1] << 16) |\n (data[index + 2] << 8) |\n data[index + 3];\n return reverseBytes(n);\n};\nvar reverseBytes = function (n) {\n return (((n & -0x1000000) >>> 24) |\n ((n & 0x00ff0000) >>> 8) |\n ((n & 0x0000ff00) << 8) |\n ((n & 0x000000ff) << 24));\n};\n\nvar select = function (selectable, selector) {\n var e_1, _a;\n if (!selector || selector.length === 0) {\n return undefined;\n }\n try {\n for (var selector_1 = __values(selector), selector_1_1 = selector_1.next(); !selector_1_1.done; selector_1_1 = selector_1.next()) {\n var selectorElement = selector_1_1.value;\n if (!selectorElement || !selectable || typeof selectable !== 'object') {\n return undefined;\n }\n selectable = selectable[selectorElement];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (selector_1_1 && !selector_1_1.done && (_a = selector_1.return)) _a.call(selector_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!selectable) {\n return undefined;\n }\n else {\n return selectable;\n }\n};\n\n// major and minor should be non-negative numbers separated by a dot\nvar MAJOR_MINOR_REGEX = '(\\\\d+)\\\\.(\\\\d+)';\n// patch should be a non-negative number\nvar PATCH_REGEX = '(\\\\d+)';\n// prerelease is optional. If provided, it should be a hyphen followed by a\n// series of dot separated identifiers where an identifer can contain anything in [-0-9a-zA-Z]\nvar PRERELEASE_REGEX = '(-(([-\\\\w]+\\\\.?)*))?';\n// version pattern should be major.minor(.patchAndPreRelease) where .patchAndPreRelease is optional\nvar VERSION_PATTERN = \"^\".concat(MAJOR_MINOR_REGEX, \"(\\\\.\").concat(PATCH_REGEX).concat(PRERELEASE_REGEX, \")?$\");\nvar SemanticVersion = /** @class */ (function () {\n function SemanticVersion(major, minor, patch, preRelease) {\n if (preRelease === void 0) { preRelease = undefined; }\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.preRelease = preRelease;\n }\n SemanticVersion.parse = function (version) {\n if (!version) {\n return undefined;\n }\n var matchGroup = new RegExp(VERSION_PATTERN).exec(version);\n if (!matchGroup) {\n return undefined;\n }\n var major = Number(matchGroup[1]);\n var minor = Number(matchGroup[2]);\n if (isNaN(major) || isNaN(minor)) {\n return undefined;\n }\n var patch = Number(matchGroup[4]) || 0;\n var preRelease = matchGroup[5] || undefined;\n return new SemanticVersion(major, minor, patch, preRelease);\n };\n SemanticVersion.prototype.compareTo = function (other) {\n if (this.major > other.major)\n return 1;\n if (this.major < other.major)\n return -1;\n if (this.minor > other.minor)\n return 1;\n if (this.minor < other.minor)\n return -1;\n if (this.patch > other.patch)\n return 1;\n if (this.patch < other.patch)\n return -1;\n if (this.preRelease && !other.preRelease)\n return -1;\n if (!this.preRelease && other.preRelease)\n return 1;\n if (this.preRelease && other.preRelease) {\n if (this.preRelease > other.preRelease)\n return 1;\n if (this.preRelease < other.preRelease)\n return -1;\n return 0;\n }\n return 0;\n };\n return SemanticVersion;\n}());\n\nvar EvaluationEngine = /** @class */ (function () {\n function EvaluationEngine() {\n }\n EvaluationEngine.prototype.evaluate = function (context, flags) {\n var e_1, _a;\n var results = {};\n var target = {\n context: context,\n result: results,\n };\n try {\n for (var flags_1 = __values(flags), flags_1_1 = flags_1.next(); !flags_1_1.done; flags_1_1 = flags_1.next()) {\n var flag = flags_1_1.value;\n // Evaluate flag and update results.\n var variant = this.evaluateFlag(target, flag);\n if (variant) {\n results[flag.key] = variant;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (flags_1_1 && !flags_1_1.done && (_a = flags_1.return)) _a.call(flags_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return results;\n };\n EvaluationEngine.prototype.evaluateFlag = function (target, flag) {\n var e_2, _a;\n var result;\n try {\n for (var _b = __values(flag.segments), _c = _b.next(); !_c.done; _c = _b.next()) {\n var segment = _c.value;\n result = this.evaluateSegment(target, flag, segment);\n if (result) {\n // Merge all metadata into the result\n var metadata = __assign(__assign(__assign({}, flag.metadata), segment.metadata), result.metadata);\n result = __assign(__assign({}, result), { metadata: metadata });\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n };\n EvaluationEngine.prototype.evaluateSegment = function (target, flag, segment) {\n var e_3, _a, e_4, _b;\n if (!segment.conditions) {\n // Null conditions always match\n var variantKey = this.bucket(target, segment);\n if (variantKey !== undefined) {\n return flag.variants[variantKey];\n }\n else {\n return undefined;\n }\n }\n try {\n // Outer list logic is \"or\" (||)\n for (var _c = __values(segment.conditions), _d = _c.next(); !_d.done; _d = _c.next()) {\n var conditions = _d.value;\n var match = true;\n try {\n for (var conditions_1 = (e_4 = void 0, __values(conditions)), conditions_1_1 = conditions_1.next(); !conditions_1_1.done; conditions_1_1 = conditions_1.next()) {\n var condition = conditions_1_1.value;\n match = this.matchCondition(target, condition);\n if (!match) {\n break;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (conditions_1_1 && !conditions_1_1.done && (_b = conditions_1.return)) _b.call(conditions_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n // On match, bucket the user.\n if (match) {\n var variantKey = this.bucket(target, segment);\n if (variantKey !== undefined) {\n return flag.variants[variantKey];\n }\n else {\n return undefined;\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return undefined;\n };\n EvaluationEngine.prototype.matchCondition = function (target, condition) {\n var propValue = select(target, condition.selector);\n // We need special matching for null properties and set type prop values\n // and operators. All other values are matched as strings, since the\n // filter values are always strings.\n if (!propValue) {\n return this.matchNull(condition.op, condition.values);\n }\n else if (this.isSetOperator(condition.op)) {\n var propValueStringList = this.coerceStringArray(propValue);\n if (!propValueStringList) {\n return false;\n }\n return this.matchSet(propValueStringList, condition.op, condition.values);\n }\n else {\n var propValueString = this.coerceString(propValue);\n if (propValueString !== undefined) {\n return this.matchString(propValueString, condition.op, condition.values);\n }\n else {\n return false;\n }\n }\n };\n EvaluationEngine.prototype.getHash = function (key) {\n return hash32x86(key);\n };\n EvaluationEngine.prototype.bucket = function (target, segment) {\n var e_5, _a, e_6, _b;\n if (!segment.bucket) {\n // A null bucket means the segment is fully rolled out. Select the\n // default variant.\n return segment.variant;\n }\n // Select the bucketing value.\n var bucketingValue = this.coerceString(select(target, segment.bucket.selector));\n if (!bucketingValue || bucketingValue.length === 0) {\n // A null or empty bucketing value cannot be bucketed. Select the\n // default variant.\n return segment.variant;\n }\n // Salt and has the value, and compute the allocation and distribution\n // values.\n var keyToHash = \"\".concat(segment.bucket.salt, \"/\").concat(bucketingValue);\n var hash = this.getHash(keyToHash);\n var allocationValue = hash % 100;\n var distributionValue = Math.floor(hash / 100);\n try {\n for (var _c = __values(segment.bucket.allocations), _d = _c.next(); !_d.done; _d = _c.next()) {\n var allocation = _d.value;\n var allocationStart = allocation.range[0];\n var allocationEnd = allocation.range[1];\n if (allocationValue >= allocationStart &&\n allocationValue < allocationEnd) {\n try {\n for (var _e = (e_6 = void 0, __values(allocation.distributions)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var distribution = _f.value;\n var distributionStart = distribution.range[0];\n var distributionEnd = distribution.range[1];\n if (distributionValue >= distributionStart &&\n distributionValue < distributionEnd) {\n return distribution.variant;\n }\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return segment.variant;\n };\n EvaluationEngine.prototype.matchNull = function (op, filterValues) {\n var containsNone = this.containsNone(filterValues);\n switch (op) {\n case EvaluationOperator.IS:\n case EvaluationOperator.CONTAINS:\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n case EvaluationOperator.SET_IS:\n case EvaluationOperator.SET_CONTAINS:\n case EvaluationOperator.SET_CONTAINS_ANY:\n return containsNone;\n case EvaluationOperator.IS_NOT:\n case EvaluationOperator.DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return !containsNone;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchSet = function (propValues, op, filterValues) {\n switch (op) {\n case EvaluationOperator.SET_IS:\n return this.setEquals(propValues, filterValues);\n case EvaluationOperator.SET_IS_NOT:\n return !this.setEquals(propValues, filterValues);\n case EvaluationOperator.SET_CONTAINS:\n return this.matchesSetContainsAll(propValues, filterValues);\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n return !this.matchesSetContainsAll(propValues, filterValues);\n case EvaluationOperator.SET_CONTAINS_ANY:\n return this.matchesSetContainsAny(propValues, filterValues);\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return !this.matchesSetContainsAny(propValues, filterValues);\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchString = function (propValue, op, filterValues) {\n var _this = this;\n switch (op) {\n case EvaluationOperator.IS:\n return this.matchesIs(propValue, filterValues);\n case EvaluationOperator.IS_NOT:\n return !this.matchesIs(propValue, filterValues);\n case EvaluationOperator.CONTAINS:\n return this.matchesContains(propValue, filterValues);\n case EvaluationOperator.DOES_NOT_CONTAIN:\n return !this.matchesContains(propValue, filterValues);\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.GREATER_THAN_EQUALS:\n return this.matchesComparable(propValue, op, filterValues, function (value) { return _this.parseNumber(value); }, this.comparator);\n case EvaluationOperator.VERSION_LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return this.matchesComparable(propValue, op, filterValues, function (value) { return SemanticVersion.parse(value); }, this.versionComparator);\n case EvaluationOperator.REGEX_MATCH:\n return this.matchesRegex(propValue, filterValues);\n case EvaluationOperator.REGEX_DOES_NOT_MATCH:\n return !this.matchesRegex(propValue, filterValues);\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchesIs = function (propValue, filterValues) {\n if (this.containsBooleans(filterValues)) {\n var lower_1 = propValue.toLowerCase();\n if (lower_1 === 'true' || lower_1 === 'false') {\n return filterValues.some(function (value) { return value.toLowerCase() === lower_1; });\n }\n }\n return filterValues.some(function (value) { return propValue === value; });\n };\n EvaluationEngine.prototype.matchesContains = function (propValue, filterValues) {\n var e_7, _a;\n try {\n for (var filterValues_1 = __values(filterValues), filterValues_1_1 = filterValues_1.next(); !filterValues_1_1.done; filterValues_1_1 = filterValues_1.next()) {\n var filterValue = filterValues_1_1.value;\n if (propValue.toLowerCase().includes(filterValue.toLowerCase())) {\n return true;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (filterValues_1_1 && !filterValues_1_1.done && (_a = filterValues_1.return)) _a.call(filterValues_1);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return false;\n };\n EvaluationEngine.prototype.matchesComparable = function (propValue, op, filterValues, typeTransformer, typeComparator) {\n var _this = this;\n var propValueTransformed = typeTransformer(propValue);\n var filterValuesTransformed = filterValues\n .map(function (filterValue) {\n return typeTransformer(filterValue);\n })\n .filter(function (filterValue) {\n return filterValue !== undefined;\n });\n if (propValueTransformed === undefined ||\n filterValuesTransformed.length === 0) {\n return filterValues.some(function (filterValue) {\n return _this.comparator(propValue, op, filterValue);\n });\n }\n else {\n return filterValuesTransformed.some(function (filterValueTransformed) {\n return typeComparator(propValueTransformed, op, filterValueTransformed);\n });\n }\n };\n EvaluationEngine.prototype.comparator = function (propValue, op, filterValue) {\n switch (op) {\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN:\n return propValue < filterValue;\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n return propValue <= filterValue;\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN:\n return propValue > filterValue;\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return propValue >= filterValue;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.versionComparator = function (propValue, op, filterValue) {\n var compareTo = propValue.compareTo(filterValue);\n switch (op) {\n case EvaluationOperator.LESS_THAN:\n case EvaluationOperator.VERSION_LESS_THAN:\n return compareTo < 0;\n case EvaluationOperator.LESS_THAN_EQUALS:\n case EvaluationOperator.VERSION_LESS_THAN_EQUALS:\n return compareTo <= 0;\n case EvaluationOperator.GREATER_THAN:\n case EvaluationOperator.VERSION_GREATER_THAN:\n return compareTo > 0;\n case EvaluationOperator.GREATER_THAN_EQUALS:\n case EvaluationOperator.VERSION_GREATER_THAN_EQUALS:\n return compareTo >= 0;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.matchesRegex = function (propValue, filterValues) {\n return filterValues.some(function (filterValue) {\n return Boolean(new RegExp(filterValue).exec(propValue));\n });\n };\n EvaluationEngine.prototype.containsNone = function (filterValues) {\n return filterValues.some(function (filterValue) {\n return filterValue === '(none)';\n });\n };\n EvaluationEngine.prototype.containsBooleans = function (filterValues) {\n return filterValues.some(function (filterValue) {\n switch (filterValue.toLowerCase()) {\n case 'true':\n case 'false':\n return true;\n default:\n return false;\n }\n });\n };\n EvaluationEngine.prototype.parseNumber = function (value) {\n var _a;\n return (_a = Number(value)) !== null && _a !== void 0 ? _a : undefined;\n };\n EvaluationEngine.prototype.coerceString = function (value) {\n if (!value) {\n return undefined;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n };\n EvaluationEngine.prototype.coerceStringArray = function (value) {\n var _this = this;\n if (Array.isArray(value)) {\n var anyArray = value;\n return anyArray\n .map(function (e) { return _this.coerceString(e); })\n .filter(Boolean);\n }\n var stringValue = String(value);\n try {\n var parsedValue = JSON.parse(stringValue);\n if (Array.isArray(parsedValue)) {\n var anyArray = value;\n return anyArray\n .map(function (e) { return _this.coerceString(e); })\n .filter(Boolean);\n }\n else {\n return undefined;\n }\n }\n catch (_a) {\n return undefined;\n }\n };\n EvaluationEngine.prototype.isSetOperator = function (op) {\n switch (op) {\n case EvaluationOperator.SET_IS:\n case EvaluationOperator.SET_IS_NOT:\n case EvaluationOperator.SET_CONTAINS:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN:\n case EvaluationOperator.SET_CONTAINS_ANY:\n case EvaluationOperator.SET_DOES_NOT_CONTAIN_ANY:\n return true;\n default:\n return false;\n }\n };\n EvaluationEngine.prototype.setEquals = function (xa, ya) {\n var xs = new Set(xa);\n var ys = new Set(ya);\n return xs.size === ys.size && __spreadArray([], __read(ys), false).every(function (y) { return xs.has(y); });\n };\n EvaluationEngine.prototype.matchesSetContainsAll = function (propValues, filterValues) {\n var e_8, _a;\n if (propValues.length < filterValues.length) {\n return false;\n }\n try {\n for (var filterValues_2 = __values(filterValues), filterValues_2_1 = filterValues_2.next(); !filterValues_2_1.done; filterValues_2_1 = filterValues_2.next()) {\n var filterValue = filterValues_2_1.value;\n if (!this.matchesIs(filterValue, propValues)) {\n return false;\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (filterValues_2_1 && !filterValues_2_1.done && (_a = filterValues_2.return)) _a.call(filterValues_2);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return true;\n };\n EvaluationEngine.prototype.matchesSetContainsAny = function (propValues, filterValues) {\n var e_9, _a;\n try {\n for (var filterValues_3 = __values(filterValues), filterValues_3_1 = filterValues_3.next(); !filterValues_3_1.done; filterValues_3_1 = filterValues_3.next()) {\n var filterValue = filterValues_3_1.value;\n if (this.matchesIs(filterValue, propValues)) {\n return true;\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (filterValues_3_1 && !filterValues_3_1.done && (_a = filterValues_3.return)) _a.call(filterValues_3);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return false;\n };\n return EvaluationEngine;\n}());\n\nvar topologicalSort = function (flags, flagKeys) {\n var e_1, _a;\n var available = __assign({}, flags);\n var result = [];\n var startingKeys = flagKeys || Object.keys(available);\n try {\n for (var startingKeys_1 = __values(startingKeys), startingKeys_1_1 = startingKeys_1.next(); !startingKeys_1_1.done; startingKeys_1_1 = startingKeys_1.next()) {\n var flagKey = startingKeys_1_1.value;\n var traversal = parentTraversal(flagKey, available);\n if (traversal) {\n result.push.apply(result, __spreadArray([], __read(traversal), false));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (startingKeys_1_1 && !startingKeys_1_1.done && (_a = startingKeys_1.return)) _a.call(startingKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n};\nvar parentTraversal = function (flagKey, available, path) {\n var e_2, _a;\n if (path === void 0) { path = []; }\n var flag = available[flagKey];\n if (!flag) {\n return undefined;\n }\n else if (!flag.dependencies || flag.dependencies.length === 0) {\n delete available[flag.key];\n return [flag];\n }\n path.push(flag.key);\n var result = [];\n var _loop_1 = function (parentKey) {\n if (path.some(function (p) { return p === parentKey; })) {\n throw Error(\"Detected a cycle between flags \".concat(path));\n }\n var traversal = parentTraversal(parentKey, available, path);\n if (traversal) {\n result.push.apply(result, __spreadArray([], __read(traversal), false));\n }\n };\n try {\n for (var _b = __values(flag.dependencies), _c = _b.next(); !_c.done; _c = _b.next()) {\n var parentKey = _c.value;\n _loop_1(parentKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n result.push(flag);\n path.pop();\n delete available[flag.key];\n return result;\n};\n\n/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.5';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = (a => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function' ? Uint8Array.from.bind(Uint8Array) : it => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = src => src.replace(/=/g, '').replace(/[+\\/]/g, m0 => m0 == '+' ? '-' : '_');\nconst _tidyB64 = s => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = bin => {\n // console.log('polyfilled');\n let u32,\n c0,\n c1,\n c2,\n asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255) throw new TypeError('invalid character found');\n u32 = c0 << 16 | c1 << 8 | c2;\n asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? bin => btoa(bin) : _hasBuffer ? bin => Buffer.from(bin, 'binary').toString('base64') : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer ? u8a => Buffer.from(u8a).toString('base64') : u8a => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n};\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = c => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c : cc < 0x800 ? _fromCC(0xc0 | cc >>> 6) + _fromCC(0x80 | cc & 0x3f) : _fromCC(0xe0 | cc >>> 12 & 0x0f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f);\n } else {\n var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00);\n return _fromCC(0xf0 | cc >>> 18 & 0x07) + _fromCC(0x80 | cc >>> 12 & 0x3f) + _fromCC(0x80 | cc >>> 6 & 0x3f) + _fromCC(0x80 | cc & 0x3f);\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = u => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer ? s => Buffer.from(s, 'utf8').toString('base64') : _TE ? s => _fromUint8Array(_TE.encode(s)) : s => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = src => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = cccc => {\n switch (cccc.length) {\n case 4:\n var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3),\n offset = cp - 0x10000;\n return _fromCC((offset >>> 10) + 0xD800) + _fromCC((offset & 0x3FF) + 0xDC00);\n case 3:\n return _fromCC((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2));\n default:\n return _fromCC((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = b => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = asc => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc)) throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24,\n bin = '',\n r1,\n r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? asc => atob(_tidyB64(asc)) : _hasBuffer ? asc => Buffer.from(asc, 'base64').toString('binary') : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer ? a => _U8Afrom(Buffer.from(a, 'base64')) : a => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = a => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer ? a => Buffer.from(a, 'base64').toString('utf8') : _TD ? a => _TD.decode(_toUint8Array(a)) : a => btou(_atob(a));\nconst _unURI = a => _tidyB64(a.replace(/[-_]/g, m0 => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = src => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = src => {\n if (typeof src !== 'string') return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = v => {\n return {\n value: v,\n enumerable: false,\n writable: true,\n configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () {\n return decode(this);\n });\n _add('toBase64', function (urlsafe) {\n return encode(this, urlsafe);\n });\n _add('toBase64URI', function () {\n return encode(this, true);\n });\n _add('toBase64URL', function () {\n return encode(this, true);\n });\n _add('toUint8Array', function () {\n return toUint8Array(this);\n });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) {\n return fromUint8Array(this, urlsafe);\n });\n _add('toBase64URI', function () {\n return fromUint8Array(this, true);\n });\n _add('toBase64URL', function () {\n return fromUint8Array(this, true);\n });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n\nvar FetchError = /** @class */ (function (_super) {\n __extends(FetchError, _super);\n function FetchError(statusCode, message) {\n var _this = _super.call(this, message) || this;\n _this.statusCode = statusCode;\n Object.setPrototypeOf(_this, FetchError.prototype);\n return _this;\n }\n return FetchError;\n}(Error));\n\nvar SdkEvaluationApi = /** @class */ (function () {\n function SdkEvaluationApi(deploymentKey, serverUrl, httpClient) {\n this.deploymentKey = deploymentKey;\n this.serverUrl = serverUrl;\n this.httpClient = httpClient;\n }\n SdkEvaluationApi.prototype.getVariants = function (user, options) {\n return __awaiter(this, void 0, void 0, function () {\n var userJsonBase64, headers, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n userJsonBase64 = gBase64.encodeURL(JSON.stringify(user));\n headers = {\n Authorization: \"Api-Key \".concat(this.deploymentKey),\n 'X-Amp-Exp-User': userJsonBase64,\n };\n if (options === null || options === void 0 ? void 0 : options.flagKeys) {\n headers['X-Amp-Exp-Flag-Keys'] = gBase64.encodeURL(JSON.stringify(options.flagKeys));\n }\n if (options === null || options === void 0 ? void 0 : options.trackingOption) {\n headers['X-Amp-Exp-Track'] = options.trackingOption;\n }\n return [4 /*yield*/, this.httpClient.request({\n requestUrl: \"\".concat(this.serverUrl, \"/sdk/v2/vardata?v=0\"),\n method: 'GET',\n headers: headers,\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n })];\n case 1:\n response = _a.sent();\n if (response.status != 200) {\n throw new FetchError(response.status, \"Fetch error response: status=\".concat(response.status));\n }\n return [2 /*return*/, JSON.parse(response.body)];\n }\n });\n });\n };\n return SdkEvaluationApi;\n}());\n\nvar SdkFlagApi = /** @class */ (function () {\n function SdkFlagApi(deploymentKey, serverUrl, httpClient) {\n this.deploymentKey = deploymentKey;\n this.serverUrl = serverUrl;\n this.httpClient = httpClient;\n }\n SdkFlagApi.prototype.getFlags = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, response, flagsArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = {\n Authorization: \"Api-Key \".concat(this.deploymentKey),\n };\n if ((options === null || options === void 0 ? void 0 : options.libraryName) && (options === null || options === void 0 ? void 0 : options.libraryVersion)) {\n headers['X-Amp-Exp-Library'] = \"\".concat(options.libraryName, \"/\").concat(options.libraryVersion);\n }\n return [4 /*yield*/, this.httpClient.request({\n requestUrl: \"\".concat(this.serverUrl, \"/sdk/v2/flags\"),\n method: 'GET',\n headers: headers,\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n })];\n case 1:\n response = _a.sent();\n if (response.status != 200) {\n throw Error(\"Flags error response: status=\".concat(response.status));\n }\n flagsArray = JSON.parse(response.body);\n return [2 /*return*/, flagsArray.reduce(function (map, flag) {\n map[flag.key] = flag;\n return map;\n }, {})];\n }\n });\n });\n };\n return SdkFlagApi;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined' ? globalThis : global || self;\n\nvar Poller = /** @class */ (function () {\n function Poller(action, ms) {\n this.poller = undefined;\n this.action = action;\n this.ms = ms;\n }\n Poller.prototype.start = function () {\n if (this.poller) {\n return;\n }\n this.poller = safeGlobal.setInterval(this.action, this.ms);\n void this.action();\n };\n Poller.prototype.stop = function () {\n if (!this.poller) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n safeGlobal.clearInterval(this.poller);\n this.poller = undefined;\n };\n return Poller;\n}());\n\nexport { EvaluationEngine, EvaluationOperator, FetchError, Poller, SdkEvaluationApi, SdkFlagApi, safeGlobal, topologicalSort };\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { openDB } from 'idb';\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 2; // 2 days\nvar TargetingIDBStore = /** @class */ (function () {\n function TargetingIDBStore() {\n var _this = this;\n this.dbs = {};\n this.createStore = function (dbName) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: function (db) {\n if (!db.objectStoreNames.contains('eventTypesForSession')) {\n db.createObjectStore('eventTypesForSession', {\n keyPath: 'sessionId',\n });\n }\n },\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n this.openOrCreateDB = function (apiKey) { return __awaiter(_this, void 0, void 0, function () {\n var dbName, db;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.dbs && this.dbs[apiKey]) {\n return [2 /*return*/, this.dbs[apiKey]];\n }\n dbName = \"\".concat(apiKey.substring(0, 10), \"_amp_targeting\");\n return [4 /*yield*/, this.createStore(dbName)];\n case 1:\n db = _a.sent();\n this.dbs[apiKey] = db;\n return [2 /*return*/, db];\n }\n });\n }); };\n this.updateEventListForSession = function (_a) {\n var sessionId = _a.sessionId, eventType = _a.eventType, eventTime = _a.eventTime, loggerProvider = _a.loggerProvider, tx = _a.tx;\n return __awaiter(_this, void 0, void 0, function () {\n var sessionIdStr, sessionData, eventTypes, eventTypeStore, updatedEventTypes, updatedSessionData, e_1;\n var _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 3, , 4]);\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, tx.store.get(sessionIdStr)];\n case 1:\n sessionData = _d.sent();\n eventTypes = sessionData ? sessionData.eventTypes : {};\n eventTypeStore = eventTypes[eventType] || {};\n updatedEventTypes = __assign(__assign({}, eventTypes), (_b = {}, _b[eventType] = __assign(__assign({}, eventTypeStore), (_c = {}, _c[eventTime] = { event_type: eventType }, _c)), _b));\n updatedSessionData = {\n sessionId: sessionIdStr,\n eventTypes: updatedEventTypes,\n lastUpdated: Date.now(),\n };\n return [4 /*yield*/, tx.store.put(updatedSessionData)];\n case 2:\n _d.sent();\n return [2 /*return*/, updatedEventTypes];\n case 3:\n e_1 = _d.sent();\n loggerProvider.warn(\"Failed to store events for targeting \".concat(sessionId, \": \").concat(e_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.deleteOldSessionEventTypes = function (_a) {\n var currentSessionId = _a.currentSessionId, loggerProvider = _a.loggerProvider, tx = _a.tx;\n return __awaiter(_this, void 0, void 0, function () {\n var currentSessionIdStr, allSessions, i, session, amountOfTimeSinceSession, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 6, , 7]);\n currentSessionIdStr = String(currentSessionId);\n return [4 /*yield*/, tx.store.getAll()];\n case 1:\n allSessions = _b.sent();\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < allSessions.length)) return [3 /*break*/, 5];\n session = allSessions[i];\n amountOfTimeSinceSession = Date.now() - session.lastUpdated;\n if (!(session.sessionId !== currentSessionIdStr && amountOfTimeSinceSession > MAX_IDB_STORAGE_LENGTH)) return [3 /*break*/, 4];\n return [4 /*yield*/, tx.store.delete(session.sessionId)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 7];\n case 6:\n e_2 = _b.sent();\n loggerProvider.warn(\"Failed to clear old session event types for targeting: \".concat(e_2));\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n this.storeEventTypeForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, sessionId = _a.sessionId, eventType = _a.eventType, eventTime = _a.eventTime, apiKey = _a.apiKey;\n return __awaiter(_this, void 0, void 0, function () {\n var db, tx, updatedEventTypes, e_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, , 6]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n tx = db.transaction('eventTypesForSession', 'readwrite');\n if (!tx) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.updateEventListForSession({\n sessionId: sessionId,\n tx: tx,\n loggerProvider: loggerProvider,\n eventType: eventType,\n eventTime: eventTime,\n })];\n case 2:\n updatedEventTypes = _b.sent();\n // Clear out sessions older than 2 days\n return [4 /*yield*/, this.deleteOldSessionEventTypes({ currentSessionId: sessionId, tx: tx, loggerProvider: loggerProvider })];\n case 3:\n // Clear out sessions older than 2 days\n _b.sent();\n return [4 /*yield*/, tx.done];\n case 4:\n _b.sent();\n return [2 /*return*/, updatedEventTypes];\n case 5:\n e_3 = _b.sent();\n loggerProvider.warn(\"Failed to store events for targeting \".concat(sessionId, \": \").concat(e_3));\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, undefined];\n }\n });\n });\n };\n }\n return TargetingIDBStore;\n}());\nexport { TargetingIDBStore };\nexport var targetingIDBStore = new TargetingIDBStore();\n//# sourceMappingURL=targeting-idb-store.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { EvaluationEngine } from '@amplitude/experiment-core';\nimport { targetingIDBStore } from './targeting-idb-store';\nvar Targeting = /** @class */ (function () {\n function Targeting() {\n var _this = this;\n this.evaluateTargeting = function (_a) {\n var apiKey = _a.apiKey, loggerProvider = _a.loggerProvider, event = _a.event, sessionId = _a.sessionId, userProperties = _a.userProperties, deviceId = _a.deviceId, flag = _a.flag;\n return __awaiter(_this, void 0, void 0, function () {\n var eventTypes, _b, eventStrings, context, targetingBucket;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(event && event.time)) return [3 /*break*/, 2];\n return [4 /*yield*/, targetingIDBStore.storeEventTypeForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n eventType: event.event_type,\n eventTime: event.time,\n })];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = undefined;\n _c.label = 3;\n case 3:\n eventTypes = _b;\n eventStrings = eventTypes && new Set(Object.keys(eventTypes));\n context = {\n session_id: sessionId,\n event: event,\n event_types: eventStrings && Array.from(eventStrings),\n user: {\n device_id: deviceId,\n user_properties: userProperties,\n },\n };\n targetingBucket = this.evaluationEngine.evaluate(context, [flag]);\n return [2 /*return*/, targetingBucket];\n }\n });\n });\n };\n this.evaluationEngine = new EvaluationEngine();\n }\n return Targeting;\n}());\nexport { Targeting };\n//# sourceMappingURL=targeting.js.map","import targeting from './targeting-factory';\nexport var evaluateTargeting = targeting.evaluateTargeting;\n//# sourceMappingURL=index.js.map","import { Targeting } from './targeting';\nvar createInstance = function () {\n var targeting = new Targeting();\n return {\n evaluateTargeting: targeting.evaluateTargeting.bind(targeting),\n };\n};\nexport default createInstance();\n//# sourceMappingURL=targeting-factory.js.map"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__read","o","m","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","SuppressedError","instanceOfAny","object","constructors","some","c","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","WeakMap","transformCache","reverseTransformCache","idbProxyTraps","get","target","prop","receiver","IDBTransaction","objectStoreNames","undefined","objectStore","wrap","set","has","replaceTraps","callback","wrapFunction","func","IDBCursor","advance","continue","continuePrimaryKey","includes","args","unwrap","request","transformCachableValue","tx","unlisten","removeEventListener","complete","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBDatabase","IDBObjectStore","IDBIndex","Proxy","IDBRequest","promise","success","promisifyRequest","newValue","openDB","name","version","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","event","oldVersion","newVersion","transaction","db","catch","readMethods","writeMethods","cachedMethods","Map","getMethod","targetFuncName","replace","useIndex","isWrite","method","async","storeName","store","index","shift","all","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","delete","isIteratorProp","asyncIterator","__values","EvaluationOperator","C1_32","C2_32","hash32x86","input","seed","data","str","out","charCodeAt","Uint8Array","stringToUtf8ByteArray","nBlocks","hash","k","readIntLe","mix32","k1","Math","imul","rotateLeft","fmix32","kResult","hashResult","x","width","reverseBytes","select","selectable","selector","e_1","_a","selector_1","selector_1_1","selectorElement","e_1_1","return","VERSION_PATTERN","SemanticVersion","major","minor","patch","preRelease","parse","matchGroup","RegExp","exec","Number","isNaN","compareTo","other","EvaluationEngine","evaluate","context","flags","results","flags_1","flags_1_1","flag","variant","evaluateFlag","key","e_2","_b","segments","_c","segment","evaluateSegment","metadata","e_2_1","e_3","e_4","conditions","variantKey","bucket","variants","_d","match","conditions_1","conditions_1_1","condition","matchCondition","e_4_1","e_3_1","propValue","isSetOperator","propValueStringList","coerceStringArray","matchSet","values","propValueString","coerceString","matchString","matchNull","getHash","e_5","e_6","bucketingValue","keyToHash","salt","allocationValue","distributionValue","floor","allocations","allocation","allocationStart","range","allocationEnd","_e","distributions","_f","distribution","distributionStart","distributionEnd","e_6_1","e_5_1","filterValues","containsNone","propValues","setEquals","matchesSetContainsAll","matchesSetContainsAny","_this","matchesIs","matchesContains","matchesComparable","parseNumber","comparator","versionComparator","matchesRegex","containsBooleans","lower_1","toLowerCase","e_7","filterValues_1","filterValues_1_1","filterValue","e_7_1","typeTransformer","typeComparator","propValueTransformed","filterValuesTransformed","map","filter","filterValueTransformed","Boolean","JSON","stringify","isArray","stringValue","parsedValue","xa","ya","xs","Set","ys","size","every","e_8","filterValues_2","filterValues_2_1","e_8_1","e_9","filterValues_3","filterValues_3_1","e_9_1","TextDecoder","TextEncoder","b64chs","tab","forEach","fromCharCode","bind","_super","FetchError","statusCode","message","Error","targetingIDBStore","dbs","createStore","dbName","contains","createObjectStore","keyPath","openOrCreateDB","apiKey","substring","updateEventListForSession","sessionId","eventType","eventTime","loggerProvider","sessionIdStr","sessionData","eventTypes","eventTypeStore","updatedEventTypes","updatedSessionData","event_type","lastUpdated","Date","now","put","warn","deleteOldSessionEventTypes","currentSessionId","currentSessionIdStr","allSessions","session","amountOfTimeSinceSession","getAll","storeEventTypeForSession","Targeting","evaluateTargeting","userProperties","deviceId","eventStrings","time","keys","session_id","event_types","user","device_id","user_properties","evaluationEngine","targeting","createInstance"],"mappings":"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"}
|