@dooboostore/simple-web-component 1.0.51 → 1.0.53
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 +7 -8
- package/dist/cjs/decorators/addEventListener.js +8 -3
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/requestAnimationFrame.js +10 -2
- package/dist/cjs/decorators/requestAnimationFrame.js.map +2 -2
- package/dist/cjs/decorators/setInterval.js +4 -2
- package/dist/cjs/decorators/setInterval.js.map +2 -2
- package/dist/cjs/decorators/setTimeout.js +4 -2
- package/dist/cjs/decorators/setTimeout.js.map +2 -2
- package/dist/cjs/decorators/subscribeSwcAppMessage.js +14 -1
- package/dist/cjs/decorators/subscribeSwcAppMessage.js.map +2 -2
- package/dist/cjs/elements/SwcAppMixin.js +7 -1
- package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js +8 -3
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/requestAnimationFrame.js +10 -2
- package/dist/esm/decorators/requestAnimationFrame.js.map +2 -2
- package/dist/esm/decorators/setInterval.js +4 -2
- package/dist/esm/decorators/setInterval.js.map +2 -2
- package/dist/esm/decorators/setTimeout.js +4 -2
- package/dist/esm/decorators/setTimeout.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppMessage.js +14 -1
- package/dist/esm/decorators/subscribeSwcAppMessage.js.map +2 -2
- package/dist/esm/elements/SwcAppMixin.js +7 -1
- package/dist/esm/elements/SwcAppMixin.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +44 -8
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +3 -3
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/requestAnimationFrame.d.ts +7 -4
- package/dist/types/decorators/requestAnimationFrame.d.ts.map +1 -1
- package/dist/types/decorators/setInterval.d.ts +6 -4
- package/dist/types/decorators/setInterval.d.ts.map +1 -1
- package/dist/types/decorators/setTimeout.d.ts +6 -4
- package/dist/types/decorators/setTimeout.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppMessage.d.ts +12 -0
- package/dist/types/decorators/subscribeSwcAppMessage.d.ts.map +1 -1
- package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +44 -8
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +3 -3
- package/package.json +2 -2
- package/src/decorators/addEventListener.ts +10 -3
- package/src/decorators/requestAnimationFrame.ts +17 -5
- package/src/decorators/setInterval.ts +9 -5
- package/src/decorators/setTimeout.ts +9 -5
- package/src/decorators/subscribeSwcAppMessage.ts +27 -0
- package/src/elements/SwcAppMixin.ts +11 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/elements/SwcAppMixin.ts"],
|
|
4
|
-
"sourcesContent": ["import { SwcAppInterface, SwcAppMessage, SwcAppMessageObserveOptions, SwcElement } from '../types';\nimport { APPLY_NODE_METADATA_KEY, findAllLifecycleMetadata, getSubscribeSwcAppMessageMetadata, getSubscribeSwcAppRouteChangeMetadata, ON_CONNECTED_SWC_APP_METADATA_KEY, SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, buildSwcParameterArgs } from '../decorators';\nimport { SwcAppEngine, SwcAttributeConfigType, SwcConfigType } from '../SwcAppEngine';\nimport { debounceTimeIntervalLock, FunctionUtils, Subscription, Subject, Observable } from '@dooboostore/core';\nimport {RouterEventType, ValidUtils} from '@dooboostore/core-web';\nimport { SwcUtils } from '../utils/Utils';\n\ntype RouteSubscriberState = { matched: boolean; signature: string; pathData?: { [k: string]: string }; pathDataAll?: { [k: string]: string[] } };\nconst routeStateOf = (instance: any): Map<string | symbol, RouteSubscriberState> => (instance.__swc_routeState ??= new Map());\n\n/** \uB77C\uC6B0\uD2B8 \uD30C\uB77C\uBBF8\uD130 \uB370\uCF54\uB808\uC774\uD130 \uAC12 (kind \uC774\uB984 = \uB370\uCF54\uB808\uC774\uD130 \uC774\uB984). \uD0A4\uB97C \uBC1B\uB294 \uAC83\uC740 (key) => \uAC12 */\nconst routeParamValues = (sp: URLSearchParams, pathDataAll: { [k: string]: string[] }) => {\n const queryAll: { [k: string]: string[] } = Object.fromEntries([...new Set(sp.keys())].map(k => [k, sp.getAll(k)]));\n const pick = (all: { [k: string]: string[] }, at: 'first' | 'last') =>\n Object.fromEntries(Object.entries(all).map(([k, v]) => [k, at === 'first' ? v[0] : v[v.length - 1]]));\n const lastOf = (v: string[] | undefined) => (v && v.length ? v[v.length - 1] : undefined);\n const firstQuery = (k: string) => sp.get(k);\n const firstPath = (k: string) => pathDataAll[k]?.[0];\n return {\n swcAppRouteQueryParam: firstQuery,\n swcAppRouteFirstQueryParam: firstQuery,\n swcAppRouteLastQueryParam: (k: string) => lastOf(sp.getAll(k)) ?? null,\n swcAppRouteQueryParams: (k: string) => sp.getAll(k),\n swcAppRouteQueryParamObject: pick(queryAll, 'first'),\n swcAppRouteFirstQueryParamObject: pick(queryAll, 'first'),\n swcAppRouteLastQueryParamObject: pick(queryAll, 'last'),\n swcAppRouteQueryParamsObject: queryAll,\n swcAppRouteURLSearchParams: sp,\n swcAppRoutePathVariable: firstPath,\n swcAppRouteFirstPathVariable: firstPath,\n swcAppRouteLastPathVariable: (k: string) => lastOf(pathDataAll[k]),\n swcAppRoutePathVariables: (k: string) => pathDataAll[k] ?? [],\n swcAppRoutePathVariableObject: pick(pathDataAll, 'first'),\n swcAppRouteFirstPathVariableObject: pick(pathDataAll, 'first'),\n swcAppRouteLastPathVariableObject: pick(pathDataAll, 'last'),\n swcAppRoutePathVariablesObject: pathDataAll\n };\n};\n\n/** \uAD6C\uB3C5\uC790\uC758 path(\uBB38\uC790\uC5F4/\uBC30\uC5F4/\uD568\uC218/\uC5C6\uC74C)\uB97C route \uC5D0 \uB9E4\uCE6D. \uC548 \uB9DE\uC73C\uBA74 null */\nconst matchRoute = (pathOption: any, instance: any, re: { path?: string }): { pathData: { [k: string]: string }; pathDataAll: { [k: string]: string[] } } | null => {\n let pattern = typeof pathOption === 'function' ? pathOption(instance) : pathOption;\n if (!pattern) return { pathData: {}, pathDataAll: {} };\n const path = re.path || '/';\n for (const p of Array.isArray(pattern) ? pattern : [pattern]) {\n const pathData = SwcUtils.parsePathPattern(p, path);\n if (pathData !== null) return { pathData, pathDataAll: SwcUtils.parsePathPatternAll(p, path) ?? {} };\n }\n return null;\n};\n\nexport const isSSR = (i: HTMLElement) => {\n return i.hasAttribute('swc-use-ssr');\n};\nexport const setSSRAttribute = (i: HTMLElement) => {\n i.setAttribute('swc-use-ssr', (i as any)._swcId ?? '');\n};\nexport const removeSSRAttribute = (i: HTMLElement) => {\n i.removeAttribute('swc-use-ssr');\n};\n\n/**\n * SwcAppMixin: SwcApp \uAE30\uB2A5\uC744 \uBAA8\uB4E0 HTMLElement\uC5D0 \uCD94\uAC00\uD560 \uC218 \uC788\uB294 Mixin\n *\n * \uC0AC\uC6A9 \uC608:\n * @elementDefine('custom-app', { window: w })\n * class CustomApp extends SwcAppMixin(w.HTMLElement) implements SwcAppInterface {\n * // \uCD94\uAC00 \uAE30\uB2A5 \uAD6C\uD604\n * }\n */\nexport function SwcAppMixin<T extends { new (...args: any[]): HTMLElement }>(Base: T) {\n abstract class SwcAppMixinClass extends Base implements SwcAppInterface {\n __swc_engine = new SwcAppEngine(this as any);\n _swcId!: string;\n _swc_connected_instance = new Set<any>();\n _routerSubscription?: Subscription;\n _lastRouterEvent?: RouterEventType;\n // replay \uC635\uC158\uC73C\uB85C \uBC1C\uD589\uB41C \uD0C0\uC785\uBCC4 \uB9C8\uC9C0\uB9C9 \uBA54\uC2DC\uC9C0 1\uAC1C \uBCF4\uAD00\n _replayedMessages = new Map<string, SwcAppMessage[]>();\n // \uCF54\uB4DC \uAD6C\uB3C5(observeMessage)\uC6A9 live \uC2A4\uD2B8\uB9BC. \uB370\uCF54\uB808\uC774\uD130 \uAD6C\uB3C5\uACFC \uAC19\uC740 publishMessage\uC5D0\uC11C \uD758\uB7EC\uB098\uC634.\n _messageSubject = new Subject<SwcAppMessage>();\n // \u2500\u2500 \uD638\uC2A4\uD2B8 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uD6C5 (abstract): \uC0C1\uC18D\uD55C \uD074\uB798\uC2A4\uAC00 \uBC18\uB4DC\uC2DC \uAD6C\uD604. @inject \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uC73C\uBA74 DI\uB85C \uC790\uB3D9 \uD574\uACB0\uB428 \u2500\u2500\n // connectedCallback \uC2DC\uC810 (DOM\uC5D0 \uBD99\uC744 \uB54C\uB9C8\uB2E4). connect() \uC804\uC774\uB77C DI \uCEE8\uD14C\uC774\uB108\uAC00 \uC544\uC9C1 \uC5C6\uC744 \uC218 \uC788\uC74C.\n abstract onConnected(...args: any[]): void | Promise<void>;\n // disconnectedCallback \uC2DC\uC810 (DOM\uC5D0\uC11C \uB5A8\uC5B4\uC9C8 \uB54C\uB9C8\uB2E4). onConnected\uC5D0\uC11C \uB9CC\uB4E0 \uAD6C\uB3C5 \uB4F1\uC744 \uC5EC\uAE30\uC11C \uD574\uC81C.\n abstract onDisconnected(...args: any[]): void | Promise<void>;\n // connect() \uC644\uB8CC \uD6C4 (DI \uCEE8\uD14C\uC774\uB108\u00B7\uB77C\uC6B0\uD130 \uC900\uBE44\uB428). \uC11C\uBE44\uC2A4 \uD638\uCD9C\uC740 \uC5EC\uAE30\uC11C.\n abstract onSwcAppConnected(...args: any[]): void | Promise<void>;\n _routeChangeInvocations = 0;\n _connectedInvocations = 0;\n\n _childrenRouteChangedInterval: any;\n _childrenConnectedDoneInterval: any;\n\n /**\n * Safari is \uC18D\uC131 \uCC98\uB9AC\n * Safari polyfill\uC5D0\uC11C\uB294 \uC790\uC2DD\uBD80\uD130 \uB9CC\uB4E4\uC5B4\uC9C0\uACE0 \uBD80\uBAA8\uAC00 \uB9CC\uB4E4\uC5B4\uC9C0\uBBC0\uB85C\n * \uBD80\uBAA8\uAC00 \uC790\uC2DD\uB4E4\uC744 \uAC15\uC81C\uB85C \uB4F1\uB85D\uD574\uC8FC\uB294 \uD615\uD0DC\uB85C \uCC98\uB9AC\n */\n _connected_safari_and_standby = [];\n // connect() \uC804\uC5D0 \uBD99\uC740 \uC790\uC2DD\uB4E4\uC774 \uAE30\uB2E4\uB9AC\uB294 \uACF3 \u2014 connect() \uAC00 \uC5D4\uC9C4\uC744 \uB744\uC6B4 \uB4A4 \uAE68\uC6B4\uB2E4\n _appReadyWaiters: Array<() => void> = [];\n\n get simpleApplication() {\n return this.__swc_engine.simpleApplication;\n }\n\n get config() {\n return this.__swc_engine?.config;\n }\n\n get router() {\n return this.__swc_engine?.router;\n }\n\n // phase: 'live'(\uAE30\uBCF8, \uC804\uCCB4 \uBC29\uC1A1) | 'connected' | 'connectedDone' (replay, \uD574\uB2F9 trigger\uB9CC)\n async _invokeRouteChangeSubscribers(instance: HTMLElement, re: RouterEventType, phase: 'live' | 'connected' | 'connectedDone' = 'live') {\n if (instance.isConnected === false) return;\n\n this._routeChangeInvocations++;\n\n if (this._childrenRouteChangedInterval) {\n this.config.window.clearInterval(this._childrenRouteChangedInterval);\n }\n const intervalConfig = { setInterval: this.config.window.setInterval.bind(this.config.window), clearInterval: this.config.window.clearInterval.bind(this.config.window) };\n this._childrenRouteChangedInterval = debounceTimeIntervalLock(\n () => this._routeChangeInvocations === 0,\n () => {\n this._childrenRouteChangedInterval = null;\n this.config.onChildrenRouteChanged?.(re, this);\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30,\n intervalConfig\n );\n\n try {\n const routeChangeSubscribers = getSubscribeSwcAppRouteChangeMetadata(instance);\n\n if (routeChangeSubscribers.length > 0) {\n // Subscribers are already sorted by order from getSubscribeSwcAppRouteChangeMetadata\n // Execute subscribers in order, stop if one returns a value.\n // live\uB294 \uC804\uBD80 \uC2E4\uD589, replay\uB294 \uD574\uB2F9 trigger \uAD6C\uB3C5\uC790\uB9CC \uC2E4\uD589.\n // on(enter/update/leave) \uD310\uC815\uC744 \uC704\uD574 \uAD6C\uB3C5\uC790\uBCC4 \uC9C1\uC804 \uB9E4\uCE6D \uC0C1\uD0DC\uB97C \uAE30\uC5B5\uD55C\uB2E4 (\uBA48\uCD98 \uB4A4\uC5D0\uB3C4 \uC0C1\uD0DC\uB294 \uACC4\uC18D \uAC31\uC2E0).\n const state = routeStateOf(instance);\n let stopped = false;\n for (const metadata of routeChangeSubscribers) {\n if (phase !== 'live' && (metadata.options?.trigger ?? 'connected') !== phase) continue;\n const on = metadata.options?.on ?? 'match';\n if (on === 'beforeLeave') continue; // \uB77C\uC6B0\uD130 \uAC00\uB4DC\uB85C \uCC98\uB9AC (_registerLeaveGuards)\n const methodName = metadata.propertyKey;\n const extractValue = (v: any) => {\n const keyToUse = metadata.options?.valueKey ?? SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const match = matchRoute(metadata.options?.path, instance, re);\n const prev = state.get(methodName);\n // update \uD310\uC815 \uAE30\uC900: \uACBD\uB85C + query (path \uBCC0\uC218\uB294 \uACBD\uB85C\uC5D0\uC11C \uB098\uC624\uBBC0\uB85C \uD3EC\uD568\uB428. \uD328\uD134 \uC5C6\uB294 bare \uAD6C\uB3C5\uB3C4 \uACBD\uB85C \uBCC0\uACBD\uC744 \uAC10\uC9C0)\n const signature = match ? JSON.stringify([re.path ?? '', re.search ?? '']) : '';\n state.set(methodName, match ? { matched: true, signature, pathData: match.pathData, pathDataAll: match.pathDataAll } : { matched: false, signature: '' });\n\n const shouldRun =\n on === 'match' ? !!match\n : on === 'enter' ? !!match && !prev?.matched\n : on === 'update' ? !!match && !!prev?.matched && prev.signature !== signature\n : on === 'leave' ? !match && !!prev?.matched\n : false;\n if (stopped || !shouldRun || !instance[methodName]) continue;\n\n // leave \uB294 \uC9C0\uAE08 \uACBD\uB85C\uAC00 \uC548 \uB9DE\uC73C\uBBC0\uB85C \uC9C1\uC804 \uB9E4\uCE6D\uC758 pathData \uB85C \uC900\uB2E4\n const pathData = match ? match.pathData : prev?.pathData ?? {};\n const pathDataAll = match ? match.pathDataAll : prev?.pathDataAll ?? {};\n\n const filter = metadata.options?.filter;\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const filterPassed = !filter || (await filter(this.router!, { helper: instanceHelperHostSet, currentThis: instance }));\n if (!filterPassed) continue;\n\n const before = metadata.options?.before;\n const finaly = metadata.options?.finally;\n // before\uB97C \uBA3C\uC800 \uB3CC\uB824 \uB9AC\uD134\uAC12\uC744 @routeChangeBeforeReturn \uC73C\uB85C \uC8FC\uC785\uD560 \uC218 \uC788\uAC8C \uCEA1\uCC98.\n const beforeReturn = before ? await before(this.router!, { helper: instanceHelperHostSet, currentThis: instance }) : undefined;\n const routeEventValue = { ...re, pathData };\n const args = this._buildRouteArgs(instance, methodName, routeEventValue, pathDataAll, beforeReturn);\n let rawResult: any, error: any;\n try {\n rawResult = await instance[methodName](...args);\n } catch (e) {\n error = e;\n } finally {\n if (finaly) await finaly(this.router!, { helper: instanceHelperHostSet, currentThis: instance }, { args, result: rawResult, error });\n }\n if (error) throw error;\n const result = extractValue(rawResult);\n // If handler returns a value, stop propagation to next handlers\n if (result !== undefined && result !== null) {\n stopped = true;\n }\n }\n }\n } finally {\n // this.config?.window\n const isBrowser = ValidUtils.isBrowser();\n if (!isBrowser && this.config?.ssr) {\n setSSRAttribute(instance);\n } else {\n removeSSRAttribute(instance);\n }\n this._routeChangeInvocations = Math.max(0, this._routeChangeInvocations - 1);\n }\n }\n\n /** \uB77C\uC6B0\uD2B8 \uD578\uB4E4\uB7EC \uC778\uC790: @swcAppRouterEvent / host \uACC4\uC5F4 / @routeChangeBeforeReturn / \uB77C\uC6B0\uD2B8 \uD30C\uB77C\uBBF8\uD130(query\u00B7path \uBCC0\uC218) */\n _buildRouteArgs(instance: any, methodName: string | symbol, routeEventValue: any, pathDataAll: { [k: string]: string[] }, beforeReturn: any) {\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const sp: URLSearchParams = routeEventValue.searchParams ?? new URLSearchParams(routeEventValue.search ?? '');\n return buildSwcParameterArgs(\n instance,\n methodName,\n {\n swcAppRouterEvent: routeEventValue,\n hostSet: instanceHelperHostSet,\n helperHostSet: instanceHelperHostSet,\n helperSet: SwcUtils.getHelperSet(this.config.window),\n routeChangeBeforeReturn: beforeReturn,\n ...routeParamValues(sp, pathDataAll)\n },\n [routeEventValue]\n );\n }\n\n /**\n * on: 'beforeLeave' \uAD6C\uB3C5\uC744 \uB77C\uC6B0\uD130 \uAC00\uB4DC\uB85C \uB4F1\uB85D. \uC9C0\uAE08 \uACBD\uB85C\uB294 \uB9DE\uACE0 \uB2E4\uC74C \uACBD\uB85C\uB294 \uC548 \uB9DE\uC744 \uB54C \uD578\uB4E4\uB7EC\uB97C \uBD80\uB974\uACE0,\n * false \uB97C \uB9AC\uD134\uD558\uBA74 \uC774\uB3D9\uC744 \uCDE8\uC18C\uD55C\uB2E4. \uC694\uC18C\uAC00 \uB5A8\uC5B4\uC9C0\uBA74 _disconnected \uC5D0\uC11C \uD574\uC81C.\n */\n _registerLeaveGuards(instance: any) {\n if (!this.router?.addLeaveGuard) return;\n instance.__swc_leaveGuardOffs?.forEach((off: () => void) => off());\n instance.__swc_leaveGuardOffs = getSubscribeSwcAppRouteChangeMetadata(instance)\n .filter(m => m.options?.on === 'beforeLeave')\n .map(metadata =>\n this.router!.addLeaveGuard(async (to, from) => {\n if (instance.isConnected === false || !instance[metadata.propertyKey]) return true;\n const fromMatch = matchRoute(metadata.options?.path, instance, from);\n if (!fromMatch || matchRoute(metadata.options?.path, instance, to)) return true; // \uC774 \uB77C\uC6B0\uD2B8\uB97C \uB5A0\uB098\uB294 \uACBD\uC6B0\uB9CC\n const filter = metadata.options?.filter;\n const helper = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n if (filter && !(await filter(this.router!, { helper, currentThis: instance }))) return true;\n const beforeReturn = metadata.options?.before ? await metadata.options.before(this.router!, { helper, currentThis: instance }) : undefined;\n const routeEventValue = { ...from, pathData: fromMatch.pathData, to };\n const args = this._buildRouteArgs(instance, metadata.propertyKey, routeEventValue, fromMatch.pathDataAll, beforeReturn);\n let result: any, error: any;\n try {\n result = await instance[metadata.propertyKey](...args);\n } catch (e) {\n error = e;\n } finally {\n if (metadata.options?.finally) await metadata.options.finally(this.router!, { helper, currentThis: instance }, { args, result, error });\n }\n if (error) throw error;\n return result !== false;\n })\n );\n }\n\n async _connected(instance: HTMLElement, option?: { noIncrements: boolean }) {\n if (instance) {\n if (!this.simpleApplication && !this.config) {\n // \uC790\uAE30 \uC790\uC2E0\uC740 connect() \uAC00 \uB098\uC911\uC5D0 \uC7AC\uC0DD\uD55C\uB2E4\n if (instance === (this as any)) {\n this._connected_safari_and_standby.push(instance);\n return;\n }\n // \uC571\uC774 \uC544\uC9C1 connect \uC804: \uC900\uBE44\uB420 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB9B0\uB2E4. \uC548 \uAE30\uB2E4\uB9AC\uBA74 \uC774\uBBF8 \uC815\uC758\uB41C \uC790\uC2DD\uC774 DI\u00B7\uB77C\uC6B0\uD130 \uC5C6\uC774\n // \uB77C\uC774\uD504\uC0AC\uC774\uD074(@inject \uB4F1)\uC744 \uBA3C\uC800 \uB3CC\uB824 undefined \uB97C \uBC1B\uB294\uB2E4 (elementDefine \uC774 \uC774 await \uB4A4\uC5D0 \uB80C\uB354\uD55C\uB2E4).\n await new Promise<void>(resolve => this._appReadyWaiters.push(resolve));\n }\n\n this.config.onConnectedChildBefore?.(instance);\n if (!option?.noIncrements) {\n this._connectedInvocations++;\n }\n this._swc_connected_instance.add(instance);\n // await \uC0AC\uC774\uC5D0 \uC694\uC18C\uAC00 \uB5A8\uC5B4\uC9C0\uAC70\uB098 \uB2E4\uC2DC \uBD99\uC73C\uBA74(elementDefine \uC758 \uCC28\uB840 \uBC88\uD638\uAC00 \uBC14\uB00C\uBA74) \uB098\uBA38\uC9C0(\uAC00\uB4DC \uB4F1\uB85D\u00B7\uC7AC\uC0DD)\uB294 \uAC74\uB108\uB6F4\uB2E4\n const gen = (instance as any).__swc_connectGen;\n const stale = () => (instance as any).__swc_connectGen !== gen;\n\n const connectedSwcAppCallBacks = findAllLifecycleMetadata(instance, ON_CONNECTED_SWC_APP_METADATA_KEY);\n for (let connectedSwcAppCallBack of connectedSwcAppCallBacks) {\n await (instance as any)?._invokeLifecycleMethod?.(connectedSwcAppCallBack.propertyKey);\n if (stale()) return this;\n }\n\n if (this._childrenConnectedDoneInterval) {\n this.config.window.clearInterval(this._childrenConnectedDoneInterval);\n }\n const intervalConfig = { setInterval: this.config.window.setInterval.bind(this.config.window), clearInterval: this.config.window.clearInterval.bind(this.config.window) };\n this._childrenConnectedDoneInterval = debounceTimeIntervalLock(\n () => this._connectedInvocations === 0,\n () => {\n this._childrenConnectedDoneInterval = null;\n this.config.onChildrenConnectedDone?.(this);\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30,\n intervalConfig\n );\n\n if (this.simpleApplication) {\n try {\n if (this.router && this._lastRouterEvent) {\n await this._invokeRouteChangeSubscribers(instance, this._lastRouterEvent!, 'connected');\n }\n } catch (e) {\n throw e;\n }\n }\n if (stale()) return this;\n\n if (this.simpleApplication) this._registerLeaveGuards(instance);\n\n // replay \uBC84\uD37C\uAC00 \uC788\uC73C\uBA74 \uC2E0\uADDC \uC778\uC2A4\uD134\uC2A4\uC5D0\uB9CC \uC7AC\uC0DD (fire-and-forget, \uC5F0\uACB0 \uBE14\uB85C\uD0B9 \uC548 \uD568)\n this._replayMessagesTo(instance);\n\n const isBrowser = ValidUtils.isBrowser();\n if (!isBrowser && this.config?.ssr) {\n setSSRAttribute(instance);\n } else {\n removeSSRAttribute(instance);\n }\n }\n\n this.config.onConnectedChildAfter?.(instance);\n return this;\n }\n\n async _connectedDone(instance: any, option?: { aborted?: boolean }) {\n try {\n if (option?.aborted) return; // \uC911\uAC04\uC5D0 \uBA48\uCD98 \uC5F0\uACB0: \uC7AC\uC0DD \uC5C6\uC774 \uC5F0\uACB0 \uC218\uB9CC \uB9DE\uCD98\uB2E4\n // trigger 'connectedDone' \uAD6C\uB3C5\uC5D0\uB9CC \uBC84\uD37C \uC7AC\uC0DD (render \uC644\uB8CC \uD6C4\uB77C DOM \uD0C0\uAC9F \uC548\uC804)\n this._replayMessagesTo(instance, 'connectedDone');\n if (this.simpleApplication) {\n try {\n if (this.router && this._lastRouterEvent) {\n await this._invokeRouteChangeSubscribers(instance, this._lastRouterEvent!, 'connectedDone');\n }\n } catch (e) {\n throw e;\n }\n }\n } finally {\n this._connectedInvocations = Math.max(0, this._connectedInvocations - 1);\n }\n }\n\n _disconnected(instance: any) {\n if (instance) {\n this._swc_connected_instance.delete(instance);\n // beforeLeave \uAC00\uB4DC \uD574\uC81C + on \uD310\uC815 \uC0C1\uD0DC \uCD08\uAE30\uD654 (\uB2E4\uC2DC \uBD99\uC73C\uBA74 enter \uBD80\uD130)\n instance.__swc_leaveGuardOffs?.forEach((off: () => void) => off());\n instance.__swc_leaveGuardOffs = undefined;\n instance.__swc_routeState = undefined;\n this.config?.onDisconnectedChildAfter?.(instance);\n }\n }\n\n async _handleRouteChange(route: RouterEventType) {\n this._lastRouterEvent = route;\n const swcConnectedInstance = Array.from(this._swc_connected_instance);\n const ps = swcConnectedInstance.map((instance: any) => this._invokeRouteChangeSubscribers(instance, route));\n await Promise.allSettled(ps);\n }\n\n async connect(config?: SwcAttributeConfigType) {\n const swcConfig = {\n routeType: 'element',\n window: config?.window,\n ...config\n } as SwcConfigType;\n\n await this.__swc_engine.connect(swcConfig);\n this._appReadyWaiters.splice(0).forEach(resolve => resolve());\n\n // Safari is \uC18D\uC131 \uCC98\uB9AC\n this._connected_safari_and_standby.forEach((instance: any) => {\n this._connected(instance, { noIncrements: true });\n });\n\n // \uB77C\uC6B0\uD130 \uBCC0\uACBD \uAD6C\uB3C5\n if (!this._routerSubscription && this.router) {\n this._routerSubscription = this.router.observable.subscribe(async (route: RouterEventType) => {\n if (route.triggerPoint === 'end') {\n await this._handleRouteChange(route);\n }\n });\n }\n\n // onSwcAppConnected \uD6C5 (@inject \uD30C\uB77C\uBBF8\uD130 \uC788\uC73C\uBA74 DI \uD574\uACB0 \u2014 _invokeLifecycleMethod \uACBD\uB85C)\n await this._invokeHook('onSwcAppConnected');\n }\n\n connectedCallback() {\n // \uBD80\uBAA8 \uD074\uB798\uC2A4\uC758 connectedCallback \uD638\uCD9C\n // @ts-ignore\n super.connectedCallback?.();\n\n const configStr = this.getAttribute('swc-get-application-config');\n const win = this.ownerDocument?.defaultView || window;\n if (configStr && win) {\n try {\n const userConfig = FunctionUtils.executeReturn({\n script: configStr,\n context: this,\n args: SwcUtils.getHelperAndHostSet(this, win)\n });\n if (userConfig instanceof Promise) {\n userConfig\n .then(resolvedConfig => {\n this.connect(resolvedConfig);\n })\n .catch(e => {\n console.error('[SWC-MIXIN] Script execution failed:', e);\n });\n } else {\n this.connect(userConfig);\n }\n } catch (e) {\n console.error('[SWC-MIXIN] Script execution failed:', e);\n }\n }\n\n this._connected(this);\n this.__swc_engine?.config?.onConnected?.(this);\n this._connectedDone(this);\n void this._invokeHook('onConnected').catch(e => console.error('[SWC-MIXIN] onConnected error:', e));\n }\n\n disconnectedCallback() {\n // \uBD80\uBAA8 \uD074\uB798\uC2A4\uC758 disconnectedCallback \uD638\uCD9C\n // @ts-ignore\n super.disconnectedCallback?.();\n\n this._routerSubscription?.unsubscribe();\n this._routerSubscription = undefined;\n this._lastRouterEvent = undefined;\n this.__swc_engine.disconnect();\n this.__swc_engine?.config?.onDisconnected?.(this);\n this._disconnected(this);\n void this._invokeHook('onDisconnected').catch(e => console.error('[SWC-MIXIN] onDisconnected error:', e));\n }\n\n async routing(path: string) {\n await this.router?.go(path);\n }\n\n back(): void {\n this.router?.back();\n }\n\n forward(): void {\n this.router?.forward();\n }\n\n reload(): void {\n this.router?.reload();\n }\n\n publishMessage(message: SwcAppMessage): void { // \uBC84\uD37C \uBA3C\uC800 (\uD578\uB4E4\uB7EC\uAC00 \uB3D9\uAE30 \uC7AC\uBC1C\uD589\uD574\uB3C4 \uC21C\uC11C \uBCF4\uC7A5)\n // \uC804 \uD0C0\uC785 \uACFC\uAC70 \uBA54\uC2DC\uC9C0 \uBCF4\uAD00 (\uB2A6\uAC8C \uC5F0\uACB0\uB420 \uC778\uC2A4\uD134\uC2A4\uC5D0 \uC7AC\uC0DD). \uAC1C\uC218\uB294 \uC571 \uC124\uC815 1\uACF3.\n if (message.type) {\n const buf = [...(this._replayedMessages.get(message.type) ?? []), message];\n this._replayedMessages.set(message.type, buf.slice(-Math.max(1, this.config?.messageReplayBufferSize ?? 10)));\n }\n this._swc_connected_instance.forEach((instance: any) => {\n this._invokeMessageSubscribers(instance, message);\n });\n this._messageSubject.next(message);\n }\n\n connectedElements(): Array<HTMLElement & SwcElement> {\n return Array.from(this._swc_connected_instance);\n }\n\n /**\n * \uB370\uCF54\uB808\uC774\uD130 \uC5C6\uC774 \uCF54\uB4DC\uB85C \uBA54\uC2DC\uC9C0\uB97C \uAD6C\uB3C5\uD55C\uB2E4 (RxJS \uC2A4\uD0C0\uC77C). \uC11C\uBE44\uC2A4\u00B7\uB3D9\uC801 \uAD6C\uB3C5 \uB4F1 \uB370\uCF54\uB808\uC774\uD130\uB97C \uBABB \uBD99\uC774\uB294 \uACF3\uC6A9.\n * host.observeMessage<Me>(AUTH_CHANGED).subscribe(msg => ...) \u2192 Subscription (unsubscribe \uD544\uC218)\n * type \uC0DD\uB7B5 \uC2DC \uC804 \uD0C0\uC785 live. subject \uC635\uC158\uC740 @subscribeSwcAppMessage \uC640 \uAC19\uC740 \uADDC\uCE59(type \uC9C0\uC815 \uC2DC\uC5D0\uB9CC \uC7AC\uC0DD):\n * 'behavior' = \uBC84\uD37C \uB9C8\uC9C0\uB9C9 1\uAC1C \uBA3C\uC800 / 'replay' = \uBC84\uD37C \uC804\uCCB4 \uC2DC\uAC04\uC21C \uBA3C\uC800 / \uBBF8\uC9C0\uC815\u00B7'subject' = live\uB9CC.\n * \uD638\uCD9C \uD615\uD0DC:\n * observeMessage() \uC804 \uD0C0\uC785 live\n * observeMessage('auth') auth live\n * observeMessage('auth', { subject: 'behavior' }) auth \uB9C8\uC9C0\uB9C9 1\uAC1C + live\n * observeMessage({ type: 'auth', subject: 'replay' }) \uC635\uC158 \uAC1D\uCCB4 \uD558\uB098\uB85C\n */\n observeMessage<T = any>(): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(type: string): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(type: string, options: Omit<SwcAppMessageObserveOptions, 'type'>): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(options: SwcAppMessageObserveOptions): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(typeOrOptions?: string | SwcAppMessageObserveOptions, options?: Omit<SwcAppMessageObserveOptions, 'type'>): Observable<SwcAppMessage<T>> {\n const { type, subject } = typeof typeOrOptions === 'string' ? { ...options, type: typeOrOptions } : { ...typeOrOptions };\n return new Observable<SwcAppMessage<T>>(subscriber => {\n if (type && (subject === 'behavior' || subject === 'replay')) {\n const buf = this._replayedMessages.get(type) ?? [];\n (subject === 'behavior' ? buf.slice(-1) : buf).forEach(m => subscriber.next(m as SwcAppMessage<T>));\n }\n const sub = this._messageSubject.subscribe(m => {\n if (!type || m.type === type) subscriber.next(m as SwcAppMessage<T>);\n });\n return () => sub.unsubscribe();\n });\n }\n\n // hook \uC2E4\uD589 + @inject \uD30C\uB77C\uBBF8\uD130 DI \uD574\uACB0 (host \uBCF8\uCCB4 \uD3EC\uD568.\n // _invokeLifecycleMethod\uB294 host/hostSet \uC0C1\uD669 \uBD84\uAE30\uAC00 \uB2EC\uB77C \uD638\uC2A4\uD2B8 \uBCF8\uCCB4\uC5D0\uC11C \uC8FC\uC785\uC774 \uC548 \uB428)\n async _invokeHook(methodName: string | symbol) {\n const fn = (this as any)[methodName];\n if (typeof fn !== 'function') return;\n const manager = (this as any).simpleApplication?.simstanceManager;\n if (!manager) {\n return fn.call(this);\n }\n return manager.executeBindParameterSimPromise({ target: this, targetKey: methodName });\n }\n\n // \uC2E0\uADDC \uC5F0\uACB0 \uC778\uC2A4\uD134\uC2A4 1\uACF3\uC5D0\uB9CC \uBC84\uD37C \uC7AC\uC0DD. \uAD6C\uB3C5\uC790\uBCC4 subject \uC120\uC5B8 \uAE30\uC900:\n // - 'behavior': \uB9C8\uC9C0\uB9C9 1\uAC1C / 'replay': \uBC84\uD37C \uC804\uCCB4 \uC2DC\uAC04\uC21C / \uBBF8\uC9C0\uC815\u00B7'subject': live\uB9CC (\uC7AC\uC0DD \uC548 \uD568)\n // - trigger 'connectedDone'\uC778 \uAD6C\uB3C5\uC740 _connectedDone(render \uC644\uB8CC \uD6C4)\uC5D0\uC11C \uC7AC\uC0DD. phase\uB85C \uAD6C\uBD84.\n // \uC774\uBBF8 \uC5F0\uACB0\uB41C \uC778\uC2A4\uD134\uC2A4\uB294 publishMessage \uB54C live\uB85C \uBC1B\uC73C\uBBC0\uB85C \uC5EC\uAE30 \uC624\uC9C0 \uC54A\uC74C.\n _replayMessagesTo(instance: any, phase: 'connected' | 'connectedDone' = 'connected') {\n const subs = getSubscribeSwcAppMessageMetadata(instance);\n if (!subs || !Array.isArray(subs)) return;\n const seen = new Set<string>();\n subs.forEach(meta => {\n const type = meta.messageType as string | undefined;\n if (!type || seen.has(type)) return;\n seen.add(type);\n if ((meta.trigger ?? 'connected') !== phase) return;\n const buf = this._replayedMessages.get(type) ?? [];\n if (meta.subject === 'behavior') {\n const last = buf[buf.length - 1];\n if (last) this._invokeMessageSubscribers(instance, last);\n } else if (meta.subject === 'replay') {\n buf.forEach(msg => this._invokeMessageSubscribers(instance, msg));\n }\n });\n }\n\n _invokeMessageSubscribers(instance: any, message: SwcAppMessage) {\n const messageSubscribers = getSubscribeSwcAppMessageMetadata(instance);\n if (messageSubscribers && Array.isArray(messageSubscribers)) {\n // \uBA54\uC2DC\uC9C0 \uAD6C\uB3C5\uC740 fire-and-forget \u2014 async filter/before/finally\uB97C \uC704\uD574 \uAD6C\uB3C5\uC790\uB9C8\uB2E4 \uBE44\uB3D9\uAE30 \uB7EC\uB108\uB85C \uB3CC\uB9AC\uB418\n // \uD638\uCD9C\uCE21(publishMessage)\uC740 \uB17C\uBE14\uB85C\uD0B9 \uC720\uC9C0. \uBBF8\uCC98\uB9AC rejection\uC740 \uB85C\uAE45\uB9CC.\n messageSubscribers.forEach(metadata => {\n void this._runMessageSubscriber(instance, message, metadata).catch(e => console.error('[SWC] subscribeSwcAppMessage error:', e));\n });\n }\n }\n\n async _runMessageSubscriber(instance: any, message: SwcAppMessage, metadata: any) {\n const methodName = metadata.propertyKey;\n const messageType = metadata.messageType;\n const { filter, before, finally: finaly } = metadata;\n\n const typeMatched = !messageType || message.type === messageType;\n if (!typeMatched) return;\n if (filter && !(await filter(message, instance))) return;\n if (typeof instance[methodName] !== 'function') return;\n\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const instanceHelperSet = SwcUtils.getHelperSet(this.config.window);\n // before\uB97C \uBA3C\uC800 \uB3CC\uB824 \uB9AC\uD134\uAC12\uC744 @appMessageBeforeReturn \uC73C\uB85C \uC8FC\uC785\uD560 \uC218 \uC788\uAC8C \uCEA1\uCC98.\n const beforeReturn = before ? await before(message, instance) : undefined;\n const args = buildSwcParameterArgs(\n instance,\n methodName,\n {\n appMessage: message,\n hostSet: instanceHelperHostSet,\n helperHostSet: instanceHelperHostSet,\n helperSet: instanceHelperSet,\n appMessageBeforeReturn: beforeReturn\n },\n [message]\n );\n\n let result: any, error: any;\n try {\n result = await instance[methodName](...args);\n } catch (e) {\n error = e;\n } finally {\n if (finaly) await finaly(message, instance, { args, result, error });\n }\n if (error) throw error;\n }\n }\n\n return SwcAppMixinClass;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { SwcAppInterface, SwcAppMessage, SwcAppMessageObserveOptions, SwcElement } from '../types';\nimport { APPLY_NODE_METADATA_KEY, findAllLifecycleMetadata, getSubscribeSwcAppMessageMetadata, getSubscribeSwcAppRouteChangeMetadata, ON_CONNECTED_SWC_APP_METADATA_KEY, SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, buildSwcParameterArgs } from '../decorators';\nimport { SwcAppEngine, SwcAttributeConfigType, SwcConfigType } from '../SwcAppEngine';\nimport { debounceTimeIntervalLock, FunctionUtils, Subscription, Subject, Observable } from '@dooboostore/core';\nimport {RouterEventType, ValidUtils} from '@dooboostore/core-web';\nimport { SwcUtils } from '../utils/Utils';\n\ntype RouteSubscriberState = { matched: boolean; signature: string; pathData?: { [k: string]: string }; pathDataAll?: { [k: string]: string[] } };\nconst routeStateOf = (instance: any): Map<string | symbol, RouteSubscriberState> => (instance.__swc_routeState ??= new Map());\n\n/** \uB77C\uC6B0\uD2B8 \uD30C\uB77C\uBBF8\uD130 \uB370\uCF54\uB808\uC774\uD130 \uAC12 (kind \uC774\uB984 = \uB370\uCF54\uB808\uC774\uD130 \uC774\uB984). \uD0A4\uB97C \uBC1B\uB294 \uAC83\uC740 (key) => \uAC12 */\nconst routeParamValues = (sp: URLSearchParams, pathDataAll: { [k: string]: string[] }) => {\n const queryAll: { [k: string]: string[] } = Object.fromEntries([...new Set(sp.keys())].map(k => [k, sp.getAll(k)]));\n const pick = (all: { [k: string]: string[] }, at: 'first' | 'last') =>\n Object.fromEntries(Object.entries(all).map(([k, v]) => [k, at === 'first' ? v[0] : v[v.length - 1]]));\n const lastOf = (v: string[] | undefined) => (v && v.length ? v[v.length - 1] : undefined);\n const firstQuery = (k: string) => sp.get(k);\n const firstPath = (k: string) => pathDataAll[k]?.[0];\n return {\n swcAppRouteQueryParam: firstQuery,\n swcAppRouteFirstQueryParam: firstQuery,\n swcAppRouteLastQueryParam: (k: string) => lastOf(sp.getAll(k)) ?? null,\n swcAppRouteQueryParams: (k: string) => sp.getAll(k),\n swcAppRouteQueryParamObject: pick(queryAll, 'first'),\n swcAppRouteFirstQueryParamObject: pick(queryAll, 'first'),\n swcAppRouteLastQueryParamObject: pick(queryAll, 'last'),\n swcAppRouteQueryParamsObject: queryAll,\n swcAppRouteURLSearchParams: sp,\n swcAppRoutePathVariable: firstPath,\n swcAppRouteFirstPathVariable: firstPath,\n swcAppRouteLastPathVariable: (k: string) => lastOf(pathDataAll[k]),\n swcAppRoutePathVariables: (k: string) => pathDataAll[k] ?? [],\n swcAppRoutePathVariableObject: pick(pathDataAll, 'first'),\n swcAppRouteFirstPathVariableObject: pick(pathDataAll, 'first'),\n swcAppRouteLastPathVariableObject: pick(pathDataAll, 'last'),\n swcAppRoutePathVariablesObject: pathDataAll\n };\n};\n\n/** \uAD6C\uB3C5\uC790\uC758 path(\uBB38\uC790\uC5F4/\uBC30\uC5F4/\uD568\uC218/\uC5C6\uC74C)\uB97C route \uC5D0 \uB9E4\uCE6D. \uC548 \uB9DE\uC73C\uBA74 null */\nconst matchRoute = (pathOption: any, instance: any, re: { path?: string }): { pathData: { [k: string]: string }; pathDataAll: { [k: string]: string[] } } | null => {\n let pattern = typeof pathOption === 'function' ? pathOption(instance) : pathOption;\n if (!pattern) return { pathData: {}, pathDataAll: {} };\n const path = re.path || '/';\n for (const p of Array.isArray(pattern) ? pattern : [pattern]) {\n const pathData = SwcUtils.parsePathPattern(p, path);\n if (pathData !== null) return { pathData, pathDataAll: SwcUtils.parsePathPatternAll(p, path) ?? {} };\n }\n return null;\n};\n\nexport const isSSR = (i: HTMLElement) => {\n return i.hasAttribute('swc-use-ssr');\n};\nexport const setSSRAttribute = (i: HTMLElement) => {\n i.setAttribute('swc-use-ssr', (i as any)._swcId ?? '');\n};\nexport const removeSSRAttribute = (i: HTMLElement) => {\n // \uD45C\uC2DD\uC740 \uC9C0\uC6CC\uB3C4 \"\uC11C\uBC84\uAC00 \uADF8\uB9B0 \uC5D8\uB9AC\uBA3C\uD2B8\"\uC600\uB2E4\uB294 \uAC74 \uAE30\uC5B5\uD55C\uB2E4 \u2192 \uCCAB \uB77C\uC6B0\uD2B8(\uAC19\uC740 \uACBD\uB85C)\uB97C \uB2E4\uC2DC \uADF8\uB9AC\uC9C0 \uC54A\uAC8C (_invokeRouteChangeSubscribers)\n if (isSSR(i)) (i as any).__swc_ssrRoute ??= true;\n i.removeAttribute('swc-use-ssr');\n};\n\n/**\n * SwcAppMixin: SwcApp \uAE30\uB2A5\uC744 \uBAA8\uB4E0 HTMLElement\uC5D0 \uCD94\uAC00\uD560 \uC218 \uC788\uB294 Mixin\n *\n * \uC0AC\uC6A9 \uC608:\n * @elementDefine('custom-app', { window: w })\n * class CustomApp extends SwcAppMixin(w.HTMLElement) implements SwcAppInterface {\n * // \uCD94\uAC00 \uAE30\uB2A5 \uAD6C\uD604\n * }\n */\nexport function SwcAppMixin<T extends { new (...args: any[]): HTMLElement }>(Base: T) {\n abstract class SwcAppMixinClass extends Base implements SwcAppInterface {\n __swc_engine = new SwcAppEngine(this as any);\n _swcId!: string;\n _swc_connected_instance = new Set<any>();\n _routerSubscription?: Subscription;\n _lastRouterEvent?: RouterEventType;\n // replay \uC635\uC158\uC73C\uB85C \uBC1C\uD589\uB41C \uD0C0\uC785\uBCC4 \uB9C8\uC9C0\uB9C9 \uBA54\uC2DC\uC9C0 1\uAC1C \uBCF4\uAD00\n _replayedMessages = new Map<string, SwcAppMessage[]>();\n // \uCF54\uB4DC \uAD6C\uB3C5(observeMessage)\uC6A9 live \uC2A4\uD2B8\uB9BC. \uB370\uCF54\uB808\uC774\uD130 \uAD6C\uB3C5\uACFC \uAC19\uC740 publishMessage\uC5D0\uC11C \uD758\uB7EC\uB098\uC634.\n _messageSubject = new Subject<SwcAppMessage>();\n // \u2500\u2500 \uD638\uC2A4\uD2B8 \uB77C\uC774\uD504\uC0AC\uC774\uD074 \uD6C5 (abstract): \uC0C1\uC18D\uD55C \uD074\uB798\uC2A4\uAC00 \uBC18\uB4DC\uC2DC \uAD6C\uD604. @inject \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uC73C\uBA74 DI\uB85C \uC790\uB3D9 \uD574\uACB0\uB428 \u2500\u2500\n // connectedCallback \uC2DC\uC810 (DOM\uC5D0 \uBD99\uC744 \uB54C\uB9C8\uB2E4). connect() \uC804\uC774\uB77C DI \uCEE8\uD14C\uC774\uB108\uAC00 \uC544\uC9C1 \uC5C6\uC744 \uC218 \uC788\uC74C.\n abstract onConnected(...args: any[]): void | Promise<void>;\n // disconnectedCallback \uC2DC\uC810 (DOM\uC5D0\uC11C \uB5A8\uC5B4\uC9C8 \uB54C\uB9C8\uB2E4). onConnected\uC5D0\uC11C \uB9CC\uB4E0 \uAD6C\uB3C5 \uB4F1\uC744 \uC5EC\uAE30\uC11C \uD574\uC81C.\n abstract onDisconnected(...args: any[]): void | Promise<void>;\n // connect() \uC644\uB8CC \uD6C4 (DI \uCEE8\uD14C\uC774\uB108\u00B7\uB77C\uC6B0\uD130 \uC900\uBE44\uB428). \uC11C\uBE44\uC2A4 \uD638\uCD9C\uC740 \uC5EC\uAE30\uC11C.\n abstract onSwcAppConnected(...args: any[]): void | Promise<void>;\n _routeChangeInvocations = 0;\n _connectedInvocations = 0;\n\n _childrenRouteChangedInterval: any;\n _childrenConnectedDoneInterval: any;\n\n /**\n * Safari is \uC18D\uC131 \uCC98\uB9AC\n * Safari polyfill\uC5D0\uC11C\uB294 \uC790\uC2DD\uBD80\uD130 \uB9CC\uB4E4\uC5B4\uC9C0\uACE0 \uBD80\uBAA8\uAC00 \uB9CC\uB4E4\uC5B4\uC9C0\uBBC0\uB85C\n * \uBD80\uBAA8\uAC00 \uC790\uC2DD\uB4E4\uC744 \uAC15\uC81C\uB85C \uB4F1\uB85D\uD574\uC8FC\uB294 \uD615\uD0DC\uB85C \uCC98\uB9AC\n */\n _connected_safari_and_standby = [];\n // connect() \uC804\uC5D0 \uBD99\uC740 \uC790\uC2DD\uB4E4\uC774 \uAE30\uB2E4\uB9AC\uB294 \uACF3 \u2014 connect() \uAC00 \uC5D4\uC9C4\uC744 \uB744\uC6B4 \uB4A4 \uAE68\uC6B4\uB2E4\n _appReadyWaiters: Array<() => void> = [];\n\n get simpleApplication() {\n return this.__swc_engine.simpleApplication;\n }\n\n get config() {\n return this.__swc_engine?.config;\n }\n\n get router() {\n return this.__swc_engine?.router;\n }\n\n // phase: 'live'(\uAE30\uBCF8, \uC804\uCCB4 \uBC29\uC1A1) | 'connected' | 'connectedDone' (replay, \uD574\uB2F9 trigger\uB9CC)\n async _invokeRouteChangeSubscribers(instance: HTMLElement, re: RouterEventType, phase: 'live' | 'connected' | 'connectedDone' = 'live') {\n if (instance.isConnected === false) return;\n\n this._routeChangeInvocations++;\n\n if (this._childrenRouteChangedInterval) {\n this.config.window.clearInterval(this._childrenRouteChangedInterval);\n }\n const intervalConfig = { setInterval: this.config.window.setInterval.bind(this.config.window), clearInterval: this.config.window.clearInterval.bind(this.config.window) };\n this._childrenRouteChangedInterval = debounceTimeIntervalLock(\n () => this._routeChangeInvocations === 0,\n () => {\n this._childrenRouteChangedInterval = null;\n this.config.onChildrenRouteChanged?.(re, this);\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30,\n intervalConfig\n );\n\n try {\n const routeChangeSubscribers = getSubscribeSwcAppRouteChangeMetadata(instance);\n\n if (routeChangeSubscribers.length > 0) {\n // Subscribers are already sorted by order from getSubscribeSwcAppRouteChangeMetadata\n // Execute subscribers in order, stop if one returns a value.\n // live\uB294 \uC804\uBD80 \uC2E4\uD589, replay\uB294 \uD574\uB2F9 trigger \uAD6C\uB3C5\uC790\uB9CC \uC2E4\uD589.\n // on(enter/update/leave) \uD310\uC815\uC744 \uC704\uD574 \uAD6C\uB3C5\uC790\uBCC4 \uC9C1\uC804 \uB9E4\uCE6D \uC0C1\uD0DC\uB97C \uAE30\uC5B5\uD55C\uB2E4 (\uBA48\uCD98 \uB4A4\uC5D0\uB3C4 \uC0C1\uD0DC\uB294 \uACC4\uC18D \uAC31\uC2E0).\n const state = routeStateOf(instance);\n // \uC11C\uBC84\uAC00 \uC774\uBBF8 \uC774 \uACBD\uB85C\uB85C \uADF8\uB824 \uBCF4\uB0B8 \uC5D8\uB9AC\uBA3C\uD2B8\uB294 \uAC19\uC740 \uACBD\uB85C\uC5D0 \uB300\uD574 \uB2E4\uC2DC \uADF8\uB9AC\uC9C0 \uC54A\uB294\uB2E4 (@onConnected \uB80C\uB354\uB97C \uAC74\uB108\uB6F0\uB294 \uAC83\uACFC \uAC19\uC740 \uADDC\uCE59).\n // \uC5F0\uACB0 \uB54C(connected)\uC640 \uB77C\uC6B0\uD130 \uC2DC\uC791 \uB54C(live) \uB450 \uBC88 \uC624\uBBC0\uB85C \uACBD\uB85C\uB97C \uAE30\uC5B5\uD574 \uB458 \uB2E4 \uAC74\uB108\uB6F0\uACE0, \uB2E4\uB978 \uACBD\uB85C\uB85C \uAC00\uBA74 \uC78A\uB294\uB2E4.\n // \uB9E4\uCE6D \uC0C1\uD0DC\uB294 \uC544\uB798\uC5D0\uC11C \uADF8\uB300\uB85C \uAE30\uB85D\uD574 \uC774\uD6C4 enter/update/leave \uD310\uC815\uC740 \uC815\uC0C1\uC73C\uB85C \uB3C8\uB2E4.\n const routeSig = JSON.stringify([re.path ?? '', re.search ?? '']);\n if (ValidUtils.isBrowser() && isSSR(instance)) (instance as any).__swc_ssrRoute ??= true;\n if ((instance as any).__swc_ssrRoute === true) (instance as any).__swc_ssrRoute = routeSig;\n const ssrPainted = (instance as any).__swc_ssrRoute === routeSig;\n if (!ssrPainted) delete (instance as any).__swc_ssrRoute;\n let stopped = false;\n for (const metadata of routeChangeSubscribers) {\n if (phase !== 'live' && (metadata.options?.trigger ?? 'connected') !== phase) continue;\n const on = metadata.options?.on ?? 'match';\n if (on === 'beforeLeave') continue; // \uB77C\uC6B0\uD130 \uAC00\uB4DC\uB85C \uCC98\uB9AC (_registerLeaveGuards)\n const methodName = metadata.propertyKey;\n const extractValue = (v: any) => {\n const keyToUse = metadata.options?.valueKey ?? SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const match = matchRoute(metadata.options?.path, instance, re);\n const prev = state.get(methodName);\n // update \uD310\uC815 \uAE30\uC900: \uACBD\uB85C + query (path \uBCC0\uC218\uB294 \uACBD\uB85C\uC5D0\uC11C \uB098\uC624\uBBC0\uB85C \uD3EC\uD568\uB428. \uD328\uD134 \uC5C6\uB294 bare \uAD6C\uB3C5\uB3C4 \uACBD\uB85C \uBCC0\uACBD\uC744 \uAC10\uC9C0)\n const signature = match ? JSON.stringify([re.path ?? '', re.search ?? '']) : '';\n state.set(methodName, match ? { matched: true, signature, pathData: match.pathData, pathDataAll: match.pathDataAll } : { matched: false, signature: '' });\n\n const shouldRun =\n on === 'match' ? !!match\n : on === 'enter' ? !!match && !prev?.matched\n : on === 'update' ? !!match && !!prev?.matched && prev.signature !== signature\n : on === 'leave' ? !match && !!prev?.matched\n : false;\n if (stopped || ssrPainted || !shouldRun || !instance[methodName]) continue;\n\n // leave \uB294 \uC9C0\uAE08 \uACBD\uB85C\uAC00 \uC548 \uB9DE\uC73C\uBBC0\uB85C \uC9C1\uC804 \uB9E4\uCE6D\uC758 pathData \uB85C \uC900\uB2E4\n const pathData = match ? match.pathData : prev?.pathData ?? {};\n const pathDataAll = match ? match.pathDataAll : prev?.pathDataAll ?? {};\n\n const filter = metadata.options?.filter;\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const filterPassed = !filter || (await filter(this.router!, { helper: instanceHelperHostSet, currentThis: instance }));\n if (!filterPassed) continue;\n\n const before = metadata.options?.before;\n const finaly = metadata.options?.finally;\n // before\uB97C \uBA3C\uC800 \uB3CC\uB824 \uB9AC\uD134\uAC12\uC744 @routeChangeBeforeReturn \uC73C\uB85C \uC8FC\uC785\uD560 \uC218 \uC788\uAC8C \uCEA1\uCC98.\n const beforeReturn = before ? await before(this.router!, { helper: instanceHelperHostSet, currentThis: instance }) : undefined;\n const routeEventValue = { ...re, pathData };\n const args = this._buildRouteArgs(instance, methodName, routeEventValue, pathDataAll, beforeReturn);\n let rawResult: any, error: any;\n try {\n rawResult = await instance[methodName](...args);\n } catch (e) {\n error = e;\n } finally {\n if (finaly) await finaly(this.router!, { helper: instanceHelperHostSet, currentThis: instance }, { args, result: rawResult, error });\n }\n if (error) throw error;\n const result = extractValue(rawResult);\n // If handler returns a value, stop propagation to next handlers\n if (result !== undefined && result !== null) {\n stopped = true;\n }\n }\n }\n } finally {\n // this.config?.window\n const isBrowser = ValidUtils.isBrowser();\n if (!isBrowser && this.config?.ssr) {\n setSSRAttribute(instance);\n } else {\n removeSSRAttribute(instance);\n }\n this._routeChangeInvocations = Math.max(0, this._routeChangeInvocations - 1);\n }\n }\n\n /** \uB77C\uC6B0\uD2B8 \uD578\uB4E4\uB7EC \uC778\uC790: @swcAppRouterEvent / host \uACC4\uC5F4 / @routeChangeBeforeReturn / \uB77C\uC6B0\uD2B8 \uD30C\uB77C\uBBF8\uD130(query\u00B7path \uBCC0\uC218) */\n _buildRouteArgs(instance: any, methodName: string | symbol, routeEventValue: any, pathDataAll: { [k: string]: string[] }, beforeReturn: any) {\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const sp: URLSearchParams = routeEventValue.searchParams ?? new URLSearchParams(routeEventValue.search ?? '');\n return buildSwcParameterArgs(\n instance,\n methodName,\n {\n swcAppRouterEvent: routeEventValue,\n hostSet: instanceHelperHostSet,\n helperHostSet: instanceHelperHostSet,\n helperSet: SwcUtils.getHelperSet(this.config.window),\n routeChangeBeforeReturn: beforeReturn,\n ...routeParamValues(sp, pathDataAll)\n },\n [routeEventValue]\n );\n }\n\n /**\n * on: 'beforeLeave' \uAD6C\uB3C5\uC744 \uB77C\uC6B0\uD130 \uAC00\uB4DC\uB85C \uB4F1\uB85D. \uC9C0\uAE08 \uACBD\uB85C\uB294 \uB9DE\uACE0 \uB2E4\uC74C \uACBD\uB85C\uB294 \uC548 \uB9DE\uC744 \uB54C \uD578\uB4E4\uB7EC\uB97C \uBD80\uB974\uACE0,\n * false \uB97C \uB9AC\uD134\uD558\uBA74 \uC774\uB3D9\uC744 \uCDE8\uC18C\uD55C\uB2E4. \uC694\uC18C\uAC00 \uB5A8\uC5B4\uC9C0\uBA74 _disconnected \uC5D0\uC11C \uD574\uC81C.\n */\n _registerLeaveGuards(instance: any) {\n if (!this.router?.addLeaveGuard) return;\n instance.__swc_leaveGuardOffs?.forEach((off: () => void) => off());\n instance.__swc_leaveGuardOffs = getSubscribeSwcAppRouteChangeMetadata(instance)\n .filter(m => m.options?.on === 'beforeLeave')\n .map(metadata =>\n this.router!.addLeaveGuard(async (to, from) => {\n if (instance.isConnected === false || !instance[metadata.propertyKey]) return true;\n const fromMatch = matchRoute(metadata.options?.path, instance, from);\n if (!fromMatch || matchRoute(metadata.options?.path, instance, to)) return true; // \uC774 \uB77C\uC6B0\uD2B8\uB97C \uB5A0\uB098\uB294 \uACBD\uC6B0\uB9CC\n const filter = metadata.options?.filter;\n const helper = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n if (filter && !(await filter(this.router!, { helper, currentThis: instance }))) return true;\n const beforeReturn = metadata.options?.before ? await metadata.options.before(this.router!, { helper, currentThis: instance }) : undefined;\n const routeEventValue = { ...from, pathData: fromMatch.pathData, to };\n const args = this._buildRouteArgs(instance, metadata.propertyKey, routeEventValue, fromMatch.pathDataAll, beforeReturn);\n let result: any, error: any;\n try {\n result = await instance[metadata.propertyKey](...args);\n } catch (e) {\n error = e;\n } finally {\n if (metadata.options?.finally) await metadata.options.finally(this.router!, { helper, currentThis: instance }, { args, result, error });\n }\n if (error) throw error;\n return result !== false;\n })\n );\n }\n\n async _connected(instance: HTMLElement, option?: { noIncrements: boolean }) {\n if (instance) {\n if (!this.simpleApplication && !this.config) {\n // \uC790\uAE30 \uC790\uC2E0\uC740 connect() \uAC00 \uB098\uC911\uC5D0 \uC7AC\uC0DD\uD55C\uB2E4\n if (instance === (this as any)) {\n this._connected_safari_and_standby.push(instance);\n return;\n }\n // \uC571\uC774 \uC544\uC9C1 connect \uC804: \uC900\uBE44\uB420 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB9B0\uB2E4. \uC548 \uAE30\uB2E4\uB9AC\uBA74 \uC774\uBBF8 \uC815\uC758\uB41C \uC790\uC2DD\uC774 DI\u00B7\uB77C\uC6B0\uD130 \uC5C6\uC774\n // \uB77C\uC774\uD504\uC0AC\uC774\uD074(@inject \uB4F1)\uC744 \uBA3C\uC800 \uB3CC\uB824 undefined \uB97C \uBC1B\uB294\uB2E4 (elementDefine \uC774 \uC774 await \uB4A4\uC5D0 \uB80C\uB354\uD55C\uB2E4).\n await new Promise<void>(resolve => this._appReadyWaiters.push(resolve));\n }\n\n this.config.onConnectedChildBefore?.(instance);\n if (!option?.noIncrements) {\n this._connectedInvocations++;\n }\n this._swc_connected_instance.add(instance);\n // await \uC0AC\uC774\uC5D0 \uC694\uC18C\uAC00 \uB5A8\uC5B4\uC9C0\uAC70\uB098 \uB2E4\uC2DC \uBD99\uC73C\uBA74(elementDefine \uC758 \uCC28\uB840 \uBC88\uD638\uAC00 \uBC14\uB00C\uBA74) \uB098\uBA38\uC9C0(\uAC00\uB4DC \uB4F1\uB85D\u00B7\uC7AC\uC0DD)\uB294 \uAC74\uB108\uB6F4\uB2E4\n const gen = (instance as any).__swc_connectGen;\n const stale = () => (instance as any).__swc_connectGen !== gen;\n\n const connectedSwcAppCallBacks = findAllLifecycleMetadata(instance, ON_CONNECTED_SWC_APP_METADATA_KEY);\n for (let connectedSwcAppCallBack of connectedSwcAppCallBacks) {\n await (instance as any)?._invokeLifecycleMethod?.(connectedSwcAppCallBack.propertyKey);\n if (stale()) return this;\n }\n\n if (this._childrenConnectedDoneInterval) {\n this.config.window.clearInterval(this._childrenConnectedDoneInterval);\n }\n const intervalConfig = { setInterval: this.config.window.setInterval.bind(this.config.window), clearInterval: this.config.window.clearInterval.bind(this.config.window) };\n this._childrenConnectedDoneInterval = debounceTimeIntervalLock(\n () => this._connectedInvocations === 0,\n () => {\n this._childrenConnectedDoneInterval = null;\n this.config.onChildrenConnectedDone?.(this);\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30,\n intervalConfig\n );\n\n if (this.simpleApplication) {\n try {\n if (this.router && this._lastRouterEvent) {\n await this._invokeRouteChangeSubscribers(instance, this._lastRouterEvent!, 'connected');\n }\n } catch (e) {\n throw e;\n }\n }\n if (stale()) return this;\n\n if (this.simpleApplication) this._registerLeaveGuards(instance);\n\n // replay \uBC84\uD37C\uAC00 \uC788\uC73C\uBA74 \uC2E0\uADDC \uC778\uC2A4\uD134\uC2A4\uC5D0\uB9CC \uC7AC\uC0DD (fire-and-forget, \uC5F0\uACB0 \uBE14\uB85C\uD0B9 \uC548 \uD568)\n this._replayMessagesTo(instance);\n\n const isBrowser = ValidUtils.isBrowser();\n if (!isBrowser && this.config?.ssr) {\n setSSRAttribute(instance);\n } else {\n removeSSRAttribute(instance);\n }\n }\n\n this.config.onConnectedChildAfter?.(instance);\n return this;\n }\n\n async _connectedDone(instance: any, option?: { aborted?: boolean }) {\n try {\n if (option?.aborted) return; // \uC911\uAC04\uC5D0 \uBA48\uCD98 \uC5F0\uACB0: \uC7AC\uC0DD \uC5C6\uC774 \uC5F0\uACB0 \uC218\uB9CC \uB9DE\uCD98\uB2E4\n // trigger 'connectedDone' \uAD6C\uB3C5\uC5D0\uB9CC \uBC84\uD37C \uC7AC\uC0DD (render \uC644\uB8CC \uD6C4\uB77C DOM \uD0C0\uAC9F \uC548\uC804)\n this._replayMessagesTo(instance, 'connectedDone');\n if (this.simpleApplication) {\n try {\n if (this.router && this._lastRouterEvent) {\n await this._invokeRouteChangeSubscribers(instance, this._lastRouterEvent!, 'connectedDone');\n }\n } catch (e) {\n throw e;\n }\n }\n } finally {\n this._connectedInvocations = Math.max(0, this._connectedInvocations - 1);\n }\n }\n\n _disconnected(instance: any) {\n if (instance) {\n this._swc_connected_instance.delete(instance);\n // beforeLeave \uAC00\uB4DC \uD574\uC81C + on \uD310\uC815 \uC0C1\uD0DC \uCD08\uAE30\uD654 (\uB2E4\uC2DC \uBD99\uC73C\uBA74 enter \uBD80\uD130)\n instance.__swc_leaveGuardOffs?.forEach((off: () => void) => off());\n instance.__swc_leaveGuardOffs = undefined;\n instance.__swc_routeState = undefined;\n this.config?.onDisconnectedChildAfter?.(instance);\n }\n }\n\n async _handleRouteChange(route: RouterEventType) {\n this._lastRouterEvent = route;\n const swcConnectedInstance = Array.from(this._swc_connected_instance);\n const ps = swcConnectedInstance.map((instance: any) => this._invokeRouteChangeSubscribers(instance, route));\n await Promise.allSettled(ps);\n }\n\n async connect(config?: SwcAttributeConfigType) {\n const swcConfig = {\n routeType: 'element',\n window: config?.window,\n ...config\n } as SwcConfigType;\n\n await this.__swc_engine.connect(swcConfig);\n this._appReadyWaiters.splice(0).forEach(resolve => resolve());\n\n // Safari is \uC18D\uC131 \uCC98\uB9AC\n this._connected_safari_and_standby.forEach((instance: any) => {\n this._connected(instance, { noIncrements: true });\n });\n\n // \uB77C\uC6B0\uD130 \uBCC0\uACBD \uAD6C\uB3C5\n if (!this._routerSubscription && this.router) {\n this._routerSubscription = this.router.observable.subscribe(async (route: RouterEventType) => {\n if (route.triggerPoint === 'end') {\n await this._handleRouteChange(route);\n }\n });\n }\n\n // onSwcAppConnected \uD6C5 (@inject \uD30C\uB77C\uBBF8\uD130 \uC788\uC73C\uBA74 DI \uD574\uACB0 \u2014 _invokeLifecycleMethod \uACBD\uB85C)\n await this._invokeHook('onSwcAppConnected');\n }\n\n connectedCallback() {\n // \uBD80\uBAA8 \uD074\uB798\uC2A4\uC758 connectedCallback \uD638\uCD9C\n // @ts-ignore\n super.connectedCallback?.();\n\n const configStr = this.getAttribute('swc-get-application-config');\n const win = this.ownerDocument?.defaultView || window;\n if (configStr && win) {\n try {\n const userConfig = FunctionUtils.executeReturn({\n script: configStr,\n context: this,\n args: SwcUtils.getHelperAndHostSet(this, win)\n });\n if (userConfig instanceof Promise) {\n userConfig\n .then(resolvedConfig => {\n this.connect(resolvedConfig);\n })\n .catch(e => {\n console.error('[SWC-MIXIN] Script execution failed:', e);\n });\n } else {\n this.connect(userConfig);\n }\n } catch (e) {\n console.error('[SWC-MIXIN] Script execution failed:', e);\n }\n }\n\n this._connected(this);\n this.__swc_engine?.config?.onConnected?.(this);\n this._connectedDone(this);\n void this._invokeHook('onConnected').catch(e => console.error('[SWC-MIXIN] onConnected error:', e));\n }\n\n disconnectedCallback() {\n // \uBD80\uBAA8 \uD074\uB798\uC2A4\uC758 disconnectedCallback \uD638\uCD9C\n // @ts-ignore\n super.disconnectedCallback?.();\n\n this._routerSubscription?.unsubscribe();\n this._routerSubscription = undefined;\n this._lastRouterEvent = undefined;\n this.__swc_engine.disconnect();\n this.__swc_engine?.config?.onDisconnected?.(this);\n this._disconnected(this);\n void this._invokeHook('onDisconnected').catch(e => console.error('[SWC-MIXIN] onDisconnected error:', e));\n }\n\n async routing(path: string) {\n await this.router?.go(path);\n }\n\n back(): void {\n this.router?.back();\n }\n\n forward(): void {\n this.router?.forward();\n }\n\n reload(): void {\n this.router?.reload();\n }\n\n publishMessage(message: SwcAppMessage): void { // \uBC84\uD37C \uBA3C\uC800 (\uD578\uB4E4\uB7EC\uAC00 \uB3D9\uAE30 \uC7AC\uBC1C\uD589\uD574\uB3C4 \uC21C\uC11C \uBCF4\uC7A5)\n // \uC804 \uD0C0\uC785 \uACFC\uAC70 \uBA54\uC2DC\uC9C0 \uBCF4\uAD00 (\uB2A6\uAC8C \uC5F0\uACB0\uB420 \uC778\uC2A4\uD134\uC2A4\uC5D0 \uC7AC\uC0DD). \uAC1C\uC218\uB294 \uC571 \uC124\uC815 1\uACF3.\n if (message.type) {\n const buf = [...(this._replayedMessages.get(message.type) ?? []), message];\n this._replayedMessages.set(message.type, buf.slice(-Math.max(1, this.config?.messageReplayBufferSize ?? 10)));\n }\n this._swc_connected_instance.forEach((instance: any) => {\n this._invokeMessageSubscribers(instance, message);\n });\n this._messageSubject.next(message);\n }\n\n connectedElements(): Array<HTMLElement & SwcElement> {\n return Array.from(this._swc_connected_instance);\n }\n\n /**\n * \uB370\uCF54\uB808\uC774\uD130 \uC5C6\uC774 \uCF54\uB4DC\uB85C \uBA54\uC2DC\uC9C0\uB97C \uAD6C\uB3C5\uD55C\uB2E4 (RxJS \uC2A4\uD0C0\uC77C). \uC11C\uBE44\uC2A4\u00B7\uB3D9\uC801 \uAD6C\uB3C5 \uB4F1 \uB370\uCF54\uB808\uC774\uD130\uB97C \uBABB \uBD99\uC774\uB294 \uACF3\uC6A9.\n * host.observeMessage<Me>(AUTH_CHANGED).subscribe(msg => ...) \u2192 Subscription (unsubscribe \uD544\uC218)\n * type \uC0DD\uB7B5 \uC2DC \uC804 \uD0C0\uC785 live. subject \uC635\uC158\uC740 @subscribeSwcAppMessage \uC640 \uAC19\uC740 \uADDC\uCE59(type \uC9C0\uC815 \uC2DC\uC5D0\uB9CC \uC7AC\uC0DD):\n * 'behavior' = \uBC84\uD37C \uB9C8\uC9C0\uB9C9 1\uAC1C \uBA3C\uC800 / 'replay' = \uBC84\uD37C \uC804\uCCB4 \uC2DC\uAC04\uC21C \uBA3C\uC800 / \uBBF8\uC9C0\uC815\u00B7'subject' = live\uB9CC.\n * \uD638\uCD9C \uD615\uD0DC:\n * observeMessage() \uC804 \uD0C0\uC785 live\n * observeMessage('auth') auth live\n * observeMessage('auth', { subject: 'behavior' }) auth \uB9C8\uC9C0\uB9C9 1\uAC1C + live\n * observeMessage({ type: 'auth', subject: 'replay' }) \uC635\uC158 \uAC1D\uCCB4 \uD558\uB098\uB85C\n */\n observeMessage<T = any>(): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(type: string): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(type: string, options: Omit<SwcAppMessageObserveOptions, 'type'>): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(options: SwcAppMessageObserveOptions): Observable<SwcAppMessage<T>>;\n observeMessage<T = any>(typeOrOptions?: string | SwcAppMessageObserveOptions, options?: Omit<SwcAppMessageObserveOptions, 'type'>): Observable<SwcAppMessage<T>> {\n const { type, subject } = typeof typeOrOptions === 'string' ? { ...options, type: typeOrOptions } : { ...typeOrOptions };\n return new Observable<SwcAppMessage<T>>(subscriber => {\n if (type && (subject === 'behavior' || subject === 'replay')) {\n const buf = this._replayedMessages.get(type) ?? [];\n (subject === 'behavior' ? buf.slice(-1) : buf).forEach(m => subscriber.next(m as SwcAppMessage<T>));\n }\n const sub = this._messageSubject.subscribe(m => {\n if (!type || m.type === type) subscriber.next(m as SwcAppMessage<T>);\n });\n return () => sub.unsubscribe();\n });\n }\n\n // hook \uC2E4\uD589 + @inject \uD30C\uB77C\uBBF8\uD130 DI \uD574\uACB0 (host \uBCF8\uCCB4 \uD3EC\uD568.\n // _invokeLifecycleMethod\uB294 host/hostSet \uC0C1\uD669 \uBD84\uAE30\uAC00 \uB2EC\uB77C \uD638\uC2A4\uD2B8 \uBCF8\uCCB4\uC5D0\uC11C \uC8FC\uC785\uC774 \uC548 \uB428)\n async _invokeHook(methodName: string | symbol) {\n const fn = (this as any)[methodName];\n if (typeof fn !== 'function') return;\n const manager = (this as any).simpleApplication?.simstanceManager;\n if (!manager) {\n return fn.call(this);\n }\n return manager.executeBindParameterSimPromise({ target: this, targetKey: methodName });\n }\n\n // \uC2E0\uADDC \uC5F0\uACB0 \uC778\uC2A4\uD134\uC2A4 1\uACF3\uC5D0\uB9CC \uBC84\uD37C \uC7AC\uC0DD. \uAD6C\uB3C5\uC790\uBCC4 subject \uC120\uC5B8 \uAE30\uC900:\n // - 'behavior': \uB9C8\uC9C0\uB9C9 1\uAC1C / 'replay': \uBC84\uD37C \uC804\uCCB4 \uC2DC\uAC04\uC21C / \uBBF8\uC9C0\uC815\u00B7'subject': live\uB9CC (\uC7AC\uC0DD \uC548 \uD568)\n // - trigger 'connectedDone'\uC778 \uAD6C\uB3C5\uC740 _connectedDone(render \uC644\uB8CC \uD6C4)\uC5D0\uC11C \uC7AC\uC0DD. phase\uB85C \uAD6C\uBD84.\n // \uC774\uBBF8 \uC5F0\uACB0\uB41C \uC778\uC2A4\uD134\uC2A4\uB294 publishMessage \uB54C live\uB85C \uBC1B\uC73C\uBBC0\uB85C \uC5EC\uAE30 \uC624\uC9C0 \uC54A\uC74C.\n _replayMessagesTo(instance: any, phase: 'connected' | 'connectedDone' = 'connected') {\n const subs = getSubscribeSwcAppMessageMetadata(instance);\n if (!subs || !Array.isArray(subs)) return;\n const seen = new Set<string>();\n subs.forEach(meta => {\n const type = meta.messageType as string | undefined;\n if (!type || seen.has(type)) return;\n seen.add(type);\n if ((meta.trigger ?? 'connected') !== phase) return;\n const buf = this._replayedMessages.get(type) ?? [];\n if (meta.subject === 'behavior') {\n const last = buf[buf.length - 1];\n if (last) this._invokeMessageSubscribers(instance, last);\n } else if (meta.subject === 'replay') {\n buf.forEach(msg => this._invokeMessageSubscribers(instance, msg));\n }\n });\n }\n\n _invokeMessageSubscribers(instance: any, message: SwcAppMessage) {\n const messageSubscribers = getSubscribeSwcAppMessageMetadata(instance);\n if (messageSubscribers && Array.isArray(messageSubscribers)) {\n // \uBA54\uC2DC\uC9C0 \uAD6C\uB3C5\uC740 fire-and-forget \u2014 async filter/before/finally\uB97C \uC704\uD574 \uAD6C\uB3C5\uC790\uB9C8\uB2E4 \uBE44\uB3D9\uAE30 \uB7EC\uB108\uB85C \uB3CC\uB9AC\uB418\n // \uD638\uCD9C\uCE21(publishMessage)\uC740 \uB17C\uBE14\uB85C\uD0B9 \uC720\uC9C0. \uBBF8\uCC98\uB9AC rejection\uC740 \uB85C\uAE45\uB9CC.\n messageSubscribers.forEach(metadata => {\n void this._runMessageSubscriber(instance, message, metadata).catch(e => console.error('[SWC] subscribeSwcAppMessage error:', e));\n });\n }\n }\n\n async _runMessageSubscriber(instance: any, message: SwcAppMessage, metadata: any) {\n const methodName = metadata.propertyKey;\n const messageType = metadata.messageType;\n const { filter, before, finally: finaly } = metadata;\n\n const typeMatched = !messageType || message.type === messageType;\n if (!typeMatched) return;\n if (filter && !(await filter(message, instance))) return;\n if (typeof instance[methodName] !== 'function') return;\n\n const instanceHelperHostSet = SwcUtils.getHelperAndHostSet(instance, this.config.window);\n const instanceHelperSet = SwcUtils.getHelperSet(this.config.window);\n // before\uB97C \uBA3C\uC800 \uB3CC\uB824 \uB9AC\uD134\uAC12\uC744 @appMessageBeforeReturn \uC73C\uB85C \uC8FC\uC785\uD560 \uC218 \uC788\uAC8C \uCEA1\uCC98.\n const beforeReturn = before ? await before(message, instance) : undefined;\n const args = buildSwcParameterArgs(\n instance,\n methodName,\n {\n appMessage: message,\n hostSet: instanceHelperHostSet,\n helperHostSet: instanceHelperHostSet,\n helperSet: instanceHelperSet,\n appMessageBeforeReturn: beforeReturn\n },\n [message]\n );\n\n let result: any, error: any;\n try {\n result = await instance[methodName](...args);\n } catch (e) {\n error = e;\n } finally {\n if (finaly) await finaly(message, instance, { args, result, error });\n }\n if (error) throw error;\n }\n }\n\n return SwcAppMixinClass;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14816,7 +14816,9 @@ var EventListenerLifeCycler = class {
|
|
|
14816
14816
|
const currentWin = helperHostSet2.$w;
|
|
14817
14817
|
const { type, options } = meta;
|
|
14818
14818
|
const opts = { capture: options.capture, once: options.once, passive: options.passive };
|
|
14819
|
+
const matchedTargets = /* @__PURE__ */ new WeakMap();
|
|
14819
14820
|
const handler = async (event2) => {
|
|
14821
|
+
const matchedElement2 = matchedTargets.get(event2) ?? event2.currentTarget;
|
|
14820
14822
|
const helper = options.filter || options.before || options.finally ? SwcUtils.getHelperAndHostSet(target, currentWin) : void 0;
|
|
14821
14823
|
if (options.filter) {
|
|
14822
14824
|
if (!await options.filter(event2, { currentThis: inst, helper })) return;
|
|
@@ -14825,12 +14827,12 @@ var EventListenerLifeCycler = class {
|
|
|
14825
14827
|
if (options.stopImmediatePropagation) event2.stopImmediatePropagation();
|
|
14826
14828
|
if (options.preventDefault) event2.preventDefault();
|
|
14827
14829
|
const currentHostSet = SwcUtils.getHostSet(inst);
|
|
14828
|
-
const legacyArgs = [event2, { currentHostSet, $matchedElement:
|
|
14830
|
+
const legacyArgs = [event2, { currentHostSet, $matchedElement: matchedElement2 }, { event: event2, ...currentHostSet, $el: target, $root: target }];
|
|
14829
14831
|
const currentHelperSet = SwcUtils.getHelperSet(currentWin);
|
|
14830
14832
|
const currentHelperHostSet = { ...currentHelperSet, ...currentHostSet, $this: inst };
|
|
14831
14833
|
const buildArgs = (beforeReturn) => buildSwcParameterArgs(inst, meta.propertyKey, {
|
|
14832
14834
|
eventObject: event2,
|
|
14833
|
-
matchedElement:
|
|
14835
|
+
matchedElement: matchedElement2,
|
|
14834
14836
|
hostSet: currentHostSet,
|
|
14835
14837
|
helperHostSet: currentHelperHostSet,
|
|
14836
14838
|
helperSet: currentHelperSet,
|
|
@@ -14864,7 +14866,10 @@ var EventListenerLifeCycler = class {
|
|
|
14864
14866
|
next: (e) => handler(e).catch((err) => console.error("Event handler error:", err)),
|
|
14865
14867
|
error: (err) => console.error("Event stream error:", err)
|
|
14866
14868
|
});
|
|
14867
|
-
const wrappedHandler = (event2) =>
|
|
14869
|
+
const wrappedHandler = (event2) => {
|
|
14870
|
+
matchedTargets.set(event2, event2.currentTarget);
|
|
14871
|
+
eventSubject.next(event2);
|
|
14872
|
+
};
|
|
14868
14873
|
target.addEventListener(type, wrappedHandler, opts);
|
|
14869
14874
|
const onRemoves = options.removeListener ? [{ fn: options.removeListener, opts: options }] : [];
|
|
14870
14875
|
this.getBoundListeners(inst).push({ target, type, handler: wrappedHandler, options: opts, subscription, onRemoves, meta });
|
|
@@ -16936,6 +16941,17 @@ function subscribeSwcAppMessage(targetOrMessageTypeOrOptions, optionsOrPropertyK
|
|
|
16936
16941
|
return createSubscribeSwcAppMessage(options, messageType);
|
|
16937
16942
|
}
|
|
16938
16943
|
var receiveMessage = subscribeSwcAppMessage;
|
|
16944
|
+
var withSubject = (subject, a, b, descriptor) => {
|
|
16945
|
+
if (descriptor) return createSubscribeSwcAppMessage({ subject })(a, b, descriptor);
|
|
16946
|
+
if (typeof a === "string") return createSubscribeSwcAppMessage({ ...b ?? {}, subject }, a);
|
|
16947
|
+
return createSubscribeSwcAppMessage({ ...a ?? {}, subject });
|
|
16948
|
+
};
|
|
16949
|
+
function subscribeSwcAppMessageBehavior(a, b, descriptor) {
|
|
16950
|
+
return withSubject("behavior", a, b, descriptor);
|
|
16951
|
+
}
|
|
16952
|
+
function subscribeSwcAppMessageReplay(a, b, descriptor) {
|
|
16953
|
+
return withSubject("replay", a, b, descriptor);
|
|
16954
|
+
}
|
|
16939
16955
|
var getSubscribeSwcAppMessageMetadata = (target) => {
|
|
16940
16956
|
const constructor = typeof target === "function" ? target : target.constructor;
|
|
16941
16957
|
return ReflectUtils.findAllMetadata(SUBSCRIBE_SWC_APP_MESSAGE_METADATA_KEY, constructor).flat();
|
|
@@ -17010,7 +17026,7 @@ var getActiveEntries = (inst) => inst.__swc_intervalIds ?? (inst.__swc_intervalI
|
|
|
17010
17026
|
function setInterval2(interval2, options = {}) {
|
|
17011
17027
|
return (target, propertyKey, descriptor) => {
|
|
17012
17028
|
const constructor = target.constructor;
|
|
17013
|
-
const normalizedOptions = { ...options, type: options.type ?? "
|
|
17029
|
+
const normalizedOptions = { ...options, type: options.type ?? "onConnected" };
|
|
17014
17030
|
let metaList = ReflectUtils.getOwnMetadata(SET_INTERVAL_METADATA_KEY, constructor);
|
|
17015
17031
|
if (!metaList) {
|
|
17016
17032
|
metaList = [];
|
|
@@ -17100,6 +17116,7 @@ var SetIntervalLifeCycler = class {
|
|
|
17100
17116
|
inst.__swc_intervalIds = [];
|
|
17101
17117
|
}
|
|
17102
17118
|
};
|
|
17119
|
+
var setIntervalReturnValue = (interval2, options = {}) => setInterval2(interval2, { ...options, type: "returnValue" });
|
|
17103
17120
|
|
|
17104
17121
|
// src/decorators/setTimeout.ts
|
|
17105
17122
|
var SET_TIMEOUT_METADATA_KEY = Symbol.for("simple-web-component:set-timeout");
|
|
@@ -17107,7 +17124,7 @@ var getActiveEntries2 = (inst) => inst.__swc_timeoutIds ?? (inst.__swc_timeoutId
|
|
|
17107
17124
|
function setTimeout2(delay, options = {}) {
|
|
17108
17125
|
return (target, propertyKey, descriptor) => {
|
|
17109
17126
|
const constructor = target.constructor;
|
|
17110
|
-
const normalizedOptions = { ...options, type: options.type ?? "
|
|
17127
|
+
const normalizedOptions = { ...options, type: options.type ?? "onConnected" };
|
|
17111
17128
|
let metaList = ReflectUtils.getOwnMetadata(SET_TIMEOUT_METADATA_KEY, constructor);
|
|
17112
17129
|
if (!metaList) {
|
|
17113
17130
|
metaList = [];
|
|
@@ -17200,6 +17217,7 @@ var SetTimeoutLifeCycler = class {
|
|
|
17200
17217
|
inst.__swc_timeoutIds = [];
|
|
17201
17218
|
}
|
|
17202
17219
|
};
|
|
17220
|
+
var setTimeoutReturnValue = (delay, options = {}) => setTimeout2(delay, { ...options, type: "returnValue" });
|
|
17203
17221
|
|
|
17204
17222
|
// src/decorators/requestAnimationFrame.ts
|
|
17205
17223
|
var REQUEST_ANIMATION_FRAME_METADATA_KEY = Symbol.for("simple-web-component:request-animation-frame");
|
|
@@ -17226,7 +17244,7 @@ var startFrameLoop = (win, entries, frameFn) => {
|
|
|
17226
17244
|
};
|
|
17227
17245
|
var applyRequestAnimationFrame = (options, target, propertyKey, descriptor) => {
|
|
17228
17246
|
const constructor = target.constructor;
|
|
17229
|
-
const normalizedOptions = { ...options, type: options.type ?? "
|
|
17247
|
+
const normalizedOptions = { ...options, type: options.type ?? "onConnected" };
|
|
17230
17248
|
let metaList = ReflectUtils.getOwnMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor);
|
|
17231
17249
|
if (!metaList) {
|
|
17232
17250
|
metaList = [];
|
|
@@ -17288,6 +17306,13 @@ var RequestAnimationFrameLifeCycler = class {
|
|
|
17288
17306
|
inst.__swc_requestAnimationFrameIds = [];
|
|
17289
17307
|
}
|
|
17290
17308
|
};
|
|
17309
|
+
function requestAnimationFrameReturnValue(optionsOrTarget, propertyKey, descriptor) {
|
|
17310
|
+
if (propertyKey !== void 0) {
|
|
17311
|
+
applyRequestAnimationFrame({ type: "returnValue" }, optionsOrTarget, propertyKey, descriptor);
|
|
17312
|
+
return;
|
|
17313
|
+
}
|
|
17314
|
+
return (target, propertyKey2, descriptor2) => applyRequestAnimationFrame({ ...optionsOrTarget ?? {}, type: "returnValue" }, target, propertyKey2, descriptor2);
|
|
17315
|
+
}
|
|
17291
17316
|
|
|
17292
17317
|
// src/decorators/eventMedia.ts
|
|
17293
17318
|
var EVENT_MEDIA_METADATA_KEY = Symbol.for("simple-web-component:event-media");
|
|
@@ -20434,7 +20459,7 @@ var SimstanceManager = class _SimstanceManager {
|
|
|
20434
20459
|
const paramTypes = ReflectUtils.getParameterTypes(target, targetKey) || [];
|
|
20435
20460
|
let injections = [];
|
|
20436
20461
|
const injects = getInject(target, targetKey);
|
|
20437
|
-
const loopCount = Math.max(paramTypes.length, parameterCount ?? 0);
|
|
20462
|
+
const loopCount = Math.max(paramTypes.length, parameterCount ?? 0, ...(injects ?? []).map((it) => it.index + 1));
|
|
20438
20463
|
injections = [];
|
|
20439
20464
|
for (let idx = 0; idx < loopCount; idx++) {
|
|
20440
20465
|
const token = paramTypes[idx];
|
|
@@ -22408,6 +22433,7 @@ var setSSRAttribute = (i) => {
|
|
|
22408
22433
|
i.setAttribute("swc-use-ssr", i._swcId ?? "");
|
|
22409
22434
|
};
|
|
22410
22435
|
var removeSSRAttribute = (i) => {
|
|
22436
|
+
if (isSSR(i)) i.__swc_ssrRoute ?? (i.__swc_ssrRoute = true);
|
|
22411
22437
|
i.removeAttribute("swc-use-ssr");
|
|
22412
22438
|
};
|
|
22413
22439
|
function SwcAppMixin(Base) {
|
|
@@ -22466,6 +22492,11 @@ function SwcAppMixin(Base) {
|
|
|
22466
22492
|
const routeChangeSubscribers = getSubscribeSwcAppRouteChangeMetadata(instance);
|
|
22467
22493
|
if (routeChangeSubscribers.length > 0) {
|
|
22468
22494
|
const state2 = routeStateOf(instance);
|
|
22495
|
+
const routeSig = JSON.stringify([re.path ?? "", re.search ?? ""]);
|
|
22496
|
+
if (ValidUtils2.isBrowser() && isSSR(instance)) instance.__swc_ssrRoute ?? (instance.__swc_ssrRoute = true);
|
|
22497
|
+
if (instance.__swc_ssrRoute === true) instance.__swc_ssrRoute = routeSig;
|
|
22498
|
+
const ssrPainted = instance.__swc_ssrRoute === routeSig;
|
|
22499
|
+
if (!ssrPainted) delete instance.__swc_ssrRoute;
|
|
22469
22500
|
let stopped = false;
|
|
22470
22501
|
for (const metadata of routeChangeSubscribers) {
|
|
22471
22502
|
if (phase !== "live" && (metadata.options?.trigger ?? "connected") !== phase) continue;
|
|
@@ -22484,7 +22515,7 @@ function SwcAppMixin(Base) {
|
|
|
22484
22515
|
const signature = match ? JSON.stringify([re.path ?? "", re.search ?? ""]) : "";
|
|
22485
22516
|
state2.set(methodName, match ? { matched: true, signature, pathData: match.pathData, pathDataAll: match.pathDataAll } : { matched: false, signature: "" });
|
|
22486
22517
|
const shouldRun = on === "match" ? !!match : on === "enter" ? !!match && !prev?.matched : on === "update" ? !!match && !!prev?.matched && prev.signature !== signature : on === "leave" ? !match && !!prev?.matched : false;
|
|
22487
|
-
if (stopped || !shouldRun || !instance[methodName]) continue;
|
|
22518
|
+
if (stopped || ssrPainted || !shouldRun || !instance[methodName]) continue;
|
|
22488
22519
|
const pathData = match ? match.pathData : prev?.pathData ?? {};
|
|
22489
22520
|
const pathDataAll = match ? match.pathDataAll : prev?.pathDataAll ?? {};
|
|
22490
22521
|
const filter = metadata.options?.filter;
|
|
@@ -24283,6 +24314,7 @@ export {
|
|
|
24283
24314
|
replaceChildrenSlot,
|
|
24284
24315
|
replaceChildrenTextSlot,
|
|
24285
24316
|
requestAnimationFrame,
|
|
24317
|
+
requestAnimationFrameReturnValue,
|
|
24286
24318
|
resizeObserver,
|
|
24287
24319
|
resizeObserverAll,
|
|
24288
24320
|
resizeObserverBeforeReturn,
|
|
@@ -24299,10 +24331,12 @@ export {
|
|
|
24299
24331
|
setClass,
|
|
24300
24332
|
setInterval2 as setInterval,
|
|
24301
24333
|
setIntervalBeforeReturn,
|
|
24334
|
+
setIntervalReturnValue,
|
|
24302
24335
|
setSSRAttribute,
|
|
24303
24336
|
setStyle,
|
|
24304
24337
|
setTimeout2 as setTimeout,
|
|
24305
24338
|
setTimeoutBeforeReturn,
|
|
24339
|
+
setTimeoutReturnValue,
|
|
24306
24340
|
skipIfEmpty,
|
|
24307
24341
|
skipIfExists,
|
|
24308
24342
|
skipIfSameTagPresent,
|
|
@@ -24313,6 +24347,8 @@ export {
|
|
|
24313
24347
|
styleLight,
|
|
24314
24348
|
styleShadow,
|
|
24315
24349
|
subscribeSwcAppMessage,
|
|
24350
|
+
subscribeSwcAppMessageBehavior,
|
|
24351
|
+
subscribeSwcAppMessageReplay,
|
|
24316
24352
|
subscribeSwcAppRouteChange,
|
|
24317
24353
|
subscribeSwcAppRouteChangeConnectedDone,
|
|
24318
24354
|
swcAppArticleTagName,
|