@ember-nexus/app-core 0.0.1
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/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/esm/BrowserEvent/GetServiceResolverEvent.js +21 -0
- package/dist/esm/BrowserEvent/GetServiceResolverEvent.js.map +1 -0
- package/dist/esm/BrowserEvent/index.js +2 -0
- package/dist/esm/BrowserEvent/index.js.map +1 -0
- package/dist/esm/Error/EmberNexusError.js +10 -0
- package/dist/esm/Error/EmberNexusError.js.map +1 -0
- package/dist/esm/Error/LogicError.js +12 -0
- package/dist/esm/Error/LogicError.js.map +1 -0
- package/dist/esm/Error/ParseError.js +12 -0
- package/dist/esm/Error/ParseError.js.map +1 -0
- package/dist/esm/Error/ValidationError.js +14 -0
- package/dist/esm/Error/ValidationError.js.map +1 -0
- package/dist/esm/Error/index.js +5 -0
- package/dist/esm/Error/index.js.map +1 -0
- package/dist/esm/Init.js +29 -0
- package/dist/esm/Init.js.map +1 -0
- package/dist/esm/Service/EventDispatcher.js +98 -0
- package/dist/esm/Service/EventDispatcher.js.map +1 -0
- package/dist/esm/Service/Logger.js +20 -0
- package/dist/esm/Service/Logger.js.map +1 -0
- package/dist/esm/Service/ServiceResolver.js +33 -0
- package/dist/esm/Service/ServiceResolver.js.map +1 -0
- package/dist/esm/Service/index.js +4 -0
- package/dist/esm/Service/index.js.map +1 -0
- package/dist/esm/Type/Definition/Action.js +2 -0
- package/dist/esm/Type/Definition/Action.js.map +1 -0
- package/dist/esm/Type/Definition/Branded.js +2 -0
- package/dist/esm/Type/Definition/Branded.js.map +1 -0
- package/dist/esm/Type/Definition/Event.js +46 -0
- package/dist/esm/Type/Definition/Event.js.map +1 -0
- package/dist/esm/Type/Definition/EventDispatcher.js +2 -0
- package/dist/esm/Type/Definition/EventDispatcher.js.map +1 -0
- package/dist/esm/Type/Definition/EventIdentifier.js +10 -0
- package/dist/esm/Type/Definition/EventIdentifier.js.map +1 -0
- package/dist/esm/Type/Definition/EventListener.js +2 -0
- package/dist/esm/Type/Definition/EventListener.js.map +1 -0
- package/dist/esm/Type/Definition/EventListenerIdentifier.js +20 -0
- package/dist/esm/Type/Definition/EventListenerIdentifier.js.map +1 -0
- package/dist/esm/Type/Definition/Logger.js +2 -0
- package/dist/esm/Type/Definition/Logger.js.map +1 -0
- package/dist/esm/Type/Definition/OptionalPromise.js +2 -0
- package/dist/esm/Type/Definition/OptionalPromise.js.map +1 -0
- package/dist/esm/Type/Definition/PriorityRegistry.js +63 -0
- package/dist/esm/Type/Definition/PriorityRegistry.js.map +1 -0
- package/dist/esm/Type/Definition/Registry.js +26 -0
- package/dist/esm/Type/Definition/Registry.js.map +1 -0
- package/dist/esm/Type/Definition/ServiceIdentifier.js +10 -0
- package/dist/esm/Type/Definition/ServiceIdentifier.js.map +1 -0
- package/dist/esm/Type/Definition/index.js +13 -0
- package/dist/esm/Type/Definition/index.js.map +1 -0
- package/dist/esm/Type/Enum/EventIdentifier.js +6 -0
- package/dist/esm/Type/Enum/EventIdentifier.js.map +1 -0
- package/dist/esm/Type/Enum/ServiceIdentifier.js +11 -0
- package/dist/esm/Type/Enum/ServiceIdentifier.js.map +1 -0
- package/dist/esm/Type/Enum/index.js +3 -0
- package/dist/esm/Type/Enum/index.js.map +1 -0
- package/dist/esm/Type/Partial/CustomEventDefaultInit.js +7 -0
- package/dist/esm/Type/Partial/CustomEventDefaultInit.js.map +1 -0
- package/dist/esm/Type/Partial/index.js +2 -0
- package/dist/esm/Type/Partial/index.js.map +1 -0
- package/dist/esm/Type/index.js +4 -0
- package/dist/esm/Type/index.js.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/types/BrowserEvent/GetServiceResolverEvent.d.ts +12 -0
- package/dist/types/BrowserEvent/index.d.ts +1 -0
- package/dist/types/Error/EmberNexusError.d.ts +7 -0
- package/dist/types/Error/LogicError.d.ts +8 -0
- package/dist/types/Error/ParseError.d.ts +8 -0
- package/dist/types/Error/ValidationError.d.ts +10 -0
- package/dist/types/Error/index.d.ts +4 -0
- package/dist/types/Init.d.ts +4 -0
- package/dist/types/Service/EventDispatcher.d.ts +12 -0
- package/dist/types/Service/Logger.d.ts +11 -0
- package/dist/types/Service/ServiceResolver.d.ts +13 -0
- package/dist/types/Service/index.d.ts +3 -0
- package/dist/types/Type/Definition/Action.d.ts +13 -0
- package/dist/types/Type/Definition/Branded.d.ts +9 -0
- package/dist/types/Type/Definition/Event.d.ts +30 -0
- package/dist/types/Type/Definition/EventDispatcher.d.ts +11 -0
- package/dist/types/Type/Definition/EventIdentifier.d.ts +8 -0
- package/dist/types/Type/Definition/EventListener.d.ts +4 -0
- package/dist/types/Type/Definition/EventListenerIdentifier.d.ts +10 -0
- package/dist/types/Type/Definition/Logger.d.ts +7 -0
- package/dist/types/Type/Definition/OptionalPromise.d.ts +2 -0
- package/dist/types/Type/Definition/PriorityRegistry.d.ts +19 -0
- package/dist/types/Type/Definition/Registry.d.ts +16 -0
- package/dist/types/Type/Definition/ServiceIdentifier.d.ts +8 -0
- package/dist/types/Type/Definition/index.d.ts +12 -0
- package/dist/types/Type/Enum/EventIdentifier.d.ts +4 -0
- package/dist/types/Type/Enum/ServiceIdentifier.d.ts +9 -0
- package/dist/types/Type/Enum/index.d.ts +2 -0
- package/dist/types/Type/Partial/CustomEventDefaultInit.d.ts +2 -0
- package/dist/types/Type/Partial/index.d.ts +1 -0
- package/dist/types/Type/index.d.ts +3 -0
- package/dist/types/index.d.ts +5 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@ember-nexus/app-core/./node_modules/reflect-metadata/Reflect.js","webpack://@ember-nexus/app-core/webpack/bootstrap","webpack://@ember-nexus/app-core/webpack/runtime/define property getters","webpack://@ember-nexus/app-core/webpack/runtime/global","webpack://@ember-nexus/app-core/webpack/runtime/hasOwnProperty shorthand","webpack://@ember-nexus/app-core/webpack/runtime/make namespace object","webpack://@ember-nexus/app-core/./src/Type/Enum/EventIdentifier.ts","webpack://@ember-nexus/app-core/./src/Type/Enum/ServiceIdentifier.ts","webpack://@ember-nexus/app-core/./src/Type/Partial/CustomEventDefaultInit.ts","webpack://@ember-nexus/app-core/./src/BrowserEvent/GetServiceResolverEvent.ts","webpack://@ember-nexus/app-core/./src/Error/EmberNexusError.ts","webpack://@ember-nexus/app-core/./src/Error/LogicError.ts","webpack://@ember-nexus/app-core/./src/Error/ParseError.ts","webpack://@ember-nexus/app-core/./src/Error/ValidationError.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/Event.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/EventIdentifier.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/EventListenerIdentifier.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/PriorityRegistry.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/Registry.ts","webpack://@ember-nexus/app-core/./src/Type/Definition/ServiceIdentifier.ts","webpack://@ember-nexus/app-core/./src/Service/EventDispatcher.ts","webpack://@ember-nexus/app-core/./src/Service/Logger.ts","webpack://@ember-nexus/app-core/./src/Service/ServiceResolver.ts","webpack://@ember-nexus/app-core/./node_modules/tslib/tslib.es6.mjs","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/token.class.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/error/service-not-found.error.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/error/cannot-instantiate-value.error.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/empty.const.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/container-instance.class.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/container.class.js","webpack://@ember-nexus/app-core/./node_modules/typedi/esm5/decorators/service.decorator.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Definition/Token.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/EmberNexusError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/LogicError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/NetworkError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/ParseError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/ResponseError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/Response401UnauthorizedError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/Response403ForbiddenError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/Response404NotFoundError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/Response429TooManyRequestsError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Error/ValidationError.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Definition/Uuid.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/ElementParser.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/CollectionParser.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/prettyLogStyles.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/formatTemplate.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/formatNumberAddZeros.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/runtime/browser/helper.jsonStringifyRecursive.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/runtime/browser/util.inspect.polyfil.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/runtime/browser/index.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/BaseLogger.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/urlToObj.js","webpack://@ember-nexus/app-core/./node_modules/tslog/dist/esm/index.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Enum/EventIdentifier.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Enum/HttpRequestMethod.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Enum/LogLevel.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Type/Enum/RequestProblemCategory.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Factory/LoggerFactory.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/Logger.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/WebSdkConfiguration.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/FetchHelper.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/EventSystem/RawValueToNormalizedValue/Event/RawValueToNormalizedValueEvent.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/EventSystem/RawValueToNormalizedValue/EventListener/DateTimeRawValueToNormalizedValueEventListener.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/EventSystem/RawValueToNormalizedValue/EventListener/GenericRawValueToNormalizedValueEventListener.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/EventSystem/EventManager.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/EventSystem/RawValueToNormalizedValue/RawValueToNormalizedValueEventManager.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/RawValueToNormalizedValueHelper.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/RequestProblemParser.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/TokenParser.js","webpack://@ember-nexus/app-core/./node_modules/lru-cache/dist/esm/index.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/DeleteElementEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/GetElementChildrenEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/GetElementEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/GetElementParentsEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/GetElementRelatedEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/GetIndexEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/PatchElementEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/PostElementEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/PostIndexEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/Element/PutElementEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/DeleteTokenEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/GetMeEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/GetTokenEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/PostChangePasswordEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/PostRegisterEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Endpoint/User/PostTokenEndpoint.js","webpack://@ember-nexus/app-core/./node_modules/@ember-nexus/web-sdk/dist/esm/Service/EmberNexus.js","webpack://@ember-nexus/app-core/./src/Init.ts"],"sourcesContent":["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","enum EventIdentifier {\n GetServiceResolver = 'ember-nexus-app-core-get-service-resolver',\n}\n\nexport { EventIdentifier };\n","enum ServiceIdentifier {\n emberNexusWebSDK = 'ember-nexus.web-sdk',\n eventDispatcher = 'global.event-dispatcher',\n logger = 'global.logger',\n action = 'global.action-registry',\n setting = 'global.setting-registry',\n icon = 'global.icon-registry',\n}\n\nexport { ServiceIdentifier };\n","const customEventDefaultInit: EventInit = {\n bubbles: true,\n composed: true,\n cancelable: true,\n};\n\nexport { customEventDefaultInit };\n","import { ServiceResolver } from '../Service/index.js';\nimport { EventIdentifier } from '../Type/Enum/index.js';\nimport { customEventDefaultInit } from '../Type/Partial/index.js';\n\ntype GetServiceResolverEventDetails = {\n serviceResolver: ServiceResolver | null;\n};\n\nclass GetServiceResolverEvent extends CustomEvent<GetServiceResolverEventDetails> {\n public static type = EventIdentifier.GetServiceResolver;\n constructor() {\n super(GetServiceResolverEvent.type, {\n ...customEventDefaultInit,\n detail: {\n serviceResolver: null,\n },\n });\n }\n\n getServiceResolver(): ServiceResolver | null {\n return this.detail.serviceResolver;\n }\n\n setServiceResolver(serviceResolver: ServiceResolver): void {\n this.detail.serviceResolver = serviceResolver;\n }\n}\n\nexport { GetServiceResolverEvent, GetServiceResolverEventDetails };\n","/**\n * Base class for errors generated by the Web SDK.\n */\nclass EmberNexusError extends Error {\n constructor(message?: string) {\n super(message);\n }\n}\n\nexport { EmberNexusError };\n","import { EmberNexusError } from './EmberNexusError.js';\n\n/**\n * Logic error class.\n */\nclass LogicError extends EmberNexusError {\n constructor(message?: string) {\n super(message);\n this.name = 'LogicError';\n }\n}\n\nexport { LogicError };\n","import { EmberNexusError } from './EmberNexusError.js';\n\n/**\n * Parse error class.\n */\nclass ParseError extends EmberNexusError {\n constructor(message?: string) {\n super(message);\n this.name = 'ParseError';\n }\n}\n\nexport { ParseError };\n","import { EmberNexusError } from './EmberNexusError.js';\n\n/**\n * Validation error class.\n *\n * Validation errors are thrown when data is parseable but does not match a context dependent data scheme.\n */\nclass ValidationError extends EmberNexusError {\n constructor(message?: string) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nexport { ValidationError };\n","import { EventIdentifier } from './EventIdentifier.js';\n\ninterface EventInterface {\n getIdentifier(): EventIdentifier;\n\n isPropagationStopped(): boolean;\n stopPropagation(): this;\n\n getContextValue(key: string): unknown;\n setContextValue(key: string, value: unknown): this;\n hasContextValue(key: string): boolean;\n clearContextValue(key: string): this;\n getContext(): Readonly<Record<string, unknown>>;\n setContext(context: Record<string, unknown>): this;\n clearContext(): this;\n}\n\nclass Event implements EventInterface {\n private readonly identifier: EventIdentifier;\n private stopped: boolean = false;\n private context: Record<string, unknown>;\n\n constructor(identifier: EventIdentifier, context: Record<string, unknown> = {}) {\n this.identifier = identifier;\n this.context = context;\n }\n\n getIdentifier(): EventIdentifier {\n return this.identifier;\n }\n\n isPropagationStopped(): boolean {\n return this.stopped;\n }\n\n stopPropagation(): this {\n this.stopped = true;\n return this;\n }\n\n getContextValue(key: string): unknown {\n return this.context[key];\n }\n\n setContextValue(key: string, value: unknown): this {\n this.context[key] = value;\n return this;\n }\n\n hasContextValue(key: string): boolean {\n return Object.prototype.hasOwnProperty.call(this.context, key);\n }\n\n clearContextValue(key: string): this {\n delete this.context[key];\n return this;\n }\n\n getContext(): Readonly<Record<string, unknown>> {\n return { ...this.context };\n }\n\n setContext(context: Record<string, unknown>): this {\n this.context = context;\n return this;\n }\n\n clearContext(): this {\n this.context = {};\n return this;\n }\n}\n\nexport { EventInterface, Event };\n","import { Branded } from './Branded.js';\nimport { ParseError } from '../../Error/index.js';\n\n/**\n * Type safe variant of string containing event identifier.\n */\ntype EventIdentifier = Branded<string, 'eventIdentifier'>;\n\nconst eventIdentifierRegex = /^([a-z][a-z0-9-]*)(\\.([a-z][a-z0-9-]*))*$/;\n\nfunction validateEventIdentifierFromString(eventIdentifier: string): EventIdentifier {\n if (!eventIdentifierRegex.test(eventIdentifier)) {\n throw new ParseError('Passed variable is not a valid event identifier.');\n }\n return eventIdentifier as EventIdentifier;\n}\n\nexport { EventIdentifier, validateEventIdentifierFromString, eventIdentifierRegex };\n","import { Branded } from './Branded.js';\nimport { EventIdentifier } from './EventIdentifier.js';\nimport { ParseError } from '../../Error/index.js';\n\n/**\n * Type safe variant of string containing event identifier.\n */\ntype EventListenerIdentifier = Branded<string, 'eventListenerIdentifier'>;\n\nconst eventListenerIdentifierRegex =\n /^(?:([a-z][a-z0-9-]*)(\\.([a-z][a-z0-9-]*))*|\\*|([a-z][a-z0-9-]*)(\\.([a-z][a-z0-9-]*))*(\\.\\*))$/;\n\nfunction validateEventListenerIdentifierFromString(eventListenerIdentifier: string): EventListenerIdentifier {\n if (!eventListenerIdentifierRegex.test(eventListenerIdentifier)) {\n throw new ParseError('Passed variable is not a valid event listener identifier.');\n }\n return eventListenerIdentifier as EventListenerIdentifier;\n}\n\nfunction getEventListenerIdentifiersFromEventIdentifier(eventIdentifier: EventIdentifier): EventListenerIdentifier[] {\n const parts = eventIdentifier.split('.');\n const eventListenerIdentifiers: EventListenerIdentifier[] = [];\n eventListenerIdentifiers.push(validateEventListenerIdentifierFromString(eventIdentifier));\n for (let i = parts.length - 1; i > 0; i--) {\n eventListenerIdentifiers.push(validateEventListenerIdentifierFromString(parts.slice(0, i).join('.') + '.*'));\n }\n eventListenerIdentifiers.push(validateEventListenerIdentifierFromString('*'));\n return eventListenerIdentifiers;\n}\n\nexport {\n EventListenerIdentifier,\n validateEventListenerIdentifierFromString,\n eventListenerIdentifierRegex,\n getEventListenerIdentifiersFromEventIdentifier,\n};\n","import { RegistryInterface } from './Registry.js';\n\ninterface PriorityRegistryInterface<T = unknown> extends RegistryInterface<T> {\n setEntry(key: string, entry: T, priority?: number): this;\n getAllEntriesForKey(key: string): T[] | null;\n}\n\ntype PriorityRegistryEntry<T = unknown> = {\n priority: number;\n entry: T;\n};\n\nclass PriorityRegistry<T = unknown> implements PriorityRegistryInterface {\n private readonly entries: Map<string, PriorityRegistryEntry<T>[]> = new Map();\n\n clearEntries(): this {\n this.entries.clear();\n return this;\n }\n\n deleteEntry(key: string): this {\n this.entries.delete(key);\n return this;\n }\n\n /**\n * Returns the entry with the highest priority.\n * If multiple entries have the same priority, the one which was added first gets returned.\n */\n getEntry(key: string): T | null {\n if (!this.hasEntry(key)) {\n return null;\n }\n const priorityRegistryEntries = this.entries.get(key)!;\n return priorityRegistryEntries[priorityRegistryEntries.length - 1].entry;\n }\n\n hasEntry(key: string): boolean {\n return this.entries.has(key);\n }\n\n setEntry(key: string, entry: T, priority?: number): this {\n if (priority === undefined) {\n priority = 0;\n }\n\n let entryList: PriorityRegistryEntry<T>[];\n if (!this.entries.has(key)) {\n entryList = [];\n this.entries.set(key, entryList);\n } else {\n entryList = this.entries.get(key)!;\n }\n\n // find correct index in list to add entry to\n let left = 0;\n let right = entryList.length - 1;\n let result = -1;\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n\n if (entryList[mid].priority >= priority) {\n result = mid; // Found a candidate, but keep searching in the left half\n right = mid - 1;\n } else {\n left = mid + 1; // Search in the right half\n }\n }\n\n const insertAt = result === -1 ? left : result;\n\n entryList.splice(insertAt, 0, { priority: priority, entry: entry });\n return this;\n }\n\n getAllEntriesForKey(key: string): T[] | null {\n if (!this.entries.has(key)) {\n return null;\n }\n return this.entries.get(key)!.map((priorityRegistryEntry) => priorityRegistryEntry.entry);\n }\n}\n\nexport { PriorityRegistryInterface, PriorityRegistry };\n","interface RegistryInterface<T = unknown> {\n getEntry(key: string): T | null;\n hasEntry(key: string): boolean;\n setEntry(key: string, entry: T): this;\n deleteEntry(key: string): this;\n clearEntries(): this;\n}\n\nclass Registry<T = unknown> implements RegistryInterface<T> {\n private readonly entries: Map<string, T> = new Map();\n\n clearEntries(): this {\n this.entries.clear();\n return this;\n }\n\n deleteEntry(key: string): this {\n this.entries.delete(key);\n return this;\n }\n\n getEntry(key: string): T | null {\n if (!this.hasEntry(key)) {\n return null;\n }\n return this.entries.get(key) as T;\n }\n\n hasEntry(key: string): boolean {\n return this.entries.has(key);\n }\n\n setEntry(key: string, entry: T): this {\n this.entries.set(key, entry);\n return this;\n }\n}\n\nexport { RegistryInterface, Registry };\n","import { Branded } from './Branded.js';\nimport { ParseError } from '../../Error/index.js';\n\n/**\n * Type safe variant of string containing service identifier.\n */\ntype ServiceIdentifier = Branded<string, 'serviceIdentifier'>;\n\nconst serviceIdentifierRegex = /^([a-z][a-z0-9-]*)(\\.([a-z][a-z0-9-]*))*$/;\n\nfunction validateServiceIdentifierFromString(serviceIdentifier: string): ServiceIdentifier {\n if (!serviceIdentifierRegex.test(serviceIdentifier)) {\n throw new ParseError('Passed variable is not a valid service identifier.');\n }\n return serviceIdentifier as ServiceIdentifier;\n}\n\nexport { ServiceIdentifier, validateServiceIdentifierFromString, serviceIdentifierRegex };\n","import {\n EventDispatcherInterface,\n EventInterface,\n EventListener,\n EventListenerIdentifier,\n LoggerInterface,\n getEventListenerIdentifiersFromEventIdentifier,\n} from '../Type/Definition/index.js';\n\ntype EventDispatcherEntry = {\n priority: number;\n eventListener: EventListener;\n};\n\nclass EventDispatcher implements EventDispatcherInterface {\n private readonly entries: Map<string, EventDispatcherEntry[]> = new Map();\n private logger: LoggerInterface;\n\n public constructor(logger: LoggerInterface) {\n this.logger = logger;\n }\n\n async dispatchEvent(event: EventInterface): Promise<void> {\n this.logger.debug(`Dispatching event of identifier ${event.getIdentifier()}.`, { event: event });\n if (event.isPropagationStopped()) {\n this.logger.debug(`Stopped event propagation because it is already stopped.`, { event: event });\n return undefined;\n }\n const eventListenerIdentifiersToNotify = getEventListenerIdentifiersFromEventIdentifier(event.getIdentifier());\n for (let i = 0; i < eventListenerIdentifiersToNotify.length; ++i) {\n const eventListenerIdentifier = eventListenerIdentifiersToNotify[i];\n const eventListeners = this.entries.get(eventListenerIdentifier);\n if (eventListeners === undefined) {\n continue;\n }\n this.logger.debug(`Iterating over resolved event listeners of identifier ${eventListenerIdentifier}`, {\n event: event,\n });\n for (let j = eventListeners.length - 1; j >= 0; j--) {\n try {\n await Promise.resolve(eventListeners[j].eventListener(event));\n } catch (e: unknown) {\n this.logger.error(`Event handler threw exception, dispatcher continues with next event listener.`, {\n event: event,\n error: e,\n });\n }\n if (event.isPropagationStopped()) {\n this.logger.debug(`Stopped event propagation as it got stopped.`, { event: event });\n return undefined;\n }\n }\n }\n this.logger.debug(`Event got handled by all event listeners.`, { event: event });\n return undefined;\n }\n\n addListener(eventListenerIdentifier: EventListenerIdentifier, eventListener: EventListener, priority?: number): this {\n if (priority === undefined) {\n priority = 0;\n }\n\n let eventListenersList: EventDispatcherEntry[];\n if (!this.entries.has(eventListenerIdentifier)) {\n eventListenersList = [];\n } else {\n eventListenersList = this.entries.get(eventListenerIdentifier)!;\n }\n\n // find correct index in list to add entry to\n let left = 0;\n let right = eventListenersList.length - 1;\n let result = -1;\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n\n if (eventListenersList[mid].priority >= priority) {\n result = mid; // Found a candidate, but keep searching in the left half\n right = mid - 1;\n } else {\n left = mid + 1; // Search in the right half\n }\n }\n\n const insertAt = result === -1 ? left : result;\n\n eventListenersList.splice(insertAt, 0, { priority: priority, eventListener: eventListener });\n this.entries.set(eventListenerIdentifier, eventListenersList);\n return this;\n }\n\n removeListener(eventListenerIdentifier: EventListenerIdentifier, eventListener: EventListener): this {\n const eventListenersList = this.entries.get(eventListenerIdentifier);\n if (!eventListenersList) {\n return this;\n }\n for (let i = 0; i < eventListenersList.length; ++i) {\n if (eventListenersList[i].eventListener === eventListener) {\n eventListenersList.splice(i, 1);\n break;\n }\n }\n if (eventListenersList.length === 0) {\n this.entries.delete(eventListenerIdentifier);\n }\n return this;\n }\n\n getListeners(eventListenerIdentifier: EventListenerIdentifier): EventListener[] {\n const entries = this.entries.get(eventListenerIdentifier);\n return entries ? entries.map((entry) => entry.eventListener) : [];\n }\n\n hasListeners(eventListenerIdentifier: EventListenerIdentifier): boolean {\n return this.entries.has(eventListenerIdentifier);\n }\n}\n\nexport { EventDispatcher };\n","import { ILogObj, Logger as TsLogger } from 'tslog';\n\nimport { LoggerInterface } from '../Type/Definition/index.js';\n\nclass Logger implements LoggerInterface {\n private logger: TsLogger<ILogObj>;\n constructor(logger: TsLogger<ILogObj>) {\n this.logger = logger;\n }\n\n debug(...args: unknown[]): unknown | undefined {\n return this.logger.debug(args);\n }\n\n error(...args: unknown[]): unknown | undefined {\n return this.logger.error(args);\n }\n\n info(...args: unknown[]): unknown | undefined {\n return this.logger.info(args);\n }\n\n warn(...args: unknown[]): unknown | undefined {\n return this.logger.warn(args);\n }\n}\n\nexport { Logger };\n","import { ServiceIdentifier } from '../Type/Definition/index.js';\n\nclass ServiceResolver {\n private readonly services: Map<ServiceIdentifier, unknown> = new Map();\n\n constructor() {}\n\n hasService(serviceIdentifier: ServiceIdentifier): boolean {\n return this.services.has(serviceIdentifier);\n }\n\n getService(serviceIdentifier: ServiceIdentifier): null | unknown {\n if (!this.hasService(serviceIdentifier)) {\n return null;\n }\n return this.services.get(serviceIdentifier);\n }\n\n setService(serviceIdentifier: ServiceIdentifier, service: unknown): ServiceResolver {\n this.services.set(serviceIdentifier, service);\n return this;\n }\n\n deleteService(serviceIdentifier: ServiceIdentifier): ServiceResolver {\n this.services.delete(serviceIdentifier);\n return this;\n }\n\n getServiceIdentifiers(): ServiceIdentifier[] {\n return [...this.services.keys()];\n }\n\n getServices(): unknown[] {\n return [...this.services.values()];\n }\n\n clearServices(): ServiceResolver {\n this.services.clear();\n return this;\n }\n}\n\nexport { ServiceResolver };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __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}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\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);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\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: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], 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 { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __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}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\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;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\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]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof 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\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Used to create unique typed service identifier.\n * Useful when service has only interface, but don't have a class.\n */\nvar Token = /** @class */ (function () {\n /**\n * @param name Token name, optional and only used for debugging purposes.\n */\n function Token(name) {\n this.name = name;\n }\n return Token;\n}());\nexport { Token };\n//# sourceMappingURL=token.class.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Token } from '../token.class';\n/**\n * Thrown when requested service was not found.\n */\nvar ServiceNotFoundError = /** @class */ (function (_super) {\n __extends(ServiceNotFoundError, _super);\n function ServiceNotFoundError(identifier) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.name = 'ServiceNotFoundError';\n /** Normalized identifier name used in the error message. */\n _this.normalizedIdentifier = '<UNKNOWN_IDENTIFIER>';\n if (typeof identifier === 'string') {\n _this.normalizedIdentifier = identifier;\n }\n else if (identifier instanceof Token) {\n _this.normalizedIdentifier = \"Token<\" + (identifier.name || 'UNSET_NAME') + \">\";\n }\n else if (identifier && (identifier.name || ((_a = identifier.prototype) === null || _a === void 0 ? void 0 : _a.name))) {\n _this.normalizedIdentifier =\n \"MaybeConstructable<\" + identifier.name + \">\" ||\n \"MaybeConstructable<\" + ((_b = identifier.prototype) === null || _b === void 0 ? void 0 : _b.name) + \">\";\n }\n return _this;\n }\n Object.defineProperty(ServiceNotFoundError.prototype, \"message\", {\n get: function () {\n return (\"Service with \\\"\" + this.normalizedIdentifier + \"\\\" identifier was not found in the container. \" +\n \"Register it before usage via explicitly calling the \\\"Container.set\\\" function or using the \\\"@Service()\\\" decorator.\");\n },\n enumerable: false,\n configurable: true\n });\n return ServiceNotFoundError;\n}(Error));\nexport { ServiceNotFoundError };\n//# sourceMappingURL=service-not-found.error.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Token } from '../token.class';\n/**\n * Thrown when DI cannot inject value into property decorated by @Inject decorator.\n */\nvar CannotInstantiateValueError = /** @class */ (function (_super) {\n __extends(CannotInstantiateValueError, _super);\n function CannotInstantiateValueError(identifier) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.name = 'CannotInstantiateValueError';\n /** Normalized identifier name used in the error message. */\n _this.normalizedIdentifier = '<UNKNOWN_IDENTIFIER>';\n // TODO: Extract this to a helper function and share between this and NotFoundError.\n if (typeof identifier === 'string') {\n _this.normalizedIdentifier = identifier;\n }\n else if (identifier instanceof Token) {\n _this.normalizedIdentifier = \"Token<\" + (identifier.name || 'UNSET_NAME') + \">\";\n }\n else if (identifier && (identifier.name || ((_a = identifier.prototype) === null || _a === void 0 ? void 0 : _a.name))) {\n _this.normalizedIdentifier =\n \"MaybeConstructable<\" + identifier.name + \">\" ||\n \"MaybeConstructable<\" + ((_b = identifier.prototype) === null || _b === void 0 ? void 0 : _b.name) + \">\";\n }\n return _this;\n }\n Object.defineProperty(CannotInstantiateValueError.prototype, \"message\", {\n get: function () {\n return (\"Cannot instantiate the requested value for the \\\"\" + this.normalizedIdentifier + \"\\\" identifier. \" +\n \"The related metadata doesn't contain a factory or a type to instantiate.\");\n },\n enumerable: false,\n configurable: true\n });\n return CannotInstantiateValueError;\n}(Error));\nexport { CannotInstantiateValueError };\n//# sourceMappingURL=cannot-instantiate-value.error.js.map","export var EMPTY_VALUE = Symbol('EMPTY_VALUE');\n//# sourceMappingURL=empty.const.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(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))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Container } from './container.class';\nimport { ServiceNotFoundError } from './error/service-not-found.error';\nimport { CannotInstantiateValueError } from './error/cannot-instantiate-value.error';\nimport { Token } from './token.class';\nimport { EMPTY_VALUE } from './empty.const';\n/**\n * TypeDI can have multiple containers.\n * One container is ContainerInstance.\n */\nvar ContainerInstance = /** @class */ (function () {\n function ContainerInstance(id) {\n /** All registered services in the container. */\n this.services = [];\n this.id = id;\n }\n ContainerInstance.prototype.has = function (identifier) {\n return !!this.findService(identifier);\n };\n ContainerInstance.prototype.get = function (identifier) {\n var globalContainer = Container.of(undefined);\n var globalService = globalContainer.findService(identifier);\n var scopedService = this.findService(identifier);\n if (globalService && globalService.global === true)\n return this.getServiceValue(globalService);\n if (scopedService)\n return this.getServiceValue(scopedService);\n /** If it's the first time requested in the child container we load it from parent and set it. */\n if (globalService && this !== globalContainer) {\n var clonedService = __assign({}, globalService);\n clonedService.value = EMPTY_VALUE;\n /**\n * We need to immediately set the empty value from the root container\n * to prevent infinite lookup in cyclic dependencies.\n */\n this.set(clonedService);\n var value = this.getServiceValue(clonedService);\n this.set(__assign(__assign({}, clonedService), { value: value }));\n return value;\n }\n if (globalService)\n return this.getServiceValue(globalService);\n throw new ServiceNotFoundError(identifier);\n };\n ContainerInstance.prototype.getMany = function (identifier) {\n var _this = this;\n return this.findAllServices(identifier).map(function (service) { return _this.getServiceValue(service); });\n };\n ContainerInstance.prototype.set = function (identifierOrServiceMetadata, value) {\n var _this = this;\n if (identifierOrServiceMetadata instanceof Array) {\n identifierOrServiceMetadata.forEach(function (data) { return _this.set(data); });\n return this;\n }\n if (typeof identifierOrServiceMetadata === 'string' || identifierOrServiceMetadata instanceof Token) {\n return this.set({\n id: identifierOrServiceMetadata,\n type: null,\n value: value,\n factory: undefined,\n global: false,\n multiple: false,\n eager: false,\n transient: false,\n });\n }\n if (typeof identifierOrServiceMetadata === 'function') {\n return this.set({\n id: identifierOrServiceMetadata,\n // TODO: remove explicit casting\n type: identifierOrServiceMetadata,\n value: value,\n factory: undefined,\n global: false,\n multiple: false,\n eager: false,\n transient: false,\n });\n }\n var newService = __assign({ id: new Token('UNREACHABLE'), type: null, factory: undefined, value: EMPTY_VALUE, global: false, multiple: false, eager: false, transient: false }, identifierOrServiceMetadata);\n var service = this.findService(newService.id);\n if (service && service.multiple !== true) {\n Object.assign(service, newService);\n }\n else {\n this.services.push(newService);\n }\n if (newService.eager) {\n this.get(newService.id);\n }\n return this;\n };\n /**\n * Removes services with a given service identifiers.\n */\n ContainerInstance.prototype.remove = function (identifierOrIdentifierArray) {\n var _this = this;\n if (Array.isArray(identifierOrIdentifierArray)) {\n identifierOrIdentifierArray.forEach(function (id) { return _this.remove(id); });\n }\n else {\n this.services = this.services.filter(function (service) {\n if (service.id === identifierOrIdentifierArray) {\n _this.destroyServiceInstance(service);\n return false;\n }\n return true;\n });\n }\n return this;\n };\n /**\n * Completely resets the container by removing all previously registered services from it.\n */\n ContainerInstance.prototype.reset = function (options) {\n var _this = this;\n if (options === void 0) { options = { strategy: 'resetValue' }; }\n switch (options.strategy) {\n case 'resetValue':\n this.services.forEach(function (service) { return _this.destroyServiceInstance(service); });\n break;\n case 'resetServices':\n this.services.forEach(function (service) { return _this.destroyServiceInstance(service); });\n this.services = [];\n break;\n default:\n throw new Error('Received invalid reset strategy.');\n }\n return this;\n };\n /**\n * Returns all services registered with the given identifier.\n */\n ContainerInstance.prototype.findAllServices = function (identifier) {\n return this.services.filter(function (service) { return service.id === identifier; });\n };\n /**\n * Finds registered service in the with a given service identifier.\n */\n ContainerInstance.prototype.findService = function (identifier) {\n return this.services.find(function (service) { return service.id === identifier; });\n };\n /**\n * Gets the value belonging to `serviceMetadata.id`.\n *\n * - if `serviceMetadata.value` is already set it is immediately returned\n * - otherwise the requested type is resolved to the value saved to `serviceMetadata.value` and returned\n */\n ContainerInstance.prototype.getServiceValue = function (serviceMetadata) {\n var _a;\n var value = EMPTY_VALUE;\n /**\n * If the service value has been set to anything prior to this call we return that value.\n * NOTE: This part builds on the assumption that transient dependencies has no value set ever.\n */\n if (serviceMetadata.value !== EMPTY_VALUE) {\n return serviceMetadata.value;\n }\n /** If both factory and type is missing, we cannot resolve the requested ID. */\n if (!serviceMetadata.factory && !serviceMetadata.type) {\n throw new CannotInstantiateValueError(serviceMetadata.id);\n }\n /**\n * If a factory is defined it takes priority over creating an instance via `new`.\n * The return value of the factory is not checked, we believe by design that the user knows what he/she is doing.\n */\n if (serviceMetadata.factory) {\n /**\n * If we received the factory in the [Constructable<Factory>, \"functionName\"] format, we need to create the\n * factory first and then call the specified function on it.\n */\n if (serviceMetadata.factory instanceof Array) {\n var factoryInstance = void 0;\n try {\n /** Try to get the factory from TypeDI first, if failed, fall back to simply initiating the class. */\n factoryInstance = this.get(serviceMetadata.factory[0]);\n }\n catch (error) {\n if (error instanceof ServiceNotFoundError) {\n factoryInstance = new serviceMetadata.factory[0]();\n }\n else {\n throw error;\n }\n }\n value = factoryInstance[serviceMetadata.factory[1]](this, serviceMetadata.id);\n }\n else {\n /** If only a simple function was provided we simply call it. */\n value = serviceMetadata.factory(this, serviceMetadata.id);\n }\n }\n /**\n * If no factory was provided and only then, we create the instance from the type if it was set.\n */\n if (!serviceMetadata.factory && serviceMetadata.type) {\n var constructableTargetType = serviceMetadata.type;\n // setup constructor parameters for a newly initialized service\n var paramTypes = ((_a = Reflect) === null || _a === void 0 ? void 0 : _a.getMetadata('design:paramtypes', constructableTargetType)) || [];\n var params = this.initializeParams(constructableTargetType, paramTypes);\n // \"extra feature\" - always pass container instance as the last argument to the service function\n // this allows us to support javascript where we don't have decorators and emitted metadata about dependencies\n // need to be injected, and user can use provided container to get instances he needs\n params.push(this);\n value = new (constructableTargetType.bind.apply(constructableTargetType, __spreadArrays([void 0], params)))();\n // TODO: Calling this here, leads to infinite loop, because @Inject decorator registerds a handler\n // TODO: which calls Container.get, which will check if the requested type has a value set and if not\n // TODO: it will start the instantiation process over. So this is currently called outside of the if branch\n // TODO: after the current value has been assigned to the serviceMetadata.\n // this.applyPropertyHandlers(constructableTargetType, value as Constructable<unknown>);\n }\n /** If this is not a transient service, and we resolved something, then we set it as the value. */\n if (!serviceMetadata.transient && value !== EMPTY_VALUE) {\n serviceMetadata.value = value;\n }\n if (value === EMPTY_VALUE) {\n /** This branch should never execute, but better to be safe than sorry. */\n throw new CannotInstantiateValueError(serviceMetadata.id);\n }\n if (serviceMetadata.type) {\n this.applyPropertyHandlers(serviceMetadata.type, value);\n }\n return value;\n };\n /**\n * Initializes all parameter types for a given target service class.\n */\n ContainerInstance.prototype.initializeParams = function (target, paramTypes) {\n var _this = this;\n return paramTypes.map(function (paramType, index) {\n var paramHandler = Container.handlers.find(function (handler) {\n /**\n * @Inject()-ed values are stored as parameter handlers and they reference their target\n * when created. So when a class is extended the @Inject()-ed values are not inherited\n * because the handler still points to the old object only.\n *\n * As a quick fix a single level parent lookup is added via `Object.getPrototypeOf(target)`,\n * however this should be updated to a more robust solution.\n *\n * TODO: Add proper inheritance handling: either copy the handlers when a class is registered what\n * TODO: has it's parent already registered as dependency or make the lookup search up to the base Object.\n */\n return ((handler.object === target || handler.object === Object.getPrototypeOf(target)) && handler.index === index);\n });\n if (paramHandler)\n return paramHandler.value(_this);\n if (paramType && paramType.name && !_this.isPrimitiveParamType(paramType.name)) {\n return _this.get(paramType);\n }\n return undefined;\n });\n };\n /**\n * Checks if given parameter type is primitive type or not.\n */\n ContainerInstance.prototype.isPrimitiveParamType = function (paramTypeName) {\n return ['string', 'boolean', 'number', 'object'].includes(paramTypeName.toLowerCase());\n };\n /**\n * Applies all registered handlers on a given target class.\n */\n ContainerInstance.prototype.applyPropertyHandlers = function (target, instance) {\n var _this = this;\n Container.handlers.forEach(function (handler) {\n if (typeof handler.index === 'number')\n return;\n if (handler.object.constructor !== target && !(target.prototype instanceof handler.object.constructor))\n return;\n if (handler.propertyName) {\n instance[handler.propertyName] = handler.value(_this);\n }\n });\n };\n /**\n * Checks if the given service metadata contains a destroyable service instance and destroys it in place. If the service\n * contains a callable function named `destroy` it is called but not awaited and the return value is ignored..\n *\n * @param serviceMetadata the service metadata containing the instance to destroy\n * @param force when true the service will be always destroyed even if it's cannot be re-created\n */\n ContainerInstance.prototype.destroyServiceInstance = function (serviceMetadata, force) {\n if (force === void 0) { force = false; }\n /** We reset value only if we can re-create it (aka type or factory exists). */\n var shouldResetValue = force || !!serviceMetadata.type || !!serviceMetadata.factory;\n if (shouldResetValue) {\n /** If we wound a function named destroy we call it without any params. */\n if (typeof (serviceMetadata === null || serviceMetadata === void 0 ? void 0 : serviceMetadata.value)['destroy'] === 'function') {\n try {\n serviceMetadata.value.destroy();\n }\n catch (error) {\n /** We simply ignore the errors from the destroy function. */\n }\n }\n serviceMetadata.value = EMPTY_VALUE;\n }\n };\n return ContainerInstance;\n}());\nexport { ContainerInstance };\n//# sourceMappingURL=container-instance.class.js.map","import { ContainerInstance } from './container-instance.class';\n/**\n * Service container.\n */\nvar Container = /** @class */ (function () {\n function Container() {\n }\n /**\n * Gets a separate container instance for the given instance id.\n */\n Container.of = function (containerId) {\n if (containerId === void 0) { containerId = 'default'; }\n if (containerId === 'default')\n return this.globalInstance;\n var container = this.instances.find(function (instance) { return instance.id === containerId; });\n if (!container) {\n container = new ContainerInstance(containerId);\n this.instances.push(container);\n // TODO: Why we are not reseting here? Let's reset here. (I have added the commented code.)\n // container.reset();\n }\n return container;\n };\n Container.has = function (identifier) {\n return this.globalInstance.has(identifier);\n };\n Container.get = function (identifier) {\n return this.globalInstance.get(identifier);\n };\n Container.getMany = function (id) {\n return this.globalInstance.getMany(id);\n };\n Container.set = function (identifierOrServiceMetadata, value) {\n this.globalInstance.set(identifierOrServiceMetadata, value);\n return this;\n };\n /**\n * Removes services with a given service identifiers.\n */\n Container.remove = function (identifierOrIdentifierArray) {\n this.globalInstance.remove(identifierOrIdentifierArray);\n return this;\n };\n /**\n * Completely resets the container by removing all previously registered services and handlers from it.\n */\n Container.reset = function (containerId) {\n if (containerId === void 0) { containerId = 'default'; }\n if (containerId == 'default') {\n this.globalInstance.reset();\n this.instances.forEach(function (instance) { return instance.reset(); });\n }\n else {\n var instance = this.instances.find(function (instance) { return instance.id === containerId; });\n if (instance) {\n instance.reset();\n this.instances.splice(this.instances.indexOf(instance), 1);\n }\n }\n return this;\n };\n /**\n * Registers a new handler.\n */\n Container.registerHandler = function (handler) {\n this.handlers.push(handler);\n return this;\n };\n /**\n * Helper method that imports given services.\n */\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n Container.import = function (services) {\n return this;\n };\n /**\n * All registered handlers. The @Inject() decorator uses handlers internally to mark a property for injection.\n **/\n Container.handlers = [];\n /** Global container instance. */\n Container.globalInstance = new ContainerInstance('default');\n /** Other containers created using Container.of method. */\n Container.instances = [];\n return Container;\n}());\nexport { Container };\n//# sourceMappingURL=container.class.js.map","import { Container } from '../container.class';\nimport { Token } from '../token.class';\nimport { EMPTY_VALUE } from '../empty.const';\nexport function Service(optionsOrServiceIdentifier) {\n return function (targetConstructor) {\n var serviceMetadata = {\n id: targetConstructor,\n // TODO: Let's investigate why we receive Function type instead of a constructable.\n type: targetConstructor,\n factory: undefined,\n multiple: false,\n global: false,\n eager: false,\n transient: false,\n value: EMPTY_VALUE,\n };\n if (optionsOrServiceIdentifier instanceof Token || typeof optionsOrServiceIdentifier === 'string') {\n /** We received a Token or string ID. */\n serviceMetadata.id = optionsOrServiceIdentifier;\n }\n else if (optionsOrServiceIdentifier) {\n /** We received a ServiceOptions object. */\n serviceMetadata.id = optionsOrServiceIdentifier.id || targetConstructor;\n serviceMetadata.factory = optionsOrServiceIdentifier.factory || undefined;\n serviceMetadata.multiple = optionsOrServiceIdentifier.multiple || false;\n serviceMetadata.global = optionsOrServiceIdentifier.global || false;\n serviceMetadata.eager = optionsOrServiceIdentifier.eager || false;\n serviceMetadata.transient = optionsOrServiceIdentifier.transient || false;\n }\n Container.set(serviceMetadata);\n };\n}\n//# sourceMappingURL=service.decorator.js.map","const tokenRegex = /^secret-token:.+$/;\nfunction validateTokenFromString(token) {\n if (!tokenRegex.test(token)) {\n throw new Error('Passed variable is not a valid token.');\n }\n return token;\n}\nexport { validateTokenFromString, tokenRegex };\n//# sourceMappingURL=Token.js.map","/**\n * Base class for errors generated by the Web SDK.\n */\nclass EmberNexusError extends Error {\n constructor(message) {\n super(message);\n }\n}\nexport { EmberNexusError };\n//# sourceMappingURL=EmberNexusError.js.map","import { EmberNexusError } from './EmberNexusError.js';\n/**\n * Logic error class.\n */\nclass LogicError extends EmberNexusError {\n constructor(message) {\n super(message);\n this.name = 'LogicError';\n }\n}\nexport { LogicError };\n//# sourceMappingURL=LogicError.js.map","import { EmberNexusError } from './EmberNexusError.js';\n/**\n * Generic network error.\n */\nclass NetworkError extends EmberNexusError {\n constructor(message, originalError) {\n super(message);\n this.name = 'NetworkError';\n this.cause = originalError;\n }\n}\nexport { NetworkError };\n//# sourceMappingURL=NetworkError.js.map","import { EmberNexusError } from './EmberNexusError.js';\n/**\n * Parse error class.\n */\nclass ParseError extends EmberNexusError {\n constructor(message) {\n super(message);\n this.name = 'ParseError';\n }\n}\nexport { ParseError };\n//# sourceMappingURL=ParseError.js.map","import { EmberNexusError } from './EmberNexusError.js';\n/**\n * Base class for errors returned by the API.\n */\nclass ResponseError extends EmberNexusError {\n _type = null;\n _title = null;\n _detail = null;\n _status = null;\n constructor(message) {\n super(message);\n }\n getType() {\n return this._type;\n }\n setType(value) {\n this._type = value;\n return this;\n }\n getTitle() {\n return this._title;\n }\n setTitle(value) {\n this._title = value;\n return this;\n }\n getDetail() {\n return this._detail;\n }\n setDetail(value) {\n this._detail = value;\n return this;\n }\n getStatus() {\n return this._status;\n }\n setStatus(value) {\n this._status = value;\n return this;\n }\n}\nexport { ResponseError };\n//# sourceMappingURL=ResponseError.js.map","import { ResponseError } from './ResponseError.js';\n/**\n * Wrapper around Ember Nexus API's 401 unauthorized response.\n *\n * @see [Ember Nexus API: Get Details for Error 401 Unauthorized Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/error/get-401-unauthorized)\n */\nclass Response401UnauthorizedError extends ResponseError {\n constructor(message) {\n super(message);\n this.name = 'Response401UnauthorizedError';\n this.setStatus(401);\n }\n}\nexport { Response401UnauthorizedError };\n//# sourceMappingURL=Response401UnauthorizedError.js.map","import { ResponseError } from './ResponseError.js';\n/**\n * Wrapper around Ember Nexus API's 403 forbidden response.\n *\n * @see [Ember Nexus API: Get Details for Error 403 Forbidden Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/error/get-403-forbidden)\n */\nclass Response403ForbiddenError extends ResponseError {\n constructor(message) {\n super(message);\n this.name = 'Response403ForbiddenError';\n this.setStatus(403);\n }\n}\nexport { Response403ForbiddenError };\n//# sourceMappingURL=Response403ForbiddenError.js.map","import { ResponseError } from './ResponseError.js';\n/**\n * Wrapper around Ember Nexus API's 404 not found response.\n *\n * @see [Ember Nexus API: Get Details for Error 404 Not Found Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/error/get-404-not-found)\n */\nclass Response404NotFoundError extends ResponseError {\n constructor(message) {\n super(message);\n this.name = 'Response404NotFoundError';\n this.setStatus(404);\n }\n}\nexport { Response404NotFoundError };\n//# sourceMappingURL=Response404NotFoundError.js.map","import { ResponseError } from './ResponseError.js';\n/**\n * Wrapper around Ember Nexus API's 429 too many requests response.\n *\n * @todo add link to documentation once 429 errors are returned.\n */\nclass Response429TooManyRequestsError extends ResponseError {\n constructor(message) {\n super(message);\n this.name = 'Response429TooManyRequestsError';\n this.setStatus(429);\n }\n}\nexport { Response429TooManyRequestsError };\n//# sourceMappingURL=Response429TooManyRequestsError.js.map","import { EmberNexusError } from './EmberNexusError.js';\n/**\n * Validation error class.\n *\n * Validation errors are thrown when data is parseable but does not match a context dependent data scheme.\n */\nclass ValidationError extends EmberNexusError {\n constructor(message) {\n super(message);\n this.name = 'ValidationError';\n }\n}\nexport { ValidationError };\n//# sourceMappingURL=ValidationError.js.map","import { ParseError } from '../../Error/index.js';\nconst uuidv4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\nfunction validateUuidFromString(uuid) {\n if (!uuidv4Regex.test(uuid)) {\n throw new ParseError('Passed variable is not a valid UUID v4.');\n }\n return uuid;\n}\nexport { validateUuidFromString, uuidv4Regex };\n//# sourceMappingURL=Uuid.js.map","import { __decorate } from \"tslib\";\nimport { Service } from 'typedi';\nimport { validateUuidFromString } from '../Type/Definition/index.js';\n/**\n * Class which helps to parse elements.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet ElementParser = class ElementParser {\n rawElementToNodeOrRelation(element) {\n if (!('id' in element)) {\n throw new Error(\"Raw element must contain property 'id' in order to be parsed to a node or relation.\");\n }\n const id = validateUuidFromString(String(element.id));\n if (!('type' in element)) {\n throw new Error(\"Raw element must contain property 'type' in order to be parsed to a node or relation.\");\n }\n const type = String(element.type);\n if (!('data' in element)) {\n throw new Error(\"Raw element must contain property 'data' in order to be parsed to a node or relation.\");\n }\n const data = element.data;\n // todo: refactor datetime transformation etc.\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key) && typeof data[key] === 'string') {\n const dateString = data[key];\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$/;\n if (dateRegex.test(dateString)) {\n data[key] = new Date(dateString);\n }\n }\n }\n if ('start' in element && 'end' in element) {\n const start = validateUuidFromString(String(element.start));\n const end = validateUuidFromString(String(element.end));\n return {\n id: id,\n start: start,\n end: end,\n type: type,\n data: data,\n };\n }\n return {\n id: id,\n type: type,\n data: data,\n };\n }\n};\nElementParser = __decorate([\n Service()\n], ElementParser);\nexport { ElementParser };\n//# sourceMappingURL=ElementParser.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { ElementParser } from './ElementParser.js';\n/**\n * Class which helps to parse collections.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet CollectionParser = class CollectionParser {\n elementParser;\n constructor(elementParser) {\n this.elementParser = elementParser;\n }\n rawCollectionToCollection(rawCollection) {\n if (!('id' in rawCollection)) {\n throw new Error(\"Raw collection must contain property 'id' in order to be parsed to a collection.\");\n }\n const id = String(rawCollection.id);\n if (!('totalNodes' in rawCollection)) {\n throw new Error(\"Raw collection must contain property 'totalNodes' in order to be parsed to a collection.\");\n }\n const totalNodes = Number(rawCollection.totalNodes);\n if (!('links' in rawCollection)) {\n throw new Error(\"Raw collection must contain property 'links' in order to be parsed to a collection.\");\n }\n if (typeof rawCollection.links !== 'object' || rawCollection.links === null) {\n throw new Error('Links property in raw collection must be of type object.');\n }\n const rawCollectionLinks = rawCollection.links;\n if (!('first' in rawCollectionLinks)) {\n throw new Error(\"Raw collection must contain property 'links.first' in order to be parsed to a collection.\");\n }\n const first = String(rawCollectionLinks.first);\n if (!('previous' in rawCollectionLinks)) {\n throw new Error(\"Raw collection must contain property 'links.previous' in order to be parsed to a collection.\");\n }\n const previous = rawCollectionLinks.previous === null ? null : String(rawCollectionLinks.previous);\n if (!('next' in rawCollectionLinks)) {\n throw new Error(\"Raw collection must contain property 'links.next' in order to be parsed to a collection.\");\n }\n const next = rawCollectionLinks.next === null ? null : String(rawCollectionLinks.next);\n if (!('last' in rawCollectionLinks)) {\n throw new Error(\"Raw collection must contain property 'links.last' in order to be parsed to a collection.\");\n }\n const last = String(rawCollectionLinks.last);\n if (!('nodes' in rawCollection)) {\n throw new Error(\"Raw collection must contain property 'nodes' in order to be parsed to a collection.\");\n }\n if (!Array.isArray(rawCollection.nodes)) {\n throw new Error('Nodes property in raw collection must be of type array.');\n }\n const nodes = [];\n for (const rawNode of rawCollection.nodes) {\n nodes.push(this.elementParser.rawElementToNodeOrRelation(rawNode));\n }\n if (!('relations' in rawCollection)) {\n throw new Error(\"Raw collection must contain property 'relations' in order to be parsed to a collection.\");\n }\n if (!Array.isArray(rawCollection.relations)) {\n throw new Error('Relations property in raw collection must be of type array.');\n }\n const relations = [];\n for (const rawRelation of rawCollection.relations) {\n relations.push(this.elementParser.rawElementToNodeOrRelation(rawRelation));\n }\n return {\n id: id,\n totalNodes: totalNodes,\n links: {\n first: first,\n previous: previous,\n next: next,\n last: last,\n },\n nodes: nodes,\n relations: relations,\n };\n }\n};\nCollectionParser = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [ElementParser])\n], CollectionParser);\nexport { CollectionParser };\n//# sourceMappingURL=CollectionParser.js.map","export const prettyLogStyles = {\n reset: [0, 0],\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n overline: [53, 55],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49],\n};\n","import { prettyLogStyles } from \"./prettyLogStyles.js\";\nexport function formatTemplate(settings, template, values, hideUnsetPlaceholder = false) {\n const templateString = String(template);\n const ansiColorWrap = (placeholderValue, code) => `\\u001b[${code[0]}m${placeholderValue}\\u001b[${code[1]}m`;\n const styleWrap = (value, style) => {\n if (style != null && typeof style === \"string\") {\n return ansiColorWrap(value, prettyLogStyles[style]);\n }\n else if (style != null && Array.isArray(style)) {\n return style.reduce((prevValue, thisStyle) => styleWrap(prevValue, thisStyle), value);\n }\n else {\n if (style != null && style[value.trim()] != null) {\n return styleWrap(value, style[value.trim()]);\n }\n else if (style != null && style[\"*\"] != null) {\n return styleWrap(value, style[\"*\"]);\n }\n else {\n return value;\n }\n }\n };\n const defaultStyle = null;\n return templateString.replace(/{{(.+?)}}/g, (_, placeholder) => {\n const value = values[placeholder] != null ? String(values[placeholder]) : hideUnsetPlaceholder ? \"\" : _;\n return settings.stylePrettyLogs\n ? styleWrap(value, settings?.prettyLogStyles?.[placeholder] ?? defaultStyle) + ansiColorWrap(\"\", prettyLogStyles.reset)\n : value;\n });\n}\n","export function formatNumberAddZeros(value, digits = 2, addNumber = 0) {\n if (value != null && isNaN(value)) {\n return \"\";\n }\n value = value != null ? value + addNumber : value;\n return digits === 2\n ? value == null\n ? \"--\"\n : value < 10\n ? \"0\" + value\n : value.toString()\n : value == null\n ? \"---\"\n : value < 10\n ? \"00\" + value\n : value < 100\n ? \"0\" + value\n : value.toString();\n}\n","export function jsonStringifyRecursive(obj) {\n const cache = new Set();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (cache.has(value)) {\n return \"[Circular]\";\n }\n cache.add(value);\n }\n if (typeof value === \"bigint\") {\n return `${value}`;\n }\n return value;\n });\n}\n","import { prettyLogStyles } from \"../../prettyLogStyles.js\";\nimport { jsonStringifyRecursive } from \"./helper.jsonStringifyRecursive.js\";\nexport function inspect(obj, opts) {\n const ctx = {\n seen: [],\n stylize: stylizeNoColor,\n };\n if (opts != null) {\n _extend(ctx, opts);\n }\n if (isUndefined(ctx.showHidden))\n ctx.showHidden = false;\n if (isUndefined(ctx.depth))\n ctx.depth = 2;\n if (isUndefined(ctx.colors))\n ctx.colors = true;\n if (isUndefined(ctx.customInspect))\n ctx.customInspect = true;\n if (ctx.colors)\n ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\ninspect.colors = prettyLogStyles;\ninspect.styles = {\n special: \"cyan\",\n number: \"yellow\",\n boolean: \"yellow\",\n undefined: \"grey\",\n null: \"bold\",\n string: \"green\",\n date: \"magenta\",\n regexp: \"red\",\n};\nfunction isBoolean(arg) {\n return typeof arg === \"boolean\";\n}\nfunction isUndefined(arg) {\n return arg === undefined;\n}\nfunction stylizeNoColor(str) {\n return str;\n}\nfunction stylizeWithColor(str, styleType) {\n const style = inspect.styles[styleType];\n if (style != null && inspect?.colors?.[style]?.[0] != null && inspect?.colors?.[style]?.[1] != null) {\n return \"\\u001b[\" + inspect.colors[style][0] + \"m\" + str + \"\\u001b[\" + inspect.colors[style][1] + \"m\";\n }\n else {\n return str;\n }\n}\nfunction isFunction(arg) {\n return typeof arg === \"function\";\n}\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\nfunction isNumber(arg) {\n return typeof arg === \"number\";\n}\nfunction isNull(arg) {\n return arg === null;\n}\nfunction hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === \"[object RegExp]\";\n}\nfunction isObject(arg) {\n return typeof arg === \"object\" && arg !== null;\n}\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === \"[object Error]\" || e instanceof Error);\n}\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === \"[object Date]\";\n}\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\nfunction arrayToHash(array) {\n const hash = {};\n array.forEach((val) => {\n hash[val] = true;\n });\n return hash;\n}\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n const output = [];\n for (let i = 0, l = value.length; i < l; ++i) {\n if (hasOwn(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n }\n else {\n output.push(\"\");\n }\n }\n keys.forEach((key) => {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\nfunction formatError(value) {\n return \"[\" + Error.prototype.toString.call(value) + \"]\";\n}\nexport function formatValue(ctx, value, recurseTimes = 0) {\n if (ctx.customInspect &&\n value != null &&\n isFunction(value) &&\n value?.inspect !== inspect &&\n !(value?.constructor && value?.constructor.prototype === value)) {\n if (typeof value.inspect !== \"function\" && value.toString != null) {\n return value.toString();\n }\n let ret = value?.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n const primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n let keys = Object.keys(value);\n const visibleKeys = arrayToHash(keys);\n try {\n if (ctx.showHidden && Object.getOwnPropertyNames) {\n keys = Object.getOwnPropertyNames(value);\n }\n }\n catch (e) {\n }\n if (isError(value) && (keys.indexOf(\"message\") >= 0 || keys.indexOf(\"description\") >= 0)) {\n return formatError(value);\n }\n if (keys.length === 0) {\n if (isFunction(ctx.stylize)) {\n if (isFunction(value)) {\n const name = value.name ? \": \" + value.name : \"\";\n return ctx.stylize(\"[Function\" + name + \"]\", \"special\");\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toISOString.call(value), \"date\");\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n else {\n return value;\n }\n }\n let base = \"\";\n let array = false;\n let braces = [\"{\\n\", \"\\n}\"];\n if (Array.isArray(value)) {\n array = true;\n braces = [\"[\\n\", \"\\n]\"];\n }\n if (isFunction(value)) {\n const n = value.name ? \": \" + value.name : \"\";\n base = \" [Function\" + n + \"]\";\n }\n if (isRegExp(value)) {\n base = \" \" + RegExp.prototype.toString.call(value);\n }\n if (isDate(value)) {\n base = \" \" + Date.prototype.toUTCString.call(value);\n }\n if (isError(value)) {\n base = \" \" + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n }\n else {\n return ctx.stylize(\"[Object]\", \"special\");\n }\n }\n ctx.seen.push(value);\n let output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n }\n else {\n output = keys.map((key) => {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n let name, str;\n let desc = { value: void 0 };\n try {\n desc.value = value[key];\n }\n catch (e) {\n }\n try {\n if (Object.getOwnPropertyDescriptor) {\n desc = Object.getOwnPropertyDescriptor(value, key) || desc;\n }\n }\n catch (e) {\n }\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize(\"[Getter/Setter]\", \"special\");\n }\n else {\n str = ctx.stylize(\"[Getter]\", \"special\");\n }\n }\n else {\n if (desc.set) {\n str = ctx.stylize(\"[Setter]\", \"special\");\n }\n }\n if (!hasOwn(visibleKeys, key)) {\n name = \"[\" + key + \"]\";\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, undefined);\n }\n else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf(\"\\n\") > -1) {\n if (array) {\n str = str\n .split(\"\\n\")\n .map((line) => {\n return \" \" + line;\n })\n .join(\"\\n\")\n .substr(2);\n }\n else {\n str =\n \"\\n\" +\n str\n .split(\"\\n\")\n .map((line) => {\n return \" \" + line;\n })\n .join(\"\\n\");\n }\n }\n }\n else {\n str = ctx.stylize(\"[Circular]\", \"special\");\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify(\"\" + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, \"name\");\n }\n else {\n name = name\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, \"\\\\'\")\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, \"string\");\n }\n }\n return name + \": \" + str;\n}\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize(\"undefined\", \"undefined\");\n if (isString(value)) {\n const simple = \"'\" + JSON.stringify(value).replace(/^\"|\"$/g, \"\").replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, \"\\\\'\") + \"'\";\n return ctx.stylize(simple, \"string\");\n }\n if (isNumber(value))\n return ctx.stylize(\"\" + value, \"number\");\n if (isBoolean(value))\n return ctx.stylize(\"\" + value, \"boolean\");\n if (isNull(value))\n return ctx.stylize(\"null\", \"null\");\n}\nfunction reduceToSingleString(output, base, braces) {\n return braces[0] + (base === \"\" ? \"\" : base + \"\\n\") + \" \" + output.join(\",\\n \") + \" \" + braces[1];\n}\nfunction _extend(origin, add) {\n const typedOrigin = { ...origin };\n if (!add || !isObject(add))\n return origin;\n const clonedAdd = { ...add };\n const keys = Object.keys(add);\n let i = keys.length;\n while (i--) {\n typedOrigin[keys[i]] = clonedAdd[keys[i]];\n }\n return typedOrigin;\n}\nexport function formatWithOptions(inspectOptions, ...args) {\n const ctx = {\n seen: [],\n stylize: stylizeNoColor,\n };\n if (inspectOptions != null) {\n _extend(ctx, inspectOptions);\n }\n const first = args[0];\n let a = 0;\n let str = \"\";\n let join = \"\";\n if (typeof first === \"string\") {\n if (args.length === 1) {\n return first;\n }\n let tempStr;\n let lastPos = 0;\n for (let i = 0; i < first.length - 1; i++) {\n if (first.charCodeAt(i) === 37) {\n const nextChar = first.charCodeAt(++i);\n if (a + 1 !== args.length) {\n switch (nextChar) {\n case 115: {\n const tempArg = args[++a];\n if (typeof tempArg === \"number\") {\n tempStr = formatPrimitive(ctx, tempArg);\n }\n else if (typeof tempArg === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempArg);\n }\n else if (typeof tempArg !== \"object\" || tempArg === null) {\n tempStr = String(tempArg);\n }\n else {\n tempStr = inspect(tempArg, {\n ...inspectOptions,\n compact: 3,\n colors: false,\n depth: 0,\n });\n }\n break;\n }\n case 106:\n tempStr = jsonStringifyRecursive(args[++a]);\n break;\n case 100: {\n const tempNum = args[++a];\n if (typeof tempNum === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempNum);\n }\n else if (typeof tempNum === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, tempNum);\n }\n break;\n }\n case 79:\n tempStr = inspect(args[++a], inspectOptions);\n break;\n case 111:\n tempStr = inspect(args[++a], {\n ...inspectOptions,\n showHidden: true,\n showProxy: true,\n depth: 4,\n });\n break;\n case 105: {\n const tempInteger = args[++a];\n if (typeof tempInteger === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempInteger);\n }\n else if (typeof tempInteger === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, parseInt(tempStr));\n }\n break;\n }\n case 102: {\n const tempFloat = args[++a];\n if (typeof tempFloat === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, parseInt(tempFloat));\n }\n break;\n }\n case 99:\n a += 1;\n tempStr = \"\";\n break;\n case 37:\n str += first.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n default:\n continue;\n }\n if (lastPos !== i - 1) {\n str += first.slice(lastPos, i - 1);\n }\n str += tempStr;\n lastPos = i + 1;\n }\n else if (nextChar === 37) {\n str += first.slice(lastPos, i);\n lastPos = i + 1;\n }\n }\n }\n if (lastPos !== 0) {\n a++;\n join = \" \";\n if (lastPos < first.length) {\n str += first.slice(lastPos);\n }\n }\n }\n while (a < args.length) {\n const value = args[a];\n str += join;\n str += typeof value !== \"string\" ? inspect(value, inspectOptions) : value;\n join = \" \";\n a++;\n }\n return str;\n}\n","import { formatTemplate } from \"../../formatTemplate.js\";\nimport { formatWithOptions } from \"./util.inspect.polyfil.js\";\nimport { jsonStringifyRecursive } from \"./helper.jsonStringifyRecursive.js\";\nexport default {\n getCallerStackFrame,\n getErrorTrace,\n getMeta,\n transportJSON,\n transportFormatted,\n isBuffer,\n isError,\n prettyFormatLogObj,\n prettyFormatErrorObj,\n};\nconst meta = {\n runtime: ![typeof window, typeof document].includes(\"undefined\") ? \"Browser\" : \"Generic\",\n browser: globalThis?.[\"navigator\"]?.userAgent,\n};\nconst pathRegex = /(?:(?:file|https?|global code|[^@]+)@)?(?:file:)?((?:\\/[^:/]+){2,})(?::(\\d+))?(?::(\\d+))?/;\nexport function getMeta(logLevelId, logLevelName, stackDepthLevel, hideLogPositionForPerformance, name, parentNames) {\n return Object.assign({}, meta, {\n name,\n parentNames,\n date: new Date(),\n logLevelId,\n logLevelName,\n path: !hideLogPositionForPerformance ? getCallerStackFrame(stackDepthLevel) : undefined,\n });\n}\nexport function getCallerStackFrame(stackDepthLevel, error = Error()) {\n return stackLineToStackFrame(error?.stack?.split(\"\\n\")?.filter((line) => !line.includes(\"Error: \"))?.[stackDepthLevel]);\n}\nexport function getErrorTrace(error) {\n return (error?.stack?.split(\"\\n\") ?? [])\n ?.filter((line) => !line.includes(\"Error: \"))\n ?.reduce((result, line) => {\n result.push(stackLineToStackFrame(line));\n return result;\n }, []);\n}\nfunction stackLineToStackFrame(line) {\n const href = globalThis?.location?.origin;\n const pathResult = {\n fullFilePath: undefined,\n fileName: undefined,\n fileNameWithLine: undefined,\n fileColumn: undefined,\n fileLine: undefined,\n filePath: undefined,\n filePathWithLine: undefined,\n method: undefined,\n };\n if (line != null) {\n const match = line.match(pathRegex);\n if (match) {\n pathResult.filePath = match[1].replace(/\\?.*$/, \"\");\n pathResult.fullFilePath = `${href}${pathResult.filePath}`;\n const pathParts = pathResult.filePath.split(\"/\");\n pathResult.fileName = pathParts[pathParts.length - 1];\n pathResult.fileLine = match[2];\n pathResult.fileColumn = match[3];\n pathResult.filePathWithLine = `${pathResult.filePath}:${pathResult.fileLine}`;\n pathResult.fileNameWithLine = `${pathResult.fileName}:${pathResult.fileLine}`;\n }\n }\n return pathResult;\n}\nexport function isError(e) {\n return e instanceof Error;\n}\nexport function prettyFormatLogObj(maskedArgs, settings) {\n return maskedArgs.reduce((result, arg) => {\n isError(arg) ? result.errors.push(prettyFormatErrorObj(arg, settings)) : result.args.push(arg);\n return result;\n }, { args: [], errors: [] });\n}\nexport function prettyFormatErrorObj(error, settings) {\n const errorStackStr = getErrorTrace(error).map((stackFrame) => {\n return formatTemplate(settings, settings.prettyErrorStackTemplate, { ...stackFrame }, true);\n });\n const placeholderValuesError = {\n errorName: ` ${error.name} `,\n errorMessage: Object.getOwnPropertyNames(error)\n .reduce((result, key) => {\n if (key !== \"stack\") {\n result.push(error[key]);\n }\n return result;\n }, [])\n .join(\", \"),\n errorStack: errorStackStr.join(\"\\n\"),\n };\n return formatTemplate(settings, settings.prettyErrorTemplate, placeholderValuesError);\n}\nexport function transportFormatted(logMetaMarkup, logArgs, logErrors, settings) {\n const logErrorsStr = (logErrors.length > 0 && logArgs.length > 0 ? \"\\n\" : \"\") + logErrors.join(\"\\n\");\n settings.prettyInspectOptions.colors = settings.stylePrettyLogs;\n console.log(logMetaMarkup + formatWithOptions(settings.prettyInspectOptions, ...logArgs) + logErrorsStr);\n}\nexport function transportJSON(json) {\n console.log(jsonStringifyRecursive(json));\n}\nexport function isBuffer(arg) {\n return arg ? false : false;\n}\n","import { formatTemplate } from \"./formatTemplate.js\";\nimport { formatNumberAddZeros } from \"./formatNumberAddZeros.js\";\nimport { urlToObject } from \"./urlToObj.js\";\nimport Runtime from \"./runtime/nodejs/index.js\";\nexport * from \"./interfaces.js\";\nexport { Runtime };\nexport class BaseLogger {\n constructor(settings, logObj, stackDepthLevel = 4) {\n this.logObj = logObj;\n this.stackDepthLevel = stackDepthLevel;\n this.runtime = Runtime;\n this.settings = {\n type: settings?.type ?? \"pretty\",\n name: settings?.name,\n parentNames: settings?.parentNames,\n minLevel: settings?.minLevel ?? 0,\n argumentsArrayName: settings?.argumentsArrayName,\n hideLogPositionForProduction: settings?.hideLogPositionForProduction ?? false,\n prettyLogTemplate: settings?.prettyLogTemplate ??\n \"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\\t{{logLevelName}}\\t{{filePathWithLine}}{{nameWithDelimiterPrefix}}\\t\",\n prettyErrorTemplate: settings?.prettyErrorTemplate ?? \"\\n{{errorName}} {{errorMessage}}\\nerror stack:\\n{{errorStack}}\",\n prettyErrorStackTemplate: settings?.prettyErrorStackTemplate ?? \" • {{fileName}}\\t{{method}}\\n\\t{{filePathWithLine}}\",\n prettyErrorParentNamesSeparator: settings?.prettyErrorParentNamesSeparator ?? \":\",\n prettyErrorLoggerNameDelimiter: settings?.prettyErrorLoggerNameDelimiter ?? \"\\t\",\n stylePrettyLogs: settings?.stylePrettyLogs ?? true,\n prettyLogTimeZone: settings?.prettyLogTimeZone ?? \"UTC\",\n prettyLogStyles: settings?.prettyLogStyles ?? {\n logLevelName: {\n \"*\": [\"bold\", \"black\", \"bgWhiteBright\", \"dim\"],\n SILLY: [\"bold\", \"white\"],\n TRACE: [\"bold\", \"whiteBright\"],\n DEBUG: [\"bold\", \"green\"],\n INFO: [\"bold\", \"blue\"],\n WARN: [\"bold\", \"yellow\"],\n ERROR: [\"bold\", \"red\"],\n FATAL: [\"bold\", \"redBright\"],\n },\n dateIsoStr: \"white\",\n filePathWithLine: \"white\",\n name: [\"white\", \"bold\"],\n nameWithDelimiterPrefix: [\"white\", \"bold\"],\n nameWithDelimiterSuffix: [\"white\", \"bold\"],\n errorName: [\"bold\", \"bgRedBright\", \"whiteBright\"],\n fileName: [\"yellow\"],\n fileNameWithLine: \"white\",\n },\n prettyInspectOptions: settings?.prettyInspectOptions ?? {\n colors: true,\n compact: false,\n depth: Infinity,\n },\n metaProperty: settings?.metaProperty ?? \"_meta\",\n maskPlaceholder: settings?.maskPlaceholder ?? \"[***]\",\n maskValuesOfKeys: settings?.maskValuesOfKeys ?? [\"password\"],\n maskValuesOfKeysCaseInsensitive: settings?.maskValuesOfKeysCaseInsensitive ?? false,\n maskValuesRegEx: settings?.maskValuesRegEx,\n prefix: [...(settings?.prefix ?? [])],\n attachedTransports: [...(settings?.attachedTransports ?? [])],\n overwrite: {\n mask: settings?.overwrite?.mask,\n toLogObj: settings?.overwrite?.toLogObj,\n addMeta: settings?.overwrite?.addMeta,\n addPlaceholders: settings?.overwrite?.addPlaceholders,\n formatMeta: settings?.overwrite?.formatMeta,\n formatLogObj: settings?.overwrite?.formatLogObj,\n transportFormatted: settings?.overwrite?.transportFormatted,\n transportJSON: settings?.overwrite?.transportJSON,\n },\n };\n }\n log(logLevelId, logLevelName, ...args) {\n if (logLevelId < this.settings.minLevel) {\n return;\n }\n const logArgs = [...this.settings.prefix, ...args];\n const maskedArgs = this.settings.overwrite?.mask != null\n ? this.settings.overwrite?.mask(logArgs)\n : this.settings.maskValuesOfKeys != null && this.settings.maskValuesOfKeys.length > 0\n ? this._mask(logArgs)\n : logArgs;\n const thisLogObj = this.logObj != null ? this._recursiveCloneAndExecuteFunctions(this.logObj) : undefined;\n const logObj = this.settings.overwrite?.toLogObj != null ? this.settings.overwrite?.toLogObj(maskedArgs, thisLogObj) : this._toLogObj(maskedArgs, thisLogObj);\n const logObjWithMeta = this.settings.overwrite?.addMeta != null\n ? this.settings.overwrite?.addMeta(logObj, logLevelId, logLevelName)\n : this._addMetaToLogObj(logObj, logLevelId, logLevelName);\n let logMetaMarkup;\n let logArgsAndErrorsMarkup = undefined;\n if (this.settings.overwrite?.formatMeta != null) {\n logMetaMarkup = this.settings.overwrite?.formatMeta(logObjWithMeta?.[this.settings.metaProperty]);\n }\n if (this.settings.overwrite?.formatLogObj != null) {\n logArgsAndErrorsMarkup = this.settings.overwrite?.formatLogObj(maskedArgs, this.settings);\n }\n if (this.settings.type === \"pretty\") {\n logMetaMarkup = logMetaMarkup ?? this._prettyFormatLogObjMeta(logObjWithMeta?.[this.settings.metaProperty]);\n logArgsAndErrorsMarkup = logArgsAndErrorsMarkup ?? this.runtime.prettyFormatLogObj(maskedArgs, this.settings);\n }\n if (logMetaMarkup != null && logArgsAndErrorsMarkup != null) {\n this.settings.overwrite?.transportFormatted != null\n ? this.settings.overwrite?.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings)\n : this.runtime.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings);\n }\n else {\n this.settings.overwrite?.transportJSON != null\n ? this.settings.overwrite?.transportJSON(logObjWithMeta)\n : this.settings.type !== \"hidden\"\n ? this.runtime.transportJSON(logObjWithMeta)\n : undefined;\n }\n if (this.settings.attachedTransports != null && this.settings.attachedTransports.length > 0) {\n this.settings.attachedTransports.forEach((transportLogger) => {\n transportLogger(logObjWithMeta);\n });\n }\n return logObjWithMeta;\n }\n attachTransport(transportLogger) {\n this.settings.attachedTransports.push(transportLogger);\n }\n getSubLogger(settings, logObj) {\n const subLoggerSettings = {\n ...this.settings,\n ...settings,\n parentNames: this.settings?.parentNames != null && this.settings?.name != null\n ? [...this.settings.parentNames, this.settings.name]\n : this.settings?.name != null\n ? [this.settings.name]\n : undefined,\n prefix: [...this.settings.prefix, ...(settings?.prefix ?? [])],\n };\n const subLogger = new this.constructor(subLoggerSettings, logObj ?? this.logObj, this.stackDepthLevel);\n return subLogger;\n }\n _mask(args) {\n const maskValuesOfKeys = this.settings.maskValuesOfKeysCaseInsensitive !== true ? this.settings.maskValuesOfKeys : this.settings.maskValuesOfKeys.map((key) => key.toLowerCase());\n return args?.map((arg) => {\n return this._recursiveCloneAndMaskValuesOfKeys(arg, maskValuesOfKeys);\n });\n }\n _recursiveCloneAndMaskValuesOfKeys(source, keys, seen = []) {\n if (seen.includes(source)) {\n return { ...source };\n }\n if (typeof source === \"object\" && source !== null) {\n seen.push(source);\n }\n if (this.runtime.isError(source) || this.runtime.isBuffer(source)) {\n return source;\n }\n else if (source instanceof Map) {\n return new Map(source);\n }\n else if (source instanceof Set) {\n return new Set(source);\n }\n else if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndMaskValuesOfKeys(item, keys, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof URL) {\n return urlToObject(source);\n }\n else if (source !== null && typeof source === \"object\") {\n const baseObject = this.runtime.isError(source) ? this._cloneError(source) : Object.create(Object.getPrototypeOf(source));\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n o[prop] = keys.includes(this.settings?.maskValuesOfKeysCaseInsensitive !== true ? prop : prop.toLowerCase())\n ? this.settings.maskPlaceholder\n : (() => {\n try {\n return this._recursiveCloneAndMaskValuesOfKeys(source[prop], keys, seen);\n }\n catch (e) {\n return null;\n }\n })();\n return o;\n }, baseObject);\n }\n else {\n if (typeof source === \"string\") {\n let modifiedSource = source;\n for (const regEx of this.settings?.maskValuesRegEx || []) {\n modifiedSource = modifiedSource.replace(regEx, this.settings?.maskPlaceholder || \"\");\n }\n return modifiedSource;\n }\n return source;\n }\n }\n _recursiveCloneAndExecuteFunctions(source, seen = []) {\n if (this.isObjectOrArray(source) && seen.includes(source)) {\n return this.shallowCopy(source);\n }\n if (this.isObjectOrArray(source)) {\n seen.push(source);\n }\n if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndExecuteFunctions(item, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (this.isObject(source)) {\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, prop);\n if (descriptor) {\n Object.defineProperty(o, prop, descriptor);\n const value = source[prop];\n o[prop] = typeof value === \"function\" ? value() : this._recursiveCloneAndExecuteFunctions(value, seen);\n }\n return o;\n }, Object.create(Object.getPrototypeOf(source)));\n }\n else {\n return source;\n }\n }\n isObjectOrArray(value) {\n return typeof value === \"object\" && value !== null;\n }\n isObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n }\n shallowCopy(source) {\n if (Array.isArray(source)) {\n return [...source];\n }\n else {\n return { ...source };\n }\n }\n _toLogObj(args, clonedLogObj = {}) {\n args = args?.map((arg) => (this.runtime.isError(arg) ? this._toErrorObject(arg) : arg));\n if (this.settings.argumentsArrayName == null) {\n if (args.length === 1 && !Array.isArray(args[0]) && this.runtime.isBuffer(args[0]) !== true && !(args[0] instanceof Date)) {\n clonedLogObj = typeof args[0] === \"object\" && args[0] != null ? { ...args[0], ...clonedLogObj } : { 0: args[0], ...clonedLogObj };\n }\n else {\n clonedLogObj = { ...clonedLogObj, ...args };\n }\n }\n else {\n clonedLogObj = {\n ...clonedLogObj,\n [this.settings.argumentsArrayName]: args,\n };\n }\n return clonedLogObj;\n }\n _cloneError(error) {\n const cloned = new error.constructor();\n Object.getOwnPropertyNames(error).forEach((key) => {\n cloned[key] = error[key];\n });\n return cloned;\n }\n _toErrorObject(error) {\n return {\n nativeError: error,\n name: error.name ?? \"Error\",\n message: error.message,\n stack: this.runtime.getErrorTrace(error),\n };\n }\n _addMetaToLogObj(logObj, logLevelId, logLevelName) {\n return {\n ...logObj,\n [this.settings.metaProperty]: this.runtime.getMeta(logLevelId, logLevelName, this.stackDepthLevel, this.settings.hideLogPositionForProduction, this.settings.name, this.settings.parentNames),\n };\n }\n _prettyFormatLogObjMeta(logObjMeta) {\n if (logObjMeta == null) {\n return \"\";\n }\n let template = this.settings.prettyLogTemplate;\n const placeholderValues = {};\n if (template.includes(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\")) {\n template = template.replace(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\", \"{{dateIsoStr}}\");\n }\n else {\n if (this.settings.prettyLogTimeZone === \"UTC\") {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getUTCFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMilliseconds(), 3);\n }\n else {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getMilliseconds(), 3);\n }\n }\n const dateInSettingsTimeZone = this.settings.prettyLogTimeZone === \"UTC\" ? logObjMeta?.date : new Date(logObjMeta?.date?.getTime() - logObjMeta?.date?.getTimezoneOffset() * 60000);\n placeholderValues[\"rawIsoStr\"] = dateInSettingsTimeZone?.toISOString();\n placeholderValues[\"dateIsoStr\"] = dateInSettingsTimeZone?.toISOString().replace(\"T\", \" \").replace(\"Z\", \"\");\n placeholderValues[\"logLevelName\"] = logObjMeta?.logLevelName;\n placeholderValues[\"fileNameWithLine\"] = logObjMeta?.path?.fileNameWithLine ?? \"\";\n placeholderValues[\"filePathWithLine\"] = logObjMeta?.path?.filePathWithLine ?? \"\";\n placeholderValues[\"fullFilePath\"] = logObjMeta?.path?.fullFilePath ?? \"\";\n let parentNamesString = this.settings.parentNames?.join(this.settings.prettyErrorParentNamesSeparator);\n parentNamesString = parentNamesString != null && logObjMeta?.name != null ? parentNamesString + this.settings.prettyErrorParentNamesSeparator : undefined;\n placeholderValues[\"name\"] = logObjMeta?.name != null || parentNamesString != null ? (parentNamesString ?? \"\") + logObjMeta?.name ?? \"\" : \"\";\n placeholderValues[\"nameWithDelimiterPrefix\"] =\n placeholderValues[\"name\"].length > 0 ? this.settings.prettyErrorLoggerNameDelimiter + placeholderValues[\"name\"] : \"\";\n placeholderValues[\"nameWithDelimiterSuffix\"] =\n placeholderValues[\"name\"].length > 0 ? placeholderValues[\"name\"] + this.settings.prettyErrorLoggerNameDelimiter : \"\";\n if (this.settings.overwrite?.addPlaceholders != null) {\n this.settings.overwrite?.addPlaceholders(logObjMeta, placeholderValues);\n }\n return formatTemplate(this.settings, template, placeholderValues);\n }\n}\n","export function urlToObject(url) {\n return {\n href: url.href,\n protocol: url.protocol,\n username: url.username,\n password: url.password,\n host: url.host,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n searchParams: [...url.searchParams].map(([key, value]) => ({ key, value })),\n hash: url.hash,\n origin: url.origin,\n };\n}\n","import { BaseLogger } from \"./BaseLogger.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./BaseLogger.js\";\nexport class Logger extends BaseLogger {\n constructor(settings, logObj) {\n const isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n const isBrowserBlinkEngine = isBrowser ? window.chrome !== undefined && window.CSS !== undefined && window.CSS.supports(\"color\", \"green\") : false;\n const isSafari = isBrowser ? /^((?!chrome|android).)*safari/i.test(navigator.userAgent) : false;\n settings = settings || {};\n settings.stylePrettyLogs = settings.stylePrettyLogs && isBrowser && !isBrowserBlinkEngine ? false : settings.stylePrettyLogs;\n super(settings, logObj, isSafari ? 4 : 5);\n }\n log(logLevelId, logLevelName, ...args) {\n return super.log(logLevelId, logLevelName, ...args);\n }\n silly(...args) {\n return super.log(0, \"SILLY\", ...args);\n }\n trace(...args) {\n return super.log(1, \"TRACE\", ...args);\n }\n debug(...args) {\n return super.log(2, \"DEBUG\", ...args);\n }\n info(...args) {\n return super.log(3, \"INFO\", ...args);\n }\n warn(...args) {\n return super.log(4, \"WARN\", ...args);\n }\n error(...args) {\n return super.log(5, \"ERROR\", ...args);\n }\n fatal(...args) {\n return super.log(6, \"FATAL\", ...args);\n }\n getSubLogger(settings, logObj) {\n return super.getSubLogger(settings, logObj);\n }\n}\n","var EventIdentifier;\n(function (EventIdentifier) {\n // user\n EventIdentifier[\"PostRegister\"] = \"ember-nexus-sdk-post-register\";\n EventIdentifier[\"PostChangePassword\"] = \"ember-nexus-sdk-post-change-password\";\n EventIdentifier[\"GetMe\"] = \"ember-nexus-sdk-get-me\";\n EventIdentifier[\"PostToken\"] = \"ember-nexus-sdk-post-token\";\n EventIdentifier[\"GetToken\"] = \"ember-nexus-sdk-get-token\";\n EventIdentifier[\"DeleteToken\"] = \"ember-nexus-sdk-delete-token\";\n // element\n EventIdentifier[\"GetIndex\"] = \"ember-nexus-sdk-get-index\";\n EventIdentifier[\"GetElement\"] = \"ember-nexus-sdk-get-element\";\n EventIdentifier[\"GetElementParents\"] = \"ember-nexus-sdk-get-element-parents\";\n EventIdentifier[\"GetElementChildren\"] = \"ember-nexus-sdk-get-element-children\";\n EventIdentifier[\"GetElementRelated\"] = \"ember-nexus-sdk-get-element-related\";\n EventIdentifier[\"PostIndex\"] = \"ember-nexus-sdk-post-index\";\n EventIdentifier[\"PostElement\"] = \"ember-nexus-sdk-post-element\";\n EventIdentifier[\"PutElement\"] = \"ember-nexus-sdk-put-element\";\n EventIdentifier[\"PatchElement\"] = \"ember-nexus-sdk-patch-element\";\n EventIdentifier[\"DeleteElement\"] = \"ember-nexus-sdk-delete-element\";\n // file\n EventIdentifier[\"GetElementFile\"] = \"ember-nexus-sdk-get-element-file\";\n EventIdentifier[\"PostElementFile\"] = \"ember-nexus-sdk-post-element-file\";\n EventIdentifier[\"PutElementFile\"] = \"ember-nexus-sdk-put-element-file\";\n EventIdentifier[\"PatchElementFile\"] = \"ember-nexus-sdk-patch-element-file\";\n EventIdentifier[\"DeleteElementFile\"] = \"ember-nexus-sdk-delete-element-file\";\n // webDAV\n EventIdentifier[\"CopyElement\"] = \"ember-nexus-sdk-copy-element\";\n EventIdentifier[\"LockElement\"] = \"ember-nexus-sdk-lock-element\";\n EventIdentifier[\"UnlockElement\"] = \"ember-nexus-sdk-unlock-element\";\n EventIdentifier[\"MkcolElement\"] = \"ember-nexus-sdk-mkcol-element\";\n EventIdentifier[\"MoveElement\"] = \"ember-nexus-sdk-move-element\";\n EventIdentifier[\"PropfindElement\"] = \"ember-nexus-sdk-propfind-element\";\n EventIdentifier[\"ProppatchElement\"] = \"ember-nexus-sdk-proppatch-element\";\n // search\n EventIdentifier[\"PostSearch\"] = \"ember-nexus-sdk-post-search\";\n // system\n EventIdentifier[\"GetInstanceConfiguration\"] = \"ember-nexus-sdk-get-instance-configuration\";\n})(EventIdentifier || (EventIdentifier = {}));\nexport { EventIdentifier };\n//# sourceMappingURL=EventIdentifier.js.map","var HttpRequestMethod;\n(function (HttpRequestMethod) {\n // default http request methods\n HttpRequestMethod[\"GET\"] = \"GET\";\n HttpRequestMethod[\"POST\"] = \"POST\";\n HttpRequestMethod[\"PATCH\"] = \"PATCH\";\n HttpRequestMethod[\"PUT\"] = \"PUT\";\n HttpRequestMethod[\"DELETE\"] = \"DELETE\";\n HttpRequestMethod[\"HEAD\"] = \"HEAD\";\n // webdav request methods\n HttpRequestMethod[\"COPY\"] = \"COPY\";\n HttpRequestMethod[\"LOCK\"] = \"LOCK\";\n HttpRequestMethod[\"UNLOCK\"] = \"UNLOCK\";\n HttpRequestMethod[\"MKCOL\"] = \"MKCOL\";\n HttpRequestMethod[\"MOVE\"] = \"MOVE\";\n HttpRequestMethod[\"PROPFIND\"] = \"PROPFIND\";\n HttpRequestMethod[\"PROPPATCH\"] = \"PROPPATCH\";\n})(HttpRequestMethod || (HttpRequestMethod = {}));\nexport { HttpRequestMethod };\n//# sourceMappingURL=HttpRequestMethod.js.map","var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"Debug\"] = 2] = \"Debug\";\n LogLevel[LogLevel[\"Info\"] = 3] = \"Info\";\n LogLevel[LogLevel[\"Warn\"] = 4] = \"Warn\";\n LogLevel[LogLevel[\"Error\"] = 5] = \"Error\";\n})(LogLevel || (LogLevel = {}));\nexport { LogLevel };\n//# sourceMappingURL=LogLevel.js.map","var RequestProblemCategory;\n(function (RequestProblemCategory) {\n RequestProblemCategory[\"ClientSide\"] = \"client\";\n RequestProblemCategory[\"ServerSide\"] = \"server\";\n RequestProblemCategory[\"Logic\"] = \"Logic\";\n})(RequestProblemCategory || (RequestProblemCategory = {}));\nexport { RequestProblemCategory };\n//# sourceMappingURL=RequestProblemCategory.js.map","import { __decorate } from \"tslib\";\nimport { Logger as TsLogger } from 'tslog';\nimport { Service } from 'typedi';\nimport { Logger } from '../Service/index.js';\nimport { LogLevel } from '../Type/Enum/index.js';\n/**\n * Factory for creating the default logger.\n */\nlet LoggerFactory = class LoggerFactory {\n create() {\n const tsLogger = new TsLogger({\n minLevel: LogLevel.Debug,\n stylePrettyLogs: false,\n });\n return new Logger(tsLogger);\n }\n};\nLoggerFactory = __decorate([\n Service()\n], LoggerFactory);\nexport { LoggerFactory };\n//# sourceMappingURL=LoggerFactory.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Logger as TsLogger } from 'tslog';\nimport { Service } from 'typedi';\nimport { LoggerFactory } from '../Factory/index.js';\n/**\n * Default logger.\n */\nlet Logger = class Logger {\n logger;\n constructor(logger) {\n this.logger = logger;\n }\n debug(...args) {\n return this.logger.debug(args);\n }\n error(...args) {\n return this.logger.error(args);\n }\n info(...args) {\n return this.logger.info(args);\n }\n warn(...args) {\n return this.logger.warn(args);\n }\n};\nLogger = __decorate([\n Service({ factory: [LoggerFactory, 'create'] }),\n __metadata(\"design:paramtypes\", [TsLogger])\n], Logger);\nexport { Logger };\n//# sourceMappingURL=Logger.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { Logger } from './Logger.js';\n/**\n * Configuration handler.\n */\nlet WebSdkConfiguration = class WebSdkConfiguration {\n logger;\n token;\n apiHost;\n elementCacheMaxEntries;\n collectionCacheMaxEntries;\n collectionPageSize;\n constructor(logger) {\n this.logger = logger;\n this.token = null;\n this.apiHost = '';\n this.elementCacheMaxEntries = 100;\n this.collectionCacheMaxEntries = 50;\n this.collectionPageSize = 25;\n }\n hasToken() {\n return this.token !== null;\n }\n getToken() {\n return this.token;\n }\n setToken(token) {\n this.token = token;\n return this;\n }\n getApiHost() {\n return this.apiHost;\n }\n setApiHost(apiHost) {\n if (apiHost.endsWith('/')) {\n this.logger.warn('Removed trailing slash from API host configuration due to internal requirement. Please check if trailing slash can be directly removed.');\n apiHost = apiHost.replace(/\\/+$/, '');\n }\n this.apiHost = apiHost;\n return this;\n }\n getElementCacheMaxEntries() {\n return this.elementCacheMaxEntries;\n }\n setElementCacheMaxEntries(value) {\n this.elementCacheMaxEntries = value;\n return this;\n }\n getCollectionCacheMaxEntries() {\n return this.collectionCacheMaxEntries;\n }\n setCollectionCacheMaxEntries(value) {\n this.collectionCacheMaxEntries = value;\n return this;\n }\n getCollectionPageSize() {\n return this.collectionPageSize;\n }\n setCollectionPageSize(value) {\n this.collectionPageSize = value;\n return this;\n }\n};\nWebSdkConfiguration = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger])\n], WebSdkConfiguration);\nexport { WebSdkConfiguration };\n//# sourceMappingURL=WebSdkConfiguration.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Container, Service } from 'typedi';\nimport { Logger } from './Logger.js';\nimport { WebSdkConfiguration } from './WebSdkConfiguration.js';\nimport { Response401UnauthorizedError, Response403ForbiddenError, Response404NotFoundError, Response429TooManyRequestsError, ResponseError, } from '../Error/index.js';\nimport { HttpRequestMethod } from '../Type/Enum/index.js';\n/**\n * Collection of different fetch helper methods.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet FetchHelper = class FetchHelper {\n logger;\n constructor(logger) {\n this.logger = logger;\n }\n createResponseErrorFromBadResponse(response, data) {\n let errorInstance = null;\n if (response.status === 401) {\n errorInstance = new Response401UnauthorizedError('Server returned 401 unauthorized.');\n }\n if (response.status === 403) {\n errorInstance = new Response403ForbiddenError('Server returned 403 forbidden.');\n }\n if (response.status === 404) {\n errorInstance = new Response404NotFoundError('Server returned 404 not found.');\n }\n if (response.status === 429) {\n errorInstance = new Response429TooManyRequestsError('Server returned 429 too many requests.');\n }\n if (errorInstance === null)\n errorInstance = new ResponseError('Generic response error.');\n if ('type' in data) {\n errorInstance.setType(String(data.type));\n }\n if ('title' in data) {\n errorInstance.setTitle(String(data.title));\n }\n if ('detail' in data) {\n errorInstance.setDetail(String(data.detail));\n }\n if ('status' in data && errorInstance.getStatus() === null) {\n errorInstance.setStatus(Number(data.status));\n }\n return errorInstance;\n }\n addAuthorizationHeader(headers) {\n if (Container.get(WebSdkConfiguration).hasToken()) {\n // eslint-disable-next-line dot-notation\n headers['Authorization'] = `Bearer ${Container.get(WebSdkConfiguration).getToken()}`;\n }\n }\n addAcceptJsonAndProblemJsonHeader(headers) {\n // eslint-disable-next-line dot-notation\n headers['Accept'] = 'application/json, application/problem+json';\n }\n addContentTypeJsonHeader(headers) {\n headers['Content-Type'] = 'application/json';\n }\n getDefaultGetOptions() {\n const headers = {};\n this.addAuthorizationHeader(headers);\n this.addAcceptJsonAndProblemJsonHeader(headers);\n return {\n method: HttpRequestMethod.GET,\n headers: headers,\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n };\n }\n getDefaultDeleteOptions() {\n const headers = {};\n this.addAuthorizationHeader(headers);\n this.addAcceptJsonAndProblemJsonHeader(headers);\n return {\n method: HttpRequestMethod.DELETE,\n headers: headers,\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n };\n }\n getDefaultPostOptions(body) {\n const headers = {};\n this.addAuthorizationHeader(headers);\n this.addAcceptJsonAndProblemJsonHeader(headers);\n this.addContentTypeJsonHeader(headers);\n return {\n method: HttpRequestMethod.POST,\n headers: headers,\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n body: body,\n };\n }\n getDefaultPatchOptions(body) {\n const headers = {};\n this.addAuthorizationHeader(headers);\n this.addAcceptJsonAndProblemJsonHeader(headers);\n this.addContentTypeJsonHeader(headers);\n return {\n method: HttpRequestMethod.PATCH,\n headers: headers,\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n body: body,\n };\n }\n getDefaultPutOptions(body) {\n const headers = {};\n this.addAuthorizationHeader(headers);\n this.addAcceptJsonAndProblemJsonHeader(headers);\n this.addContentTypeJsonHeader(headers);\n return {\n method: HttpRequestMethod.PUT,\n headers: headers,\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n body: body,\n };\n }\n buildUrl(url) {\n return `${Container.get(WebSdkConfiguration).getApiHost()}${url}`;\n }\n runWrappedFetch(url, init) {\n url = `${Container.get(WebSdkConfiguration).getApiHost()}${url}`;\n this.logger.debug(`Executing HTTP ${init?.method ?? '-'} request against url ${url} .`);\n return fetch(url, init);\n }\n};\nFetchHelper = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger])\n], FetchHelper);\nexport { FetchHelper };\n//# sourceMappingURL=FetchHelper.js.map","class RawValueToNormalizedValueEvent {\n rawValue;\n normalizedValue = null;\n propagationStopped = false;\n constructor(rawValue) {\n this.rawValue = rawValue;\n }\n /**\n * @inheritDoc\n */\n isPropagationStopped() {\n return this.propagationStopped;\n }\n /**\n * @inheritDoc\n */\n stopPropagation() {\n this.propagationStopped = true;\n return this;\n }\n /**\n * Returns the raw value set during the event's creation.\n */\n getRawValue() {\n return this.rawValue;\n }\n /**\n * Returns the normalized value, i.e. the JavaScript representation.\n */\n getNormalizedValue() {\n return this.normalizedValue;\n }\n /**\n * Sets the normalized value, i.e. the JavaScript representation.\n * @param normalizedValue Normalized value.\n */\n setNormalizedValue(normalizedValue) {\n this.normalizedValue = normalizedValue;\n return this;\n }\n}\nexport { RawValueToNormalizedValueEvent };\n//# sourceMappingURL=RawValueToNormalizedValueEvent.js.map","var DateTimeRawValueToNormalizedValueEventListener_1;\nimport { __decorate } from \"tslib\";\nimport { Service } from 'typedi';\n/**\n * Checks if a string returned by Ember Nexus API matches the date time format and tries to convert it to a date object.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet DateTimeRawValueToNormalizedValueEventListener = class DateTimeRawValueToNormalizedValueEventListener {\n static { DateTimeRawValueToNormalizedValueEventListener_1 = this; }\n static dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$/;\n triggerOnEvent(event) {\n const rawValue = event.getRawValue();\n if (typeof rawValue !== 'string') {\n return;\n }\n if (!DateTimeRawValueToNormalizedValueEventListener_1.dateRegex.test(rawValue)) {\n return;\n }\n const normalizedValue = new Date(rawValue);\n event.setNormalizedValue(normalizedValue);\n event.stopPropagation();\n }\n};\nDateTimeRawValueToNormalizedValueEventListener = DateTimeRawValueToNormalizedValueEventListener_1 = __decorate([\n Service()\n], DateTimeRawValueToNormalizedValueEventListener);\nexport { DateTimeRawValueToNormalizedValueEventListener };\n//# sourceMappingURL=DateTimeRawValueToNormalizedValueEventListener.js.map","import { __decorate } from \"tslib\";\nimport { Service } from 'typedi';\n/**\n * Skips conversion of primitive data types and sets them directly.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet GenericRawValueToNormalizedValueEventListener = class GenericRawValueToNormalizedValueEventListener {\n triggerOnEvent(event) {\n const rawValue = event.getRawValue();\n if (Array.isArray(rawValue) ||\n typeof rawValue === 'number' ||\n typeof rawValue === 'boolean' ||\n typeof rawValue === 'string' ||\n rawValue === null) {\n event.setNormalizedValue(rawValue);\n event.stopPropagation();\n }\n }\n};\nGenericRawValueToNormalizedValueEventListener = __decorate([\n Service()\n], GenericRawValueToNormalizedValueEventListener);\nexport { GenericRawValueToNormalizedValueEventListener };\n//# sourceMappingURL=GenericRawValueToNormalizedValueEventListener.js.map","class EventManager {\n eventListeners = [];\n registerEventListener(eventListener, priority = 0) {\n if (this.eventListeners.length === 0) {\n this.eventListeners.push([priority, eventListener]);\n return;\n }\n for (let index = 0; index < this.eventListeners.length; index++) {\n if (index === this.eventListeners.length - 1) {\n this.eventListeners.push([priority, eventListener]);\n return;\n }\n if (this.eventListeners[index][0] > priority) {\n this.eventListeners.splice(index, 0, [priority, eventListener]);\n return;\n }\n }\n }\n handleEvent(event) {\n if (event.isPropagationStopped()) {\n return;\n }\n for (let index = this.eventListeners.length - 1; index >= 0; index--) {\n this.eventListeners[index][1].triggerOnEvent(event);\n if (event.isPropagationStopped()) {\n return;\n }\n }\n }\n}\nexport { EventManager };\n//# sourceMappingURL=EventManager.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { EventManager } from '../EventManager.js';\nimport { DateTimeRawValueToNormalizedValueEventListener, GenericRawValueToNormalizedValueEventListener, } from './EventListener/index.js';\n/**\n * Event manager for RawValueToNormalizedValueEvent.\n */\nlet RawValueToNormalizedValueEventManager = class RawValueToNormalizedValueEventManager extends EventManager {\n constructor(dateTimeRawValueToNormalizedValueEventListener, genericRawValueToNormalizedValueEventListener) {\n super();\n this.registerEventListener(genericRawValueToNormalizedValueEventListener, 0);\n this.registerEventListener(dateTimeRawValueToNormalizedValueEventListener, 1);\n }\n};\nRawValueToNormalizedValueEventManager = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [DateTimeRawValueToNormalizedValueEventListener,\n GenericRawValueToNormalizedValueEventListener])\n], RawValueToNormalizedValueEventManager);\nexport { RawValueToNormalizedValueEventManager };\n//# sourceMappingURL=RawValueToNormalizedValueEventManager.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { Logger } from './Logger.js';\nimport { RawValueToNormalizedValueEvent } from '../EventSystem/RawValueToNormalizedValue/Event/index.js';\nimport { RawValueToNormalizedValueEventManager } from '../EventSystem/RawValueToNormalizedValue/index.js';\n/**\n * Class which helps to parse values.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet RawValueToNormalizedValueHelper = class RawValueToNormalizedValueHelper {\n logger;\n rawValueToNormalizedValueEventManager;\n constructor(logger, rawValueToNormalizedValueEventManager) {\n this.logger = logger;\n this.rawValueToNormalizedValueEventManager = rawValueToNormalizedValueEventManager;\n }\n parseRawData(rawData) {\n const data = {};\n for (const key in rawData) {\n if (Object.prototype.hasOwnProperty.call(rawData, key)) {\n const event = new RawValueToNormalizedValueEvent(rawData[key]);\n this.rawValueToNormalizedValueEventManager.handleEvent(event);\n if (!event.isPropagationStopped()) {\n this.logger.warn('Unable to normalize the following data property.', { key: key, data: rawData[key] });\n continue;\n }\n data[key] = event.getNormalizedValue();\n }\n }\n return data;\n }\n};\nRawValueToNormalizedValueHelper = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n RawValueToNormalizedValueEventManager])\n], RawValueToNormalizedValueHelper);\nexport { RawValueToNormalizedValueHelper };\n//# sourceMappingURL=RawValueToNormalizedValueHelper.js.map","import { __decorate } from \"tslib\";\nimport { Service } from 'typedi';\nimport { RequestProblemCategory } from '../Type/Enum/index.js';\n/**\n * Class which helps to parse problem responses.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet RequestProblemParser = class RequestProblemParser {\n rawRequestProblemToRequestProblem(problem) {\n const category = RequestProblemCategory.ServerSide;\n if (!('title' in problem)) {\n throw new Error(\"Raw Problem must contain property 'title' in order to be correctly parsed.\");\n }\n const title = String(problem.title);\n if (!('detail' in problem)) {\n throw new Error(\"Raw Problem must contain property 'detail' in order to be correctly parsed.\");\n }\n const detail = String(problem.detail);\n const parsedProblem = {\n category: category,\n title: title,\n detail: detail,\n };\n if ('type' in problem) {\n parsedProblem.type = String(problem.type);\n }\n if ('status' in problem) {\n parsedProblem.status = Number(problem.status);\n }\n if ('exception' in problem) {\n if (typeof problem.exception !== 'object' || problem.exception === null) {\n throw new Error(\"Property 'exception' of raw problem must be a record of type string, any.\");\n }\n parsedProblem.exception = problem.exception;\n }\n return parsedProblem;\n }\n};\nRequestProblemParser = __decorate([\n Service()\n], RequestProblemParser);\nexport { RequestProblemParser };\n//# sourceMappingURL=RequestProblemParser.js.map","import { __decorate } from \"tslib\";\nimport { Service } from 'typedi';\nimport { validateTokenFromString } from '../Type/Definition/index.js';\n/**\n * Class which helps to parse tokens.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet TokenParser = class TokenParser {\n rawTokenToToken(token) {\n if (!('type' in token)) {\n throw new Error(\"Raw token must contain property 'type' in order to be parsed to a token.\");\n }\n const type = String(token.type);\n if (type !== '_TokenResponse') {\n throw new Error(\"Type must be '_TokenResponse' in order to be parsed to a token.\");\n }\n if (!('token' in token)) {\n throw new Error(\"Raw token must contain property 'token' in order to be parsed to a token.\");\n }\n return validateTokenFromString(String(token.token));\n }\n};\nTokenParser = __decorate([\n Service()\n], TokenParser);\nexport { TokenParser };\n//# sourceMappingURL=TokenParser.js.map","/**\n * @module LRUCache\n */\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The delete element endpoint deletes a single element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=deleteelementendpoint)\n * @see [Ember Nexus API: Delete Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/delete-element)\n *\n * @internal\n */\nlet DeleteElementEndpoint = class DeleteElementEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n deleteElement(elementId) {\n const url = this.fetchHelper.buildUrl(`/${elementId}`);\n this.logger.debug(`Executing HTTP DELETE request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultDeleteOptions())\n .catch((networkError) => {\n throw new NetworkError(`Experienced generic network error during deleting resource.`, networkError);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n return;\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nDeleteElementEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], DeleteElementEndpoint);\nexport { DeleteElementEndpoint };\n//# sourceMappingURL=DeleteElementEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { EmberNexusError, NetworkError, ParseError, ValidationError } from '../../Error/index.js';\nimport { CollectionParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get element children endpoint retrieves all child nodes of a single parent node.\n *\n * The child nodes are paginated. Within each page, all relations between the parent node and the child nodes contained\n * on the page are returned.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @internal\n */\nlet GetElementChildrenEndpoint = class GetElementChildrenEndpoint {\n logger;\n fetchHelper;\n collectionParser;\n constructor(logger, fetchHelper, collectionParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.collectionParser = collectionParser;\n }\n getElementChildren(parentId, page = 1, pageSize = 25) {\n return Promise.resolve()\n .then(() => {\n if (page < 1) {\n throw new ValidationError('Page number must be at least 1.');\n }\n if (pageSize < 1) {\n throw new ValidationError('Page size must be at least 1.');\n }\n const url = this.fetchHelper.buildUrl(`/${parentId}/children?page=${page}&pageSize=${pageSize}`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions());\n })\n .catch((error) => {\n if (error instanceof EmberNexusError) {\n throw error;\n }\n throw new NetworkError(`Experienced generic network error during fetching resource.`, error);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.collectionParser.rawCollectionToCollection(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetElementChildrenEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n CollectionParser])\n], GetElementChildrenEndpoint);\nexport { GetElementChildrenEndpoint };\n//# sourceMappingURL=GetElementChildrenEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { ElementParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get element endpoint retrieves a single element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=getelementendpoint)\n * @see [Ember Nexus API: Get Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-element)\n *\n * @internal\n */\nlet GetElementEndpoint = class GetElementEndpoint {\n logger;\n fetchHelper;\n elementParser;\n constructor(logger, fetchHelper, elementParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.elementParser = elementParser;\n }\n getElement(elementId) {\n const url = this.fetchHelper.buildUrl(`/${elementId}`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions())\n .catch((networkError) => {\n throw new NetworkError(`Experienced generic network error during fetching resource.`, networkError);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.elementParser.rawElementToNodeOrRelation(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetElementEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n ElementParser])\n], GetElementEndpoint);\nexport { GetElementEndpoint };\n//# sourceMappingURL=GetElementEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { EmberNexusError, NetworkError, ParseError, ValidationError } from '../../Error/index.js';\nimport { CollectionParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get element parents endpoint retrieves all parent nodes of a single child node.\n *\n * The parent nodes are paginated. Within each page, all relations between the child node and the parent nodes contained\n * on the page are returned.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=getelementparentsendpoint)\n * @see [Ember Nexus API: Get Element Parents Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-parents)\n *\n * @internal\n */\nlet GetElementParentsEndpoint = class GetElementParentsEndpoint {\n logger;\n fetchHelper;\n collectionParser;\n constructor(logger, fetchHelper, collectionParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.collectionParser = collectionParser;\n }\n getElementParents(childId, page = 1, pageSize = 25) {\n return Promise.resolve()\n .then(() => {\n if (page < 1) {\n throw new ValidationError('Page number must be at least 1.');\n }\n if (pageSize < 1) {\n throw new ValidationError('Page size must be at least 1.');\n }\n const url = this.fetchHelper.buildUrl(`/${childId}/parents?page=${page}&pageSize=${pageSize}`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions());\n })\n .catch((error) => {\n if (error instanceof EmberNexusError) {\n throw error;\n }\n throw new NetworkError(`Experienced generic network error during fetching resource.`, error);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.collectionParser.rawCollectionToCollection(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetElementParentsEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n CollectionParser])\n], GetElementParentsEndpoint);\nexport { GetElementParentsEndpoint };\n//# sourceMappingURL=GetElementParentsEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { EmberNexusError, NetworkError, ParseError, ValidationError } from '../../Error/index.js';\nimport { CollectionParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get element related endpoint retrieves all related nodes of a single center node.\n *\n * The related nodes are paginated. Within each page, all relations between the center node and the related nodes\n * contained on the page are returned.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=getelementrelatedendpoint)\n * @see [Ember Nexus API: Get Element Related Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-related)\n *\n * @internal\n */\nlet GetElementRelatedEndpoint = class GetElementRelatedEndpoint {\n logger;\n fetchHelper;\n collectionParser;\n constructor(logger, fetchHelper, collectionParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.collectionParser = collectionParser;\n }\n getElementRelated(centerId, page = 1, pageSize = 25) {\n return Promise.resolve()\n .then(() => {\n if (page < 1) {\n throw new ValidationError('Page number must be at least 1.');\n }\n if (pageSize < 1) {\n throw new ValidationError('Page size must be at least 1.');\n }\n const url = this.fetchHelper.buildUrl(`/${centerId}/related?page=${page}&pageSize=${pageSize}`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions());\n })\n .catch((error) => {\n if (error instanceof EmberNexusError) {\n throw error;\n }\n throw new NetworkError(`Experienced generic network error during fetching resource.`, error);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.collectionParser.rawCollectionToCollection(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetElementRelatedEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n CollectionParser])\n], GetElementRelatedEndpoint);\nexport { GetElementRelatedEndpoint };\n//# sourceMappingURL=GetElementRelatedEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { EmberNexusError, NetworkError, ParseError, ValidationError } from '../../Error/index.js';\nimport { CollectionParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get index endpoint retrieves all root level nodes.\n *\n * The root-level nodes are paginated. No relations are returned, as relations always require a starting node and can\n * therefore never be root-level elements.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=getindexendpoint)\n * @see [Ember Nexus API: Get Index Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-index)\n *\n * @internal\n */\nlet GetIndexEndpoint = class GetIndexEndpoint {\n logger;\n fetchHelper;\n collectionParser;\n constructor(logger, fetchHelper, collectionParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.collectionParser = collectionParser;\n }\n getIndex(page = 1, pageSize = 25) {\n return Promise.resolve()\n .then(() => {\n if (page < 1) {\n throw new ValidationError('Page number must be at least 1.');\n }\n if (pageSize < 1) {\n throw new ValidationError('Page size must be at least 1.');\n }\n const url = this.fetchHelper.buildUrl(`/?page=${page}&pageSize=${pageSize}`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions());\n })\n .catch((error) => {\n if (error instanceof EmberNexusError) {\n throw error;\n }\n throw new NetworkError(`Experienced generic network error during fetching resource.`, error);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.collectionParser.rawCollectionToCollection(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetIndexEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n CollectionParser])\n], GetIndexEndpoint);\nexport { GetIndexEndpoint };\n//# sourceMappingURL=GetIndexEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The patch element endpoint updates a single element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=patchelementendpoint)\n * @see [Ember Nexus API: Update Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/patch-element)\n *\n * @internal\n */\nlet PatchElementEndpoint = class PatchElementEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n patchElement(elementId, data) {\n return Promise.resolve()\n .then(() => {\n this.logger.warn('The endpoint patch element will be changed in the next major version, expect changed interfaces.');\n const url = this.fetchHelper.buildUrl(`/${elementId}`);\n this.logger.debug(`Executing HTTP PATCH request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPatchOptions(JSON.stringify(data)));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during patching resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n return;\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPatchElementEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PatchElementEndpoint);\nexport { PatchElementEndpoint };\n//# sourceMappingURL=PatchElementEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\nimport { validateUuidFromString } from '../../Type/Definition/index.js';\n/**\n * The post element endpoint creates a single child node.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=postelementendpoint)\n * @see [Ember Nexus API: Create Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/post-element)\n *\n * @internal\n */\nlet PostElementEndpoint = class PostElementEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n postElement(parentId, element) {\n return Promise.resolve()\n .then(() => {\n const url = this.fetchHelper.buildUrl(`/${parentId}`);\n this.logger.debug(`Executing HTTP POST request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPostOptions(JSON.stringify(element)));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during creating resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n if (response.headers.has('Location')) {\n const location = response.headers.get('Location');\n const rawUuid = location.split('/').at(-1);\n return validateUuidFromString(rawUuid);\n }\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPostElementEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PostElementEndpoint);\nexport { PostElementEndpoint };\n//# sourceMappingURL=PostElementEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\nimport { validateUuidFromString, } from '../../Type/Definition/index.js';\n/**\n * The post index endpoint creates a single element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=postindexendpoint)\n * @see [Ember Nexus API: Create Root Level Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/post-index)\n *\n * @internal\n */\nlet PostIndexEndpoint = class PostIndexEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n postIndex(element) {\n return Promise.resolve()\n .then(() => {\n const url = this.fetchHelper.buildUrl(`/`);\n this.logger.debug(`Executing HTTP POST request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPostOptions(JSON.stringify(element)));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during creating resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n if (response.headers.has('Location')) {\n const location = response.headers.get('Location');\n const rawUuid = location.split('/').at(-1);\n return validateUuidFromString(rawUuid);\n }\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPostIndexEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PostIndexEndpoint);\nexport { PostIndexEndpoint };\n//# sourceMappingURL=PostIndexEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The put element endpoint replaces a single element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/element?id=putelementendpoint)\n * @see [Ember Nexus API: Replace Element Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/put-element)\n *\n * @internal\n */\nlet PutElementEndpoint = class PutElementEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n putElement(elementId, data) {\n return Promise.resolve()\n .then(() => {\n this.logger.warn('The endpoint put element will be changed in the next major version, expect changed interfaces.');\n const url = this.fetchHelper.buildUrl(`/${elementId}`);\n this.logger.debug(`Executing HTTP PUT request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPutOptions(JSON.stringify(data)));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during updating resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n return;\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPutElementEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PutElementEndpoint);\nexport { PutElementEndpoint };\n//# sourceMappingURL=PutElementEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The delete token endpoint deletes the currently used token.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=deletetokenendpoint)\n * @see [Ember Nexus API: Delete Token Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/delete-token)\n *\n * @internal\n */\nlet DeleteTokenEndpoint = class DeleteTokenEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n deleteToken() {\n const url = this.fetchHelper.buildUrl(`/token`);\n this.logger.debug(`Executing HTTP DELETE request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultDeleteOptions())\n .catch((networkError) => {\n throw new NetworkError(`Experienced generic network error during deleting resource.`, networkError);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n return;\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nDeleteTokenEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], DeleteTokenEndpoint);\nexport { DeleteTokenEndpoint };\n//# sourceMappingURL=DeleteTokenEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { LogicError, NetworkError, ParseError } from '../../Error/index.js';\nimport { ElementParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get me endpoint retrieves the current user's element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=getmeendpoint)\n * @see [Ember Nexus API: Get Me Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/get-me)\n *\n * @internal\n */\nlet GetMeEndpoint = class GetMeEndpoint {\n logger;\n fetchHelper;\n elementParser;\n constructor(logger, fetchHelper, elementParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.elementParser = elementParser;\n }\n getMe() {\n const url = this.fetchHelper.buildUrl(`/me`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions())\n .catch((networkError) => {\n throw new NetworkError(`Experienced generic network error during fetching resource.`, networkError);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n const element = this.elementParser.rawElementToNodeOrRelation(jsonResponse);\n if (element.type !== 'User') {\n throw new LogicError(\"Expected node to be of type 'User'.\");\n }\n return element;\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetMeEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n ElementParser])\n], GetMeEndpoint);\nexport { GetMeEndpoint };\n//# sourceMappingURL=GetMeEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { LogicError, NetworkError, ParseError } from '../../Error/index.js';\nimport { ElementParser, FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The get token endpoint retrieves the current session's token element.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=gettokenendpoint)\n * @see [Ember Nexus API: Get Token Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/get-token)\n *\n * @internal\n */\nlet GetTokenEndpoint = class GetTokenEndpoint {\n logger;\n fetchHelper;\n elementParser;\n constructor(logger, fetchHelper, elementParser) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n this.elementParser = elementParser;\n }\n getToken() {\n const url = this.fetchHelper.buildUrl(`/token`);\n this.logger.debug(`Executing HTTP GET request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultGetOptions())\n .catch((networkError) => {\n throw new NetworkError(`Experienced generic network error during fetching resource.`, networkError);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n const element = this.elementParser.rawElementToNodeOrRelation(jsonResponse);\n if (element.type !== 'Token') {\n throw new LogicError(\"Expected node to be of type 'Token'.\");\n }\n return element;\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nGetTokenEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper,\n ElementParser])\n], GetTokenEndpoint);\nexport { GetTokenEndpoint };\n//# sourceMappingURL=GetTokenEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\n/**\n * The post change password endpoint is used to change the user's password.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=postchangepasswordendpoint)\n * @see [Ember Nexus API: Change Password Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/post-change-password)\n *\n * @internal\n */\nlet PostChangePasswordEndpoint = class PostChangePasswordEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n postChangePassword(uniqueUserIdentifier, currentPassword, newPassword) {\n return Promise.resolve()\n .then(() => {\n const url = this.fetchHelper.buildUrl(`/change-password`);\n this.logger.debug(`Executing HTTP POST request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPostOptions(JSON.stringify({\n type: 'ActionChangePassword',\n currentPassword: currentPassword,\n newPassword: newPassword,\n uniqueUserIdentifier: uniqueUserIdentifier,\n })));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during creating resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 204) {\n return;\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPostChangePasswordEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PostChangePasswordEndpoint);\nexport { PostChangePasswordEndpoint };\n//# sourceMappingURL=PostChangePasswordEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger } from '../../Service/index.js';\nimport { validateUuidFromString } from '../../Type/Definition/index.js';\n/**\n * The post register endpoint is used to create new user accounts.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=postregisterendpoint)\n * @see [Ember Nexus API: Register New Account Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/post-register)\n *\n * @internal\n */\nlet PostRegisterEndpoint = class PostRegisterEndpoint {\n logger;\n fetchHelper;\n constructor(logger, fetchHelper) {\n this.logger = logger;\n this.fetchHelper = fetchHelper;\n }\n postRegister(uniqueUserIdentifier, password, data = {}) {\n return Promise.resolve()\n .then(() => {\n const url = this.fetchHelper.buildUrl(`/register`);\n this.logger.debug(`Executing HTTP POST request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPostOptions(JSON.stringify({\n type: 'User',\n uniqueUserIdentifier: uniqueUserIdentifier,\n password: password,\n data: data,\n })));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during creating resource.`, error);\n })\n .then(async (response) => {\n if (response.ok && response.status === 201) {\n if (response.headers.has('Location')) {\n const location = response.headers.get('Location');\n const rawUuid = location.split('/').at(-1);\n return validateUuidFromString(rawUuid);\n }\n }\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!contentType.includes('application/problem+json')) {\n throw new ParseError(\"Unable to parse response as content type is not 'application/problem+json'.\");\n }\n const data = await response.json();\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPostRegisterEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n FetchHelper])\n], PostRegisterEndpoint);\nexport { PostRegisterEndpoint };\n//# sourceMappingURL=PostRegisterEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Service } from 'typedi';\nimport { NetworkError, ParseError } from '../../Error/index.js';\nimport { FetchHelper, Logger, TokenParser } from '../../Service/index.js';\n/**\n * The post token endpoint is used to create new tokens.\n *\n * **⚠️ Warning**: This is an internal class. You should not use it directly.\n *\n * @see [Further documentation](https://ember-nexus.github.io/web-sdk/#/endpoints/user?id=posttokenendpoint)\n * @see [Ember Nexus API: Create Token Endpoint](https://ember-nexus.github.io/api/#/api-endpoints/user/post-token)\n *\n * @internal\n */\nlet PostTokenEndpoint = class PostTokenEndpoint {\n logger;\n tokenParser;\n fetchHelper;\n constructor(logger, tokenParser, fetchHelper) {\n this.logger = logger;\n this.tokenParser = tokenParser;\n this.fetchHelper = fetchHelper;\n }\n postToken(uniqueUserIdentifier, password, data = {}) {\n return Promise.resolve()\n .then(() => {\n const url = this.fetchHelper.buildUrl(`/token`);\n this.logger.debug(`Executing HTTP POST request against url ${url} .`);\n return fetch(url, this.fetchHelper.getDefaultPostOptions(JSON.stringify({\n type: 'Token',\n uniqueUserIdentifier: uniqueUserIdentifier,\n password: password,\n data: data,\n })));\n })\n .catch((error) => {\n throw new NetworkError(`Experienced generic network error during creating resource.`, error);\n })\n .then(async (response) => {\n const contentType = response.headers.get('Content-Type');\n if (contentType === null) {\n throw new ParseError('Response does not contain content type header.');\n }\n if (!(contentType.includes('application/json') || contentType.includes('application/problem+json'))) {\n throw new ParseError(\"Unable to parse response as content type is neither 'application/json' nor 'application/problem+json'.\");\n }\n const data = await response.json();\n if (!response.ok) {\n throw this.fetchHelper.createResponseErrorFromBadResponse(response, data);\n }\n return data;\n })\n .then((jsonResponse) => {\n return this.tokenParser.rawTokenToToken(jsonResponse);\n })\n .catch((error) => {\n this.logger.error(error.message, error);\n throw error;\n });\n }\n};\nPostTokenEndpoint = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [Logger,\n TokenParser,\n FetchHelper])\n], PostTokenEndpoint);\nexport { PostTokenEndpoint };\n//# sourceMappingURL=PostTokenEndpoint.js.map","import { __decorate, __metadata } from \"tslib\";\nimport 'reflect-metadata';\nimport { LRUCache } from 'lru-cache';\nimport { Container, Service } from 'typedi';\nimport { WebSdkConfiguration } from './WebSdkConfiguration.js';\nimport { DeleteElementEndpoint, GetElementChildrenEndpoint, GetElementEndpoint, GetElementParentsEndpoint, GetElementRelatedEndpoint, GetIndexEndpoint, PatchElementEndpoint, PostElementEndpoint, PostIndexEndpoint, PutElementEndpoint, } from '../Endpoint/Element/index.js';\nimport { DeleteTokenEndpoint, GetMeEndpoint, GetTokenEndpoint, PostChangePasswordEndpoint, PostRegisterEndpoint, PostTokenEndpoint, } from '../Endpoint/User/index.js';\nlet EmberNexus = class EmberNexus {\n elementCache;\n constructor() {\n this.elementCache = new LRUCache({\n max: Container.get(WebSdkConfiguration).getElementCacheMaxEntries(),\n });\n }\n /**\n * Returns one node or relation through its Uuid.\n *\n * The element is directly returned if it is already in the cache. Otherwise, a fetch call against Ember Nexus API is\n * started.\n *\n * **Note**: The browser might also cache the API's response if it contains an ETag header.\n *\n * @param elementUuid The Uuid of the requested element.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const elementUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const element = await emberNexus.getElement(elementUuid);\n * ```\n *\n * @see [Web SDK: Get element endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/get-element)\n * @see [Ember Nexus API: Get element endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-element)\n */\n getElement(elementUuid) {\n return new Promise((resolve) => {\n if (this.elementCache.has(elementUuid)) {\n const element = this.elementCache.get(elementUuid);\n if (element !== undefined) {\n return resolve(element);\n }\n }\n return resolve(Container.get(GetElementEndpoint)\n .getElement(elementUuid)\n .then((element) => {\n this.elementCache.set(elementUuid, element);\n return element;\n }));\n });\n }\n /**\n * Returns children nodes and all relations between the specified parent and the returned children.\n *\n * **Note**: The browser might cache the API's response, if it contains an ETag header.\n *\n * @param parentUuid The Uuid of the parent node.\n * @param page The number of the page to be returned. The first page has the number 1.\n * @param pageSize The maximum number of elements one page should contain. If null, the default size is used.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const parentUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const childrenCollection = await emberNexus.getElementChildren(parentUuid);\n * ```\n *\n * @see [Web SDK: Get element children endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/get-element)\n * @see [Ember Nexus API: Get element children endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-children)\n */\n getElementChildren(parentUuid, page = 1, pageSize = null) {\n if (pageSize === null) {\n pageSize = Container.get(WebSdkConfiguration).getCollectionPageSize();\n }\n return new Promise((resolve) => {\n return resolve(Container.get(GetElementChildrenEndpoint).getElementChildren(parentUuid, page, pageSize));\n });\n }\n /**\n * Returns parent nodes and all relations between the specified child and the returned parents.\n *\n * **Note**: The browser might cache the API's response, if it contains an ETag header.\n *\n * @param childUuid The Uuid of the child node.\n * @param page The number of the page to be returned. The first page has the number 1.\n * @param pageSize The maximum number of elements one page should contain. If null, the default size is used.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const childUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const parentsCollection = await emberNexus.getElementParents(childUuid);\n * ```\n *\n * @see [Web SDK: Get element parents endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/get-element)\n * @see [Ember Nexus API: Get element parents endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-parents)\n */\n getElementParents(childUuid, page = 1, pageSize = null) {\n if (pageSize === null) {\n pageSize = Container.get(WebSdkConfiguration).getCollectionPageSize();\n }\n return new Promise((resolve) => {\n return resolve(Container.get(GetElementParentsEndpoint).getElementParents(childUuid, page, pageSize));\n });\n }\n /**\n * Returns related nodes and all relations between the specified center and the returned nodes.\n *\n * **Note**: The browser might cache the API's response, if it contains an ETag header.\n *\n * @param centerUuid The Uuid of the center node.\n * @param page The number of the page to be returned. The first page has the number 1.\n * @param pageSize The maximum number of elements one page should contain. If null, the default size is used.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const centerUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const relatedCollection = await emberNexus.getElementRelated(centerUuid);\n * ```\n *\n * @see [Web SDK: Get element related endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/get-element)\n * @see [Ember Nexus API: Get element related endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-related)\n */\n getElementRelated(centerUuid, page = 1, pageSize = null) {\n if (pageSize === null) {\n pageSize = Container.get(WebSdkConfiguration).getCollectionPageSize();\n }\n return new Promise((resolve) => {\n return resolve(Container.get(GetElementRelatedEndpoint).getElementRelated(centerUuid, page, pageSize));\n });\n }\n /**\n * Returns all nodes on the root level.\n *\n * As this collection only returns nodes, no relations will be returned.\n *\n * **Note**: The browser might cache the API's response, if it contains an ETag header.\n *\n * @param page The number of the page to be returned. The first page has the number 1.\n * @param pageSize The maximum number of elements one page should contain. If null, the default size is used.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const indexCollection = await emberNexus.getIndex();\n * ```\n *\n * @see [Web SDK: Get index endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/get-index)\n * @see [Ember Nexus API: Get index endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/get-index)\n */\n getIndex(page = 1, pageSize = null) {\n if (pageSize === null) {\n pageSize = Container.get(WebSdkConfiguration).getCollectionPageSize();\n }\n return new Promise((resolve) => {\n return resolve(Container.get(GetIndexEndpoint).getIndex(page, pageSize));\n });\n }\n /**\n * Creates a new node or relation.\n *\n * If the created element is a node, it will become part of the root level, i.e. returned by the get index endpoint.\n * Relations, on the other hand, will be created between their start and end nodes.\n *\n * @param element Data necessary to create the node or relation. The id can be omitted. If it is missing, the API will auto-generate one.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const node: NodeWithOptionalId = {\n * type: 'Data',\n * data: {\n * 'some': 'data'\n * }\n * };\n * const nodeUuid = await emberNexus.postIndex(node);\n * ```\n *\n * @see [Web SDK: Post index endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/post-index)\n * @see [Ember Nexus API: Post index endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/post-index)\n */\n postIndex(element) {\n return new Promise((resolve) => {\n return resolve(Container.get(PostIndexEndpoint).postIndex(element));\n });\n }\n /**\n * Creates a new node.\n *\n * The created node will be saved as the child of the referenced parent node.\n *\n * **Note**: This endpoint can not be used to create relations, as relations can not be the child of some parent.\n *\n * @param parentUuid The Uuid of the parent node.\n * @param element Data necessary to create the node. The id can be omitted. If it is missing, the API will auto-generate one.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const parentUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const node: NodeWithOptionalId = {\n * type: 'Data',\n * data: {\n * 'some': 'data'\n * }\n * };\n * const nodeUuid = await emberNexus.postElement(parentUuid, node);\n * ```\n *\n * @see [Web SDK: Post element endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/post-element)\n * @see [Ember Nexus API: Post element endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/post-element)\n */\n postElement(parentUuid, element) {\n return new Promise((resolve) => {\n return resolve(Container.get(PostElementEndpoint).postElement(parentUuid, element));\n });\n }\n /**\n * Updates an element.\n *\n * The provided data will be appended to the element's existing data. Existing properties will be overwritten if the\n * new data contains identical property keys.\n *\n * @param elementUuid The Uuid of the element.\n * @param data New data which should be appended to the element.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const elementUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const data: Data = {\n * 'some': 'data'\n * };\n * await emberNexus.patchElement(elementUuid, data);\n * ```\n *\n * @see [Web SDK: Patch element endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/patch-element)\n * @see [Ember Nexus API: Patch element endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/patch-element)\n */\n patchElement(elementUuid, data) {\n return new Promise((resolve) => {\n this.elementCache.delete(elementUuid);\n return resolve(Container.get(PatchElementEndpoint).patchElement(elementUuid, data));\n });\n }\n /**\n * Replaces an element's data.\n *\n * The provided data will replace the element's existing data.\n *\n * @param elementUuid The Uuid of the element.\n * @param data New data.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const elementUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * const data: Data = {\n * 'new': 'data'\n * };\n * await emberNexus.putElement(elementUuid, data);\n * ```\n *\n * @see [Web SDK: Patch element endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/patch-element)\n * @see [Ember Nexus API: Patch element endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/patch-element)\n */\n putElement(elementUuid, data) {\n return new Promise((resolve) => {\n this.elementCache.delete(elementUuid);\n return resolve(Container.get(PutElementEndpoint).putElement(elementUuid, data));\n });\n }\n /**\n * Deletes an element.\n *\n * @param elementUuid The Uuid of the element.\n *\n * @example\n * ```ts\n * const emberNexus = new EmberNexus();\n * const elementUuid = validateUuidFromString(\"a30d815f-943b-4784-8d84-85a3eec10f54\");\n * await emberNexus.deleteElement(elementUuid, data);\n * ```\n *\n * @see [Web SDK: Delete element endpoint](https://ember-nexus.github.io/web-sdk/#/endpoints/element/delete-element)\n * @see [Ember Nexus API: Delete element endpoint](https://ember-nexus.github.io/api/#/api-endpoints/element/delete-element)\n */\n deleteElement(elementUuid) {\n return new Promise((resolve) => {\n this.elementCache.delete(elementUuid);\n return resolve(Container.get(DeleteElementEndpoint).deleteElement(elementUuid));\n });\n }\n postRegister(uniqueUserIdentifier, password, data = {}) {\n return new Promise((resolve) => {\n return resolve(Container.get(PostRegisterEndpoint).postRegister(uniqueUserIdentifier, password, data));\n });\n }\n postChangePassword(uniqueUserIdentifier, currentPassword, newPassword) {\n return new Promise((resolve) => {\n return resolve(Container.get(PostChangePasswordEndpoint).postChangePassword(uniqueUserIdentifier, currentPassword, newPassword));\n });\n }\n getMe() {\n return new Promise((resolve) => {\n return resolve(Container.get(GetMeEndpoint)\n .getMe()\n .then((element) => {\n this.elementCache.set(element.id, element);\n return element;\n }));\n });\n }\n postToken(uniqueUserIdentifier, password, data = {}) {\n return new Promise((resolve) => {\n return resolve(Container.get(PostTokenEndpoint).postToken(uniqueUserIdentifier, password, data));\n });\n }\n getToken() {\n return new Promise((resolve) => {\n return resolve(Container.get(GetTokenEndpoint)\n .getToken()\n .then((element) => {\n this.elementCache.set(element.id, element);\n return element;\n }));\n });\n }\n deleteToken() {\n return new Promise((resolve) => {\n return resolve(Container.get(DeleteTokenEndpoint).deleteToken());\n });\n }\n};\nEmberNexus = __decorate([\n Service(),\n __metadata(\"design:paramtypes\", [])\n], EmberNexus);\nexport { EmberNexus };\n//# sourceMappingURL=EmberNexus.js.map","import { EmberNexus } from '@ember-nexus/web-sdk/Service';\nimport { Logger } from 'tslog';\n\nimport { GetServiceResolverEvent } from './BrowserEvent/index.js';\nimport { EventDispatcher, ServiceResolver } from './Service/index.js';\nimport { PriorityRegistry, Registry, validateServiceIdentifierFromString } from './Type/Definition/index.js';\nimport { EventIdentifier, ServiceIdentifier } from './Type/Enum/index.js';\n\nfunction init(rootNode: HTMLElement, emberNexus: EmberNexus | null = null): ServiceResolver {\n const serviceResolver = new ServiceResolver();\n\n rootNode.addEventListener(EventIdentifier.GetServiceResolver, (event: GetServiceResolverEvent) => {\n event.setServiceResolver(serviceResolver);\n event.stopPropagation();\n });\n\n if (emberNexus === null) {\n emberNexus = new EmberNexus();\n }\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.emberNexusWebSDK), emberNexus);\n\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.action), new PriorityRegistry());\n\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.setting), new Registry());\n\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.icon), new Registry());\n\n const logger = new Logger({\n name: 'app-core',\n type: 'pretty',\n });\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.logger), logger);\n\n const eventDispatcher = new EventDispatcher(logger);\n serviceResolver.setService(validateServiceIdentifierFromString(ServiceIdentifier.eventDispatcher), eventDispatcher);\n\n return serviceResolver;\n}\n\nexport { init };\n"],"names":["Reflect","root","globalThis","g","self","this","sloppyModeThis","functionThis","Function","_","indirectEvalThis","eval","exporter","makeExporter","target","previous","key","value","Object","defineProperty","configurable","writable","hasOwn","prototype","hasOwnProperty","supportsSymbol","Symbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","create","supportsProto","__proto__","Array","downLevel","HashMap","MakeDictionary","has","map","call","get","undefined","functionPrototype","getPrototypeOf","_Map","Map","entries","CreateMapPolyfill","_Set","Set","CreateSetPolyfill","_WeakMap","WeakMap","CreateWeakMapPolyfill","registrySymbol","for","metadataRegistry","GetOrCreateMetadataRegistry","metadataProvider","CreateMetadataProvider","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","TypeError","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadata","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","provider","GetMetadataProvider","OrdinaryDeleteMetadata","i","length","decorated","descriptor","MetadataKey","O","P","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","set","keys","_i","ownKeys_1","add","push","_a","parentKeys_1","Type","x","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","toString_1","toString","IsCallable","valueOf","toString_2","argument","ToString","isArray","SameValueZero","y","V","func","GetIterator","obj","method","IteratorValue","iterResult","IteratorStep","next","done","IteratorClose","f","proto","prototypeProto","constructor","CreateMetadataRegistry","fallback","first","second","rest","CreateFallbackProvider","targetProviderMap","registry","registerProvider","getProvider","setProvider","isExtensible","Error","getProviderNoCache","isProviderFor","providerMap","hasProvider","existingProvider","enumerable","targetMetadata","GetOrCreateMetadataMap","Create","createdTargetMetadata","metadataMap","delete","k","nextValue","e","size","reflect","metadataOwner","metadataPropertySet","registeredProvider","cacheSentinel","arraySentinel","MapIterator","values","selector","_index","_keys","_values","_selector","index","throw","error","return","_cacheKey","_cacheIndex","_find","clear","getKey","getValue","getEntry","insert","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","GenRandomBytes","Uint8Array","array","crypto","getRandomValues","msCrypto","data","offset","byte","toLowerCase","__","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","o","window","prop","r","toStringTag","EventIdentifier","ServiceIdentifier","customEventDefaultInit","bubbles","composed","cancelable","GetServiceResolverEvent","CustomEvent","static","GetServiceResolver","super","type","detail","serviceResolver","getServiceResolver","setServiceResolver","EmberNexusError","message","LogicError","name","ParseError","ValidationError","Event","identifier","stopped","context","getIdentifier","isPropagationStopped","stopPropagation","getContextValue","setContextValue","hasContextValue","clearContextValue","getContext","setContext","clearContext","eventIdentifierRegex","validateEventIdentifierFromString","eventIdentifier","test","eventListenerIdentifierRegex","validateEventListenerIdentifierFromString","eventListenerIdentifier","getEventListenerIdentifiersFromEventIdentifier","parts","split","eventListenerIdentifiers","slice","join","PriorityRegistry","clearEntries","deleteEntry","hasEntry","priorityRegistryEntries","entry","setEntry","priority","entryList","left","right","mid","floor","insertAt","splice","getAllEntriesForKey","priorityRegistryEntry","Registry","serviceIdentifierRegex","validateServiceIdentifierFromString","serviceIdentifier","EventDispatcher","logger","dispatchEvent","event","debug","eventListenerIdentifiersToNotify","eventListeners","j","Promise","resolve","eventListener","addListener","eventListenersList","removeListener","getListeners","hasListeners","Logger","args","info","warn","ServiceResolver","services","hasService","getService","setService","service","deleteService","getServiceIdentifiers","getServices","clearServices","__decorate","desc","c","arguments","getOwnPropertyDescriptor","__metadata","SuppressedError","Token","extendStatics","b","setPrototypeOf","p","ServiceNotFoundError","_super","_this","normalizedIdentifier","CannotInstantiateValueError","EMPTY_VALUE","assign","t","s","n","apply","il","a","jl","ContainerInstance","id","findService","globalContainer","Container","of","globalService","scopedService","global","getServiceValue","clonedService","getMany","findAllServices","identifierOrServiceMetadata","forEach","multiple","eager","transient","newService","remove","identifierOrIdentifierArray","filter","destroyServiceInstance","reset","options","strategy","find","serviceMetadata","factoryInstance","constructableTargetType","paramTypes","params","initializeParams","bind","applyPropertyHandlers","paramType","paramHandler","handlers","handler","object","isPrimitiveParamType","paramTypeName","includes","instance","propertyName","force","destroy","containerId","globalInstance","container","instances","indexOf","registerHandler","import","Service","optionsOrServiceIdentifier","targetConstructor","tokenRegex","NetworkError","originalError","cause","ResponseError","_type","_title","_detail","_status","getType","setType","getTitle","setTitle","getDetail","setDetail","getStatus","setStatus","Response401UnauthorizedError","Response403ForbiddenError","Response404NotFoundError","Response429TooManyRequestsError","uuidv4Regex","validateUuidFromString","uuid","ElementParser","rawElementToNodeOrRelation","element","String","dateString","Date","start","end","CollectionParser","elementParser","rawCollectionToCollection","rawCollection","totalNodes","Number","links","rawCollectionLinks","last","nodes","rawNode","relations","rawRelation","prettyLogStyles","bold","dim","italic","underline","overline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","formatTemplate","settings","template","hideUnsetPlaceholder","templateString","ansiColorWrap","placeholderValue","code","styleWrap","style","reduce","prevValue","thisStyle","trim","replace","placeholder","stylePrettyLogs","formatNumberAddZeros","digits","addNumber","isNaN","jsonStringifyRecursive","cache","JSON","stringify","inspect","opts","ctx","seen","stylize","stylizeNoColor","_extend","isUndefined","showHidden","depth","colors","customInspect","stylizeWithColor","formatValue","arg","str","styleType","styles","isFunction","isString","isNull","isRegExp","re","isObject","objectToString","isError","isDate","formatError","recurseTimes","ret","primitive","formatPrimitive","visibleKeys","arrayToHash","hash","val","getOwnPropertyNames","RegExp","toISOString","output","base","braces","toUTCString","formatArray","l","formatProperty","match","pop","reduceToSingleString","line","substr","simple","isNumber","isBoolean","origin","typedOrigin","clonedAdd","special","number","boolean","null","string","date","regexp","getCallerStackFrame","getErrorTrace","getMeta","logLevelId","logLevelName","stackDepthLevel","hideLogPositionForPerformance","parentNames","meta","path","transportJSON","json","console","log","transportFormatted","logMetaMarkup","logArgs","logErrors","logErrorsStr","prettyInspectOptions","formatWithOptions","inspectOptions","tempStr","lastPos","charCodeAt","nextChar","tempArg","compact","tempNum","showProxy","tempInteger","parseInt","tempFloat","isBuffer","prettyFormatLogObj","maskedArgs","errors","prettyFormatErrorObj","runtime","document","browser","userAgent","pathRegex","stackLineToStackFrame","stack","href","location","pathResult","fullFilePath","fileName","fileNameWithLine","fileColumn","fileLine","filePath","filePathWithLine","pathParts","errorStackStr","stackFrame","prettyErrorStackTemplate","placeholderValuesError","errorName","errorMessage","errorStack","prettyErrorTemplate","BaseLogger","logObj","minLevel","argumentsArrayName","hideLogPositionForProduction","prettyLogTemplate","prettyErrorParentNamesSeparator","prettyErrorLoggerNameDelimiter","prettyLogTimeZone","SILLY","TRACE","DEBUG","INFO","WARN","ERROR","FATAL","dateIsoStr","nameWithDelimiterPrefix","nameWithDelimiterSuffix","Infinity","metaProperty","maskPlaceholder","maskValuesOfKeys","maskValuesOfKeysCaseInsensitive","maskValuesRegEx","prefix","attachedTransports","overwrite","mask","toLogObj","addMeta","addPlaceholders","formatMeta","formatLogObj","_mask","thisLogObj","_recursiveCloneAndExecuteFunctions","_toLogObj","logObjWithMeta","_addMetaToLogObj","logArgsAndErrorsMarkup","_prettyFormatLogObjMeta","transportLogger","attachTransport","getSubLogger","subLoggerSettings","_recursiveCloneAndMaskValuesOfKeys","source","item","getTime","URL","urlToObject","url","protocol","username","password","host","hostname","port","pathname","search","searchParams","baseObject","_cloneError","modifiedSource","regEx","isObjectOrArray","shallowCopy","clonedLogObj","_toErrorObject","cloned","nativeError","logObjMeta","placeholderValues","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","dateInSettingsTimeZone","getTimezoneOffset","parentNamesString","isBrowser","isBrowserBlinkEngine","chrome","CSS","supports","isSafari","navigator","silly","trace","fatal","HttpRequestMethod","LogLevel","RequestProblemCategory","LoggerFactory","tsLogger","Debug","WebSdkConfiguration","token","apiHost","elementCacheMaxEntries","collectionCacheMaxEntries","collectionPageSize","hasToken","getToken","setToken","getApiHost","setApiHost","endsWith","getElementCacheMaxEntries","setElementCacheMaxEntries","getCollectionCacheMaxEntries","setCollectionCacheMaxEntries","getCollectionPageSize","setCollectionPageSize","FetchHelper","createResponseErrorFromBadResponse","response","errorInstance","status","title","addAuthorizationHeader","headers","addAcceptJsonAndProblemJsonHeader","addContentTypeJsonHeader","getDefaultGetOptions","GET","redirect","referrerPolicy","getDefaultDeleteOptions","DELETE","getDefaultPostOptions","body","POST","getDefaultPatchOptions","PATCH","getDefaultPutOptions","PUT","buildUrl","runWrappedFetch","init","fetch","RawValueToNormalizedValueEvent","rawValue","normalizedValue","propagationStopped","getRawValue","getNormalizedValue","setNormalizedValue","DateTimeRawValueToNormalizedValueEventListener_1","DateTimeRawValueToNormalizedValueEventListener","triggerOnEvent","dateRegex","GenericRawValueToNormalizedValueEventListener","EventManager","registerEventListener","handleEvent","RawValueToNormalizedValueEventManager","dateTimeRawValueToNormalizedValueEventListener","genericRawValueToNormalizedValueEventListener","RawValueToNormalizedValueHelper","rawValueToNormalizedValueEventManager","parseRawData","rawData","RequestProblemParser","rawRequestProblemToRequestProblem","problem","category","ServerSide","parsedProblem","exception","TokenParser","rawTokenToToken","validateTokenFromString","perf","performance","now","warned","PROCESS","process","emitWarning","msg","fn","AC","AbortController","AS","AbortSignal","onabort","_onabort","reason","aborted","addEventListener","warnACPolyfill","signal","abort","printACPolyfillWarning","env","LRU_CACHE_IGNORE_AC_WARNING","isPosInt","isFinite","getUintArray","max","pow","Uint16Array","Uint32Array","MAX_SAFE_INTEGER","ZeroArray","fill","Stack","heap","HeapCls","LRUCache","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","sizes","keyMap","keyList","valList","prev","head","tail","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","fetchMethod","memoMethod","dispose","disposeAfter","UintArray","shouldWarn","getRemainingTTL","setTimeout","unref","cachedNow","getNow","age","remainingTTL","v","entrySize","totalCalculatedSize","_s","_st","_k","_v","rentries","rkeys","rvalues","getOptions","__staleWhileFetching","thisp","rforEach","purgeStale","deleted","remain","dump","arr","unshift","load","setOptions","maxEntrySizeExceeded","oldVal","__abortController","oldValue","dt","task","shift","hasOptions","peek","peekOptions","ac","fetchOpts","cb","updateCache","ignoreAbort","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchFail","bf","fetchUpdated","er","allowStaleAborted","noDelete","returnedStale","__returned","fetchDispatched","res","rej","fmp","then","fetchRejected","fetchOptions","forceRefresh","stale","staleVal","forceFetch","memo","memoOptions","vv","fetching","pi","ni","DeleteElementEndpoint","fetchHelper","deleteElement","elementId","catch","networkError","async","ok","contentType","GetElementChildrenEndpoint","collectionParser","getElementChildren","parentId","page","pageSize","jsonResponse","GetElementEndpoint","getElement","GetElementParentsEndpoint","getElementParents","childId","GetElementRelatedEndpoint","getElementRelated","centerId","GetIndexEndpoint","getIndex","PatchElementEndpoint","patchElement","PostElementEndpoint","postElement","at","PostIndexEndpoint","postIndex","PutElementEndpoint","putElement","DeleteTokenEndpoint","deleteToken","GetMeEndpoint","getMe","GetTokenEndpoint","PostChangePasswordEndpoint","postChangePassword","uniqueUserIdentifier","currentPassword","newPassword","PostRegisterEndpoint","postRegister","PostTokenEndpoint","tokenParser","postToken","EmberNexus","elementCache","elementUuid","parentUuid","childUuid","centerUuid","rootNode","emberNexus","emberNexusWebSDK","action","setting","icon","eventDispatcher"],"sourceRoot":""}
|