@next-core/runtime 1.38.2 → 1.39.0

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.
Files changed (170) hide show
  1. package/dist/cjs/CustomProcessors.js.map +1 -1
  2. package/dist/cjs/CustomTemplates.js.map +1 -1
  3. package/dist/cjs/Dialog.js.map +1 -1
  4. package/dist/cjs/Notification.js.map +1 -1
  5. package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
  6. package/dist/cjs/auth.js.map +1 -1
  7. package/dist/cjs/createRoot.js.map +1 -1
  8. package/dist/cjs/fetchByProvider.js.map +1 -1
  9. package/dist/cjs/getBasePath.js.map +1 -1
  10. package/dist/cjs/getPageInfo.js.map +1 -1
  11. package/dist/cjs/getRealValue.js.map +1 -1
  12. package/dist/cjs/getV2RuntimeFromDll.js.map +1 -1
  13. package/dist/cjs/handleHttpError.js.map +1 -1
  14. package/dist/cjs/history.js.map +1 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  17. package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
  18. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  19. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  20. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  21. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  22. package/dist/cjs/internal/FormRenderer/constants.js.map +1 -1
  23. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  24. package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -1
  25. package/dist/cjs/internal/FormRenderer/interfaces.js.map +1 -1
  26. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
  27. package/dist/cjs/internal/Renderer.js.map +1 -1
  28. package/dist/cjs/internal/RendererContext.js +59 -59
  29. package/dist/cjs/internal/RendererContext.js.map +1 -1
  30. package/dist/cjs/internal/Router.js +51 -51
  31. package/dist/cjs/internal/Router.js.map +1 -1
  32. package/dist/cjs/internal/Runtime.js +8 -30
  33. package/dist/cjs/internal/Runtime.js.map +1 -1
  34. package/dist/cjs/internal/abortController.js.map +1 -1
  35. package/dist/cjs/internal/bindListeners.js.map +1 -1
  36. package/dist/cjs/internal/compute/StoryboardFunctions.js.map +1 -1
  37. package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
  38. package/dist/cjs/internal/compute/WidgetI18n.js.map +1 -1
  39. package/dist/cjs/internal/compute/checkIf.js.map +1 -1
  40. package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
  41. package/dist/cjs/internal/compute/computeRealValue.js.map +1 -1
  42. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  43. package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
  44. package/dist/cjs/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  45. package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
  46. package/dist/cjs/internal/compute/getTracks.js.map +1 -1
  47. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  48. package/dist/cjs/internal/compute/markAsComputed.js.map +1 -1
  49. package/dist/cjs/internal/compute/setProperties.js.map +1 -1
  50. package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
  51. package/dist/cjs/internal/customizeColorTheme.js.map +1 -1
  52. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  53. package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
  54. package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
  55. package/dist/cjs/internal/data/resolveData.js.map +1 -1
  56. package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
  57. package/dist/cjs/internal/devtools.js.map +1 -1
  58. package/dist/cjs/internal/enums.js.map +1 -1
  59. package/dist/cjs/internal/fulfilStoryboard.js.map +1 -1
  60. package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
  61. package/dist/cjs/internal/historyExtended.js.map +1 -1
  62. package/dist/cjs/internal/i18n.js.map +1 -1
  63. package/dist/cjs/internal/injected.js.map +1 -1
  64. package/dist/cjs/internal/insertPreviewRoutes.js.map +1 -1
  65. package/dist/cjs/internal/interfaces.js.map +1 -1
  66. package/dist/cjs/internal/matchPath.js.map +1 -1
  67. package/dist/cjs/internal/matchRoutes.js.map +1 -1
  68. package/dist/cjs/internal/matchStoryboard.js.map +1 -1
  69. package/dist/cjs/internal/mediaQuery.js.map +1 -1
  70. package/dist/cjs/internal/mount.js.map +1 -1
  71. package/dist/cjs/internal/poll.js.map +1 -1
  72. package/dist/cjs/internal/proxyFactories.js.map +1 -1
  73. package/dist/cjs/internal/registerAppI18n.js.map +1 -1
  74. package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
  75. package/dist/cjs/internal/secret_internals.js.map +1 -1
  76. package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
  77. package/dist/cjs/internal/test_only.js.map +1 -1
  78. package/dist/cjs/isStrictMode.js.map +1 -1
  79. package/dist/cjs/setAppVariable.js.map +1 -1
  80. package/dist/cjs/setLoginStateCookie.js.map +1 -1
  81. package/dist/cjs/setUIVersion.js.map +1 -1
  82. package/dist/cjs/setWatermark.js.map +1 -1
  83. package/dist/cjs/themeAndMode.js.map +1 -1
  84. package/dist/esm/CustomProcessors.js +1 -2
  85. package/dist/esm/CustomProcessors.js.map +1 -1
  86. package/dist/esm/CustomTemplates.js +1 -2
  87. package/dist/esm/CustomTemplates.js.map +1 -1
  88. package/dist/esm/Dialog.js.map +1 -1
  89. package/dist/esm/Notification.js.map +1 -1
  90. package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
  91. package/dist/esm/auth.js.map +1 -1
  92. package/dist/esm/createRoot.js.map +1 -1
  93. package/dist/esm/fetchByProvider.js.map +1 -1
  94. package/dist/esm/getBasePath.js.map +1 -1
  95. package/dist/esm/getPageInfo.js.map +1 -1
  96. package/dist/esm/getRealValue.js.map +1 -1
  97. package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
  98. package/dist/esm/handleHttpError.js.map +1 -1
  99. package/dist/esm/history.js.map +1 -1
  100. package/dist/esm/index.js.map +1 -1
  101. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  102. package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
  103. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  104. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  105. package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  106. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  107. package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
  108. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  109. package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
  110. package/dist/esm/internal/FormRenderer/interfaces.js.map +1 -1
  111. package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
  112. package/dist/esm/internal/Renderer.js.map +1 -1
  113. package/dist/esm/internal/RendererContext.js +3 -3
  114. package/dist/esm/internal/RendererContext.js.map +1 -1
  115. package/dist/esm/internal/Router.js +3 -3
  116. package/dist/esm/internal/Router.js.map +1 -1
  117. package/dist/esm/internal/Runtime.js +5 -31
  118. package/dist/esm/internal/Runtime.js.map +1 -1
  119. package/dist/esm/internal/abortController.js.map +1 -1
  120. package/dist/esm/internal/bindListeners.js.map +1 -1
  121. package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
  122. package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
  123. package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
  124. package/dist/esm/internal/compute/checkIf.js.map +1 -1
  125. package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
  126. package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
  127. package/dist/esm/internal/compute/evaluate.js.map +1 -1
  128. package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
  129. package/dist/esm/internal/compute/getNextStateOfUseBrick.js.map +1 -1
  130. package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
  131. package/dist/esm/internal/compute/getTracks.js.map +1 -1
  132. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  133. package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
  134. package/dist/esm/internal/compute/setProperties.js.map +1 -1
  135. package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
  136. package/dist/esm/internal/customizeColorTheme.js.map +1 -1
  137. package/dist/esm/internal/data/DataStore.js.map +1 -1
  138. package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
  139. package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
  140. package/dist/esm/internal/data/resolveData.js.map +1 -1
  141. package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
  142. package/dist/esm/internal/devtools.js.map +1 -1
  143. package/dist/esm/internal/enums.js.map +1 -1
  144. package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
  145. package/dist/esm/internal/hasInstalledApp.js.map +1 -1
  146. package/dist/esm/internal/historyExtended.js.map +1 -1
  147. package/dist/esm/internal/i18n.js.map +1 -1
  148. package/dist/esm/internal/injected.js.map +1 -1
  149. package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
  150. package/dist/esm/internal/interfaces.js.map +1 -1
  151. package/dist/esm/internal/matchPath.js.map +1 -1
  152. package/dist/esm/internal/matchRoutes.js.map +1 -1
  153. package/dist/esm/internal/matchStoryboard.js.map +1 -1
  154. package/dist/esm/internal/mediaQuery.js.map +1 -1
  155. package/dist/esm/internal/mount.js.map +1 -1
  156. package/dist/esm/internal/poll.js.map +1 -1
  157. package/dist/esm/internal/proxyFactories.js.map +1 -1
  158. package/dist/esm/internal/registerAppI18n.js.map +1 -1
  159. package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
  160. package/dist/esm/internal/secret_internals.js.map +1 -1
  161. package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
  162. package/dist/esm/internal/test_only.js.map +1 -1
  163. package/dist/esm/isStrictMode.js.map +1 -1
  164. package/dist/esm/setAppVariable.js.map +1 -1
  165. package/dist/esm/setLoginStateCookie.js.map +1 -1
  166. package/dist/esm/setUIVersion.js.map +1 -1
  167. package/dist/esm/setWatermark.js.map +1 -1
  168. package/dist/esm/themeAndMode.js.map +1 -1
  169. package/dist/types/tsdoc-metadata.json +1 -1
  170. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","_markAsComputed","_lodash","_isStrictMode","cache","Map","resolveData","resolveConf","runtimeContext","options","useProvider","method","args","onReject","provider","legacyProvider","field","legacyField","Error","hasLegacyField","undefined","strict","isStrictMode","warnAboutStrictMode","providerBrick","actualArgs","Promise","all","getProviderBrick","asyncComputeRealValue","renderId","stale","_internalApiGetRenderId","promise","resolveByProvider","transform","data","value","get","markAsComputed","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi","finalArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { _internalApiGetRenderId, hooks } from \"../Runtime.js\";\nimport { markAsComputed } from \"../compute/markAsComputed.js\";\nimport { get } from \"lodash\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n renderId?: string;\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const { provider: legacyProvider, field: legacyField } = resolveConf as {\n provider?: string;\n field?: string | string[];\n };\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const hasLegacyField = legacyField !== null && legacyField !== undefined;\n if (hasLegacyField) {\n const strict = isStrictMode();\n warnAboutStrictMode(strict, \"`resolve.field`\");\n // istanbul ignore next\n if (strict) {\n throw new Error(\"Using deprecated `resolve.field`\");\n }\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n // `clearResolveCache` maybe cleared during the above promise being\n // fulfilled, so we manually mark it as stale for this case.\n const renderId = options?.renderId;\n const stale = !!renderId && renderId !== _internalApiGetRenderId();\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args,\n stale\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n const value = await promise;\n data = hasLegacyField ? get(value, legacyField) : value;\n // The fetched data and its inner objects should never be *injected* again.\n markAsComputed(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[],\n stale?: boolean\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick[method](...finalArgs);\n })();\n\n if (!stale) {\n cache.set(cacheKey, promise);\n }\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","_markAsComputed","_lodash","_isStrictMode","cache","Map","resolveData","resolveConf","runtimeContext","options","useProvider","method","args","onReject","provider","legacyProvider","field","legacyField","Error","hasLegacyField","undefined","strict","isStrictMode","warnAboutStrictMode","providerBrick","actualArgs","Promise","all","getProviderBrick","asyncComputeRealValue","renderId","stale","_internalApiGetRenderId","promise","resolveByProvider","transform","data","value","get","markAsComputed","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi","finalArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { _internalApiGetRenderId, hooks } from \"../Runtime.js\";\nimport { markAsComputed } from \"../compute/markAsComputed.js\";\nimport { get } from \"lodash\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n renderId?: string;\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const { provider: legacyProvider, field: legacyField } = resolveConf as {\n provider?: string;\n field?: string | string[];\n };\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const hasLegacyField = legacyField !== null && legacyField !== undefined;\n if (hasLegacyField) {\n const strict = isStrictMode();\n warnAboutStrictMode(strict, \"`resolve.field`\");\n // istanbul ignore next\n if (strict) {\n throw new Error(\"Using deprecated `resolve.field`\");\n }\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n // `clearResolveCache` maybe cleared during the above promise being\n // fulfilled, so we manually mark it as stale for this case.\n const renderId = options?.renderId;\n const stale = !!renderId && renderId !== _internalApiGetRenderId();\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args,\n stale\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n const value = await promise;\n data = hasLegacyField ? get(value, legacyField) : value;\n // The fetched data and its inner objects should never be *injected* again.\n markAsComputed(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[],\n stale?: boolean\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick[method](...finalArgs);\n })();\n\n if (!stale) {\n cache.set(cacheKey, promise);\n }\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveDataStore.js","names":["_storyboard","require","resolveDataStore","contextConfs","resolveContext","keyword","strict","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","_pendingDeps$get","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","_pendingDeps$get2","add","resolved","delete","left","Error","scheduleNext","scheduleAsSerial","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","data","if","value","collectMemberUsage","legacyTplStats","prop","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\",\n strict?: boolean\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(\n contextConfs,\n keyword,\n strict\n );\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\",\n strict?: boolean\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const data = [contextConf.if, contextConf.value, contextConf.resolve];\n const stats = collectMemberUsage(data, keyword);\n if (!strict && keyword === \"STATE\") {\n const legacyTplStats = collectMemberUsage(data, \"TPL\");\n // Merge stats with legacyTplStats\n for (const prop of legacyTplStats.usedProperties) {\n stats.usedProperties.add(prop);\n }\n if (legacyTplStats.hasNonStaticUsage) {\n stats.hasNonStaticUsage = true;\n }\n }\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resolveDataStore.js","names":["_storyboard","require","resolveDataStore","contextConfs","resolveContext","keyword","strict","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","_pendingDeps$get","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","_pendingDeps$get2","add","resolved","delete","left","Error","scheduleNext","scheduleAsSerial","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","data","if","value","collectMemberUsage","legacyTplStats","prop","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\",\n strict?: boolean\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(\n contextConfs,\n keyword,\n strict\n );\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\",\n strict?: boolean\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const data = [contextConf.if, contextConf.value, contextConf.resolve];\n const stats = collectMemberUsage(data, keyword);\n if (!strict && keyword === \"STATE\") {\n const legacyTplStats = collectMemberUsage(data, \"TPL\");\n // Merge stats with legacyTplStats\n for (const prop of legacyTplStats.usedProperties) {\n stats.usedProperties.add(prop);\n }\n if (legacyTplStats.hasNonStaticUsage) {\n stats.hasNonStaticUsage = true;\n }\n }\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","exports","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","data","source","active","panel","__BRICK_NEXT_DEVTOOLS_HOOK__"],"sources":["../../../src/internal/devtools.ts"],"sourcesContent":["export const MESSAGE_SOURCE_PANEL = \"brick-next-devtools-panel\";\nexport const FRAME_ACTIVE_CHANGE = \"devtools-frame-active-change\";\nexport const PANEL_CHANGE = \"devtools-panel-change\";\n\ninterface DevtoolsHookContainer {\n __BRICK_NEXT_DEVTOOLS_HOOK__?: DevtoolsHook;\n}\n\ninterface DevtoolsHook {\n emit: (message: unknown) => void;\n}\n\ntype DevtoolsMessagePayload = FrameActiveChangePayload | PanelChangePayload;\n\ninterface FrameActiveChangePayload {\n type: typeof FRAME_ACTIVE_CHANGE;\n active: boolean;\n panel: PanelType;\n}\n\ntype PanelType = \"Bricks\" | \"Evaluations\" | \"Transformations\";\n\ninterface PanelChangePayload {\n type: typeof PANEL_CHANGE;\n panel: PanelType;\n}\n\nlet frameIsActive = true;\nlet selectedPanel: PanelType;\n\nexport function devtoolsHookEmit(type: string, payload?: unknown): void {\n const devtools = getDevHook();\n if (\n !devtools ||\n (type === \"evaluation\" &&\n !(frameIsActive && (!selectedPanel || selectedPanel === \"Evaluations\")))\n ) {\n // Ignore messages if current devtools panel is not relevant.\n return;\n }\n\n const emit = (): void => {\n devtools.emit?.({\n type,\n payload,\n });\n };\n\n // Try to emit only in idle time.\n // istanbul ignore next\n if (typeof window.requestIdleCallback === \"function\") {\n window.requestIdleCallback(emit);\n } else {\n setTimeout(emit, 0);\n }\n}\n\nexport function listenDevtoolsEagerly(): void {\n window.addEventListener(\"message\", ({ data }: MessageEvent): void => {\n if (data?.source !== MESSAGE_SOURCE_PANEL) {\n return;\n }\n const payload: DevtoolsMessagePayload = data.payload;\n switch (payload?.type) {\n case FRAME_ACTIVE_CHANGE: {\n frameIsActive = payload.active;\n break;\n }\n case PANEL_CHANGE: {\n selectedPanel = payload.panel;\n break;\n }\n }\n });\n}\n\nexport function getDevHook(): DevtoolsHook | undefined {\n return (window as DevtoolsHookContainer).__BRICK_NEXT_DEVTOOLS_HOOK__;\n}\n"],"mappings":";;;;;;;;;AAAO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,2BAA2B;AACxD,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,8BAA8B;AAC1D,MAAMC,YAAY,GAAAF,OAAA,CAAAE,YAAA,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAErB,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,MAAMC,QAAQ,GAAGC,UAAU,CAAC,CAAC;EAC7B,IACE,CAACD,QAAQ,IACRF,IAAI,KAAK,YAAY,IACpB,EAAEH,aAAa,KAAK,CAACC,aAAa,IAAIA,aAAa,KAAK,aAAa,CAAC,CAAE,EAC1E;IACA;IACA;EACF;EAEA,MAAMM,IAAI,GAAGA,CAAA,KAAY;IAAA,IAAAC,cAAA;IACvB,CAAAA,cAAA,GAAAH,QAAQ,CAACE,IAAI,cAAAC,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAJ,QAAQ,EAAQ;MACdF,IAAI;MACJC;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;EACA;EACA,IAAI,OAAOM,MAAM,CAACC,mBAAmB,KAAK,UAAU,EAAE;IACpDD,MAAM,CAACC,mBAAmB,CAACJ,IAAI,CAAC;EAClC,CAAC,MAAM;IACLK,UAAU,CAACL,IAAI,EAAE,CAAC,CAAC;EACrB;AACF;AAEO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAAEC;EAAmB,CAAC,KAAW;IACnE,IAAI,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,MAAMQ,OAA+B,GAAGW,IAAI,CAACX,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACa,MAAM;UAC9B;QACF;MACA,KAAKlB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACc,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEO,SAASZ,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BS,4BAA4B;AACvE"}
1
+ {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","exports","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","data","source","active","panel","__BRICK_NEXT_DEVTOOLS_HOOK__"],"sources":["../../../src/internal/devtools.ts"],"sourcesContent":["export const MESSAGE_SOURCE_PANEL = \"brick-next-devtools-panel\";\nexport const FRAME_ACTIVE_CHANGE = \"devtools-frame-active-change\";\nexport const PANEL_CHANGE = \"devtools-panel-change\";\n\ninterface DevtoolsHookContainer {\n __BRICK_NEXT_DEVTOOLS_HOOK__?: DevtoolsHook;\n}\n\ninterface DevtoolsHook {\n emit: (message: unknown) => void;\n}\n\ntype DevtoolsMessagePayload = FrameActiveChangePayload | PanelChangePayload;\n\ninterface FrameActiveChangePayload {\n type: typeof FRAME_ACTIVE_CHANGE;\n active: boolean;\n panel: PanelType;\n}\n\ntype PanelType = \"Bricks\" | \"Evaluations\" | \"Transformations\";\n\ninterface PanelChangePayload {\n type: typeof PANEL_CHANGE;\n panel: PanelType;\n}\n\nlet frameIsActive = true;\nlet selectedPanel: PanelType;\n\nexport function devtoolsHookEmit(type: string, payload?: unknown): void {\n const devtools = getDevHook();\n if (\n !devtools ||\n (type === \"evaluation\" &&\n !(frameIsActive && (!selectedPanel || selectedPanel === \"Evaluations\")))\n ) {\n // Ignore messages if current devtools panel is not relevant.\n return;\n }\n\n const emit = (): void => {\n devtools.emit?.({\n type,\n payload,\n });\n };\n\n // Try to emit only in idle time.\n // istanbul ignore next\n if (typeof window.requestIdleCallback === \"function\") {\n window.requestIdleCallback(emit);\n } else {\n setTimeout(emit, 0);\n }\n}\n\nexport function listenDevtoolsEagerly(): void {\n window.addEventListener(\"message\", ({ data }: MessageEvent): void => {\n if (data?.source !== MESSAGE_SOURCE_PANEL) {\n return;\n }\n const payload: DevtoolsMessagePayload = data.payload;\n switch (payload?.type) {\n case FRAME_ACTIVE_CHANGE: {\n frameIsActive = payload.active;\n break;\n }\n case PANEL_CHANGE: {\n selectedPanel = payload.panel;\n break;\n }\n }\n });\n}\n\nexport function getDevHook(): DevtoolsHook | undefined {\n return (window as DevtoolsHookContainer).__BRICK_NEXT_DEVTOOLS_HOOK__;\n}\n"],"mappings":";;;;;;;;;AAAO,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,2BAA2B;AACxD,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,8BAA8B;AAC1D,MAAMC,YAAY,GAAAF,OAAA,CAAAE,YAAA,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAErB,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,MAAMC,QAAQ,GAAGC,UAAU,CAAC,CAAC;EAC7B,IACE,CAACD,QAAQ,IACRF,IAAI,KAAK,YAAY,IACpB,EAAEH,aAAa,KAAK,CAACC,aAAa,IAAIA,aAAa,KAAK,aAAa,CAAC,CAAE,EAC1E;IACA;IACA;EACF;EAEA,MAAMM,IAAI,GAAGA,CAAA,KAAY;IAAA,IAAAC,cAAA;IACvB,CAAAA,cAAA,GAAAH,QAAQ,CAACE,IAAI,cAAAC,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAJ,QAAQ,EAAQ;MACdF,IAAI;MACJC;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;EACA;EACA,IAAI,OAAOM,MAAM,CAACC,mBAAmB,KAAK,UAAU,EAAE;IACpDD,MAAM,CAACC,mBAAmB,CAACJ,IAAI,CAAC;EAClC,CAAC,MAAM;IACLK,UAAU,CAACL,IAAI,EAAE,CAAC,CAAC;EACrB;AACF;AAEO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAAEC;EAAmB,CAAC,KAAW;IACnE,IAAI,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,MAAMQ,OAA+B,GAAGW,IAAI,CAACX,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACa,MAAM;UAC9B;QACF;MACA,KAAKlB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACc,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEO,SAASZ,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BS,4BAA4B;AACvE","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n PLACEHOLDER = 3,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
1
+ {"version":3,"file":"enums.js","names":["RenderTag","exports"],"sources":["../../../src/internal/enums.ts"],"sourcesContent":["export enum RenderTag {\n ROOT = 1,\n BRICK = 2,\n PLACEHOLDER = 3,\n}\n"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"fulfilStoryboard.js","names":["_Runtime","require","_registerAppI18n","fulfilStoryboard","storyboard","$$fulfilled","$$fulfilling","doFulfilStoryboard","_hooks$fulfilStoryboa","hooks","call","registerAppI18n","Object","assign"],"sources":["../../../src/internal/fulfilStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { hooks } from \"./Runtime.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport async function fulfilStoryboard(storyboard: RuntimeStoryboard) {\n if (storyboard.$$fulfilled) {\n return;\n }\n if (!storyboard.$$fulfilling) {\n storyboard.$$fulfilling = doFulfilStoryboard(storyboard);\n }\n return storyboard.$$fulfilling;\n}\n\nasync function doFulfilStoryboard(storyboard: RuntimeStoryboard) {\n await hooks?.fulfilStoryboard?.(storyboard);\n registerAppI18n(storyboard);\n Object.assign(storyboard, {\n $$fulfilled: true,\n $$fulfilling: null,\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEO,eAAeE,gBAAgBA,CAACC,UAA6B,EAAE;EACpE,IAAIA,UAAU,CAACC,WAAW,EAAE;IAC1B;EACF;EACA,IAAI,CAACD,UAAU,CAACE,YAAY,EAAE;IAC5BF,UAAU,CAACE,YAAY,GAAGC,kBAAkB,CAACH,UAAU,CAAC;EAC1D;EACA,OAAOA,UAAU,CAACE,YAAY;AAChC;AAEA,eAAeC,kBAAkBA,CAACH,UAA6B,EAAE;EAAA,IAAAI,qBAAA;EAC/D,OAAMC,cAAK,aAALA,cAAK,gBAAAD,qBAAA,GAALC,cAAK,CAAEN,gBAAgB,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAAE,IAAA,CAAAD,cAAK,EAAqBL,UAAU,CAAC;EAC3C,IAAAO,gCAAe,EAACP,UAAU,CAAC;EAC3BQ,MAAM,CAACC,MAAM,CAACT,UAAU,EAAE;IACxBC,WAAW,EAAE,IAAI;IACjBC,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"fulfilStoryboard.js","names":["_Runtime","require","_registerAppI18n","fulfilStoryboard","storyboard","$$fulfilled","$$fulfilling","doFulfilStoryboard","_hooks$fulfilStoryboa","hooks","call","registerAppI18n","Object","assign"],"sources":["../../../src/internal/fulfilStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { hooks } from \"./Runtime.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport async function fulfilStoryboard(storyboard: RuntimeStoryboard) {\n if (storyboard.$$fulfilled) {\n return;\n }\n if (!storyboard.$$fulfilling) {\n storyboard.$$fulfilling = doFulfilStoryboard(storyboard);\n }\n return storyboard.$$fulfilling;\n}\n\nasync function doFulfilStoryboard(storyboard: RuntimeStoryboard) {\n await hooks?.fulfilStoryboard?.(storyboard);\n registerAppI18n(storyboard);\n Object.assign(storyboard, {\n $$fulfilled: true,\n $$fulfilling: null,\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEO,eAAeE,gBAAgBA,CAACC,UAA6B,EAAE;EACpE,IAAIA,UAAU,CAACC,WAAW,EAAE;IAC1B;EACF;EACA,IAAI,CAACD,UAAU,CAACE,YAAY,EAAE;IAC5BF,UAAU,CAACE,YAAY,GAAGC,kBAAkB,CAACH,UAAU,CAAC;EAC1D;EACA,OAAOA,UAAU,CAACE,YAAY;AAChC;AAEA,eAAeC,kBAAkBA,CAACH,UAA6B,EAAE;EAAA,IAAAI,qBAAA;EAC/D,OAAMC,cAAK,aAALA,cAAK,gBAAAD,qBAAA,GAALC,cAAK,CAAEN,gBAAgB,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAAE,IAAA,CAAAD,cAAK,EAAqBL,UAAU,CAAC;EAC3C,IAAAO,gCAAe,EAACP,UAAU,CAAC;EAC3BQ,MAAM,CAACC,MAAM,CAACT,UAAU,EAAE;IACxBC,WAAW,EAAE,IAAI;IACjBC,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"hasInstalledApp.js","names":["_compareVersions","require","_Runtime","hasInstalledApp","appId","matchVersion","app","_internalApiGetAppInBootstrapData","hooks","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","compare","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAG,IAAAC,0CAAiC,EAACH,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIE,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,kBAAkB,EAAE;IACrCH,GAAG,GAAGE,cAAK,CAACC,kBAAkB,CAACC,aAAa,CAACN,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACK,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACN,YAAY,IAAI,CAACC,GAAG,CAACM,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGR,YAAY,CAACS,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,CAAE,0BAAyBV,YAAa,EAAC,CAAC;IAC/D;IACA,OAAO,IAAAW,wBAAO,EACZV,GAAG,CAACM,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CACX,CAAC;EACH,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;EACtB;EACA,OAAO,KAAK;AACd"}
1
+ {"version":3,"file":"hasInstalledApp.js","names":["_compareVersions","require","_Runtime","hasInstalledApp","appId","matchVersion","app","_internalApiGetAppInBootstrapData","hooks","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","compare","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAG,IAAAC,0CAAiC,EAACH,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIE,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,kBAAkB,EAAE;IACrCH,GAAG,GAAGE,cAAK,CAACC,kBAAkB,CAACC,aAAa,CAACN,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACK,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACN,YAAY,IAAI,CAACC,GAAG,CAACM,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGR,YAAY,CAACS,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,CAAE,0BAAyBV,YAAa,EAAC,CAAC;IAC/D;IACA,OAAO,IAAAW,wBAAO,EACZV,GAAG,CAACM,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CACX,CAAC;EACH,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;EACtB;EACA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"historyExtended.js","names":["_history","require","_getBasePath","_Runtime","_matchStoryboard","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","extraQuery","clear","keepHash","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","undefined","set","toString","hash","pushAnchor","notify","reload","noIncremental","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","parsePath","startsWith","isOutsideApp","_internalApiMatchStoryboard","getBasePath","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n // Do not use incremental sub routes\n noIncremental: true,\n },\n },\n undefined,\n callback\n );\n }\n\n let blockMessage: string | undefined;\n\n function setBlockMessage(message: string | undefined): void {\n blockMessage = message;\n }\n\n function getBlockMessage(): string | undefined {\n return blockMessage;\n }\n\n function unblock(): void {\n blockMessage = undefined;\n }\n\n return {\n pushQuery: updateQueryFactory(\"push\"),\n replaceQuery: updateQueryFactory(\"replace\"),\n pushAnchor: pushAnchor,\n reload,\n setBlockMessage,\n getBlockMessage,\n unblock,\n ...historyOverridden({ ...browserHistory, push, replace }),\n };\n}\n\n/**\n * Override history for standalone micro apps.\n *\n * when `push` or `replace` to other apps, force page refresh.\n */\nfunction historyOverridden(\n browserHistory: History<NextHistoryState> &\n Pick<ExtendedHistory, \"push\" | \"replace\">\n): Pick<ExtendedHistory, \"push\" | \"replace\"> {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n function updateFactory(method: \"push\" | \"replace\"): ExtendedHistory[\"push\"] {\n return function update(path, state?, callback?) {\n let pathname: string | undefined;\n const pathIsString = typeof path === \"string\";\n if (pathIsString) {\n pathname = parsePath(path).pathname;\n } else {\n pathname = path.pathname;\n }\n\n // When history.push or history.replace is performing with an absolute pathname,\n // force load the target page when it is a page of an outside app.\n if (\n typeof pathname === \"string\" &&\n pathname.startsWith(\"/\") &&\n isOutsideApp(_internalApiMatchStoryboard(pathname))\n ) {\n // Going to outside apps.\n return location[method === \"push\" ? \"assign\" : \"replace\"](\n pathIsString\n ? getBasePath() + path.substring(1)\n : browserHistory.createHref(\n path as LocationDescriptorObject<NextHistoryState>\n )\n );\n }\n\n return (method === \"push\" ? originalPush : originalReplace)(\n path as string,\n state,\n callback\n );\n };\n }\n return {\n push: updateFactory(\"push\"),\n replace: updateFactory(\"replace\"),\n };\n}\n\nexport interface NextHistoryState {\n notify?: boolean;\n from?: LocationDescriptor<NextHistoryState>;\n noIncremental?: boolean;\n}\n\n/**\n * 扩展的系统会话对象。\n */\nexport interface ExtendedHistory {\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,往浏览器会话历史栈中推入一条新记录。\n */\n pushQuery: UpdateQueryFunction;\n\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,替换浏览器会话历史栈中最新的一条记录。\n */\n replaceQuery: UpdateQueryFunction;\n\n /** {@inheritDoc UpdateAnchorFunction} */\n pushAnchor: UpdateAnchorFunction;\n\n /** 重载当前会话,即触发页面重新渲染。与 location.reload() 不同,它不会触发浏览器页面的重载。 */\n reload: (callback?: (blocked: boolean) => void) => void;\n\n /** @internal */\n setBlockMessage: (message: string | undefined) => void;\n\n /** @internal */\n getBlockMessage: () => string | undefined;\n\n /** 取消之前设置的阻止页面离开信息的设置。 */\n unblock: () => void;\n\n /** 推入一条记录。*/\n push: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n\n /** 替换一条记录。*/\n replace: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n}\n\n/**\n * 更新指定的 query 参数。\n *\n * @param query - 要更新的 query 参数。\n * @param options - 选项。\n */\nexport type UpdateQueryFunction = (\n query: Record<string, unknown>,\n options?: UpdateQueryOptions,\n callback?: (blocked: boolean) => void\n) => void;\n\n/** 更新 query 参数时的选项 */\nexport interface UpdateQueryOptions extends NextHistoryState {\n /** 额外要更新的 query 参数。 */\n extraQuery?: Record<string, unknown>;\n /** 是否同时清除当前的所有其它 query 参数。 */\n clear?: boolean;\n /** 是否保留当前 hash 参数。 */\n keepHash?: boolean;\n}\n\n/**\n * 设置指定的 anchor (URL hash)地址,此方法默认不会触发页面重新渲染。\n * 往浏览器会话历史栈中推入一条新记录。\n *\n * @param hash - Hash 地址。\n * @param state - 会话状态设置。\n */\nexport type UpdateAnchorFunction = (\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n) => void;\n"],"mappings":"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"}
1
+ {"version":3,"file":"historyExtended.js","names":["_history","require","_getBasePath","_Runtime","_matchStoryboard","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","extraQuery","clear","keepHash","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","undefined","set","toString","hash","pushAnchor","notify","reload","noIncremental","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","parsePath","startsWith","isOutsideApp","_internalApiMatchStoryboard","getBasePath","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n // Do not use incremental sub routes\n noIncremental: true,\n },\n },\n undefined,\n callback\n );\n }\n\n let blockMessage: string | undefined;\n\n function setBlockMessage(message: string | undefined): void {\n blockMessage = message;\n }\n\n function getBlockMessage(): string | undefined {\n return blockMessage;\n }\n\n function unblock(): void {\n blockMessage = undefined;\n }\n\n return {\n pushQuery: updateQueryFactory(\"push\"),\n replaceQuery: updateQueryFactory(\"replace\"),\n pushAnchor: pushAnchor,\n reload,\n setBlockMessage,\n getBlockMessage,\n unblock,\n ...historyOverridden({ ...browserHistory, push, replace }),\n };\n}\n\n/**\n * Override history for standalone micro apps.\n *\n * when `push` or `replace` to other apps, force page refresh.\n */\nfunction historyOverridden(\n browserHistory: History<NextHistoryState> &\n Pick<ExtendedHistory, \"push\" | \"replace\">\n): Pick<ExtendedHistory, \"push\" | \"replace\"> {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n function updateFactory(method: \"push\" | \"replace\"): ExtendedHistory[\"push\"] {\n return function update(path, state?, callback?) {\n let pathname: string | undefined;\n const pathIsString = typeof path === \"string\";\n if (pathIsString) {\n pathname = parsePath(path).pathname;\n } else {\n pathname = path.pathname;\n }\n\n // When history.push or history.replace is performing with an absolute pathname,\n // force load the target page when it is a page of an outside app.\n if (\n typeof pathname === \"string\" &&\n pathname.startsWith(\"/\") &&\n isOutsideApp(_internalApiMatchStoryboard(pathname))\n ) {\n // Going to outside apps.\n return location[method === \"push\" ? \"assign\" : \"replace\"](\n pathIsString\n ? getBasePath() + path.substring(1)\n : browserHistory.createHref(\n path as LocationDescriptorObject<NextHistoryState>\n )\n );\n }\n\n return (method === \"push\" ? originalPush : originalReplace)(\n path as string,\n state,\n callback\n );\n };\n }\n return {\n push: updateFactory(\"push\"),\n replace: updateFactory(\"replace\"),\n };\n}\n\nexport interface NextHistoryState {\n notify?: boolean;\n from?: LocationDescriptor<NextHistoryState>;\n noIncremental?: boolean;\n}\n\n/**\n * 扩展的系统会话对象。\n */\nexport interface ExtendedHistory {\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,往浏览器会话历史栈中推入一条新记录。\n */\n pushQuery: UpdateQueryFunction;\n\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,替换浏览器会话历史栈中最新的一条记录。\n */\n replaceQuery: UpdateQueryFunction;\n\n /** {@inheritDoc UpdateAnchorFunction} */\n pushAnchor: UpdateAnchorFunction;\n\n /** 重载当前会话,即触发页面重新渲染。与 location.reload() 不同,它不会触发浏览器页面的重载。 */\n reload: (callback?: (blocked: boolean) => void) => void;\n\n /** @internal */\n setBlockMessage: (message: string | undefined) => void;\n\n /** @internal */\n getBlockMessage: () => string | undefined;\n\n /** 取消之前设置的阻止页面离开信息的设置。 */\n unblock: () => void;\n\n /** 推入一条记录。*/\n push: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n\n /** 替换一条记录。*/\n replace: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n}\n\n/**\n * 更新指定的 query 参数。\n *\n * @param query - 要更新的 query 参数。\n * @param options - 选项。\n */\nexport type UpdateQueryFunction = (\n query: Record<string, unknown>,\n options?: UpdateQueryOptions,\n callback?: (blocked: boolean) => void\n) => void;\n\n/** 更新 query 参数时的选项 */\nexport interface UpdateQueryOptions extends NextHistoryState {\n /** 额外要更新的 query 参数。 */\n extraQuery?: Record<string, unknown>;\n /** 是否同时清除当前的所有其它 query 参数。 */\n clear?: boolean;\n /** 是否保留当前 hash 参数。 */\n keepHash?: boolean;\n}\n\n/**\n * 设置指定的 anchor (URL hash)地址,此方法默认不会触发页面重新渲染。\n * 往浏览器会话历史栈中推入一条新记录。\n *\n * @param hash - Hash 地址。\n * @param state - 会话状态设置。\n */\nexport type UpdateAnchorFunction = (\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n) => void;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","names":["K","exports","en","REQUEST_FAILED","SOMETHING_WENT_WRONG","LOGIN_TIMEOUT_MESSAGE","NETWORK_ERROR","zh","NS","locales"],"sources":["../../../src/internal/i18n.ts"],"sourcesContent":["export enum K {\n REQUEST_FAILED = \"REQUEST_FAILED\",\n SOMETHING_WENT_WRONG = \"SOMETHING_WENT_WRONG\",\n LOGIN_TIMEOUT_MESSAGE = \"LOGIN_TIMEOUT_MESSAGE\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n}\n\nconst en: Locale = {\n [K.REQUEST_FAILED]: \"Request Failed\",\n [K.SOMETHING_WENT_WRONG]: \"Something went wrong!\",\n [K.LOGIN_TIMEOUT_MESSAGE]:\n \"You haven't logged in or your login session has expired. Login right now?\",\n [K.NETWORK_ERROR]: \"Network error, please check your network.\",\n};\n\nconst zh: Locale = {\n [K.REQUEST_FAILED]: \"请求失败\",\n [K.SOMETHING_WENT_WRONG]: \"出现了一些问题!\",\n [K.LOGIN_TIMEOUT_MESSAGE]: \"您还未登录或登录信息已过期,现在重新登录?\",\n [K.NETWORK_ERROR]: \"网络错误,请检查您的网络连接。\",\n};\n\nexport const NS = \"core/runtime\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n"],"mappings":";;;;;;IAAYA,CAAC,GAAAC,OAAA,CAAAD,CAAA,0BAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAAA,OAADA,CAAC;AAAA;AAOb,MAAME,EAAU,GAAG;EACjB,CAACF,CAAC,CAACG,cAAc,GAAG,gBAAgB;EACpC,CAACH,CAAC,CAACI,oBAAoB,GAAG,uBAAuB;EACjD,CAACJ,CAAC,CAACK,qBAAqB,GACtB,2EAA2E;EAC7E,CAACL,CAAC,CAACM,aAAa,GAAG;AACrB,CAAC;AAED,MAAMC,EAAU,GAAG;EACjB,CAACP,CAAC,CAACG,cAAc,GAAG,MAAM;EAC1B,CAACH,CAAC,CAACI,oBAAoB,GAAG,UAAU;EACpC,CAACJ,CAAC,CAACK,qBAAqB,GAAG,uBAAuB;EAClD,CAACL,CAAC,CAACM,aAAa,GAAG;AACrB,CAAC;AAEM,MAAME,EAAE,GAAAP,OAAA,CAAAO,EAAA,GAAG,cAAc;AAEzB,MAAMC,OAAO,GAAAR,OAAA,CAAAQ,OAAA,GAAG;EAAEP,EAAE;EAAEK;AAAG,CAAC"}
1
+ {"version":3,"file":"i18n.js","names":["K","exports","en","REQUEST_FAILED","SOMETHING_WENT_WRONG","LOGIN_TIMEOUT_MESSAGE","NETWORK_ERROR","zh","NS","locales"],"sources":["../../../src/internal/i18n.ts"],"sourcesContent":["export enum K {\n REQUEST_FAILED = \"REQUEST_FAILED\",\n SOMETHING_WENT_WRONG = \"SOMETHING_WENT_WRONG\",\n LOGIN_TIMEOUT_MESSAGE = \"LOGIN_TIMEOUT_MESSAGE\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n}\n\nconst en: Locale = {\n [K.REQUEST_FAILED]: \"Request Failed\",\n [K.SOMETHING_WENT_WRONG]: \"Something went wrong!\",\n [K.LOGIN_TIMEOUT_MESSAGE]:\n \"You haven't logged in or your login session has expired. Login right now?\",\n [K.NETWORK_ERROR]: \"Network error, please check your network.\",\n};\n\nconst zh: Locale = {\n [K.REQUEST_FAILED]: \"请求失败\",\n [K.SOMETHING_WENT_WRONG]: \"出现了一些问题!\",\n [K.LOGIN_TIMEOUT_MESSAGE]: \"您还未登录或登录信息已过期,现在重新登录?\",\n [K.NETWORK_ERROR]: \"网络错误,请检查您的网络连接。\",\n};\n\nexport const NS = \"core/runtime\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n"],"mappings":";;;;;;IAAYA,CAAC,GAAAC,OAAA,CAAAD,CAAA,0BAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAADA,CAAC;EAAA,OAADA,CAAC;AAAA;AAOb,MAAME,EAAU,GAAG;EACjB,CAACF,CAAC,CAACG,cAAc,GAAG,gBAAgB;EACpC,CAACH,CAAC,CAACI,oBAAoB,GAAG,uBAAuB;EACjD,CAACJ,CAAC,CAACK,qBAAqB,GACtB,2EAA2E;EAC7E,CAACL,CAAC,CAACM,aAAa,GAAG;AACrB,CAAC;AAED,MAAMC,EAAU,GAAG;EACjB,CAACP,CAAC,CAACG,cAAc,GAAG,MAAM;EAC1B,CAACH,CAAC,CAACI,oBAAoB,GAAG,UAAU;EACpC,CAACJ,CAAC,CAACK,qBAAqB,GAAG,uBAAuB;EAClD,CAACL,CAAC,CAACM,aAAa,GAAG;AACrB,CAAC;AAEM,MAAME,EAAE,GAAAP,OAAA,CAAAO,EAAA,GAAG,cAAc;AAEzB,MAAMC,OAAO,GAAAR,OAAA,CAAAQ,OAAA,GAAG;EAAEP,EAAE;EAAEK;AAAG,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"injected.js","names":["injectedBrickPackages","exports","BRICK_PACKAGES"],"sources":["../../../src/internal/injected.ts"],"sourcesContent":["import type { BrickPackage } from \"@next-core/types\";\n\n// Allow inject brick packages in a runtime other than Brick Next.\nexport const injectedBrickPackages: BrickPackage[] | null =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof BRICK_PACKAGES !== \"undefined\" ? BRICK_PACKAGES : null;\n"],"mappings":";;;;;;AAEA;AACO,MAAMA,qBAA4C,GAAAC,OAAA,CAAAD,qBAAA;AACvD;AACA;AACA,OAAOE,cAAc,KAAK,WAAW,GAAGA,cAAc,GAAG,IAAI"}
1
+ {"version":3,"file":"injected.js","names":["injectedBrickPackages","exports","BRICK_PACKAGES"],"sources":["../../../src/internal/injected.ts"],"sourcesContent":["import type { BrickPackage } from \"@next-core/types\";\n\n// Allow inject brick packages in a runtime other than Brick Next.\nexport const injectedBrickPackages: BrickPackage[] | null =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof BRICK_PACKAGES !== \"undefined\" ? BRICK_PACKAGES : null;\n"],"mappings":";;;;;;AAEA;AACO,MAAMA,qBAA4C,GAAAC,OAAA,CAAAD,qBAAA;AACvD;AACA;AACA,OAAOE,cAAc,KAAK,WAAW,GAAGA,cAAc,GAAG,IAAI","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"insertPreviewRoutes.js","names":["_lodash","require","insertPreviewRoutes","routes","window","parent","mergedRoutes","specificTemplatePreviewIndex","findLastIndex","route","path","startsWith","slice","bricks","brick","menu","exact","specificSnippetPreviewIndex"],"sources":["../../../src/internal/insertPreviewRoutes.ts"],"sourcesContent":["import { findLastIndex } from \"lodash\";\nimport type { RouteConf } from \"@next-core/types\";\n\nexport function insertPreviewRoutes(routes: RouteConf[]): RouteConf[] {\n // Insert preview routes for iframe only.\n if (window.parent === window) {\n return routes;\n }\n\n let mergedRoutes = routes;\n\n const specificTemplatePreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/template-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/template-preview/:templateId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificTemplatePreviewIndex + 1),\n ];\n\n const specificSnippetPreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/snippet-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/snippet-preview/:snippetId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificSnippetPreviewIndex + 1),\n ];\n\n return mergedRoutes;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,mBAAmBA,CAACC,MAAmB,EAAe;EACpE;EACA,IAAIC,MAAM,CAACC,MAAM,KAAKD,MAAM,EAAE;IAC5B,OAAOD,MAAM;EACf;EAEA,IAAIG,YAAY,GAAGH,MAAM;EAEzB,MAAMI,4BAA4B,GAAG,IAAAC,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACrEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,8CAA8C,CACtE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEL,4BAA4B,GAAG,CAAC,CAAC,EAC1D;IACEG,IAAI,EAAE,yDAAyD;IAC/DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACL,4BAA4B,GAAG,CAAC,CAAC,CACxD;EAED,MAAMU,2BAA2B,GAAG,IAAAT,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACpEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,6CAA6C,CACrE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEK,2BAA2B,GAAG,CAAC,CAAC,EACzD;IACEP,IAAI,EAAE,uDAAuD;IAC7DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACK,2BAA2B,GAAG,CAAC,CAAC,CACvD;EAED,OAAOX,YAAY;AACrB"}
1
+ {"version":3,"file":"insertPreviewRoutes.js","names":["_lodash","require","insertPreviewRoutes","routes","window","parent","mergedRoutes","specificTemplatePreviewIndex","findLastIndex","route","path","startsWith","slice","bricks","brick","menu","exact","specificSnippetPreviewIndex"],"sources":["../../../src/internal/insertPreviewRoutes.ts"],"sourcesContent":["import { findLastIndex } from \"lodash\";\nimport type { RouteConf } from \"@next-core/types\";\n\nexport function insertPreviewRoutes(routes: RouteConf[]): RouteConf[] {\n // Insert preview routes for iframe only.\n if (window.parent === window) {\n return routes;\n }\n\n let mergedRoutes = routes;\n\n const specificTemplatePreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/template-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/template-preview/:templateId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificTemplatePreviewIndex + 1),\n ];\n\n const specificSnippetPreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/snippet-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/snippet-preview/:snippetId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificSnippetPreviewIndex + 1),\n ];\n\n return mergedRoutes;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,mBAAmBA,CAACC,MAAmB,EAAe;EACpE;EACA,IAAIC,MAAM,CAACC,MAAM,KAAKD,MAAM,EAAE;IAC5B,OAAOD,MAAM;EACf;EAEA,IAAIG,YAAY,GAAGH,MAAM;EAEzB,MAAMI,4BAA4B,GAAG,IAAAC,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACrEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,8CAA8C,CACtE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEL,4BAA4B,GAAG,CAAC,CAAC,EAC1D;IACEG,IAAI,EAAE,yDAAyD;IAC/DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACL,4BAA4B,GAAG,CAAC,CAAC,CACxD;EAED,MAAMU,2BAA2B,GAAG,IAAAT,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACpEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,6CAA6C,CACrE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEK,2BAA2B,GAAG,CAAC,CAAC,EACzD;IACEP,IAAI,EAAE,uDAAuD;IAC7DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACK,2BAA2B,GAAG,CAAC,CAAC,CACvD;EAED,OAAOX,YAAY;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n __temporary_tpl_tag_name?: string;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n __temporary_tpl_tag_name?: string;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"matchPath.js","names":["_pathToRegexp","require","cache","Map","cacheLimit","cacheCount","compilePath","path","options","cacheKey","end","strict","sensitive","pathCache","get","set","cacheResult","keys","regexp","pathToRegexp","result","matchPath","pathname","p","exact","paths","Array","isArray","reduce","matched","match","exec","url","values","isExact","initialParams","params","memo","key","index","name","toPath","pathParams","compile"],"sources":["../../../src/internal/matchPath.ts"],"sourcesContent":["// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/matchPath.js\nimport type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport { pathToRegexp, Key, compile } from \"path-to-regexp\";\n\nconst cache: Map<string, Map<string, CompileResult>> = new Map();\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path: string, options: CompileOptions): CompileResult {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n let pathCache = cache.get(cacheKey);\n if (!pathCache) {\n cache.set(cacheKey, (pathCache = new Map()));\n }\n\n const cacheResult = pathCache.get(path);\n if (cacheResult) {\n return cacheResult;\n }\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache.set(path, result);\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nexport function matchPath(\n pathname: string,\n options: MatchPathOptions\n): MatchResult | null {\n const { path: p, exact = false, strict = false, sensitive = true } = options;\n\n const paths = Array.isArray(p) ? p : [p];\n\n return paths.reduce<MatchResult | null>((matched, path) => {\n if (matched) {\n return matched;\n }\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive,\n });\n const match = regexp.exec(pathname);\n\n if (!match) {\n return null;\n }\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) {\n return null;\n }\n\n const initialParams: MatchResult[\"params\"] = {};\n const result = {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, initialParams),\n };\n\n return result;\n }, null);\n}\n\nexport function toPath(\n path: string,\n pathParams?: Record<string, unknown>\n): string {\n return compile(path)(pathParams);\n}\n\ninterface CompileOptions {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\ninterface CompileResult {\n regexp: RegExp;\n keys: Key[];\n}\n\ninterface MatchOptions {\n path: string | string[];\n exact?: boolean;\n}\n\nexport type MatchPathOptions = MatchOptions & CompileOptions;\n\nexport type MatchResult = Exclude<\n LegacyCompatibleRuntimeContext[\"match\"],\n undefined\n>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"matchPath.js","names":["_pathToRegexp","require","cache","Map","cacheLimit","cacheCount","compilePath","path","options","cacheKey","end","strict","sensitive","pathCache","get","set","cacheResult","keys","regexp","pathToRegexp","result","matchPath","pathname","p","exact","paths","Array","isArray","reduce","matched","match","exec","url","values","isExact","initialParams","params","memo","key","index","name","toPath","pathParams","compile"],"sources":["../../../src/internal/matchPath.ts"],"sourcesContent":["// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/matchPath.js\nimport type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport { pathToRegexp, Key, compile } from \"path-to-regexp\";\n\nconst cache: Map<string, Map<string, CompileResult>> = new Map();\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path: string, options: CompileOptions): CompileResult {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n let pathCache = cache.get(cacheKey);\n if (!pathCache) {\n cache.set(cacheKey, (pathCache = new Map()));\n }\n\n const cacheResult = pathCache.get(path);\n if (cacheResult) {\n return cacheResult;\n }\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache.set(path, result);\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nexport function matchPath(\n pathname: string,\n options: MatchPathOptions\n): MatchResult | null {\n const { path: p, exact = false, strict = false, sensitive = true } = options;\n\n const paths = Array.isArray(p) ? p : [p];\n\n return paths.reduce<MatchResult | null>((matched, path) => {\n if (matched) {\n return matched;\n }\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive,\n });\n const match = regexp.exec(pathname);\n\n if (!match) {\n return null;\n }\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) {\n return null;\n }\n\n const initialParams: MatchResult[\"params\"] = {};\n const result = {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, initialParams),\n };\n\n return result;\n }, null);\n}\n\nexport function toPath(\n path: string,\n pathParams?: Record<string, unknown>\n): string {\n return compile(path)(pathParams);\n}\n\ninterface CompileOptions {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\ninterface CompileResult {\n regexp: RegExp;\n keys: Key[];\n}\n\ninterface MatchOptions {\n path: string | string[];\n exact?: boolean;\n}\n\nexport type MatchPathOptions = MatchOptions & CompileOptions;\n\nexport type MatchResult = Exclude<\n LegacyCompatibleRuntimeContext[\"match\"],\n undefined\n>;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"matchRoutes.js","names":["_matchPath","require","_checkIf","_Runtime","matchRoutes","routes","runtimeContext","route","path","console","error","Error","match","matchRoute","app","homepage","location","pathname","asyncCheckIf","noAuthGuard","public","hooks","auth","isLoggedIn","routePath","replace","matchPath","exact"],"sources":["../../../src/internal/matchRoutes.ts"],"sourcesContent":["import type { RouteConf } from \"@next-core/types\";\nimport { MatchResult, matchPath } from \"./matchPath.js\";\nimport { asyncCheckIf } from \"./compute/checkIf.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { hooks } from \"./Runtime.js\";\n\ntype MatchRoutesResult =\n | {\n match: MatchResult;\n route: RouteConf;\n }\n | \"missed\"\n | \"unauthenticated\";\n\nexport async function matchRoutes(\n routes: RouteConf[],\n runtimeContext: RuntimeContext\n): Promise<MatchRoutesResult> {\n for (const route of routes) {\n if (typeof route.path !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid route with invalid path:\", route);\n throw new Error(\n `Invalid route with invalid type of path: ${typeof route.path}`\n );\n }\n const match = matchRoute(\n route,\n runtimeContext.app.homepage,\n runtimeContext.location.pathname\n );\n if (match && (await asyncCheckIf(route, runtimeContext))) {\n if (\n runtimeContext.app.noAuthGuard ||\n route.public ||\n !hooks?.auth ||\n hooks.auth.isLoggedIn()\n ) {\n return { match, route };\n }\n return \"unauthenticated\";\n }\n }\n return \"missed\";\n}\n\nexport function matchRoute(\n route: RouteConf,\n homepage: string,\n pathname: string\n) {\n const routePath = route.path.replace(/^\\$\\{APP.homepage\\}/, homepage);\n return matchPath(pathname, {\n path: routePath,\n exact: route.exact,\n });\n}\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAUO,eAAeG,WAAWA,CAC/BC,MAAmB,EACnBC,cAA8B,EACF;EAC5B,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAE;IAC1B,IAAI,OAAOE,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAClC;MACAC,OAAO,CAACC,KAAK,CAAC,kCAAkC,EAAEH,KAAK,CAAC;MACxD,MAAM,IAAII,KAAK,CACZ,4CAA2C,OAAOJ,KAAK,CAACC,IAAK,EAChE,CAAC;IACH;IACA,MAAMI,KAAK,GAAGC,UAAU,CACtBN,KAAK,EACLD,cAAc,CAACQ,GAAG,CAACC,QAAQ,EAC3BT,cAAc,CAACU,QAAQ,CAACC,QAC1B,CAAC;IACD,IAAIL,KAAK,KAAK,MAAM,IAAAM,qBAAY,EAACX,KAAK,EAAED,cAAc,CAAC,CAAC,EAAE;MACxD,IACEA,cAAc,CAACQ,GAAG,CAACK,WAAW,IAC9BZ,KAAK,CAACa,MAAM,IACZ,EAACC,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,IAAI,KACZD,cAAK,CAACC,IAAI,CAACC,UAAU,CAAC,CAAC,EACvB;QACA,OAAO;UAAEX,KAAK;UAAEL;QAAM,CAAC;MACzB;MACA,OAAO,iBAAiB;IAC1B;EACF;EACA,OAAO,QAAQ;AACjB;AAEO,SAASM,UAAUA,CACxBN,KAAgB,EAChBQ,QAAgB,EAChBE,QAAgB,EAChB;EACA,MAAMO,SAAS,GAAGjB,KAAK,CAACC,IAAI,CAACiB,OAAO,CAAC,qBAAqB,EAAEV,QAAQ,CAAC;EACrE,OAAO,IAAAW,oBAAS,EAACT,QAAQ,EAAE;IACzBT,IAAI,EAAEgB,SAAS;IACfG,KAAK,EAAEpB,KAAK,CAACoB;EACf,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"matchRoutes.js","names":["_matchPath","require","_checkIf","_Runtime","matchRoutes","routes","runtimeContext","route","path","console","error","Error","match","matchRoute","app","homepage","location","pathname","asyncCheckIf","noAuthGuard","public","hooks","auth","isLoggedIn","routePath","replace","matchPath","exact"],"sources":["../../../src/internal/matchRoutes.ts"],"sourcesContent":["import type { RouteConf } from \"@next-core/types\";\nimport { MatchResult, matchPath } from \"./matchPath.js\";\nimport { asyncCheckIf } from \"./compute/checkIf.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { hooks } from \"./Runtime.js\";\n\ntype MatchRoutesResult =\n | {\n match: MatchResult;\n route: RouteConf;\n }\n | \"missed\"\n | \"unauthenticated\";\n\nexport async function matchRoutes(\n routes: RouteConf[],\n runtimeContext: RuntimeContext\n): Promise<MatchRoutesResult> {\n for (const route of routes) {\n if (typeof route.path !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid route with invalid path:\", route);\n throw new Error(\n `Invalid route with invalid type of path: ${typeof route.path}`\n );\n }\n const match = matchRoute(\n route,\n runtimeContext.app.homepage,\n runtimeContext.location.pathname\n );\n if (match && (await asyncCheckIf(route, runtimeContext))) {\n if (\n runtimeContext.app.noAuthGuard ||\n route.public ||\n !hooks?.auth ||\n hooks.auth.isLoggedIn()\n ) {\n return { match, route };\n }\n return \"unauthenticated\";\n }\n }\n return \"missed\";\n}\n\nexport function matchRoute(\n route: RouteConf,\n homepage: string,\n pathname: string\n) {\n const routePath = route.path.replace(/^\\$\\{APP.homepage\\}/, homepage);\n return matchPath(pathname, {\n path: routePath,\n exact: route.exact,\n });\n}\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAUO,eAAeG,WAAWA,CAC/BC,MAAmB,EACnBC,cAA8B,EACF;EAC5B,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAE;IAC1B,IAAI,OAAOE,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAClC;MACAC,OAAO,CAACC,KAAK,CAAC,kCAAkC,EAAEH,KAAK,CAAC;MACxD,MAAM,IAAII,KAAK,CACZ,4CAA2C,OAAOJ,KAAK,CAACC,IAAK,EAChE,CAAC;IACH;IACA,MAAMI,KAAK,GAAGC,UAAU,CACtBN,KAAK,EACLD,cAAc,CAACQ,GAAG,CAACC,QAAQ,EAC3BT,cAAc,CAACU,QAAQ,CAACC,QAC1B,CAAC;IACD,IAAIL,KAAK,KAAK,MAAM,IAAAM,qBAAY,EAACX,KAAK,EAAED,cAAc,CAAC,CAAC,EAAE;MACxD,IACEA,cAAc,CAACQ,GAAG,CAACK,WAAW,IAC9BZ,KAAK,CAACa,MAAM,IACZ,EAACC,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,IAAI,KACZD,cAAK,CAACC,IAAI,CAACC,UAAU,CAAC,CAAC,EACvB;QACA,OAAO;UAAEX,KAAK;UAAEL;QAAM,CAAC;MACzB;MACA,OAAO,iBAAiB;IAC1B;EACF;EACA,OAAO,QAAQ;AACjB;AAEO,SAASM,UAAUA,CACxBN,KAAgB,EAChBQ,QAAgB,EAChBE,QAAgB,EAChB;EACA,MAAMO,SAAS,GAAGjB,KAAK,CAACC,IAAI,CAACiB,OAAO,CAAC,qBAAqB,EAAEV,QAAQ,CAAC;EACrE,OAAO,IAAAW,oBAAS,EAACT,QAAQ,EAAE;IACzBT,IAAI,EAAEgB,SAAS;IACfG,KAAK,EAAEpB,KAAK,CAACoB;EACf,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"matchStoryboard.js","names":["_lodash","require","_Runtime","matchStoryboard","storyboards","pathname","sortedStoryboards","orderBy","storyboard","_storyboard$app$homep","_storyboard$app$homep2","app","homepage","length","matchHomepage","replace","startsWith","isOutsideApp","_getRuntime$getCurren","process","env","NODE_ENV","getRuntime","getCurrentApp","id","window","STANDALONE_MICRO_APPS","standaloneMode"],"sources":["../../../src/internal/matchStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { orderBy } from \"lodash\";\nimport { getRuntime } from \"./Runtime.js\";\n\nexport function matchStoryboard(\n storyboards: RuntimeStoryboard[],\n pathname: string\n): RuntimeStoryboard | undefined {\n // Put apps with longer homepage before shorter ones.\n // E.g., `/legacy/tool` will match first before `/legacy`.\n // This enables two apps with relationship of parent-child of homepage.\n const sortedStoryboards = orderBy(\n storyboards,\n (storyboard) => storyboard.app.homepage?.length ?? 0,\n \"desc\"\n );\n for (const storyboard of sortedStoryboards) {\n const homepage = storyboard.app.homepage;\n if (typeof homepage === \"string\" && homepage[0] === \"/\") {\n if (matchHomepage(homepage, pathname)) {\n return storyboard;\n }\n }\n }\n}\n\nexport function matchHomepage(homepage: string, pathname: string) {\n return homepage === \"/\"\n ? pathname === homepage\n : `${pathname.replace(/\\/+$/, \"\")}/`.startsWith(\n `${homepage.replace(/\\/+$/, \"\")}/`\n );\n}\n\n// istanbul ignore next\n/**\n * We say it's an outside app when at least one of the below conditions are true:\n * - target app is not found.\n * - target app is not the current app.\n * - current app is non-standalone mode and target app is standalone mode.\n *\n * Note: when current app is standalone mode, other apps will not be found.\n */\nexport function isOutsideApp(\n storyboard: RuntimeStoryboard | undefined\n): boolean | undefined {\n if (process.env.NODE_ENV === \"test\") {\n return false;\n }\n return (\n !storyboard ||\n // Sometimes `storyboard.app.standaloneMode` is incorrect.\n (getRuntime().getCurrentApp()?.id !== storyboard.app.id &&\n !window.STANDALONE_MICRO_APPS &&\n storyboard.app.standaloneMode)\n );\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,SAASE,eAAeA,CAC7BC,WAAgC,EAChCC,QAAgB,EACe;EAC/B;EACA;EACA;EACA,MAAMC,iBAAiB,GAAG,IAAAC,eAAO,EAC/BH,WAAW,EACVI,UAAU;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IAAA,QAAAD,qBAAA,IAAAC,sBAAA,GAAKF,UAAU,CAACG,GAAG,CAACC,QAAQ,cAAAF,sBAAA,uBAAvBA,sBAAA,CAAyBG,MAAM,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAAA,GACpD,MACF,CAAC;EACD,KAAK,MAAMD,UAAU,IAAIF,iBAAiB,EAAE;IAC1C,MAAMM,QAAQ,GAAGJ,UAAU,CAACG,GAAG,CAACC,QAAQ;IACxC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvD,IAAIE,aAAa,CAACF,QAAQ,EAAEP,QAAQ,CAAC,EAAE;QACrC,OAAOG,UAAU;MACnB;IACF;EACF;AACF;AAEO,SAASM,aAAaA,CAACF,QAAgB,EAAEP,QAAgB,EAAE;EAChE,OAAOO,QAAQ,KAAK,GAAG,GACnBP,QAAQ,KAAKO,QAAQ,GACpB,GAAEP,QAAQ,CAACU,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAAE,CAACC,UAAU,CAC1C,GAAEJ,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAClC,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAC1BT,UAAyC,EACpB;EAAA,IAAAU,qBAAA;EACrB,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;IACnC,OAAO,KAAK;EACd;EACA,OACE,CAACb,UAAU;EACX;EACC,EAAAU,qBAAA,OAAAI,mBAAU,EAAC,CAAC,CAACC,aAAa,CAAC,CAAC,cAAAL,qBAAA,uBAA5BA,qBAAA,CAA8BM,EAAE,MAAKhB,UAAU,CAACG,GAAG,CAACa,EAAE,IACrD,CAACC,MAAM,CAACC,qBAAqB,IAC7BlB,UAAU,CAACG,GAAG,CAACgB,cAAe;AAEpC"}
1
+ {"version":3,"file":"matchStoryboard.js","names":["_lodash","require","_Runtime","matchStoryboard","storyboards","pathname","sortedStoryboards","orderBy","storyboard","_storyboard$app$homep","_storyboard$app$homep2","app","homepage","length","matchHomepage","replace","startsWith","isOutsideApp","_getRuntime$getCurren","process","env","NODE_ENV","getRuntime","getCurrentApp","id","window","STANDALONE_MICRO_APPS","standaloneMode"],"sources":["../../../src/internal/matchStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { orderBy } from \"lodash\";\nimport { getRuntime } from \"./Runtime.js\";\n\nexport function matchStoryboard(\n storyboards: RuntimeStoryboard[],\n pathname: string\n): RuntimeStoryboard | undefined {\n // Put apps with longer homepage before shorter ones.\n // E.g., `/legacy/tool` will match first before `/legacy`.\n // This enables two apps with relationship of parent-child of homepage.\n const sortedStoryboards = orderBy(\n storyboards,\n (storyboard) => storyboard.app.homepage?.length ?? 0,\n \"desc\"\n );\n for (const storyboard of sortedStoryboards) {\n const homepage = storyboard.app.homepage;\n if (typeof homepage === \"string\" && homepage[0] === \"/\") {\n if (matchHomepage(homepage, pathname)) {\n return storyboard;\n }\n }\n }\n}\n\nexport function matchHomepage(homepage: string, pathname: string) {\n return homepage === \"/\"\n ? pathname === homepage\n : `${pathname.replace(/\\/+$/, \"\")}/`.startsWith(\n `${homepage.replace(/\\/+$/, \"\")}/`\n );\n}\n\n// istanbul ignore next\n/**\n * We say it's an outside app when at least one of the below conditions are true:\n * - target app is not found.\n * - target app is not the current app.\n * - current app is non-standalone mode and target app is standalone mode.\n *\n * Note: when current app is standalone mode, other apps will not be found.\n */\nexport function isOutsideApp(\n storyboard: RuntimeStoryboard | undefined\n): boolean | undefined {\n if (process.env.NODE_ENV === \"test\") {\n return false;\n }\n return (\n !storyboard ||\n // Sometimes `storyboard.app.standaloneMode` is incorrect.\n (getRuntime().getCurrentApp()?.id !== storyboard.app.id &&\n !window.STANDALONE_MICRO_APPS &&\n storyboard.app.standaloneMode)\n );\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,SAASE,eAAeA,CAC7BC,WAAgC,EAChCC,QAAgB,EACe;EAC/B;EACA;EACA;EACA,MAAMC,iBAAiB,GAAG,IAAAC,eAAO,EAC/BH,WAAW,EACVI,UAAU;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IAAA,QAAAD,qBAAA,IAAAC,sBAAA,GAAKF,UAAU,CAACG,GAAG,CAACC,QAAQ,cAAAF,sBAAA,uBAAvBA,sBAAA,CAAyBG,MAAM,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAAA,GACpD,MACF,CAAC;EACD,KAAK,MAAMD,UAAU,IAAIF,iBAAiB,EAAE;IAC1C,MAAMM,QAAQ,GAAGJ,UAAU,CAACG,GAAG,CAACC,QAAQ;IACxC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvD,IAAIE,aAAa,CAACF,QAAQ,EAAEP,QAAQ,CAAC,EAAE;QACrC,OAAOG,UAAU;MACnB;IACF;EACF;AACF;AAEO,SAASM,aAAaA,CAACF,QAAgB,EAAEP,QAAgB,EAAE;EAChE,OAAOO,QAAQ,KAAK,GAAG,GACnBP,QAAQ,KAAKO,QAAQ,GACpB,GAAEP,QAAQ,CAACU,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAAE,CAACC,UAAU,CAC1C,GAAEJ,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAClC,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAC1BT,UAAyC,EACpB;EAAA,IAAAU,qBAAA;EACrB,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;IACnC,OAAO,KAAK;EACd;EACA,OACE,CAACb,UAAU;EACX;EACC,EAAAU,qBAAA,OAAAI,mBAAU,EAAC,CAAC,CAACC,aAAa,CAAC,CAAC,cAAAL,qBAAA,uBAA5BA,qBAAA,CAA8BM,EAAE,MAAKhB,UAAU,CAACG,GAAG,CAACa,EAAE,IACrD,CAACC,MAAM,CAACC,qBAAqB,IAC7BlB,UAAU,CAACG,GAAG,CAACgB,cAAe;AAEpC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"mediaQuery.js","names":["_eventTarget","_interopRequireDefault","require","MediaBreakpoint","exports","mediaBreakpointMinWidthMap","Map","xLarge","large","medium","small","xSmall","mediaEventTarget","EventTarget","breakpointMatchesMap","MEDIA","handleMatchesChange","data","breakpoint","changed","matches","dispatchEvent","CustomEvent","detail","forEach","minWidth","mediaQueryList","window","matchMedia","addEventListener","event","addListener","getMedia"],"sources":["../../../src/internal/mediaQuery.ts"],"sourcesContent":["import EventTarget from \"@ungap/event-target\";\n\nexport interface Media {\n breakpoint?: MediaBreakpoint;\n}\n\nexport enum MediaBreakpoint {\n xLarge = \"xLarge\",\n large = \"large\",\n medium = \"medium\",\n small = \"small\",\n xSmall = \"xSmall\",\n}\n\nexport const mediaBreakpointMinWidthMap = new Map<\n MediaBreakpoint,\n string | number\n>([\n [MediaBreakpoint.xLarge, \"1920px\"],\n [MediaBreakpoint.large, \"1600px\"],\n [MediaBreakpoint.medium, \"1280px\"],\n [MediaBreakpoint.small, \"1024px\"],\n [MediaBreakpoint.xSmall, 0],\n]);\nexport const mediaEventTarget = new EventTarget();\n\nconst breakpointMatchesMap: Partial<Record<MediaBreakpoint, boolean>> = {};\nconst MEDIA: Media = {};\n\nfunction handleMatchesChange(\n data: { readonly matches: boolean; readonly media: string },\n breakpoint: MediaBreakpoint\n): void {\n let changed = false;\n breakpointMatchesMap[breakpoint] = data.matches;\n\n for (const [breakpoint] of mediaBreakpointMinWidthMap) {\n if (breakpointMatchesMap[breakpoint] && MEDIA.breakpoint !== breakpoint) {\n MEDIA.breakpoint = breakpoint;\n changed = true;\n break;\n }\n }\n\n if (changed) {\n mediaEventTarget.dispatchEvent(\n new CustomEvent(\"change\", { detail: MEDIA })\n );\n }\n}\n\nmediaBreakpointMinWidthMap.forEach((minWidth, breakpoint) => {\n const mediaQueryList = window.matchMedia(`(min-width: ${minWidth})`);\n\n handleMatchesChange(mediaQueryList, breakpoint);\n\n if (mediaQueryList.addEventListener) {\n mediaQueryList.addEventListener(\"change\", (event) => {\n handleMatchesChange(event, breakpoint);\n });\n } else {\n mediaQueryList.addListener((event) => {\n handleMatchesChange(event, breakpoint);\n });\n }\n});\n\nexport const getMedia = (): Media => MEDIA;\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,IAMlCC,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAQpB,MAAME,0BAA0B,GAAAD,OAAA,CAAAC,0BAAA,GAAG,IAAIC,GAAG,CAG/C,CACA,CAACH,eAAe,CAACI,MAAM,EAAE,QAAQ,CAAC,EAClC,CAACJ,eAAe,CAACK,KAAK,EAAE,QAAQ,CAAC,EACjC,CAACL,eAAe,CAACM,MAAM,EAAE,QAAQ,CAAC,EAClC,CAACN,eAAe,CAACO,KAAK,EAAE,QAAQ,CAAC,EACjC,CAACP,eAAe,CAACQ,MAAM,EAAE,CAAC,CAAC,CAC5B,CAAC;AACK,MAAMC,gBAAgB,GAAAR,OAAA,CAAAQ,gBAAA,GAAG,IAAIC,oBAAW,CAAC,CAAC;AAEjD,MAAMC,oBAA+D,GAAG,CAAC,CAAC;AAC1E,MAAMC,KAAY,GAAG,CAAC,CAAC;AAEvB,SAASC,mBAAmBA,CAC1BC,IAA2D,EAC3DC,UAA2B,EACrB;EACN,IAAIC,OAAO,GAAG,KAAK;EACnBL,oBAAoB,CAACI,UAAU,CAAC,GAAGD,IAAI,CAACG,OAAO;EAE/C,KAAK,MAAM,CAACF,UAAU,CAAC,IAAIb,0BAA0B,EAAE;IACrD,IAAIS,oBAAoB,CAACI,UAAU,CAAC,IAAIH,KAAK,CAACG,UAAU,KAAKA,UAAU,EAAE;MACvEH,KAAK,CAACG,UAAU,GAAGA,UAAU;MAC7BC,OAAO,GAAG,IAAI;MACd;IACF;EACF;EAEA,IAAIA,OAAO,EAAE;IACXP,gBAAgB,CAACS,aAAa,CAC5B,IAAIC,WAAW,CAAC,QAAQ,EAAE;MAAEC,MAAM,EAAER;IAAM,CAAC,CAC7C,CAAC;EACH;AACF;AAEAV,0BAA0B,CAACmB,OAAO,CAAC,CAACC,QAAQ,EAAEP,UAAU,KAAK;EAC3D,MAAMQ,cAAc,GAAGC,MAAM,CAACC,UAAU,CAAE,eAAcH,QAAS,GAAE,CAAC;EAEpET,mBAAmB,CAACU,cAAc,EAAER,UAAU,CAAC;EAE/C,IAAIQ,cAAc,CAACG,gBAAgB,EAAE;IACnCH,cAAc,CAACG,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MACnDd,mBAAmB,CAACc,KAAK,EAAEZ,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,MAAM;IACLQ,cAAc,CAACK,WAAW,CAAED,KAAK,IAAK;MACpCd,mBAAmB,CAACc,KAAK,EAAEZ,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ;AACF,CAAC,CAAC;AAEK,MAAMc,QAAQ,GAAGA,CAAA,KAAajB,KAAK;AAACX,OAAA,CAAA4B,QAAA,GAAAA,QAAA"}
1
+ {"version":3,"file":"mediaQuery.js","names":["_eventTarget","_interopRequireDefault","require","MediaBreakpoint","exports","mediaBreakpointMinWidthMap","Map","xLarge","large","medium","small","xSmall","mediaEventTarget","EventTarget","breakpointMatchesMap","MEDIA","handleMatchesChange","data","breakpoint","changed","matches","dispatchEvent","CustomEvent","detail","forEach","minWidth","mediaQueryList","window","matchMedia","addEventListener","event","addListener","getMedia"],"sources":["../../../src/internal/mediaQuery.ts"],"sourcesContent":["import EventTarget from \"@ungap/event-target\";\n\nexport interface Media {\n breakpoint?: MediaBreakpoint;\n}\n\nexport enum MediaBreakpoint {\n xLarge = \"xLarge\",\n large = \"large\",\n medium = \"medium\",\n small = \"small\",\n xSmall = \"xSmall\",\n}\n\nexport const mediaBreakpointMinWidthMap = new Map<\n MediaBreakpoint,\n string | number\n>([\n [MediaBreakpoint.xLarge, \"1920px\"],\n [MediaBreakpoint.large, \"1600px\"],\n [MediaBreakpoint.medium, \"1280px\"],\n [MediaBreakpoint.small, \"1024px\"],\n [MediaBreakpoint.xSmall, 0],\n]);\nexport const mediaEventTarget = new EventTarget();\n\nconst breakpointMatchesMap: Partial<Record<MediaBreakpoint, boolean>> = {};\nconst MEDIA: Media = {};\n\nfunction handleMatchesChange(\n data: { readonly matches: boolean; readonly media: string },\n breakpoint: MediaBreakpoint\n): void {\n let changed = false;\n breakpointMatchesMap[breakpoint] = data.matches;\n\n for (const [breakpoint] of mediaBreakpointMinWidthMap) {\n if (breakpointMatchesMap[breakpoint] && MEDIA.breakpoint !== breakpoint) {\n MEDIA.breakpoint = breakpoint;\n changed = true;\n break;\n }\n }\n\n if (changed) {\n mediaEventTarget.dispatchEvent(\n new CustomEvent(\"change\", { detail: MEDIA })\n );\n }\n}\n\nmediaBreakpointMinWidthMap.forEach((minWidth, breakpoint) => {\n const mediaQueryList = window.matchMedia(`(min-width: ${minWidth})`);\n\n handleMatchesChange(mediaQueryList, breakpoint);\n\n if (mediaQueryList.addEventListener) {\n mediaQueryList.addEventListener(\"change\", (event) => {\n handleMatchesChange(event, breakpoint);\n });\n } else {\n mediaQueryList.addListener((event) => {\n handleMatchesChange(event, breakpoint);\n });\n }\n});\n\nexport const getMedia = (): Media => MEDIA;\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,IAMlCC,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAQpB,MAAME,0BAA0B,GAAAD,OAAA,CAAAC,0BAAA,GAAG,IAAIC,GAAG,CAG/C,CACA,CAACH,eAAe,CAACI,MAAM,EAAE,QAAQ,CAAC,EAClC,CAACJ,eAAe,CAACK,KAAK,EAAE,QAAQ,CAAC,EACjC,CAACL,eAAe,CAACM,MAAM,EAAE,QAAQ,CAAC,EAClC,CAACN,eAAe,CAACO,KAAK,EAAE,QAAQ,CAAC,EACjC,CAACP,eAAe,CAACQ,MAAM,EAAE,CAAC,CAAC,CAC5B,CAAC;AACK,MAAMC,gBAAgB,GAAAR,OAAA,CAAAQ,gBAAA,GAAG,IAAIC,oBAAW,CAAC,CAAC;AAEjD,MAAMC,oBAA+D,GAAG,CAAC,CAAC;AAC1E,MAAMC,KAAY,GAAG,CAAC,CAAC;AAEvB,SAASC,mBAAmBA,CAC1BC,IAA2D,EAC3DC,UAA2B,EACrB;EACN,IAAIC,OAAO,GAAG,KAAK;EACnBL,oBAAoB,CAACI,UAAU,CAAC,GAAGD,IAAI,CAACG,OAAO;EAE/C,KAAK,MAAM,CAACF,UAAU,CAAC,IAAIb,0BAA0B,EAAE;IACrD,IAAIS,oBAAoB,CAACI,UAAU,CAAC,IAAIH,KAAK,CAACG,UAAU,KAAKA,UAAU,EAAE;MACvEH,KAAK,CAACG,UAAU,GAAGA,UAAU;MAC7BC,OAAO,GAAG,IAAI;MACd;IACF;EACF;EAEA,IAAIA,OAAO,EAAE;IACXP,gBAAgB,CAACS,aAAa,CAC5B,IAAIC,WAAW,CAAC,QAAQ,EAAE;MAAEC,MAAM,EAAER;IAAM,CAAC,CAC7C,CAAC;EACH;AACF;AAEAV,0BAA0B,CAACmB,OAAO,CAAC,CAACC,QAAQ,EAAEP,UAAU,KAAK;EAC3D,MAAMQ,cAAc,GAAGC,MAAM,CAACC,UAAU,CAAE,eAAcH,QAAS,GAAE,CAAC;EAEpET,mBAAmB,CAACU,cAAc,EAAER,UAAU,CAAC;EAE/C,IAAIQ,cAAc,CAACG,gBAAgB,EAAE;IACnCH,cAAc,CAACG,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MACnDd,mBAAmB,CAACc,KAAK,EAAEZ,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,MAAM;IACLQ,cAAc,CAACK,WAAW,CAAED,KAAK,IAAK;MACpCd,mBAAmB,CAACc,KAAK,EAAEZ,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ;AACF,CAAC,CAAC;AAEK,MAAMc,QAAQ,GAAGA,CAAA,KAAajB,KAAK;AAACX,OAAA,CAAA4B,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","names":["_bindTemplateProxy","require","_utils","_bindListeners","_setRealProperties","_enums","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","window","DISABLE_REACT_FLUSH_SYNC","current","child","portalElements","tag","RenderTag","BRICK","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","setRealProperties","properties","bindListeners","events","runtimeContext","$$tplStateStore","getTplStateStore","tplStateStoreMap","bindTemplateProxy","portal","push","return","childElements","sibling","_currentReturn","currentReturn","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal","setTimeout"],"sources":["../../../src/internal/mount.ts"],"sourcesContent":["import { bindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\nimport { bindListeners } from \"./bindListeners.js\";\nimport { setRealProperties } from \"./compute/setRealProperties.js\";\nimport { RenderTag } from \"./enums.js\";\nimport type {\n RenderReturnNode,\n RenderRoot,\n RuntimeBrickElement,\n} from \"./interfaces.js\";\n\nexport function unmountTree(mountPoint: HTMLElement | DocumentFragment) {\n mountPoint.replaceChildren();\n}\n\nexport function mountTree(\n root: RenderRoot,\n initializedElement?: RuntimeBrickElement\n): void {\n window.DISABLE_REACT_FLUSH_SYNC = false;\n let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n const tagName = current.type;\n\n if (tagName.includes(\"-\") && !customElements.get(tagName)) {\n // eslint-disable-next-line no-console\n console.error(`Undefined custom element: ${tagName}`);\n }\n\n // istanbul ignore if\n if (tagName === \"basic-bricks.script-brick\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"`basic-bricks.script-brick` is deprecated, please take caution when using it\"\n );\n }\n\n const element: RuntimeBrickElement =\n initializedElement && current === root.child\n ? initializedElement\n : document.createElement(tagName);\n current.element = element;\n\n if (current.slotId) {\n element.setAttribute(\"slot\", current.slotId);\n }\n if (current.iid) {\n element.dataset.iid = current.iid;\n }\n if (current.tplHostMetadata?.tplStateStoreId) {\n element.dataset.tplStateStoreId =\n current.tplHostMetadata.tplStateStoreId;\n }\n setRealProperties(element, current.properties);\n bindListeners(element, current.events, current.runtimeContext);\n if (current.tplHostMetadata) {\n // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n element.$$tplStateStore = getTplStateStore(\n {\n tplStateStoreId: current.tplHostMetadata.tplStateStoreId,\n tplStateStoreMap: current.runtimeContext.tplStateStoreMap,\n },\n \"mount\"\n );\n }\n bindTemplateProxy(current);\n\n if (current.portal) {\n portalElements.push(element);\n } else if (current.return) {\n if (!current.return.childElements) {\n current.return.childElements = [];\n }\n current.return.childElements.push(element);\n }\n }\n\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n // Append elements inside out\n if (currentReturn.childElements) {\n if (currentReturn.tag === RenderTag.ROOT) {\n currentReturn.container?.append(...currentReturn.childElements);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentReturn.element!.append(...currentReturn.childElements);\n }\n currentReturn.childElements = undefined;\n }\n\n if (currentReturn.tag === RenderTag.ROOT && portalElements.length > 0) {\n const portal =\n typeof currentReturn.createPortal === \"function\"\n ? currentReturn.createPortal()\n : currentReturn.createPortal;\n portal.append(...portalElements);\n }\n\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n setTimeout(() => {\n window.DISABLE_REACT_FLUSH_SYNC = true;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mount.js","names":["_bindTemplateProxy","require","_utils","_bindListeners","_setRealProperties","_enums","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","window","DISABLE_REACT_FLUSH_SYNC","current","child","portalElements","tag","RenderTag","BRICK","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","setRealProperties","properties","bindListeners","events","runtimeContext","$$tplStateStore","getTplStateStore","tplStateStoreMap","bindTemplateProxy","portal","push","return","childElements","sibling","_currentReturn","currentReturn","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal","setTimeout"],"sources":["../../../src/internal/mount.ts"],"sourcesContent":["import { bindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\nimport { bindListeners } from \"./bindListeners.js\";\nimport { setRealProperties } from \"./compute/setRealProperties.js\";\nimport { RenderTag } from \"./enums.js\";\nimport type {\n RenderReturnNode,\n RenderRoot,\n RuntimeBrickElement,\n} from \"./interfaces.js\";\n\nexport function unmountTree(mountPoint: HTMLElement | DocumentFragment) {\n mountPoint.replaceChildren();\n}\n\nexport function mountTree(\n root: RenderRoot,\n initializedElement?: RuntimeBrickElement\n): void {\n window.DISABLE_REACT_FLUSH_SYNC = false;\n let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\n if (current.tag === RenderTag.BRICK) {\n const tagName = current.type;\n\n if (tagName.includes(\"-\") && !customElements.get(tagName)) {\n // eslint-disable-next-line no-console\n console.error(`Undefined custom element: ${tagName}`);\n }\n\n // istanbul ignore if\n if (tagName === \"basic-bricks.script-brick\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"`basic-bricks.script-brick` is deprecated, please take caution when using it\"\n );\n }\n\n const element: RuntimeBrickElement =\n initializedElement && current === root.child\n ? initializedElement\n : document.createElement(tagName);\n current.element = element;\n\n if (current.slotId) {\n element.setAttribute(\"slot\", current.slotId);\n }\n if (current.iid) {\n element.dataset.iid = current.iid;\n }\n if (current.tplHostMetadata?.tplStateStoreId) {\n element.dataset.tplStateStoreId =\n current.tplHostMetadata.tplStateStoreId;\n }\n setRealProperties(element, current.properties);\n bindListeners(element, current.events, current.runtimeContext);\n if (current.tplHostMetadata) {\n // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n element.$$tplStateStore = getTplStateStore(\n {\n tplStateStoreId: current.tplHostMetadata.tplStateStoreId,\n tplStateStoreMap: current.runtimeContext.tplStateStoreMap,\n },\n \"mount\"\n );\n }\n bindTemplateProxy(current);\n\n if (current.portal) {\n portalElements.push(element);\n } else if (current.return) {\n if (!current.return.childElements) {\n current.return.childElements = [];\n }\n current.return.childElements.push(element);\n }\n }\n\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderReturnNode | null | undefined = current.return;\n while (currentReturn) {\n // Append elements inside out\n if (currentReturn.childElements) {\n if (currentReturn.tag === RenderTag.ROOT) {\n currentReturn.container?.append(...currentReturn.childElements);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentReturn.element!.append(...currentReturn.childElements);\n }\n currentReturn.childElements = undefined;\n }\n\n if (currentReturn.tag === RenderTag.ROOT && portalElements.length > 0) {\n const portal =\n typeof currentReturn.createPortal === \"function\"\n ? currentReturn.createPortal()\n : currentReturn.createPortal;\n portal.append(...portalElements);\n }\n\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n setTimeout(() => {\n window.DISABLE_REACT_FLUSH_SYNC = true;\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"poll.js","names":["_lodash","require","_Runtime","_computeRealValue5","timeoutIdList","Set","startPoll","task","progress","success","error","finally","finallyCallback","pollOptions","runtimeContext","expectPollStopImmediately","expectPollEnd","interval","leadingRequestDelay","continueOnError","delegateLoadingBar","computeRealValue","pick","currentRenderId","_internalApiGetRenderId","currentTimeoutId","poll","delete","shouldStop","_computeRealValue","_computeRealValue2","result","expectPollStopImmediatelyResult","_computeRealValue3","window","dispatchEvent","Event","delayedPoll","e","_computeRealValue4","delay","setTimeout","add","clearPollTimeout","timeoutId","clearTimeout","clear"],"sources":["../../../src/internal/poll.ts"],"sourcesContent":["import type { ProviderPollOptions } from \"@next-core/types\";\nimport { pick } from \"lodash\";\nimport { _internalApiGetRenderId } from \"./Runtime.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { RuntimeContext } from \"./interfaces.js\";\n\nexport type PollableCallbackFunction = (result?: unknown) => unknown;\n\nexport interface PollableCallback {\n progress?: PollableCallbackFunction;\n success?: PollableCallbackFunction;\n error?: PollableCallbackFunction;\n finally?: PollableCallbackFunction;\n}\n\nconst timeoutIdList = new Set<number>();\n\nexport function startPoll(\n task: () => unknown,\n { progress, success, error, finally: finallyCallback }: PollableCallback,\n pollOptions: ProviderPollOptions,\n runtimeContext: RuntimeContext\n): void {\n const { expectPollStopImmediately, expectPollEnd } = pollOptions;\n const { interval, leadingRequestDelay, continueOnError, delegateLoadingBar } =\n computeRealValue(\n pick(pollOptions, [\n \"interval\",\n \"leadingRequestDelay\",\n \"continueOnError\",\n \"delegateLoadingBar\",\n ]),\n runtimeContext\n ) as ProviderPollOptions;\n const currentRenderId = _internalApiGetRenderId();\n let currentTimeoutId: number;\n async function poll(): Promise<void> {\n timeoutIdList.delete(currentTimeoutId);\n let shouldStop: boolean | undefined;\n try {\n shouldStop = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match before task.\n if (!shouldStop) {\n const result = await task();\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n progress?.(result);\n if (\n (\n computeRealValue(expectPollEnd, runtimeContext) as\n | ((result: unknown) => boolean)\n | undefined\n )?.(result)\n ) {\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n success?.(result);\n finallyCallback?.();\n } else {\n delayedPoll(interval ?? 3000);\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } else {\n finallyCallback?.();\n }\n } catch (e) {\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n error?.(e);\n if (continueOnError) {\n delayedPoll(interval ?? 3000);\n } else {\n finallyCallback?.();\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } finally {\n // Manually dispatch an event of `request.end` when the polling is stopped immediately.\n if (delegateLoadingBar && shouldStop) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n }\n }\n\n function delayedPoll(delay: number): void {\n currentTimeoutId = setTimeout(poll, delay) as unknown as number;\n timeoutIdList.add(currentTimeoutId);\n }\n\n delayedPoll(leadingRequestDelay ?? 0);\n\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.start\"));\n }\n}\n\nexport function clearPollTimeout(): void {\n for (const timeoutId of timeoutIdList) {\n clearTimeout(timeoutId);\n }\n timeoutIdList.clear();\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAYA,MAAMG,aAAa,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEhC,SAASC,SAASA,CACvBC,IAAmB,EACnB;EAAEC,QAAQ;EAAEC,OAAO;EAAEC,KAAK;EAAEC,OAAO,EAAEC;AAAkC,CAAC,EACxEC,WAAgC,EAChCC,cAA8B,EACxB;EACN,MAAM;IAAEC,yBAAyB;IAAEC;EAAc,CAAC,GAAGH,WAAW;EAChE,MAAM;IAAEI,QAAQ;IAAEC,mBAAmB;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAC1E,IAAAC,mCAAgB,EACd,IAAAC,YAAI,EAACT,WAAW,EAAE,CAChB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,CACrB,CAAC,EACFC,cACF,CAAwB;EAC1B,MAAMS,eAAe,GAAG,IAAAC,gCAAuB,EAAC,CAAC;EACjD,IAAIC,gBAAwB;EAC5B,eAAeC,IAAIA,CAAA,EAAkB;IACnCtB,aAAa,CAACuB,MAAM,CAACF,gBAAgB,CAAC;IACtC,IAAIG,UAA+B;IACnC,IAAI;MAAA,IAAAC,iBAAA;MACFD,UAAU,IAAAC,iBAAA,GACR,IAAAR,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAe,iBAAA,uBADhDA,iBAAA,CAIT,CAAC;MACL;MACA,IAAI,CAACD,UAAU,EAAE;QAAA,IAAAE,kBAAA;QACf,MAAMC,MAAM,GAAG,MAAMxB,IAAI,CAAC,CAAC;QAC3B,MAAMyB,+BAA+B,IAAAF,kBAAA,GACnC,IAAAT,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAgB,kBAAA,uBADrBA,kBAAA,CAIpC,CAAC;QACL;QACA;QACAF,UAAU,GACRI,+BAA+B,IAC/BT,eAAe,KAAK,IAAAC,gCAAuB,EAAC,CAAC;QAC/C,IAAI,CAACI,UAAU,EAAE;UAAA,IAAAK,kBAAA;UACfzB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGuB,MAAM,CAAC;UAClB,KAAAE,kBAAA,GAEI,IAAAZ,mCAAgB,EAACL,aAAa,EAAEF,cAAc,CAAC,cAAAmB,kBAAA,eADjDA,kBAAA,CAIIF,MAAM,CAAC,EACX;YACA,IAAIX,kBAAkB,EAAE;cACtBc,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD;YACA3B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGsB,MAAM,CAAC;YACjBnB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;UACrB,CAAC,MAAM;YACLyB,WAAW,CAACpB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI,CAAC;UAC/B;QACF,CAAC,MAAM,IAAIe,+BAA+B,EAAE;UAC1CpB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;QACrB;MACF,CAAC,MAAM;QACLA,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;MACrB;IACF,CAAC,CAAC,OAAO0B,CAAC,EAAE;MAAA,IAAAC,kBAAA;MACV,MAAMP,+BAA+B,IAAAO,kBAAA,GACnC,IAAAlB,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAyB,kBAAA,uBADrBA,kBAAA,CAIpC,CAAC;MACL;MACA;MACAX,UAAU,GACRI,+BAA+B,IAC/BT,eAAe,KAAK,IAAAC,gCAAuB,EAAC,CAAC;MAC/C,IAAI,CAACI,UAAU,EAAE;QACflB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAG4B,CAAC,CAAC;QACV,IAAInB,eAAe,EAAE;UACnBkB,WAAW,CAACpB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI,CAAC;QAC/B,CAAC,MAAM;UACLL,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;QACrB;MACF,CAAC,MAAM,IAAIoB,+BAA+B,EAAE;QAC1CpB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;MACrB;IACF,CAAC,SAAS;MACR;MACA,IAAIQ,kBAAkB,IAAIQ,UAAU,EAAE;QACpCM,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,aAAa,CAAC,CAAC;MAChD;IACF;EACF;EAEA,SAASC,WAAWA,CAACG,KAAa,EAAQ;IACxCf,gBAAgB,GAAGgB,UAAU,CAACf,IAAI,EAAEc,KAAK,CAAsB;IAC/DpC,aAAa,CAACsC,GAAG,CAACjB,gBAAgB,CAAC;EACrC;EAEAY,WAAW,CAACnB,mBAAmB,aAAnBA,mBAAmB,cAAnBA,mBAAmB,GAAI,CAAC,CAAC;EAErC,IAAIE,kBAAkB,EAAE;IACtBc,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,eAAe,CAAC,CAAC;EAClD;AACF;AAEO,SAASO,gBAAgBA,CAAA,EAAS;EACvC,KAAK,MAAMC,SAAS,IAAIxC,aAAa,EAAE;IACrCyC,YAAY,CAACD,SAAS,CAAC;EACzB;EACAxC,aAAa,CAAC0C,KAAK,CAAC,CAAC;AACvB"}
1
+ {"version":3,"file":"poll.js","names":["_lodash","require","_Runtime","_computeRealValue5","timeoutIdList","Set","startPoll","task","progress","success","error","finally","finallyCallback","pollOptions","runtimeContext","expectPollStopImmediately","expectPollEnd","interval","leadingRequestDelay","continueOnError","delegateLoadingBar","computeRealValue","pick","currentRenderId","_internalApiGetRenderId","currentTimeoutId","poll","delete","shouldStop","_computeRealValue","_computeRealValue2","result","expectPollStopImmediatelyResult","_computeRealValue3","window","dispatchEvent","Event","delayedPoll","e","_computeRealValue4","delay","setTimeout","add","clearPollTimeout","timeoutId","clearTimeout","clear"],"sources":["../../../src/internal/poll.ts"],"sourcesContent":["import type { ProviderPollOptions } from \"@next-core/types\";\nimport { pick } from \"lodash\";\nimport { _internalApiGetRenderId } from \"./Runtime.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { RuntimeContext } from \"./interfaces.js\";\n\nexport type PollableCallbackFunction = (result?: unknown) => unknown;\n\nexport interface PollableCallback {\n progress?: PollableCallbackFunction;\n success?: PollableCallbackFunction;\n error?: PollableCallbackFunction;\n finally?: PollableCallbackFunction;\n}\n\nconst timeoutIdList = new Set<number>();\n\nexport function startPoll(\n task: () => unknown,\n { progress, success, error, finally: finallyCallback }: PollableCallback,\n pollOptions: ProviderPollOptions,\n runtimeContext: RuntimeContext\n): void {\n const { expectPollStopImmediately, expectPollEnd } = pollOptions;\n const { interval, leadingRequestDelay, continueOnError, delegateLoadingBar } =\n computeRealValue(\n pick(pollOptions, [\n \"interval\",\n \"leadingRequestDelay\",\n \"continueOnError\",\n \"delegateLoadingBar\",\n ]),\n runtimeContext\n ) as ProviderPollOptions;\n const currentRenderId = _internalApiGetRenderId();\n let currentTimeoutId: number;\n async function poll(): Promise<void> {\n timeoutIdList.delete(currentTimeoutId);\n let shouldStop: boolean | undefined;\n try {\n shouldStop = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match before task.\n if (!shouldStop) {\n const result = await task();\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n progress?.(result);\n if (\n (\n computeRealValue(expectPollEnd, runtimeContext) as\n | ((result: unknown) => boolean)\n | undefined\n )?.(result)\n ) {\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n success?.(result);\n finallyCallback?.();\n } else {\n delayedPoll(interval ?? 3000);\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } else {\n finallyCallback?.();\n }\n } catch (e) {\n const expectPollStopImmediatelyResult = (\n computeRealValue(expectPollStopImmediately, runtimeContext) as\n | (() => boolean)\n | undefined\n )?.();\n // Stop polling immediately when the expectation is match or a different router\n // is rendering after the task processed.\n shouldStop =\n expectPollStopImmediatelyResult ||\n currentRenderId !== _internalApiGetRenderId();\n if (!shouldStop) {\n error?.(e);\n if (continueOnError) {\n delayedPoll(interval ?? 3000);\n } else {\n finallyCallback?.();\n }\n } else if (expectPollStopImmediatelyResult) {\n finallyCallback?.();\n }\n } finally {\n // Manually dispatch an event of `request.end` when the polling is stopped immediately.\n if (delegateLoadingBar && shouldStop) {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n }\n }\n\n function delayedPoll(delay: number): void {\n currentTimeoutId = setTimeout(poll, delay) as unknown as number;\n timeoutIdList.add(currentTimeoutId);\n }\n\n delayedPoll(leadingRequestDelay ?? 0);\n\n if (delegateLoadingBar) {\n window.dispatchEvent(new Event(\"request.start\"));\n }\n}\n\nexport function clearPollTimeout(): void {\n for (const timeoutId of timeoutIdList) {\n clearTimeout(timeoutId);\n }\n timeoutIdList.clear();\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAYA,MAAMG,aAAa,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEhC,SAASC,SAASA,CACvBC,IAAmB,EACnB;EAAEC,QAAQ;EAAEC,OAAO;EAAEC,KAAK;EAAEC,OAAO,EAAEC;AAAkC,CAAC,EACxEC,WAAgC,EAChCC,cAA8B,EACxB;EACN,MAAM;IAAEC,yBAAyB;IAAEC;EAAc,CAAC,GAAGH,WAAW;EAChE,MAAM;IAAEI,QAAQ;IAAEC,mBAAmB;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAC1E,IAAAC,mCAAgB,EACd,IAAAC,YAAI,EAACT,WAAW,EAAE,CAChB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,CACrB,CAAC,EACFC,cACF,CAAwB;EAC1B,MAAMS,eAAe,GAAG,IAAAC,gCAAuB,EAAC,CAAC;EACjD,IAAIC,gBAAwB;EAC5B,eAAeC,IAAIA,CAAA,EAAkB;IACnCtB,aAAa,CAACuB,MAAM,CAACF,gBAAgB,CAAC;IACtC,IAAIG,UAA+B;IACnC,IAAI;MAAA,IAAAC,iBAAA;MACFD,UAAU,IAAAC,iBAAA,GACR,IAAAR,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAe,iBAAA,uBADhDA,iBAAA,CAIT,CAAC;MACL;MACA,IAAI,CAACD,UAAU,EAAE;QAAA,IAAAE,kBAAA;QACf,MAAMC,MAAM,GAAG,MAAMxB,IAAI,CAAC,CAAC;QAC3B,MAAMyB,+BAA+B,IAAAF,kBAAA,GACnC,IAAAT,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAgB,kBAAA,uBADrBA,kBAAA,CAIpC,CAAC;QACL;QACA;QACAF,UAAU,GACRI,+BAA+B,IAC/BT,eAAe,KAAK,IAAAC,gCAAuB,EAAC,CAAC;QAC/C,IAAI,CAACI,UAAU,EAAE;UAAA,IAAAK,kBAAA;UACfzB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGuB,MAAM,CAAC;UAClB,KAAAE,kBAAA,GAEI,IAAAZ,mCAAgB,EAACL,aAAa,EAAEF,cAAc,CAAC,cAAAmB,kBAAA,eADjDA,kBAAA,CAIIF,MAAM,CAAC,EACX;YACA,IAAIX,kBAAkB,EAAE;cACtBc,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD;YACA3B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGsB,MAAM,CAAC;YACjBnB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;UACrB,CAAC,MAAM;YACLyB,WAAW,CAACpB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI,CAAC;UAC/B;QACF,CAAC,MAAM,IAAIe,+BAA+B,EAAE;UAC1CpB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;QACrB;MACF,CAAC,MAAM;QACLA,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;MACrB;IACF,CAAC,CAAC,OAAO0B,CAAC,EAAE;MAAA,IAAAC,kBAAA;MACV,MAAMP,+BAA+B,IAAAO,kBAAA,GACnC,IAAAlB,mCAAgB,EAACN,yBAAyB,EAAED,cAAc,CAAC,cAAAyB,kBAAA,uBADrBA,kBAAA,CAIpC,CAAC;MACL;MACA;MACAX,UAAU,GACRI,+BAA+B,IAC/BT,eAAe,KAAK,IAAAC,gCAAuB,EAAC,CAAC;MAC/C,IAAI,CAACI,UAAU,EAAE;QACflB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAG4B,CAAC,CAAC;QACV,IAAInB,eAAe,EAAE;UACnBkB,WAAW,CAACpB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI,CAAC;QAC/B,CAAC,MAAM;UACLL,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;QACrB;MACF,CAAC,MAAM,IAAIoB,+BAA+B,EAAE;QAC1CpB,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAG,CAAC;MACrB;IACF,CAAC,SAAS;MACR;MACA,IAAIQ,kBAAkB,IAAIQ,UAAU,EAAE;QACpCM,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,aAAa,CAAC,CAAC;MAChD;IACF;EACF;EAEA,SAASC,WAAWA,CAACG,KAAa,EAAQ;IACxCf,gBAAgB,GAAGgB,UAAU,CAACf,IAAI,EAAEc,KAAK,CAAsB;IAC/DpC,aAAa,CAACsC,GAAG,CAACjB,gBAAgB,CAAC;EACrC;EAEAY,WAAW,CAACnB,mBAAmB,aAAnBA,mBAAmB,cAAnBA,mBAAmB,GAAI,CAAC,CAAC;EAErC,IAAIE,kBAAkB,EAAE;IACtBc,MAAM,CAACC,aAAa,CAAC,IAAIC,KAAK,CAAC,eAAe,CAAC,CAAC;EAClD;AACF;AAEO,SAASO,gBAAgBA,CAAA,EAAS;EACvC,KAAK,MAAMC,SAAS,IAAIxC,aAAa,EAAE;IACrCyC,YAAY,CAACD,SAAS,CAAC;EACzB;EACAxC,aAAa,CAAC0C,KAAK,CAAC,CAAC;AACvB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"proxyFactories.js","names":["_devtools","require","THROW","Error","readOnlyHandler","set","defineProperty","deleteProperty","setPrototypeOf","getReadOnlyProxy","object","Proxy","getDynamicReadOnlyProxy","get","ownKeys","getDevHook","target","Object","fromEntries","map","key","freeze"],"sources":["../../../src/internal/proxyFactories.ts"],"sourcesContent":["import { getDevHook } from \"./devtools.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst THROW = (): any => {\n throw new Error(\"Can't modify read-only proxy object\");\n};\n\nconst readOnlyHandler: ProxyHandler<object> = {\n set: THROW,\n defineProperty: THROW,\n deleteProperty: THROW,\n setPrototypeOf: THROW,\n};\n\nexport function getReadOnlyProxy<T extends object>(object: T): T {\n return new Proxy<T>(object, readOnlyHandler);\n}\n\n// First, we want to make accessing property of globals lazy,\n// So we use *Proxy* to make a dynamic accessor for each of these globals.\n// But we also want to keep them working in devtools.\nexport function getDynamicReadOnlyProxy({\n get,\n ownKeys,\n}: Required<Pick<ProxyHandler<object>, \"get\" | \"ownKeys\">>): unknown {\n if (getDevHook()) {\n // In devtools, we extract them at beginning.\n const target = Object.fromEntries(\n (ownKeys(null!) as string[]).map((key) => [key, get(null!, key, null)])\n );\n return getReadOnlyProxy(target);\n }\n return new Proxy(Object.freeze({}), { get });\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA;AACA,MAAMC,KAAK,GAAGA,CAAA,KAAW;EACvB,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;AACxD,CAAC;AAED,MAAMC,eAAqC,GAAG;EAC5CC,GAAG,EAAEH,KAAK;EACVI,cAAc,EAAEJ,KAAK;EACrBK,cAAc,EAAEL,KAAK;EACrBM,cAAc,EAAEN;AAClB,CAAC;AAEM,SAASO,gBAAgBA,CAAmBC,MAAS,EAAK;EAC/D,OAAO,IAAIC,KAAK,CAAID,MAAM,EAAEN,eAAe,CAAC;AAC9C;;AAEA;AACA;AACA;AACO,SAASQ,uBAAuBA,CAAC;EACtCC,GAAG;EACHC;AACuD,CAAC,EAAW;EACnE,IAAI,IAAAC,oBAAU,EAAC,CAAC,EAAE;IAChB;IACA,MAAMC,MAAM,GAAGC,MAAM,CAACC,WAAW,CAC9BJ,OAAO,CAAC,IAAK,CAAC,CAAcK,GAAG,CAAEC,GAAG,IAAK,CAACA,GAAG,EAAEP,GAAG,CAAC,IAAI,EAAGO,GAAG,EAAE,IAAI,CAAC,CAAC,CACxE,CAAC;IACD,OAAOX,gBAAgB,CAACO,MAAM,CAAC;EACjC;EACA,OAAO,IAAIL,KAAK,CAACM,MAAM,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IAAER;EAAI,CAAC,CAAC;AAC9C"}
1
+ {"version":3,"file":"proxyFactories.js","names":["_devtools","require","THROW","Error","readOnlyHandler","set","defineProperty","deleteProperty","setPrototypeOf","getReadOnlyProxy","object","Proxy","getDynamicReadOnlyProxy","get","ownKeys","getDevHook","target","Object","fromEntries","map","key","freeze"],"sources":["../../../src/internal/proxyFactories.ts"],"sourcesContent":["import { getDevHook } from \"./devtools.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst THROW = (): any => {\n throw new Error(\"Can't modify read-only proxy object\");\n};\n\nconst readOnlyHandler: ProxyHandler<object> = {\n set: THROW,\n defineProperty: THROW,\n deleteProperty: THROW,\n setPrototypeOf: THROW,\n};\n\nexport function getReadOnlyProxy<T extends object>(object: T): T {\n return new Proxy<T>(object, readOnlyHandler);\n}\n\n// First, we want to make accessing property of globals lazy,\n// So we use *Proxy* to make a dynamic accessor for each of these globals.\n// But we also want to keep them working in devtools.\nexport function getDynamicReadOnlyProxy({\n get,\n ownKeys,\n}: Required<Pick<ProxyHandler<object>, \"get\" | \"ownKeys\">>): unknown {\n if (getDevHook()) {\n // In devtools, we extract them at beginning.\n const target = Object.fromEntries(\n (ownKeys(null!) as string[]).map((key) => [key, get(null!, key, null)])\n );\n return getReadOnlyProxy(target);\n }\n return new Proxy(Object.freeze({}), { get });\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA;AACA,MAAMC,KAAK,GAAGA,CAAA,KAAW;EACvB,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;AACxD,CAAC;AAED,MAAMC,eAAqC,GAAG;EAC5CC,GAAG,EAAEH,KAAK;EACVI,cAAc,EAAEJ,KAAK;EACrBK,cAAc,EAAEL,KAAK;EACrBM,cAAc,EAAEN;AAClB,CAAC;AAEM,SAASO,gBAAgBA,CAAmBC,MAAS,EAAK;EAC/D,OAAO,IAAIC,KAAK,CAAID,MAAM,EAAEN,eAAe,CAAC;AAC9C;;AAEA;AACA;AACA;AACO,SAASQ,uBAAuBA,CAAC;EACtCC,GAAG;EACHC;AACuD,CAAC,EAAW;EACnE,IAAI,IAAAC,oBAAU,EAAC,CAAC,EAAE;IAChB;IACA,MAAMC,MAAM,GAAGC,MAAM,CAACC,WAAW,CAC9BJ,OAAO,CAAC,IAAK,CAAC,CAAcK,GAAG,CAAEC,GAAG,IAAK,CAACA,GAAG,EAAEP,GAAG,CAAC,IAAI,EAAGO,GAAG,EAAE,IAAI,CAAC,CAAC,CACxE,CAAC;IACD,OAAOX,gBAAgB,CAACO,MAAM,CAAC;EACjC;EACA,OAAO,IAAIL,KAAK,CAACM,MAAM,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IAAER;EAAI,CAAC,CAAC;AAC9C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"registerAppI18n.js","names":["_i18n","require","registerAppI18n","app","meta","i18n","i18nNamespace","getI18nNamespace","id","languages","Object","entries","forEach","lang","resources","addResourceBundle","push","removeResourceBundle","type"],"sources":["../../../src/internal/registerAppI18n.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport { Storyboard } from \"@next-core/types\";\n\nexport function registerAppI18n({ app, meta }: Storyboard) {\n if (meta?.i18n) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const i18nNamespace = getI18nNamespace(\"app\", app.id);\n // Support any language in `meta.i18n`.\n const languages: string[] = [];\n Object.entries(meta.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, i18nNamespace, resources);\n languages.push(lang);\n });\n return () => {\n for (const lang of languages) {\n i18n.removeResourceBundle(lang, i18nNamespace);\n }\n };\n }\n}\n\nexport function getI18nNamespace(\n type: \"app\" | \"widget\" | \"menu\",\n id: string\n): string {\n return `${type}/${id}`;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGO,SAASC,eAAeA,CAAC;EAAEC,GAAG;EAAEC;AAAiB,CAAC,EAAE;EACzD,IAAIA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEC,IAAI,EAAE;IACd;IACA,MAAMC,aAAa,GAAGC,gBAAgB,CAAC,KAAK,EAAEJ,GAAG,CAACK,EAAE,CAAC;IACrD;IACA,MAAMC,SAAmB,GAAG,EAAE;IAC9BC,MAAM,CAACC,OAAO,CAACP,IAAI,CAACC,IAAI,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,IAAI,EAAEC,SAAS,CAAC,KAAK;MACvDT,UAAI,CAACU,iBAAiB,CAACF,IAAI,EAAEP,aAAa,EAAEQ,SAAS,CAAC;MACtDL,SAAS,CAACO,IAAI,CAACH,IAAI,CAAC;IACtB,CAAC,CAAC;IACF,OAAO,MAAM;MACX,KAAK,MAAMA,IAAI,IAAIJ,SAAS,EAAE;QAC5BJ,UAAI,CAACY,oBAAoB,CAACJ,IAAI,EAAEP,aAAa,CAAC;MAChD;IACF,CAAC;EACH;AACF;AAEO,SAASC,gBAAgBA,CAC9BW,IAA+B,EAC/BV,EAAU,EACF;EACR,OAAQ,GAAEU,IAAK,IAAGV,EAAG,EAAC;AACxB"}
1
+ {"version":3,"file":"registerAppI18n.js","names":["_i18n","require","registerAppI18n","app","meta","i18n","i18nNamespace","getI18nNamespace","id","languages","Object","entries","forEach","lang","resources","addResourceBundle","push","removeResourceBundle","type"],"sources":["../../../src/internal/registerAppI18n.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport { Storyboard } from \"@next-core/types\";\n\nexport function registerAppI18n({ app, meta }: Storyboard) {\n if (meta?.i18n) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const i18nNamespace = getI18nNamespace(\"app\", app.id);\n // Support any language in `meta.i18n`.\n const languages: string[] = [];\n Object.entries(meta.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, i18nNamespace, resources);\n languages.push(lang);\n });\n return () => {\n for (const lang of languages) {\n i18n.removeResourceBundle(lang, i18nNamespace);\n }\n };\n }\n}\n\nexport function getI18nNamespace(\n type: \"app\" | \"widget\" | \"menu\",\n id: string\n): string {\n return `${type}/${id}`;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGO,SAASC,eAAeA,CAAC;EAAEC,GAAG;EAAEC;AAAiB,CAAC,EAAE;EACzD,IAAIA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEC,IAAI,EAAE;IACd;IACA,MAAMC,aAAa,GAAGC,gBAAgB,CAAC,KAAK,EAAEJ,GAAG,CAACK,EAAE,CAAC;IACrD;IACA,MAAMC,SAAmB,GAAG,EAAE;IAC9BC,MAAM,CAACC,OAAO,CAACP,IAAI,CAACC,IAAI,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,IAAI,EAAEC,SAAS,CAAC,KAAK;MACvDT,UAAI,CAACU,iBAAiB,CAACF,IAAI,EAAEP,aAAa,EAAEQ,SAAS,CAAC;MACtDL,SAAS,CAACO,IAAI,CAACH,IAAI,CAAC;IACtB,CAAC,CAAC;IACF,OAAO,MAAM;MACX,KAAK,MAAMA,IAAI,IAAIJ,SAAS,EAAE;QAC5BJ,UAAI,CAACY,oBAAoB,CAACJ,IAAI,EAAEP,aAAa,CAAC;MAChD;IACF,CAAC;EACH;AACF;AAEO,SAASC,gBAAgBA,CAC9BW,IAA+B,EAC/BV,EAAU,EACF;EACR,OAAQ,GAAEU,IAAK,IAAGV,EAAG,EAAC;AACxB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomTemplates.js","names":["_CustomTemplates","require","registerCustomTemplates","storyboard","_storyboard$meta","$$registerCustomTemplateProcessed","templates","meta","customTemplates","Array","isArray","tpl","tagName","name","includes","app","id","define"],"sources":["../../../src/internal/registerCustomTemplates.ts"],"sourcesContent":["import { RuntimeStoryboard } from \"@next-core/types\";\nimport { customTemplates } from \"../CustomTemplates.js\";\n\nexport function registerCustomTemplates(storyboard: RuntimeStoryboard) {\n if (storyboard.$$registerCustomTemplateProcessed) {\n return;\n }\n storyboard.$$registerCustomTemplateProcessed = true;\n const templates = storyboard.meta?.customTemplates;\n if (Array.isArray(templates)) {\n for (const tpl of templates) {\n const tagName = tpl.name.includes(\".\")\n ? tpl.name\n : `${storyboard.app.id}.${tpl.name}`;\n customTemplates.define(tagName, tpl);\n }\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAEO,SAASC,uBAAuBA,CAACC,UAA6B,EAAE;EAAA,IAAAC,gBAAA;EACrE,IAAID,UAAU,CAACE,iCAAiC,EAAE;IAChD;EACF;EACAF,UAAU,CAACE,iCAAiC,GAAG,IAAI;EACnD,MAAMC,SAAS,IAAAF,gBAAA,GAAGD,UAAU,CAACI,IAAI,cAAAH,gBAAA,uBAAfA,gBAAA,CAAiBI,eAAe;EAClD,IAAIC,KAAK,CAACC,OAAO,CAACJ,SAAS,CAAC,EAAE;IAC5B,KAAK,MAAMK,GAAG,IAAIL,SAAS,EAAE;MAC3B,MAAMM,OAAO,GAAGD,GAAG,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAClCH,GAAG,CAACE,IAAI,GACP,GAAEV,UAAU,CAACY,GAAG,CAACC,EAAG,IAAGL,GAAG,CAACE,IAAK,EAAC;MACtCL,gCAAe,CAACS,MAAM,CAACL,OAAO,EAAED,GAAG,CAAC;IACtC;EACF;AACF"}
1
+ {"version":3,"file":"registerCustomTemplates.js","names":["_CustomTemplates","require","registerCustomTemplates","storyboard","_storyboard$meta","$$registerCustomTemplateProcessed","templates","meta","customTemplates","Array","isArray","tpl","tagName","name","includes","app","id","define"],"sources":["../../../src/internal/registerCustomTemplates.ts"],"sourcesContent":["import { RuntimeStoryboard } from \"@next-core/types\";\nimport { customTemplates } from \"../CustomTemplates.js\";\n\nexport function registerCustomTemplates(storyboard: RuntimeStoryboard) {\n if (storyboard.$$registerCustomTemplateProcessed) {\n return;\n }\n storyboard.$$registerCustomTemplateProcessed = true;\n const templates = storyboard.meta?.customTemplates;\n if (Array.isArray(templates)) {\n for (const tpl of templates) {\n const tagName = tpl.name.includes(\".\")\n ? tpl.name\n : `${storyboard.app.id}.${tpl.name}`;\n customTemplates.define(tagName, tpl);\n }\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAEO,SAASC,uBAAuBA,CAACC,UAA6B,EAAE;EAAA,IAAAC,gBAAA;EACrE,IAAID,UAAU,CAACE,iCAAiC,EAAE;IAChD;EACF;EACAF,UAAU,CAACE,iCAAiC,GAAG,IAAI;EACnD,MAAMC,SAAS,IAAAF,gBAAA,GAAGD,UAAU,CAACI,IAAI,cAAAH,gBAAA,uBAAfA,gBAAA,CAAiBI,eAAe;EAClD,IAAIC,KAAK,CAACC,OAAO,CAACJ,SAAS,CAAC,EAAE;IAC5B,KAAK,MAAMK,GAAG,IAAIL,SAAS,EAAE;MAC3B,MAAMM,OAAO,GAAGD,GAAG,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAClCH,GAAG,CAACE,IAAI,GACP,GAAEV,UAAU,CAACY,GAAG,CAACC,EAAG,IAAGL,GAAG,CAACE,IAAK,EAAC;MACtCL,gCAAe,CAACS,MAAM,CAACL,OAAO,EAAED,GAAG,CAAC;IACtC;EACF;AACF","ignoreList":[]}