@h3ravel/config 1.4.0 → 1.4.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/dist/index.cjs +1512 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +1511 -54
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["app: Application","path","_app: Application","EnvParser","Reflect","metadataRegistry","metadata","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","defineMetadata","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","MapIterator","Map","Set","WeakMap","debug","env","value","env","key"],"sources":["../src/ConfigRepository.ts","../src/EnvLoader.ts","../src/Helpers.ts","../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js","../../../node_modules/.pnpm/address@2.0.3/node_modules/address/dist/esm/address.js","../../../node_modules/.pnpm/detect-port@2.1.0/node_modules/detect-port/dist/esm/detect-port.js","../../../node_modules/.pnpm/detect-port@2.1.0/node_modules/detect-port/dist/esm/wait-port.js","../../../node_modules/.pnpm/dotenv-expand@12.0.3/node_modules/dotenv-expand/lib/main.js","../../core/dist/index.js","../src/Providers/ConfigServiceProvider.ts"],"sourcesContent":["import type { DotNestedKeys, DotNestedValue } from '@h3ravel/shared'\nimport { safeDot, setNested } from '@h3ravel/support'\n\nimport { Application } from '@h3ravel/core'\nimport path from 'node:path'\nimport { readdir } from 'node:fs/promises'\n\nexport class ConfigRepository {\n private loaded: boolean = false\n private configs: Record<string, Record<string, any>> = {}\n\n constructor(protected app: Application) { }\n\n // get<X extends Record<string, any>> (): X\n // get<X extends Record<string, any>, T extends Extract<keyof X, string>> (key: T): X[T]\n\n /**\n * Get the defined configurations\n */\n get<X extends Record<string, any>> (): X\n get<X extends Record<string, any>, K extends DotNestedKeys<X>> (key: K, def?: any): DotNestedValue<X, K>\n get<X extends Record<string, any>, K extends DotNestedKeys<X>> (key?: K, def?: any): any {\n return safeDot(this.configs, key) ?? def\n }\n\n /**\n * Modify the defined configurations\n */\n set<T extends string> (key: T, value: any): void {\n setNested(this.configs, key, value)\n }\n\n async load () {\n if (!this.loaded) {\n\n const configPath = this.app.getPath('config')\n\n const files = (await readdir(configPath)).filter((e) => {\n return !e.includes('.d.ts') && !e.includes('.d.cts') && !e.includes('.map')\n })\n\n for (let i = 0; i < files.length; i++) {\n const configModule = await import(path.join(configPath, files[i]))\n const name = files[i].replaceAll(/\\.ts|\\.js/g, '')\n if (typeof configModule.default === 'function') {\n this.configs[name] = configModule.default(this.app)\n }\n }\n\n this.loaded = true\n }\n return this\n }\n}\n","import type { DotNestedKeys, DotNestedValue } from '@h3ravel/shared'\n\nimport { Application } from '@h3ravel/core'\nimport { EnvParser } from '@h3ravel/shared'\nimport { safeDot } from '@h3ravel/support'\n\nexport class EnvLoader {\n constructor(protected _app: Application) { }\n\n /**\n * Get the defined environment vars\n */\n get<X extends NodeJS.ProcessEnv> (): X\n get<X extends NodeJS.ProcessEnv, K extends DotNestedKeys<X>> (key: K, def?: any): DotNestedValue<X, K>\n get<X extends NodeJS.ProcessEnv, K extends DotNestedKeys<X>> (key?: K, def?: any): any {\n return safeDot(EnvParser.parse(process.env), key) ?? def\n }\n}\n","export class Helpers {\n}\n","/*! *****************************************************************************\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","import os from 'node:os';\nimport fs from 'node:fs/promises';\nimport childProcess from 'node:child_process';\nconst DEFAULT_RESOLV_FILE = '/etc/resolv.conf';\n// osx start line 'en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500'\n// linux start line 'eth0 Link encap:Ethernet HWaddr 00:16:3E:00:0A:29 '\nconst MAC_OSX_START_LINE = /^(\\w+)\\:\\s+flags=/;\nconst MAC_LINUX_START_LINE = /^(\\w+)\\s{2,}link encap:\\w+/i;\n// ether 78:ca:39:b0:e6:7d\n// HWaddr 00:16:3E:00:0A:29\nexport const MAC_RE = /(?:ether|HWaddr)\\s+((?:[a-z0-9]{2}\\:){5}[a-z0-9]{2})/i;\n// osx: inet 192.168.2.104 netmask 0xffffff00 broadcast 192.168.2.255\n// linux: inet addr:10.125.5.202 Bcast:10.125.15.255 Mask:255.255.240.0\nexport const MAC_IP_RE = /inet\\s(?:addr\\:)?(\\d+\\.\\d+\\.\\d+\\.\\d+)/;\nfunction getDefaultInterfaceName() {\n let val = 'eth';\n const platform = os.platform();\n if (platform === 'darwin') {\n val = 'en';\n }\n else if (platform === 'win32') {\n val = undefined;\n }\n return val;\n}\nfunction getIfconfigCMD() {\n if (os.platform() === 'win32') {\n return 'ipconfig/all';\n }\n return '/sbin/ifconfig';\n}\n// typeof os.networkInterfaces family is a number (v18.0.0)\n// types: 'IPv4' | 'IPv6' => 4 | 6\n// @see https://github.com/nodejs/node/issues/42861\nfunction matchName(actualFamily, expectedFamily) {\n if (expectedFamily === 'IPv4') {\n return actualFamily === 'IPv4' || actualFamily === 4;\n }\n if (expectedFamily === 'IPv6') {\n return actualFamily === 'IPv6' || actualFamily === 6;\n }\n return actualFamily === expectedFamily;\n}\nfunction findAddressFromInterface(items, expectedFamily, ignoreLoAddress = false) {\n let firstMatchItem;\n for (const item of items) {\n if (matchName(item.family, expectedFamily)) {\n if (ignoreLoAddress && item.address.startsWith('127.')) {\n continue;\n }\n if (expectedFamily === 'IPv6') {\n // find the scopeid = 0 item\n if (item.scopeid === 0)\n return item;\n if (!firstMatchItem) {\n firstMatchItem = item;\n }\n }\n else {\n return item;\n }\n }\n }\n return firstMatchItem;\n}\nexport function getInterfaceAddress(family, name) {\n const interfaces = os.networkInterfaces();\n const noName = !name;\n name = name || getDefaultInterfaceName();\n family = family || 'IPv4';\n if (name) {\n for (let i = -1; i < 8; i++) {\n const interfaceName = name + (i >= 0 ? i : ''); // support 'lo' and 'lo0'\n const items = interfaces[interfaceName];\n if (items) {\n const item = findAddressFromInterface(items, family);\n if (item) {\n return item;\n }\n }\n }\n }\n if (noName) {\n // filter all loopback or local addresses\n for (const k in interfaces) {\n const items = interfaces[k];\n if (items) {\n // all 127 addresses are local and should be ignored\n const item = findAddressFromInterface(items, family, true);\n if (item) {\n return item;\n }\n }\n }\n }\n return;\n}\n/**\n * Get current machine IPv4\n *\n * interfaceName: interface name, default is 'eth' on linux, 'en' on mac os.\n */\nexport function ip(interfaceName) {\n const item = getInterfaceAddress('IPv4', interfaceName);\n return item?.address;\n}\n/**\n * Get current machine IPv6\n *\n * interfaceName: interface name, default is 'eth' on linux, 'en' on mac os.\n */\nexport function ipv6(interfaceName) {\n const item = getInterfaceAddress('IPv6', interfaceName);\n return item?.address;\n}\nfunction getMAC(content, interfaceName, matchIP) {\n const lines = content.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i].trimEnd();\n const m = MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line);\n if (!m) {\n continue;\n }\n // check interface name\n const name = m[1];\n if (name.indexOf(interfaceName) !== 0) {\n continue;\n }\n let ip = null;\n let mac = null;\n let match = MAC_RE.exec(line);\n if (match) {\n mac = match[1];\n }\n i++;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n line = lines[i];\n if (!line || MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line)) {\n i--;\n break; // hit next interface, handle next interface\n }\n if (!mac) {\n match = MAC_RE.exec(line);\n if (match) {\n mac = match[1];\n }\n }\n if (!ip) {\n match = MAC_IP_RE.exec(line);\n if (match) {\n ip = match[1];\n }\n }\n i++;\n }\n if (ip === matchIP) {\n return mac;\n }\n }\n return null;\n}\nexport function mac(interfaceNameOrCallback, callback) {\n let interfaceName;\n if (typeof interfaceNameOrCallback === 'function') {\n callback = interfaceNameOrCallback;\n }\n else {\n interfaceName = interfaceNameOrCallback;\n }\n interfaceName = interfaceName || getDefaultInterfaceName();\n const item = getInterfaceAddress('IPv4', interfaceName);\n if (!item) {\n return callback();\n }\n // https://github.com/nodejs/node/issues/13581\n // bug in node 7.x and <= 8.4.0\n if (!process.env.CI && (item.mac === 'ff:00:00:00:00:00' || item.mac === '00:00:00:00:00:00')) {\n // wrong address, ignore it\n item.mac = '';\n }\n if (item.mac) {\n return callback(null, item.mac);\n }\n childProcess.exec(getIfconfigCMD(), { timeout: 5000 }, (err, stdout) => {\n if (err || !stdout) {\n return callback(err);\n }\n if (!interfaceName) {\n return callback();\n }\n const mac = getMAC(stdout || '', interfaceName, item.address);\n callback(null, mac);\n });\n}\n// nameserver 172.24.102.254\nconst DNS_SERVER_RE = /^nameserver\\s+(\\d+\\.\\d+\\.\\d+\\.\\d+)$/i;\nexport function dns(filepathOrCallback, callback) {\n let filepath;\n if (typeof filepathOrCallback === 'function') {\n callback = filepathOrCallback;\n }\n else {\n filepath = filepathOrCallback;\n }\n filepath = filepath || DEFAULT_RESOLV_FILE;\n fs.readFile(filepath, 'utf8')\n .then(content => {\n const servers = [];\n content = content || '';\n const lines = content.split('\\n');\n for (const line of lines) {\n const m = DNS_SERVER_RE.exec(line.trim());\n if (m) {\n servers.push(m[1]);\n }\n }\n callback(null, servers);\n })\n .catch(err => {\n callback(err);\n });\n}\nexport function address(interfaceNameOrCallback, callback) {\n let interfaceName;\n if (typeof interfaceNameOrCallback === 'function') {\n callback = interfaceNameOrCallback;\n }\n else {\n interfaceName = interfaceNameOrCallback;\n }\n const addr = {\n ip: ip(interfaceName),\n ipv6: ipv6(interfaceName),\n mac: undefined,\n };\n mac(interfaceName || '', (err, mac) => {\n if (mac) {\n addr.mac = mac;\n }\n callback(err || null, addr);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBRS9DLDBGQUEwRjtBQUMxRiwrRUFBK0U7QUFDL0UsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUMvQyxNQUFNLG9CQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBRTNELDBCQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLHVEQUF1RCxDQUFDO0FBRTlFLHFFQUFxRTtBQUNyRSx5RUFBeUU7QUFDekUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLHVDQUF1QyxDQUFDO0FBWWpFLFNBQVMsdUJBQXVCO0lBQzlCLElBQUksR0FBRyxHQUF1QixLQUFLLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDYixDQUFDO1NBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDaEMsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjO0lBQ3JCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFFRCwyREFBMkQ7QUFDM0Qsa0NBQWtDO0FB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","import { createServer } from 'node:net';\nimport { debuglog } from 'node:util';\nimport { ip } from 'address';\nconst debug = debuglog('detect-port');\nexport class IPAddressNotAvailableError extends Error {\n constructor(options) {\n super('The IP address is not available on this machine', options);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n }\n}\nexport function detectPort(port, callback) {\n let hostname = '';\n if (port && typeof port === 'object') {\n hostname = port.hostname;\n callback = port.callback;\n port = port.port;\n }\n else {\n if (typeof port === 'function') {\n callback = port;\n port = void 0;\n }\n }\n port = parseInt(port) || 0;\n let maxPort = port + 10;\n if (maxPort > 65535) {\n maxPort = 65535;\n }\n debug('detect free port between [%s, %s)', port, maxPort);\n if (typeof callback === 'function') {\n return tryListen(port, maxPort, hostname)\n .then(port => callback(null, port))\n .catch(callback);\n }\n // promise\n return tryListen(port, maxPort, hostname);\n}\nasync function handleError(port, maxPort, hostname) {\n if (port >= maxPort) {\n debug('port: %s >= maxPort: %s, give up and use random port', port, maxPort);\n port = 0;\n maxPort = 0;\n }\n return await tryListen(port, maxPort, hostname);\n}\nasync function tryListen(port, maxPort, hostname) {\n // use user hostname\n if (hostname) {\n try {\n return await listen(port, hostname);\n }\n catch (err) {\n if (err.code === 'EADDRNOTAVAIL') {\n throw new IPAddressNotAvailableError({ cause: err });\n }\n return await handleError(++port, maxPort, hostname);\n }\n }\n // 1. check null / undefined\n try {\n await listen(port);\n }\n catch (err) {\n // ignore random listening\n if (port === 0) {\n throw err;\n }\n return await handleError(++port, maxPort, hostname);\n }\n // 2. check 0.0.0.0\n try {\n await listen(port, '0.0.0.0');\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n // 3. check 127.0.0.1\n try {\n await listen(port, '127.0.0.1');\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n // 4. check localhost\n try {\n await listen(port, 'localhost');\n }\n catch (err) {\n // if localhost refer to the ip that is not unknown on the machine, you will see the error EADDRNOTAVAIL\n // https://stackoverflow.com/questions/10809740/listen-eaddrnotavail-error-in-node-js\n if (err.code !== 'EADDRNOTAVAIL') {\n return await handleError(++port, maxPort, hostname);\n }\n }\n // 5. check current ip\n try {\n return await listen(port, ip());\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n}\nfunction listen(port, hostname) {\n const server = createServer();\n return new Promise((resolve, reject) => {\n server.once('error', err => {\n debug('listen %s:%s error: %s', hostname, port, err);\n server.close();\n if (err.code === 'ENOTFOUND') {\n debug('ignore dns ENOTFOUND error, get free %s:%s', hostname, port);\n return resolve(port);\n }\n return reject(err);\n });\n debug('try listen %d on %s', port, hostname);\n server.listen(port, hostname, () => {\n port = server.address().port;\n debug('get free %s:%s', hostname, port);\n server.close();\n return resolve(port);\n });\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGV0ZWN0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBZSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFN0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBVXRDLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxLQUFLO0lBQ25ELFlBQVksT0FBc0I7UUFDaEMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBS0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUF3RCxFQUFFLFFBQTZCO0lBQ2hILElBQUksUUFBUSxHQUF1QixFQUFFLENBQUM7SUFFdEMsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQy9CLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxHQUFHLFFB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","import { debuglog } from 'node:util';\nimport { detectPort } from './detect-port.js';\nconst debug = debuglog('detect-port:wait-port');\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\nexport class WaitPortRetryError extends Error {\n retries;\n count;\n constructor(message, retries, count, options) {\n super(message, options);\n this.name = this.constructor.name;\n this.retries = retries;\n this.count = count;\n Error.captureStackTrace(this, this.constructor);\n }\n}\nexport async function waitPort(port, options = {}) {\n const { retryInterval = 1000, retries = Infinity } = options;\n let count = 1;\n async function loop() {\n debug('wait port %d, retries %d, count %d', port, retries, count);\n if (count > retries) {\n const err = new WaitPortRetryError('retries exceeded', retries, count);\n throw err;\n }\n count++;\n const freePort = await detectPort(port);\n if (freePort === port) {\n await sleep(retryInterval);\n return loop();\n }\n return true;\n }\n return await loop();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dhaXQtcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVoRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxPQUFPLENBQVM7SUFDaEIsS0FBSyxDQUFTO0lBRWQsWUFBWSxPQUFlLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFzQjtRQUNqRixLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBT0QsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsSUFBWSxFQUFFLFVBQTJCLEVBQUU7SUFDeEUsTUFBTSxFQUFFLGFBQWEsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxLQUFLLFVBQVUsSUFBSTtRQUNqQixLQUFLLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLEdBQUcsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RSxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDIn0=","'use strict'\n\nfunction _resolveEscapeSequences (value) {\n return value.replace(/\\\\\\$/g, '$')\n}\n\nfunction expandValue (value, processEnv, runningParsed) {\n const env = { ...runningParsed, ...processEnv } // process.env wins\n\n const regex = /(?<!\\\\)\\${([^{}]+)}|(?<!\\\\)\\$([A-Za-z_][A-Za-z0-9_]*)/g\n\n let result = value\n let match\n const seen = new Set() // self-referential checker\n\n while ((match = regex.exec(result)) !== null) {\n seen.add(result)\n\n const [template, bracedExpression, unbracedExpression] = match\n const expression = bracedExpression || unbracedExpression\n\n // match the operators `:+`, `+`, `:-`, and `-`\n const opRegex = /(:\\+|\\+|:-|-)/\n // find first match\n const opMatch = expression.match(opRegex)\n const splitter = opMatch ? opMatch[0] : null\n\n const r = expression.split(splitter)\n\n let defaultValue\n let value\n\n const key = r.shift()\n\n if ([':+', '+'].includes(splitter)) {\n defaultValue = env[key] ? r.join(splitter) : ''\n value = null\n } else {\n defaultValue = r.join(splitter)\n value = env[key]\n }\n\n if (value) {\n // self-referential check\n if (seen.has(value)) {\n result = result.replace(template, defaultValue)\n } else {\n result = result.replace(template, value)\n }\n } else {\n result = result.replace(template, defaultValue)\n }\n\n // if the result equaled what was in process.env and runningParsed then stop expanding\n if (result === runningParsed[key]) {\n break\n }\n\n regex.lastIndex = 0 // reset regex search position to re-evaluate after each replacement\n }\n\n return result\n}\n\nfunction expand (options) {\n // for use with progressive expansion\n const runningParsed = {}\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n // dotenv.config() ran before this so the assumption is process.env has already been set\n for (const key in options.parsed) {\n let value = options.parsed[key]\n\n // short-circuit scenario: process.env was already set prior to the file value\n if (processEnv[key] && processEnv[key] !== value) {\n value = processEnv[key]\n } else {\n value = expandValue(value, processEnv, runningParsed)\n }\n\n options.parsed[key] = _resolveEscapeSequences(value)\n\n // for use with progressive expansion\n runningParsed[key] = _resolveEscapeSequences(value)\n }\n\n for (const processKey in options.parsed) {\n processEnv[processKey] = options.parsed[processKey]\n }\n\n return options\n}\n\nmodule.exports.expand = expand\n","import \"reflect-metadata\";\nimport { Logger, PathLoader } from \"@h3ravel/shared\";\nimport { dd, dump } from \"@h3ravel/support\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport { detect } from \"detect-port\";\nimport dotenv from \"dotenv\";\nimport dotenvExpand from \"dotenv-expand\";\nimport { Edge } from \"edge.js\";\n\n//#region src/Container.ts\nvar Container = class {\n\tbindings = /* @__PURE__ */ new Map();\n\tsingletons = /* @__PURE__ */ new Map();\n\t/**\n\t* Check if the target has any decorators\n\t* \n\t* @param target \n\t* @returns \n\t*/\n\tstatic hasAnyDecorator(target) {\n\t\tif (Reflect.getMetadataKeys(target).length > 0) return true;\n\t\tconst paramLength = target.length;\n\t\tfor (let i = 0; i < paramLength; i++) if (Reflect.getMetadataKeys(target, `__param_${i}`).length > 0) return true;\n\t\treturn false;\n\t}\n\tbind(key, factory) {\n\t\tthis.bindings.set(key, factory);\n\t}\n\t/**\n\t* Bind a singleton service to the container\n\t*/\n\tsingleton(key, factory) {\n\t\tthis.bindings.set(key, () => {\n\t\t\tif (!this.singletons.has(key)) this.singletons.set(key, factory());\n\t\t\treturn this.singletons.get(key);\n\t\t});\n\t}\n\t/**\n\t* Resolve a service from the container\n\t*/\n\tmake(key) {\n\t\t/**\n\t\t* Direct factory binding\n\t\t*/\n\t\tif (this.bindings.has(key)) return this.bindings.get(key)();\n\t\t/**\n\t\t* If this is a class constructor, auto-resolve via reflection\n\t\t*/\n\t\tif (typeof key === \"function\") return this.build(key);\n\t\tthrow new Error(`No binding found for key: ${typeof key === \"string\" ? key : key?.name}`);\n\t}\n\t/**\n\t* Automatically build a class with constructor dependency injection\n\t*/\n\tbuild(ClassType) {\n\t\tlet dependencies = [];\n\t\tif (Array.isArray(ClassType.__inject__)) dependencies = ClassType.__inject__.map((alias) => {\n\t\t\treturn this.make(alias);\n\t\t});\n\t\telse dependencies = (Reflect.getMetadata(\"design:paramtypes\", ClassType) || []).map((dep) => this.make(dep));\n\t\treturn new ClassType(...dependencies);\n\t}\n\t/**\n\t* Check if a service is registered\n\t*/\n\thas(key) {\n\t\treturn this.bindings.has(key);\n\t}\n};\n\n//#endregion\n//#region src/Di/ContainerResolver.ts\nvar ContainerResolver = class ContainerResolver {\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tasync resolveMethodParams(instance, method, _default) {\n\t\t/**\n\t\t* Get param types for instance method\n\t\t*/\n\t\tlet params = Reflect.getMetadata(\"design:paramtypes\", instance, String(method)) || [];\n\t\t/**\n\t\t* Ensure that the Application class is always available\n\t\t*/\n\t\tif (params.length < 1 && _default) params = [_default];\n\t\t/**\n\t\t* Resolve the bound dependencies\n\t\t*/\n\t\tlet args = params.filter((e) => ContainerResolver.isClass(e)).map((type) => {\n\t\t\treturn this.app.make(type);\n\t\t});\n\t\treturn new Promise((resolve) => {\n\t\t\tresolve(instance[method](...args));\n\t\t});\n\t}\n\tstatic isClass(C) {\n\t\treturn typeof C === \"function\" && C.prototype !== void 0 && Object.toString.call(C).substring(0, 5) === \"class\";\n\t}\n};\n\n//#endregion\n//#region src/Registerer.ts\nvar Registerer = class Registerer {\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tstatic register(app) {\n\t\tnew Registerer(app).bootRegister();\n\t}\n\tbootRegister() {\n\t\tglobalThis.dd = dd;\n\t\tglobalThis.dump = dump;\n\t\tglobalThis.app_path = (path$1) => this.appPath(path$1);\n\t\tglobalThis.base_path = (path$1) => this.basePath(path$1);\n\t\tglobalThis.public_path = (path$1) => this.publicPath(path$1);\n\t\tglobalThis.storage_path = (path$1) => this.storagePath(path$1);\n\t\tglobalThis.database_path = (path$1) => this.databasePath(path$1);\n\t}\n\tappPath(path$1) {\n\t\treturn this.app.getPath(\"base\", path.join(`/${process.env.SRC_PATH ?? \"src\"}/`.replace(/([^:]\\/)\\/+/g, \"$1\"), \"app\", path$1 ?? \"\"));\n\t}\n\tbasePath(path$1) {\n\t\treturn this.app.getPath(\"base\", path$1);\n\t}\n\tpublicPath(path$1) {\n\t\treturn this.app.getPath(\"public\", path$1);\n\t}\n\tstoragePath(path$1) {\n\t\treturn this.app.getPath(\"base\", path.join(\"storage\", path$1 ?? \"\"));\n\t}\n\tdatabasePath(path$1) {\n\t\treturn this.app.getPath(\"database\", path$1);\n\t}\n};\n\n//#endregion\n//#region src/Application.ts\nvar Application = class Application extends Container {\n\tpaths = new PathLoader();\n\ttries = 0;\n\tbooted = false;\n\tversions = {\n\t\tapp: \"0\",\n\t\tts: \"0\"\n\t};\n\tbasePath;\n\tproviders = [];\n\texternalProviders = [];\n\t/**\n\t* List of registered console commands\n\t*/\n\tregisteredCommands = [];\n\tconstructor(basePath) {\n\t\tsuper();\n\t\tdotenvExpand.expand(dotenv.config({ quiet: true }));\n\t\tthis.basePath = basePath;\n\t\tthis.setPath(\"base\", basePath);\n\t\tthis.loadOptions();\n\t\tthis.registerBaseBindings();\n\t\tRegisterer.register(this);\n\t}\n\t/**\n\t* Register core bindings into the container\n\t*/\n\tregisterBaseBindings() {\n\t\tthis.bind(Application, () => this);\n\t\tthis.bind(\"path.base\", () => this.basePath);\n\t\tthis.bind(\"load.paths\", () => this.paths);\n\t}\n\t/**\n\t* Dynamically register all configured providers\n\t*/\n\tasync registerConfiguredProviders() {\n\t\tconst providers = await this.getAllProviders();\n\t\tfor (const ProviderClass of providers) {\n\t\t\tif (!ProviderClass) continue;\n\t\t\tconst provider = new ProviderClass(this);\n\t\t\tawait this.register(provider);\n\t\t}\n\t}\n\tasync loadOptions() {\n\t\tconst app = await this.safeImport(this.getPath(\"base\", \"package.json\"));\n\t\tconst core = await this.safeImport(\"../package.json\");\n\t\tif (app && app.dependencies) this.versions.app = app.dependencies[\"@h3ravel/core\"];\n\t\tif (core && core.devDependencies) this.versions.ts = app.devDependencies.typescript;\n\t}\n\t/**\n\t* Get all registered providers\n\t*/\n\tgetRegisteredProviders() {\n\t\treturn this.providers;\n\t}\n\t/**\n\t* Load default and optional providers dynamically\n\t* \n\t* Auto-Registration Behavior\n\t* \n\t* Minimal App: Loads only core, config, http, router by default.\n\t* Full-Stack App: Installs database, mail, queue, cache → they self-register via their providers.\n\t*/\n\tasync getConfiguredProviders() {\n\t\treturn [(await import(\"./index.js\")).CoreServiceProvider, (await import(\"./index.js\")).ViewServiceProvider];\n\t}\n\tasync getAllProviders() {\n\t\tconst allProviders = [...await this.getConfiguredProviders(), ...this.externalProviders];\n\t\t/**\n\t\t* Deduplicate by class reference\n\t\t*/\n\t\tconst uniqueProviders = Array.from(new Set(allProviders));\n\t\treturn this.sortProviders(uniqueProviders);\n\t}\n\tsortProviders(providers) {\n\t\tconst priorityMap = /* @__PURE__ */ new Map();\n\t\t/**\n\t\t* Base priority (default 0)\n\t\t*/\n\t\tproviders.forEach((Provider) => {\n\t\t\tpriorityMap.set(Provider.name, Provider.priority ?? 0);\n\t\t});\n\t\t/**\n\t\t* Handle before/after adjustments\n\t\t*/\n\t\tproviders.forEach((Provider) => {\n\t\t\tconst order = Provider.order;\n\t\t\tif (!order) return;\n\t\t\tconst [direction, target] = order.split(\":\");\n\t\t\tconst targetPriority = priorityMap.get(target) ?? 0;\n\t\t\tif (direction === \"before\") priorityMap.set(Provider.name, targetPriority - 1);\n\t\t\telse if (direction === \"after\") priorityMap.set(Provider.name, targetPriority + 1);\n\t\t});\n\t\t/**\n\t\t* Service providers sorted based on thier name and priority\n\t\t*/\n\t\tconst sorted = providers.sort((A, B) => (priorityMap.get(B.name) ?? 0) - (priorityMap.get(A.name) ?? 0));\n\t\t/**\n\t\t* If debug is enabled, let's show the loaded service provider info\n\t\t*/\n\t\tif (process.env.APP_DEBUG === \"true\" && process.env.EXTENDED_DEBUG !== \"false\" && !sorted.some((e) => e.console)) {\n\t\t\tconsole.table(sorted.map((P) => ({\n\t\t\t\tProvider: P.name,\n\t\t\t\tPriority: priorityMap.get(P.name),\n\t\t\t\tOrder: P.order || \"N/A\"\n\t\t\t})));\n\t\t\tconsole.info(`Set ${chalk.bgCyan(\" APP_DEBUG = false \")} in your .env file to hide this information`, \"\\n\");\n\t\t}\n\t\treturn sorted;\n\t}\n\tregisterProviders(providers) {\n\t\tthis.externalProviders.push(...providers);\n\t}\n\t/**\n\t* Register a provider\n\t*/\n\tasync register(provider) {\n\t\tawait new ContainerResolver(this).resolveMethodParams(provider, \"register\", this);\n\t\tif (provider.registeredCommands && provider.registeredCommands.length > 0) this.registeredCommands.push(...provider.registeredCommands);\n\t\tthis.providers.push(provider);\n\t}\n\t/**\n\t* checks if the application is running in CLI\n\t*/\n\trunningInConsole() {\n\t\treturn typeof process !== \"undefined\" && !!process.stdout && !!process.stdin;\n\t}\n\tgetRuntimeEnv() {\n\t\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") return \"browser\";\n\t\tif (typeof process !== \"undefined\" && process.versions?.node) return \"node\";\n\t\treturn \"unknown\";\n\t}\n\t/**\n\t* Boot all service providers after registration\n\t*/\n\tasync boot() {\n\t\tif (this.booted) return;\n\t\tfor (const provider of this.providers) if (provider.boot) if (Container.hasAnyDecorator(provider.boot))\n /**\n\t\t* If the service provider is decorated use the IoC container\n\t\t*/\n\t\tawait this.make(provider.boot);\n\t\telse\n /**\n\t\t* Otherwise instantiate manually so that we can at least\n\t\t* pass the app instance\n\t\t*/\n\t\tawait provider.boot(this);\n\t\tthis.booted = true;\n\t}\n\t/**\n\t* Fire up the developement server using the user provided arguments\n\t* \n\t* Port will be auto assigned if provided one is not available\n\t* \n\t* @param h3App The current H3 app instance\n\t* @param preferedPort If provided, this will overide the port set in the evironment\n\t*/\n\tasync fire(h3App, preferedPort) {\n\t\tconst serve = this.make(\"http.serve\");\n\t\tconst port = preferedPort ?? env(\"PORT\", 3e3);\n\t\tconst tries = env(\"RETRIES\", 1);\n\t\tconst hostname = env(\"HOSTNAME\", \"localhost\");\n\t\ttry {\n\t\t\tconst realPort = await detect(port);\n\t\t\tif (port == realPort) {\n\t\t\t\tconst server = serve(h3App, {\n\t\t\t\t\tport,\n\t\t\t\t\thostname,\n\t\t\t\t\tsilent: true\n\t\t\t\t});\n\t\t\t\tLogger.parse([[`🚀 H3ravel running at:`, \"green\"], [`${server.options.protocol ?? \"http\"}://${server.options.hostname}:${server.options.port}`, \"cyan\"]]);\n\t\t\t} else if (this.tries <= tries) {\n\t\t\t\tawait this.fire(h3App, realPort);\n\t\t\t\tthis.tries++;\n\t\t\t} else Logger.parse([[\"ERROR:\", \"bgRed\"], [\"No free port available\", \"red\"]]);\n\t\t} catch (e) {\n\t\t\tLogger.parse([\n\t\t\t\t[\"An error occured\", \"bgRed\"],\n\t\t\t\t[e.message, \"red\"],\n\t\t\t\t[e.stack, \"red\"]\n\t\t\t], \"\\n\");\n\t\t}\n\t}\n\t/**\n\t* Attempt to dynamically import an optional module\n\t*/\n\tasync safeImport(moduleName) {\n\t\ttry {\n\t\t\tconst mod = await import(moduleName);\n\t\t\treturn mod.default ?? mod ?? {};\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\t/**\n\t* Get the base path of the app\n\t* \n\t* @returns \n\t*/\n\tgetBasePath() {\n\t\treturn this.basePath;\n\t}\n\t/**\n\t* Dynamically retrieves a path property from the class.\n\t* Any property ending with \"Path\" is accessible automatically.\n\t*\n\t* @param name - The base name of the path property\n\t* @returns \n\t*/\n\tgetPath(name, suffix) {\n\t\treturn path.join(this.paths.getPath(name, this.basePath), suffix ?? \"\");\n\t}\n\t/**\n\t* Programatically set the paths.\n\t*\n\t* @param name - The base name of the path property\n\t* @param path - The new path\n\t* @returns \n\t*/\n\tsetPath(name, path$1) {\n\t\treturn this.paths.setPath(name, path$1, this.basePath);\n\t}\n\t/**\n\t* Returns the installed version of the system core and typescript.\n\t*\n\t* @returns \n\t*/\n\tgetVersion(key) {\n\t\treturn this.versions[key]?.replaceAll(/\\^|~/g, \"\");\n\t}\n};\n\n//#endregion\n//#region src/Controller.ts\n/**\n* Base controller class\n*/\nvar Controller = class {\n\tapp;\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tshow(..._ctx) {}\n\tindex(..._ctx) {}\n\tstore(..._ctx) {}\n\tupdate(..._ctx) {}\n\tdestroy(..._ctx) {}\n};\n\n//#endregion\n//#region src/Di/Inject.ts\nfunction Inject(...dependencies) {\n\treturn function(target) {\n\t\ttarget.__inject__ = dependencies;\n\t};\n}\n/**\n* Allows binding dependencies to both class and class methods \n* \n* @returns \n*/\nfunction Injectable() {\n\treturn (...args) => {\n\t\tif (args.length === 1) args[0];\n\t\tif (args.length === 3) {\n\t\t\targs[0];\n\t\t\targs[1];\n\t\t\targs[2];\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/Http/Kernel.ts\n/**\n* Kernel class handles middleware execution and response transformations.\n* It acts as the core middleware pipeline for HTTP requests.\n*/\nvar Kernel = class {\n\t/**\n\t* @param context - A factory function that converts an H3Event into an HttpContext.\n\t* @param middleware - An array of middleware classes that will be executed in sequence.\n\t*/\n\tconstructor(context, middleware = []) {\n\t\tthis.context = context;\n\t\tthis.middleware = middleware;\n\t}\n\t/**\n\t* Handles an incoming request and passes it through middleware before invoking the next handler.\n\t* \n\t* @param event - The raw H3 event object.\n\t* @param next - A callback function that represents the next layer (usually the controller or final handler).\n\t* @returns A promise resolving to the result of the request pipeline.\n\t*/\n\tasync handle(event, next) {\n\t\t/**\n\t\t* Convert the raw event into a standardized HttpContext\n\t\t*/\n\t\tconst ctx = this.context(event);\n\t\tconst { app } = ctx.request;\n\t\t/**\n\t\t* Dynamically bind the view renderer to the service container.\n\t\t* This allows any part of the request lifecycle to render templates using Edge.\n\t\t*/\n\t\tapp.bind(\"view\", () => async (template, params) => {\n\t\t\tconst edge = app.make(\"edge\");\n\t\t\treturn ctx.response.html(await edge.render(template, params));\n\t\t});\n\t\t/**\n\t\t* Run middleware stack and obtain result\n\t\t*/\n\t\tconst result = await this.runMiddleware(ctx, () => next(ctx));\n\t\t/**\n\t\t* If a plain object is returned from a controller or middleware,\n\t\t* automatically set the JSON Content-Type header for the response.\n\t\t*/\n\t\tif (result !== void 0 && this.isPlainObject(result)) event.res.headers.set(\"Content-Type\", \"application/json; charset=UTF-8\");\n\t\treturn result;\n\t}\n\t/**\n\t* Sequentially runs middleware in the order they were registered.\n\t* \n\t* @param context - The standardized HttpContext.\n\t* @param next - Callback to execute when middleware completes.\n\t* @returns A promise resolving to the final handler's result.\n\t*/\n\tasync runMiddleware(context, next) {\n\t\tlet index = -1;\n\t\tconst runner = async (i) => {\n\t\t\tif (i <= index) throw new Error(\"next() called multiple times\");\n\t\t\tindex = i;\n\t\t\tconst middleware = this.middleware[i];\n\t\t\tif (middleware)\n /**\n\t\t\t* Execute the current middleware and proceed to the next one\n\t\t\t*/\n\t\t\treturn middleware.handle(context, () => runner(i + 1));\n\t\t\telse\n /**\n\t\t\t* If no more middleware, call the final handler\n\t\t\t*/\n\t\t\treturn next(context);\n\t\t};\n\t\treturn runner(0);\n\t}\n\t/**\n\t* Utility function to determine if a value is a plain object or array.\n\t* \n\t* @param value - The value to check.\n\t* @returns True if the value is a plain object or array, otherwise false.\n\t*/\n\tisPlainObject(value) {\n\t\treturn typeof value === \"object\" && value !== null && (value.constructor === Object || value.constructor === Array);\n\t}\n};\n\n//#endregion\n//#region src/ServiceProvider.ts\nvar ServiceProvider = class {\n\t/**\n\t* Sort order\n\t*/\n\tstatic order;\n\t/**\n\t* Sort priority\n\t*/\n\tstatic priority = 0;\n\t/**\n\t* Indicate that this service provider only runs in console\n\t*/\n\tstatic console = false;\n\t/**\n\t* List of registered console commands\n\t*/\n\tregisteredCommands;\n\tapp;\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\t/**\n\t* An array of console commands to register.\n\t*/\n\tcommands(commands) {\n\t\tthis.registeredCommands = commands;\n\t}\n};\n\n//#endregion\n//#region src/Providers/CoreServiceProvider.ts\n/**\n* Bootstraps core services and bindings.\n* \n* Bind essential services to the container (logger, config repository).\n* Register app-level singletons.\n* Set up exception handling.\n* \n* Auto-Registered\n*/\nvar CoreServiceProvider = class extends ServiceProvider {\n\tstatic priority = 999;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Providers/ViewServiceProvider.ts\nvar ViewServiceProvider = class extends ServiceProvider {\n\tstatic priority = 995;\n\tregister() {\n\t\tconst config = this.app.make(\"config\");\n\t\tconst edge = Edge.create({ cache: process.env.NODE_ENV === \"production\" });\n\t\tedge.mount(this.app.getPath(\"views\"));\n\t\tedge.global(\"asset\", this.app.make(\"asset\"));\n\t\tedge.global(\"config\", config.get);\n\t\tedge.global(\"app\", this.app);\n\t\tthis.app.bind(\"edge\", () => edge);\n\t}\n};\n\n//#endregion\nexport { Application, Container, ContainerResolver, Controller, CoreServiceProvider, Inject, Injectable, Kernel, Registerer, ServiceProvider, ViewServiceProvider };\n//# sourceMappingURL=index.js.map","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { ConfigRepository, EnvLoader } from '..'\n\nimport { Bindings } from '@h3ravel/shared';\nimport { ServiceProvider } from '@h3ravel/core'\n\n/**\n * Loads configuration and environment files.\n * \n * Load .env and merge with config files.\n * Bind ConfigRepository to the container.\n * \n * Auto-Registered\n */\nexport class ConfigServiceProvider extends ServiceProvider {\n public static priority = 998;\n // public static order = 'before:DatabaseServiceProvider';\n\n async register () {\n /**\n * Create singleton to load env\n */\n this.app.singleton('env', () => {\n const env = new EnvLoader(this.app).get\n globalThis.env = env\n return env\n })\n\n /**\n * Initialize the configuration through the repository\n */\n const repo = new ConfigRepository(this.app)\n await repo.load()\n\n /**\n * Create singleton to load configurations\n */\n this.app.singleton('config', () => {\n const config = {\n get: (key, def) => repo.get(key as any, def),\n set: repo.set\n } as Bindings['config']\n\n globalThis.config = ((key: string | Record<string, any>, def: any) => {\n if (!key || typeof key === 'string') {\n return config.get(key, def)\n }\n\n Object.entries(key).forEach(([key, value]) => {\n config.set(key, value)\n })\n }) as never\n\n return config\n })\n\n this.app.make('http.app').use(e => {\n repo.set('app.url', e.url.origin)\n })\n }\n}\n"],"x_google_ignoreList":[3,4,5,6,7],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["Reflect","metadataRegistry","metadata","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","defineMetadata","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","MapIterator","Map","Set","WeakMap","debug","debug","env","value","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","debug","debug","re","t","MAX_LENGTH","parseOptions","compareIdentifiers","debug","re","parseOptions","SemVer","t","prerelease","SemVer","parse","parse","valid","parse","clean","SemVer","inc","parse","diff","SemVer","major","SemVer","minor","SemVer","patch","parse","prerelease","SemVer","compare","compare","rcompare","compare","compareLoose","SemVer","compareBuild","compareBuild","sort","compareBuild","rsort","compare","gt","compare","lt","compare","eq","compare","neq","compare","gte","compare","lte","eq","neq","gt","gte","lt","lte","cmp","SemVer","parse","re","coerce","t","major","minor","patch","prerelease","Range","parseOptions","Comparator","re","t","SemVer","debug","ANY","Comparator","SemVer","cmp","Range","Range","satisfies","Range","toComparators","SemVer","Range","maxSatisfying","SemVer","Range","minSatisfying","SemVer","Range","gt","minVersion","Range","validRange","SemVer","Comparator","Range","satisfies","gt","lt","lte","gte","outside","ANY","outside","gtr","outside","ltr","Range","intersects","satisfies","compare","Range","Comparator","satisfies","compare","subset","gt","lt","eq","Registerer","dd","dump","path$1","path","app: Application","path","_app: Application","EnvParser","env","key"],"sources":["../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js","../../../node_modules/.pnpm/address@2.0.3/node_modules/address/dist/esm/address.js","../../../node_modules/.pnpm/detect-port@2.1.0/node_modules/detect-port/dist/esm/detect-port.js","../../../node_modules/.pnpm/detect-port@2.1.0/node_modules/detect-port/dist/esm/wait-port.js","../../../node_modules/.pnpm/dotenv-expand@12.0.3/node_modules/dotenv-expand/lib/main.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/constants.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/debug.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/parse-options.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/identifiers.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/semver.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/parse.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/clean.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/inc.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/diff.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/major.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/minor.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/patch.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/prerelease.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rcompare.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-loose.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/sort.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rsort.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lt.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/eq.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/neq.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gte.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lte.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/cmp.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/lrucache.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/range.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/max-satisfying.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-satisfying.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/outside.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/gtr.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/ltr.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/simplify.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/subset.js","../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js","../../core/dist/index.js","../src/ConfigRepository.ts","../src/EnvLoader.ts","../src/Helpers.ts","../src/Providers/ConfigServiceProvider.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","import os from 'node:os';\nimport fs from 'node:fs/promises';\nimport childProcess from 'node:child_process';\nconst DEFAULT_RESOLV_FILE = '/etc/resolv.conf';\n// osx start line 'en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500'\n// linux start line 'eth0 Link encap:Ethernet HWaddr 00:16:3E:00:0A:29 '\nconst MAC_OSX_START_LINE = /^(\\w+)\\:\\s+flags=/;\nconst MAC_LINUX_START_LINE = /^(\\w+)\\s{2,}link encap:\\w+/i;\n// ether 78:ca:39:b0:e6:7d\n// HWaddr 00:16:3E:00:0A:29\nexport const MAC_RE = /(?:ether|HWaddr)\\s+((?:[a-z0-9]{2}\\:){5}[a-z0-9]{2})/i;\n// osx: inet 192.168.2.104 netmask 0xffffff00 broadcast 192.168.2.255\n// linux: inet addr:10.125.5.202 Bcast:10.125.15.255 Mask:255.255.240.0\nexport const MAC_IP_RE = /inet\\s(?:addr\\:)?(\\d+\\.\\d+\\.\\d+\\.\\d+)/;\nfunction getDefaultInterfaceName() {\n let val = 'eth';\n const platform = os.platform();\n if (platform === 'darwin') {\n val = 'en';\n }\n else if (platform === 'win32') {\n val = undefined;\n }\n return val;\n}\nfunction getIfconfigCMD() {\n if (os.platform() === 'win32') {\n return 'ipconfig/all';\n }\n return '/sbin/ifconfig';\n}\n// typeof os.networkInterfaces family is a number (v18.0.0)\n// types: 'IPv4' | 'IPv6' => 4 | 6\n// @see https://github.com/nodejs/node/issues/42861\nfunction matchName(actualFamily, expectedFamily) {\n if (expectedFamily === 'IPv4') {\n return actualFamily === 'IPv4' || actualFamily === 4;\n }\n if (expectedFamily === 'IPv6') {\n return actualFamily === 'IPv6' || actualFamily === 6;\n }\n return actualFamily === expectedFamily;\n}\nfunction findAddressFromInterface(items, expectedFamily, ignoreLoAddress = false) {\n let firstMatchItem;\n for (const item of items) {\n if (matchName(item.family, expectedFamily)) {\n if (ignoreLoAddress && item.address.startsWith('127.')) {\n continue;\n }\n if (expectedFamily === 'IPv6') {\n // find the scopeid = 0 item\n if (item.scopeid === 0)\n return item;\n if (!firstMatchItem) {\n firstMatchItem = item;\n }\n }\n else {\n return item;\n }\n }\n }\n return firstMatchItem;\n}\nexport function getInterfaceAddress(family, name) {\n const interfaces = os.networkInterfaces();\n const noName = !name;\n name = name || getDefaultInterfaceName();\n family = family || 'IPv4';\n if (name) {\n for (let i = -1; i < 8; i++) {\n const interfaceName = name + (i >= 0 ? i : ''); // support 'lo' and 'lo0'\n const items = interfaces[interfaceName];\n if (items) {\n const item = findAddressFromInterface(items, family);\n if (item) {\n return item;\n }\n }\n }\n }\n if (noName) {\n // filter all loopback or local addresses\n for (const k in interfaces) {\n const items = interfaces[k];\n if (items) {\n // all 127 addresses are local and should be ignored\n const item = findAddressFromInterface(items, family, true);\n if (item) {\n return item;\n }\n }\n }\n }\n return;\n}\n/**\n * Get current machine IPv4\n *\n * interfaceName: interface name, default is 'eth' on linux, 'en' on mac os.\n */\nexport function ip(interfaceName) {\n const item = getInterfaceAddress('IPv4', interfaceName);\n return item?.address;\n}\n/**\n * Get current machine IPv6\n *\n * interfaceName: interface name, default is 'eth' on linux, 'en' on mac os.\n */\nexport function ipv6(interfaceName) {\n const item = getInterfaceAddress('IPv6', interfaceName);\n return item?.address;\n}\nfunction getMAC(content, interfaceName, matchIP) {\n const lines = content.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i].trimEnd();\n const m = MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line);\n if (!m) {\n continue;\n }\n // check interface name\n const name = m[1];\n if (name.indexOf(interfaceName) !== 0) {\n continue;\n }\n let ip = null;\n let mac = null;\n let match = MAC_RE.exec(line);\n if (match) {\n mac = match[1];\n }\n i++;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n line = lines[i];\n if (!line || MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line)) {\n i--;\n break; // hit next interface, handle next interface\n }\n if (!mac) {\n match = MAC_RE.exec(line);\n if (match) {\n mac = match[1];\n }\n }\n if (!ip) {\n match = MAC_IP_RE.exec(line);\n if (match) {\n ip = match[1];\n }\n }\n i++;\n }\n if (ip === matchIP) {\n return mac;\n }\n }\n return null;\n}\nexport function mac(interfaceNameOrCallback, callback) {\n let interfaceName;\n if (typeof interfaceNameOrCallback === 'function') {\n callback = interfaceNameOrCallback;\n }\n else {\n interfaceName = interfaceNameOrCallback;\n }\n interfaceName = interfaceName || getDefaultInterfaceName();\n const item = getInterfaceAddress('IPv4', interfaceName);\n if (!item) {\n return callback();\n }\n // https://github.com/nodejs/node/issues/13581\n // bug in node 7.x and <= 8.4.0\n if (!process.env.CI && (item.mac === 'ff:00:00:00:00:00' || item.mac === '00:00:00:00:00:00')) {\n // wrong address, ignore it\n item.mac = '';\n }\n if (item.mac) {\n return callback(null, item.mac);\n }\n childProcess.exec(getIfconfigCMD(), { timeout: 5000 }, (err, stdout) => {\n if (err || !stdout) {\n return callback(err);\n }\n if (!interfaceName) {\n return callback();\n }\n const mac = getMAC(stdout || '', interfaceName, item.address);\n callback(null, mac);\n });\n}\n// nameserver 172.24.102.254\nconst DNS_SERVER_RE = /^nameserver\\s+(\\d+\\.\\d+\\.\\d+\\.\\d+)$/i;\nexport function dns(filepathOrCallback, callback) {\n let filepath;\n if (typeof filepathOrCallback === 'function') {\n callback = filepathOrCallback;\n }\n else {\n filepath = filepathOrCallback;\n }\n filepath = filepath || DEFAULT_RESOLV_FILE;\n fs.readFile(filepath, 'utf8')\n .then(content => {\n const servers = [];\n content = content || '';\n const lines = content.split('\\n');\n for (const line of lines) {\n const m = DNS_SERVER_RE.exec(line.trim());\n if (m) {\n servers.push(m[1]);\n }\n }\n callback(null, servers);\n })\n .catch(err => {\n callback(err);\n });\n}\nexport function address(interfaceNameOrCallback, callback) {\n let interfaceName;\n if (typeof interfaceNameOrCallback === 'function') {\n callback = interfaceNameOrCallback;\n }\n else {\n interfaceName = interfaceNameOrCallback;\n }\n const addr = {\n ip: ip(interfaceName),\n ipv6: ipv6(interfaceName),\n mac: undefined,\n };\n mac(interfaceName || '', (err, mac) => {\n if (mac) {\n addr.mac = mac;\n }\n callback(err || null, addr);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBRS9DLDBGQUEwRjtBQUMxRiwrRUFBK0U7QUFDL0UsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUMvQyxNQUFNLG9CQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBRTNELDBCQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLHVEQUF1RCxDQUFDO0FBRTlFLHFFQUFxRTtBQUNyRSx5RUFBeUU7QUFDekUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLHVDQUF1QyxDQUFDO0FBWWpFLFNBQVMsdUJBQXVCO0lBQzlCLElBQUksR0FBRyxHQUF1QixLQUFLLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDYixDQUFDO1NBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDaEMsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjO0lBQ3JCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFFRCwyREFBMkQ7QUFDM0Qsa0NBQWtDO0FB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","import { createServer } from 'node:net';\nimport { debuglog } from 'node:util';\nimport { ip } from 'address';\nconst debug = debuglog('detect-port');\nexport class IPAddressNotAvailableError extends Error {\n constructor(options) {\n super('The IP address is not available on this machine', options);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n }\n}\nexport function detectPort(port, callback) {\n let hostname = '';\n if (port && typeof port === 'object') {\n hostname = port.hostname;\n callback = port.callback;\n port = port.port;\n }\n else {\n if (typeof port === 'function') {\n callback = port;\n port = void 0;\n }\n }\n port = parseInt(port) || 0;\n let maxPort = port + 10;\n if (maxPort > 65535) {\n maxPort = 65535;\n }\n debug('detect free port between [%s, %s)', port, maxPort);\n if (typeof callback === 'function') {\n return tryListen(port, maxPort, hostname)\n .then(port => callback(null, port))\n .catch(callback);\n }\n // promise\n return tryListen(port, maxPort, hostname);\n}\nasync function handleError(port, maxPort, hostname) {\n if (port >= maxPort) {\n debug('port: %s >= maxPort: %s, give up and use random port', port, maxPort);\n port = 0;\n maxPort = 0;\n }\n return await tryListen(port, maxPort, hostname);\n}\nasync function tryListen(port, maxPort, hostname) {\n // use user hostname\n if (hostname) {\n try {\n return await listen(port, hostname);\n }\n catch (err) {\n if (err.code === 'EADDRNOTAVAIL') {\n throw new IPAddressNotAvailableError({ cause: err });\n }\n return await handleError(++port, maxPort, hostname);\n }\n }\n // 1. check null / undefined\n try {\n await listen(port);\n }\n catch (err) {\n // ignore random listening\n if (port === 0) {\n throw err;\n }\n return await handleError(++port, maxPort, hostname);\n }\n // 2. check 0.0.0.0\n try {\n await listen(port, '0.0.0.0');\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n // 3. check 127.0.0.1\n try {\n await listen(port, '127.0.0.1');\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n // 4. check localhost\n try {\n await listen(port, 'localhost');\n }\n catch (err) {\n // if localhost refer to the ip that is not unknown on the machine, you will see the error EADDRNOTAVAIL\n // https://stackoverflow.com/questions/10809740/listen-eaddrnotavail-error-in-node-js\n if (err.code !== 'EADDRNOTAVAIL') {\n return await handleError(++port, maxPort, hostname);\n }\n }\n // 5. check current ip\n try {\n return await listen(port, ip());\n }\n catch (err) {\n return await handleError(++port, maxPort, hostname);\n }\n}\nfunction listen(port, hostname) {\n const server = createServer();\n return new Promise((resolve, reject) => {\n server.once('error', err => {\n debug('listen %s:%s error: %s', hostname, port, err);\n server.close();\n if (err.code === 'ENOTFOUND') {\n debug('ignore dns ENOTFOUND error, get free %s:%s', hostname, port);\n return resolve(port);\n }\n return reject(err);\n });\n debug('try listen %d on %s', port, hostname);\n server.listen(port, hostname, () => {\n port = server.address().port;\n debug('get free %s:%s', hostname, port);\n server.close();\n return resolve(port);\n });\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGV0ZWN0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBZSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFN0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBVXRDLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxLQUFLO0lBQ25ELFlBQVksT0FBc0I7UUFDaEMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBS0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUF3RCxFQUFFLFFBQTZCO0lBQ2hILElBQUksUUFBUSxHQUF1QixFQUFFLENBQUM7SUFFdEMsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQy9CLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxHQUFHLFFB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","import { debuglog } from 'node:util';\nimport { detectPort } from './detect-port.js';\nconst debug = debuglog('detect-port:wait-port');\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\nexport class WaitPortRetryError extends Error {\n retries;\n count;\n constructor(message, retries, count, options) {\n super(message, options);\n this.name = this.constructor.name;\n this.retries = retries;\n this.count = count;\n Error.captureStackTrace(this, this.constructor);\n }\n}\nexport async function waitPort(port, options = {}) {\n const { retryInterval = 1000, retries = Infinity } = options;\n let count = 1;\n async function loop() {\n debug('wait port %d, retries %d, count %d', port, retries, count);\n if (count > retries) {\n const err = new WaitPortRetryError('retries exceeded', retries, count);\n throw err;\n }\n count++;\n const freePort = await detectPort(port);\n if (freePort === port) {\n await sleep(retryInterval);\n return loop();\n }\n return true;\n }\n return await loop();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dhaXQtcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVoRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxPQUFPLENBQVM7SUFDaEIsS0FBSyxDQUFTO0lBRWQsWUFBWSxPQUFlLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFzQjtRQUNqRixLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBT0QsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsSUFBWSxFQUFFLFVBQTJCLEVBQUU7SUFDeEUsTUFBTSxFQUFFLGFBQWEsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxLQUFLLFVBQVUsSUFBSTtRQUNqQixLQUFLLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLEdBQUcsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RSxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDIn0=","'use strict'\n\nfunction _resolveEscapeSequences (value) {\n return value.replace(/\\\\\\$/g, '$')\n}\n\nfunction expandValue (value, processEnv, runningParsed) {\n const env = { ...runningParsed, ...processEnv } // process.env wins\n\n const regex = /(?<!\\\\)\\${([^{}]+)}|(?<!\\\\)\\$([A-Za-z_][A-Za-z0-9_]*)/g\n\n let result = value\n let match\n const seen = new Set() // self-referential checker\n\n while ((match = regex.exec(result)) !== null) {\n seen.add(result)\n\n const [template, bracedExpression, unbracedExpression] = match\n const expression = bracedExpression || unbracedExpression\n\n // match the operators `:+`, `+`, `:-`, and `-`\n const opRegex = /(:\\+|\\+|:-|-)/\n // find first match\n const opMatch = expression.match(opRegex)\n const splitter = opMatch ? opMatch[0] : null\n\n const r = expression.split(splitter)\n\n let defaultValue\n let value\n\n const key = r.shift()\n\n if ([':+', '+'].includes(splitter)) {\n defaultValue = env[key] ? r.join(splitter) : ''\n value = null\n } else {\n defaultValue = r.join(splitter)\n value = env[key]\n }\n\n if (value) {\n // self-referential check\n if (seen.has(value)) {\n result = result.replace(template, defaultValue)\n } else {\n result = result.replace(template, value)\n }\n } else {\n result = result.replace(template, defaultValue)\n }\n\n // if the result equaled what was in process.env and runningParsed then stop expanding\n if (result === runningParsed[key]) {\n break\n }\n\n regex.lastIndex = 0 // reset regex search position to re-evaluate after each replacement\n }\n\n return result\n}\n\nfunction expand (options) {\n // for use with progressive expansion\n const runningParsed = {}\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n // dotenv.config() ran before this so the assumption is process.env has already been set\n for (const key in options.parsed) {\n let value = options.parsed[key]\n\n // short-circuit scenario: process.env was already set prior to the file value\n if (processEnv[key] && processEnv[key] !== value) {\n value = processEnv[key]\n } else {\n value = expandValue(value, processEnv, runningParsed)\n }\n\n options.parsed[key] = _resolveEscapeSequences(value)\n\n // for use with progressive expansion\n runningParsed[key] = _resolveEscapeSequences(value)\n }\n\n for (const processKey in options.parsed) {\n processEnv[processKey] = options.parsed[processKey]\n }\n\n return options\n}\n\nmodule.exports.expand = expand\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import \"reflect-metadata\";\nimport { FileSystem, Logger, PathLoader } from \"@h3ravel/shared\";\nimport { afterLast, dd, dump } from \"@h3ravel/support\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport { detect } from \"detect-port\";\nimport dotenv from \"dotenv\";\nimport dotenvExpand from \"dotenv-expand\";\nimport { mkdir, readFile } from \"node:fs/promises\";\nimport semver from \"semver\";\nimport { Edge } from \"edge.js\";\n\n//#region src/Container.ts\nvar Container = class {\n\tbindings = /* @__PURE__ */ new Map();\n\tsingletons = /* @__PURE__ */ new Map();\n\t/**\n\t* Check if the target has any decorators\n\t* \n\t* @param target \n\t* @returns \n\t*/\n\tstatic hasAnyDecorator(target) {\n\t\tif (Reflect.getMetadataKeys(target).length > 0) return true;\n\t\tconst paramLength = target.length;\n\t\tfor (let i = 0; i < paramLength; i++) if (Reflect.getMetadataKeys(target, `__param_${i}`).length > 0) return true;\n\t\treturn false;\n\t}\n\tbind(key, factory) {\n\t\tthis.bindings.set(key, factory);\n\t}\n\t/**\n\t* Bind a singleton service to the container\n\t*/\n\tsingleton(key, factory) {\n\t\tthis.bindings.set(key, () => {\n\t\t\tif (!this.singletons.has(key)) this.singletons.set(key, factory());\n\t\t\treturn this.singletons.get(key);\n\t\t});\n\t}\n\t/**\n\t* Resolve a service from the container\n\t*/\n\tmake(key) {\n\t\t/**\n\t\t* Direct factory binding\n\t\t*/\n\t\tif (this.bindings.has(key)) return this.bindings.get(key)();\n\t\t/**\n\t\t* If this is a class constructor, auto-resolve via reflection\n\t\t*/\n\t\tif (typeof key === \"function\") return this.build(key);\n\t\tthrow new Error(`No binding found for key: ${typeof key === \"string\" ? key : key?.name}`);\n\t}\n\t/**\n\t* Automatically build a class with constructor dependency injection\n\t*/\n\tbuild(ClassType) {\n\t\tlet dependencies = [];\n\t\tif (Array.isArray(ClassType.__inject__)) dependencies = ClassType.__inject__.map((alias) => {\n\t\t\treturn this.make(alias);\n\t\t});\n\t\telse dependencies = (Reflect.getMetadata(\"design:paramtypes\", ClassType) || []).map((dep) => this.make(dep));\n\t\treturn new ClassType(...dependencies);\n\t}\n\t/**\n\t* Check if a service is registered\n\t*/\n\thas(key) {\n\t\treturn this.bindings.has(key);\n\t}\n};\n\n//#endregion\n//#region src/Di/ContainerResolver.ts\nvar ContainerResolver = class ContainerResolver {\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tasync resolveMethodParams(instance, method, _default) {\n\t\t/**\n\t\t* Get param types for instance method\n\t\t*/\n\t\tlet params = Reflect.getMetadata(\"design:paramtypes\", instance, String(method)) || [];\n\t\t/**\n\t\t* Ensure that the Application class is always available\n\t\t*/\n\t\tif (params.length < 1 && _default) params = [_default];\n\t\t/**\n\t\t* Resolve the bound dependencies\n\t\t*/\n\t\tconst args = params.filter((e) => ContainerResolver.isClass(e)).map((type) => {\n\t\t\treturn this.app.make(type);\n\t\t});\n\t\treturn new Promise((resolve) => {\n\t\t\tresolve(instance[method](...args));\n\t\t});\n\t}\n\tstatic isClass(C) {\n\t\treturn typeof C === \"function\" && C.prototype !== void 0 && Object.toString.call(C).substring(0, 5) === \"class\";\n\t}\n};\n\n//#endregion\n//#region src/Registerer.ts\nvar Registerer = class Registerer {\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tstatic register(app) {\n\t\tnew Registerer(app).bootRegister();\n\t}\n\tbootRegister() {\n\t\tglobalThis.dd = dd;\n\t\tglobalThis.dump = dump;\n\t\tglobalThis.app_path = (path$1) => this.appPath(path$1);\n\t\tglobalThis.base_path = (path$1) => this.basePath(path$1);\n\t\tglobalThis.public_path = (path$1) => this.publicPath(path$1);\n\t\tglobalThis.storage_path = (path$1) => this.storagePath(path$1);\n\t\tglobalThis.database_path = (path$1) => this.databasePath(path$1);\n\t}\n\tappPath(path$1) {\n\t\treturn this.app.getPath(\"base\", path.join(`/${process.env.DIST_DIR ?? \"src\"}/`.replace(/([^:]\\/)\\/+/g, \"$1\"), \"app\", path$1 ?? \"\"));\n\t}\n\tbasePath(path$1) {\n\t\treturn this.app.getPath(\"base\", path$1);\n\t}\n\tpublicPath(path$1) {\n\t\treturn this.app.getPath(\"public\", path$1);\n\t}\n\tstoragePath(path$1) {\n\t\treturn this.app.getPath(\"base\", path.join(\"storage\", path$1 ?? \"\"));\n\t}\n\tdatabasePath(path$1) {\n\t\treturn this.app.getPath(\"database\", path$1);\n\t}\n};\n\n//#endregion\n//#region src/Application.ts\nvar Application = class Application extends Container {\n\tpaths = new PathLoader();\n\ttries = 0;\n\tbooted = false;\n\tversions = {\n\t\tapp: \"0.0.0\",\n\t\tts: \"0.0.0\"\n\t};\n\tstatic versions = {\n\t\tapp: \"0.0.0\",\n\t\tts: \"0.0.0\"\n\t};\n\tbasePath;\n\tproviders = [];\n\texternalProviders = [];\n\t/**\n\t* List of registered console commands\n\t*/\n\tregisteredCommands = [];\n\tconstructor(basePath) {\n\t\tsuper();\n\t\tdotenvExpand.expand(dotenv.config({ quiet: true }));\n\t\tthis.basePath = basePath;\n\t\tthis.setPath(\"base\", basePath);\n\t\tthis.loadOptions();\n\t\tthis.registerBaseBindings();\n\t\tRegisterer.register(this);\n\t}\n\t/**\n\t* Register core bindings into the container\n\t*/\n\tregisterBaseBindings() {\n\t\tthis.bind(Application, () => this);\n\t\tthis.bind(\"path.base\", () => this.basePath);\n\t\tthis.bind(\"load.paths\", () => this.paths);\n\t}\n\t/**\n\t* Dynamically register all configured providers\n\t*/\n\tasync registerConfiguredProviders() {\n\t\tconst providers = await this.getAllProviders();\n\t\tfor (const ProviderClass of providers) {\n\t\t\tif (!ProviderClass) continue;\n\t\t\tconst provider = new ProviderClass(this);\n\t\t\tawait this.register(provider);\n\t\t}\n\t}\n\tasync loadOptions() {\n\t\ttry {\n\t\t\tconst corePath = FileSystem.findModulePkg(\"@h3ravel/core\", process.cwd()) ?? \"\";\n\t\t\tconst app = JSON.parse(await readFile(path.join(process.cwd(), \"/package.json\"), { encoding: \"utf8\" }));\n\t\t\tconst core = JSON.parse(await readFile(path.join(corePath, \"package.json\"), { encoding: \"utf8\" }));\n\t\t\tif (core) {\n\t\t\t\tthis.versions.app = semver.minVersion(core.version)?.version ?? this.versions.app;\n\t\t\t\tApplication.versions.app = this.versions.app;\n\t\t\t}\n\t\t\tif (app && app.devDependencies) {\n\t\t\t\tthis.versions.ts = semver.minVersion(app.devDependencies.typescript)?.version ?? this.versions.ts;\n\t\t\t\tApplication.versions.ts = this.versions.ts;\n\t\t\t}\n\t\t\tif (app && app.dependencies) {\n\t\t\t\tconst versions = Object.fromEntries(Object.entries(app.dependencies).filter(([e]) => e.includes(\"@h3ravel\")).map(([name, ver]) => [afterLast(name, \"/\"), semver.minVersion(ver.includes(\"work\") ? this.versions.app : ver)?.version]));\n\t\t\t\tObject.assign(this.versions, versions);\n\t\t\t\tObject.assign(Application.versions, versions);\n\t\t\t}\n\t\t} catch {}\n\t}\n\t/**\n\t* Get all registered providers\n\t*/\n\tgetRegisteredProviders() {\n\t\treturn this.providers;\n\t}\n\t/**\n\t* Load default and optional providers dynamically\n\t* \n\t* Auto-Registration Behavior\n\t* \n\t* Minimal App: Loads only core, config, http, router by default.\n\t* Full-Stack App: Installs database, mail, queue, cache → they self-register via their providers.\n\t*/\n\tasync getConfiguredProviders() {\n\t\treturn [(await import(\"./index.js\")).CoreServiceProvider, (await import(\"./index.js\")).ViewServiceProvider];\n\t}\n\tasync getAllProviders() {\n\t\tconst allProviders = [...await this.getConfiguredProviders(), ...this.externalProviders];\n\t\t/**\n\t\t* Deduplicate by class reference\n\t\t*/\n\t\tconst uniqueProviders = Array.from(new Set(allProviders));\n\t\treturn this.sortProviders(uniqueProviders);\n\t}\n\tsortProviders(providers) {\n\t\tconst priorityMap = /* @__PURE__ */ new Map();\n\t\t/**\n\t\t* Base priority (default 0)\n\t\t*/\n\t\tproviders.forEach((Provider) => {\n\t\t\tpriorityMap.set(Provider.name, Provider.priority ?? 0);\n\t\t});\n\t\t/**\n\t\t* Handle before/after adjustments\n\t\t*/\n\t\tproviders.forEach((Provider) => {\n\t\t\tconst order = Provider.order;\n\t\t\tif (!order) return;\n\t\t\tconst [direction, target] = order.split(\":\");\n\t\t\tconst targetPriority = priorityMap.get(target) ?? 0;\n\t\t\tif (direction === \"before\") priorityMap.set(Provider.name, targetPriority - 1);\n\t\t\telse if (direction === \"after\") priorityMap.set(Provider.name, targetPriority + 1);\n\t\t});\n\t\t/**\n\t\t* Service providers sorted based on thier name and priority\n\t\t*/\n\t\tconst sorted = providers.sort((A, B) => (priorityMap.get(B.name) ?? 0) - (priorityMap.get(A.name) ?? 0));\n\t\t/**\n\t\t* If debug is enabled, let's show the loaded service provider info\n\t\t*/\n\t\tif (process.env.APP_DEBUG === \"true\" && process.env.EXTENDED_DEBUG !== \"false\" && !sorted.some((e) => e.console)) {\n\t\t\tconsole.table(sorted.map((P) => ({\n\t\t\t\tProvider: P.name,\n\t\t\t\tPriority: priorityMap.get(P.name),\n\t\t\t\tOrder: P.order || \"N/A\"\n\t\t\t})));\n\t\t\tconsole.info(`Set ${chalk.bgCyan(\" APP_DEBUG = false \")} in your .env file to hide this information`, \"\\n\");\n\t\t}\n\t\treturn sorted;\n\t}\n\tregisterProviders(providers) {\n\t\tthis.externalProviders.push(...providers);\n\t}\n\t/**\n\t* Register a provider\n\t*/\n\tasync register(provider) {\n\t\tawait new ContainerResolver(this).resolveMethodParams(provider, \"register\", this);\n\t\tif (provider.registeredCommands && provider.registeredCommands.length > 0) this.registeredCommands.push(...provider.registeredCommands);\n\t\tthis.providers.push(provider);\n\t}\n\t/**\n\t* checks if the application is running in CLI\n\t*/\n\trunningInConsole() {\n\t\treturn typeof process !== \"undefined\" && !!process.stdout && !!process.stdin;\n\t}\n\tgetRuntimeEnv() {\n\t\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") return \"browser\";\n\t\tif (typeof process !== \"undefined\" && process.versions?.node) return \"node\";\n\t\treturn \"unknown\";\n\t}\n\t/**\n\t* Boot all service providers after registration\n\t*/\n\tasync boot() {\n\t\tif (this.booted) return;\n\t\tfor (const provider of this.providers) if (provider.boot) if (Container.hasAnyDecorator(provider.boot))\n /**\n\t\t* If the service provider is decorated use the IoC container\n\t\t*/\n\t\tawait this.make(provider.boot);\n\t\telse\n /**\n\t\t* Otherwise instantiate manually so that we can at least\n\t\t* pass the app instance\n\t\t*/\n\t\tawait provider.boot(this);\n\t\tthis.booted = true;\n\t}\n\t/**\n\t* Fire up the developement server using the user provided arguments\n\t* \n\t* Port will be auto assigned if provided one is not available\n\t* \n\t* @param h3App The current H3 app instance\n\t* @param preferedPort If provided, this will overide the port set in the evironment\n\t*/\n\tasync fire(h3App, preferedPort) {\n\t\tconst serve = this.make(\"http.serve\");\n\t\tconst port = preferedPort ?? env(\"PORT\", 3e3);\n\t\tconst tries = env(\"RETRIES\", 1);\n\t\tconst hostname = env(\"HOSTNAME\", \"localhost\");\n\t\ttry {\n\t\t\tconst realPort = await detect(port);\n\t\t\tif (port == realPort) {\n\t\t\t\tconst server = serve(h3App, {\n\t\t\t\t\tport,\n\t\t\t\t\thostname,\n\t\t\t\t\tsilent: true\n\t\t\t\t});\n\t\t\t\tLogger.parse([[\"🚀 H3ravel running at:\", \"green\"], [`${server.options.protocol ?? \"http\"}://${server.options.hostname}:${server.options.port}`, \"cyan\"]]);\n\t\t\t} else if (this.tries <= tries) {\n\t\t\t\tawait this.fire(h3App, realPort);\n\t\t\t\tthis.tries++;\n\t\t\t} else Logger.parse([[\"ERROR:\", \"bgRed\"], [\"No free port available\", \"red\"]]);\n\t\t} catch (e) {\n\t\t\tLogger.parse([\n\t\t\t\t[\"An error occured\", \"bgRed\"],\n\t\t\t\t[e.message, \"red\"],\n\t\t\t\t[e.stack, \"red\"]\n\t\t\t], \"\\n\");\n\t\t}\n\t}\n\t/**\n\t* Attempt to dynamically import an optional module\n\t*/\n\tasync safeImport(moduleName) {\n\t\ttry {\n\t\t\tconst mod = await import(moduleName);\n\t\t\treturn mod.default ?? mod ?? {};\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\t/**\n\t* Get the base path of the app\n\t* \n\t* @returns \n\t*/\n\tgetBasePath() {\n\t\treturn this.basePath;\n\t}\n\t/**\n\t* Dynamically retrieves a path property from the class.\n\t* Any property ending with \"Path\" is accessible automatically.\n\t*\n\t* @param name - The base name of the path property\n\t* @returns \n\t*/\n\tgetPath(name, suffix) {\n\t\treturn path.join(this.paths.getPath(name, this.basePath), suffix ?? \"\");\n\t}\n\t/**\n\t* Programatically set the paths.\n\t*\n\t* @param name - The base name of the path property\n\t* @param path - The new path\n\t* @returns \n\t*/\n\tsetPath(name, path$1) {\n\t\treturn this.paths.setPath(name, path$1, this.basePath);\n\t}\n\t/**\n\t* Returns the installed version of the system core and typescript.\n\t*\n\t* @returns \n\t*/\n\tgetVersion(key) {\n\t\treturn this.versions[key]?.replaceAll(/\\^|~/g, \"\");\n\t}\n\t/**\n\t* Returns the installed version of the system core and typescript.\n\t*\n\t* @returns \n\t*/\n\tstatic getVersion(key) {\n\t\treturn this.versions[key]?.replaceAll(/\\^|~/g, \"\");\n\t}\n};\n\n//#endregion\n//#region src/Console/ConsoleCommand.ts\nvar ConsoleCommand = class {\n\tconstructor(app, kernel) {\n\t\tthis.app = app;\n\t\tthis.kernel = kernel;\n\t}\n\t/**\n\t* The underlying commander instance.\n\t*\n\t* @var Command\n\t*/\n\tprogram;\n\t/**\n\t* The name and signature of the console command.\n\t*\n\t* @var string\n\t*/\n\tsignature;\n\t/**\n\t* A dictionary of signatures or what not.\n\t*\n\t* @var object\n\t*/\n\tdictionary = {};\n\t/**\n\t* The console command description.\n\t*\n\t* @var string\n\t*/\n\tdescription;\n\t/**\n\t* The console command input.\n\t*\n\t* @var object\n\t*/\n\tinput = {\n\t\toptions: {},\n\t\targuments: {}\n\t};\n\t/**\n\t* Execute the console command.\n\t*/\n\tasync handle(..._args) {}\n\tsetApplication(app) {\n\t\tthis.app = app;\n\t}\n\tsetInput(options, args, regArgs, dictionary, program) {\n\t\tthis.program = program;\n\t\tthis.dictionary = dictionary;\n\t\tthis.input.options = options;\n\t\tthis.input.arguments = regArgs.map((e, i) => ({ [e.name()]: args[i] })).reduce((e, x) => Object.assign(e, x), {});\n\t\tthis.loadBaseFlags();\n\t}\n\tgetSignature() {\n\t\treturn this.signature;\n\t}\n\tgetDescription() {\n\t\treturn this.description;\n\t}\n\toption(key, def) {\n\t\treturn this.input.options[key] ?? def;\n\t}\n\toptions(key) {\n\t\tif (key) return this.input.options[key];\n\t\treturn this.input.options;\n\t}\n\targument(key, def) {\n\t\treturn this.input.arguments[key] ?? def;\n\t}\n\targuments() {\n\t\treturn this.input.arguments;\n\t}\n\tloadBaseFlags() {\n\t\tthis.input.options.lock = this.program.getOptionValue(\"lock\") ?? false;\n\t\tthis.input.options.quiet = this.program.getOptionValue(\"quiet\") ?? false;\n\t\tthis.input.options.silent = this.program.getOptionValue(\"silent\") ?? false;\n\t\tthis.input.options.verbose = this.program.getOptionValue(\"verbose\") ?? 0;\n\t}\n};\n\n//#endregion\n//#region src/Console/ConsoleKernel.ts\nvar ConsoleKernel = class {\n\tcwd;\n\toutput = typeof Logger;\n\tbasePath = \"\";\n\tmodulePath;\n\tconsolePath;\n\tmodulePackage;\n\tconsolePackage;\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tasync ensureDirectoryExists(dir) {\n\t\tawait mkdir(dir, { recursive: true });\n\t}\n};\n\n//#endregion\n//#region src/Controller.ts\n/**\n* Base controller class\n*/\nvar Controller = class {\n\tapp;\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\tshow(..._ctx) {}\n\tindex(..._ctx) {}\n\tstore(..._ctx) {}\n\tupdate(..._ctx) {}\n\tdestroy(..._ctx) {}\n};\n\n//#endregion\n//#region src/Di/Inject.ts\nfunction Inject(...dependencies) {\n\treturn function(target) {\n\t\ttarget.__inject__ = dependencies;\n\t};\n}\n/**\n* Allows binding dependencies to both class and class methods \n* \n* @returns \n*/\nfunction Injectable() {\n\treturn (...args) => {\n\t\tif (args.length === 1) args[0];\n\t\tif (args.length === 3) {\n\t\t\targs[0];\n\t\t\targs[1];\n\t\t\targs[2];\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/Http/Kernel.ts\n/**\n* Kernel class handles middleware execution and response transformations.\n* It acts as the core middleware pipeline for HTTP requests.\n*/\nvar Kernel = class {\n\t/**\n\t* @param context - A factory function that converts an H3Event into an HttpContext.\n\t* @param middleware - An array of middleware classes that will be executed in sequence.\n\t*/\n\tconstructor(context, middleware = []) {\n\t\tthis.context = context;\n\t\tthis.middleware = middleware;\n\t}\n\t/**\n\t* Handles an incoming request and passes it through middleware before invoking the next handler.\n\t* \n\t* @param event - The raw H3 event object.\n\t* @param next - A callback function that represents the next layer (usually the controller or final handler).\n\t* @returns A promise resolving to the result of the request pipeline.\n\t*/\n\tasync handle(event, next) {\n\t\t/**\n\t\t* Convert the raw event into a standardized HttpContext\n\t\t*/\n\t\tconst ctx = this.context(event);\n\t\tconst { app } = ctx.request;\n\t\t/**\n\t\t* Initialize the view handler method\n\t\t* \n\t\t* @param template \n\t\t* @param params \n\t\t* @returns \n\t\t*/\n\t\tconst view = async (template, params) => {\n\t\t\tconst edge = app.make(\"edge\");\n\t\t\treturn ctx.response.html(await edge.render(template, params));\n\t\t};\n\t\t/**\n\t\t* Bind the view method to the global variable space\n\t\t*/\n\t\tglobalThis.view = view;\n\t\t/**\n\t\t* Dynamically bind the view renderer to the service container.\n\t\t* This allows any part of the request lifecycle to render templates using Edge.\n\t\t*/\n\t\tapp.bind(\"view\", () => view);\n\t\t/**\n\t\t* Run middleware stack and obtain result\n\t\t*/\n\t\tconst result = await this.runMiddleware(ctx, () => next(ctx));\n\t\t/**\n\t\t* If a plain object is returned from a controller or middleware,\n\t\t* automatically set the JSON Content-Type header for the response.\n\t\t*/\n\t\tif (result !== void 0 && this.isPlainObject(result)) event.res.headers.set(\"Content-Type\", \"application/json; charset=UTF-8\");\n\t\treturn result;\n\t}\n\t/**\n\t* Sequentially runs middleware in the order they were registered.\n\t* \n\t* @param context - The standardized HttpContext.\n\t* @param next - Callback to execute when middleware completes.\n\t* @returns A promise resolving to the final handler's result.\n\t*/\n\tasync runMiddleware(context, next) {\n\t\tlet index = -1;\n\t\tconst runner = async (i) => {\n\t\t\tif (i <= index) throw new Error(\"next() called multiple times\");\n\t\t\tindex = i;\n\t\t\tconst middleware = this.middleware[i];\n\t\t\tif (middleware)\n /**\n\t\t\t* Execute the current middleware and proceed to the next one\n\t\t\t*/\n\t\t\treturn middleware.handle(context, () => runner(i + 1));\n\t\t\telse\n /**\n\t\t\t* If no more middleware, call the final handler\n\t\t\t*/\n\t\t\treturn next(context);\n\t\t};\n\t\treturn runner(0);\n\t}\n\t/**\n\t* Utility function to determine if a value is a plain object or array.\n\t* \n\t* @param value - The value to check.\n\t* @returns True if the value is a plain object or array, otherwise false.\n\t*/\n\tisPlainObject(value) {\n\t\treturn typeof value === \"object\" && value !== null && (value.constructor === Object || value.constructor === Array);\n\t}\n};\n\n//#endregion\n//#region src/ServiceProvider.ts\nvar ServiceProvider = class {\n\t/**\n\t* Sort order\n\t*/\n\tstatic order;\n\t/**\n\t* Sort priority\n\t*/\n\tstatic priority = 0;\n\t/**\n\t* Indicate that this service provider only runs in console\n\t*/\n\tstatic console = false;\n\t/**\n\t* List of registered console commands\n\t*/\n\tregisteredCommands;\n\tapp;\n\tconstructor(app) {\n\t\tthis.app = app;\n\t}\n\t/**\n\t* An array of console commands to register.\n\t*/\n\tcommands(commands) {\n\t\tthis.registeredCommands = commands;\n\t}\n};\n\n//#endregion\n//#region src/Providers/CoreServiceProvider.ts\n/**\n* Bootstraps core services and bindings.\n* \n* Bind essential services to the container (logger, config repository).\n* Register app-level singletons.\n* Set up exception handling.\n* \n* Auto-Registered\n*/\nvar CoreServiceProvider = class extends ServiceProvider {\n\tstatic priority = 999;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Providers/ViewServiceProvider.ts\nvar ViewServiceProvider = class extends ServiceProvider {\n\tstatic priority = 995;\n\tregister() {\n\t\tconst config = this.app.make(\"config\");\n\t\tconst edge = Edge.create({ cache: process.env.NODE_ENV === \"production\" });\n\t\tedge.mount(this.app.getPath(\"views\"));\n\t\tedge.global(\"asset\", this.app.make(\"asset\"));\n\t\tedge.global(\"config\", config.get);\n\t\tedge.global(\"app\", this.app);\n\t\tthis.app.bind(\"edge\", () => edge);\n\t}\n};\n\n//#endregion\nexport { Application, ConsoleCommand, ConsoleKernel, Container, ContainerResolver, Controller, CoreServiceProvider, Inject, Injectable, Kernel, Registerer, ServiceProvider, ViewServiceProvider };\n//# sourceMappingURL=index.js.map","import { Application, Registerer } from '@h3ravel/core'\nimport type { DotNestedKeys, DotNestedValue } from '@h3ravel/shared'\nimport { safeDot, setNested } from '@h3ravel/support'\n\nimport path from 'node:path'\nimport { readdir } from 'node:fs/promises'\n\nexport class ConfigRepository {\n private loaded: boolean = false\n private configs: Record<string, Record<string, any>> = {}\n\n constructor(protected app: Application) { }\n\n // get<X extends Record<string, any>> (): X\n // get<X extends Record<string, any>, T extends Extract<keyof X, string>> (key: T): X[T]\n\n /**\n * Get the defined configurations\n */\n get<X extends Record<string, any>> (): X\n get<X extends Record<string, any>, K extends DotNestedKeys<X>> (key: K, def?: any): DotNestedValue<X, K>\n get<X extends Record<string, any>, K extends DotNestedKeys<X>> (key?: K, def?: any): any {\n return safeDot(this.configs, key) ?? def\n }\n\n /**\n * Modify the defined configurations\n */\n set<T extends string> (key: T, value: any): void {\n setNested(this.configs, key, value)\n }\n\n async load () {\n if (!this.loaded) {\n\n const configPath = this.app.getPath('config')\n\n globalThis.env = this.app.make('env')\n Registerer.register(this.app)\n\n const files = (await readdir(configPath)).filter((e) => {\n return !e.includes('.d.ts') && !e.includes('.d.cts') && !e.includes('.map')\n })\n\n for (let i = 0; i < files.length; i++) {\n const configModule = await import(path.join(configPath, files[i]))\n const name = files[i].replaceAll(/\\.ts|\\.js/g, '')\n if (typeof configModule.default === 'function') {\n this.configs[name] = configModule.default(this.app)\n }\n }\n\n this.loaded = true\n }\n return this\n }\n}\n","import type { DotNestedKeys, DotNestedValue } from '@h3ravel/shared'\n\nimport { Application } from '@h3ravel/core'\nimport { EnvParser } from '@h3ravel/shared'\nimport { safeDot } from '@h3ravel/support'\n\nexport class EnvLoader {\n constructor(protected _app: Application) { }\n\n /**\n * Get the defined environment vars\n */\n get<X extends NodeJS.ProcessEnv> (): X\n get<X extends NodeJS.ProcessEnv, K extends DotNestedKeys<X>> (key: K, def?: any): DotNestedValue<X, K>\n get<X extends NodeJS.ProcessEnv, K extends DotNestedKeys<X>> (key?: K, def?: any): any {\n return safeDot(EnvParser.parse(process.env), key) ?? def\n }\n}\n","export class Helpers {\n}\n","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { ConfigRepository, EnvLoader } from '..'\n\nimport { Bindings } from '@h3ravel/shared'\nimport { ServiceProvider } from '@h3ravel/core'\n\n/**\n * Loads configuration and environment files.\n * \n * Load .env and merge with config files.\n * Bind ConfigRepository to the container.\n * \n * Auto-Registered\n */\nexport class ConfigServiceProvider extends ServiceProvider {\n public static priority = 998\n // public static order = 'before:DatabaseServiceProvider';\n\n async register () {\n /**\n * Create singleton to load env\n */\n this.app.singleton('env', () => {\n const env = new EnvLoader(this.app).get\n globalThis.env = env\n return env\n })\n\n /**\n * Initialize the configuration through the repository\n */\n const repo = new ConfigRepository(this.app)\n await repo.load()\n\n /**\n * Create singleton to load configurations\n */\n this.app.singleton('config', () => {\n const config = {\n get: (key, def) => repo.get(key as any, def),\n set: repo.set\n } as Bindings['config']\n\n globalThis.config = ((key: string | Record<string, any>, def: any) => {\n if (!key || typeof key === 'string') {\n return config.get(key, def)\n }\n\n Object.entries(key).forEach(([key, value]) => {\n config.set(key, value)\n })\n }) as never\n\n return config\n })\n\n this.app.make('http.app').use(e => {\n repo.set('app.url', e.url.origin)\n })\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"mappings":"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"}
|