@dooboostore/simple-web-component 1.0.16 → 1.0.18
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/README.md +109 -48
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/appendChild.js +48 -0
- package/dist/cjs/decorators/appendChild.js.map +7 -0
- package/dist/cjs/decorators/elementDefine.js +216 -67
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/index.js +2 -1
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/{innerHtml.js → onConnectedInnerHtml.js} +8 -8
- package/dist/cjs/decorators/onConnectedInnerHtml.js.map +7 -0
- package/dist/cjs/decorators/query.js +38 -0
- package/dist/cjs/decorators/query.js.map +2 -2
- package/dist/cjs/decorators/queryAll.js +32 -0
- package/dist/cjs/decorators/queryAll.js.map +2 -2
- package/dist/cjs/decorators/replaceChildren.js +53 -0
- package/dist/cjs/decorators/replaceChildren.js.map +7 -0
- package/dist/cjs/elements/SwcAppEngine.js +2 -1
- package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
- package/dist/cjs/elements/SwcAsync.js +188 -0
- package/dist/cjs/elements/SwcAsync.js.map +7 -0
- package/dist/cjs/elements/SwcChoose.js +155 -0
- package/dist/cjs/elements/SwcChoose.js.map +7 -0
- package/dist/cjs/elements/SwcIf.js +167 -0
- package/dist/cjs/elements/SwcIf.js.map +7 -0
- package/dist/cjs/elements/SwcLoop.js +246 -0
- package/dist/cjs/elements/SwcLoop.js.map +7 -0
- package/dist/cjs/elements/SwcSubTemplates.js +65 -0
- package/dist/cjs/elements/SwcSubTemplates.js.map +7 -0
- package/dist/cjs/elements/index.js +7 -0
- package/dist/cjs/elements/index.js.map +2 -2
- package/dist/cjs/index.js +12 -2
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/Utils.js +74 -37
- package/dist/cjs/utils/Utils.js.map +3 -3
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/appendChild.js +29 -0
- package/dist/esm/decorators/appendChild.js.map +7 -0
- package/dist/esm/decorators/elementDefine.js +216 -67
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/decorators/index.js +2 -1
- package/dist/esm/decorators/index.js.map +2 -2
- package/dist/esm/decorators/{innerHtml.js → onConnectedInnerHtml.js} +5 -5
- package/dist/esm/decorators/onConnectedInnerHtml.js.map +7 -0
- package/dist/esm/decorators/query.js +38 -0
- package/dist/esm/decorators/query.js.map +2 -2
- package/dist/esm/decorators/queryAll.js +32 -0
- package/dist/esm/decorators/queryAll.js.map +2 -2
- package/dist/esm/decorators/replaceChildren.js +34 -0
- package/dist/esm/decorators/replaceChildren.js.map +7 -0
- package/dist/esm/elements/SwcAppEngine.js +2 -1
- package/dist/esm/elements/SwcAppEngine.js.map +2 -2
- package/dist/esm/elements/SwcAsync.js +169 -0
- package/dist/esm/elements/SwcAsync.js.map +7 -0
- package/dist/esm/elements/SwcChoose.js +136 -0
- package/dist/esm/elements/SwcChoose.js.map +7 -0
- package/dist/esm/elements/SwcIf.js +148 -0
- package/dist/esm/elements/SwcIf.js.map +7 -0
- package/dist/esm/elements/SwcLoop.js +227 -0
- package/dist/esm/elements/SwcLoop.js.map +7 -0
- package/dist/esm/elements/SwcSubTemplates.js +46 -0
- package/dist/esm/elements/SwcSubTemplates.js.map +7 -0
- package/dist/esm/elements/index.js +7 -0
- package/dist/esm/elements/index.js.map +2 -2
- package/dist/esm/index.js +8 -2
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/Utils.js +74 -37
- package/dist/esm/utils/Utils.js.map +3 -3
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1226 -149
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/decorators/addEventListener.d.ts +1 -0
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/appendChild.d.ts +17 -0
- package/dist/types/decorators/appendChild.d.ts.map +1 -0
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/index.d.ts +2 -1
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/onConnectedInnerHtml.d.ts +15 -0
- package/dist/types/decorators/onConnectedInnerHtml.d.ts.map +1 -0
- package/dist/types/decorators/query.d.ts +0 -2
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/queryAll.d.ts +0 -2
- package/dist/types/decorators/queryAll.d.ts.map +1 -1
- package/dist/types/decorators/replaceChildren.d.ts +9 -0
- package/dist/types/decorators/replaceChildren.d.ts.map +1 -0
- package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
- package/dist/types/elements/SwcAsync.d.ts +16 -0
- package/dist/types/elements/SwcAsync.d.ts.map +1 -0
- package/dist/types/elements/SwcChoose.d.ts +13 -0
- package/dist/types/elements/SwcChoose.d.ts.map +1 -0
- package/dist/types/elements/SwcIf.d.ts +15 -0
- package/dist/types/elements/SwcIf.d.ts.map +1 -0
- package/dist/types/elements/SwcLoop.d.ts +20 -0
- package/dist/types/elements/SwcLoop.d.ts.map +1 -0
- package/dist/types/elements/SwcSubTemplates.d.ts +13 -0
- package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +7 -0
- package/dist/types/elements/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +8 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/Utils.d.ts +16 -10
- package/dist/types/utils/Utils.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1226 -149
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +10 -3
- package/src/decorators/addEventListener.ts +1 -0
- package/src/decorators/appendChild.ts +42 -0
- package/src/decorators/elementDefine.ts +225 -71
- package/src/decorators/index.ts +2 -1
- package/src/decorators/{innerHtml.ts → onConnectedInnerHtml.ts} +7 -6
- package/src/decorators/query.ts +32 -2
- package/src/decorators/queryAll.ts +32 -2
- package/src/decorators/replaceChildren.ts +35 -0
- package/src/elements/SwcAppEngine.ts +2 -1
- package/src/elements/SwcAsync.ts +163 -0
- package/src/elements/SwcChoose.ts +127 -0
- package/src/elements/SwcIf.ts +134 -0
- package/src/elements/SwcLoop.ts +215 -0
- package/src/elements/SwcSubTemplates.ts +19 -0
- package/src/elements/index.ts +8 -3
- package/src/index.ts +5 -2
- package/src/types.ts +9 -1
- package/src/utils/Utils.ts +86 -36
- package/dist/cjs/decorators/innerHtml.js.map +0 -7
- package/dist/esm/decorators/innerHtml.js.map +0 -7
- package/dist/types/decorators/innerHtml.d.ts +0 -12
- package/dist/types/decorators/innerHtml.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../src/bundle-entry.ts", "../../src/index.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../src/decorators/
|
|
4
|
-
"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 \u00A7 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 'reflect-metadata';\nexport * from './index';\n", "import 'reflect-metadata';\n\n// Decorators\nexport * from './decorators/elementDefine';\nexport * from './decorators/setAttribute';\nexport * from './decorators/changedAttribute';\nexport * from './decorators/innerHtml';\nexport * from './decorators/emitCustomEvent';\nexport * from './decorators/lifecycles';\nexport * from './decorators/query';\nexport * from './decorators/queryAll';\nexport * from './decorators/addEventListener';\n\n// Types\nexport * from './types';\n\n// Apps (Customized Built-in Elements)\nexport * from './elements/is';\n\n// Utilities\nexport * from './utils/Utils';\n", "import { ConstructorType } from '../types';\n\nexport const ReflectUtils = {\n getParameterTypes: (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n },\n\n getReturnType: (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n },\n\n getType: (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n },\n\n getMetadata: <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n },\n\n findMetadata: <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return undefined;\n },\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n findAllMetadata: <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return results;\n },\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n findAllMetadataFlatten: <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = ReflectUtils.findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n },\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n findAllMapMetadata: <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = ReflectUtils.findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n },\n\n getMetadataKeys: (target: any) => {\n return Reflect.getMetadataKeys(target);\n },\n\n getOwnMetadata: (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n },\n\n getMetadatas: (target: any) => {\n return ReflectUtils.getMetadataKeys(target).map(it => ReflectUtils.getMetadata(it, target));\n },\n\n metadata: (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n },\n\n defineMetadata: (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n }\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface InnerHtmlOptions {\n useShadow?: boolean;\n}\n\nexport interface InnerHtmlMetadata {\n propertyKey: string | symbol;\n options: InnerHtmlOptions;\n}\n\nexport const INNER_HTML_METADATA_KEY = Symbol('simple-web-component:inner-html');\n\nexport function innerHtml(options: InnerHtmlOptions): MethodDecorator;\nexport function innerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function innerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {\n const decorator = (options: InnerHtmlOptions, target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getMetadata<InnerHtmlMetadata[]>(INNER_HTML_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n\n if (arg2) {\n // Used as @innerHtml\n return decorator({}, arg1!, arg2);\n }\n\n // Used as @innerHtml(options)\n return (target: Object, propertyKey: string | symbol) => {\n decorator((arg1 as InnerHtmlOptions) || {}, target, propertyKey);\n };\n}\n\nexport const getInnerHtmlMetadataList = (target: any): InnerHtmlMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n delegate?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n selector: string;\n type: string;\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\n/**\n * @addEventListener decorator to bind events to elements.\n * Usage: @addEventListener('.btn', 'click') onClick() { ... }\n * Usage: @addEventListener('', 'scroll', { passive: true }) onScroll() { ... }\n */\nexport function addEventListener(selector: string, type: string, options: AddEventListenerOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n listeners.push({ selector, type, options, propertyKey });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { ON_ATTRIBUTE_CHANGED_METADATA_KEY } from './changedAttribute';\nimport { SET_ATTRIBUTE_METADATA_KEY } from './setAttribute';\n\nexport const ON_BEFORE_CONNECTED_METADATA_KEY = Symbol('simple-web-component:on-before-connected');\nexport const ON_AFTER_CONNECTED_METADATA_KEY = Symbol('simple-web-component:on-after-connected');\nexport const ON_BEFORE_DISCONNECTED_METADATA_KEY = Symbol('simple-web-component:on-before-disconnected');\nexport const ON_AFTER_DISCONNECTED_METADATA_KEY = Symbol('simple-web-component:on-after-disconnected');\nexport const ON_BEFORE_ADOPTED_METADATA_KEY = Symbol('simple-web-component:on-before-adopted');\nexport const ON_AFTER_ADOPTED_METADATA_KEY = Symbol('simple-web-component:on-after-adopted');\nexport const ON_ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:on-add-event-listener');\n\nexport const ATTRIBUTE_CHANGED_WILDCARD = '*';\n\nfunction createLifecycleDecorator(metadataKey: symbol): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(metadataKey, constructor) as (string | symbol)[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(metadataKey, list, constructor);\n }\n list.push(propertyKey);\n };\n}\n\nexport const onBeforeConnected = createLifecycleDecorator(ON_BEFORE_CONNECTED_METADATA_KEY);\nexport const onAfterConnected = createLifecycleDecorator(ON_AFTER_CONNECTED_METADATA_KEY);\nexport const onConnected = onAfterConnected;\n\nexport const onBeforeDisconnected = createLifecycleDecorator(ON_BEFORE_DISCONNECTED_METADATA_KEY);\nexport const onAfterDisconnected = createLifecycleDecorator(ON_AFTER_DISCONNECTED_METADATA_KEY);\nexport const onDisconnected = onAfterDisconnected;\n\nexport const onBeforeAdopted = createLifecycleDecorator(ON_BEFORE_ADOPTED_METADATA_KEY);\nexport const onAfterAdopted = createLifecycleDecorator(ON_AFTER_ADOPTED_METADATA_KEY);\nexport const onAdopted = onAfterAdopted;\n\nexport const onAddEventListener = createLifecycleDecorator(ON_ADD_EVENT_LISTENER_METADATA_KEY);\n\n/**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uC21C\uD68C\uD558\uBA70 \uBAA8\uB4E0 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uBA54\uC11C\uB4DC\uB97C \uC218\uC9D1\uD569\uB2C8\uB2E4.\n */\nexport const findAllLifecycleMetadata = <T = (string | symbol)[]>(target: any, metadataKey: symbol): T | undefined => {\n const results = ReflectUtils.findAllMetadataFlatten(metadataKey, target);\n return results.length > 0 ? (results as unknown as T) : undefined;\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface EmitCustomEventOptions {\n type: string;\n attributeName?: string;\n bubbles?: boolean;\n composed?: boolean;\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n options: EmitCustomEventOptions;\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol('simple-web-component:emit-custom-event');\n\nexport function emitCustomEvent(typeOrOptions: string | EmitCustomEventOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n const options: EmitCustomEventOptions = typeof typeOrOptions === 'string' ? { type: typeOrOptions } : typeOrOptions;\n\n if (!options.attributeName) {\n options.attributeName = `swc-on-${options.type}`;\n }\n if (options.bubbles === undefined) options.bubbles = true;\n if (options.composed === undefined) options.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol('simple-web-component:on-attribute-changed');\n\nexport function changedAttribute(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as Map<string, (string | symbol)[]>;\n if (!meta) {\n meta = new Map<string, (string | symbol)[]>();\n ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);\n }\n\n const name = attributeName || String(propertyKey);\n let methods = meta.get(name);\n if (!methods) {\n methods = [];\n meta.set(name, methods);\n }\n if (!methods.includes(propertyKey)) methods.push(propertyKey);\n };\n}\n\nexport const getChangedAttributeMetadata = (target: any): Map<string, (string | symbol)[]> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n\nexport const findAllAttributeChangedMetadata = (target: any): Map<string, (string | symbol)[]> => {\n return ReflectUtils.findAllMapMetadata<string, string | symbol>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, target);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const SET_ATTRIBUTE_METADATA_KEY = Symbol('simple-web-component:set-attribute');\n\nexport function setAttribute(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string, string | symbol>;\n if (!meta) {\n meta = new Map<string, string | symbol>();\n ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, meta, constructor);\n }\n meta.set(attributeName || String(propertyKey), propertyKey);\n };\n}\n\nexport const getSetAttributeMetadata = (target: any): Map<string, string | symbol> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor);\n};\n\nexport const findAllSetAttributeMetadata = (target: any): Map<string, string | symbol> => {\n const result = new Map<string, string | symbol>();\n const maps = ReflectUtils.findAllMetadata<any>(SET_ATTRIBUTE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { SwcAppInterface, HostSet } from '../types';\nimport { getElementConfig } from '../decorators/elementDefine';\n\nexport const SWC_NOT_FOUND = Symbol('SWC_NOT_FOUND');\n\nexport class SwcUtils {\n static getValueByPath(obj: any, path: string, rootName: string) {\n if (!obj || !path) return SWC_NOT_FOUND;\n\n const parts = path.split('.');\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) return SWC_NOT_FOUND;\n current = current[part];\n }\n return current;\n }\n\n static findNearestSwcHost(el: HTMLElement | Node): HTMLElement | undefined {\n let current: any = el instanceof Node && !(el instanceof HTMLElement) ? (el as any).host : el;\n current = current?.parentElement || (current?.getRootNode() as any)?.host;\n\n while (current) {\n if (getElementConfig(current)) return current as HTMLElement;\n current = current.parentElement || (current?.getRootNode() as any)?.host;\n }\n return undefined;\n }\n\n /**\n * Returns all SWC ancestors (excluding self) in [root, ..., parent] order.\n */\n static findAllSwcHosts(el: HTMLElement | Node): HTMLElement[] {\n const hosts: HTMLElement[] = [];\n let current = this.findNearestSwcHost(el);\n while (current) {\n hosts.push(current);\n current = this.findNearestSwcHost(current);\n }\n return hosts.reverse();\n }\n\n static getHosts(el: HTMLElement): HTMLElement[] {\n return [...this.findAllSwcHosts(el), el];\n }\n\n static getHost(el: HTMLElement): HTMLElement | undefined {\n return el;\n }\n\n static getAppHosts(el: HTMLElement): SwcAppInterface[] {\n const hosts = this.getHosts(el);\n return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n }\n\n static getAppHost(el: HTMLElement): SwcAppInterface | undefined {\n const appHosts = this.getAppHosts(el);\n const appHostsWithoutSelf = appHosts.filter(h => h !== el);\n // Nearest app host is the last one in [root, ..., parent]\n return appHostsWithoutSelf.length > 0 ? appHostsWithoutSelf[appHostsWithoutSelf.length - 1] : undefined;\n }\n\n static getHostSet(el: HTMLElement): HostSet {\n const ancestors = this.findAllSwcHosts(el); // [root, ..., parent]\n const $host = el;\n const $hosts = [...ancestors, $host]; // [root, ..., parent, self]\n const $parentHost = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;\n const $firstHost = ancestors.length > 0 ? ancestors[0] : null;\n\n const $appHosts = $hosts.filter(h => h.tagName.toLowerCase() === 'swc-app' || h.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n const $appHost = $appHosts.length > 0 ? ($appHosts[$appHosts.length - 1] === el ? ($appHosts.length > 1 ? $appHosts[$appHosts.length - 2] : null) : $appHosts[$appHosts.length - 1]) : null;\n const $firstAppHost = $appHosts.length > 0 ? $appHosts[0] : null;\n\n return {\n $host,\n $parentHost,\n $hosts,\n $firstHost,\n $lastHost: $parentHost,\n $appHost,\n $appHosts,\n $firstAppHost,\n $lastAppHost: $appHost\n };\n }\n}\n", "export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', 'unload', 'hashchange', 'connected'];\n", "import { ConstructorType, MethodKeys } from '@dooboostore/core/types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { ExceptionHandlerSituationType } from '../exception/ExceptionDecorator';\nimport { SimpleApplication } from '../../SimpleApplication';\n\nexport enum InjectSituationType {\n INDEX = 'SIMPLE_BOOT_CORE://Inject/INDEX'\n}\n\nexport type SituationType = string | Symbol | ConstructorType<any> | InjectSituationType | ExceptionHandlerSituationType;\n\nexport class SituationTypeContainer {\n public situationType: SituationType;\n public data: any;\n public index?: number;\n\n constructor({ situationType, data, index }: { situationType: SituationType; data: any; index?: number }) {\n this.situationType = situationType;\n this.data = data;\n this.index = index;\n }\n}\n\nexport class SituationTypeContainers {\n public containers: SituationTypeContainer[] = [];\n\n constructor(containers?: SituationTypeContainer[]) {\n if (containers) {\n this.containers.push(...containers);\n }\n }\n\n public push(...item: SituationTypeContainer[]) {\n this.containers.push(...item);\n }\n\n get length() {\n return this.containers.length;\n }\n\n find(predicate: (value: SituationTypeContainer, index: number, obj: SituationTypeContainer[]) => unknown, thisArg?: any): SituationTypeContainer | undefined {\n return this.containers.find(predicate);\n }\n}\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 \uACF5\uD1B5 \uC635\uC158\ntype InjectOptions = {\n situationType?: SituationType;\n proxy?: ConstructorType<ProxyHandler<any>> | ((caller: { application: SimpleApplication; instance: any }) => ProxyHandler<any>);\n optional?: boolean;\n};\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] 3\uB300 \uC8FC\uC785 \uC804\uB7B5\nexport type InjectBySymbol = {\n symbol: Symbol;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: any }) => any;\n};\n\nexport type InjectByType<T> = {\n type?: ConstructorType<T> | Function;\n scheme?: string;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: T }) => any;\n};\n\nexport type InjectByFactory<T> = {\n factory: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication }) => T;\n};\n\nexport type InjectConfig<T = any> = InjectOptions & (InjectBySymbol | InjectByType<T> | InjectByFactory<T>);\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] Type Guards\nexport const isTargetSymbol = (config: InjectConfig): config is InjectOptions & InjectBySymbol => {\n return 'symbol' in config && config.symbol !== undefined;\n};\n\nexport const isTargetType = (config: InjectConfig): config is InjectOptions & { type: ConstructorType<any> } & InjectByType<any> => {\n return 'type' in config && config.type !== undefined;\n};\n\nexport const isTargetScheme = (config: InjectConfig): config is InjectOptions & { scheme: string } & InjectByType<any> => {\n return 'scheme' in config && config.scheme !== undefined;\n};\n\nexport const isTargetFactory = (config: InjectConfig): config is InjectOptions & InjectByFactory<any> => {\n return 'factory' in config && typeof config.factory === 'function' && !('symbol' in config) && !('type' in config) && !('scheme' in config);\n};\n\nexport const isTargetNone = (config: InjectConfig): boolean => {\n return !('symbol' in config) && !('type' in config) && !('scheme' in config) && !isTargetFactory(config);\n};\n\nexport type SaveInjectConfig = {\n index: number;\n type?: ConstructorType<any>;\n propertyKey?: string | symbol;\n config: InjectConfig;\n};\n\nconst InjectMetadataKey = Symbol('Inject');\nconst injectProcess = (config: InjectConfig, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') {\n const otarget = target;\n target = target.constructor;\n const saves = (Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(otarget, propertyKey)[parameterIndex];\n saves.push({ index: parameterIndex, config: config, propertyKey, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, saves, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') {\n const existingInjectdParameters = (ReflectUtils.getMetadata(InjectMetadataKey, target) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(target)[parameterIndex];\n existingInjectdParameters.push({ index: parameterIndex, config: config, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, existingInjectdParameters, target);\n }\n};\n\nexport function Inject(target: Object, propertyKey: string | symbol | undefined, parameterIndex: number): void;\nexport function Inject<T = any>(config: InjectConfig<T>): ParameterDecorator;\nexport function Inject<T = any>(configOrTarget: Object | InjectConfig<T>, propertyKey?: string | symbol | undefined, parameterIndex?: number): void | ParameterDecorator {\n if (propertyKey && parameterIndex !== undefined) {\n injectProcess({} as any, configOrTarget, propertyKey, parameterIndex);\n } else {\n return (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n injectProcess(configOrTarget as InjectConfig, target, propertyKey, parameterIndex);\n };\n }\n}\n\nexport const getInject = (target: any, propertyKey?: string | symbol): SaveInjectConfig[] => {\n return ReflectUtils.findMetadata(InjectMetadataKey, target, propertyKey) ?? [];\n};\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web/routers/Router';\n\nexport enum InjectSituationType {\n HOST_SET = 'SIMPLE_WEB_COMPONENT://HOSTSET',\n APP_HOST = 'SIMPLE_WEB_COMPONENT://APPHOST',\n APP_HOSTS = 'SIMPLE_WEB_COMPONENT://APPHOSTS',\n HOST = 'SIMPLE_WEB_COMPONENT://HOST',\n PARENT_HOST = 'SIMPLE_WEB_COMPONENT://PARENTHOST',\n HOSTS = 'SIMPLE_WEB_COMPONENT://HOSTS',\n FIRST_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTHOST',\n LAST_HOST = 'SIMPLE_WEB_COMPONENT://LASTHOST',\n FIRST_APP_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTAPPHOST',\n LAST_APP_HOST = 'SIMPLE_WEB_COMPONENT://LASTAPPHOST'\n}\n\nexport type HostSet = {\n $host: HTMLElement; // Current component itself\n $parentHost: HTMLElement | null; // Nearest parent SWC component\n $hosts: HTMLElement[]; // [self, parent, ..., top]\n $firstHost: HTMLElement | null; // Top-most SWC ancestor\n $lastHost: HTMLElement | null; // Same as $parentHost (for backward compatibility or clarity)\n $appHost: SwcAppInterface | null;\n $appHosts: SwcAppInterface[];\n $firstAppHost: SwcAppInterface | null;\n $lastAppHost: SwcAppInterface | null;\n};\n\nexport interface SwcAppInterface extends HTMLElement {\n simpleApplication?: SimpleApplication;\n router?: Router;\n routing(path: string): Promise<void>;\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInnerHtmlMetadataList } from './innerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, ON_ADD_EVENT_LISTENER_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD, findAllLifecycleMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { changedAttribute, findAllAttributeChangedMetadata } from './changedAttribute';\nimport { setAttribute, findAllSetAttributeMetadata } from './setAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationType, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { InjectSituationType, HostSet, SwcAppInterface } from '../types';\n\n// --- Core Interfaces & Types (Integrated) ---\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n window?: Window;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\n// --- Environment Initialization Helper ---\n\nfunction buildEnv(configWindow?: Window) {\n const win: any = configWindow || (typeof window !== 'undefined' ? window : undefined);\n const doc: Document = win?.document;\n\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if (win?.[cls]) builtInTagMap.set(win[cls], tag);\n }\n\n const domHelpers = {\n $d: doc,\n $w: win,\n $q: (sel: string, root?: Element | Document | ShadowRoot) => (root ?? doc).querySelector(sel),\n $qa: (sel: string, root?: Element | Document | ShadowRoot) => Array.from((root ?? doc).querySelectorAll(sel)),\n $qi: (id: string, root?: Document | ShadowRoot) => (root ?? doc).getElementById(id)\n } as const;\n\n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n config.window = win;\n const SWC_DOM_HELPER_KEYS = Object.keys(SWC_DOM_HELPERS) as (keyof typeof SWC_DOM_HELPERS)[];\n const SWC_DOM_HELPER_VALS = () => SWC_DOM_HELPER_KEYS.map(k => (SWC_DOM_HELPERS as any)[k]);\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = constructor;\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n config.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const setAttrMap = findAllSetAttributeMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...attrChangeMap.keys(), ...setAttrMap.keys(), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];\n const innerHtmlList = getInnerHtmlMetadataList(constructor) || [];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _emitHandlers = new Map<string, EventListener>();\n\n private _executeSwcScript(attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n new Function(...argNames, script).apply(this, argValues);\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n }\n\n private async _invokeLifecycleMethod(methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {\n if (typeof (this as any)[methodName] !== 'function') return;\n const app = hostSet.$appHost?.simpleApplication;\n\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSimPromise(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n }\n\n private _bindAttributeEvent(el: HTMLElement, attrName: string, script: string, eventName?: string) {\n if (!eventName) {\n if (!attrName.startsWith('swc-on-')) return;\n eventName = attrName.substring(7);\n }\n if (swcLifecycleAttributes.includes(attrName)) return;\n\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = (event: any) => {\n const hostSet = SwcUtils.getHostSet(el);\n const argNames = Object.keys(hostSet);\n const argValues = Object.values(hostSet);\n new Function('event', '$data', ...argNames, ...SWC_DOM_HELPER_KEYS, script).call(el, event, (event as CustomEvent).detail, ...argValues, ...SWC_DOM_HELPER_VALS());\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n }\n\n constructor(...args: any[]) {\n super(...args);\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-constructor', hostSet);\n\n if (innerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n async connectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n\n this._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n\n if (innerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of innerHtmlList) {\n const res = await (this as any)[meta.propertyKey]();\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n // --- @addEventListener binding ---\n addEventListenerList.forEach(meta => {\n const { selector, type, options } = meta;\n const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate } = options;\n\n if (delegate && selector && selector !== ':host') {\n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') {\n bindRoots.push(this.shadowRoot || (this as any));\n } else if (r === 'light') {\n bindRoots.push(this as any);\n } else if (r === 'shadow') {\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n bindRoots.push(this as any);\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n }\n\n bindRoots.forEach(bindRoot => {\n const handler = (event: Event) => {\n const target = event.target as HTMLElement;\n const matchedEl = target.closest(selector);\n if (matchedEl && (bindRoot as any).contains(matchedEl)) {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n\n const hostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, hostSet, [event, hostSet, matchedEl]);\n }\n };\n bindRoot.addEventListener(type, handler, { capture, once, passive });\n });\n } else {\n const targetEls: (HTMLElement | Element | Document | ShadowRoot | Window)[] = [];\n if (!selector || selector === ':host') {\n targetEls.push(this as any);\n } else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') {\n searchRoots.push((this.shadowRoot || (this as any)) as any);\n } else if (r === 'light') {\n searchRoots.push(this as any);\n } else if (r === 'shadow') {\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n }\n\n searchRoots.forEach(sr => {\n const found = sr.querySelectorAll(selector);\n found.forEach(el => targetEls.push(el as any));\n });\n }\n\n targetEls.forEach(el => {\n const handler = (event: Event) => {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n\n const hostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, hostSet, [event, hostSet]);\n };\n const opts = { capture, once, passive };\n el.addEventListener(type, handler, opts);\n });\n }\n });\n\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n this._executeSwcScript('swc-on-connected', hostSet);\n this._executeSwcScript('swc-on-after-connected', hostSet);\n }\n\n disconnectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.disconnectedCallback) super.disconnectedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-disconnected', hostSet);\n this._executeSwcScript('swc-on-after-disconnected', hostSet);\n }\n\n adoptedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.adoptedCallback) super.adoptedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-adopted', hostSet);\n this._executeSwcScript('swc-on-after-adopted', hostSet);\n }\n\n attributeChangedCallback(name: string, old: string | null, newVal: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, old, newVal);\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n const customEventMeta = emitCustomEventList.find(it => it.options.attributeName === name);\n const eventName = customEventMeta ? customEventMeta.options.type : name.substring(7);\n this._bindAttributeEvent(this as any, name, newVal, eventName);\n }\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n const hSet = SwcUtils.getHostSet(this as any);\n mKeys.forEach(key => this._invokeLifecycleMethod(key, hSet, [newVal, old, name]));\n }\n }\n };\n\n // --- @setAttribute wrapping logic ---\n setAttrMap.forEach((methodName, attrName) => {\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n if (res === null) this.removeAttribute(attrName);\n else this.setAttribute(attrName, String(res));\n }\n return res;\n };\n }\n });\n\n // --- @emitCustomEvent wrapping logic ---\n emitCustomEventList.forEach(meta => {\n const { propertyKey, options } = meta;\n const original = NewClass.prototype[propertyKey as any];\n if (typeof original === 'function') {\n NewClass.prototype[propertyKey as any] = function (...args: any[]) {\n const detail = original.apply(this, args);\n const event = new CustomEvent(options.type, {\n detail,\n bubbles: options.bubbles,\n composed: options.composed,\n cancelable: options.cancelable\n });\n this.dispatchEvent(event);\n return detail;\n };\n }\n });\n\n const originalProto = constructor.prototype;\n const newProto = NewClass.prototype;\n Object.getOwnPropertyNames(originalProto).forEach(name => {\n if (name === 'constructor') return;\n const keys = Reflect.getMetadataKeys(originalProto, name);\n keys.forEach(key => Reflect.defineMetadata(key, Reflect.getMetadata(key, originalProto, name), newProto, name));\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, constructor);\n const registry = config.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\n }\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface QueryOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n}\n\nexport interface QueryMetadata {\n selector: string;\n options: QueryOptions;\n propertyKey: string | symbol;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\n/**\n * @query decorator to inject a single element into a class property.\n * Usage: @query('.my-class') myEl!: HTMLElement;\n * Usage: @query('#my-id', { root: 'shadow' }) myEl!: HTMLElement;\n */\nexport function query(selector: string, options: QueryOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = target.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey });\n\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n if (!selector || selector === ':host') return this;\n const r = options.root || 'auto';\n\n if (r === 'shadow') {\n return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n }\n if (r === 'light') {\n return this.querySelector(selector);\n }\n if (r === 'all') {\n return this.shadowRoot?.querySelector(selector) || this.querySelector(selector);\n }\n // auto\n return (this.shadowRoot || this).querySelector(selector);\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface QueryAllOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n}\n\nexport interface QueryAllMetadata {\n selector: string;\n options: QueryAllOptions;\n propertyKey: string | symbol;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');\n\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n * Usage: @queryAll('.items') list!: NodeListOf<HTMLElement>;\n * Usage: @queryAll('li', { root: 'shadow' }) list!: HTMLElement[];\n */\nexport function queryAll(selector: string, options: QueryAllOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = target.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey });\n\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n if (!selector || selector === ':host') return [this];\n const r = options.root || 'auto';\n\n if (r === 'shadow') {\n return this.shadowRoot ? this.shadowRoot.querySelectorAll(selector) : [];\n }\n if (r === 'light') {\n return this.querySelectorAll(selector);\n }\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n // auto\n const root = this.shadowRoot || this;\n return root.querySelectorAll(selector);\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "export class SimError {\n message?: string;\n name?: string;\n stack?: string;\n\n constructor(message?: string, name?: string, stack?: string) {\n this.message = message;\n this.name = name;\n this.stack = stack;\n }\n}\n", "import {SimError} from './SimError';\n\nexport class SimNoSuch extends SimError {\n constructor(message?: string, name?: string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return data !== null && data !== undefined;\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport enum Lifecycle {\n /**\n * The default registration scope, Each resolve will return the same instance (including resolves from child containers)\n */\n Singleton = 'Singleton',\n /**\n * a new instance will be created with each resolve\n */\n Transient = 'Transient'\n}\n\nexport const sims = new Map<ConstructorType<any> | Function, Set<ConstructorType<any> | Function | any>>();\nexport const containers = new Set<SimpleApplication>();\n// console.log('-->',sims)\n\nexport type SimConfigProxy = ((ProxyHandler<any> | ConstructorType<any> | Function)) | (ProxyHandler<any> | ConstructorType<any> | Function)[];\nexport type SimConfigUsing = (ConstructorType<any> | Function | object) | ((ConstructorType<any> | Function | object)[]);\n\nexport interface SimConfig {\n symbol?: Symbol | (Symbol[]);\n scheme?: string | (string[]);\n scope?: Lifecycle;\n container?: string | (string[]);\n autoCreate?: boolean;\n proxy?: SimConfigProxy;\n type?: (ConstructorType<any> | Function) | (ConstructorType<any> | Function)[];\n using?: SimConfigUsing;\n}\n\nexport const SimMetadataKey = Symbol('Sim');\n\nconst isNotNullObjetInstance = (target: any) => target != null && target !== undefined && typeof target === 'object';\n\nexport const simProcess = (config: SimConfig, inputTarget: ConstructorType<any> | Function | any) => {\n // default setting\n /*\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(function (){\n // console.log('new TT')\n // return {a: 'name'}\n // })\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(() =>{\n // console.log('new TT')\n // return {a: 'name'}\n // })\n Sim({symbol: TTSymbol, scope: Lifecycle.Transient})({a: 'name'})\n */\n const target = (() => {\n if (typeof inputTarget === 'object') {\n return config.scope === Lifecycle.Singleton ? inputTarget : (ValidUtils.isPlainObject(inputTarget) ? { ...inputTarget }: inputTarget);\n }\n if (ValidUtils.isArrowFunction(inputTarget)) {\n return () => (inputTarget as Function)();\n }\n return inputTarget;\n })();\n\n\n\n\n let targetType: ConstructorType<any> | Function;\n if (isNotNullObjetInstance(target)) {\n targetType = target.constructor;\n } else {\n targetType = target;\n }\n config.scope = config?.scope ?? Lifecycle.Singleton;\n ReflectUtils.defineMetadata(SimMetadataKey, config, targetType);\n const adding = (targetKey: ConstructorType<any> | Function, target: ConstructorType<any> | Function | any = targetKey) => {\n const items = sims.get(targetKey) ?? new Set<ConstructorType<any> | Function | any>();\n items.add(target);\n sims.set(targetKey, items);\n }\n\n\n if (Array.isArray(config?.type)) {\n config?.type.forEach(it => {\n adding(it, target);\n })\n } else if (config.type) {\n adding(config?.type, target);\n } else {\n adding(target)\n }\n // adding(targetType)\n // console.log('----------->', sims)\n}\n// const a = Math.random()+Date.now();\nexport function Sim(target: ConstructorType<any> | Function): void;\nexport function Sim(config: SimConfig): GenericClassDecorator<ConstructorType<any> | Function | any>;\nexport function Sim(configOrTarget: SimConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function | any> {\n // console.group('sim')\n // sims.forEach((v,k) => {\n // console.log('sssss->', v, k)\n // })\n // console.groupEnd()\n if (typeof configOrTarget === 'function') {\n simProcess({}, configOrTarget);\n // console.log('---!', Reflect.getMetadata('design:paramtypes', configOrTarget))\n } else {\n return (target: ConstructorType<any> | Function | any) => {\n simProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getSim = (target: ConstructorType<any> | Function | any): SimConfig | undefined => {\n if (target != null && target !== undefined && typeof target === 'object') {\n // proxy \uAC78\uB9B0\uAC70\uB584\uBB38\uC5D0 \uC774\uB807\uAC8C \uD55C\uB2E4. \uC548\uAC78\uB9B0\uAC83\uB3C4 \uC798\uB41C\uB2E4.\n target = Object.getPrototypeOf(target).constructor;\n // target = target.constructor;\n }\n try {\n return ReflectUtils.getMetadata(SimMetadataKey, target);\n } catch (e) {\n }\n}\n\nconst PostConstructMetadataKey = Symbol('PostConstruct');\nexport type PostConstructMetaType = {property: string};\nconst postConstructProcess = (target: any, config: PostConstructMetaType) => {\n const metas = getPostConstructs(target) ?? [];\n metas.push(config);\n ReflectUtils.defineMetadata(PostConstructMetadataKey, metas, target);\n}\nexport const PostConstruct = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n postConstructProcess(target, {property: propertyKey});\n}\nexport const getPostConstructs = (target: any): PostConstructMetaType[] => {\n return ReflectUtils.getMetadata(PostConstructMetadataKey, target) ?? [];\n}\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfig, SimMetadataKey } from '../decorators/SimDecorator';\nimport { Carrier, SimstanceManager } from './SimstanceManager';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport class SimAtomic<T = object> {\n private value?: T | undefined;\n constructor(public type:{targetKeyType: ConstructorType<T> | Function, originalType: ConstructorType<T> | Function, value?: T}, private simstanceManager: SimstanceManager, private config?: {optional?: boolean}) {\n this.value = type.value;\n }\n\n getConfig(): SimConfig | undefined;\n getConfig<C = any>(key: symbol): C | undefined;\n getConfig<C = any>(key: symbol = SimMetadataKey): C | undefined {\n return ReflectUtils.getMetadata(key, this.type.originalType);\n }\n\n getConfigs() {\n return ReflectUtils.getMetadatas(this.type.originalType);\n }\n\n getValue(config?: {newInstanceCarrier?: Carrier, refresh?: boolean}): T | undefined {\n if (config?.refresh) {\n this.value = undefined;\n }\n // console.log('------value?', this.type, this.simstanceManager.storage)\n // return this.simstanceManager.getOrNewSim({target:this.type, newInstanceCarrier: config?.newInstanceCarrier});\n if (!this.value) {\n this.value = this.simstanceManager.getOrNewSim({target: this.type.targetKeyType, originTypeTarget: this.type.originalType, newInstanceCarrier: config?.newInstanceCarrier});\n // const findFirstSim = this.simstanceManager.findFirstSim({type: this.type});\n // if (findFirstSim) {\n // this.value = findFirstSim.getValue(config);\n // } else {\n // this.value = this.simstanceManager.getOrNewSim({target: this.type, newInstanceCarrier: config?.newInstanceCarrier});\n // }\n }\n return this.value;\n // const types = ConvertUtils.flatArray(this.getConfig()?.type);\n // types.push(this.type);\n // for (const typeElement of types) {\n // const instance = this.simstanceManager.getOrNewSim(typeElement, this.type);\n // if (instance) {\n // return instance;\n // }\n // }\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfigUsing } from './decorators/SimDecorator';\nimport { Storage } from '@dooboostore/core/storage/Storage';\nimport { CacheStorage } from './decorators/cache/CacheDecorator';\n\nexport type ProxyHandlerType = { onAfterProxy: <T>(it: T) => T };\nexport type InitOptionType = {\n rootRouter?: ConstructorType<any>;\n container?: string;\n excludeSim?: (ConstructorType<any> | Function)[];\n advice?: ConstructorType<any>[];\n excludeProxys?: (ConstructorType<any> | Function)[];\n proxy?: ProxyHandlerType;\n using?: SimConfigUsing;\n cache?: CacheConfig;\n};\ntype CacheConfig = {\n ms?: number;\n storage?: CacheStorage;\n enable?: boolean;\n};\n\nexport class SimOption {\n public rootRouter?: ConstructorType<any>;\n public container?: string;\n public advice: ConstructorType<any>[];\n public excludeProxys?: (ConstructorType<any> | Function )[];\n public proxy?: ProxyHandlerType;\n // public excludeSim: ((ConstructorType<any> | Function)[]) | ((type: (ConstructorType<any> | Function)) => boolean);\n public using?: SimConfigUsing;\n public cache?: CacheConfig;\n\n constructor({ rootRouter, container, cache, advice = [], excludeProxys, proxy, using }: InitOptionType = {}) {\n this.rootRouter = rootRouter;\n this.container = container;\n this.advice = advice;\n this.excludeProxys = excludeProxys;\n // this.excludeSim = excludeSim;\n this.proxy = proxy;\n this.using = using;\n this.cache = cache;\n }\n\n addAdvicce(advice: ConstructorType<any>) {\n this.advice ??= [];\n this.advice.push(advice);\n }\n\n setAdvice(...advice: ConstructorType<any>[]): SimOption {\n this.advice = advice;\n return this;\n }\n}\n", "export class MetaDataAtomic<T = any, M = any> {\n constructor(public target: T, public metaData: M) {\n }\n}\n\nexport class MetaDataPropertyAtomic<T = any, M = any> extends MetaDataAtomic<T, M> {\n constructor(target: T, metaData: M, public property: string, public parameter?: any) {\n super(target, metaData)\n }\n\n public call(...parameter: any) {\n return (this.target as any)[this.property](...parameter);\n }\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { MetaDataPropertyAtomic } from '../MetaDataAtomic';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '../../types/Types';\n\nconst AfterMetadataKey = Symbol('After');\nconst BeforeMetadataKey = Symbol('Before');\nconst AroundMetadataKey = Symbol('Around');\ntype AOPOption = { type?: ConstructorType<any>; property: string };\ntype AroundOption = {\n before?: (obj: any, propertyKey: string, args: any[]) => any[];\n after?: (obj: any, propertyKey: string, args: any[], beforeReturn: any) => any[];\n};\n\n// after\nexport const After = (data: AOPOption) => {\n return ReflectUtils.metadata(AfterMetadataKey, data);\n};\nexport const getAfter = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(AfterMetadataKey, target, propertyKey);\n};\n\nexport const getAfters = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getAfter(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoAfters = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getAfters(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\n// before\nexport const Before = (data: AOPOption) => {\n return ReflectUtils.metadata(BeforeMetadataKey, data);\n};\n\nexport const getBefore = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(BeforeMetadataKey, target, propertyKey);\n};\n\nexport const getBefores = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getBefore(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoBefores = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getBefores(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\nexport class AroundForceReturn {\n constructor(public value: any) {}\n}\n// around\nexport const Around = (config: AroundOption): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(AroundMetadataKey, config, target, propertyKey);\n\n const method = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // console.log('check method')\n\n let before: any = undefined;\n let r: any = undefined;\n if (config.before) {\n try {\n before = config.before?.(this, propertyKey, args);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n r = method.apply(this, before);\n } else {\n r = method.apply(this, args);\n }\n\n if (config.after) {\n try {\n r = config.after?.(this, propertyKey, args, r);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n }\n return r;\n };\n };\n};\n\nexport const getAround = (target: any, propertyKey: string): AroundOption | undefined => {\n return ReflectUtils.getMetadata(AroundMetadataKey, target, propertyKey);\n};\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ObjectUtils} from '@dooboostore/core/object/ObjectUtils';\n\nexport enum ExceptionHandlerSituationType {\n ERROR_OBJECT = 'SIMPLE_BOOT_CORE://ExceptionHandler/ERROR_OBJECT',\n PARAMETER = 'SIMPLE_BOOT_CORE://ExceptionHandler/PARAMETER',\n}\nexport type ExceptionHandlerConfig = { type?: ConstructorType<any>; throw?: boolean }\nexport type SaveExceptionHandlerConfig = { propertyKey?: string | symbol; method: Function; config: ExceptionHandlerConfig; }\n\nconst ExceptionHandlerMetadataKey = Symbol('ExceptionHandler');\n\nexport const ExceptionHandler = (config: ExceptionHandlerConfig = {}): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target.constructor) ?? []) as SaveExceptionHandlerConfig[];\n const method = target[propertyKey];\n saveMappingConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, config, target, propertyKey);\n }\n}\n\nexport const getExceptionHandler = (target: any, propertyKey: string): ExceptionHandlerConfig | undefined => {\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target, propertyKey);\n}\n\nexport const getExceptionHandlers = (target: any): SaveExceptionHandlerConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target);\n}\n\nexport const targetExceptionHandlers = (target: any, error: any): SaveExceptionHandlerConfig[] => {\n const exceptionHandlers = getExceptionHandlers(target);\n const emptyTargets = exceptionHandlers?.filter(it => it.config.type === undefined);\n const targets = exceptionHandlers?.filter(it => ObjectUtils.isPrototypeOfTarget(it.config.type, error));\n const targetSorts = targets?.sort((a, b) => {\n const aPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, a.config.type);\n const bPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, b.config.type);\n return aPrototypeOfDepth.length - bPrototypeOfDepth.length\n });\n return (targetSorts ?? []).concat(...emptyTargets ?? []);\n}\n\nexport const targetExceptionHandler = (target: any, error: any, excludeMethods: Function[] = []): SaveExceptionHandlerConfig | undefined => {\n let exceptionHandlers = targetExceptionHandlers(target, error);\n exceptionHandlers = exceptionHandlers?.filter(it => !excludeMethods.includes(it.method));\n if (exceptionHandlers && exceptionHandlers.length > 0) {\n return exceptionHandlers[0];\n } else {\n return undefined;\n }\n}\n", "import { SimstanceManager } from '../simstance/SimstanceManager';\nimport { getProtoAfters, getProtoBefores } from '../decorators/aop/AOPDecorator';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { SimOption } from '../SimOption';\nimport { ExceptionHandlerSituationType, SaveExceptionHandlerConfig, targetExceptionHandler } from '../decorators/exception/ExceptionDecorator';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SituationTypeContainer, SituationTypeContainers } from '../decorators/inject/Inject';\nimport { SimpleApplication } from '../SimpleApplication';\n\nexport class SimProxyHandler implements ProxyHandler<any> {\n constructor(\n private simpleApplication: SimpleApplication,\n private simstanceManager: SimstanceManager,\n private simOption: SimOption\n ) {\n // console.log('SimProxyHandler', simstanceManager, simOption)\n }\n\n // \uC798\uBC1B\uAC8C \uD574\uB1A8\uB124 \u314B\u314B simstanceManager\n public get(target: any, name: string): any {\n if (name === '_SimpleBoot_application') {\n return this.simpleApplication;\n } else if (name === '_SimpleBoot_simstanceManager') {\n return this.simstanceManager;\n } else if (name === '_SimpleBoot_simOption') {\n return this.simOption;\n } else if (name === '_SimpleBoot_origin') {\n return target;\n } else {\n return target[name];\n }\n }\n\n public set(obj: any, prop: string, value: any, receiver: any): boolean {\n value = this.simstanceManager?.proxy(value);\n obj[prop] = value;\n return true;\n }\n\n apply(target: Function, thisArg: any, argumentsList?: any[]): any {\n let r;\n try {\n this.aopBefore(thisArg, target);\n try {\n // @ts-ignore\n r = Reflect.apply(target, thisArg, argumentsList);\n // r = target.apply(thisArg, argumentsList);\n // eslint-disable-next-line no-useless-catch\n } catch (e) {\n throw e;\n } finally {\n this.aopAfter(thisArg, target);\n }\n } catch (e: Error | any) {\n console.error(e);\n const inHandlers = this.getExceptionHandler(e, thisArg, target);\n if (inHandlers.length > 0 && inHandlers[0]) {\n const inHandler = inHandlers[0];\n this.executeExceptionHandler(e, inHandler, argumentsList);\n } else {\n throw e;\n }\n }\n return r;\n }\n\n private executeExceptionHandler(e: any, inHandler: { thisArg: any; config: SaveExceptionHandlerConfig }, argumentsList?: any[]) {\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(e.constructor, e);\n const situationErrorTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n });\n const situationParameterTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.PARAMETER,\n data: argumentsList\n });\n otherStorage.set(SituationTypeContainers, new SituationTypeContainers([situationErrorTypeContainer, situationParameterTypeContainer]));\n argumentsList?.forEach(it => {\n otherStorage.set(it.constructor, it);\n });\n try {\n this.simstanceManager.executeBindParameterSim(\n {\n target: inHandler.thisArg,\n targetKey: inHandler.config.propertyKey\n },\n otherStorage\n );\n } catch (es) {\n e = es;\n }\n if (inHandler.config.config.throw) {\n const exceptionHandler = this.getExceptionHandler(e, inHandler.thisArg, inHandler.config.method);\n if ((exceptionHandler?.length ?? 0) > 0) {\n this.executeExceptionHandler(e, exceptionHandler[0], argumentsList);\n }\n }\n }\n\n private getExceptionHandler(e: any, thisArg: any, target: Function) {\n const globalConfigSets =\n this.simOption.advice\n .map(it => this.simstanceManager?.getOrNewSim({ target: it }))\n .filter(it => it)\n .map(it => {\n return { thisArg: it, config: targetExceptionHandler(it, e, [target]) };\n }) ?? [];\n const thisConfigSet = { thisArg: thisArg, config: targetExceptionHandler(thisArg, e, [target]) };\n const inHandlers = [thisConfigSet, ...globalConfigSets].filter(it => it && it.config) as { thisArg: any; config: SaveExceptionHandlerConfig }[];\n return inHandlers;\n }\n\n private aopBefore(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName && obj) {\n getProtoBefores(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({ target: this.simOption.advice[i] });\n const protoBefores = getProtoBefores(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n }\n }\n }\n\n private aopAfter(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName) {\n getProtoAfters(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({ target: this.simOption.advice[i] });\n const protoBefores = getProtoAfters(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n }\n }\n }\n\n has(target: any, key: PropertyKey): boolean {\n if (key === '_SimpleBoot_isProxy') {\n return true;\n }\n return key in target;\n }\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(///g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''', // or ' (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 ' \uAD8C\uC7A5)\n '/': '/',\n '`': '`',\n '=': '=',\n '{': '{',\n '}': '}',\n '#': '#',\n '$': '$',\n '\\n': ' ', // newline\n '\\r': ' ', // carriage return\n '\\t': '	', // tab\n '\\u00A0': ' ', // non-breaking space\n '\u00A2': '¢',\n '\u00A3': '£',\n '\u00A5': '¥',\n '\u20AC': '€',\n '\u00A9': '©',\n '\u00AE': '®',\n '\u2122': '™',\n '\u00B0': '°',\n '\u00B1': '±',\n '\u00D7': '×',\n '\u00F7': '÷',\n '\u2212': '−',\n '\u2022': '•',\n '\u2026': '…',\n '\u2190': '←',\n '\u2192': '→',\n '\u2191': '↑',\n '\u2193': '↓',\n '\u2194': '↔',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "export interface OnSimCreate {\n onSimCreate(): void;\n}\nexport const isOnSimCreate = (obj: any): obj is OnSimCreate => {\n return typeof obj?.onSimCreate === 'function';\n}", "export interface OnSimCreateCompleted<T = any> {\n onSimCreateProxyCompleted(proxyThis: T): void;\n}\nexport const isOnSimCreateProxyCompleted = (obj: any): obj is OnSimCreateCompleted => {\n return typeof obj?.onSimCreateProxyCompleted === 'function';\n}\n\n", "export const SimNoProxyKey = Symbol('Sim:NoProxy');\nexport const SimNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(SimNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(SimNoProxyKey, true, target, propertyKey);\n};\n\nexport const getSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n try {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(SimNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(SimNoProxyKey, target, propertyKey);\n } catch (e) {\n return undefined;\n }\n // } else {\n // return undefined;\n // }\n};\n\nexport const isSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n if (target === null || target === undefined) {\n return false;\n }\n return getSimNoProxy(target, propertyKey) === true;\n};\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimNoSuch } from '../throwable/SimNoSuch';\nimport { getPostConstructs, getSim, Lifecycle, SimConfig, simProcess, sims } from '../decorators/SimDecorator';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { SimAtomic } from './SimAtomic';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInject, isTargetFactory, isTargetNone, isTargetScheme, isTargetSymbol, isTargetType, SaveInjectConfig, SituationTypeContainer, SituationTypeContainers } from '../decorators/inject/Inject';\nimport { SimOption } from '../SimOption';\nimport { SimProxyHandler } from '../proxy/SimProxyHandler';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Runnable } from '@dooboostore/core/runs/Runnable';\nimport { isOnSimCreate } from '../lifecycle/OnSimCreate';\nimport { isOnSimCreateProxyCompleted } from '../lifecycle/OnSimCreateCompleted';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { isSimNoProxy } from '../decorators/SimNoProxy';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport type FirstCheckMaker = (obj: { target: Object; targetKey?: string | symbol }, token: ConstructorType<any>, idx: number, saveInjectConfig?: SaveInjectConfig) => any | undefined;\nexport type Carrier = { newInstances: any[]; depth: number };\n\nexport class SimstanceManager implements Runnable<void, Map<ConstructorType<any> | Function, any>> {\n private _storage = new Map<ConstructorType<any> | Function, Map<ConstructorType<any> | Function, undefined | any>>();\n private simProxyHandler: SimProxyHandler;\n private name = 'simstanceManager-' + RandomUtils.uuid4();\n // private otherInstanceSim?: Map<ConstructorType<any> | Function, any>;\n\n constructor(\n public simpleApplication: SimpleApplication,\n private option: SimOption\n ) {\n this.setStoreSet(SimpleApplication, this.simpleApplication);\n this.setStoreSet(SimstanceManager, this);\n this.setStoreSet((option as any).constructor, option);\n this.setStoreSet(SimOption, option);\n this.simProxyHandler = new SimProxyHandler(this.simpleApplication, this, option);\n }\n\n get storage() {\n return this._storage;\n }\n\n getSimAtomics(): SimAtomic[] {\n const r: SimAtomic[] = [];\n Array.from(this.storage.entries()).forEach(([targetKeyType, targetMap]) => {\n // Array.from(targetMap).forEach(it => {\n r.push(\n ...Array.from(Array.from(targetMap.keys())).map(\n sit =>\n new SimAtomic(\n {\n targetKeyType,\n originalType: sit\n },\n this\n )\n )\n );\n // });\n });\n return r;\n }\n\n getSimConfig(schemeOrSymbol: string | Symbol | undefined): SimAtomic<any>[] {\n const newVar =\n this.getSimAtomics().filter(it => {\n const config = it?.getConfig();\n const symbols = ConvertUtils.flatArray(config?.symbol);\n const schemes = ConvertUtils.flatArray(config?.scheme);\n if (typeof schemeOrSymbol === 'symbol') {\n return schemeOrSymbol && it && symbols.includes(schemeOrSymbol);\n } else if (typeof schemeOrSymbol === 'string') {\n return schemeOrSymbol && it && schemes.includes(schemeOrSymbol);\n } else {\n return false;\n }\n }) || [];\n return newVar;\n }\n\n findSims<T = any>(symbol: Symbol): SimAtomic<T>[];\n findSims<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T>[];\n findSims<T = any>(\n data:\n | {\n scheme?: string;\n type?: ConstructorType<any> | Function;\n }\n | Symbol\n ): SimAtomic<T>[] {\n let r: SimAtomic<T>[] = [];\n if (data) {\n const simAtomics = this.getSimAtomics();\n r = simAtomics.filter(it => {\n let b = false;\n const config = it.getConfig();\n // console.log('-=--', config)\n const symbols = ConvertUtils.flatArray(config?.symbol).filter(isDefined);\n const schemes = ConvertUtils.flatArray(config?.scheme).filter(isDefined);\n if (typeof data === 'symbol') {\n b = symbols.includes(data);\n } else {\n const { scheme, type } = data as { scheme?: string; type?: ConstructorType<any> | Function };\n b = (scheme ? schemes.includes(scheme) : true) && (type ? it.type.targetKeyType === type : true);\n // if (type) {\n // const configTypes = ConvertUtils.flatArray(config?.type).filter(isDefined);\n // const match = configTypes.includes(type)\n // if (match) {\n // b = true;\n // }\n // }\n }\n return b;\n }) as unknown as SimAtomic<T>[];\n }\n return r;\n }\n\n findFirstSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findFirstSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T> | undefined;\n findFirstSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function } | Symbol): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data)[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> | Function })[0];\n }\n }\n\n findLastSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findLastSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T> | undefined;\n findLastSim<T = any>(\n data:\n | {\n scheme?: string;\n type?: ConstructorType<any> | Function;\n }\n | Symbol\n ): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data).reverse()[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> | Function }).reverse()[0];\n }\n }\n\n flatStoreSets() {\n return new Map(\n Array.from(this.storage.values())\n .map(it => Array.from(it.entries()))\n .flat()\n );\n }\n\n getStoreSets<T>(targetKey: ConstructorType<T> | Function): { type: ConstructorType<T> | Function; instance?: T }[] {\n const map = this.storage.get(targetKey);\n const datas = (Array.from(map?.entries?.() ?? []) ?? []).reverse();\n return datas.map(it => ({ type: it[0], instance: it[1] }));\n }\n\n getStoreSet<T>(targetKey: ConstructorType<T> | Function, target?: ConstructorType<any> | Function): { type: ConstructorType<T> | Function; instance?: T } | undefined {\n const sets = this.getStoreSets(targetKey);\n let find = sets.find(it => it.type === target);\n if (!find && (!target || target === targetKey)) {\n find = sets.find(it => it.instance);\n }\n // console.log('getStoreSet', targetKey, target, find)\n if (!find?.instance) {\n const type = target ?? targetKey;\n\n // \uC678\uBD80\uC5D0\uC11C \uB123\uC5B4\uC900 \uC778\uC2A4\uD134\uC2A4\uD2B8\uC77C\uB54C\uC5D0\uB294 \uD0A4\uAC12\uC774 \uADF8 instance\uC774\uB2E4.\n if (typeof type === 'object') {\n const find = this.storage.get(type);\n if (find) {\n return { type: type as ConstructorType<T> | Function, instance: type as T };\n }\n }\n\n const flatStoreSets = this.flatStoreSets();\n const data = flatStoreSets.get(type);\n // console.log('--->target?', target, targetKey, type, data);\n if (data) {\n this.setStoreSet(targetKey, data, type);\n }\n return { type: type, instance: data };\n } else {\n return find;\n }\n // return find ?? this.getStoreSets(targetKey)[0];\n }\n\n getStoreInstance<T>(targetKey: ConstructorType<T>, target?: ConstructorType<any>) {\n return this.getStoreSet(targetKey, target)?.instance;\n }\n\n getOrNewSim<T>({ target, originTypeTarget = target, newInstanceCarrier }: { target?: ConstructorType<T> | Function; newInstanceCarrier?: Carrier; originTypeTarget?: ConstructorType<T> | Function }): T | undefined {\n if (target) {\n const registed = this.getStoreSet(target, originTypeTarget);\n if (registed?.type && !registed?.instance) {\n return this.resolve({\n targetKey: target,\n target: originTypeTarget,\n newInstanceCarrier: newInstanceCarrier\n });\n }\n return registed?.instance;\n }\n }\n\n setStoreSet(targetKey: ConstructorType<any> | Function, obj: any, target: ConstructorType<any> | Function = targetKey): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n itemMap.set(target, obj);\n this.storage.set(targetKey, itemMap);\n }\n\n registerStore(targetKey: ConstructorType<any> | Function, regTyps: Set<ConstructorType<any> | Function | any>): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n regTyps.forEach(it => {\n const { type, value } = (typeof it === 'object' ? { type: it.constructor, value: it } : { type: it, value: undefined }) as { type: ConstructorType<any> | Function; value: any };\n if (!itemMap.has(type) || (value !== undefined && itemMap.get(type) === undefined)) {\n itemMap.set(type, value);\n }\n });\n this.storage.set(targetKey, itemMap);\n }\n\n // \uC9C4\uC785\uC810\n resolve<T>({ target, targetKey, newInstanceCarrier = { newInstances: [], depth: 0 } }: { targetKey: ConstructorType<any> | Function; target?: ConstructorType<any> | Function; newInstanceCarrier?: Carrier }): T {\n // console.group('resolve')\n const registed = this.getStoreSet(targetKey, target);\n if (registed?.instance) {\n return registed.instance;\n }\n\n // console.log('resolve--', targetKey, target, registed?.instance);\n if (this.storage.has(targetKey) && undefined === registed?.instance) {\n newInstanceCarrier.depth++;\n const newSim = this.newSim({\n target: registed?.type ?? targetKey,\n newInstanceCarrier: newInstanceCarrier,\n simCreateAfter: data => {\n // console.log('resolve--newSim', targetKey, target, data);\n if (getSim(registed?.type ?? target ?? targetKey)?.scope === Lifecycle.Singleton) {\n this.setStoreSet(targetKey, data, target);\n // console.log('-----------set', targetKey, data, target, this.storage.get(targetKey))\n }\n }\n });\n newInstanceCarrier.depth--;\n // \uD55C\uADF8\uB8F9\uC774 \uB05D\uB0AC\uC744\uB54C\n if (newInstanceCarrier.depth === 0) {\n newInstanceCarrier.newInstances.forEach(it => {\n this.callBindPostConstruct(it);\n });\n }\n // console.log('%c *************************','color: blue', registed?.type ?? targetKey ,newInstanceCarrier, newInstanceCarrier?.newInstances.length)\n // console.dir(newInstanceCarrier, {depth:10});\n // console.table(newInstanceCarrier);\n if (isOnSimCreate(newSim)) {\n newSim.onSimCreate();\n }\n // console.groupEnd();\n return newSim;\n }\n // console.log('simstanceManager', this._storage, this.name);\n const simNoSuch = new SimNoSuch('SimNoSuch: no simple instance(resolve) ' + 'name:' + targetKey?.prototype?.constructor?.name + ',' + targetKey);\n console.error(simNoSuch);\n // console.groupEnd();\n throw simNoSuch;\n }\n\n public newSim<T = any>({ target, simCreateAfter, otherStorage, newInstanceCarrier }: { target: ConstructorType<T> | Function; simCreateAfter?: (data: T) => void; newInstanceCarrier?: Carrier; otherStorage?: Map<ConstructorType<any>, any> }): T {\n // @ts-ignore TODO: \uC5EC\uAE30\uC11C \uC0DD\uC131\n const parameters = this.getParameterSim({\n target: target,\n otherStorage: otherStorage,\n newInstanceCarrier: newInstanceCarrier\n });\n // @ts-ignore\n const r = ValidUtils.isFunction(target) && !target.prototype ? (target as Function)(...parameters) : new (target as ConstructorType<any>)(...parameters);\n let p = this.proxy(r);\n const config = getSim(target);\n if (config?.proxy) {\n const proxys = (Array.isArray(config.proxy) ? config.proxy : [config.proxy]).filter(isDefined);\n proxys.forEach(it => {\n // console.log('proxy-----------------', p)\n if (typeof it === 'object') {\n p = new Proxy(p, it);\n } else {\n const simConfig = getSim(it);\n p = new Proxy(p, simConfig ? this.getOrNewSim({ target: it }) : this.newSim({ target: it }));\n }\n // console.log('proxy-pp----------------', p)\n });\n }\n newInstanceCarrier?.newInstances.push(p);\n // \uC21C\uD658\uCC38\uC870 \uB9C9\uAE30\uC704\uD55C \uCF5C\uBC31 \uCC98\uB9AC\n simCreateAfter?.(p);\n if (isOnSimCreateProxyCompleted(p)) {\n p.onSimCreateProxyCompleted(p);\n }\n // this.callBindPostConstruct(p);\n return p;\n }\n\n public callBindPostConstruct(obj: any) {\n // const set = new Set(ObjectUtils.getAllProtoTypeName(obj));\n // console.log('callBindPostConstruct', obj, set, ObjectUtils.getAllProtoTypeName(obj));\n // set.forEach(it => {\n // const postConstruct = getPostConstruct(obj, it);\n // if (postConstruct) {\n // (obj as any)[it](...this.getParameterSim({target: obj, targetKey: it}))\n // }\n // })\n const postConstruct = getPostConstructs(obj);\n postConstruct.forEach(it => {\n (obj as any)[it.property](...this.getParameterSim({ target: obj, targetKey: it.property }));\n });\n }\n\n public async executeBindParameterSimPromise({ target, targetKey, firstCheckMaker, parameterCount, inputParameters }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; parameterCount?: number; inputParameters?: any[] }, otherStorage?: Map<ConstructorType<any>, any>) {\n const binds = this.getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, parameterCount, inputParameters });\n if (typeof target === 'object' && targetKey) {\n const targetMethod = (target as any)[targetKey];\n return targetMethod?.bind(target)?.(...binds);\n } else if (typeof target === 'function' && !targetKey) {\n return new (target as ConstructorType<any>)(...binds);\n }\n }\n\n public executeBindParameterSim({ target, targetKey, firstCheckMaker, parameterCount, inputParameters }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; parameterCount?: number; inputParameters?: any[] }, otherStorage?: Map<ConstructorType<any>, any>) {\n const binds = this.getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, parameterCount, inputParameters });\n if (typeof target === 'object' && targetKey) {\n const targetMethod = (target as any)[targetKey];\n return targetMethod?.bind(target)?.(...binds);\n } else if (typeof target === 'function' && !targetKey) {\n return new (target as ConstructorType<any>)(...binds);\n }\n }\n\n public getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, newInstanceCarrier, parameterCount, inputParameters = [] }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; newInstanceCarrier?: Carrier; otherStorage?: Map<ConstructorType<any>, any>; parameterCount?: number; inputParameters?: any[] }): any[] {\n const paramTypes = (ReflectUtils.getParameterTypes(target, targetKey) || []) as ConstructorType<any>[];\n // const paramNames = FunctionUtils.getParameterNames(target, targetKey);\n // const a = ReflectUtils.getType(target, 'user');\n let injections: any[] = [];\n const injects = getInject(target, targetKey);\n // const da = JSON.stringify(this.storage);\n // this.storage map to json String\n\n const loopCount = Math.max(paramTypes.length, parameterCount ?? 0);\n const loopArray = new Array(loopCount).fill(undefined);\n\n injections = loopArray.map((_, idx: number) => {\n const token = paramTypes[idx];\n const saveInject = injects?.find(it => it.index === idx);\n\n // firstCheckMaker should have the highest priority\n for (const f of firstCheckMaker ?? []) {\n const firstCheckObj = f({ target, targetKey }, token, idx, saveInject);\n if (undefined !== firstCheckObj) {\n return firstCheckObj;\n }\n }\n\n if (saveInject) {\n const inject = saveInject.config;\n let obj = otherStorage?.get(token);\n\n // console.log('vvvvv----->', obj, token, inject);\n if (token === Array && (isTargetType(inject) || isTargetScheme(inject) || isTargetSymbol(inject))) {\n const p: any[] = [];\n if (isTargetType(inject) && inject.type) {\n p.push(\n ...this.getStoreSets(inject.type)\n .map(it =>\n this.resolve({\n targetKey: inject.type!,\n target: it.type,\n newInstanceCarrier: newInstanceCarrier\n })\n )\n .reverse()\n );\n }\n if (isTargetSymbol(inject)) {\n p.push(...this.getSimConfig(inject.symbol).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier })));\n }\n if (isTargetScheme(inject)) {\n p.push(...this.getSimConfig(inject.scheme).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier })));\n }\n return p;\n }\n\n // situational\n if (inject.situationType && otherStorage) {\n // TODO: \uC65C other\uC5D0\uC11C \uAC00\uC838\uC624\uB294\uAC78\uAE4C?\n const situations = otherStorage.get(SituationTypeContainers) as SituationTypeContainers;\n const situation = otherStorage.get(SituationTypeContainer) as SituationTypeContainer;\n if (inject.situationType === situation?.situationType) {\n obj = situation.data;\n } else if (situations && situations.length > 0) {\n const find = situations.find(a => {\n if (a.index !== undefined) {\n return a.situationType === inject.situationType && a.index === idx;\n } else {\n return a.situationType === inject.situationType;\n }\n });\n if (find) {\n obj = find.data;\n }\n }\n }\n\n if (!obj) {\n // [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 3\uB300 \uC804\uB7B5 (Factory / Symbol / Type)\n const currentInstance = typeof target === 'object' ? target : undefined;\n if (isTargetFactory(inject)) {\n // Choice 3: \uC21C\uC218 Factory \uC804\uB7B5\n obj = inject.factory({\n instance: currentInstance,\n methodName: String(targetKey),\n parameter: inputParameters,\n application: this.simpleApplication\n });\n } else {\n // Choice 1 & 2: Symbol \uB610\uB294 Type/Scheme \uC804\uB7B5\n let findLastSim;\n if (isTargetSymbol(inject)) {\n findLastSim = this.findLastSim(inject.symbol);\n } else if (isTargetType(inject) || isTargetScheme(inject)) {\n findLastSim = this.findLastSim(inject);\n }\n try {\n obj = findLastSim\n ? this.resolve<any>({\n targetKey: findLastSim?.type.targetKeyType ?? token,\n newInstanceCarrier: newInstanceCarrier\n })\n : this.resolve<any>({\n targetKey: token,\n newInstanceCarrier: newInstanceCarrier\n });\n\n // Augmentation: \uCC3E\uC740 \uAC1D\uCCB4\uB97C \uD329\uD1A0\uB9AC\uB97C \uD1B5\uD574 \uAC00\uACF5\n if (inject.factory && obj) {\n if (typeof inject.factory === 'function') {\n obj = inject.factory({\n instance: currentInstance,\n methodName: String(targetKey),\n parameter: inputParameters,\n application: this.simpleApplication,\n injectInstance: obj\n });\n }\n }\n } catch (e) {\n // Inject optional \uCC98\uB9AC\n if (inject.optional) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n }\n\n if (inject.proxy && obj) {\n // [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uD1B5\uD569 \uD504\uB85D\uC2DC \uC804\uB7B5 (\uD074\uB798\uC2A4 \uB610\uB294 \uD329\uD1A0\uB9AC \uD568\uC218)\n if (ValidUtils.isConstructor(inject.proxy)) {\n // Choice A: \uD074\uB798\uC2A4 \uD504\uB85D\uC2DC\n const handler = getSim(inject.proxy) ? this.getOrNewSim({ target: inject.proxy as ConstructorType<any> }) : new (inject.proxy as any)();\n if (handler) {\n obj = new Proxy(obj, handler);\n }\n } else if (typeof inject.proxy === 'function') {\n // Choice B: \uC989\uC11D \uD329\uD1A0\uB9AC \uD504\uB85D\uC2DC\n const handler = inject.proxy({\n application: this.simpleApplication,\n instance: obj\n });\n if (handler) {\n obj = new Proxy(obj, handler);\n }\n }\n }\n return obj;\n } else {\n return otherStorage?.get(token) ?? (token ? this.resolve<any>({ targetKey: token, newInstanceCarrier }) : undefined);\n }\n });\n return injections;\n }\n\n public proxy<T = any>(target: T): T {\n try {\n const noProxy = isSimNoProxy(target);\n const isExcludeProxy = this.option.excludeProxys?.some(it => target instanceof it);\n if (!noProxy && !isExcludeProxy && target !== null && getSim(target) && typeof target === 'object' && !('_SimpleBoot_isProxy' in target)) {\n for (const key in target) {\n if (!isSimNoProxy(target, key)) {\n (target as any)[key] = this.proxy((target as any)[key]);\n }\n }\n\n // function apply proxy\n const protoTypeName = ObjectUtils.ownPropertyNames(target);\n protoTypeName\n .filter(it => typeof (target as any)[it] === 'function')\n .filter(it => !isSimNoProxy(target, it))\n .filter(it => !('_SimpleBoot_isProxy' in target[it]))\n .forEach(it => {\n (target as any)[it] = new Proxy((target as any)[it], this.simProxyHandler!);\n });\n\n if (this.simProxyHandler) {\n target = new Proxy(target, this.simProxyHandler);\n }\n }\n\n if (this.option.proxy) {\n target = this.option.proxy.onAfterProxy(target);\n }\n return target;\n } catch (e) {\n console.log('sim proxy error');\n throw e;\n }\n }\n\n run(otherInstanceSim: Map<ConstructorType<any> | Function | SimConfig | Symbol, any> = new Map()) {\n // this.otherInstanceSim = new Map();\n for (const [k, v] of Array.from(otherInstanceSim.entries())) {\n if (typeof k === 'symbol') {\n simProcess({ symbol: k }, v);\n } else if (typeof k === 'object') {\n // \uBA85\uD655\uD558\uAC8C instance\uB97C \uB118\uAE34\uAC70\uB2C8 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uC548\uD558\uAE30 \uC704\uD574 \uC784\uC758 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uD55C\uB2E4.\n simProcess(k as SimConfig, v);\n } else {\n simProcess({ type: k }, v);\n }\n // this.otherInstanceSim.set(type, v);\n // it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)})\n }\n // this.otherInstanceSim = otherInstanceSim;\n // const types = Array.from(this.otherInstanceSim?.entries()).map(it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)}));\n // types.push(...Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)})));\n const myContainers = ConvertUtils.flatArray(this.option.container).filter(isDefined);\n // console.log('simstanceManager run!!', Array.from(sims.entries()));\n // Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)}))\n Array.from(sims.entries()).forEach(([type, value]) => {\n const targetContainers = ConvertUtils.flatArray(getSim(type)?.container).filter(isDefined);\n let isInclude = false;\n if (myContainers.length <= 0 && targetContainers.length <= 0) {\n isInclude = true;\n } else if (targetContainers.length <= 0) {\n isInclude = true;\n } else {\n isInclude = myContainers.some(it => targetContainers.includes(it));\n }\n\n this.registerStore(type, value);\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : myContainers.some(it => targetContainers.includes(it));\n // const isInclude = (targetContainers.length <= 0) ? true : (myContainers.length > 0 ? true : (myContainers.some(it => targetContainers.includes(it))));\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : (myContainers.some(it => containers.includes(it)));\n // if (typeof this.option.excludeSim === 'function' && this.option.excludeSim(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // } else if (Array.isArray(this.option.excludeSim) && !this.option.excludeSim.includes(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // }\n });\n\n this.callBindPostConstruct(this);\n\n // auto start run\n this.getSimAtomics().forEach(it => {\n if (it.getConfig()?.autoCreate) {\n // console.log('autoStart---?', it.type);\n it.getValue();\n }\n });\n }\n}\n", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "import { Expression } from '@dooboostore/core/expression/Expression';\n\n/* uri struct\n scheme uri example: mymodule://asd/asd/b?a=545&aa=33&wow=wow\n global uri example: ://asd/asd/b?a=545&aa=33&wow=wow\n route uri example: Router(/users/aa/ffw)://asd/asd/b?a=545&aa=33&wow=wow\n Symbol.for uri example: Symbol.for(zzz)://asd/asd/b?a=545&aa=33&wow=wow\n <\uC2A4\uD0B4>://<\uC0AC\uC6A9\uC790\uC774\uB984>:<\uBE44\uBC00\uBC88\uD638>@<\uD638\uC2A4\uD2B8>:<\uD3EC\uD2B8>/<\uACBD\uB85C>?<\uC9C8\uC758>#<\uD504\uB808\uADF8\uBA3C\uD2B8>\n\n URL {origin: 'https://www.google.com', protocol: 'https:', username: '', password: '', host: 'www.google.com', \u2026}\n host : \"www.google.com\"\n hostname : \"www.google.com\"\n href : \"https://www.google.com/search?sca_esv=873f891b9c737763&sxsrf=ANbL-n4MYzsxgnVWYQYX_HFn_SDiF50gng:1773588779997&udm=2&fbs=ADc_l-bD_nyrjATWBKup7flJ4rea5XFXsPHwMjGsTekJ1HCohBAQ3Hh19DqzlO7wr7YUgTf11rdGODep1hjYV7VngF90iRfoKFoNV193gunAY5doENCEzhzHTAwBIK7uA_u7vWEPlSr2SNmvolDNY_BBTeC5a_VNbQUhGitQNtnOX1ZEZVe5iCML48JohpujnTYUreb8T0DRU1U5y-DNg1BBVMghmIfI7w&q=uri&sa=X&ved=2ahUKEwjlhdaJnaKTAxX-dPUHHW2sK6oQtKgLegQIHRAB&biw=1682&bih=997&dpr=1#sv=CAMSXhoyKhBlLXVRQWVwTzMwWVFrcVdNMg51UUFlcE8zMFlRa3FXTToOcE8tdnNsZTU3a1N6b00gBCokCg5JMnQyRUVQV3JwaTVOTRIQZS11UUFlcE8zMFlRa3FXTRgAMAEYByDSjNDNATACSggQAhgCIAIoAg\"\n origin : \"https://www.google.com\"\n pathname : \"/search\"\n protocol : \"https:\"\n search : \"?sca_esv=873f891b9c737763&sxsrf=ANbL-n4MYzsxgnVWYQYX_HFn_SDiF50gng:1773588779997&udm=2&fbs=ADc_l-bD_nyrjATWBKup7flJ4rea5XFXsPHwMjGsTekJ1HCohBAQ3Hh19DqzlO7wr7YUgTf11rdGODep1hjYV7VngF90iRfoKFoNV193gunAY5doENCEzhzHTAwBIK7uA_u7vWEPlSr2SNmvolDNY_BBTeC5a_VNbQUhGitQNtnOX1ZEZVe5iCML48JohpujnTYUreb8T0DRU1U5y-DNg1BBVMghmIfI7w&q=uri&sa=X&ved=2ahUKEwjlhdaJnaKTAxX-dPUHHW2sK6oQtKgLegQIHRAB&biw=1682&bih=997&dpr=1\"\n searchParams : URLSearchParams {size: 10}\n*/\nexport class Intent<T = any, E = any> {\n public sessionData = new Map<string, any>();\n\n constructor(\n public uri: string | { symbol: Symbol | Symbol[]; uri: `/${string}` },\n public data?: T,\n public event?: E\n ) {\n if (typeof uri === 'string') {\n const match = uri.match(/^Symbol\\.for\\((.+)\\):\\/(.*)$/);\n if (match) {\n const symbol = Symbol.for(match[1] as string);\n this.uri = {\n symbol: symbol,\n uri: match[2] as `/${string}`\n };\n }\n }\n }\n\n get symbols() {\n if (typeof this.uri === 'object') {\n // ensure symbol is always an array\n return Array.isArray(this.uri.symbol) ? this.uri.symbol : [this.uri.symbol];\n }\n return undefined;\n }\n\n get scheme() {\n if (typeof this.uri === 'string') {\n const parts = this.uri.split('://');\n if (parts.length > 1) {\n return parts[0];\n }\n return undefined;\n } else {\n return undefined;\n }\n }\n\n get paths() {\n return this.pathname.split('/') ?? [];\n }\n\n get fullPath() {\n const uri = typeof this.uri === 'string' ? this.uri : this.uri.uri;\n const paths = uri.split('://');\n return paths[paths.length >= 2 ? 1 : 0] ?? '';\n }\n\n get pathname() {\n const paths = this.fullPath.split('?');\n return paths[0];\n }\n\n get query() {\n const paths = this.fullPath.split('?');\n // console.log('fullPath', this.fullPath, paths)\n return paths[1] ?? '';\n }\n\n getQueryParamDecodeURI<T>(): T;\n getQueryParamDecodeURI(key: string): string | string[] | undefined;\n getQueryParamDecodeURI<T>(key?: string): string | string[] | undefined | T {\n const p = this.queryParamsDecodeURI;\n if (key) {\n return p[key];\n } else {\n return p as T;\n }\n }\n getQueryParamDecodeURIFirst(key: string): string | undefined {\n const param = this.getQueryParamDecodeURI(key);\n if (Array.isArray(param)) {\n return param[0];\n } else {\n return param;\n }\n }\n\n getQueryParam<T>(): T;\n getQueryParam(key: string): string | string[] | undefined;\n getQueryParam<T>(key?: string): string | string[] | undefined | T {\n const p = this.queryParams;\n if (key) {\n return p[key];\n } else {\n return p as T;\n }\n }\n getQueryParamFirst(key: string): string | undefined {\n const param = this.getQueryParam(key);\n if (Array.isArray(param)) {\n return param[0];\n } else {\n return param;\n }\n }\n\n get queryParams(): { [key: string]: string | string[] } {\n const param = {} as { [key: string]: string | string[] };\n this.query.split('&')?.forEach(it => {\n const a = it.split('=');\n if (param[a[0]]) {\n if (Array.isArray(param[a[0]])) {\n (param[a[0]] as string[]).push(a[1]);\n } else {\n param[a[0]] = [param[a[0]] as string, a[1]];\n }\n } else {\n param[a[0]] = a[1];\n }\n });\n return param;\n }\n\n get queryParamsDecodeURI(): { [key: string]: string | string[] } {\n const params = this.queryParams;\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n const param = params[key];\n if (Array.isArray(param)) {\n params[key] = param.map(p => decodeURIComponent(p));\n } else {\n params[key] = decodeURIComponent(param);\n }\n }\n }\n return params;\n }\n\n getPathnameData(urlExpression: string) {\n return Expression.Path.pathNameData(this.pathname, urlExpression);\n }\n\n get isSymbolScheme(): boolean {\n return this.symbols !== undefined;\n }\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return Subscription.EMPTY;\n }\n\n this._observers.add(partialObserver);\n\n return new Subscription(() => {\n this._observers.delete(partialObserver);\n });\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data);\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}\n", "import { Intent } from './Intent';\n\nexport interface IntentSubscribe {\n intentSubscribe(...args: any[]): void;\n intentSubscribe(intent: Intent): void;\n}\nexport const isIntentSubscribe = (obj: unknown): obj is IntentSubscribe => {\n return !!obj && typeof (obj as any).intentSubscribe === 'function';\n};", "import { Intent } from './Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { Sim } from '../decorators/SimDecorator';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { RouterManager } from '../route/RouterManager';\nimport { RouterMetadataKey, RouterConfig } from '../decorators/route/Router';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SimOption } from '../SimOption';\nimport { isIntentSubscribe } from './IntentSubscribe';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInject, isTargetFactory, isTargetScheme, isTargetSymbol, isTargetType } from '../decorators';\nimport { SimpleApplication } from '../SimpleApplication';\n\nexport type RouterPublishType = {\n router: `Router(${string}):${string}`;\n rootRouter: ConstructorType<any>;\n};\nexport const isRouterPublishType = (it: any): it is RouterPublishType => typeof it === 'object' && it !== null && typeof it.router === 'string' && typeof it.rootRouter === 'function';\n\nexport type SymbolPublishType = { symbol: Symbol | Symbol[]; path: string };\nexport const isSymbolPublishType = (it: any): it is SymbolPublishType => typeof it === 'object' && it !== null && 'symbol' in it && 'path' in it;\n\nexport type SymbolForPublishType = `Symbol.for(${string}):/${string}`;\n\nexport type SchemePublishType = { scheme: string; path: string };\nexport const isSchemePublishType = (it: any): it is SchemePublishType => typeof it === 'object' && it !== null && 'scheme' in it && 'path' in it;\n\nexport type PublishData = Intent | string | RouterPublishType | SymbolPublishType | SymbolForPublishType | SchemePublishType;\n\n// @Sim\nexport class IntentManager {\n private subject = new Subject<Intent>();\n\n constructor(\n private simpleApplication: SimpleApplication,\n private simstanceManager: SimstanceManager,\n private routerManager: RouterManager,\n private simOption: SimOption\n ) {}\n\n get observable() {\n return this.subject.asObservable();\n }\n\n private async makeIntentData(it: PublishData, data?: any) {\n const target: SimAtomic<any> | any[] = [];\n const rootRouter = isRouterPublishType(it) ? it.rootRouter : this.simOption.rootRouter;\n\n if (isRouterPublishType(it)) {\n it = it.router;\n }\n\n const routerMatch = typeof it === 'string' && it.match(/^Router\\((.+)\\):\\/(.*)$/); // Escaped parentheses and slash, no quotes\n if (routerMatch && typeof it === 'string') {\n const routerBasePath = routerMatch[1];\n const actualPath = routerMatch[2];\n const routerModule = await this.routerManager.routing(routerBasePath, {\n router: rootRouter\n });\n const instance = routerModule.getModuleInstance();\n if (instance) {\n target.push(instance);\n }\n it = new Intent(actualPath, data);\n } else if (isSymbolPublishType(it)) {\n it = new Intent({ symbol: it.symbol, uri: it.path as any }, data);\n } else if (isSchemePublishType(it)) {\n it = new Intent(`${it.scheme}://${it.path}`, data);\n } else if (typeof it === 'string') {\n it = new Intent(it, data);\n }\n\n const intent = it as Intent;\n\n if (!routerMatch) {\n if (intent.symbols) {\n target.push(...intent.symbols.map(sym => this.simstanceManager.findSims(sym)).flat());\n } else if (intent.scheme) {\n target.push(...this.simstanceManager.getSimConfig(intent.scheme));\n } else {\n target.push(...this.simstanceManager.getSimAtomics());\n }\n }\n\n return { intent, target };\n }\n\n public async publishMeta(it: PublishData, data?: any): Promise<{ return: any[]; target: any[] }> {\n const { intent, target } = await this.makeIntentData(it, data);\n const r: any[] = [];\n const targetInstances = target.map(it => {\n if (it instanceof SimAtomic) {\n return it.getValue();\n } else {\n return it;\n }\n });\n\n this.subject.next(intent);\n\n for (let data of targetInstances) {\n let orNewSim = data;\n if (orNewSim) {\n const filteredPaths = intent.paths.filter(i => i);\n if (filteredPaths.length > 0) {\n let callthis = orNewSim;\n let lastProp = '';\n // path '/' \uB85C\uD574\uC11C \uACC4\uC18D \uD30C\uACE0\uB4E0\uB2E4.\n filteredPaths.forEach(i => {\n callthis = orNewSim;\n orNewSim = orNewSim?.[i];\n lastProp = i;\n });\n if (orNewSim && typeof orNewSim === 'function') {\n const intentData = Array.isArray(intent.data) ? intent.data : intent.data !== undefined ? [intent.data] : [];\n const result = await this.simstanceManager.executeBindParameterSimPromise({\n target: callthis,\n targetKey: lastProp,\n parameterCount: intentData.length,\n inputParameters: intentData,\n firstCheckMaker: [\n (obj, token, idx) => {\n if (idx < intentData.length) {\n return intentData[idx];\n }\n if (token === Intent && idx === 0) {\n return intent;\n }\n }\n ]\n });\n r.push(result);\n } else if (orNewSim) {\n callthis[lastProp] = intent.data;\n r.push(callthis[lastProp]);\n }\n } else {\n const intentData = Array.isArray(intent.data) ? intent.data : intent.data !== undefined ? [intent.data] : [];\n if (isIntentSubscribe(orNewSim)) {\n r.push(orNewSim.intentSubscribe(...intentData));\n }\n }\n }\n }\n return { return: r, target };\n }\n\n public async publish(it: PublishData, data?: any): Promise<any[]> {\n const rdata = await this.publishMeta(it, data);\n return rdata.return;\n }\n}\n", "\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ReflectMethod} from '../../types/Types';\n\nexport type InjectionConfig = {}\n\nconst InjectionMetadataKey = Symbol('Injection');\nexport function Injection(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function Injection(config?: InjectionConfig): ReflectMethod;\nexport function Injection(configOrTarget?: InjectionConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): void | ReflectMethod {\n if (propertyKey && descriptor) {\n const target = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, {}, target, propertyKey);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const config = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, config ?? {}, target, propertyKey);\n }\n }\n}\n\nexport const getInjection = (target: any, propertyKey: string | symbol): InjectionConfig | undefined => {\n return ReflectUtils.getMetadata(InjectionMetadataKey, target, propertyKey);\n}\n", "import {SimError} from './SimError';\n\nexport class MethodNoSuch extends SimError {\n constructor(message?: string, name?: string, public propertyKeys?: symbol | string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {RouteFilter} from '../../route/RouteFilter';\n\nexport type Filterss = (RouteFilter | ConstructorType<RouteFilter>)[];\nexport type Filters = RouteFilter | ConstructorType<RouteFilter> | Filterss;\nexport type RoteAndFilter = {filters: Filters, target: ConstructorType<Object>};\nexport type RouteTargetMethod = {target: ConstructorType<Object>, propertyKeys: (string|symbol)[], filters?: Filterss}\nexport type RouteProperty = ConstructorType<Object> | RoteAndFilter | [ConstructorType<Object> | RoteAndFilter, any] | RouteTargetMethod | string | Symbol;\nexport type Route = {[name: string]: RouteProperty};\nexport interface RouterConfig {\n path?: string;\n route?: Route;\n routers?: ConstructorType<Object>[];\n filters?: Filters;\n}\n\nexport const RouterMetadataKey = Symbol('Router');\nexport const routerProcess = (config: RouterConfig, target: ConstructorType<any> | Function) => {\n getRoutes(target)?.forEach(it => {\n config.route = (config.route ?? {});\n const paths = Array.isArray(it.config.path) ? it.config.path : [it.config.path];\n for (const path of paths) {\n if (config.route[path]) {\n const route = config.route[path] as RouteTargetMethod;\n route.propertyKeys.push(it.propertyKey);\n route.filters = route.filters ?? [];\n if (Array.isArray(it.config.filters)) {\n route.filters.push(...it.config.filters)\n } else if (it.config.filters) {\n route.filters.push(it.config.filters)\n }\n } else {\n config.route[path] = {target, propertyKeys: [it.propertyKey], filters: it.config.filters} as RouteTargetMethod;\n }\n }\n });\n ReflectUtils.defineMetadata(RouterMetadataKey, config, target);\n}\nexport function Router(target: ConstructorType<any> | Function): void;\nexport function Router(config: RouterConfig): GenericClassDecorator<ConstructorType<any> | Function>;\nexport function Router(configOrTarget: RouterConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function> {\n if (typeof configOrTarget === 'function') {\n const routerConfig: RouterConfig = {\n path: ''\n }\n routerProcess(routerConfig, configOrTarget);\n } else {\n return (target: ConstructorType<any> | Function) => {\n configOrTarget.path = configOrTarget.path ?? '';\n routerProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getRouter = (target: ConstructorType<any> | Function | any): RouterConfig | undefined => {\n if (target != null && typeof target === 'object') {\n target = target.constructor;\n }\n try { return ReflectUtils.getMetadata(RouterMetadataKey, target); } catch (e) {}\n}\n\ntype RouteConfig = { path: string | string[], filters?: Filters }\nexport type SaveRouteConfig = { propertyKey: string | symbol; method: Function; config: RouteConfig; }\nexport const RouteMetadataKey = Symbol('RouteMetadataKey');\n\nexport const Route = (config: RouteConfig): ReflectMethod => {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveRouteConfigs = (ReflectUtils.getMetadata(RouteMetadataKey, target.constructor) ?? []) as SaveRouteConfig[];\n const method = target[propertyKey];\n saveRouteConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(RouteMetadataKey, saveRouteConfigs, target.constructor);\n ReflectUtils.defineMetadata(RouteMetadataKey, config, target, propertyKey);\n };\n}\n\nexport const getRoute = (target: any, propertyKey: string | symbol): RouteConfig | undefined => {\n return ReflectUtils.getMetadata(RouteMetadataKey, target, propertyKey);\n}\n\nexport const getRoutes = (target: any): SaveRouteConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(RouteMetadataKey, target);\n}\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Intent } from '../intent/Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { getInjection } from '../decorators/inject/Injection';\nimport { MethodNoSuch } from '../throwable/MethodNoSuch';\nimport { getRoute, getRouter, getRoutes } from '../decorators/route/Router';\nimport { Expression } from '@dooboostore/core/expression/Expression';\n\nexport class RouterModule<R = SimAtomic, M = any> {\n private _pathData?: Expression.Path.PathNameData;\n private _data?: any;\n private _intent?: Intent;\n private _propertyKeys?: (string | symbol)[];\n private _path?: string;\n\n public get path(): string | undefined {\n return this._path;\n }\n\n public set path(value: string | undefined) {\n this._path = value;\n }\n\n public get data(): any {\n return this._data;\n }\n\n public set data(value: any) {\n this._data = value;\n }\n\n public get intent(): Intent | undefined {\n return this._intent;\n }\n\n public set intent(value: Intent | undefined) {\n this._intent = value;\n }\n\n public get propertyKeys(): (string | symbol)[] | undefined {\n return this._propertyKeys;\n }\n\n public set propertyKeys(value: (string | symbol)[] | undefined) {\n this._propertyKeys = value;\n }\n\n public get pathData(): Expression.Path.PathNameData | undefined {\n return this._pathData;\n }\n public getPathData<T>() {\n return this._pathData as T;\n }\n\n public set pathData(value: Expression.Path.PathNameData | undefined) {\n this._pathData = value;\n }\n\n\n constructor(private simstanceManager: SimstanceManager, public router?: R, public module?: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function }, public routerChains: R[] = []) {\n }\n\n getRouterPath(join = '') {\n return this.getRouterPaths().map(it => it ?? '').join(join)\n }\n\n getRouterPaths() {\n return this.routerChains.map(it => getRouter(it instanceof SimAtomic ? it.type.targetKeyType : it)?.path);\n }\n\n getRouterPathData(pathName: string) {\n return Expression.Path.pathNameData(pathName, this.getRouterPath());\n }\n\n getModuleInstance<T = M>(): T | undefined ;\n getModuleInstance<T = M>(propertyKey?: string | symbol, instanceBind: boolean | any = true): T | undefined {\n const instance = this.simstanceManager.getOrNewSim<T>({target: this.module?.targetKeyType, originTypeTarget: this.module?.originalType});\n if (propertyKey && this.propertyKeys && this.propertyKeys.includes(propertyKey)) {\n let instanceElement = (instance as any)[propertyKey];\n if (instanceBind && typeof instanceBind === 'boolean') {\n instanceElement = instanceElement.bind(instance);\n } else if (instanceBind && typeof instanceBind === 'object') {\n instanceElement = instanceElement.bind(instanceBind);\n }\n return instanceElement;\n } else {\n return instance;\n }\n }\n\n executeModuleProperty(propertyKey: string | symbol, ...param: any[]): any {\n const target = this.getModuleInstance() as any;\n if (propertyKey) {\n const config = getInjection(target, propertyKey);\n if (config) {\n const other = new Map<any, any>();\n param.forEach(it => other.set(it.constructor, it));\n return this.simstanceManager.executeBindParameterSim({target, targetKey: propertyKey}, other)\n } else {\n if (target[propertyKey]) {\n return target[propertyKey]?.(...param);\n } else {\n throw new MethodNoSuch(`${propertyKey.toString()} noSuch`, propertyKey.toString(), propertyKey)\n }\n }\n }\n }\n\n get firstRouteChain() {\n return this.routerChains[0];\n }\n\n get firstRouteChainValue() {\n return (this.firstRouteChain as unknown as SimAtomic<any>)?.getValue();\n }\n\n get lastRouteChain() {\n return this.routerChains[this.routerChains.length - 1];\n }\n\n get lastRouteChainValue() {\n return (this.lastRouteChain as unknown as SimAtomic<any>)?.getValue();\n }\n\n hasActivateInLastRoute(obj: any) {\n return this.lastRouteChainValue?.hasActivate(obj) === true;\n }\n\n\n getQueryParamDecodeURI<T>():T;\n getQueryParamDecodeURI(key: string): string | string[] | undefined;\n getQueryParamDecodeURI<T>(key?: string): string | string[] | undefined | T {\n if (this.intent) {\n return this.intent.getQueryParamDecodeURI(key);\n }\n }\n getQueryParamDecodeURIFirst(key: string): string | undefined {\n if (this.intent) {\n return this.intent.getQueryParamDecodeURIFirst(key);\n }\n }\n\n getQueryParam<T>():T;\n getQueryParam(key: string): string | string[] | undefined;\n getQueryParam<T>(key?: string): string | string[] | undefined {\n if (this.intent) {\n return this.intent.getQueryParam(key);\n }\n }\n getQueryParamFirst(key: string): string | undefined {\n if (this.intent) {\n return this.intent.getQueryParamFirst(key);\n }\n }\n\n get queryParams(): { [key: string]: string|string[] } | undefined {\n if (this.intent) {\n return this.intent.queryParams;\n }\n }\n\n get queryParamsAfterDecodeURI(): { [key: string]: string|string[] } | undefined {\n if (this.intent) {\n return this.intent.queryParamsDecodeURI;\n }\n }\n}\n", "import { RoutingDataSet } from '../route/RouterManager';\n\nexport namespace RouterAction {\n export interface CanActivate {\n canActivate(url: RoutingDataSet, data?: any): Promise<void>;\n }\n export const isCanActivate = (obj: any): obj is CanActivate => {\n return typeof obj?.canActivate === 'function';\n };\n\n export interface OnRouting {\n onRouting(r: RoutingDataSet): Promise<void>;\n }\n\n export const isOnRouting = (obj: any): obj is OnRouting => {\n return typeof obj?.onRouting === 'function';\n };\n\n export interface HasActivate {\n hasActivate(checkObj: any): boolean;\n }\n\n export const isHasActivate = (obj: any): obj is HasActivate => {\n return typeof obj?.hasActivate === 'function';\n };\n}\n", "import {Intent} from '../intent/Intent';\nimport {ConstructorType} from '@dooboostore/core/types';\nimport {RouterModule} from './RouterModule';\nimport {Route, RouterConfig, RouterMetadataKey} from '../decorators/route/Router';\nimport {SimAtomic} from '../simstance/SimAtomic';\nimport {SimstanceManager} from '../simstance/SimstanceManager';\nimport {RouteFilter} from './RouteFilter';\nimport {Sim} from '../decorators/SimDecorator';\nimport {Expression} from '@dooboostore/core/expression/Expression';\nimport {RouterAction} from '../route/RouterAction';\nimport {SimOption} from '../SimOption';\nimport {Subject} from '@dooboostore/core/message/Subject';\nimport {SimpleApplication} from \"../SimpleApplication\";\n\nexport type RoutingOption = { router?: ConstructorType<any> | any, noOnRouting?: boolean, find?: { router: 'last' | 'first' } };\nexport type RoutingDataSet = {\n intent: Intent, routerModule: RouterModule, routerManager: RouterManager\n}\n\n// @Sim\nexport class RouterManager {\n public activeRouterModule?: RouterModule<SimAtomic, any>;\n private subject = new Subject<RoutingDataSet>()\n\n constructor(private simpleApplication: SimpleApplication, private simstanceManager: SimstanceManager, private simOption: SimOption) {\n }\n\n // @SimNoProxy\n get observable() {\n // this.subject.asObservable\n return this.subject.asObservable();\n }\n\n public routingMap(option?: RoutingOption & { prefix?: string }): { [key: string]: string | any } {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const map = {} as { [key: string]: string | any };\n if (targetRouter) {\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const routerData = routerAtomic.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerData) {\n const currentPrefix = (option?.prefix ?? '') + routerData.path;\n // Add the current router's path if it has a default route\n if (routerData.route && routerData.route['']) {\n map[currentPrefix] = routerData.route[''];\n }\n if (routerData.route) {\n Object.entries(routerData.route).forEach(([key, value]) => {\n map[currentPrefix + key] = value;\n });\n }\n routerData.routers?.forEach(it => {\n Object.assign(map, this.routingMap({...option, router: it, prefix: currentPrefix}));\n })\n }\n }\n return map;\n }\n\n /** 일반적인 lifecycle 타지않는 그냥 find.. 의미가없을듯.\n * @deprecated\n */\n public async routings<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>[]> {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const allMatches = this._collectAllMatchingModules(routerAtomic, intent, []);\n\n // Priority 1: Exact path match with a module\n const exactModuleMatches = allMatches.filter(rm => rm.path === intent.pathname && rm.module);\n if (exactModuleMatches.length > 0) {\n exactModuleMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactModuleMatches as RouterModule<R, M>[];\n }\n\n // Priority 2: Exact path match without a module (if no module matches found)\n const exactPathMatches = allMatches.filter(rm => rm.path === intent.pathname);\n if (exactPathMatches.length > 0) {\n exactPathMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactPathMatches as RouterModule<R, M>[];\n }\n\n return [] as RouterModule<R, M>[];\n }\n\n public async routing<R = SimAtomic, M = any>(intent: string, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent | string, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (typeof intent === 'string') {\n intent = new Intent(intent);\n }\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n const callCheckOnRouting = option?.noOnRouting !== true; // 기본값은 false, 즉 onRouting 호출\n\n if (!targetRouter) {\n throw new Error('no router');\n }\n // await new Promise((r)=> setTimeout(r, 0)); // <-- 이거 넣어야지 두번불러지는게 없어지는듯? 뭐지 event loop 변경된건가?\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const rootRouter = routerAtomic.getValue()!;\n const executeModuleResult = this.getExecuteModule(routerAtomic, intent, [], option);\n if (executeModuleResult) {\n const [executeModule, routerChains] = executeModuleResult;\n executeModule.routerChains = routerChains;\n this.activeRouterModule = executeModule;\n const routingDataSet: RoutingDataSet = {intent, routerModule: executeModule, routerManager: this};\n\n // --- 라우팅 경로(Chain)에 있는 모든 라우터의 라이프사이클 훅 호출 ---\n // 최종 목적지에 도달하기까지 거쳐온 모든 중간 라우터들(예: RootRouter -> UserRouter)을 순회하며\n // 각 라우터의 canActivate와 onRouting을 호출합니다.\n // 이를 통해 각 단계에서 라우팅을 검사하거나 공통 작업을 수행할 수 있습니다.\n if (routerChains.length > 0) {\n for (let i = 0; i < routerChains.length; i++) {\n const current = routerChains[i];\n const next = routerChains[i + 1];\n const value = current.getValue()! as any;\n if (RouterAction.isCanActivate(value) && next) {\n await value.canActivate(routingDataSet, next.getValue());\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value) && next) {\n await value.onRouting(routingDataSet);\n }\n }\n }\n this.activeRouterModule = executeModule;\n\n const moduleInstance = executeModule.getModuleInstance();\n\n // --- Case 1: 부분 일치 (라우터는 찾았지만, 특정 모듈은 찾지 못한 경우) ---\n // URL이 라우터의 경로와는 일치하지만, 그 안의 특정 `route` 항목과는 일치하지 않을 때 발생합니다.\n // 이 경우, 일치한 마지막 라우터의 라이프사이클 훅을 호출합니다.\n if (!executeModule?.module) {\n const routerChain = executeModule.routerChains[executeModule.routerChains.length - 1];\n const value = routerChain?.getValue() as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n }\n // --- Case 2: 완전 일치 (라우터와 특정 모듈을 모두 찾은 경우) ---\n // 표준 성공 케이스입니다.\n // 모듈을 포함하는 라우터와 모듈 인스턴스 자체의 라이프사이클 훅을 호출합니다.\n else { // find page\n const value = executeModule.router?.getValue()! as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n // 가지고있는 선택된 Route도 isRouting이면\n if (moduleInstance && callCheckOnRouting && RouterAction.isOnRouting(moduleInstance)) {\n await moduleInstance.onRouting(routingDataSet);\n }\n }\n\n const find = this.activeRouterModule as RouterModule<any, any>;\n this.subject.next({intent: intent, routerModule: find, routerManager: this});\n return find;\n } else {\n const empty = await this._handleNotFoundRouting(rootRouter, intent);\n this.subject.next({intent: intent, routerModule: empty, routerManager: this});\n return empty;\n }\n }\n\n /**\n * URL과 일치하는 라우트를 찾지 못했을 경우를 처리합니다.\n * \"Not Found\" 상태를 나타내는 비어있는 RouterModule 객체를 생성하여 반환합니다.\n * 이 과정에서 rootRouter의 라이프사이클을 호출하여 공통 레이아웃등을 처리할 수 있습니다.\n * @param rootRouter 앱의 최상위 라우터 인스턴스\n * @param intent 확인에 실패한 원본 Intent 객체\n * @private\n */\n private async _handleNotFoundRouting(rootRouter: any, intent: Intent): Promise<RouterModule<any, any>> {\n /*\n * 이전 원본 로직 (참고용)\n * const routers: SimAtomic[] = []; 로 인해 if문이 항상 false가 되어 실제로는 동작하지 않았음.\n *\n * const routers: SimAtomic[] = [];\n * const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, routers);\n * const routingDataSet = {intent, routerModule: routerModule, routerManager: this};\n * if (routers.length && routers.length > 0) {\n * for (let i = 0; i < routers.length; i++) {\n * const current = routers[i];\n * const next = routers[i + 1];\n * const value = current.getValue()! as any;\n * // console.log('routerAction!!!!!!!!!3')\n * if (RouterAction.isCanActivate(value)) {\n * await value.canActivate(routingDataSet, next?.getValue() ?? null);\n * }\n * if (RouterAction.isOnRouting(value)) {\n * await value.onRouting(routingDataSet);\n * }\n * }\n * }\n * this.activeRouterModule = routerModule;\n * return this.activeRouterModule as RouterModule<any, any>;\n */\n const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, []);\n const routingDataSet: RoutingDataSet = {intent, routerModule: routerModule, routerManager: this};\n\n const value = rootRouter;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, null);\n }\n if (RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n\n this.activeRouterModule = routerModule;\n return this.activeRouterModule;\n }\n\n\n private getExecuteModule(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[], option?: RoutingOption): [RouterModule, SimAtomic[]] | undefined {\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerConfig) {\n // filter\n\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n // console.log('----------routerConfig.path', routerConfig.path, 'isRoot', isRoot, 'routerStrings', routerStrings, 'path', path);\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n // first find child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n let bestMatchModule: [RouterModule<SimAtomic, any>, SimAtomic[]] | undefined = undefined;\n let bestMatchLength = -1;\n\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType: child, originalType: child}, this.simstanceManager);\n const executeModule = this.getExecuteModule(routerAtomic, intent, currentParentRouters, option)\n\n if (executeModule) {\n const [rm, chains] = executeModule;\n const currentMatchLength = rm.path?.length || 0;\n if (currentMatchLength > bestMatchLength) {\n bestMatchLength = currentMatchLength;\n bestMatchModule = executeModule;\n } else if (currentMatchLength === bestMatchLength) {\n if (option?.find?.router === 'last') {\n bestMatchModule = executeModule;\n }\n }\n }\n }\n if (bestMatchModule) {\n return bestMatchModule;\n }\n }\n // second find my child routers\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent)\n if (module) {\n return [module, currentParentRouters];\n }\n }\n }\n }\n\n // path: 지금 내 라우터의 path, parentRoots: 부모router path들, url: 사용자가 원하는 full intent url\n private isRootUrl(path: string | undefined, parentRoots: string[], url: string): boolean {\n const searchString = parentRoots.join('') + (path || '');//현재까지 경로 내포함\n if (searchString === '/') {\n return true;\n }\n const searchs = searchString.split('/');\n const urls = url.split('/')\n const trimmedUrls = urls.slice(0, searchs.length).join('/');\n // console.log('!!searchString', searchString, 'url', trimmedUrls);\n return !!Expression.Path.pathNameData(trimmedUrls, searchString);\n // return url.startsWith(searchString)\n }\n\n private _collectAllMatchingModules(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[]): RouterModule[] {\n const matches: RouterModule[] = [];\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n\n if (routerConfig) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return matches;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n\n // Collect matches from child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType: child, originalType: child}, this.simstanceManager);\n matches.push(...this._collectAllMatchingModules(routerAtomic, intent, currentParentRouters));\n }\n }\n\n // Collect matches from current router's routes or the router itself\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent);\n if (module) {\n module.routerChains = currentParentRouters;\n matches.push(module);\n }\n }\n }\n return matches;\n }\n\n private findRouterOrModule(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // 1. Try to find an exact route module match\n const module = this.findRouting(router, routerData, parentRoots, intent);\n if (module?.module) {\n module.intent = intent;\n return module;\n }\n\n // 2. If no exact module, check if the intent path matches the router's path\n const urlRoot = parentRoots.join('') + (routerData.path || '');\n if (this.isRootUrl(routerData.path, parentRoots, intent.pathname)) {\n const rm = new RouterModule(this.simstanceManager, router);\n rm.intent = intent;\n rm.path = urlRoot;\n rm.pathData = intent.getPathnameData(urlRoot);\n return rm;\n }\n return undefined;\n }\n\n private findRouting(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // console.log('findRouting', routerData.route);\n const urlRoot = parentRoots.join('') + routerData.path\n if (routerData.route) {\n for (const it of Object.keys(routerData.route).filter(it => !it.startsWith('_'))) {\n const path = urlRoot + it;\n const pathnameData = intent.getPathnameData(path);\n if (pathnameData) {\n try {\n const dataSet = this.findRouteProperty(routerData.route, it, intent);\n const rm = new RouterModule(this.simstanceManager, router, dataSet.child);\n rm.data = dataSet.data;\n rm.path = path;\n rm.pathData = pathnameData;\n rm.propertyKeys = dataSet.propertyKeys;\n return rm;\n } catch (e) {\n }\n }\n }\n }\n }\n\n private findRouteProperty(route: Route, propertyName: string, intent: Intent): { child?: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function }, data?: any, propertyKeys?: (string | symbol)[] } {\n let child: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function } | undefined;\n let data: any;\n let propertyKeys: undefined | (string | symbol)[];\n const routeElement = route[propertyName];\n if (typeof routeElement === 'function') {\n child = {targetKeyType: routeElement, originalType: routeElement};\n } else if (typeof routeElement === 'symbol') {\n child = this.simstanceManager.findLastSim(routeElement)?.type;\n } else if (typeof routeElement === 'string') {\n return this.findRouteProperty(route, routeElement, intent)\n } else if (Array.isArray(routeElement)) {\n const r = routeElement?.[0];\n if (typeof r === 'object' && 'filters' in r && 'target' in r) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(r.filters)) {\n filters.push(...r.filters);\n } else if (r.filters) {\n filters.push(r.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: r.target, originalType: r.target};\n }\n } else {\n child = {targetKeyType: r, originalType: r};\n }\n data = routeElement?.[1];\n } else if (typeof routeElement === 'object' && 'target' in routeElement && 'propertyKeys' in routeElement) { // RouteTargetMethod\n const noAccept = routeElement.filters?.filter(it => it).some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType: routeElement.target};\n propertyKeys = routeElement.propertyKeys as (string | symbol)[];\n }\n } else if (typeof routeElement === 'object' && 'filters' in routeElement && 'target' in routeElement) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routeElement.filters)) {\n filters.push(...routeElement.filters);\n } else if (routeElement.filters) {\n filters.push(routeElement.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType: routeElement.target};\n }\n }\n return {\n child,\n data,\n propertyKeys\n }\n }\n}\n", "import { SimstanceManager } from './simstance/SimstanceManager';\nimport { SimOption } from './SimOption';\nimport { IntentManager, isRouterPublishType, PublishData, RouterPublishType } from './intent/IntentManager';\nimport { RouterManager, RoutingOption } from './route/RouterManager';\nimport { Intent } from './intent/Intent';\nimport { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { RouterModule } from './route/RouterModule';\nimport { SimAtomic } from './simstance/SimAtomic';\nimport { SimNoSuch } from './throwable/SimNoSuch';\nimport { containers, Sim, SimConfig } from './decorators/SimDecorator';\n\nexport class SimpleApplication {\n public simstanceManager: SimstanceManager;\n public intentManager: IntentManager;\n public routerManager: RouterManager;\n // public rootRouter?: ConstructorType<any>;\n\n // constructor();\n // constructor(option: SimOption);\n // constructor(rootRouter?: ConstructorType<Object> | Function);\n // constructor(rootRouter?: ConstructorType<Object> | Function, option?: SimOption);\n // constructor(rootRouter?: (ConstructorType<Object> | Function) | SimOption, option = new SimOption()) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(public option: SimOption = new SimOption()) {\n // if (option.rootRouter instanceof SimOption) {\n // option = rootRouter;\n // } else if (typeof option.rootRouter === 'function') {\n // this.rootRouter = rootRouter;\n // }\n\n this.simstanceManager = new SimstanceManager(this, option);\n // this.simstanceManager.setStoreSet(SimpleApplication, this);\n this.simstanceManager.setStoreSet(SimstanceManager, this.simstanceManager);\n // cacheManager\uB294 \uC0AC\uC6A9\uC790\uAC00 \uBD88\uB7EC\uB2E4 \uC0AC\uC6A9\uD560\uB54C \uB728\uB3C4\uB85D. \uBBF8\uB9AC \uCD94\uAC00\uC548\uD574\uC900\uB2E4.\n // this.routerManager = this.simstanceManager.proxy(new RouterManager(this.simstanceManager, option));\n // this.intentManager = this.simstanceManager.proxy(new IntentManager(this.simstanceManager, this.routerManager, option));\n this.routerManager = new RouterManager(this, this.simstanceManager, option);\n this.intentManager = new IntentManager(this, this.simstanceManager, this.routerManager, option);\n this.simstanceManager.setStoreSet(IntentManager, this.intentManager);\n this.simstanceManager.setStoreSet(RouterManager, this.routerManager);\n containers.add(this);\n }\n\n public getSimstanceManager(): SimstanceManager {\n return this.simstanceManager;\n }\n\n public getIntentManager(): IntentManager {\n return this.intentManager;\n }\n\n public getRouterManager(): RouterManager {\n return this.routerManager;\n }\n\n public run(otherInstanceSim?: Map<ConstructorType<any> | Function | SimConfig | Symbol, any>): this {\n otherInstanceSim ??= new Map<ConstructorType<any> | Function | SimConfig | Symbol, any>();\n otherInstanceSim.set(SimpleApplication, this);\n this.simstanceManager.run(otherInstanceSim);\n return this;\n // return this.simstanceManager;\n }\n\n public simAtomic<T>(type: ConstructorType<T> | Function | Symbol): SimAtomic<T> | undefined {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findFirstSim(type);\n } else if (typeof type === 'function') {\n return this.simstanceManager.findFirstSim({ type: type });\n // return new SimAtomic<T>(type, this.simstanceManager);\n }\n }\n public simAtomics<T>(type: ConstructorType<T> | Function | Symbol): SimAtomic<T>[] {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findSims(type) ?? [];\n } else if (typeof type === 'function') {\n return this.simstanceManager.findSims({ type }) ?? [];\n } else {\n return [];\n }\n }\n\n public getInstance<T>(type: ConstructorType<T>): T {\n const i = this.sim<T>(type);\n if (i) {\n return i;\n } else {\n throw new SimNoSuch('SimNoSuch: no simple instance(getInstance) ' + 'name:' + type?.prototype?.constructor?.name + ',' + type);\n }\n }\n\n public sim<T>(type: ConstructorType<T> | Function | Symbol): T | undefined {\n return this.simAtomic<T>(type)?.getValue();\n }\n public sims<T>(type: ConstructorType<T> | Function | Symbol): T[] {\n return this.simAtomics(type).map(it => it.getValue());\n }\n\n public addSim(target: ConstructorType<any> | Function): void;\n public addSim(config: SimConfig, target: ConstructorType<any> | Function | any): GenericClassDecorator<ConstructorType<any> | Function>;\n public addSim(configOrTarget: SimConfig | ConstructorType<any> | Function, target?: ConstructorType<any> | Function | any): void | GenericClassDecorator<ConstructorType<any> | Function> {\n const r: any = Sim(configOrTarget as any);\n if (typeof r === 'function' && target) {\n r(target);\n }\n }\n\n public publishIntent(i: PublishData, data?: any): Promise<any[]> {\n return this.intentManager.publish(i, data);\n }\n\n public routing<R = SimAtomic, M = any>(i: string, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string; data?: any }, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: Intent, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string; data?: any } | string | Intent, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (i instanceof Intent) {\n return this.routerManager.routing<R, M>(i, option);\n } else if (typeof i === 'string') {\n const intent = new Intent(i);\n return this.routerManager.routing<R, M>(intent, option);\n } else {\n const intent = new Intent(i.path, i.data);\n return this.routerManager.routing<R, M>(intent, option);\n }\n }\n}\n", "import {Subject} from './Subject';\nimport {Subscription} from './Subscription';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import {ConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport {Observable} from '@dooboostore/core/message/Observable';\nimport {BehaviorSubject} from '@dooboostore/core/message/BehaviorSubject';\nimport {Expression} from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\nimport {ValidUtils} from \"@dooboostore/core/valid/ValidUtils\";\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n search: string;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n}\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, firstUrl?: string };\nexport type ChangeStateResult = { data?: any }\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\nexport type ChangeStateConfig = { noEventAndPublish?: boolean };\nexport type StateOptions = { data?: any, title?: string, config?: ChangeStateConfig };\nexport type RouterMethodOptions = { data?: any, title?: string, config?: ChangeStateConfig };\n\nexport type RouterEventType = RouteData & { triggerPoint: 'start' | 'end' };\n\n// popstate \uC774\uBCA4\uD2B8 \uBB34\uC2DC\uB97C \uC704\uD55C \uB9C8\uCEE4\nconst ROUTER_NO_EVENT_MARKER = '__ROUTER_NO_EVENT__';\n\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouterEventType>;\n private _config: RouterConfig<T>;\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouterEventType;\n if (config?.firstUrl) {\n const path = config.firstUrl.split('?');\n const urlSearchParams = new URLSearchParams(path[1] ?? '');\n routeData = {\n url: config.firstUrl,\n path: path[0],\n searchParams: urlSearchParams,\n router: this,\n search: urlSearchParams.size > 0 ? `?${urlSearchParams.toString()}` : '',\n triggerPoint: 'end'\n }\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(routeData);\n }\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n // console.log('----->', event.state)\n // noEventAndPublish \uB9C8\uCEE4\uAC00 \uC788\uC73C\uBA74 \uC774\uBCA4\uD2B8 \uBC1C\uD589\uD558\uC9C0 \uC54A\uC74C\n // if (event.state && event.state[ROUTER_NO_EVENT_MARKER]) {\n // } else {\n const routeData: RouterEventType = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject.next(routeData);\n // }\n })\n }\n\n\n get observable(): Observable<RouterEventType> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n getSearchParamObject<T>() {\n return this.searchParamObject as unknown as T;\n }\n\n get config() {\n return this._config;\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n // async attach(): Promise<void> {\n // // const proxy = getDomRenderProxy(this.config.rootObject)\n // // if (proxy) {\n // // const key = `___${EventManager.ROUTER_VARNAME}`;\n // // await proxy.render(key);\n // // }\n // }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n } else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: { pathOrUrl?: string, urlExpression?: string }): RouteData {\n\n let path = this.getPathName();\n let url = this.getUrl();\n let searchParams = this.getSearchParams();\n let search = this.getSearch();\n\n // console.log('pppppppppppppp', path,url,searchParams,search);\n // \uC694\uCCAD URL\uC774 \uC788\uC744\uACBD\uC6B0 \uD574\uB2F9 URL\uB85C \uD30C\uC2F1\n if (config?.pathOrUrl) {\n const paths = config.pathOrUrl.split('?');\n search = paths[1] ? `?${paths[1]}`: '';\n searchParams = new URLSearchParams(search);\n const firstUrl = paths[0];\n if (ValidUtils.isUrl(firstUrl)) {\n path = new URL(firstUrl).pathname;\n } else {\n path = firstUrl;\n }\n url = config.pathOrUrl;\n // }\n }\n // console.log('url', url);\n const newVar: RouteData = {\n path: path,\n url: url,\n searchParams: searchParams,\n // \uC774\uB807\uAC8C \uD558\uBA74 \uC9C4\uC9DC \uBB38\uC790\uC5F4\uC774 \uBCC0\uD615\uC774 \uB420\uC218 \uC788\uB2E4 \uB530\uB77C\uC11C \uADF8\uB0E5 \uBB38\uC790\uC5F4 \uC790\uB978 \uC6D0\uBCF8\uC744\uB123\uC5B4\uC918\uC57C\uD55C\uB2E4\n // search: searchParams.size > 0 ? `?${searchParams.toString()}` : '',\n search: search,\n router: this\n };\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n // newVar.router = this;\n // newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n // noEventAndPublish\uAC00 true\uC774\uBA74 \uB9C8\uCEE4 \uCD94\uAC00\n const stateData = config?.noEventAndPublish \n ? { ...data, [ROUTER_NO_EVENT_MARKER]: true }\n : data;\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'start'});\n }\n \n this.config.window.history?.pushState(stateData, title ?? '', path);\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'end'});\n }\n \n return {data: stateData};\n }\n\n replaceState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n // console.log('-re?->', data, title, path, config);\n // noEventAndPublish\uAC00 true\uC774\uBA74 \uB9C8\uCEE4 \uCD94\uAC00\n const stateData = config?.noEventAndPublish \n ? { ...data, [ROUTER_NO_EVENT_MARKER]: true }\n : data;\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'start'});\n }\n \n this.config.window.history?.replaceState(stateData, title ?? '', path);\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'end'});\n }\n \n return {data: stateData};\n }\n\n getData(): any {\n return this.config.window.history?.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n back(config?: ChangeStateConfig): void {\n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history.back();\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n }\n\n forward(config?: ChangeStateConfig): void {\n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history?.forward();\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n }\n\n go(i: number, config?: ChangeStateConfig): void;\n async go(config: string | { path: RouteAction, state?: RouterMethodOptions, replace?: boolean, scrollToTop?: boolean }): Promise<void>;\n go(config: number | string | { path: RouteAction, state?: RouterMethodOptions, replace?: boolean, scrollToTop?: boolean }, changeStateConfig?: ChangeStateConfig): Promise<void> | void {\n if (typeof config === 'number') {\n if (!changeStateConfig?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history?.go(config);\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n return;\n }\n\n if (typeof config === 'string') {\n config = {path: config};\n }\n\n if (config?.replace) {\n this.replace(config.path, config.state);\n } else {\n this.push(config.path, config.state);\n }\n\n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n } catch (e) {\n }\n }\n }\n\n toUrl(data: RouteAction) {\n // console.log('toUrl', data);\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toRawQueryString(data.searchParams, {valueEncodeURIComponent: true}) : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, state?: RouterMethodOptions): void;\n\n abstract replace(path: RouteAction, state?: RouterMethodOptions): void;\n\n abstract pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract pushAddSearchParam(params: [[string, string]], state?: RouterMethodOptions): void;\n\n abstract pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract replaceAddSearchParam(params: [[string, string]], state?: RouterMethodOptions): void;\n\n abstract replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void;\n\n abstract getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams;\n\n abstract getHashSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n\n abstract getSearch(): string;\n\n reload(): void {\n const currentUrl = this.getUrl();\n this.replace(currentUrl);\n }\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // \uCD9C\uB825: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 URL\uC785\uB2C8\uB2E4:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n }\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n }\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD2B9\uC815 \uD0A4\uB97C \uC0AD\uC81C\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n }\n\n /**\n * URLSearchParams\uC5D0 \uD0A4-\uAC12 \uC30D\uC744 \uCD94\uAC00\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n }\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD0A4\uB97C \uC0AD\uC81C\uD558\uACE0 \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00 (upsert)\n * \uAE30\uC874 \uAC12\uC774 \uC788\uC73C\uBA74 \uC0AD\uC81C\uD558\uACE0, \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // \uAE30\uC874 \uAC12 \uC0AD\uC81C\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n }\n\n /**\n * URLSearchParams \uC870\uC791\uC744 \uC704\uD55C \uD5EC\uD37C\n */\n export const manipulateSearchParams = (\n searchParams: URLSearchParams,\n options?: { delete?: string[], append?: [[string, string]], upsert?: Record<string, string | string[]> }\n ): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n }\n\n}", "import { ChangeStateResult, RouteAction, Router, RouterConfig, ChangeStateConfig, RouterMethodOptions } from './Router';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n if (!this.config.window.document?.location?.href) {\n return new URLSearchParams();\n }\n\n const searchParams = (new URL(this.config.window.document.location?.href)).searchParams;\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n return super.pushState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n return super.replaceState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location?.pathname??'/'}${this.config.window.location?.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n pushAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({searchParams: s}, state);\n }\n\n replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location?.pathname??'/'}${this.config.window.location?.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(state?.data, state?.title, href, state?.config);\n }\n\n replaceAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.replace({searchParams: s}, state);\n }\n\n getUrl(): string {\n if (!this.config.window.document?.location?.href) {\n //if ((!this.config.window.document?.location?.href) || (this.config.window.document?.location?.href === 'about:blank')) {\n return '/';\n }\n const url = new URL(this.config.window.document.location?.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location?.href??'/';\n }\n\n getPathName(): string {\n return this.config.window.location?.pathname??'/';\n }\n\n getSearch(): string {\n return this.config.window.location?.search??'';\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location?.hash.slice(1)??'');\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n}\n", "export namespace LocationUtils {\n export const hash = (window: Window): string => {\n return window.location.hash.replace('#', '')\n }\n\n export const hashPath = (window: Window): string => {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n // search\uB294 \uC55E\uC5D0 ? \uBD99\uC5B4\uC788\uB2E4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB3C4 location.search\n export const hashSearch = (window: Window): string => {\n const string = window.location.hash.replace('#', '').split('?')[1];\n return string ? `?${string}` : '';\n }\n\n export const hashQueryParams = (window: Window): Map<string, string> => {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return LocationUtils.queryStringToMap(s);\n }\n\n export const path = (window: Window): string => {\n return window.location.pathname;\n }\n\n export const search = (window: Window): string => {\n return window.location.search || '';\n }\n\n\n export const pathQueryParamsObject = (window: Window): { [key:string]: string } => {\n return LocationUtils.queryStringToObject(window.location.search.substring(1));\n }\n\n export const hashQueryParamsObject = (window: Window): { [key:string]: string } => {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return LocationUtils.queryStringToObject(s);\n }\n }\n\n export const pathQueryParams = (window: Window): Map<string, string> => {\n return LocationUtils.queryStringToMap(window.location.search.substring(1));\n }\n\n export const queryStringToMap = (s: string) => {\n const params = new Map<string, string>();\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params.set(kv[0], kv[1]);\n }\n })\n return params;\n }\n\n export const queryStringToObject = (s: string): { [key:string]: string } => {\n const params = {} as { [key:string]: string };\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params[kv[0]] = kv[1];\n }\n })\n return params;\n }\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig, ChangeStateConfig, RouterMethodOptions } from './Router';\nimport { LocationUtils } from '../location/LocationUtils';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\n\nexport class HashRouter extends Router {\n\n constructor(config: RouterConfig) {\n super(config);\n }\n\n\n getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams {\n const hashSearch = LocationUtils.hashSearch(this.config.window);\n const searchParams = hashSearch ? new URLSearchParams(hashSearch) : (new URL(this.config.window.document.location.href)).searchParams;\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n if (path === '/') {\n return super.pushState(state?.data, state?.title, '/', state?.config);\n } else {\n return super.pushState(state?.data, state?.title, `#${this.toUrl(path)}`, state?.config);\n }\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions):ChangeStateResult {\n if (path === '/') {\n return super.replaceState(state?.data, state?.title, '/', state?.config);\n } else {\n return super.replaceState(state?.data, state?.title, `#${this.toUrl(path)}`, state?.config);\n }\n }\n\n setDeleteHashSearchParam(name: string, state?: RouterMethodOptions) {\n }\n\n pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getHashSearchParams({delete:Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete:Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n pushAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({searchParams: s}, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n replaceAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.replace({searchParams: s}, state);\n }\n\n getUrl(): string {\n return LocationUtils.hash(this.config.window) || '/';\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return LocationUtils.hashPath(this.config.window) || '/';\n }\n\n getSearch(): string {\n return LocationUtils.hashSearch(this.config.window);\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const hash = this.config.window.location.hash;\n const queryIndex = hash.indexOf('?');\n const searchParams = (queryIndex !== -1) ? new URLSearchParams(hash.slice(queryIndex + 1)) : new URLSearchParams();\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n}\n", "import { ChangeStateConfig, ChangeStateResult, RouteAction, Router, RouterConfig, RouterMethodOptions } from '@dooboostore/core-web/routers/Router';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\nexport class ElementRouter extends Router {\n private _history: { url: string; data: any; title?: string }[] = [];\n private _currentIndex = -1;\n\n constructor(config: RouterConfig) {\n // Router \uBD80\uBAA8 \uD074\uB798\uC2A4\uAC00 \uC0DD\uC131\uC790\uC5D0\uC11C go()\uB97C \uD638\uCD9C\uD558\uC5EC \uCD08\uAE30\uD654\uB418\uC9C0 \uC54A\uC740 \uD544\uB4DC\uC5D0 \uC811\uADFC\uD558\uB294 \uAC83\uC744 \uBC29\uC9C0\uD558\uAE30 \uC704\uD574\n // firstUrl\uC744 \uC81C\uAC70\uD558\uACE0 \uB118\uAE34 \uB4A4 \uC790\uC2DD\uC5D0\uC11C \uC218\uB3D9 \uCC98\uB9AC\uD569\uB2C8\uB2E4.\n const { firstUrl, ...rest } = config;\n super(rest);\n\n const startUrl = firstUrl ?? '/';\n this._history = [{ url: startUrl, data: null }];\n this._currentIndex = 0;\n\n if (firstUrl) {\n this.replace(firstUrl, { config: { noEventAndPublish: true } });\n }\n }\n\n // Override pushState to manage internal history\n pushState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'start' });\n }\n\n // Ensure _history is initialized (defense for super calls)\n if (!this._history) this._history = [];\n\n this._history = this._history.slice(0, this._currentIndex + 1);\n this._history.push({ url: path, data, title });\n this._currentIndex++;\n\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'end' });\n }\n return { data };\n }\n\n // Override replaceState to manage internal history\n replaceState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'start' });\n }\n\n if (!this._history) this._history = [];\n if (this._currentIndex === -1) {\n this._history.push({ url: path, data, title });\n this._currentIndex = 0;\n } else {\n this._history[this._currentIndex] = { url: path, data, title };\n }\n\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'end' });\n }\n return { data };\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): void {\n this.pushState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions): void {\n this.replaceState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n back(config?: ChangeStateConfig): void {\n if (this._currentIndex > 0) {\n this.go(-1, config);\n }\n }\n\n forward(config?: ChangeStateConfig): void {\n if (this._currentIndex < this._history.length - 1) {\n this.go(1, config);\n }\n }\n\n go(i: number, config?: ChangeStateConfig): void;\n async go(config: string | { path: RouteAction; state?: RouterMethodOptions; replace?: boolean; scrollToTop?: boolean }): Promise<void>;\n go(config: number | string | { path: RouteAction; state?: RouterMethodOptions; replace?: boolean; scrollToTop?: boolean }, changeStateConfig?: ChangeStateConfig): Promise<void> | void {\n if (typeof config === 'number') {\n const targetIndex = this._currentIndex + config;\n if (this._history && targetIndex >= 0 && targetIndex < this._history.length) {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!changeStateConfig?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData(), triggerPoint: 'start' });\n }\n\n this._currentIndex = targetIndex;\n const entry = this._history[this._currentIndex];\n\n if (!changeStateConfig?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: entry.url }), triggerPoint: 'end' });\n }\n }\n return;\n }\n return super.go(config as any, changeStateConfig);\n }\n\n getData(): any {\n return this._history?.[this._currentIndex]?.data;\n }\n\n getUrl(): string {\n return this._history?.[this._currentIndex]?.url ?? this.config?.firstUrl ?? '/';\n }\n\n getHref(): string {\n return this.getUrl();\n }\n\n getPathName(): string {\n return this.getUrl().split('?')[0];\n }\n\n getSearch(): string {\n const parts = this.getUrl().split('?');\n return parts[1] ? `?${parts[1]}` : '';\n }\n\n getSearchParams(data?: { delete?: string[]; append?: [[string, string]] }): URLSearchParams {\n const search = this.getSearch();\n const searchParams = new URLSearchParams(search);\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n getHashSearchParams(data?: { delete?: string[]; append?: [[string, string]] }): URLSearchParams {\n const url = this.getUrl();\n const hashIdx = url.indexOf('#');\n const hash = hashIdx !== -1 ? url.slice(hashIdx + 1) : '';\n const searchParams = new URLSearchParams(hash);\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n pushAddSearchParam(params: [[string, string]], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ append: params });\n this.push({ searchParams: s }, state);\n }\n\n pushDeleteHashSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });\n const url = this.getUrl().split('#')[0];\n const size = Array.from(s.entries()).length;\n this.push(url + (size > 0 ? '#' + s.toString() : ''), state);\n }\n\n pushDeleteSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ delete: Array.isArray(name) ? name : [name] });\n this.push({ searchParams: s }, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({ searchParams: s }, state);\n }\n\n replaceAddSearchParam(params: [[string, string]], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ append: params });\n this.replace({ searchParams: s }, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });\n const url = this.getUrl().split('#')[0];\n const size = Array.from(s.entries()).length;\n this.replace(url + (size > 0 ? '#' + s.toString() : ''), state);\n }\n\n replaceDeleteSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ delete: Array.isArray(name) ? name : [name] });\n this.replace({ searchParams: s }, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParamObject();\n UrlUtils.upsertSearchParam(s as any, params);\n this.replace({ searchParams: s as any }, state);\n }\n}\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { PathRouter } from '@dooboostore/core-web/routers/PathRouter';\nimport { HashRouter } from '@dooboostore/core-web/routers/HashRouter';\nimport { ElementRouter } from '../router/ElementRouter';\nimport { SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { Router, RouterEventType } from '@dooboostore/core-web/routers/Router';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { ConstructorType, Optional } from '@dooboostore/core/types';\n\nexport type SwcConfigType = {\n rootRouter: ConstructorType<any>;\n routeType: 'path' | 'hash' | 'element';\n path?: string;\n window: Window;\n};\n\nexport type SwcAttributeConfigType = Optional<SwcConfigType, 'routeType' | 'window'>;\n\nexport class SwcAppEngine {\n public simpleApplication?: SimpleApplication;\n public router?: Router;\n private routerSubscription?: Subscription;\n private _isInitialized = false;\n\n constructor(private host: HTMLElement) {}\n\n async connect() {\n if (this._isInitialized) return;\n this._isInitialized = true;\n\n // Wait for event loop to ensure attributes and global scripts are ready\n await new Promise(resolve => setTimeout(resolve, 0));\n\n const configStr = this.host.getAttribute('swc-get-application-config');\n if (!configStr) return;\n\n try {\n const userConfig: SwcAttributeConfigType = new Function(`return ${configStr}`).apply(this.host);\n if (userConfig && userConfig.rootRouter) {\n const _config: SwcConfigType = {\n routeType: 'element',\n window: window,\n ...userConfig\n } as SwcConfigType;\n\n // Router Selection\n if (_config.routeType === 'path') {\n this.router = new PathRouter({ window: _config.window, firstUrl: _config.path });\n } else if (_config.routeType === 'hash') {\n this.router = new HashRouter({ window: _config.window, firstUrl: _config.path });\n } else if (_config.routeType === 'element') {\n this.router = new ElementRouter({ window: _config.window, firstUrl: _config.path });\n }\n\n // Routing sync\n if (this.router) {\n this.routerSubscription = this.router.observable.subscribe((route: RouterEventType) => {\n if (route.triggerPoint === 'end') {\n this.simpleApplication?.routing(route.path);\n }\n });\n }\n\n // App start\n this.simpleApplication = new SimpleApplication(new SimOption({ excludeProxys: [Node], rootRouter: _config.rootRouter }));\n\n const otherInstanceSim = new Map<any, any>();\n if (this.router) otherInstanceSim.set(Router, this.router);\n this.simpleApplication.run(otherInstanceSim);\n\n // Rendering\n const data = this.simpleApplication.sim(_config.rootRouter);\n if (data instanceof Node) {\n if (this.host.shadowRoot) this.host.shadowRoot.replaceChildren(data);\n else this.host.replaceChildren(data);\n }\n\n if (_config.path) await this.router?.go(_config.path);\n }\n } catch (e) {\n console.error('[SWC-APP-ENGINE] Init failed:', e);\n }\n }\n\n disconnect() {\n this.routerSubscription?.unsubscribe();\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-a', extends: 'a' })\nexport class SwcAppAnchor extends HTMLAnchorElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-area', extends: 'area' })\nexport class SwcAppArea extends HTMLAreaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-audio', extends: 'audio' })\nexport class SwcAppAudio extends HTMLAudioElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-base', extends: 'base' })\nexport class SwcAppBase extends HTMLBaseElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-button', extends: 'button' })\nexport class SwcAppButton extends HTMLButtonElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-canvas', extends: 'canvas' })\nexport class SwcAppCanvas extends HTMLCanvasElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-data', extends: 'data' })\nexport class SwcAppData extends HTMLDataElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-datalist', extends: 'datalist' })\nexport class SwcAppDataList extends HTMLDataListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-details', extends: 'details' })\nexport class SwcAppDetails extends HTMLDetailsElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-dialog', extends: 'dialog' })\nexport class SwcAppDialog extends HTMLDialogElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-div', extends: 'div' })\nexport class SwcAppDiv extends HTMLDivElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-dl', extends: 'dl' })\nexport class SwcAppDl extends HTMLDListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-embed', extends: 'embed' })\nexport class SwcAppEmbed extends HTMLEmbedElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-fieldset', extends: 'fieldset' })\nexport class SwcAppFieldSet extends HTMLFieldSetElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-form', extends: 'form' })\nexport class SwcAppForm extends HTMLFormElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-hr', extends: 'hr' })\nexport class SwcAppHr extends HTMLHRElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-iframe', extends: 'iframe' })\nexport class SwcAppIFrame extends HTMLIFrameElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-img', extends: 'img' })\nexport class SwcAppImage extends HTMLImageElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-input', extends: 'input' })\nexport class SwcAppInput extends HTMLInputElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-label', extends: 'label' })\nexport class SwcAppLabel extends HTMLLabelElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-legend', extends: 'legend' })\nexport class SwcAppLegend extends HTMLLegendElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-li', extends: 'li' })\nexport class SwcAppLi extends HTMLLIElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-link', extends: 'link' })\nexport class SwcAppLink extends HTMLLinkElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-map', extends: 'map' })\nexport class SwcAppMap extends HTMLMapElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-meta', extends: 'meta' })\nexport class SwcAppMeta extends HTMLMetaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-meter', extends: 'meter' })\nexport class SwcAppMeter extends HTMLMeterElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-del', extends: 'del' })\nexport class SwcAppMod extends HTMLModElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-object', extends: 'object' })\nexport class SwcAppObject extends HTMLObjectElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-ol', extends: 'ol' })\nexport class SwcAppOl extends HTMLOListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-optgroup', extends: 'optgroup' })\nexport class SwcAppOptGroup extends HTMLOptGroupElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-option', extends: 'option' })\nexport class SwcAppOption extends HTMLOptionElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-output', extends: 'output' })\nexport class SwcAppOutput extends HTMLOutputElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-p', extends: 'p' })\nexport class SwcAppParagraph extends HTMLParagraphElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-param', extends: 'param' })\nexport class SwcAppParam extends HTMLParamElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-picture', extends: 'picture' })\nexport class SwcAppPicture extends HTMLPictureElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-pre', extends: 'pre' })\nexport class SwcAppPre extends HTMLPreElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-progress', extends: 'progress' })\nexport class SwcAppProgress extends HTMLProgressElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-blockquote', extends: 'blockquote' })\nexport class SwcAppQuote extends HTMLQuoteElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-script', extends: 'script' })\nexport class SwcAppScript extends HTMLScriptElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-select', extends: 'select' })\nexport class SwcAppSelect extends HTMLSelectElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-slot', extends: 'slot' })\nexport class SwcAppSlot extends HTMLSlotElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-source', extends: 'source' })\nexport class SwcAppSource extends HTMLSourceElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-span', extends: 'span' })\nexport class SwcAppSpan extends HTMLSpanElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-style', extends: 'style' })\nexport class SwcAppStyle extends HTMLStyleElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-table', extends: 'table' })\nexport class SwcAppTable extends HTMLTableElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-tbody', extends: 'tbody' })\nexport class SwcAppTableSection extends HTMLTableSectionElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-td', extends: 'td' })\nexport class SwcAppTableCell extends HTMLTableCellElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-template', extends: 'template' })\nexport class SwcAppTemplate extends HTMLTemplateElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-textarea', extends: 'textarea' })\nexport class SwcAppTextArea extends HTMLTextAreaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-time', extends: 'time' })\nexport class SwcAppTime extends HTMLTimeElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-title', extends: 'title' })\nexport class SwcAppTitle extends HTMLTitleElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-tr', extends: 'tr' })\nexport class SwcAppTableRow extends HTMLTableRowElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-track', extends: 'track' })\nexport class SwcAppTrack extends HTMLTrackElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-ul', extends: 'ul' })\nexport class SwcAppUl extends HTMLUListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-video', extends: 'video' })\nexport class SwcAppVideo extends HTMLVideoElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-h1', extends: 'h1' })\nexport class SwcAppHeading extends HTMLHeadingElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-body', extends: 'body' })\nexport class SwcAppBody extends HTMLBodyElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Reflect", "hasOwn", "metadataRegistry", "metadata", "OrdinaryDefineOwnMetadata", "OrdinaryHasOwnMetadata", "OrdinaryGetOwnMetadata", "OrdinaryOwnMetadataKeys", "defineMetadata", "hasOwnMetadata", "getOwnMetadata", "getOwnMetadataKeys", "deleteMetadata", "MapIterator", "Map", "Set", "WeakMap", "import_reflect_metadata", "containers", "InjectSituationType", "
|
|
3
|
+
"sources": ["../../../../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js", "../../src/bundle-entry.ts", "../../src/index.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/function/FunctionUtils.ts", "../../src/decorators/onConnectedInnerHtml.ts", "../../src/decorators/addEventListener.ts", "../../src/decorators/lifecycles.ts", "../../src/decorators/emitCustomEvent.ts", "../../src/decorators/changedAttribute.ts", "../../src/decorators/setAttribute.ts", "../../src/decorators/replaceChildren.ts", "../../src/decorators/appendChild.ts", "../../src/utils/Utils.ts", "../../src/config/config.ts", "../../../simple-boot/src/decorators/inject/Inject.ts", "../../src/types.ts", "../../src/decorators/elementDefine.ts", "../../src/decorators/query.ts", "../../src/decorators/queryAll.ts", "../../../core/src/types.ts", "../../../simple-boot/src/throwable/SimError.ts", "../../../simple-boot/src/throwable/SimNoSuch.ts", "../../../core/src/valid/ValidUtils.ts", "../../../simple-boot/src/decorators/SimDecorator.ts", "../../../core/src/parser/path/ObjectPathParser.ts", "../../../core/src/object/ObjectUtils.ts", "../../../simple-boot/src/simstance/SimAtomic.ts", "../../../simple-boot/src/SimOption.ts", "../../../simple-boot/src/decorators/MetaDataAtomic.ts", "../../../simple-boot/src/decorators/aop/AOPDecorator.ts", "../../../simple-boot/src/decorators/exception/ExceptionDecorator.ts", "../../../simple-boot/src/proxy/SimProxyHandler.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../simple-boot/src/lifecycle/OnSimCreate.ts", "../../../simple-boot/src/lifecycle/OnSimCreateCompleted.ts", "../../../simple-boot/src/decorators/SimNoProxy.ts", "../../../core/src/random/RandomUtils.ts", "../../../simple-boot/src/simstance/SimstanceManager.ts", "../../../core/src/expression/Expression.ts", "../../../simple-boot/src/intent/Intent.ts", "../../../core/src/message/Subscription.ts", "../../../core/src/message/Subscriber.ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/Subject.ts", "../../../simple-boot/src/intent/IntentSubscribe.ts", "../../../simple-boot/src/intent/IntentManager.ts", "../../../simple-boot/src/decorators/inject/Injection.ts", "../../../simple-boot/src/throwable/MethodNoSuch.ts", "../../../simple-boot/src/decorators/route/Router.ts", "../../../simple-boot/src/route/RouterModule.ts", "../../../simple-boot/src/route/RouterAction.ts", "../../../simple-boot/src/route/RouterManager.ts", "../../../simple-boot/src/SimpleApplication.ts", "../../../core/src/message/BehaviorSubject.ts", "../../../core-web/src/routers/Router.ts", "../../../core/src/url/UrlUtils.ts", "../../../core-web/src/routers/PathRouter.ts", "../../../core-web/src/location/LocationUtils.ts", "../../../core-web/src/routers/HashRouter.ts", "../../src/router/ElementRouter.ts", "../../src/elements/SwcAppEngine.ts", "../../src/elements/is/SwcAppAnchor.ts", "../../src/elements/is/SwcAppArea.ts", "../../src/elements/is/SwcAppAudio.ts", "../../src/elements/is/SwcAppBase.ts", "../../src/elements/is/SwcAppButton.ts", "../../src/elements/is/SwcAppCanvas.ts", "../../src/elements/is/SwcAppData.ts", "../../src/elements/is/SwcAppDataList.ts", "../../src/elements/is/SwcAppDetails.ts", "../../src/elements/is/SwcAppDialog.ts", "../../src/elements/is/SwcAppDiv.ts", "../../src/elements/is/SwcAppDl.ts", "../../src/elements/is/SwcAppEmbed.ts", "../../src/elements/is/SwcAppFieldSet.ts", "../../src/elements/is/SwcAppForm.ts", "../../src/elements/is/SwcAppHr.ts", "../../src/elements/is/SwcAppIFrame.ts", "../../src/elements/is/SwcAppImage.ts", "../../src/elements/is/SwcAppInput.ts", "../../src/elements/is/SwcAppLabel.ts", "../../src/elements/is/SwcAppLegend.ts", "../../src/elements/is/SwcAppLi.ts", "../../src/elements/is/SwcAppLink.ts", "../../src/elements/is/SwcAppMap.ts", "../../src/elements/is/SwcAppMeta.ts", "../../src/elements/is/SwcAppMeter.ts", "../../src/elements/is/SwcAppMod.ts", "../../src/elements/is/SwcAppObject.ts", "../../src/elements/is/SwcAppOl.ts", "../../src/elements/is/SwcAppOptGroup.ts", "../../src/elements/is/SwcAppOption.ts", "../../src/elements/is/SwcAppOutput.ts", "../../src/elements/is/SwcAppParagraph.ts", "../../src/elements/is/SwcAppParam.ts", "../../src/elements/is/SwcAppPicture.ts", "../../src/elements/is/SwcAppPre.ts", "../../src/elements/is/SwcAppProgress.ts", "../../src/elements/is/SwcAppQuote.ts", "../../src/elements/is/SwcAppScript.ts", "../../src/elements/is/SwcAppSelect.ts", "../../src/elements/is/SwcAppSlot.ts", "../../src/elements/is/SwcAppSource.ts", "../../src/elements/is/SwcAppSpan.ts", "../../src/elements/is/SwcAppStyle.ts", "../../src/elements/is/SwcAppTable.ts", "../../src/elements/is/SwcAppTableSection.ts", "../../src/elements/is/SwcAppTableCell.ts", "../../src/elements/is/SwcAppTemplate.ts", "../../src/elements/is/SwcAppTextArea.ts", "../../src/elements/is/SwcAppTime.ts", "../../src/elements/is/SwcAppTitle.ts", "../../src/elements/is/SwcAppTableRow.ts", "../../src/elements/is/SwcAppTrack.ts", "../../src/elements/is/SwcAppUl.ts", "../../src/elements/is/SwcAppVideo.ts", "../../src/elements/is/SwcAppHeading.ts", "../../src/elements/is/SwcAppBody.ts", "../../src/elements/SwcSubTemplates.ts", "../../src/elements/SwcLoop.ts", "../../src/elements/SwcIf.ts", "../../src/elements/SwcChoose.ts", "../../src/elements/SwcAsync.ts", "../../src/elements/SwcApp.ts"],
|
|
4
|
+
"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 \u00A7 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 'reflect-metadata';\nexport * from './index';\n", "import 'reflect-metadata';\n\n// Decorators\nexport * from './decorators/elementDefine';\nexport * from './decorators/setAttribute';\nexport * from './decorators/changedAttribute';\nexport * from './decorators/onConnectedInnerHtml';\nexport { onConnectedInnerHtml as innerHtml } from './decorators/onConnectedInnerHtml';\nexport * from './decorators/replaceChildren';\nexport * from './decorators/appendChild';\nexport * from './decorators/emitCustomEvent';\nexport * from './decorators/lifecycles';\nexport * from './decorators/query';\nexport * from './decorators/queryAll';\nexport * from './decorators/addEventListener';\n\n// Types\nexport * from './types';\n\n// Apps (Customized Built-in Elements)\nexport * from './elements';\n\n// Utilities\nexport * from './utils/Utils';\n", "import { ConstructorType } from '../types';\n\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n };\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n };\n\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n };\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n };\n\n export const findMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return undefined;\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return results;\n };\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadataFlatten = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMapMetadata = <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n };\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n };\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n };\n\n export const getMetadatas = (target: any) => {\n return getMetadataKeys(target).map(it => getMetadata(it, target));\n };\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n };\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n };\n}\n", "export namespace FunctionUtils {\n export const getParameterNames = (func: Function | any, property?: string | symbol) => {\n if (typeof func === 'object' && property) {\n func = func[property];\n }\n // @ts-ignore https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\u3131\n return (\n new RegExp('(?:' + func.name + '\\\\s*|^)\\\\s*\\\\((.*?)\\\\)')\n .exec(func.toString().replace(/\\n/g, ''))?.[1]\n .replace(/\\/\\*.*?\\*\\//g, '')\n .replace(/ /g, '')\n .split(',') ?? []\n );\n };\n\n export const evalScript = <T>(script: string | null, obj?: any): T | null => {\n try {\n if (script && obj) {\n // eslint-disable-next-line no-new-func\n return Function(`\"use strict\";\n ${script}\n `).bind(obj)();\n } else if (script) {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + script)();\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n };\n\n /**\n * Dynamically executes a script string with provided context and arguments.\n */\n export const execute = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, script).apply(context, argValues);\n };\n\n /**\n * Dynamically executes a script string wrapped with 'return' with provided context and arguments.\n */\n export const executeReturn = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, `return ${script}`).apply(context, argValues);\n };\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface InnerHtmlOptions {\n useShadow?: boolean;\n}\n\nexport interface InnerHtmlMetadata {\n propertyKey: string | symbol;\n options: InnerHtmlOptions;\n}\n\nexport const INNER_HTML_METADATA_KEY = Symbol('simple-web-component:inner-html');\n\n/**\n * @onConnectedInnerHtml decorator to define the initial HTML content when connected.\n */\nexport function onConnectedInnerHtml(options: InnerHtmlOptions): MethodDecorator;\nexport function onConnectedInnerHtml(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function onConnectedInnerHtml(arg1?: InnerHtmlOptions | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {\n const decorator = (options: InnerHtmlOptions, target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getMetadata<InnerHtmlMetadata[]>(INNER_HTML_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n\n if (arg2) {\n return decorator({}, arg1!, arg2);\n }\n\n return (target: Object, propertyKey: string | symbol) => {\n decorator((arg1 as InnerHtmlOptions) || {}, target, propertyKey);\n };\n}\n\nexport const getOnConnectedInnerHtmlMetadata = (target: any): InnerHtmlMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n delegate?: boolean;\n removeOnDisconnected?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n selector: string;\n type: string;\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\n/**\n * @addEventListener decorator to bind events to elements.\n * Usage: @addEventListener('.btn', 'click') onClick() { ... }\n * Usage: @addEventListener('', 'scroll', { passive: true }) onScroll() { ... }\n */\nexport function addEventListener(selector: string, type: string, options: AddEventListenerOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n listeners.push({ selector, type, options, propertyKey });\n };\n}\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { ON_ATTRIBUTE_CHANGED_METADATA_KEY } from './changedAttribute';\nimport { SET_ATTRIBUTE_METADATA_KEY } from './setAttribute';\n\nexport const ON_BEFORE_CONNECTED_METADATA_KEY = Symbol('simple-web-component:on-before-connected');\nexport const ON_AFTER_CONNECTED_METADATA_KEY = Symbol('simple-web-component:on-after-connected');\nexport const ON_BEFORE_DISCONNECTED_METADATA_KEY = Symbol('simple-web-component:on-before-disconnected');\nexport const ON_AFTER_DISCONNECTED_METADATA_KEY = Symbol('simple-web-component:on-after-disconnected');\nexport const ON_BEFORE_ADOPTED_METADATA_KEY = Symbol('simple-web-component:on-before-adopted');\nexport const ON_AFTER_ADOPTED_METADATA_KEY = Symbol('simple-web-component:on-after-adopted');\nexport const ON_ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:on-add-event-listener');\n\nexport const ATTRIBUTE_CHANGED_WILDCARD = '*';\n\nfunction createLifecycleDecorator(metadataKey: symbol): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(metadataKey, constructor) as (string | symbol)[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(metadataKey, list, constructor);\n }\n list.push(propertyKey);\n };\n}\n\nexport const onBeforeConnected = createLifecycleDecorator(ON_BEFORE_CONNECTED_METADATA_KEY);\nexport const onAfterConnected = createLifecycleDecorator(ON_AFTER_CONNECTED_METADATA_KEY);\nexport const onConnected = onAfterConnected;\n\nexport const onBeforeDisconnected = createLifecycleDecorator(ON_BEFORE_DISCONNECTED_METADATA_KEY);\nexport const onAfterDisconnected = createLifecycleDecorator(ON_AFTER_DISCONNECTED_METADATA_KEY);\nexport const onDisconnected = onAfterDisconnected;\n\nexport const onBeforeAdopted = createLifecycleDecorator(ON_BEFORE_ADOPTED_METADATA_KEY);\nexport const onAfterAdopted = createLifecycleDecorator(ON_AFTER_ADOPTED_METADATA_KEY);\nexport const onAdopted = onAfterAdopted;\n\nexport const onAddEventListener = createLifecycleDecorator(ON_ADD_EVENT_LISTENER_METADATA_KEY);\n\n/**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uC21C\uD68C\uD558\uBA70 \uBAA8\uB4E0 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uBA54\uC11C\uB4DC\uB97C \uC218\uC9D1\uD569\uB2C8\uB2E4.\n */\nexport const findAllLifecycleMetadata = <T = (string | symbol)[]>(target: any, metadataKey: symbol): T | undefined => {\n const results = ReflectUtils.findAllMetadataFlatten(metadataKey, target);\n return results.length > 0 ? (results as unknown as T) : undefined;\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface EmitCustomEventOptions {\n type: string;\n attributeName?: string;\n bubbles?: boolean;\n composed?: boolean;\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n options: EmitCustomEventOptions;\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol('simple-web-component:emit-custom-event');\n\nexport function emitCustomEvent(typeOrOptions: string | EmitCustomEventOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n const options: EmitCustomEventOptions = typeof typeOrOptions === 'string' ? { type: typeOrOptions } : typeOrOptions;\n\n if (!options.attributeName) {\n options.attributeName = `swc-on-${options.type}`;\n }\n if (options.bubbles === undefined) options.bubbles = true;\n if (options.composed === undefined) options.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol('simple-web-component:on-attribute-changed');\n\nexport function changedAttribute(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as Map<string, (string | symbol)[]>;\n if (!meta) {\n meta = new Map<string, (string | symbol)[]>();\n ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);\n }\n\n const name = attributeName || String(propertyKey);\n let methods = meta.get(name);\n if (!methods) {\n methods = [];\n meta.set(name, methods);\n }\n if (!methods.includes(propertyKey)) methods.push(propertyKey);\n };\n}\n\nexport const getChangedAttributeMetadata = (target: any): Map<string, (string | symbol)[]> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n\nexport const findAllAttributeChangedMetadata = (target: any): Map<string, (string | symbol)[]> => {\n return ReflectUtils.findAllMapMetadata<string, string | symbol>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, target);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const SET_ATTRIBUTE_METADATA_KEY = Symbol('simple-web-component:set-attribute');\n\nexport function setAttribute(attributeName?: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string, string | symbol>;\n if (!meta) {\n meta = new Map<string, string | symbol>();\n ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, meta, constructor);\n }\n meta.set(attributeName || String(propertyKey), propertyKey);\n };\n}\n\nexport const getSetAttributeMetadata = (target: any): Map<string, string | symbol> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor);\n};\n\nexport const findAllSetAttributeMetadata = (target: any): Map<string, string | symbol> => {\n const result = new Map<string, string | symbol>();\n const maps = ReflectUtils.findAllMetadata<any>(SET_ATTRIBUTE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const REPLACE_CHILDREN_METADATA_KEY = Symbol('simple-web-component:replace-children');\n\n/**\n * @replaceChildren decorator to surgically replace children of a target element.\n * Usage: @replaceChildren('#container') renderPart() { return '<div>New Content</div>'; }\n */\nexport function replaceChildren(selector: string): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor) as Map<string | symbol, string>;\n if (!meta) {\n meta = new Map<string | symbol, string>();\n ReflectUtils.defineMetadata(REPLACE_CHILDREN_METADATA_KEY, meta, constructor);\n }\n meta.set(propertyKey, selector);\n };\n}\n\nexport const getReplaceChildrenMetadata = (target: any): Map<string | symbol, string> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor);\n};\n\nexport const findAllReplaceChildrenMetadata = (target: any): Map<string | symbol, string> => {\n const result = new Map<string | symbol, string>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, string>>(REPLACE_CHILDREN_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport type AppendChildPosition = 'firstChild' | 'lastChild' | 'nextSibling' | 'previousSibling';\n\nexport interface AppendChildOptions {\n position?: AppendChildPosition;\n}\n\nexport interface AppendChildMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: AppendChildOptions;\n}\n\nexport const APPEND_CHILD_METADATA_KEY = Symbol('simple-web-component:append-child');\n\n/**\n * @appendChild decorator to surgically add nodes to a target element.\n * Usage: @appendChild('#list') addItem() { return '<li>New Item</li>'; }\n */\nexport function appendChild(selector: string, options: AppendChildOptions = { position: 'lastChild' }): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getOwnMetadata(APPEND_CHILD_METADATA_KEY, constructor) as Map<string | symbol, AppendChildMetadata>;\n if (!meta) {\n meta = new Map<string | symbol, AppendChildMetadata>();\n ReflectUtils.defineMetadata(APPEND_CHILD_METADATA_KEY, meta, constructor);\n }\n meta.set(propertyKey, { propertyKey, selector, options });\n };\n}\n\nexport const findAllAppendChildMetadata = (target: any): Map<string | symbol, AppendChildMetadata> => {\n const result = new Map<string | symbol, AppendChildMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, AppendChildMetadata>>(APPEND_CHILD_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n", "import { SwcAppInterface, HostSet, HelperSet, HelperHostSet } from '../types';\nimport { getElementConfig } from '../decorators/elementDefine';\n\nexport const SWC_NOT_FOUND = Symbol('SWC_NOT_FOUND');\n\nexport namespace SwcUtils {\n export const getHelperSet = (win: Window): HelperSet => {\n const doc: Document = win.document;\n return {\n $d: doc,\n $w: win,\n $q: (sel: string, root?: Element | Document | ShadowRoot) => (root ?? doc).querySelector(sel),\n $qa: (sel: string, root?: Element | Document | ShadowRoot) => Array.from((root ?? doc).querySelectorAll(sel)) as HTMLElement[],\n $qi: (id: string, root?: Document | ShadowRoot) => (root ?? doc).getElementById(id) as HTMLElement\n } as const;\n };\n\n export const getHelperAndHostSet = (win: Window, el: HTMLElement): HelperHostSet => {\n const helperSet = getHelperSet(win);\n const hostSet = getHostSet(el);\n return {\n ...helperSet,\n ...hostSet\n };\n };\n\n export const getValueByPath = (obj: any, path: string, rootName: string) => {\n if (!obj || !path) return SWC_NOT_FOUND;\n\n const parts = path.split('.');\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) return SWC_NOT_FOUND;\n current = current[part];\n }\n return current;\n };\n\n /**\n * Finds the nearest logical SWC host for an element.\n * Checks __swc_host property first, then climbs the DOM tree.\n */\n export const findNearestSwcHost = (el: HTMLElement | Node): HTMLElement | undefined => {\n if ((el as any).__swc_host) return (el as any).__swc_host;\n\n let current: any = el.parentElement || (el.getRootNode?.() as any)?.host;\n while (current && current !== document && current !== window) {\n if (current.__swc_host) return current.__swc_host;\n if (getElementConfig(current)) return current as HTMLElement;\n current = current.parentElement || (current.getRootNode?.() as any)?.host;\n }\n return undefined;\n };\n\n /**\n * Returns all SWC ancestors (excluding self) in [root, ..., parent] order.\n */\n export const findAllSwcHosts = (el: HTMLElement | Node): HTMLElement[] => {\n const hosts: HTMLElement[] = [];\n let current = findNearestSwcHost(el);\n while (current) {\n hosts.push(current);\n // To find the next ancestor, we must start searching from the PARENT of the found host\n current = findNearestSwcHost(current);\n }\n return hosts.reverse();\n };\n\n export const getHosts = (el: HTMLElement): HTMLElement[] => {\n const ancestors = findAllSwcHosts(el);\n if (getElementConfig(el)) return [...ancestors, el];\n return ancestors;\n };\n\n export const getHost = (el: HTMLElement): HTMLElement | undefined => {\n if (getElementConfig(el)) return el;\n return findNearestSwcHost(el);\n };\n\n export const getAppHosts = (el: HTMLElement): SwcAppInterface[] => {\n const hosts = getHosts(el);\n return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n };\n\n export const getAppHost = (el: HTMLElement): SwcAppInterface | undefined => {\n const appHosts = getAppHosts(el);\n const appHostsWithoutSelf = appHosts.filter(h => h !== el);\n return appHostsWithoutSelf.length > 0 ? appHostsWithoutSelf[appHostsWithoutSelf.length - 1] : undefined;\n };\n\n export const getHostSet = (el: HTMLElement): HostSet => {\n const isSwc = !!getElementConfig(el);\n const ancestors = findAllSwcHosts(el); // [root, ..., parent]\n\n let $host: HTMLElement;\n let $parentHost: HTMLElement | null;\n\n if (isSwc) {\n $host = el;\n $parentHost = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;\n } else {\n $host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : el;\n $parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;\n }\n\n const $hosts = isSwc ? [...ancestors, el] : ancestors;\n const $firstHost = $hosts.length > 0 ? $hosts[0] : null;\n\n // Collect loop contexts\n const loopContext: Record<string, any> = {};\n let curr: any = el;\n while (curr && curr !== document.documentElement) {\n if (curr.__swc_loop_context) {\n Object.assign(loopContext, curr.__swc_loop_context);\n }\n curr = curr.parentElement || (curr.getRootNode() as any).host;\n }\n\n const $appHosts = $hosts.filter(h => h.tagName.toLowerCase() === 'swc-app' || h.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];\n const $appHost = $appHosts.length > 0 ? ($appHosts[$appHosts.length - 1] === el ? ($appHosts.length > 1 ? $appHosts[$appHosts.length - 2] : null) : $appHosts[$appHosts.length - 1]) : null;\n const $firstAppHost = $appHosts.length > 0 ? $appHosts[0] : null;\n\n return {\n $host,\n $parentHost,\n $hosts,\n $firstHost,\n $lastHost: $parentHost,\n $appHost,\n $appHosts,\n $firstAppHost,\n $lastAppHost: $appHost,\n ...loopContext\n } as any;\n };\n}\n", "export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', 'unload', 'hashchange', 'connected'];\n", "import { ConstructorType, MethodKeys } from '@dooboostore/core/types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { ExceptionHandlerSituationType } from '../exception/ExceptionDecorator';\nimport { SimpleApplication } from '../../SimpleApplication';\n\nexport enum InjectSituationType {\n INDEX = 'SIMPLE_BOOT_CORE://Inject/INDEX'\n}\n\nexport type SituationType = string | Symbol | ConstructorType<any> | InjectSituationType | ExceptionHandlerSituationType;\n\nexport class SituationTypeContainer {\n public situationType: SituationType;\n public data: any;\n public index?: number;\n\n constructor({ situationType, data, index }: { situationType: SituationType; data: any; index?: number }) {\n this.situationType = situationType;\n this.data = data;\n this.index = index;\n }\n}\n\nexport class SituationTypeContainers {\n public containers: SituationTypeContainer[] = [];\n\n constructor(containers?: SituationTypeContainer[]) {\n if (containers) {\n this.containers.push(...containers);\n }\n }\n\n public push(...item: SituationTypeContainer[]) {\n this.containers.push(...item);\n }\n\n get length() {\n return this.containers.length;\n }\n\n find(predicate: (value: SituationTypeContainer, index: number, obj: SituationTypeContainer[]) => unknown, thisArg?: any): SituationTypeContainer | undefined {\n return this.containers.find(predicate);\n }\n}\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 \uACF5\uD1B5 \uC635\uC158\ntype InjectOptions = {\n situationType?: SituationType;\n proxy?: ConstructorType<ProxyHandler<any>> | ((caller: { application: SimpleApplication; instance: any }) => ProxyHandler<any>);\n optional?: boolean;\n};\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] 3\uB300 \uC8FC\uC785 \uC804\uB7B5\nexport type InjectBySymbol = {\n symbol: Symbol;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: any }) => any;\n};\n\nexport type InjectByType<T> = {\n type?: ConstructorType<T> | Function;\n scheme?: string;\n factory?: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication; injectInstance?: T }) => any;\n};\n\nexport type InjectByFactory<T> = {\n factory: (caller: { instance?: any; methodName?: string | symbol; parameter: any[]; application: SimpleApplication }) => T;\n};\n\nexport type InjectConfig<T = any> = InjectOptions & (InjectBySymbol | InjectByType<T> | InjectByFactory<T>);\n\n// [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] Type Guards\nexport const isTargetSymbol = (config: InjectConfig): config is InjectOptions & InjectBySymbol => {\n return 'symbol' in config && config.symbol !== undefined;\n};\n\nexport const isTargetType = (config: InjectConfig): config is InjectOptions & { type: ConstructorType<any> } & InjectByType<any> => {\n return 'type' in config && config.type !== undefined;\n};\n\nexport const isTargetScheme = (config: InjectConfig): config is InjectOptions & { scheme: string } & InjectByType<any> => {\n return 'scheme' in config && config.scheme !== undefined;\n};\n\nexport const isTargetFactory = (config: InjectConfig): config is InjectOptions & InjectByFactory<any> => {\n return 'factory' in config && typeof config.factory === 'function' && !('symbol' in config) && !('type' in config) && !('scheme' in config);\n};\n\nexport const isTargetNone = (config: InjectConfig): boolean => {\n return !('symbol' in config) && !('type' in config) && !('scheme' in config) && !isTargetFactory(config);\n};\n\nexport type SaveInjectConfig = {\n index: number;\n type?: ConstructorType<any>;\n propertyKey?: string | symbol;\n config: InjectConfig;\n};\n\nconst InjectMetadataKey = Symbol('Inject');\nconst injectProcess = (config: InjectConfig, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') {\n const otarget = target;\n target = target.constructor;\n const saves = (Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(otarget, propertyKey)[parameterIndex];\n saves.push({ index: parameterIndex, config: config, propertyKey, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, saves, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') {\n const existingInjectdParameters = (ReflectUtils.getMetadata(InjectMetadataKey, target) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(target)[parameterIndex];\n existingInjectdParameters.push({ index: parameterIndex, config: config, type });\n ReflectUtils.defineMetadata(InjectMetadataKey, existingInjectdParameters, target);\n }\n};\n\nexport function Inject(target: Object, propertyKey: string | symbol | undefined, parameterIndex: number): void;\nexport function Inject<T = any>(config: InjectConfig<T>): ParameterDecorator;\nexport function Inject<T = any>(configOrTarget: Object | InjectConfig<T>, propertyKey?: string | symbol | undefined, parameterIndex?: number): void | ParameterDecorator {\n if (propertyKey && parameterIndex !== undefined) {\n injectProcess({} as any, configOrTarget, propertyKey, parameterIndex);\n } else {\n return (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n injectProcess(configOrTarget as InjectConfig, target, propertyKey, parameterIndex);\n };\n }\n}\n\nexport const getInject = (target: any, propertyKey?: string | symbol): SaveInjectConfig[] => {\n return ReflectUtils.findMetadata(InjectMetadataKey, target, propertyKey) ?? [];\n};\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web/routers/Router';\n\nexport enum InjectSituationType {\n HOST_SET = 'SIMPLE_WEB_COMPONENT://HOSTSET',\n APP_HOST = 'SIMPLE_WEB_COMPONENT://APPHOST',\n APP_HOSTS = 'SIMPLE_WEB_COMPONENT://APPHOSTS',\n HOST = 'SIMPLE_WEB_COMPONENT://HOST',\n PARENT_HOST = 'SIMPLE_WEB_COMPONENT://PARENTHOST',\n HOSTS = 'SIMPLE_WEB_COMPONENT://HOSTS',\n FIRST_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTHOST',\n LAST_HOST = 'SIMPLE_WEB_COMPONENT://LASTHOST',\n FIRST_APP_HOST = 'SIMPLE_WEB_COMPONENT://FIRSTAPPHOST',\n LAST_APP_HOST = 'SIMPLE_WEB_COMPONENT://LASTAPPHOST'\n}\nexport type HelperSet = {\n $d: Document;\n $w: Window;\n $q: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement | null;\n $qa: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement[];\n $qi: (selector: string, root?: Element | Document | ShadowRoot) => HTMLElement | null;\n}\nexport type HostSet = {\n $host: HTMLElement; // Current component itself\n $parentHost: HTMLElement | null; // Nearest parent SWC component\n $hosts: HTMLElement[]; // [self, parent, ..., top]\n $firstHost: HTMLElement | null; // Top-most SWC ancestor\n $lastHost: HTMLElement | null; // Same as $parentHost (for backward compatibility or clarity)\n $appHost: SwcAppInterface | null;\n $appHosts: SwcAppInterface[];\n $firstAppHost: SwcAppInterface | null;\n $lastAppHost: SwcAppInterface | null;\n};\n\nexport type HelperHostSet = HelperSet & HostSet;\n\nexport interface SwcAppInterface extends HTMLElement {\n simpleApplication?: SimpleApplication;\n router?: Router;\n routing(path: string): Promise<void>;\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\nimport { getOnConnectedInnerHtmlMetadata } from './onConnectedInnerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, ON_ADD_EVENT_LISTENER_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD, findAllLifecycleMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { changedAttribute, findAllAttributeChangedMetadata } from './changedAttribute';\nimport { setAttribute, findAllSetAttributeMetadata } from './setAttribute';\nimport { findAllReplaceChildrenMetadata } from './replaceChildren';\nimport { findAllAppendChildMetadata } from './appendChild';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationType, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web/routers/Router';\nimport { InjectSituationType, HostSet, SwcAppInterface } from '../types';\n\n// --- Core Interfaces & Types ---\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n window?: Window;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\n// Shared state for global delegation to prevent multiple listeners on the same root\nconst globalDelegatedRoots = new WeakSet<Node>();\n\n// --- Environment Initialization Helper ---\n\nfunction buildEnv(configWindow?: Window) {\n const win: any = configWindow || (typeof window !== 'undefined' ? window : undefined);\n const doc: Document = win?.document;\n\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if (win?.[cls]) builtInTagMap.set(win[cls], tag);\n }\n\n const domHelpers = SwcUtils.getHelperSet(win);\n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n config.window = win;\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = constructor;\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n config.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const setAttrMap = findAllSetAttributeMetadata(constructor);\n const replaceChildrenMap = findAllReplaceChildrenMetadata(constructor);\n const appendChildMap = findAllAppendChildMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...attrChangeMap.keys(), ...setAttrMap.keys(), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];\n const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _emitHandlers = new Map<string, EventListener>();\n private _boundListeners: Array<{ target: EventTarget; type: string; handler: EventListener; options?: any }> = [];\n\n private _executeSwcScript(attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };\n FunctionUtils.execute({ script, context: this, args });\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n }\n\n private async _invokeLifecycleMethod(methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {\n if (typeof (this as any)[methodName] !== 'function') return;\n const app = hostSet.$appHost?.simpleApplication;\n\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSimPromise(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n }\n\n private _bindAttributeEvent(el: HTMLElement, attrName: string, script: string, eventName?: string) {\n if (!eventName) {\n if (!attrName.startsWith('swc-on-')) return;\n eventName = attrName.substring(7);\n }\n if (swcLifecycleAttributes.includes(attrName)) return;\n\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = (event: any) => {\n const hostSet = SwcUtils.getHostSet(el);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...hostSet,\n ...SWC_DOM_HELPERS\n };\n FunctionUtils.execute({ script, context: el, args });\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n }\n\n constructor(...args: any[]) {\n super(...args);\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-constructor', hostSet);\n\n if (connectedInnerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n async connectedCallback() {\n const conf = getElementConfig(this);\n const currentWin = conf?.window || window;\n const currentDoc = currentWin.document;\n\n const hostSet = SwcUtils.getHostSet(this as any);\n\n this._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n\n if (connectedInnerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of connectedInnerHtmlList) {\n const res = await (this as any)[meta.propertyKey]();\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n // --- Optimized Host Delegation ---\n const createDelegationHandler = (delegateHost: any) => (event: Event) => {\n if ((event as any).__swc_handled) return;\n\n const path = event.composedPath();\n const type = event.type;\n const attrName = `swc-on-${type}`;\n\n for (const node of path) {\n if (node === delegateHost) break;\n if (!(node instanceof HTMLElement)) continue;\n\n const script = node.getAttribute?.(attrName);\n if (script && !getElementConfig(node)) {\n const host = SwcUtils.findNearestSwcHost(node);\n if (host) {\n const childHostSet = SwcUtils.getHostSet(node);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...childHostSet,\n ...SWC_DOM_HELPERS\n };\n FunctionUtils.execute({ script, context: node, args });\n (event as any).__swc_handled = true;\n break;\n }\n }\n }\n };\n\n // 1. Local Delegation (To itself)\n DOM_EVENT_NAMES.forEach(type => {\n const handler = createDelegationHandler(this);\n this.addEventListener(type, handler);\n this._boundListeners.push({ target: this as any, type, handler });\n });\n\n // 2. Structural/Global Delegation (If no parent host exists)\n const hasParentHost = SwcUtils.findAllSwcHosts(this as any).length > 0;\n if (!hasParentHost) {\n const root = this.getRootNode();\n if (!globalDelegatedRoots.has(root)) {\n DOM_EVENT_NAMES.forEach(type => {\n const handler = createDelegationHandler(root);\n root.addEventListener(type, handler);\n });\n globalDelegatedRoots.add(root);\n }\n }\n\n // --- @addEventListener binding (Direct/Delegate/Global) ---\n addEventListenerList.forEach(meta => {\n const { selector, type, options } = meta;\n const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate, removeOnDisconnected } = options;\n const opts = { capture, once, passive };\n\n const bindTargets: EventTarget[] = [];\n\n if (selector === ':window') {\n bindTargets.push(currentWin);\n } else if (selector === ':document') {\n bindTargets.push(currentDoc);\n } else if (selector === ':parentHost') {\n if (hostSet.$parentHost) bindTargets.push(hostSet.$parentHost);\n } else if (selector === ':appHost') {\n if (hostSet.$appHost) bindTargets.push(hostSet.$appHost);\n } else if (selector === ':firstHost') {\n if (hostSet.$firstHost) bindTargets.push(hostSet.$firstHost);\n } else if (selector === ':lastHost') {\n if (hostSet.$lastHost) bindTargets.push(hostSet.$lastHost);\n } else if (selector === ':firstAppHost') {\n if (hostSet.$firstAppHost) bindTargets.push(hostSet.$firstAppHost);\n } else if (selector === ':lastAppHost') {\n if (hostSet.$lastAppHost) bindTargets.push(hostSet.$lastAppHost);\n } else if (!selector || selector === ':host') {\n bindTargets.push(this as any);\n } else if (delegate) {\n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') bindRoots.push(this as any);\n else if (r === 'shadow') {\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n bindRoots.push(this as any);\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n }\n\n bindRoots.forEach(br => {\n const handler = (event: Event) => {\n const matchedEl = (event.target as HTMLElement).closest(selector);\n if (matchedEl && (br as any).contains(matchedEl)) {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl]);\n }\n };\n br.addEventListener(type, handler, opts);\n const self: any = this;\n if (removeOnDisconnected === true || (br !== self && br !== self.shadowRoot)) {\n this._boundListeners.push({ target: br, type, handler, options: opts });\n }\n });\n } else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') searchRoots.push((this.shadowRoot || (this as any)) as any);\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow') {\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));\n });\n }\n\n bindTargets.forEach(target => {\n const handler = (event: Event) => {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet]);\n };\n target.addEventListener(type, handler, opts);\n if (removeOnDisconnected === true || target === currentWin || target === currentDoc) {\n this._boundListeners.push({ target, type, handler, options: opts });\n }\n });\n });\n\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n this._executeSwcScript('swc-on-connected', hostSet);\n this._executeSwcScript('swc-on-after-connected', hostSet);\n }\n\n disconnectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n this._boundListeners.forEach(l => l.target.removeEventListener(l.type, l.handler, l.options));\n this._boundListeners = [];\n\n if (super.disconnectedCallback) super.disconnectedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-disconnected', hostSet);\n this._executeSwcScript('swc-on-after-disconnected', hostSet);\n }\n\n adoptedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.adoptedCallback) super.adoptedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-adopted', hostSet);\n this._executeSwcScript('swc-on-after-adopted', hostSet);\n }\n\n attributeChangedCallback(name: string, old: string | null, newVal: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, old, newVal);\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n const customEventMeta = emitCustomEventList.find(it => it.options.attributeName === name);\n const eventName = customEventMeta ? customEventMeta.options.type : name.substring(7);\n this._bindAttributeEvent(this as any, name, newVal, eventName);\n }\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n const hSet = SwcUtils.getHostSet(this as any);\n mKeys.forEach(key => this._invokeLifecycleMethod(key, hSet, [newVal, old, name]));\n }\n }\n };\n\n // --- @setAttribute wrapping logic ---\n setAttrMap.forEach((methodName, attrName) => {\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n if (res === null) this.removeAttribute(attrName);\n else this.setAttribute(attrName, String(res));\n }\n return res;\n };\n }\n });\n\n // --- @emitCustomEvent wrapping logic ---\n emitCustomEventList.forEach(meta => {\n const { propertyKey, options } = meta;\n const original = NewClass.prototype[propertyKey as any];\n if (typeof original === 'function') {\n NewClass.prototype[propertyKey as any] = function (...args: any[]) {\n const detail = original.apply(this, args);\n const event = new CustomEvent(options.type, {\n detail,\n bubbles: options.bubbles,\n composed: options.composed,\n cancelable: options.cancelable\n });\n this.dispatchEvent(event);\n return detail;\n };\n }\n });\n\n // --- @replaceChildren wrapping logic ---\n replaceChildrenMap.forEach((selector, methodName) => {\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n const conf = getElementConfig(this);\n const currentWin = conf?.window || window;\n const currentDoc = currentWin.document;\n\n let targetEl: Element | null = null;\n if (selector === ':host' || !selector) {\n targetEl = this;\n } else {\n targetEl = (this.shadowRoot || this).querySelector(selector);\n }\n\n if (targetEl) {\n const nodes: (Node | string)[] = Array.isArray(res) ? res : [res];\n const normalizedNodes = nodes.map(n => {\n if (typeof n === 'string') {\n const t = currentDoc.createElement('template');\n t.innerHTML = n;\n return t.content;\n }\n return n as Node;\n });\n (targetEl as any).replaceChildren(...normalizedNodes);\n }\n }\n return res;\n };\n }\n });\n\n // --- @appendChild wrapping logic ---\n appendChildMap.forEach((meta, methodName) => {\n const { selector, options } = meta;\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n const conf = getElementConfig(this);\n const currentWin = conf?.window || window;\n const currentDoc = currentWin.document;\n\n let targetEl: Element | null = null;\n if (selector === ':host' || !selector) {\n targetEl = this;\n } else {\n targetEl = (this.shadowRoot || this).querySelector(selector);\n }\n\n if (targetEl) {\n const nodes: (Node | string)[] = Array.isArray(res) ? res : [res];\n const normalizedNodes = nodes.map(n => {\n if (typeof n === 'string') {\n const t = currentDoc.createElement('template');\n t.innerHTML = n;\n return t.content;\n }\n return n as Node;\n });\n\n const pos = options.position || 'lastChild';\n if (pos === 'lastChild') (targetEl as any).append(...normalizedNodes);\n else if (pos === 'firstChild') (targetEl as any).prepend(...normalizedNodes);\n else if (pos === 'nextSibling') (targetEl as any).after(...normalizedNodes);\n else if (pos === 'previousSibling') (targetEl as any).before(...normalizedNodes);\n }\n }\n return res;\n };\n }\n });\n\n const originalProto = constructor.prototype;\n const newProto = NewClass.prototype;\n Object.getOwnPropertyNames(originalProto).forEach(name => {\n if (name === 'constructor') return;\n const keys = Reflect.getMetadataKeys(originalProto, name);\n keys.forEach(key => Reflect.defineMetadata(key, Reflect.getMetadata(key, originalProto, name), newProto, name));\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, constructor);\n const registry = config.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\n }\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface QueryOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n}\n\nexport interface QueryMetadata {\n selector: string;\n options: QueryOptions;\n propertyKey: string | symbol;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selector: string, options: QueryOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = target.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey });\n\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return hostSet.$parentHost;\n if (selector === ':appHost') return hostSet.$appHost;\n if (selector === ':firstHost') return hostSet.$firstHost;\n if (selector === ':lastHost') return hostSet.$lastHost;\n if (selector === ':firstAppHost') return hostSet.$firstAppHost;\n if (selector === ':lastAppHost') return hostSet.$lastAppHost;\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n const doc = win.document;\n\n if (selector === ':window') return win;\n if (selector === ':document') return doc;\n if (!selector || selector === ':host') return this;\n\n // --- Standard Selectors ---\n const r = options.root || 'auto';\n\n if (r === 'shadow') {\n return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n }\n if (r === 'light') {\n return this.querySelector(selector);\n }\n if (r === 'all') {\n return this.shadowRoot?.querySelector(selector) || this.querySelector(selector);\n }\n // auto\n return (this.shadowRoot || this).querySelector(selector);\n },\n set(this: HTMLElement, nv: any) {\n if (nv === null || nv === undefined) {\n const r = options.root || 'auto';\n let targetEl: Element | null = null;\n if (r === 'shadow') targetEl = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n else if (r === 'light') targetEl = this.querySelector(selector);\n else if (r === 'all') targetEl = this.shadowRoot?.querySelector(selector) || this.querySelector(selector);\n else targetEl = (this.shadowRoot || this).querySelector(selector);\n\n if (targetEl) targetEl.remove();\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface QueryAllOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n}\n\nexport interface QueryAllMetadata {\n selector: string;\n options: QueryAllOptions;\n propertyKey: string | symbol;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');\n\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n */\nexport function queryAll(selector: string, options: QueryAllOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = target.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey });\n\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':hosts') return hostSet.$hosts;\n if (selector === ':appHosts') return hostSet.$appHosts;\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n const doc = win.document;\n\n if (selector === ':window') return [win];\n if (selector === ':document') return [doc];\n if (!selector || selector === ':host') return [this];\n\n // --- Standard Selectors ---\n const r = options.root || 'auto';\n\n if (r === 'shadow') {\n return this.shadowRoot ? this.shadowRoot.querySelectorAll(selector) : [];\n }\n if (r === 'light') {\n return this.querySelectorAll(selector);\n }\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n // auto\n const root = this.shadowRoot || this;\n return root.querySelectorAll(selector);\n },\n set(this: HTMLElement, nv: any) {\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const r = options.root || 'auto';\n let targets: (Element | Node)[] = [];\n if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));\n else if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n targets = [...sNodes, ...lNodes];\n } else {\n targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));\n }\n targets.forEach(t => (t as Element).remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "export class SimError {\n message?: string;\n name?: string;\n stack?: string;\n\n constructor(message?: string, name?: string, stack?: string) {\n this.message = message;\n this.name = name;\n this.stack = stack;\n }\n}\n", "import {SimError} from './SimError';\n\nexport class SimNoSuch extends SimError {\n constructor(message?: string, name?: string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return data !== null && data !== undefined;\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport enum Lifecycle {\n /**\n * The default registration scope, Each resolve will return the same instance (including resolves from child containers)\n */\n Singleton = 'Singleton',\n /**\n * a new instance will be created with each resolve\n */\n Transient = 'Transient'\n}\n\nexport const sims = new Map<ConstructorType<any> | Function, Set<ConstructorType<any> | Function | any>>();\nexport const containers = new Set<SimpleApplication>();\n// console.log('-->',sims)\n\nexport type SimConfigProxy = ((ProxyHandler<any> | ConstructorType<any> | Function)) | (ProxyHandler<any> | ConstructorType<any> | Function)[];\nexport type SimConfigUsing = (ConstructorType<any> | Function | object) | ((ConstructorType<any> | Function | object)[]);\n\nexport interface SimConfig {\n symbol?: Symbol | (Symbol[]);\n scheme?: string | (string[]);\n scope?: Lifecycle;\n container?: string | (string[]);\n autoCreate?: boolean;\n proxy?: SimConfigProxy;\n type?: (ConstructorType<any> | Function) | (ConstructorType<any> | Function)[];\n using?: SimConfigUsing;\n}\n\nexport const SimMetadataKey = Symbol('Sim');\n\nconst isNotNullObjetInstance = (target: any) => target != null && target !== undefined && typeof target === 'object';\n\nexport const simProcess = (config: SimConfig, inputTarget: ConstructorType<any> | Function | any) => {\n // default setting\n /*\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(function (){\n // console.log('new TT')\n // return {a: 'name'}\n // })\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(() =>{\n // console.log('new TT')\n // return {a: 'name'}\n // })\n Sim({symbol: TTSymbol, scope: Lifecycle.Transient})({a: 'name'})\n */\n const target = (() => {\n if (typeof inputTarget === 'object') {\n return config.scope === Lifecycle.Singleton ? inputTarget : (ValidUtils.isPlainObject(inputTarget) ? { ...inputTarget }: inputTarget);\n }\n if (ValidUtils.isArrowFunction(inputTarget)) {\n return () => (inputTarget as Function)();\n }\n return inputTarget;\n })();\n\n\n\n\n let targetType: ConstructorType<any> | Function;\n if (isNotNullObjetInstance(target)) {\n targetType = target.constructor;\n } else {\n targetType = target;\n }\n config.scope = config?.scope ?? Lifecycle.Singleton;\n ReflectUtils.defineMetadata(SimMetadataKey, config, targetType);\n const adding = (targetKey: ConstructorType<any> | Function, target: ConstructorType<any> | Function | any = targetKey) => {\n const items = sims.get(targetKey) ?? new Set<ConstructorType<any> | Function | any>();\n items.add(target);\n sims.set(targetKey, items);\n }\n\n\n if (Array.isArray(config?.type)) {\n config?.type.forEach(it => {\n adding(it, target);\n })\n } else if (config.type) {\n adding(config?.type, target);\n } else {\n adding(target)\n }\n // adding(targetType)\n // console.log('----------->', sims)\n}\n// const a = Math.random()+Date.now();\nexport function Sim(target: ConstructorType<any> | Function): void;\nexport function Sim(config: SimConfig): GenericClassDecorator<ConstructorType<any> | Function | any>;\nexport function Sim(configOrTarget: SimConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function | any> {\n // console.group('sim')\n // sims.forEach((v,k) => {\n // console.log('sssss->', v, k)\n // })\n // console.groupEnd()\n if (typeof configOrTarget === 'function') {\n simProcess({}, configOrTarget);\n // console.log('---!', Reflect.getMetadata('design:paramtypes', configOrTarget))\n } else {\n return (target: ConstructorType<any> | Function | any) => {\n simProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getSim = (target: ConstructorType<any> | Function | any): SimConfig | undefined => {\n if (target != null && target !== undefined && typeof target === 'object') {\n // proxy \uAC78\uB9B0\uAC70\uB584\uBB38\uC5D0 \uC774\uB807\uAC8C \uD55C\uB2E4. \uC548\uAC78\uB9B0\uAC83\uB3C4 \uC798\uB41C\uB2E4.\n target = Object.getPrototypeOf(target).constructor;\n // target = target.constructor;\n }\n try {\n return ReflectUtils.getMetadata(SimMetadataKey, target);\n } catch (e) {\n }\n}\n\nconst PostConstructMetadataKey = Symbol('PostConstruct');\nexport type PostConstructMetaType = {property: string};\nconst postConstructProcess = (target: any, config: PostConstructMetaType) => {\n const metas = getPostConstructs(target) ?? [];\n metas.push(config);\n ReflectUtils.defineMetadata(PostConstructMetadataKey, metas, target);\n}\nexport const PostConstruct = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n postConstructProcess(target, {property: propertyKey});\n}\nexport const getPostConstructs = (target: any): PostConstructMetaType[] => {\n return ReflectUtils.getMetadata(PostConstructMetadataKey, target) ?? [];\n}\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfig, SimMetadataKey } from '../decorators/SimDecorator';\nimport { Carrier, SimstanceManager } from './SimstanceManager';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport class SimAtomic<T = object> {\n private value?: T | undefined;\n constructor(public type:{targetKeyType: ConstructorType<T> | Function, originalType: ConstructorType<T> | Function, value?: T}, private simstanceManager: SimstanceManager, private config?: {optional?: boolean}) {\n this.value = type.value;\n }\n\n getConfig(): SimConfig | undefined;\n getConfig<C = any>(key: symbol): C | undefined;\n getConfig<C = any>(key: symbol = SimMetadataKey): C | undefined {\n return ReflectUtils.getMetadata(key, this.type.originalType);\n }\n\n getConfigs() {\n return ReflectUtils.getMetadatas(this.type.originalType);\n }\n\n getValue(config?: {newInstanceCarrier?: Carrier, refresh?: boolean}): T | undefined {\n if (config?.refresh) {\n this.value = undefined;\n }\n // console.log('------value?', this.type, this.simstanceManager.storage)\n // return this.simstanceManager.getOrNewSim({target:this.type, newInstanceCarrier: config?.newInstanceCarrier});\n if (!this.value) {\n this.value = this.simstanceManager.getOrNewSim({target: this.type.targetKeyType, originTypeTarget: this.type.originalType, newInstanceCarrier: config?.newInstanceCarrier});\n // const findFirstSim = this.simstanceManager.findFirstSim({type: this.type});\n // if (findFirstSim) {\n // this.value = findFirstSim.getValue(config);\n // } else {\n // this.value = this.simstanceManager.getOrNewSim({target: this.type, newInstanceCarrier: config?.newInstanceCarrier});\n // }\n }\n return this.value;\n // const types = ConvertUtils.flatArray(this.getConfig()?.type);\n // types.push(this.type);\n // for (const typeElement of types) {\n // const instance = this.simstanceManager.getOrNewSim(typeElement, this.type);\n // if (instance) {\n // return instance;\n // }\n // }\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfigUsing } from './decorators/SimDecorator';\nimport { Storage } from '@dooboostore/core/storage/Storage';\nimport { CacheStorage } from './decorators/cache/CacheDecorator';\n\nexport type ProxyHandlerType = { onAfterProxy: <T>(it: T) => T };\nexport type InitOptionType = {\n rootRouter?: ConstructorType<any>;\n container?: string;\n excludeSim?: (ConstructorType<any> | Function)[];\n advice?: ConstructorType<any>[];\n excludeProxys?: (ConstructorType<any> | Function)[];\n proxy?: ProxyHandlerType;\n using?: SimConfigUsing;\n cache?: CacheConfig;\n};\ntype CacheConfig = {\n ms?: number;\n storage?: CacheStorage;\n enable?: boolean;\n};\n\nexport class SimOption {\n public rootRouter?: ConstructorType<any>;\n public container?: string;\n public advice: ConstructorType<any>[];\n public excludeProxys?: (ConstructorType<any> | Function )[];\n public proxy?: ProxyHandlerType;\n // public excludeSim: ((ConstructorType<any> | Function)[]) | ((type: (ConstructorType<any> | Function)) => boolean);\n public using?: SimConfigUsing;\n public cache?: CacheConfig;\n\n constructor({ rootRouter, container, cache, advice = [], excludeProxys, proxy, using }: InitOptionType = {}) {\n this.rootRouter = rootRouter;\n this.container = container;\n this.advice = advice;\n this.excludeProxys = excludeProxys;\n // this.excludeSim = excludeSim;\n this.proxy = proxy;\n this.using = using;\n this.cache = cache;\n }\n\n addAdvicce(advice: ConstructorType<any>) {\n this.advice ??= [];\n this.advice.push(advice);\n }\n\n setAdvice(...advice: ConstructorType<any>[]): SimOption {\n this.advice = advice;\n return this;\n }\n}\n", "export class MetaDataAtomic<T = any, M = any> {\n constructor(public target: T, public metaData: M) {\n }\n}\n\nexport class MetaDataPropertyAtomic<T = any, M = any> extends MetaDataAtomic<T, M> {\n constructor(target: T, metaData: M, public property: string, public parameter?: any) {\n super(target, metaData)\n }\n\n public call(...parameter: any) {\n return (this.target as any)[this.property](...parameter);\n }\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { MetaDataPropertyAtomic } from '../MetaDataAtomic';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '../../types/Types';\n\nconst AfterMetadataKey = Symbol('After');\nconst BeforeMetadataKey = Symbol('Before');\nconst AroundMetadataKey = Symbol('Around');\ntype AOPOption = { type?: ConstructorType<any>; property: string };\ntype AroundOption = {\n before?: (obj: any, propertyKey: string, args: any[]) => any[];\n after?: (obj: any, propertyKey: string, args: any[], beforeReturn: any) => any[];\n};\n\n// after\nexport const After = (data: AOPOption) => {\n return ReflectUtils.metadata(AfterMetadataKey, data);\n};\nexport const getAfter = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(AfterMetadataKey, target, propertyKey);\n};\n\nexport const getAfters = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getAfter(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoAfters = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getAfters(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\n// before\nexport const Before = (data: AOPOption) => {\n return ReflectUtils.metadata(BeforeMetadataKey, data);\n};\n\nexport const getBefore = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(BeforeMetadataKey, target, propertyKey);\n};\n\nexport const getBefores = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getBefore(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoBefores = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getBefores(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\nexport class AroundForceReturn {\n constructor(public value: any) {}\n}\n// around\nexport const Around = (config: AroundOption): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(AroundMetadataKey, config, target, propertyKey);\n\n const method = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // console.log('check method')\n\n let before: any = undefined;\n let r: any = undefined;\n if (config.before) {\n try {\n before = config.before?.(this, propertyKey, args);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n r = method.apply(this, before);\n } else {\n r = method.apply(this, args);\n }\n\n if (config.after) {\n try {\n r = config.after?.(this, propertyKey, args, r);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n }\n return r;\n };\n };\n};\n\nexport const getAround = (target: any, propertyKey: string): AroundOption | undefined => {\n return ReflectUtils.getMetadata(AroundMetadataKey, target, propertyKey);\n};\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ObjectUtils} from '@dooboostore/core/object/ObjectUtils';\n\nexport enum ExceptionHandlerSituationType {\n ERROR_OBJECT = 'SIMPLE_BOOT_CORE://ExceptionHandler/ERROR_OBJECT',\n PARAMETER = 'SIMPLE_BOOT_CORE://ExceptionHandler/PARAMETER',\n}\nexport type ExceptionHandlerConfig = { type?: ConstructorType<any>; throw?: boolean }\nexport type SaveExceptionHandlerConfig = { propertyKey?: string | symbol; method: Function; config: ExceptionHandlerConfig; }\n\nconst ExceptionHandlerMetadataKey = Symbol('ExceptionHandler');\n\nexport const ExceptionHandler = (config: ExceptionHandlerConfig = {}): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target.constructor) ?? []) as SaveExceptionHandlerConfig[];\n const method = target[propertyKey];\n saveMappingConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, config, target, propertyKey);\n }\n}\n\nexport const getExceptionHandler = (target: any, propertyKey: string): ExceptionHandlerConfig | undefined => {\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target, propertyKey);\n}\n\nexport const getExceptionHandlers = (target: any): SaveExceptionHandlerConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target);\n}\n\nexport const targetExceptionHandlers = (target: any, error: any): SaveExceptionHandlerConfig[] => {\n const exceptionHandlers = getExceptionHandlers(target);\n const emptyTargets = exceptionHandlers?.filter(it => it.config.type === undefined);\n const targets = exceptionHandlers?.filter(it => ObjectUtils.isPrototypeOfTarget(it.config.type, error));\n const targetSorts = targets?.sort((a, b) => {\n const aPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, a.config.type);\n const bPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, b.config.type);\n return aPrototypeOfDepth.length - bPrototypeOfDepth.length\n });\n return (targetSorts ?? []).concat(...emptyTargets ?? []);\n}\n\nexport const targetExceptionHandler = (target: any, error: any, excludeMethods: Function[] = []): SaveExceptionHandlerConfig | undefined => {\n let exceptionHandlers = targetExceptionHandlers(target, error);\n exceptionHandlers = exceptionHandlers?.filter(it => !excludeMethods.includes(it.method));\n if (exceptionHandlers && exceptionHandlers.length > 0) {\n return exceptionHandlers[0];\n } else {\n return undefined;\n }\n}\n", "import { SimstanceManager } from '../simstance/SimstanceManager';\nimport { getProtoAfters, getProtoBefores } from '../decorators/aop/AOPDecorator';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { SimOption } from '../SimOption';\nimport { ExceptionHandlerSituationType, SaveExceptionHandlerConfig, targetExceptionHandler } from '../decorators/exception/ExceptionDecorator';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SituationTypeContainer, SituationTypeContainers } from '../decorators/inject/Inject';\nimport { SimpleApplication } from '../SimpleApplication';\n\nexport class SimProxyHandler implements ProxyHandler<any> {\n constructor(\n private simpleApplication: SimpleApplication,\n private simstanceManager: SimstanceManager,\n private simOption: SimOption\n ) {\n // console.log('SimProxyHandler', simstanceManager, simOption)\n }\n\n // \uC798\uBC1B\uAC8C \uD574\uB1A8\uB124 \u314B\u314B simstanceManager\n public get(target: any, name: string): any {\n if (name === '_SimpleBoot_application') {\n return this.simpleApplication;\n } else if (name === '_SimpleBoot_simstanceManager') {\n return this.simstanceManager;\n } else if (name === '_SimpleBoot_simOption') {\n return this.simOption;\n } else if (name === '_SimpleBoot_origin') {\n return target;\n } else {\n return target[name];\n }\n }\n\n public set(obj: any, prop: string, value: any, receiver: any): boolean {\n value = this.simstanceManager?.proxy(value);\n obj[prop] = value;\n return true;\n }\n\n apply(target: Function, thisArg: any, argumentsList?: any[]): any {\n let r;\n try {\n this.aopBefore(thisArg, target);\n try {\n // @ts-ignore\n r = Reflect.apply(target, thisArg, argumentsList);\n // r = target.apply(thisArg, argumentsList);\n // eslint-disable-next-line no-useless-catch\n } catch (e) {\n throw e;\n } finally {\n this.aopAfter(thisArg, target);\n }\n } catch (e: Error | any) {\n console.error(e);\n const inHandlers = this.getExceptionHandler(e, thisArg, target);\n if (inHandlers.length > 0 && inHandlers[0]) {\n const inHandler = inHandlers[0];\n this.executeExceptionHandler(e, inHandler, argumentsList);\n } else {\n throw e;\n }\n }\n return r;\n }\n\n private executeExceptionHandler(e: any, inHandler: { thisArg: any; config: SaveExceptionHandlerConfig }, argumentsList?: any[]) {\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(e.constructor, e);\n const situationErrorTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n });\n const situationParameterTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.PARAMETER,\n data: argumentsList\n });\n otherStorage.set(SituationTypeContainers, new SituationTypeContainers([situationErrorTypeContainer, situationParameterTypeContainer]));\n argumentsList?.forEach(it => {\n otherStorage.set(it.constructor, it);\n });\n try {\n this.simstanceManager.executeBindParameterSim(\n {\n target: inHandler.thisArg,\n targetKey: inHandler.config.propertyKey\n },\n otherStorage\n );\n } catch (es) {\n e = es;\n }\n if (inHandler.config.config.throw) {\n const exceptionHandler = this.getExceptionHandler(e, inHandler.thisArg, inHandler.config.method);\n if ((exceptionHandler?.length ?? 0) > 0) {\n this.executeExceptionHandler(e, exceptionHandler[0], argumentsList);\n }\n }\n }\n\n private getExceptionHandler(e: any, thisArg: any, target: Function) {\n const globalConfigSets =\n this.simOption.advice\n .map(it => this.simstanceManager?.getOrNewSim({ target: it }))\n .filter(it => it)\n .map(it => {\n return { thisArg: it, config: targetExceptionHandler(it, e, [target]) };\n }) ?? [];\n const thisConfigSet = { thisArg: thisArg, config: targetExceptionHandler(thisArg, e, [target]) };\n const inHandlers = [thisConfigSet, ...globalConfigSets].filter(it => it && it.config) as { thisArg: any; config: SaveExceptionHandlerConfig }[];\n return inHandlers;\n }\n\n private aopBefore(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName && obj) {\n getProtoBefores(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({ target: this.simOption.advice[i] });\n const protoBefores = getProtoBefores(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n }\n }\n }\n\n private aopAfter(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName) {\n getProtoAfters(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({ target: this.simOption.advice[i] });\n const protoBefores = getProtoAfters(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName);\n });\n }\n }\n }\n\n has(target: any, key: PropertyKey): boolean {\n if (key === '_SimpleBoot_isProxy') {\n return true;\n }\n return key in target;\n }\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(///g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''', // or ' (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 ' \uAD8C\uC7A5)\n '/': '/',\n '`': '`',\n '=': '=',\n '{': '{',\n '}': '}',\n '#': '#',\n '$': '$',\n '\\n': ' ', // newline\n '\\r': ' ', // carriage return\n '\\t': '	', // tab\n '\\u00A0': ' ', // non-breaking space\n '\u00A2': '¢',\n '\u00A3': '£',\n '\u00A5': '¥',\n '\u20AC': '€',\n '\u00A9': '©',\n '\u00AE': '®',\n '\u2122': '™',\n '\u00B0': '°',\n '\u00B1': '±',\n '\u00D7': '×',\n '\u00F7': '÷',\n '\u2212': '−',\n '\u2022': '•',\n '\u2026': '…',\n '\u2190': '←',\n '\u2192': '→',\n '\u2191': '↑',\n '\u2193': '↓',\n '\u2194': '↔',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "export interface OnSimCreate {\n onSimCreate(): void;\n}\nexport const isOnSimCreate = (obj: any): obj is OnSimCreate => {\n return typeof obj?.onSimCreate === 'function';\n}", "export interface OnSimCreateCompleted<T = any> {\n onSimCreateProxyCompleted(proxyThis: T): void;\n}\nexport const isOnSimCreateProxyCompleted = (obj: any): obj is OnSimCreateCompleted => {\n return typeof obj?.onSimCreateProxyCompleted === 'function';\n}\n\n", "export const SimNoProxyKey = Symbol('Sim:NoProxy');\nexport const SimNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(SimNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(SimNoProxyKey, true, target, propertyKey);\n};\n\nexport const getSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n try {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(SimNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(SimNoProxyKey, target, propertyKey);\n } catch (e) {\n return undefined;\n }\n // } else {\n // return undefined;\n // }\n};\n\nexport const isSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n if (target === null || target === undefined) {\n return false;\n }\n return getSimNoProxy(target, propertyKey) === true;\n};\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimNoSuch } from '../throwable/SimNoSuch';\nimport { getPostConstructs, getSim, Lifecycle, SimConfig, simProcess, sims } from '../decorators/SimDecorator';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { SimAtomic } from './SimAtomic';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInject, isTargetFactory, isTargetNone, isTargetScheme, isTargetSymbol, isTargetType, SaveInjectConfig, SituationTypeContainer, SituationTypeContainers } from '../decorators/inject/Inject';\nimport { SimOption } from '../SimOption';\nimport { SimProxyHandler } from '../proxy/SimProxyHandler';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Runnable } from '@dooboostore/core/runs/Runnable';\nimport { isOnSimCreate } from '../lifecycle/OnSimCreate';\nimport { isOnSimCreateProxyCompleted } from '../lifecycle/OnSimCreateCompleted';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { isSimNoProxy } from '../decorators/SimNoProxy';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport type FirstCheckMaker = (obj: { target: Object; targetKey?: string | symbol }, token: ConstructorType<any>, idx: number, saveInjectConfig?: SaveInjectConfig) => any | undefined;\nexport type Carrier = { newInstances: any[]; depth: number };\n\nexport class SimstanceManager implements Runnable<void, Map<ConstructorType<any> | Function, any>> {\n private _storage = new Map<ConstructorType<any> | Function, Map<ConstructorType<any> | Function, undefined | any>>();\n private simProxyHandler: SimProxyHandler;\n private name = 'simstanceManager-' + RandomUtils.uuid4();\n // private otherInstanceSim?: Map<ConstructorType<any> | Function, any>;\n\n constructor(\n public simpleApplication: SimpleApplication,\n private option: SimOption\n ) {\n this.setStoreSet(SimpleApplication, this.simpleApplication);\n this.setStoreSet(SimstanceManager, this);\n this.setStoreSet((option as any).constructor, option);\n this.setStoreSet(SimOption, option);\n this.simProxyHandler = new SimProxyHandler(this.simpleApplication, this, option);\n }\n\n get storage() {\n return this._storage;\n }\n\n getSimAtomics(): SimAtomic[] {\n const r: SimAtomic[] = [];\n Array.from(this.storage.entries()).forEach(([targetKeyType, targetMap]) => {\n // Array.from(targetMap).forEach(it => {\n r.push(\n ...Array.from(Array.from(targetMap.keys())).map(\n sit =>\n new SimAtomic(\n {\n targetKeyType,\n originalType: sit\n },\n this\n )\n )\n );\n // });\n });\n return r;\n }\n\n getSimConfig(schemeOrSymbol: string | Symbol | undefined): SimAtomic<any>[] {\n const newVar =\n this.getSimAtomics().filter(it => {\n const config = it?.getConfig();\n const symbols = ConvertUtils.flatArray(config?.symbol);\n const schemes = ConvertUtils.flatArray(config?.scheme);\n if (typeof schemeOrSymbol === 'symbol') {\n return schemeOrSymbol && it && symbols.includes(schemeOrSymbol);\n } else if (typeof schemeOrSymbol === 'string') {\n return schemeOrSymbol && it && schemes.includes(schemeOrSymbol);\n } else {\n return false;\n }\n }) || [];\n return newVar;\n }\n\n findSims<T = any>(symbol: Symbol): SimAtomic<T>[];\n findSims<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T>[];\n findSims<T = any>(\n data:\n | {\n scheme?: string;\n type?: ConstructorType<any> | Function;\n }\n | Symbol\n ): SimAtomic<T>[] {\n let r: SimAtomic<T>[] = [];\n if (data) {\n const simAtomics = this.getSimAtomics();\n r = simAtomics.filter(it => {\n let b = false;\n const config = it.getConfig();\n // console.log('-=--', config)\n const symbols = ConvertUtils.flatArray(config?.symbol).filter(isDefined);\n const schemes = ConvertUtils.flatArray(config?.scheme).filter(isDefined);\n if (typeof data === 'symbol') {\n b = symbols.includes(data);\n } else {\n const { scheme, type } = data as { scheme?: string; type?: ConstructorType<any> | Function };\n b = (scheme ? schemes.includes(scheme) : true) && (type ? it.type.targetKeyType === type : true);\n // if (type) {\n // const configTypes = ConvertUtils.flatArray(config?.type).filter(isDefined);\n // const match = configTypes.includes(type)\n // if (match) {\n // b = true;\n // }\n // }\n }\n return b;\n }) as unknown as SimAtomic<T>[];\n }\n return r;\n }\n\n findFirstSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findFirstSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T> | undefined;\n findFirstSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function } | Symbol): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data)[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> | Function })[0];\n }\n }\n\n findLastSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findLastSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T> | undefined;\n findLastSim<T = any>(\n data:\n | {\n scheme?: string;\n type?: ConstructorType<any> | Function;\n }\n | Symbol\n ): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data).reverse()[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> | Function }).reverse()[0];\n }\n }\n\n flatStoreSets() {\n return new Map(\n Array.from(this.storage.values())\n .map(it => Array.from(it.entries()))\n .flat()\n );\n }\n\n getStoreSets<T>(targetKey: ConstructorType<T> | Function): { type: ConstructorType<T> | Function; instance?: T }[] {\n const map = this.storage.get(targetKey);\n const datas = (Array.from(map?.entries?.() ?? []) ?? []).reverse();\n return datas.map(it => ({ type: it[0], instance: it[1] }));\n }\n\n getStoreSet<T>(targetKey: ConstructorType<T> | Function, target?: ConstructorType<any> | Function): { type: ConstructorType<T> | Function; instance?: T } | undefined {\n const sets = this.getStoreSets(targetKey);\n let find = sets.find(it => it.type === target);\n if (!find && (!target || target === targetKey)) {\n find = sets.find(it => it.instance);\n }\n // console.log('getStoreSet', targetKey, target, find)\n if (!find?.instance) {\n const type = target ?? targetKey;\n\n // \uC678\uBD80\uC5D0\uC11C \uB123\uC5B4\uC900 \uC778\uC2A4\uD134\uC2A4\uD2B8\uC77C\uB54C\uC5D0\uB294 \uD0A4\uAC12\uC774 \uADF8 instance\uC774\uB2E4.\n if (typeof type === 'object') {\n const find = this.storage.get(type);\n if (find) {\n return { type: type as ConstructorType<T> | Function, instance: type as T };\n }\n }\n\n const flatStoreSets = this.flatStoreSets();\n const data = flatStoreSets.get(type);\n // console.log('--->target?', target, targetKey, type, data);\n if (data) {\n this.setStoreSet(targetKey, data, type);\n }\n return { type: type, instance: data };\n } else {\n return find;\n }\n // return find ?? this.getStoreSets(targetKey)[0];\n }\n\n getStoreInstance<T>(targetKey: ConstructorType<T>, target?: ConstructorType<any>) {\n return this.getStoreSet(targetKey, target)?.instance;\n }\n\n getOrNewSim<T>({ target, originTypeTarget = target, newInstanceCarrier }: { target?: ConstructorType<T> | Function; newInstanceCarrier?: Carrier; originTypeTarget?: ConstructorType<T> | Function }): T | undefined {\n if (target) {\n const registed = this.getStoreSet(target, originTypeTarget);\n if (registed?.type && !registed?.instance) {\n return this.resolve({\n targetKey: target,\n target: originTypeTarget,\n newInstanceCarrier: newInstanceCarrier\n });\n }\n return registed?.instance;\n }\n }\n\n setStoreSet(targetKey: ConstructorType<any> | Function, obj: any, target: ConstructorType<any> | Function = targetKey): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n itemMap.set(target, obj);\n this.storage.set(targetKey, itemMap);\n }\n\n registerStore(targetKey: ConstructorType<any> | Function, regTyps: Set<ConstructorType<any> | Function | any>): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n regTyps.forEach(it => {\n const { type, value } = (typeof it === 'object' ? { type: it.constructor, value: it } : { type: it, value: undefined }) as { type: ConstructorType<any> | Function; value: any };\n if (!itemMap.has(type) || (value !== undefined && itemMap.get(type) === undefined)) {\n itemMap.set(type, value);\n }\n });\n this.storage.set(targetKey, itemMap);\n }\n\n // \uC9C4\uC785\uC810\n resolve<T>({ target, targetKey, newInstanceCarrier = { newInstances: [], depth: 0 } }: { targetKey: ConstructorType<any> | Function; target?: ConstructorType<any> | Function; newInstanceCarrier?: Carrier }): T {\n // console.group('resolve')\n const registed = this.getStoreSet(targetKey, target);\n if (registed?.instance) {\n return registed.instance;\n }\n\n // console.log('resolve--', targetKey, target, registed?.instance);\n if (this.storage.has(targetKey) && undefined === registed?.instance) {\n newInstanceCarrier.depth++;\n const newSim = this.newSim({\n target: registed?.type ?? targetKey,\n newInstanceCarrier: newInstanceCarrier,\n simCreateAfter: data => {\n // console.log('resolve--newSim', targetKey, target, data);\n if (getSim(registed?.type ?? target ?? targetKey)?.scope === Lifecycle.Singleton) {\n this.setStoreSet(targetKey, data, target);\n // console.log('-----------set', targetKey, data, target, this.storage.get(targetKey))\n }\n }\n });\n newInstanceCarrier.depth--;\n // \uD55C\uADF8\uB8F9\uC774 \uB05D\uB0AC\uC744\uB54C\n if (newInstanceCarrier.depth === 0) {\n newInstanceCarrier.newInstances.forEach(it => {\n this.callBindPostConstruct(it);\n });\n }\n // console.log('%c *************************','color: blue', registed?.type ?? targetKey ,newInstanceCarrier, newInstanceCarrier?.newInstances.length)\n // console.dir(newInstanceCarrier, {depth:10});\n // console.table(newInstanceCarrier);\n if (isOnSimCreate(newSim)) {\n newSim.onSimCreate();\n }\n // console.groupEnd();\n return newSim;\n }\n // console.log('simstanceManager', this._storage, this.name);\n const simNoSuch = new SimNoSuch('SimNoSuch: no simple instance(resolve) ' + 'name:' + targetKey?.prototype?.constructor?.name + ',' + targetKey);\n console.error(simNoSuch);\n // console.groupEnd();\n throw simNoSuch;\n }\n\n public newSim<T = any>({ target, simCreateAfter, otherStorage, newInstanceCarrier }: { target: ConstructorType<T> | Function; simCreateAfter?: (data: T) => void; newInstanceCarrier?: Carrier; otherStorage?: Map<ConstructorType<any>, any> }): T {\n // @ts-ignore TODO: \uC5EC\uAE30\uC11C \uC0DD\uC131\n const parameters = this.getParameterSim({\n target: target,\n otherStorage: otherStorage,\n newInstanceCarrier: newInstanceCarrier\n });\n // @ts-ignore\n const r = ValidUtils.isFunction(target) && !target.prototype ? (target as Function)(...parameters) : new (target as ConstructorType<any>)(...parameters);\n let p = this.proxy(r);\n const config = getSim(target);\n if (config?.proxy) {\n const proxys = (Array.isArray(config.proxy) ? config.proxy : [config.proxy]).filter(isDefined);\n proxys.forEach(it => {\n // console.log('proxy-----------------', p)\n if (typeof it === 'object') {\n p = new Proxy(p, it);\n } else {\n const simConfig = getSim(it);\n p = new Proxy(p, simConfig ? this.getOrNewSim({ target: it }) : this.newSim({ target: it }));\n }\n // console.log('proxy-pp----------------', p)\n });\n }\n newInstanceCarrier?.newInstances.push(p);\n // \uC21C\uD658\uCC38\uC870 \uB9C9\uAE30\uC704\uD55C \uCF5C\uBC31 \uCC98\uB9AC\n simCreateAfter?.(p);\n if (isOnSimCreateProxyCompleted(p)) {\n p.onSimCreateProxyCompleted(p);\n }\n // this.callBindPostConstruct(p);\n return p;\n }\n\n public callBindPostConstruct(obj: any) {\n // const set = new Set(ObjectUtils.getAllProtoTypeName(obj));\n // console.log('callBindPostConstruct', obj, set, ObjectUtils.getAllProtoTypeName(obj));\n // set.forEach(it => {\n // const postConstruct = getPostConstruct(obj, it);\n // if (postConstruct) {\n // (obj as any)[it](...this.getParameterSim({target: obj, targetKey: it}))\n // }\n // })\n const postConstruct = getPostConstructs(obj);\n postConstruct.forEach(it => {\n (obj as any)[it.property](...this.getParameterSim({ target: obj, targetKey: it.property }));\n });\n }\n\n public async executeBindParameterSimPromise({ target, targetKey, firstCheckMaker, parameterCount, inputParameters }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; parameterCount?: number; inputParameters?: any[] }, otherStorage?: Map<ConstructorType<any>, any>) {\n const binds = this.getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, parameterCount, inputParameters });\n if (typeof target === 'object' && targetKey) {\n const targetMethod = (target as any)[targetKey];\n return targetMethod?.bind(target)?.(...binds);\n } else if (typeof target === 'function' && !targetKey) {\n return new (target as ConstructorType<any>)(...binds);\n }\n }\n\n public executeBindParameterSim({ target, targetKey, firstCheckMaker, parameterCount, inputParameters }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; parameterCount?: number; inputParameters?: any[] }, otherStorage?: Map<ConstructorType<any>, any>) {\n const binds = this.getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, parameterCount, inputParameters });\n if (typeof target === 'object' && targetKey) {\n const targetMethod = (target as any)[targetKey];\n return targetMethod?.bind(target)?.(...binds);\n } else if (typeof target === 'function' && !targetKey) {\n return new (target as ConstructorType<any>)(...binds);\n }\n }\n\n public getParameterSim({ target, targetKey, firstCheckMaker, otherStorage, newInstanceCarrier, parameterCount, inputParameters = [] }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[]; newInstanceCarrier?: Carrier; otherStorage?: Map<ConstructorType<any>, any>; parameterCount?: number; inputParameters?: any[] }): any[] {\n const paramTypes = (ReflectUtils.getParameterTypes(target, targetKey) || []) as ConstructorType<any>[];\n // const paramNames = FunctionUtils.getParameterNames(target, targetKey);\n // const a = ReflectUtils.getType(target, 'user');\n let injections: any[] = [];\n const injects = getInject(target, targetKey);\n // const da = JSON.stringify(this.storage);\n // this.storage map to json String\n\n const loopCount = Math.max(paramTypes.length, parameterCount ?? 0);\n const loopArray = new Array(loopCount).fill(undefined);\n\n injections = loopArray.map((_, idx: number) => {\n const token = paramTypes[idx];\n const saveInject = injects?.find(it => it.index === idx);\n\n // firstCheckMaker should have the highest priority\n for (const f of firstCheckMaker ?? []) {\n const firstCheckObj = f({ target, targetKey }, token, idx, saveInject);\n if (undefined !== firstCheckObj) {\n return firstCheckObj;\n }\n }\n\n if (saveInject) {\n const inject = saveInject.config;\n let obj = otherStorage?.get(token);\n\n // console.log('vvvvv----->', obj, token, inject);\n if (token === Array && (isTargetType(inject) || isTargetScheme(inject) || isTargetSymbol(inject))) {\n const p: any[] = [];\n if (isTargetType(inject) && inject.type) {\n p.push(\n ...this.getStoreSets(inject.type)\n .map(it =>\n this.resolve({\n targetKey: inject.type!,\n target: it.type,\n newInstanceCarrier: newInstanceCarrier\n })\n )\n .reverse()\n );\n }\n if (isTargetSymbol(inject)) {\n p.push(...this.getSimConfig(inject.symbol).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier })));\n }\n if (isTargetScheme(inject)) {\n p.push(...this.getSimConfig(inject.scheme).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier })));\n }\n return p;\n }\n\n // situational\n if (inject.situationType && otherStorage) {\n // TODO: \uC65C other\uC5D0\uC11C \uAC00\uC838\uC624\uB294\uAC78\uAE4C?\n const situations = otherStorage.get(SituationTypeContainers) as SituationTypeContainers;\n const situation = otherStorage.get(SituationTypeContainer) as SituationTypeContainer;\n if (inject.situationType === situation?.situationType) {\n obj = situation.data;\n } else if (situations && situations.length > 0) {\n const find = situations.find(a => {\n if (a.index !== undefined) {\n return a.situationType === inject.situationType && a.index === idx;\n } else {\n return a.situationType === inject.situationType;\n }\n });\n if (find) {\n obj = find.data;\n }\n }\n }\n\n if (!obj) {\n // [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uC8FC\uC785 3\uB300 \uC804\uB7B5 (Factory / Symbol / Type)\n const currentInstance = typeof target === 'object' ? target : undefined;\n if (isTargetFactory(inject)) {\n // Choice 3: \uC21C\uC218 Factory \uC804\uB7B5\n obj = inject.factory({\n instance: currentInstance,\n methodName: String(targetKey),\n parameter: inputParameters,\n application: this.simpleApplication\n });\n } else {\n // Choice 1 & 2: Symbol \uB610\uB294 Type/Scheme \uC804\uB7B5\n let findLastSim;\n if (isTargetSymbol(inject)) {\n findLastSim = this.findLastSim(inject.symbol);\n } else if (isTargetType(inject) || isTargetScheme(inject)) {\n findLastSim = this.findLastSim(inject);\n }\n try {\n obj = findLastSim\n ? this.resolve<any>({\n targetKey: findLastSim?.type.targetKeyType ?? token,\n newInstanceCarrier: newInstanceCarrier\n })\n : this.resolve<any>({\n targetKey: token,\n newInstanceCarrier: newInstanceCarrier\n });\n\n // Augmentation: \uCC3E\uC740 \uAC1D\uCCB4\uB97C \uD329\uD1A0\uB9AC\uB97C \uD1B5\uD574 \uAC00\uACF5\n if (inject.factory && obj) {\n if (typeof inject.factory === 'function') {\n obj = inject.factory({\n instance: currentInstance,\n methodName: String(targetKey),\n parameter: inputParameters,\n application: this.simpleApplication,\n injectInstance: obj\n });\n }\n }\n } catch (e) {\n // Inject optional \uCC98\uB9AC\n if (inject.optional) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n }\n\n if (inject.proxy && obj) {\n // [\uC544\uD0A4\uD14D\uD2B8\uB2D8\uC758 \uC815\uC11D] \uD1B5\uD569 \uD504\uB85D\uC2DC \uC804\uB7B5 (\uD074\uB798\uC2A4 \uB610\uB294 \uD329\uD1A0\uB9AC \uD568\uC218)\n if (ValidUtils.isConstructor(inject.proxy)) {\n // Choice A: \uD074\uB798\uC2A4 \uD504\uB85D\uC2DC\n const handler = getSim(inject.proxy) ? this.getOrNewSim({ target: inject.proxy as ConstructorType<any> }) : new (inject.proxy as any)();\n if (handler) {\n obj = new Proxy(obj, handler);\n }\n } else if (typeof inject.proxy === 'function') {\n // Choice B: \uC989\uC11D \uD329\uD1A0\uB9AC \uD504\uB85D\uC2DC\n const handler = inject.proxy({\n application: this.simpleApplication,\n instance: obj\n });\n if (handler) {\n obj = new Proxy(obj, handler);\n }\n }\n }\n return obj;\n } else {\n return otherStorage?.get(token) ?? (token ? this.resolve<any>({ targetKey: token, newInstanceCarrier }) : undefined);\n }\n });\n return injections;\n }\n\n public proxy<T = any>(target: T): T {\n try {\n const noProxy = isSimNoProxy(target);\n const isExcludeProxy = this.option.excludeProxys?.some(it => target instanceof it);\n if (!noProxy && !isExcludeProxy && target !== null && getSim(target) && typeof target === 'object' && !('_SimpleBoot_isProxy' in target)) {\n for (const key in target) {\n if (!isSimNoProxy(target, key)) {\n (target as any)[key] = this.proxy((target as any)[key]);\n }\n }\n\n // function apply proxy\n const protoTypeName = ObjectUtils.ownPropertyNames(target);\n protoTypeName\n .filter(it => typeof (target as any)[it] === 'function')\n .filter(it => !isSimNoProxy(target, it))\n .filter(it => !('_SimpleBoot_isProxy' in target[it]))\n .forEach(it => {\n (target as any)[it] = new Proxy((target as any)[it], this.simProxyHandler!);\n });\n\n if (this.simProxyHandler) {\n target = new Proxy(target, this.simProxyHandler);\n }\n }\n\n if (this.option.proxy) {\n target = this.option.proxy.onAfterProxy(target);\n }\n return target;\n } catch (e) {\n console.log('sim proxy error');\n throw e;\n }\n }\n\n run(otherInstanceSim: Map<ConstructorType<any> | Function | SimConfig | Symbol, any> = new Map()) {\n // this.otherInstanceSim = new Map();\n for (const [k, v] of Array.from(otherInstanceSim.entries())) {\n if (typeof k === 'symbol') {\n simProcess({ symbol: k }, v);\n } else if (typeof k === 'object') {\n // \uBA85\uD655\uD558\uAC8C instance\uB97C \uB118\uAE34\uAC70\uB2C8 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uC548\uD558\uAE30 \uC704\uD574 \uC784\uC758 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uD55C\uB2E4.\n simProcess(k as SimConfig, v);\n } else {\n simProcess({ type: k }, v);\n }\n // this.otherInstanceSim.set(type, v);\n // it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)})\n }\n // this.otherInstanceSim = otherInstanceSim;\n // const types = Array.from(this.otherInstanceSim?.entries()).map(it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)}));\n // types.push(...Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)})));\n const myContainers = ConvertUtils.flatArray(this.option.container).filter(isDefined);\n // console.log('simstanceManager run!!', Array.from(sims.entries()));\n // Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)}))\n Array.from(sims.entries()).forEach(([type, value]) => {\n const targetContainers = ConvertUtils.flatArray(getSim(type)?.container).filter(isDefined);\n let isInclude = false;\n if (myContainers.length <= 0 && targetContainers.length <= 0) {\n isInclude = true;\n } else if (targetContainers.length <= 0) {\n isInclude = true;\n } else {\n isInclude = myContainers.some(it => targetContainers.includes(it));\n }\n\n this.registerStore(type, value);\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : myContainers.some(it => targetContainers.includes(it));\n // const isInclude = (targetContainers.length <= 0) ? true : (myContainers.length > 0 ? true : (myContainers.some(it => targetContainers.includes(it))));\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : (myContainers.some(it => containers.includes(it)));\n // if (typeof this.option.excludeSim === 'function' && this.option.excludeSim(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // } else if (Array.isArray(this.option.excludeSim) && !this.option.excludeSim.includes(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // }\n });\n\n this.callBindPostConstruct(this);\n\n // auto start run\n this.getSimAtomics().forEach(it => {\n if (it.getConfig()?.autoCreate) {\n // console.log('autoStart---?', it.type);\n it.getValue();\n }\n });\n }\n}\n", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "import { Expression } from '@dooboostore/core/expression/Expression';\n\n/* uri struct\n scheme uri example: mymodule://asd/asd/b?a=545&aa=33&wow=wow\n global uri example: ://asd/asd/b?a=545&aa=33&wow=wow\n route uri example: Router(/users/aa/ffw)://asd/asd/b?a=545&aa=33&wow=wow\n Symbol.for uri example: Symbol.for(zzz)://asd/asd/b?a=545&aa=33&wow=wow\n <\uC2A4\uD0B4>://<\uC0AC\uC6A9\uC790\uC774\uB984>:<\uBE44\uBC00\uBC88\uD638>@<\uD638\uC2A4\uD2B8>:<\uD3EC\uD2B8>/<\uACBD\uB85C>?<\uC9C8\uC758>#<\uD504\uB808\uADF8\uBA3C\uD2B8>\n\n URL {origin: 'https://www.google.com', protocol: 'https:', username: '', password: '', host: 'www.google.com', \u2026}\n host : \"www.google.com\"\n hostname : \"www.google.com\"\n href : \"https://www.google.com/search?sca_esv=873f891b9c737763&sxsrf=ANbL-n4MYzsxgnVWYQYX_HFn_SDiF50gng:1773588779997&udm=2&fbs=ADc_l-bD_nyrjATWBKup7flJ4rea5XFXsPHwMjGsTekJ1HCohBAQ3Hh19DqzlO7wr7YUgTf11rdGODep1hjYV7VngF90iRfoKFoNV193gunAY5doENCEzhzHTAwBIK7uA_u7vWEPlSr2SNmvolDNY_BBTeC5a_VNbQUhGitQNtnOX1ZEZVe5iCML48JohpujnTYUreb8T0DRU1U5y-DNg1BBVMghmIfI7w&q=uri&sa=X&ved=2ahUKEwjlhdaJnaKTAxX-dPUHHW2sK6oQtKgLegQIHRAB&biw=1682&bih=997&dpr=1#sv=CAMSXhoyKhBlLXVRQWVwTzMwWVFrcVdNMg51UUFlcE8zMFlRa3FXTToOcE8tdnNsZTU3a1N6b00gBCokCg5JMnQyRUVQV3JwaTVOTRIQZS11UUFlcE8zMFlRa3FXTRgAMAEYByDSjNDNATACSggQAhgCIAIoAg\"\n origin : \"https://www.google.com\"\n pathname : \"/search\"\n protocol : \"https:\"\n search : \"?sca_esv=873f891b9c737763&sxsrf=ANbL-n4MYzsxgnVWYQYX_HFn_SDiF50gng:1773588779997&udm=2&fbs=ADc_l-bD_nyrjATWBKup7flJ4rea5XFXsPHwMjGsTekJ1HCohBAQ3Hh19DqzlO7wr7YUgTf11rdGODep1hjYV7VngF90iRfoKFoNV193gunAY5doENCEzhzHTAwBIK7uA_u7vWEPlSr2SNmvolDNY_BBTeC5a_VNbQUhGitQNtnOX1ZEZVe5iCML48JohpujnTYUreb8T0DRU1U5y-DNg1BBVMghmIfI7w&q=uri&sa=X&ved=2ahUKEwjlhdaJnaKTAxX-dPUHHW2sK6oQtKgLegQIHRAB&biw=1682&bih=997&dpr=1\"\n searchParams : URLSearchParams {size: 10}\n*/\nexport class Intent<T = any, E = any> {\n public sessionData = new Map<string, any>();\n\n constructor(\n public uri: string | { symbol: Symbol | Symbol[]; uri: `/${string}` },\n public data?: T,\n public event?: E\n ) {\n if (typeof uri === 'string') {\n const match = uri.match(/^Symbol\\.for\\((.+)\\):\\/(.*)$/);\n if (match) {\n const symbol = Symbol.for(match[1] as string);\n this.uri = {\n symbol: symbol,\n uri: match[2] as `/${string}`\n };\n }\n }\n }\n\n get symbols() {\n if (typeof this.uri === 'object') {\n // ensure symbol is always an array\n return Array.isArray(this.uri.symbol) ? this.uri.symbol : [this.uri.symbol];\n }\n return undefined;\n }\n\n get scheme() {\n if (typeof this.uri === 'string') {\n const parts = this.uri.split('://');\n if (parts.length > 1) {\n return parts[0];\n }\n return undefined;\n } else {\n return undefined;\n }\n }\n\n get paths() {\n return this.pathname.split('/') ?? [];\n }\n\n get fullPath() {\n const uri = typeof this.uri === 'string' ? this.uri : this.uri.uri;\n const paths = uri.split('://');\n return paths[paths.length >= 2 ? 1 : 0] ?? '';\n }\n\n get pathname() {\n const paths = this.fullPath.split('?');\n return paths[0];\n }\n\n get query() {\n const paths = this.fullPath.split('?');\n // console.log('fullPath', this.fullPath, paths)\n return paths[1] ?? '';\n }\n\n getQueryParamDecodeURI<T>(): T;\n getQueryParamDecodeURI(key: string): string | string[] | undefined;\n getQueryParamDecodeURI<T>(key?: string): string | string[] | undefined | T {\n const p = this.queryParamsDecodeURI;\n if (key) {\n return p[key];\n } else {\n return p as T;\n }\n }\n getQueryParamDecodeURIFirst(key: string): string | undefined {\n const param = this.getQueryParamDecodeURI(key);\n if (Array.isArray(param)) {\n return param[0];\n } else {\n return param;\n }\n }\n\n getQueryParam<T>(): T;\n getQueryParam(key: string): string | string[] | undefined;\n getQueryParam<T>(key?: string): string | string[] | undefined | T {\n const p = this.queryParams;\n if (key) {\n return p[key];\n } else {\n return p as T;\n }\n }\n getQueryParamFirst(key: string): string | undefined {\n const param = this.getQueryParam(key);\n if (Array.isArray(param)) {\n return param[0];\n } else {\n return param;\n }\n }\n\n get queryParams(): { [key: string]: string | string[] } {\n const param = {} as { [key: string]: string | string[] };\n this.query.split('&')?.forEach(it => {\n const a = it.split('=');\n if (param[a[0]]) {\n if (Array.isArray(param[a[0]])) {\n (param[a[0]] as string[]).push(a[1]);\n } else {\n param[a[0]] = [param[a[0]] as string, a[1]];\n }\n } else {\n param[a[0]] = a[1];\n }\n });\n return param;\n }\n\n get queryParamsDecodeURI(): { [key: string]: string | string[] } {\n const params = this.queryParams;\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n const param = params[key];\n if (Array.isArray(param)) {\n params[key] = param.map(p => decodeURIComponent(p));\n } else {\n params[key] = decodeURIComponent(param);\n }\n }\n }\n return params;\n }\n\n getPathnameData(urlExpression: string) {\n return Expression.Path.pathNameData(this.pathname, urlExpression);\n }\n\n get isSymbolScheme(): boolean {\n return this.symbols !== undefined;\n }\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return Subscription.EMPTY;\n }\n\n this._observers.add(partialObserver);\n\n return new Subscription(() => {\n this._observers.delete(partialObserver);\n });\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data);\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}\n", "import { Intent } from './Intent';\n\nexport interface IntentSubscribe {\n intentSubscribe(...args: any[]): void;\n intentSubscribe(intent: Intent): void;\n}\nexport const isIntentSubscribe = (obj: unknown): obj is IntentSubscribe => {\n return !!obj && typeof (obj as any).intentSubscribe === 'function';\n};", "import { Intent } from './Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { Sim } from '../decorators/SimDecorator';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { RouterManager } from '../route/RouterManager';\nimport { RouterMetadataKey, RouterConfig } from '../decorators/route/Router';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SimOption } from '../SimOption';\nimport { isIntentSubscribe } from './IntentSubscribe';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInject, isTargetFactory, isTargetScheme, isTargetSymbol, isTargetType } from '../decorators';\nimport { SimpleApplication } from '../SimpleApplication';\n\nexport type RouterPublishType = {\n router: `Router(${string}):${string}`;\n rootRouter: ConstructorType<any>;\n};\nexport const isRouterPublishType = (it: any): it is RouterPublishType => typeof it === 'object' && it !== null && typeof it.router === 'string' && typeof it.rootRouter === 'function';\n\nexport type SymbolPublishType = { symbol: Symbol | Symbol[]; path: string };\nexport const isSymbolPublishType = (it: any): it is SymbolPublishType => typeof it === 'object' && it !== null && 'symbol' in it && 'path' in it;\n\nexport type SymbolForPublishType = `Symbol.for(${string}):/${string}`;\n\nexport type SchemePublishType = { scheme: string; path: string };\nexport const isSchemePublishType = (it: any): it is SchemePublishType => typeof it === 'object' && it !== null && 'scheme' in it && 'path' in it;\n\nexport type PublishData = Intent | string | RouterPublishType | SymbolPublishType | SymbolForPublishType | SchemePublishType;\n\n// @Sim\nexport class IntentManager {\n private subject = new Subject<Intent>();\n\n constructor(\n private simpleApplication: SimpleApplication,\n private simstanceManager: SimstanceManager,\n private routerManager: RouterManager,\n private simOption: SimOption\n ) {}\n\n get observable() {\n return this.subject.asObservable();\n }\n\n private async makeIntentData(it: PublishData, data?: any) {\n const target: SimAtomic<any> | any[] = [];\n const rootRouter = isRouterPublishType(it) ? it.rootRouter : this.simOption.rootRouter;\n\n if (isRouterPublishType(it)) {\n it = it.router;\n }\n\n const routerMatch = typeof it === 'string' && it.match(/^Router\\((.+)\\):\\/(.*)$/); // Escaped parentheses and slash, no quotes\n if (routerMatch && typeof it === 'string') {\n const routerBasePath = routerMatch[1];\n const actualPath = routerMatch[2];\n const routerModule = await this.routerManager.routing(routerBasePath, {\n router: rootRouter\n });\n const instance = routerModule.getModuleInstance();\n if (instance) {\n target.push(instance);\n }\n it = new Intent(actualPath, data);\n } else if (isSymbolPublishType(it)) {\n it = new Intent({ symbol: it.symbol, uri: it.path as any }, data);\n } else if (isSchemePublishType(it)) {\n it = new Intent(`${it.scheme}://${it.path}`, data);\n } else if (typeof it === 'string') {\n it = new Intent(it, data);\n }\n\n const intent = it as Intent;\n\n if (!routerMatch) {\n if (intent.symbols) {\n target.push(...intent.symbols.map(sym => this.simstanceManager.findSims(sym)).flat());\n } else if (intent.scheme) {\n target.push(...this.simstanceManager.getSimConfig(intent.scheme));\n } else {\n target.push(...this.simstanceManager.getSimAtomics());\n }\n }\n\n return { intent, target };\n }\n\n public async publishMeta(it: PublishData, data?: any): Promise<{ return: any[]; target: any[] }> {\n const { intent, target } = await this.makeIntentData(it, data);\n const r: any[] = [];\n const targetInstances = target.map(it => {\n if (it instanceof SimAtomic) {\n return it.getValue();\n } else {\n return it;\n }\n });\n\n this.subject.next(intent);\n\n for (let data of targetInstances) {\n let orNewSim = data;\n if (orNewSim) {\n const filteredPaths = intent.paths.filter(i => i);\n if (filteredPaths.length > 0) {\n let callthis = orNewSim;\n let lastProp = '';\n // path '/' \uB85C\uD574\uC11C \uACC4\uC18D \uD30C\uACE0\uB4E0\uB2E4.\n filteredPaths.forEach(i => {\n callthis = orNewSim;\n orNewSim = orNewSim?.[i];\n lastProp = i;\n });\n if (orNewSim && typeof orNewSim === 'function') {\n const intentData = Array.isArray(intent.data) ? intent.data : intent.data !== undefined ? [intent.data] : [];\n const result = await this.simstanceManager.executeBindParameterSimPromise({\n target: callthis,\n targetKey: lastProp,\n parameterCount: intentData.length,\n inputParameters: intentData,\n firstCheckMaker: [\n (obj, token, idx) => {\n if (idx < intentData.length) {\n return intentData[idx];\n }\n if (token === Intent && idx === 0) {\n return intent;\n }\n }\n ]\n });\n r.push(result);\n } else if (orNewSim) {\n callthis[lastProp] = intent.data;\n r.push(callthis[lastProp]);\n }\n } else {\n const intentData = Array.isArray(intent.data) ? intent.data : intent.data !== undefined ? [intent.data] : [];\n if (isIntentSubscribe(orNewSim)) {\n r.push(orNewSim.intentSubscribe(...intentData));\n }\n }\n }\n }\n return { return: r, target };\n }\n\n public async publish(it: PublishData, data?: any): Promise<any[]> {\n const rdata = await this.publishMeta(it, data);\n return rdata.return;\n }\n}\n", "\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ReflectMethod} from '../../types/Types';\n\nexport type InjectionConfig = {}\n\nconst InjectionMetadataKey = Symbol('Injection');\nexport function Injection(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function Injection(config?: InjectionConfig): ReflectMethod;\nexport function Injection(configOrTarget?: InjectionConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): void | ReflectMethod {\n if (propertyKey && descriptor) {\n const target = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, {}, target, propertyKey);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const config = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, config ?? {}, target, propertyKey);\n }\n }\n}\n\nexport const getInjection = (target: any, propertyKey: string | symbol): InjectionConfig | undefined => {\n return ReflectUtils.getMetadata(InjectionMetadataKey, target, propertyKey);\n}\n", "import {SimError} from './SimError';\n\nexport class MethodNoSuch extends SimError {\n constructor(message?: string, name?: string, public propertyKeys?: symbol | string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {RouteFilter} from '../../route/RouteFilter';\n\nexport type Filterss = (RouteFilter | ConstructorType<RouteFilter>)[];\nexport type Filters = RouteFilter | ConstructorType<RouteFilter> | Filterss;\nexport type RoteAndFilter = {filters: Filters, target: ConstructorType<Object>};\nexport type RouteTargetMethod = {target: ConstructorType<Object>, propertyKeys: (string|symbol)[], filters?: Filterss}\nexport type RouteProperty = ConstructorType<Object> | RoteAndFilter | [ConstructorType<Object> | RoteAndFilter, any] | RouteTargetMethod | string | Symbol;\nexport type Route = {[name: string]: RouteProperty};\nexport interface RouterConfig {\n path?: string;\n route?: Route;\n routers?: ConstructorType<Object>[];\n filters?: Filters;\n}\n\nexport const RouterMetadataKey = Symbol('Router');\nexport const routerProcess = (config: RouterConfig, target: ConstructorType<any> | Function) => {\n getRoutes(target)?.forEach(it => {\n config.route = (config.route ?? {});\n const paths = Array.isArray(it.config.path) ? it.config.path : [it.config.path];\n for (const path of paths) {\n if (config.route[path]) {\n const route = config.route[path] as RouteTargetMethod;\n route.propertyKeys.push(it.propertyKey);\n route.filters = route.filters ?? [];\n if (Array.isArray(it.config.filters)) {\n route.filters.push(...it.config.filters)\n } else if (it.config.filters) {\n route.filters.push(it.config.filters)\n }\n } else {\n config.route[path] = {target, propertyKeys: [it.propertyKey], filters: it.config.filters} as RouteTargetMethod;\n }\n }\n });\n ReflectUtils.defineMetadata(RouterMetadataKey, config, target);\n}\nexport function Router(target: ConstructorType<any> | Function): void;\nexport function Router(config: RouterConfig): GenericClassDecorator<ConstructorType<any> | Function>;\nexport function Router(configOrTarget: RouterConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function> {\n if (typeof configOrTarget === 'function') {\n const routerConfig: RouterConfig = {\n path: ''\n }\n routerProcess(routerConfig, configOrTarget);\n } else {\n return (target: ConstructorType<any> | Function) => {\n configOrTarget.path = configOrTarget.path ?? '';\n routerProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getRouter = (target: ConstructorType<any> | Function | any): RouterConfig | undefined => {\n if (target != null && typeof target === 'object') {\n target = target.constructor;\n }\n try { return ReflectUtils.getMetadata(RouterMetadataKey, target); } catch (e) {}\n}\n\ntype RouteConfig = { path: string | string[], filters?: Filters }\nexport type SaveRouteConfig = { propertyKey: string | symbol; method: Function; config: RouteConfig; }\nexport const RouteMetadataKey = Symbol('RouteMetadataKey');\n\nexport const Route = (config: RouteConfig): ReflectMethod => {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveRouteConfigs = (ReflectUtils.getMetadata(RouteMetadataKey, target.constructor) ?? []) as SaveRouteConfig[];\n const method = target[propertyKey];\n saveRouteConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(RouteMetadataKey, saveRouteConfigs, target.constructor);\n ReflectUtils.defineMetadata(RouteMetadataKey, config, target, propertyKey);\n };\n}\n\nexport const getRoute = (target: any, propertyKey: string | symbol): RouteConfig | undefined => {\n return ReflectUtils.getMetadata(RouteMetadataKey, target, propertyKey);\n}\n\nexport const getRoutes = (target: any): SaveRouteConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(RouteMetadataKey, target);\n}\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Intent } from '../intent/Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { getInjection } from '../decorators/inject/Injection';\nimport { MethodNoSuch } from '../throwable/MethodNoSuch';\nimport { getRoute, getRouter, getRoutes } from '../decorators/route/Router';\nimport { Expression } from '@dooboostore/core/expression/Expression';\n\nexport class RouterModule<R = SimAtomic, M = any> {\n private _pathData?: Expression.Path.PathNameData;\n private _data?: any;\n private _intent?: Intent;\n private _propertyKeys?: (string | symbol)[];\n private _path?: string;\n\n public get path(): string | undefined {\n return this._path;\n }\n\n public set path(value: string | undefined) {\n this._path = value;\n }\n\n public get data(): any {\n return this._data;\n }\n\n public set data(value: any) {\n this._data = value;\n }\n\n public get intent(): Intent | undefined {\n return this._intent;\n }\n\n public set intent(value: Intent | undefined) {\n this._intent = value;\n }\n\n public get propertyKeys(): (string | symbol)[] | undefined {\n return this._propertyKeys;\n }\n\n public set propertyKeys(value: (string | symbol)[] | undefined) {\n this._propertyKeys = value;\n }\n\n public get pathData(): Expression.Path.PathNameData | undefined {\n return this._pathData;\n }\n public getPathData<T>() {\n return this._pathData as T;\n }\n\n public set pathData(value: Expression.Path.PathNameData | undefined) {\n this._pathData = value;\n }\n\n\n constructor(private simstanceManager: SimstanceManager, public router?: R, public module?: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function }, public routerChains: R[] = []) {\n }\n\n getRouterPath(join = '') {\n return this.getRouterPaths().map(it => it ?? '').join(join)\n }\n\n getRouterPaths() {\n return this.routerChains.map(it => getRouter(it instanceof SimAtomic ? it.type.targetKeyType : it)?.path);\n }\n\n getRouterPathData(pathName: string) {\n return Expression.Path.pathNameData(pathName, this.getRouterPath());\n }\n\n getModuleInstance<T = M>(): T | undefined ;\n getModuleInstance<T = M>(propertyKey?: string | symbol, instanceBind: boolean | any = true): T | undefined {\n const instance = this.simstanceManager.getOrNewSim<T>({target: this.module?.targetKeyType, originTypeTarget: this.module?.originalType});\n if (propertyKey && this.propertyKeys && this.propertyKeys.includes(propertyKey)) {\n let instanceElement = (instance as any)[propertyKey];\n if (instanceBind && typeof instanceBind === 'boolean') {\n instanceElement = instanceElement.bind(instance);\n } else if (instanceBind && typeof instanceBind === 'object') {\n instanceElement = instanceElement.bind(instanceBind);\n }\n return instanceElement;\n } else {\n return instance;\n }\n }\n\n executeModuleProperty(propertyKey: string | symbol, ...param: any[]): any {\n const target = this.getModuleInstance() as any;\n if (propertyKey) {\n const config = getInjection(target, propertyKey);\n if (config) {\n const other = new Map<any, any>();\n param.forEach(it => other.set(it.constructor, it));\n return this.simstanceManager.executeBindParameterSim({target, targetKey: propertyKey}, other)\n } else {\n if (target[propertyKey]) {\n return target[propertyKey]?.(...param);\n } else {\n throw new MethodNoSuch(`${propertyKey.toString()} noSuch`, propertyKey.toString(), propertyKey)\n }\n }\n }\n }\n\n get firstRouteChain() {\n return this.routerChains[0];\n }\n\n get firstRouteChainValue() {\n return (this.firstRouteChain as unknown as SimAtomic<any>)?.getValue();\n }\n\n get lastRouteChain() {\n return this.routerChains[this.routerChains.length - 1];\n }\n\n get lastRouteChainValue() {\n return (this.lastRouteChain as unknown as SimAtomic<any>)?.getValue();\n }\n\n hasActivateInLastRoute(obj: any) {\n return this.lastRouteChainValue?.hasActivate(obj) === true;\n }\n\n\n getQueryParamDecodeURI<T>():T;\n getQueryParamDecodeURI(key: string): string | string[] | undefined;\n getQueryParamDecodeURI<T>(key?: string): string | string[] | undefined | T {\n if (this.intent) {\n return this.intent.getQueryParamDecodeURI(key);\n }\n }\n getQueryParamDecodeURIFirst(key: string): string | undefined {\n if (this.intent) {\n return this.intent.getQueryParamDecodeURIFirst(key);\n }\n }\n\n getQueryParam<T>():T;\n getQueryParam(key: string): string | string[] | undefined;\n getQueryParam<T>(key?: string): string | string[] | undefined {\n if (this.intent) {\n return this.intent.getQueryParam(key);\n }\n }\n getQueryParamFirst(key: string): string | undefined {\n if (this.intent) {\n return this.intent.getQueryParamFirst(key);\n }\n }\n\n get queryParams(): { [key: string]: string|string[] } | undefined {\n if (this.intent) {\n return this.intent.queryParams;\n }\n }\n\n get queryParamsAfterDecodeURI(): { [key: string]: string|string[] } | undefined {\n if (this.intent) {\n return this.intent.queryParamsDecodeURI;\n }\n }\n}\n", "import { RoutingDataSet } from '../route/RouterManager';\n\nexport namespace RouterAction {\n export interface CanActivate {\n canActivate(url: RoutingDataSet, data?: any): Promise<void>;\n }\n export const isCanActivate = (obj: any): obj is CanActivate => {\n return typeof obj?.canActivate === 'function';\n };\n\n export interface OnRouting {\n onRouting(r: RoutingDataSet): Promise<void>;\n }\n\n export const isOnRouting = (obj: any): obj is OnRouting => {\n return typeof obj?.onRouting === 'function';\n };\n\n export interface HasActivate {\n hasActivate(checkObj: any): boolean;\n }\n\n export const isHasActivate = (obj: any): obj is HasActivate => {\n return typeof obj?.hasActivate === 'function';\n };\n}\n", "import {Intent} from '../intent/Intent';\nimport {ConstructorType} from '@dooboostore/core/types';\nimport {RouterModule} from './RouterModule';\nimport {Route, RouterConfig, RouterMetadataKey} from '../decorators/route/Router';\nimport {SimAtomic} from '../simstance/SimAtomic';\nimport {SimstanceManager} from '../simstance/SimstanceManager';\nimport {RouteFilter} from './RouteFilter';\nimport {Sim} from '../decorators/SimDecorator';\nimport {Expression} from '@dooboostore/core/expression/Expression';\nimport {RouterAction} from '../route/RouterAction';\nimport {SimOption} from '../SimOption';\nimport {Subject} from '@dooboostore/core/message/Subject';\nimport {SimpleApplication} from \"../SimpleApplication\";\n\nexport type RoutingOption = { router?: ConstructorType<any> | any, noOnRouting?: boolean, find?: { router: 'last' | 'first' } };\nexport type RoutingDataSet = {\n intent: Intent, routerModule: RouterModule, routerManager: RouterManager\n}\n\n// @Sim\nexport class RouterManager {\n public activeRouterModule?: RouterModule<SimAtomic, any>;\n private subject = new Subject<RoutingDataSet>()\n\n constructor(private simpleApplication: SimpleApplication, private simstanceManager: SimstanceManager, private simOption: SimOption) {\n }\n\n // @SimNoProxy\n get observable() {\n // this.subject.asObservable\n return this.subject.asObservable();\n }\n\n public routingMap(option?: RoutingOption & { prefix?: string }): { [key: string]: string | any } {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const map = {} as { [key: string]: string | any };\n if (targetRouter) {\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const routerData = routerAtomic.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerData) {\n const currentPrefix = (option?.prefix ?? '') + routerData.path;\n // Add the current router's path if it has a default route\n if (routerData.route && routerData.route['']) {\n map[currentPrefix] = routerData.route[''];\n }\n if (routerData.route) {\n Object.entries(routerData.route).forEach(([key, value]) => {\n map[currentPrefix + key] = value;\n });\n }\n routerData.routers?.forEach(it => {\n Object.assign(map, this.routingMap({...option, router: it, prefix: currentPrefix}));\n })\n }\n }\n return map;\n }\n\n /** 일반적인 lifecycle 타지않는 그냥 find.. 의미가없을듯.\n * @deprecated\n */\n public async routings<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>[]> {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const allMatches = this._collectAllMatchingModules(routerAtomic, intent, []);\n\n // Priority 1: Exact path match with a module\n const exactModuleMatches = allMatches.filter(rm => rm.path === intent.pathname && rm.module);\n if (exactModuleMatches.length > 0) {\n exactModuleMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactModuleMatches as RouterModule<R, M>[];\n }\n\n // Priority 2: Exact path match without a module (if no module matches found)\n const exactPathMatches = allMatches.filter(rm => rm.path === intent.pathname);\n if (exactPathMatches.length > 0) {\n exactPathMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactPathMatches as RouterModule<R, M>[];\n }\n\n return [] as RouterModule<R, M>[];\n }\n\n public async routing<R = SimAtomic, M = any>(intent: string, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent | string, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (typeof intent === 'string') {\n intent = new Intent(intent);\n }\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n const callCheckOnRouting = option?.noOnRouting !== true; // 기본값은 false, 즉 onRouting 호출\n\n if (!targetRouter) {\n throw new Error('no router');\n }\n // await new Promise((r)=> setTimeout(r, 0)); // <-- 이거 넣어야지 두번불러지는게 없어지는듯? 뭐지 event loop 변경된건가?\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const rootRouter = routerAtomic.getValue()!;\n const executeModuleResult = this.getExecuteModule(routerAtomic, intent, [], option);\n if (executeModuleResult) {\n const [executeModule, routerChains] = executeModuleResult;\n executeModule.routerChains = routerChains;\n this.activeRouterModule = executeModule;\n const routingDataSet: RoutingDataSet = {intent, routerModule: executeModule, routerManager: this};\n\n // --- 라우팅 경로(Chain)에 있는 모든 라우터의 라이프사이클 훅 호출 ---\n // 최종 목적지에 도달하기까지 거쳐온 모든 중간 라우터들(예: RootRouter -> UserRouter)을 순회하며\n // 각 라우터의 canActivate와 onRouting을 호출합니다.\n // 이를 통해 각 단계에서 라우팅을 검사하거나 공통 작업을 수행할 수 있습니다.\n if (routerChains.length > 0) {\n for (let i = 0; i < routerChains.length; i++) {\n const current = routerChains[i];\n const next = routerChains[i + 1];\n const value = current.getValue()! as any;\n if (RouterAction.isCanActivate(value) && next) {\n await value.canActivate(routingDataSet, next.getValue());\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value) && next) {\n await value.onRouting(routingDataSet);\n }\n }\n }\n this.activeRouterModule = executeModule;\n\n const moduleInstance = executeModule.getModuleInstance();\n\n // --- Case 1: 부분 일치 (라우터는 찾았지만, 특정 모듈은 찾지 못한 경우) ---\n // URL이 라우터의 경로와는 일치하지만, 그 안의 특정 `route` 항목과는 일치하지 않을 때 발생합니다.\n // 이 경우, 일치한 마지막 라우터의 라이프사이클 훅을 호출합니다.\n if (!executeModule?.module) {\n const routerChain = executeModule.routerChains[executeModule.routerChains.length - 1];\n const value = routerChain?.getValue() as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n }\n // --- Case 2: 완전 일치 (라우터와 특정 모듈을 모두 찾은 경우) ---\n // 표준 성공 케이스입니다.\n // 모듈을 포함하는 라우터와 모듈 인스턴스 자체의 라이프사이클 훅을 호출합니다.\n else { // find page\n const value = executeModule.router?.getValue()! as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (callCheckOnRouting && RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n // 가지고있는 선택된 Route도 isRouting이면\n if (moduleInstance && callCheckOnRouting && RouterAction.isOnRouting(moduleInstance)) {\n await moduleInstance.onRouting(routingDataSet);\n }\n }\n\n const find = this.activeRouterModule as RouterModule<any, any>;\n this.subject.next({intent: intent, routerModule: find, routerManager: this});\n return find;\n } else {\n const empty = await this._handleNotFoundRouting(rootRouter, intent);\n this.subject.next({intent: intent, routerModule: empty, routerManager: this});\n return empty;\n }\n }\n\n /**\n * URL과 일치하는 라우트를 찾지 못했을 경우를 처리합니다.\n * \"Not Found\" 상태를 나타내는 비어있는 RouterModule 객체를 생성하여 반환합니다.\n * 이 과정에서 rootRouter의 라이프사이클을 호출하여 공통 레이아웃등을 처리할 수 있습니다.\n * @param rootRouter 앱의 최상위 라우터 인스턴스\n * @param intent 확인에 실패한 원본 Intent 객체\n * @private\n */\n private async _handleNotFoundRouting(rootRouter: any, intent: Intent): Promise<RouterModule<any, any>> {\n /*\n * 이전 원본 로직 (참고용)\n * const routers: SimAtomic[] = []; 로 인해 if문이 항상 false가 되어 실제로는 동작하지 않았음.\n *\n * const routers: SimAtomic[] = [];\n * const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, routers);\n * const routingDataSet = {intent, routerModule: routerModule, routerManager: this};\n * if (routers.length && routers.length > 0) {\n * for (let i = 0; i < routers.length; i++) {\n * const current = routers[i];\n * const next = routers[i + 1];\n * const value = current.getValue()! as any;\n * // console.log('routerAction!!!!!!!!!3')\n * if (RouterAction.isCanActivate(value)) {\n * await value.canActivate(routingDataSet, next?.getValue() ?? null);\n * }\n * if (RouterAction.isOnRouting(value)) {\n * await value.onRouting(routingDataSet);\n * }\n * }\n * }\n * this.activeRouterModule = routerModule;\n * return this.activeRouterModule as RouterModule<any, any>;\n */\n const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, []);\n const routingDataSet: RoutingDataSet = {intent, routerModule: routerModule, routerManager: this};\n\n const value = rootRouter;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, null);\n }\n if (RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n\n this.activeRouterModule = routerModule;\n return this.activeRouterModule;\n }\n\n\n private getExecuteModule(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[], option?: RoutingOption): [RouterModule, SimAtomic[]] | undefined {\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerConfig) {\n // filter\n\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n // console.log('----------routerConfig.path', routerConfig.path, 'isRoot', isRoot, 'routerStrings', routerStrings, 'path', path);\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n // first find child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n let bestMatchModule: [RouterModule<SimAtomic, any>, SimAtomic[]] | undefined = undefined;\n let bestMatchLength = -1;\n\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType: child, originalType: child}, this.simstanceManager);\n const executeModule = this.getExecuteModule(routerAtomic, intent, currentParentRouters, option)\n\n if (executeModule) {\n const [rm, chains] = executeModule;\n const currentMatchLength = rm.path?.length || 0;\n if (currentMatchLength > bestMatchLength) {\n bestMatchLength = currentMatchLength;\n bestMatchModule = executeModule;\n } else if (currentMatchLength === bestMatchLength) {\n if (option?.find?.router === 'last') {\n bestMatchModule = executeModule;\n }\n }\n }\n }\n if (bestMatchModule) {\n return bestMatchModule;\n }\n }\n // second find my child routers\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent)\n if (module) {\n return [module, currentParentRouters];\n }\n }\n }\n }\n\n // path: 지금 내 라우터의 path, parentRoots: 부모router path들, url: 사용자가 원하는 full intent url\n private isRootUrl(path: string | undefined, parentRoots: string[], url: string): boolean {\n const searchString = parentRoots.join('') + (path || '');//현재까지 경로 내포함\n if (searchString === '/') {\n return true;\n }\n const searchs = searchString.split('/');\n const urls = url.split('/')\n const trimmedUrls = urls.slice(0, searchs.length).join('/');\n // console.log('!!searchString', searchString, 'url', trimmedUrls);\n return !!Expression.Path.pathNameData(trimmedUrls, searchString);\n // return url.startsWith(searchString)\n }\n\n private _collectAllMatchingModules(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[]): RouterModule[] {\n const matches: RouterModule[] = [];\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n\n if (routerConfig) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return matches;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n\n // Collect matches from child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType: child, originalType: child}, this.simstanceManager);\n matches.push(...this._collectAllMatchingModules(routerAtomic, intent, currentParentRouters));\n }\n }\n\n // Collect matches from current router's routes or the router itself\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent);\n if (module) {\n module.routerChains = currentParentRouters;\n matches.push(module);\n }\n }\n }\n return matches;\n }\n\n private findRouterOrModule(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // 1. Try to find an exact route module match\n const module = this.findRouting(router, routerData, parentRoots, intent);\n if (module?.module) {\n module.intent = intent;\n return module;\n }\n\n // 2. If no exact module, check if the intent path matches the router's path\n const urlRoot = parentRoots.join('') + (routerData.path || '');\n if (this.isRootUrl(routerData.path, parentRoots, intent.pathname)) {\n const rm = new RouterModule(this.simstanceManager, router);\n rm.intent = intent;\n rm.path = urlRoot;\n rm.pathData = intent.getPathnameData(urlRoot);\n return rm;\n }\n return undefined;\n }\n\n private findRouting(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // console.log('findRouting', routerData.route);\n const urlRoot = parentRoots.join('') + routerData.path\n if (routerData.route) {\n for (const it of Object.keys(routerData.route).filter(it => !it.startsWith('_'))) {\n const path = urlRoot + it;\n const pathnameData = intent.getPathnameData(path);\n if (pathnameData) {\n try {\n const dataSet = this.findRouteProperty(routerData.route, it, intent);\n const rm = new RouterModule(this.simstanceManager, router, dataSet.child);\n rm.data = dataSet.data;\n rm.path = path;\n rm.pathData = pathnameData;\n rm.propertyKeys = dataSet.propertyKeys;\n return rm;\n } catch (e) {\n }\n }\n }\n }\n }\n\n private findRouteProperty(route: Route, propertyName: string, intent: Intent): { child?: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function }, data?: any, propertyKeys?: (string | symbol)[] } {\n let child: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function } | undefined;\n let data: any;\n let propertyKeys: undefined | (string | symbol)[];\n const routeElement = route[propertyName];\n if (typeof routeElement === 'function') {\n child = {targetKeyType: routeElement, originalType: routeElement};\n } else if (typeof routeElement === 'symbol') {\n child = this.simstanceManager.findLastSim(routeElement)?.type;\n } else if (typeof routeElement === 'string') {\n return this.findRouteProperty(route, routeElement, intent)\n } else if (Array.isArray(routeElement)) {\n const r = routeElement?.[0];\n if (typeof r === 'object' && 'filters' in r && 'target' in r) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(r.filters)) {\n filters.push(...r.filters);\n } else if (r.filters) {\n filters.push(r.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: r.target, originalType: r.target};\n }\n } else {\n child = {targetKeyType: r, originalType: r};\n }\n data = routeElement?.[1];\n } else if (typeof routeElement === 'object' && 'target' in routeElement && 'propertyKeys' in routeElement) { // RouteTargetMethod\n const noAccept = routeElement.filters?.filter(it => it).some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType: routeElement.target};\n propertyKeys = routeElement.propertyKeys as (string | symbol)[];\n }\n } else if (typeof routeElement === 'object' && 'filters' in routeElement && 'target' in routeElement) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routeElement.filters)) {\n filters.push(...routeElement.filters);\n } else if (routeElement.filters) {\n filters.push(routeElement.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType: routeElement.target};\n }\n }\n return {\n child,\n data,\n propertyKeys\n }\n }\n}\n", "import { SimstanceManager } from './simstance/SimstanceManager';\nimport { SimOption } from './SimOption';\nimport { IntentManager, isRouterPublishType, PublishData, RouterPublishType } from './intent/IntentManager';\nimport { RouterManager, RoutingOption } from './route/RouterManager';\nimport { Intent } from './intent/Intent';\nimport { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { RouterModule } from './route/RouterModule';\nimport { SimAtomic } from './simstance/SimAtomic';\nimport { SimNoSuch } from './throwable/SimNoSuch';\nimport { containers, Sim, SimConfig } from './decorators/SimDecorator';\n\nexport class SimpleApplication {\n public simstanceManager: SimstanceManager;\n public intentManager: IntentManager;\n public routerManager: RouterManager;\n // public rootRouter?: ConstructorType<any>;\n\n // constructor();\n // constructor(option: SimOption);\n // constructor(rootRouter?: ConstructorType<Object> | Function);\n // constructor(rootRouter?: ConstructorType<Object> | Function, option?: SimOption);\n // constructor(rootRouter?: (ConstructorType<Object> | Function) | SimOption, option = new SimOption()) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(public option: SimOption = new SimOption()) {\n // if (option.rootRouter instanceof SimOption) {\n // option = rootRouter;\n // } else if (typeof option.rootRouter === 'function') {\n // this.rootRouter = rootRouter;\n // }\n\n this.simstanceManager = new SimstanceManager(this, option);\n // this.simstanceManager.setStoreSet(SimpleApplication, this);\n this.simstanceManager.setStoreSet(SimstanceManager, this.simstanceManager);\n // cacheManager\uB294 \uC0AC\uC6A9\uC790\uAC00 \uBD88\uB7EC\uB2E4 \uC0AC\uC6A9\uD560\uB54C \uB728\uB3C4\uB85D. \uBBF8\uB9AC \uCD94\uAC00\uC548\uD574\uC900\uB2E4.\n // this.routerManager = this.simstanceManager.proxy(new RouterManager(this.simstanceManager, option));\n // this.intentManager = this.simstanceManager.proxy(new IntentManager(this.simstanceManager, this.routerManager, option));\n this.routerManager = new RouterManager(this, this.simstanceManager, option);\n this.intentManager = new IntentManager(this, this.simstanceManager, this.routerManager, option);\n this.simstanceManager.setStoreSet(IntentManager, this.intentManager);\n this.simstanceManager.setStoreSet(RouterManager, this.routerManager);\n containers.add(this);\n }\n\n public getSimstanceManager(): SimstanceManager {\n return this.simstanceManager;\n }\n\n public getIntentManager(): IntentManager {\n return this.intentManager;\n }\n\n public getRouterManager(): RouterManager {\n return this.routerManager;\n }\n\n public run(otherInstanceSim?: Map<ConstructorType<any> | Function | SimConfig | Symbol, any>): this {\n otherInstanceSim ??= new Map<ConstructorType<any> | Function | SimConfig | Symbol, any>();\n otherInstanceSim.set(SimpleApplication, this);\n this.simstanceManager.run(otherInstanceSim);\n return this;\n // return this.simstanceManager;\n }\n\n public simAtomic<T>(type: ConstructorType<T> | Function | Symbol): SimAtomic<T> | undefined {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findFirstSim(type);\n } else if (typeof type === 'function') {\n return this.simstanceManager.findFirstSim({ type: type });\n // return new SimAtomic<T>(type, this.simstanceManager);\n }\n }\n public simAtomics<T>(type: ConstructorType<T> | Function | Symbol): SimAtomic<T>[] {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findSims(type) ?? [];\n } else if (typeof type === 'function') {\n return this.simstanceManager.findSims({ type }) ?? [];\n } else {\n return [];\n }\n }\n\n public getInstance<T>(type: ConstructorType<T>): T {\n const i = this.sim<T>(type);\n if (i) {\n return i;\n } else {\n throw new SimNoSuch('SimNoSuch: no simple instance(getInstance) ' + 'name:' + type?.prototype?.constructor?.name + ',' + type);\n }\n }\n\n public sim<T>(type: ConstructorType<T> | Function | Symbol): T | undefined {\n return this.simAtomic<T>(type)?.getValue();\n }\n public sims<T>(type: ConstructorType<T> | Function | Symbol): T[] {\n return this.simAtomics(type).map(it => it.getValue());\n }\n\n public addSim(target: ConstructorType<any> | Function): void;\n public addSim(config: SimConfig, target: ConstructorType<any> | Function | any): GenericClassDecorator<ConstructorType<any> | Function>;\n public addSim(configOrTarget: SimConfig | ConstructorType<any> | Function, target?: ConstructorType<any> | Function | any): void | GenericClassDecorator<ConstructorType<any> | Function> {\n const r: any = Sim(configOrTarget as any);\n if (typeof r === 'function' && target) {\n r(target);\n }\n }\n\n public publishIntent(i: PublishData, data?: any): Promise<any[]> {\n return this.intentManager.publish(i, data);\n }\n\n public routing<R = SimAtomic, M = any>(i: string, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string; data?: any }, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: Intent, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string; data?: any } | string | Intent, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (i instanceof Intent) {\n return this.routerManager.routing<R, M>(i, option);\n } else if (typeof i === 'string') {\n const intent = new Intent(i);\n return this.routerManager.routing<R, M>(intent, option);\n } else {\n const intent = new Intent(i.path, i.data);\n return this.routerManager.routing<R, M>(intent, option);\n }\n }\n}\n", "import {Subject} from './Subject';\nimport {Subscription} from './Subscription';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import {ConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport {Observable} from '@dooboostore/core/message/Observable';\nimport {BehaviorSubject} from '@dooboostore/core/message/BehaviorSubject';\nimport {Expression} from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\nimport {ValidUtils} from \"@dooboostore/core/valid/ValidUtils\";\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n search: string;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n}\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, firstUrl?: string };\nexport type ChangeStateResult = { data?: any }\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\nexport type ChangeStateConfig = { noEventAndPublish?: boolean };\nexport type StateOptions = { data?: any, title?: string, config?: ChangeStateConfig };\nexport type RouterMethodOptions = { data?: any, title?: string, config?: ChangeStateConfig };\n\nexport type RouterEventType = RouteData & { triggerPoint: 'start' | 'end' };\n\n// popstate \uC774\uBCA4\uD2B8 \uBB34\uC2DC\uB97C \uC704\uD55C \uB9C8\uCEE4\nconst ROUTER_NO_EVENT_MARKER = '__ROUTER_NO_EVENT__';\n\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouterEventType>;\n private _config: RouterConfig<T>;\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouterEventType;\n if (config?.firstUrl) {\n const path = config.firstUrl.split('?');\n const urlSearchParams = new URLSearchParams(path[1] ?? '');\n routeData = {\n url: config.firstUrl,\n path: path[0],\n searchParams: urlSearchParams,\n router: this,\n search: urlSearchParams.size > 0 ? `?${urlSearchParams.toString()}` : '',\n triggerPoint: 'end'\n }\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(routeData);\n }\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n // console.log('----->', event.state)\n // noEventAndPublish \uB9C8\uCEE4\uAC00 \uC788\uC73C\uBA74 \uC774\uBCA4\uD2B8 \uBC1C\uD589\uD558\uC9C0 \uC54A\uC74C\n // if (event.state && event.state[ROUTER_NO_EVENT_MARKER]) {\n // } else {\n const routeData: RouterEventType = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject.next(routeData);\n // }\n })\n }\n\n\n get observable(): Observable<RouterEventType> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n getSearchParamObject<T>() {\n return this.searchParamObject as unknown as T;\n }\n\n get config() {\n return this._config;\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n // async attach(): Promise<void> {\n // // const proxy = getDomRenderProxy(this.config.rootObject)\n // // if (proxy) {\n // // const key = `___${EventManager.ROUTER_VARNAME}`;\n // // await proxy.render(key);\n // // }\n // }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n } else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: { pathOrUrl?: string, urlExpression?: string }): RouteData {\n\n let path = this.getPathName();\n let url = this.getUrl();\n let searchParams = this.getSearchParams();\n let search = this.getSearch();\n\n // console.log('pppppppppppppp', path,url,searchParams,search);\n // \uC694\uCCAD URL\uC774 \uC788\uC744\uACBD\uC6B0 \uD574\uB2F9 URL\uB85C \uD30C\uC2F1\n if (config?.pathOrUrl) {\n const paths = config.pathOrUrl.split('?');\n search = paths[1] ? `?${paths[1]}`: '';\n searchParams = new URLSearchParams(search);\n const firstUrl = paths[0];\n if (ValidUtils.isUrl(firstUrl)) {\n path = new URL(firstUrl).pathname;\n } else {\n path = firstUrl;\n }\n url = config.pathOrUrl;\n // }\n }\n // console.log('url', url);\n const newVar: RouteData = {\n path: path,\n url: url,\n searchParams: searchParams,\n // \uC774\uB807\uAC8C \uD558\uBA74 \uC9C4\uC9DC \uBB38\uC790\uC5F4\uC774 \uBCC0\uD615\uC774 \uB420\uC218 \uC788\uB2E4 \uB530\uB77C\uC11C \uADF8\uB0E5 \uBB38\uC790\uC5F4 \uC790\uB978 \uC6D0\uBCF8\uC744\uB123\uC5B4\uC918\uC57C\uD55C\uB2E4\n // search: searchParams.size > 0 ? `?${searchParams.toString()}` : '',\n search: search,\n router: this\n };\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n // newVar.router = this;\n // newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n // noEventAndPublish\uAC00 true\uC774\uBA74 \uB9C8\uCEE4 \uCD94\uAC00\n const stateData = config?.noEventAndPublish \n ? { ...data, [ROUTER_NO_EVENT_MARKER]: true }\n : data;\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'start'});\n }\n \n this.config.window.history?.pushState(stateData, title ?? '', path);\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'end'});\n }\n \n return {data: stateData};\n }\n\n replaceState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n // console.log('-re?->', data, title, path, config);\n // noEventAndPublish\uAC00 true\uC774\uBA74 \uB9C8\uCEE4 \uCD94\uAC00\n const stateData = config?.noEventAndPublish \n ? { ...data, [ROUTER_NO_EVENT_MARKER]: true }\n : data;\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'start'});\n }\n \n this.config.window.history?.replaceState(stateData, title ?? '', path);\n \n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData({pathOrUrl: path}), triggerPoint: 'end'});\n }\n \n return {data: stateData};\n }\n\n getData(): any {\n return this.config.window.history?.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n back(config?: ChangeStateConfig): void {\n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history.back();\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n }\n\n forward(config?: ChangeStateConfig): void {\n if (!config?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history?.forward();\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n }\n\n go(i: number, config?: ChangeStateConfig): void;\n async go(config: string | { path: RouteAction, state?: RouterMethodOptions, replace?: boolean, scrollToTop?: boolean }): Promise<void>;\n go(config: number | string | { path: RouteAction, state?: RouterMethodOptions, replace?: boolean, scrollToTop?: boolean }, changeStateConfig?: ChangeStateConfig): Promise<void> | void {\n if (typeof config === 'number') {\n if (!changeStateConfig?.noEventAndPublish) {\n this.behaviorSubject.next({...this.getRouteData(), triggerPoint: 'start'});\n }\n this.config.window.history?.go(config);\n // end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate')\uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4\n return;\n }\n\n if (typeof config === 'string') {\n config = {path: config};\n }\n\n if (config?.replace) {\n this.replace(config.path, config.state);\n } else {\n this.push(config.path, config.state);\n }\n\n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n } catch (e) {\n }\n }\n }\n\n toUrl(data: RouteAction) {\n // console.log('toUrl', data);\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toRawQueryString(data.searchParams, {valueEncodeURIComponent: true}) : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, state?: RouterMethodOptions): void;\n\n abstract replace(path: RouteAction, state?: RouterMethodOptions): void;\n\n abstract pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract pushAddSearchParam(params: [[string, string]], state?: RouterMethodOptions): void;\n\n abstract pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void;\n\n abstract replaceAddSearchParam(params: [[string, string]], state?: RouterMethodOptions): void;\n\n abstract replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void;\n\n abstract getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams;\n\n abstract getHashSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n\n abstract getSearch(): string;\n\n reload(): void {\n const currentUrl = this.getUrl();\n this.replace(currentUrl);\n }\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // \uCD9C\uB825: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 URL\uC785\uB2C8\uB2E4:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n }\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n }\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD2B9\uC815 \uD0A4\uB97C \uC0AD\uC81C\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n }\n\n /**\n * URLSearchParams\uC5D0 \uD0A4-\uAC12 \uC30D\uC744 \uCD94\uAC00\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n }\n\n /**\n * URLSearchParams\uC5D0\uC11C \uD0A4\uB97C \uC0AD\uC81C\uD558\uACE0 \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00 (upsert)\n * \uAE30\uC874 \uAC12\uC774 \uC788\uC73C\uBA74 \uC0AD\uC81C\uD558\uACE0, \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uCD94\uAC00\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // \uAE30\uC874 \uAC12 \uC0AD\uC81C\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n }\n\n /**\n * URLSearchParams \uC870\uC791\uC744 \uC704\uD55C \uD5EC\uD37C\n */\n export const manipulateSearchParams = (\n searchParams: URLSearchParams,\n options?: { delete?: string[], append?: [[string, string]], upsert?: Record<string, string | string[]> }\n ): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n }\n\n}", "import { ChangeStateResult, RouteAction, Router, RouterConfig, ChangeStateConfig, RouterMethodOptions } from './Router';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n if (!this.config.window.document?.location?.href) {\n return new URLSearchParams();\n }\n\n const searchParams = (new URL(this.config.window.document.location?.href)).searchParams;\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n return super.pushState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n return super.replaceState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location?.pathname??'/'}${this.config.window.location?.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n pushAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({searchParams: s}, state);\n }\n\n replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location?.pathname??'/'}${this.config.window.location?.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(state?.data, state?.title, href, state?.config);\n }\n\n replaceAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.replace({searchParams: s}, state);\n }\n\n getUrl(): string {\n if (!this.config.window.document?.location?.href) {\n //if ((!this.config.window.document?.location?.href) || (this.config.window.document?.location?.href === 'about:blank')) {\n return '/';\n }\n const url = new URL(this.config.window.document.location?.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location?.href??'/';\n }\n\n getPathName(): string {\n return this.config.window.location?.pathname??'/';\n }\n\n getSearch(): string {\n return this.config.window.location?.search??'';\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location?.hash.slice(1)??'');\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n}\n", "export namespace LocationUtils {\n export const hash = (window: Window): string => {\n return window.location.hash.replace('#', '')\n }\n\n export const hashPath = (window: Window): string => {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n // search\uB294 \uC55E\uC5D0 ? \uBD99\uC5B4\uC788\uB2E4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB3C4 location.search\n export const hashSearch = (window: Window): string => {\n const string = window.location.hash.replace('#', '').split('?')[1];\n return string ? `?${string}` : '';\n }\n\n export const hashQueryParams = (window: Window): Map<string, string> => {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return LocationUtils.queryStringToMap(s);\n }\n\n export const path = (window: Window): string => {\n return window.location.pathname;\n }\n\n export const search = (window: Window): string => {\n return window.location.search || '';\n }\n\n\n export const pathQueryParamsObject = (window: Window): { [key:string]: string } => {\n return LocationUtils.queryStringToObject(window.location.search.substring(1));\n }\n\n export const hashQueryParamsObject = (window: Window): { [key:string]: string } => {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return LocationUtils.queryStringToObject(s);\n }\n }\n\n export const pathQueryParams = (window: Window): Map<string, string> => {\n return LocationUtils.queryStringToMap(window.location.search.substring(1));\n }\n\n export const queryStringToMap = (s: string) => {\n const params = new Map<string, string>();\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params.set(kv[0], kv[1]);\n }\n })\n return params;\n }\n\n export const queryStringToObject = (s: string): { [key:string]: string } => {\n const params = {} as { [key:string]: string };\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params[kv[0]] = kv[1];\n }\n })\n return params;\n }\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig, ChangeStateConfig, RouterMethodOptions } from './Router';\nimport { LocationUtils } from '../location/LocationUtils';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\n\nexport class HashRouter extends Router {\n\n constructor(config: RouterConfig) {\n super(config);\n }\n\n\n getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams {\n const hashSearch = LocationUtils.hashSearch(this.config.window);\n const searchParams = hashSearch ? new URLSearchParams(hashSearch) : (new URL(this.config.window.document.location.href)).searchParams;\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): ChangeStateResult {\n if (path === '/') {\n return super.pushState(state?.data, state?.title, '/', state?.config);\n } else {\n return super.pushState(state?.data, state?.title, `#${this.toUrl(path)}`, state?.config);\n }\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions):ChangeStateResult {\n if (path === '/') {\n return super.replaceState(state?.data, state?.title, '/', state?.config);\n } else {\n return super.replaceState(state?.data, state?.title, `#${this.toUrl(path)}`, state?.config);\n }\n }\n\n setDeleteHashSearchParam(name: string, state?: RouterMethodOptions) {\n }\n\n pushDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getHashSearchParams({delete:Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n pushDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete:Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n pushAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({searchParams: s}, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(state?.data, state?.title, href, state?.config);\n }\n\n replaceDeleteSearchParam(name: string | string[], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, state);\n }\n\n replaceAddSearchParam(params:[[string, string]], state?: RouterMethodOptions): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state?: RouterMethodOptions): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.replace({searchParams: s}, state);\n }\n\n getUrl(): string {\n return LocationUtils.hash(this.config.window) || '/';\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return LocationUtils.hashPath(this.config.window) || '/';\n }\n\n getSearch(): string {\n return LocationUtils.hashSearch(this.config.window);\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const hash = this.config.window.location.hash;\n const queryIndex = hash.indexOf('?');\n const searchParams = (queryIndex !== -1) ? new URLSearchParams(hash.slice(queryIndex + 1)) : new URLSearchParams();\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n}\n", "import { ChangeStateConfig, ChangeStateResult, RouteAction, Router, RouterConfig, RouterMethodOptions } from '@dooboostore/core-web/routers/Router';\nimport { UrlUtils } from '@dooboostore/core/url/UrlUtils';\n\nexport class ElementRouter extends Router {\n private _history: { url: string; data: any; title?: string }[] = [];\n private _currentIndex = -1;\n\n constructor(config: RouterConfig) {\n // Router \uBD80\uBAA8 \uD074\uB798\uC2A4\uAC00 \uC0DD\uC131\uC790\uC5D0\uC11C go()\uB97C \uD638\uCD9C\uD558\uC5EC \uCD08\uAE30\uD654\uB418\uC9C0 \uC54A\uC740 \uD544\uB4DC\uC5D0 \uC811\uADFC\uD558\uB294 \uAC83\uC744 \uBC29\uC9C0\uD558\uAE30 \uC704\uD574\n // firstUrl\uC744 \uC81C\uAC70\uD558\uACE0 \uB118\uAE34 \uB4A4 \uC790\uC2DD\uC5D0\uC11C \uC218\uB3D9 \uCC98\uB9AC\uD569\uB2C8\uB2E4.\n const { firstUrl, ...rest } = config;\n super(rest);\n\n const startUrl = firstUrl ?? '/';\n this._history = [{ url: startUrl, data: null }];\n this._currentIndex = 0;\n\n if (firstUrl) {\n this.replace(firstUrl, { config: { noEventAndPublish: true } });\n }\n }\n\n // Override pushState to manage internal history\n pushState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'start' });\n }\n\n // Ensure _history is initialized (defense for super calls)\n if (!this._history) this._history = [];\n\n this._history = this._history.slice(0, this._currentIndex + 1);\n this._history.push({ url: path, data, title });\n this._currentIndex++;\n\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'end' });\n }\n return { data };\n }\n\n // Override replaceState to manage internal history\n replaceState(data: any, title: string | undefined, path: string, config?: ChangeStateConfig): ChangeStateResult {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'start' });\n }\n\n if (!this._history) this._history = [];\n if (this._currentIndex === -1) {\n this._history.push({ url: path, data, title });\n this._currentIndex = 0;\n } else {\n this._history[this._currentIndex] = { url: path, data, title };\n }\n\n if (!config?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: 'end' });\n }\n return { data };\n }\n\n push(path: RouteAction, state?: RouterMethodOptions): void {\n this.pushState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n replace(path: RouteAction, state?: RouterMethodOptions): void {\n this.replaceState(state?.data, state?.title, this.toUrl(path), state?.config);\n }\n\n back(config?: ChangeStateConfig): void {\n if (this._currentIndex > 0) {\n this.go(-1, config);\n }\n }\n\n forward(config?: ChangeStateConfig): void {\n if (this._currentIndex < this._history.length - 1) {\n this.go(1, config);\n }\n }\n\n go(i: number, config?: ChangeStateConfig): void;\n async go(config: string | { path: RouteAction; state?: RouterMethodOptions; replace?: boolean; scrollToTop?: boolean }): Promise<void>;\n go(config: number | string | { path: RouteAction; state?: RouterMethodOptions; replace?: boolean; scrollToTop?: boolean }, changeStateConfig?: ChangeStateConfig): Promise<void> | void {\n if (typeof config === 'number') {\n const targetIndex = this._currentIndex + config;\n if (this._history && targetIndex >= 0 && targetIndex < this._history.length) {\n const behaviorSubject = (this as any).behaviorSubject;\n if (!changeStateConfig?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData(), triggerPoint: 'start' });\n }\n\n this._currentIndex = targetIndex;\n const entry = this._history[this._currentIndex];\n\n if (!changeStateConfig?.noEventAndPublish && behaviorSubject) {\n behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: entry.url }), triggerPoint: 'end' });\n }\n }\n return;\n }\n return super.go(config as any, changeStateConfig);\n }\n\n getData(): any {\n return this._history?.[this._currentIndex]?.data;\n }\n\n getUrl(): string {\n return this._history?.[this._currentIndex]?.url ?? this.config?.firstUrl ?? '/';\n }\n\n getHref(): string {\n return this.getUrl();\n }\n\n getPathName(): string {\n return this.getUrl().split('?')[0];\n }\n\n getSearch(): string {\n const parts = this.getUrl().split('?');\n return parts[1] ? `?${parts[1]}` : '';\n }\n\n getSearchParams(data?: { delete?: string[]; append?: [[string, string]] }): URLSearchParams {\n const search = this.getSearch();\n const searchParams = new URLSearchParams(search);\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n getHashSearchParams(data?: { delete?: string[]; append?: [[string, string]] }): URLSearchParams {\n const url = this.getUrl();\n const hashIdx = url.indexOf('#');\n const hash = hashIdx !== -1 ? url.slice(hashIdx + 1) : '';\n const searchParams = new URLSearchParams(hash);\n return UrlUtils.manipulateSearchParams(searchParams, data);\n }\n\n pushAddSearchParam(params: [[string, string]], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ append: params });\n this.push({ searchParams: s }, state);\n }\n\n pushDeleteHashSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });\n const url = this.getUrl().split('#')[0];\n const size = Array.from(s.entries()).length;\n this.push(url + (size > 0 ? '#' + s.toString() : ''), state);\n }\n\n pushDeleteSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ delete: Array.isArray(name) ? name : [name] });\n this.push({ searchParams: s }, state);\n }\n\n pushUpsertSearchParam(params: Record<string, string | string[]>, state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams();\n UrlUtils.upsertSearchParam(s, params);\n this.push({ searchParams: s }, state);\n }\n\n replaceAddSearchParam(params: [[string, string]], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ append: params });\n this.replace({ searchParams: s }, state);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });\n const url = this.getUrl().split('#')[0];\n const size = Array.from(s.entries()).length;\n this.replace(url + (size > 0 ? '#' + s.toString() : ''), state);\n }\n\n replaceDeleteSearchParam(name: string | string[], state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParams({ delete: Array.isArray(name) ? name : [name] });\n this.replace({ searchParams: s }, state);\n }\n\n replaceUpsertSearchParam(params: Record<string, string | string[]>, state: RouterMethodOptions | undefined): void {\n const s = this.getSearchParamObject();\n UrlUtils.upsertSearchParam(s as any, params);\n this.replace({ searchParams: s as any }, state);\n }\n}\n", "import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { PathRouter } from '@dooboostore/core-web/routers/PathRouter';\nimport { HashRouter } from '@dooboostore/core-web/routers/HashRouter';\nimport { ElementRouter } from '../router/ElementRouter';\nimport { SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { Router, RouterEventType } from '@dooboostore/core-web/routers/Router';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { ConstructorType, Optional } from '@dooboostore/core/types';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\nexport type SwcConfigType = {\n rootRouter: ConstructorType<any>;\n routeType: 'path' | 'hash' | 'element';\n path?: string;\n window: Window;\n};\n\nexport type SwcAttributeConfigType = Optional<SwcConfigType, 'routeType' | 'window'>;\n\nexport class SwcAppEngine {\n public simpleApplication?: SimpleApplication;\n public router?: Router;\n private routerSubscription?: Subscription;\n private _isInitialized = false;\n\n constructor(private host: HTMLElement) {}\n\n async connect() {\n if (this._isInitialized) return;\n this._isInitialized = true;\n\n // Wait for event loop to ensure attributes and global scripts are ready\n await new Promise(resolve => setTimeout(resolve, 0));\n\n const configStr = this.host.getAttribute('swc-get-application-config');\n if (!configStr) return;\n\n try {\n const userConfig: SwcAttributeConfigType = FunctionUtils.executeReturn({ script: configStr, context: this.host });\n if (userConfig && userConfig.rootRouter) {\n const _config: SwcConfigType = {\n routeType: 'element',\n window: window,\n ...userConfig\n } as SwcConfigType;\n\n // Router Selection\n if (_config.routeType === 'path') {\n this.router = new PathRouter({ window: _config.window, firstUrl: _config.path });\n } else if (_config.routeType === 'hash') {\n this.router = new HashRouter({ window: _config.window, firstUrl: _config.path });\n } else if (_config.routeType === 'element') {\n this.router = new ElementRouter({ window: _config.window, firstUrl: _config.path });\n }\n\n // Routing sync\n if (this.router) {\n this.routerSubscription = this.router.observable.subscribe((route: RouterEventType) => {\n if (route.triggerPoint === 'end') {\n this.simpleApplication?.routing(route.path);\n }\n });\n }\n\n // App start\n this.simpleApplication = new SimpleApplication(new SimOption({ excludeProxys: [Node], rootRouter: _config.rootRouter }));\n\n const otherInstanceSim = new Map<any, any>();\n if (this.router) otherInstanceSim.set(Router, this.router);\n this.simpleApplication.run(otherInstanceSim);\n\n // Rendering\n const data = this.simpleApplication.sim(_config.rootRouter);\n if (data instanceof Node) {\n if (this.host.shadowRoot) this.host.shadowRoot.replaceChildren(data);\n else this.host.replaceChildren(data);\n }\n\n if (_config.path) await this.router?.go(_config.path);\n }\n } catch (e) {\n console.error('[SWC-APP-ENGINE] Init failed:', e);\n }\n }\n\n disconnect() {\n this.routerSubscription?.unsubscribe();\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-a', extends: 'a' })\nexport class SwcAppAnchor extends HTMLAnchorElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-area', extends: 'area' })\nexport class SwcAppArea extends HTMLAreaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-audio', extends: 'audio' })\nexport class SwcAppAudio extends HTMLAudioElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-base', extends: 'base' })\nexport class SwcAppBase extends HTMLBaseElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-button', extends: 'button' })\nexport class SwcAppButton extends HTMLButtonElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-canvas', extends: 'canvas' })\nexport class SwcAppCanvas extends HTMLCanvasElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-data', extends: 'data' })\nexport class SwcAppData extends HTMLDataElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-datalist', extends: 'datalist' })\nexport class SwcAppDataList extends HTMLDataListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-details', extends: 'details' })\nexport class SwcAppDetails extends HTMLDetailsElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-dialog', extends: 'dialog' })\nexport class SwcAppDialog extends HTMLDialogElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-div', extends: 'div' })\nexport class SwcAppDiv extends HTMLDivElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-dl', extends: 'dl' })\nexport class SwcAppDl extends HTMLDListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-embed', extends: 'embed' })\nexport class SwcAppEmbed extends HTMLEmbedElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-fieldset', extends: 'fieldset' })\nexport class SwcAppFieldSet extends HTMLFieldSetElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-form', extends: 'form' })\nexport class SwcAppForm extends HTMLFormElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-hr', extends: 'hr' })\nexport class SwcAppHr extends HTMLHRElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-iframe', extends: 'iframe' })\nexport class SwcAppIFrame extends HTMLIFrameElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-img', extends: 'img' })\nexport class SwcAppImage extends HTMLImageElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-input', extends: 'input' })\nexport class SwcAppInput extends HTMLInputElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-label', extends: 'label' })\nexport class SwcAppLabel extends HTMLLabelElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-legend', extends: 'legend' })\nexport class SwcAppLegend extends HTMLLegendElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-li', extends: 'li' })\nexport class SwcAppLi extends HTMLLIElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-link', extends: 'link' })\nexport class SwcAppLink extends HTMLLinkElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-map', extends: 'map' })\nexport class SwcAppMap extends HTMLMapElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-meta', extends: 'meta' })\nexport class SwcAppMeta extends HTMLMetaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-meter', extends: 'meter' })\nexport class SwcAppMeter extends HTMLMeterElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-del', extends: 'del' })\nexport class SwcAppMod extends HTMLModElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-object', extends: 'object' })\nexport class SwcAppObject extends HTMLObjectElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-ol', extends: 'ol' })\nexport class SwcAppOl extends HTMLOListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-optgroup', extends: 'optgroup' })\nexport class SwcAppOptGroup extends HTMLOptGroupElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-option', extends: 'option' })\nexport class SwcAppOption extends HTMLOptionElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-output', extends: 'output' })\nexport class SwcAppOutput extends HTMLOutputElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-p', extends: 'p' })\nexport class SwcAppParagraph extends HTMLParagraphElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-param', extends: 'param' })\nexport class SwcAppParam extends HTMLParamElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-picture', extends: 'picture' })\nexport class SwcAppPicture extends HTMLPictureElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-pre', extends: 'pre' })\nexport class SwcAppPre extends HTMLPreElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-progress', extends: 'progress' })\nexport class SwcAppProgress extends HTMLProgressElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-blockquote', extends: 'blockquote' })\nexport class SwcAppQuote extends HTMLQuoteElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-script', extends: 'script' })\nexport class SwcAppScript extends HTMLScriptElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-select', extends: 'select' })\nexport class SwcAppSelect extends HTMLSelectElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-slot', extends: 'slot' })\nexport class SwcAppSlot extends HTMLSlotElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-source', extends: 'source' })\nexport class SwcAppSource extends HTMLSourceElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-span', extends: 'span' })\nexport class SwcAppSpan extends HTMLSpanElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-style', extends: 'style' })\nexport class SwcAppStyle extends HTMLStyleElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-table', extends: 'table' })\nexport class SwcAppTable extends HTMLTableElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-tbody', extends: 'tbody' })\nexport class SwcAppTableSection extends HTMLTableSectionElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-td', extends: 'td' })\nexport class SwcAppTableCell extends HTMLTableCellElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-template', extends: 'template' })\nexport class SwcAppTemplate extends HTMLTemplateElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-textarea', extends: 'textarea' })\nexport class SwcAppTextArea extends HTMLTextAreaElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-time', extends: 'time' })\nexport class SwcAppTime extends HTMLTimeElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-title', extends: 'title' })\nexport class SwcAppTitle extends HTMLTitleElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-tr', extends: 'tr' })\nexport class SwcAppTableRow extends HTMLTableRowElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-track', extends: 'track' })\nexport class SwcAppTrack extends HTMLTrackElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-ul', extends: 'ul' })\nexport class SwcAppUl extends HTMLUListElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-video', extends: 'video' })\nexport class SwcAppVideo extends HTMLVideoElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-h1', extends: 'h1' })\nexport class SwcAppHeading extends HTMLHeadingElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../../decorators/elementDefine';\nimport { SwcAppEngine } from '../SwcAppEngine';\n\n@elementDefine({ name: 'swc-app-body', extends: 'body' })\nexport class SwcAppBody extends HTMLBodyElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n", "import { elementDefine } from '../decorators/elementDefine';\n\n@elementDefine({ name: 'swc-loading', extends: 'template' })\nexport class SwcLoading extends HTMLTemplateElement {}\n\n@elementDefine({ name: 'swc-error', extends: 'template' })\nexport class SwcError extends HTMLTemplateElement {}\n\n@elementDefine({ name: 'swc-success', extends: 'template' })\nexport class SwcSuccess extends HTMLTemplateElement {}\n\n@elementDefine({ name: 'swc-when', extends: 'template' })\nexport class SwcWhen extends HTMLTemplateElement {}\n\n@elementDefine({ name: 'swc-otherwise', extends: 'template' })\nexport class SwcOtherwise extends HTMLTemplateElement {}\n\n@elementDefine({ name: 'swc-default', extends: 'template' })\nexport class SwcDefault extends HTMLTemplateElement {}\n", "import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\n@elementDefine({ name: 'swc-loop', extends: 'template' })\nexport class SwcLoop extends HTMLTemplateElement {\n private _value: any[] = [];\n private _nodes: (Node[] | null)[] = [];\n private _defaultNodes: Node[] = [];\n\n get value(): any[] {\n return this._value;\n }\n\n set value(nv: any[]) {\n this._value = Array.isArray(nv) ? [...nv] : [];\n this.render();\n }\n\n getNodes(index: number): Node[] | null {\n return this._nodes[index] || null;\n }\n\n private _getTarget(): Element | DocumentFragment | null {\n const script = this.getAttribute('on-get-portal');\n if (!script) return null;\n try {\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(window, this)\n });\n if (typeof res === 'string') return document.querySelector(res);\n if (res instanceof Node) return res as any;\n } catch (e) {\n console.error('[SwcLoop] Portal target error:', e);\n }\n return null;\n }\n\n append(...items: any[]) {\n if (!items.length || !this.parentElement) return;\n if (this._defaultNodes.length > 0) this._cleanupDefault();\n\n const fragment = document.createDocumentFragment();\n const startIndex = this._value.length;\n\n items.forEach((item, i) => {\n const index = startIndex + i;\n const nodes = this._createItemNodes(item, index);\n if (nodes) {\n this._nodes.push(nodes);\n nodes.forEach(n => fragment.appendChild(n));\n this._value.push(item);\n } else {\n this._nodes.push(null);\n this._value.push(null);\n }\n });\n\n const target = this._getTarget();\n if (target) {\n target.appendChild(fragment);\n } else {\n const lastValidIdx = this._nodes.length - items.length - 1;\n let refNode: Node = this;\n for (let i = lastValidIdx; i >= 0; i--) {\n const group = this._nodes[i];\n if (group && group.length > 0) {\n refNode = group[group.length - 1];\n break;\n }\n }\n this.parentElement.insertBefore(fragment, refNode.nextSibling);\n }\n }\n\n remove(index?: number) {\n const targetIdx = index !== undefined ? index : this._nodes.length - 1;\n if (targetIdx < 0 || targetIdx >= this._nodes.length) return;\n\n const nodes = this._nodes[targetIdx];\n if (nodes) {\n nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes[targetIdx] = null;\n this._value[targetIdx] = null;\n }\n\n const activeRows = this._value.filter(v => v !== null);\n if (activeRows.length === 0) {\n this.render();\n }\n }\n\n private _createItemNodes(item: any, index: number): Node[] {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n Array.from(clone.querySelectorAll('template[is=\"swc-default\"]')).forEach(t => t.remove());\n\n const nodes = Array.from(clone.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n const groupCtx = {\n $index: index,\n $item: item,\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1],\n $isFirst: index === 0,\n $isLast: index === this._value.length - 1,\n $isEven: index % 2 === 0,\n $isOdd: index % 2 !== 0,\n $count: this._value.length\n };\n\n this._executeCallback('on-clone-nodes', groupCtx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCallback('on-clone-node', { ...groupCtx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });\n });\n\n return nodes;\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcLoop] Error in ${attrName}:`, e);\n }\n }\n\n @changedAttribute('on-get-value')\n private refreshValue(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = [];\n return;\n }\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const res = FunctionUtils.executeReturn({ script, context: this, args: helperHostSet });\n if (Array.isArray(res)) {\n this.value = res;\n }\n } catch (e) {\n console.error('[SwcLoop] Failed to get value from on-get-value script:', e);\n this.value = [];\n }\n }\n\n render() {\n this._cleanup();\n if (!this.parentElement) return;\n\n const activeRows = this._value.filter(v => v !== null);\n const target = this._getTarget();\n\n if (activeRows.length === 0) {\n const t = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n if (t) {\n const clone = t.content.cloneNode(true) as DocumentFragment;\n this._defaultNodes = Array.from(clone.childNodes);\n this._defaultNodes.forEach(n => {\n if (n instanceof HTMLElement) (n as any).__swc_host = this;\n });\n if (target) target.appendChild(clone);\n else this.parentElement.insertBefore(clone, this.nextSibling);\n }\n return;\n }\n\n const fragment = document.createDocumentFragment();\n this._value.forEach((item, index) => {\n if (item === null) {\n this._nodes.push(null);\n return;\n }\n const nodes = this._createItemNodes(item, index);\n this._nodes.push(nodes);\n nodes.forEach(n => fragment.appendChild(n));\n });\n\n if (target) target.appendChild(fragment);\n else this.parentElement.insertBefore(fragment, this.nextSibling);\n }\n\n private _cleanup() {\n this._nodes.forEach(group => {\n if (group) group.forEach(node => node.parentElement?.removeChild(node));\n });\n this._nodes = [];\n this._cleanupDefault();\n }\n\n private _cleanupDefault() {\n this._defaultNodes.forEach(n => n.parentElement?.removeChild(n));\n this._defaultNodes = [];\n }\n\n connectedCallback() {\n this.refreshValue();\n }\n disconnectedCallback() {\n this._cleanup();\n }\n}\n", "import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\n\n@elementDefine({ name: 'swc-if', extends: 'template' })\nexport class SwcIf extends HTMLTemplateElement {\n private _nodes: Node[] = [];\n private _value: any = null;\n\n get value(): any {\n return this._value;\n }\n\n set value(nv: any) {\n this._value = nv;\n this.render();\n }\n\n private _getTarget(): Element | DocumentFragment | null {\n const script = this.getAttribute('on-get-portal');\n if (!script) return null;\n try {\n const res = FunctionUtils.executeReturn({\n script,\n context: this,\n args: SwcUtils.getHelperAndHostSet(window, this)\n });\n if (typeof res === 'string') return document.querySelector(res);\n if (res instanceof Node) return res as any;\n } catch (e) {\n console.error('[SwcIf] Portal target error:', e);\n }\n return null;\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcIf] Error in ${attrName}:`, e);\n }\n }\n\n @changedAttribute('on-get-value')\n private refresh(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = null;\n return;\n }\n if (!this.parentElement) return;\n\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const result = FunctionUtils.executeReturn({\n script,\n context: this,\n args: helperHostSet\n });\n this.value = result;\n } catch (e) {\n console.error('[SwcIf] Error in on-get-value:', e);\n this.value = null;\n }\n }\n\n private render() {\n this.cleanup();\n if (!this.parentElement) return;\n\n let fragment: DocumentFragment | null = null;\n const ctx: any = { $value: this._value, $nodes: [], $elements: [] };\n\n if (this._value) {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n Array.from(clone.querySelectorAll('template[is=\"swc-default\"]')).forEach(t => t.remove());\n fragment = clone;\n } else {\n const t = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n if (t) fragment = t.content.cloneNode(true) as DocumentFragment;\n }\n\n if (fragment) {\n this.mount(fragment, ctx);\n }\n }\n\n private mount(fragment: DocumentFragment, ctx: any) {\n const nodes = Array.from(fragment.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n Object.assign(ctx, {\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1]\n });\n\n this._executeCallback('on-clone-nodes', ctx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) (node as any).__swc_host = this;\n this._executeCallback('on-clone-node', { ...ctx, $node: node, $nodeIndex: nodeIndex, $isElement: node.nodeType === 1 });\n });\n\n this._nodes = nodes;\n const target = this._getTarget();\n if (target) {\n target.appendChild(fragment);\n } else {\n this.parentElement?.insertBefore(fragment, this.nextSibling);\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes = [];\n }\n\n connectedCallback() {\n this.refresh();\n }\n\n disconnectedCallback() {\n this.cleanup();\n }\n}\n", "import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\nimport { SwcWhen, SwcOtherwise } from './SwcSubTemplates';\n\n@elementDefine({ name: 'swc-choose', extends: 'template' })\nexport class SwcChoose extends HTMLTemplateElement {\n private _nodes: Node[] = [];\n private _value: any = null;\n\n get value(): any {\n return this._value;\n }\n\n set value(nv: any) {\n this._value = nv;\n this.render();\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcChoose] Error in ${attrName}:`, e);\n }\n }\n\n @changedAttribute('on-get-value')\n private refresh(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = null;\n return;\n }\n if (!this.parentElement) return;\n\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const result = FunctionUtils.executeReturn({\n script,\n context: this,\n args: helperHostSet\n });\n this.value = result;\n } catch (e) {\n console.error('[SwcChoose] Error in on-get-value:', e);\n }\n }\n\n private render() {\n this.cleanup();\n if (!this.parentElement) return;\n\n const templates = Array.from(this.content.querySelectorAll('template'));\n let selected: HTMLTemplateElement | null = null;\n let otherwise: HTMLTemplateElement | null = null;\n let defaultTmp: HTMLTemplateElement | null = null;\n\n for (const t of templates) {\n const is = t.getAttribute('is');\n if (is === 'swc-when') {\n const whenVal = t.getAttribute('value');\n if (String(whenVal) === String(this._value)) {\n selected = t;\n break;\n }\n } else if (is === 'swc-otherwise') {\n otherwise = t;\n } else if (is === 'swc-default') {\n defaultTmp = t;\n }\n }\n\n const targetTemplate = (this._value == null ? defaultTmp : selected) || otherwise || defaultTmp;\n if (targetTemplate) {\n const clone = targetTemplate.content.cloneNode(true) as DocumentFragment;\n const nodes = Array.from(clone.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n const ctx = {\n $value: this._value,\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1]\n };\n\n // Execution Callbacks\n this._executeCallback('on-clone-nodes', ctx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) {\n (node as any).__swc_host = this;\n }\n this._executeCallback('on-clone-node', {\n ...ctx,\n $node: node,\n $nodeIndex: nodeIndex,\n $isElement: node.nodeType === 1\n });\n });\n\n this._nodes = nodes;\n this.parentElement.insertBefore(clone, this.nextSibling);\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes = [];\n }\n\n connectedCallback() {\n this.refresh();\n }\n\n disconnectedCallback() {\n this.cleanup();\n }\n}\n", "import { elementDefine } from '../decorators/elementDefine';\nimport { changedAttribute } from '../decorators/changedAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\nimport { SwcLoading, SwcError, SwcSuccess, SwcDefault } from './SwcSubTemplates';\n\n@elementDefine({ name: 'swc-async', extends: 'template' })\nexport class SwcAsync extends HTMLTemplateElement {\n private _nodes: Node[] = [];\n private _currentPromise: Promise<any> | null = null;\n private _value: any = null;\n\n get value(): any {\n return this._value;\n }\n\n set value(nv: any) {\n if (nv instanceof Promise) {\n this.handlePromise(nv);\n } else {\n this._value = nv;\n this.render(nv === null ? 'default' : 'success', nv);\n }\n }\n\n @changedAttribute('on-get-value')\n private refresh(newValue?: string | null) {\n const script = newValue !== undefined ? newValue : this.getAttribute('on-get-value');\n if (!script) {\n this.value = null; // Triggers default render\n return;\n }\n if (!this.parentElement) return;\n\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n const result = FunctionUtils.executeReturn({\n script,\n context: this,\n args: helperHostSet\n });\n\n if (result instanceof Promise) {\n this.handlePromise(result);\n } else {\n this.value = result;\n }\n } catch (e) {\n this.render('error', e);\n }\n }\n\n private async handlePromise(promise: Promise<any>) {\n this._currentPromise = promise;\n this.render('loading');\n\n try {\n const result = await promise;\n if (this._currentPromise !== promise) return;\n this._value = result;\n this.render('success', result);\n } catch (e) {\n if (this._currentPromise !== promise) return;\n this.render('error', e);\n }\n }\n\n private render(state: 'loading' | 'error' | 'success' | 'default', data?: any) {\n this.cleanup();\n if (!this.parentElement) return;\n\n let fragment: DocumentFragment;\n const ctx: any = {\n $nodes: [],\n $elements: [],\n $state: state,\n $value: null,\n $error: null\n };\n\n if (state === 'default') {\n const t = this.content.querySelector('template[is=\"swc-default\"]') as HTMLTemplateElement;\n fragment = t ? (t.content.cloneNode(true) as DocumentFragment) : document.createDocumentFragment();\n } else if (state === 'loading') {\n const t = this.content.querySelector('template[is=\"swc-loading\"]') as HTMLTemplateElement;\n fragment = t ? (t.content.cloneNode(true) as DocumentFragment) : document.createDocumentFragment();\n } else if (state === 'error') {\n const t = this.content.querySelector('template[is=\"swc-error\"]') as HTMLTemplateElement;\n ctx.$error = data;\n fragment = t ? (t.content.cloneNode(true) as DocumentFragment) : document.createDocumentFragment();\n } else {\n // Success\n const t = this.content.querySelector('template[is=\"swc-success\"]') as HTMLTemplateElement;\n ctx.$value = data;\n if (t) {\n fragment = t.content.cloneNode(true) as DocumentFragment;\n } else {\n const clone = this.content.cloneNode(true) as DocumentFragment;\n Array.from(clone.querySelectorAll('template[is=\"swc-loading\"], template[is=\"swc-error\"], template[is=\"swc-success\"], template[is=\"swc-default\"]')).forEach(tmp => tmp.remove());\n fragment = clone;\n }\n }\n\n this.mount(fragment, ctx);\n }\n\n private mount(fragment: DocumentFragment, ctx: any) {\n const nodes = Array.from(fragment.childNodes);\n const elements = nodes.filter(n => n.nodeType === 1) as HTMLElement[];\n\n Object.assign(ctx, {\n $nodes: nodes,\n $elements: elements,\n $firstNode: nodes[0],\n $lastNode: nodes[nodes.length - 1],\n $firstElement: elements[0],\n $lastElement: elements[elements.length - 1]\n });\n\n // Execution Callbacks\n this._executeCallback('on-clone-nodes', ctx);\n nodes.forEach((node, nodeIndex) => {\n if (node instanceof HTMLElement) {\n (node as any).__swc_host = this;\n }\n this._executeCallback('on-clone-node', {\n ...ctx,\n $node: node,\n $nodeIndex: nodeIndex,\n $isElement: node.nodeType === 1\n });\n });\n\n this._nodes = nodes;\n this.parentElement?.insertBefore(fragment, this.nextSibling);\n }\n\n private _executeCallback(attrName: string, extraArgs: Record<string, any>) {\n const script = this.getAttribute(attrName);\n if (!script) return;\n const helperHostSet = SwcUtils.getHelperAndHostSet(window, this);\n try {\n FunctionUtils.execute({ script, context: this, args: { ...helperHostSet, ...extraArgs } });\n } catch (e) {\n console.error(`[SwcAsync] Error in ${attrName}:`, e);\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => {\n if (n.parentElement) n.parentElement.removeChild(n);\n });\n this._nodes = [];\n }\n\n connectedCallback() {\n this.refresh();\n }\n\n disconnectedCallback() {\n this.cleanup();\n }\n}\n", "import { elementDefine } from '../decorators/elementDefine';\nimport { SwcAppEngine } from './SwcAppEngine';\n\n@elementDefine({ name: 'swc-app', extends: undefined })\nexport class SwcApp extends HTMLElement {\n private _engine = new SwcAppEngine(this);\n\n get simpleApplication() {\n return this._engine.simpleApplication;\n }\n get router() {\n return this._engine.router;\n }\n\n connectedCallback() {\n this._engine.connect();\n }\n\n disconnectedCallback() {\n this._engine.disconnect();\n }\n\n async routing(path: string) {\n await this._engine.router?.go(path);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Reflect", "hasOwn", "metadataRegistry", "metadata", "OrdinaryDefineOwnMetadata", "OrdinaryHasOwnMetadata", "OrdinaryGetOwnMetadata", "OrdinaryOwnMetadataKeys", "defineMetadata", "hasOwnMetadata", "getOwnMetadata", "getOwnMetadataKeys", "deleteMetadata", "MapIterator", "Map", "Set", "WeakMap", "import_reflect_metadata", "ReflectUtils", "FunctionUtils", "SwcUtils", "containers", "InjectSituationType", "self", "ValidUtils", "Lifecycle", "target", "ObjectUtils", "Path", "Script", "ExceptionHandlerSituationType", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ConvertUtils", "obj", "RandomUtils", "uuid", "hex", "find", "Expression", "Path", "_Subscription", "e", "it", "data", "RouterAction", "it", "routeData", "data", "UrlUtils", "LocationUtils", "window", "SwcAppAnchor", "SwcAppArea", "__decorate", "SwcAppAudio", "__decorate", "SwcAppBase", "__decorate", "SwcAppButton", "__decorate", "SwcAppCanvas", "__decorate", "SwcAppData", "__decorate", "SwcAppDataList", "__decorate", "SwcAppDetails", "__decorate", "SwcAppDialog", "__decorate", "SwcAppDiv", "__decorate", "SwcAppDl", "__decorate", "SwcAppEmbed", "__decorate", "SwcAppFieldSet", "__decorate", "SwcAppForm", "__decorate", "SwcAppHr", "__decorate", "SwcAppIFrame", "__decorate", "SwcAppImage", "__decorate", "SwcAppInput", "__decorate", "SwcAppLabel", "__decorate", "SwcAppLegend", "__decorate", "SwcAppLi", "__decorate", "SwcAppLink", "__decorate", "SwcAppMap", "__decorate", "SwcAppMeta", "__decorate", "SwcAppMeter", "__decorate", "SwcAppMod", "__decorate", "SwcAppObject", "__decorate", "SwcAppOl", "__decorate", "SwcAppOptGroup", "__decorate", "SwcAppOption", "__decorate", "SwcAppOutput", "__decorate", "SwcAppParagraph", "__decorate", "SwcAppParam", "__decorate", "SwcAppPicture", "__decorate", "SwcAppPre", "__decorate", "SwcAppProgress", "__decorate", "SwcAppQuote", "__decorate", "SwcAppScript", "__decorate", "SwcAppSelect", "__decorate", "SwcAppSlot", "__decorate", "SwcAppSource", "__decorate", "SwcAppSpan", "__decorate", "SwcAppStyle", "__decorate", "SwcAppTable", "__decorate", "SwcAppTableSection", "__decorate", "SwcAppTableCell", "__decorate", "SwcAppTemplate", "__decorate", "SwcAppTextArea", "__decorate", "SwcAppTime", "__decorate", "SwcAppTitle", "__decorate", "SwcAppTableRow", "__decorate", "SwcAppTrack", "__decorate", "SwcAppUl", "__decorate", "SwcAppVideo", "__decorate", "SwcAppHeading", "__decorate", "SwcAppBody", "__decorate", "SwcLoading", "__decorate", "SwcError", "__decorate", "SwcSuccess", "__decorate", "SwcWhen", "__decorate", "SwcOtherwise", "__decorate", "SwcDefault", "__decorate", "SwcLoop", "__decorate", "SwcIf", "__decorate", "SwcChoose", "__decorate", "SwcAsync", "__decorate", "SwcApp", "__decorate"]
|
|
7
7
|
}
|