@next-core/runtime 1.22.1 → 1.22.3

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 (46) hide show
  1. package/dist/cjs/CustomTemplates.js +1 -1
  2. package/dist/cjs/CustomTemplates.js.map +1 -1
  3. package/dist/cjs/auth.js +1 -1
  4. package/dist/cjs/auth.js.map +1 -1
  5. package/dist/cjs/createRoot.js +3 -3
  6. package/dist/cjs/createRoot.js.map +1 -1
  7. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +1 -1
  8. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  9. package/dist/cjs/internal/RendererContext.js +5 -5
  10. package/dist/cjs/internal/RendererContext.js.map +1 -1
  11. package/dist/cjs/internal/Router.js +13 -6
  12. package/dist/cjs/internal/Router.js.map +1 -1
  13. package/dist/cjs/internal/data/DataStore.js +3 -3
  14. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  15. package/dist/cjs/internal/devtools.js +1 -1
  16. package/dist/cjs/internal/devtools.js.map +1 -1
  17. package/dist/cjs/internal/historyExtended.js +2 -2
  18. package/dist/cjs/internal/historyExtended.js.map +1 -1
  19. package/dist/cjs/internal/mount.js +1 -1
  20. package/dist/cjs/internal/mount.js.map +1 -1
  21. package/dist/cjs/internal/poll.js +5 -5
  22. package/dist/cjs/internal/poll.js.map +1 -1
  23. package/dist/esm/CustomTemplates.js +3 -4
  24. package/dist/esm/CustomTemplates.js.map +1 -1
  25. package/dist/esm/auth.js +1 -1
  26. package/dist/esm/auth.js.map +1 -1
  27. package/dist/esm/createRoot.js +3 -3
  28. package/dist/esm/createRoot.js.map +1 -1
  29. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +1 -1
  30. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  31. package/dist/esm/internal/RendererContext.js +5 -5
  32. package/dist/esm/internal/RendererContext.js.map +1 -1
  33. package/dist/esm/internal/Router.js +13 -6
  34. package/dist/esm/internal/Router.js.map +1 -1
  35. package/dist/esm/internal/data/DataStore.js +3 -3
  36. package/dist/esm/internal/data/DataStore.js.map +1 -1
  37. package/dist/esm/internal/devtools.js +1 -1
  38. package/dist/esm/internal/devtools.js.map +1 -1
  39. package/dist/esm/internal/historyExtended.js +2 -2
  40. package/dist/esm/internal/historyExtended.js.map +1 -1
  41. package/dist/esm/internal/mount.js +1 -1
  42. package/dist/esm/internal/mount.js.map +1 -1
  43. package/dist/esm/internal/poll.js +5 -5
  44. package/dist/esm/internal/poll.js.map +1 -1
  45. package/dist/types/internal/compute/WidgetI18n.d.ts +1 -1
  46. package/package.json +13 -13
@@ -180,7 +180,7 @@ export class Router {
180
180
  }
181
181
  abortPendingRequest();
182
182
  _classPrivateFieldSet(_this, _prevLocation, location);
183
- (_classPrivateFieldGet4 = _classPrivateFieldGet(_this, _rendererContext)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.dispatchPageLeave();
183
+ (_classPrivateFieldGet4 = _classPrivateFieldGet(_this, _rendererContext)) === null || _classPrivateFieldGet4 === void 0 || _classPrivateFieldGet4.dispatchPageLeave();
184
184
  if (action === "POP") {
185
185
  var storyboard = matchStoryboard(_classPrivateFieldGet(_this, _storyboards), location.pathname);
186
186
  // When a browser action of goBack or goForward is performing,
@@ -208,7 +208,7 @@ function _getBlockMessageBeforePageLave2(detail) {
208
208
  var _classPrivateFieldGet5;
209
209
  var history = getHistory();
210
210
  var previousMessage = history.getBlockMessage();
211
- (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _rendererContext)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.dispatchBeforePageLeave(detail);
211
+ (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _rendererContext)) === null || _classPrivateFieldGet5 === void 0 || _classPrivateFieldGet5.dispatchBeforePageLeave(detail);
212
212
  var message = history.getBlockMessage();
213
213
  if (!previousMessage && message) {
214
214
  // Auto unblock only if new block was introduced by `onBeforePageLeave`.
@@ -261,7 +261,7 @@ function _render3() {
261
261
  _classPrivateFieldSet(this, _renderId, uniqueId("render-id-1"));
262
262
  resetAllComputedMarks();
263
263
  clearResolveCache();
264
- hooks === null || hooks === void 0 || (_hooks$flowApi = hooks.flowApi) === null || _hooks$flowApi === void 0 ? void 0 : _hooks$flowApi.clearCollectWidgetContract();
264
+ hooks === null || hooks === void 0 || (_hooks$flowApi = hooks.flowApi) === null || _hooks$flowApi === void 0 || _hooks$flowApi.clearCollectWidgetContract();
265
265
  var history = getHistory();
266
266
  history.unblock();
267
267
  var renderStartTime = performance.now();
@@ -311,7 +311,7 @@ function _render3() {
311
311
  }
312
312
  }
313
313
  _classPrivateFieldGet(this, _rendererContextTrashCan).clear();
314
- hooks === null || hooks === void 0 || (_hooks$messageDispatc = hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 ? void 0 : _hooks$messageDispatc.reset();
314
+ hooks === null || hooks === void 0 || (_hooks$messageDispatc = hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.reset();
315
315
  if (appChanged) {
316
316
  _classPrivateFieldSet(this, _previousApp, previousApp);
317
317
  window.dispatchEvent(new CustomEvent("app.change", {
@@ -326,7 +326,7 @@ function _render3() {
326
326
  setMode("default");
327
327
  if (currentApp) {
328
328
  var _hooks$checkInstalled, _hooks$auth, _hooks$checkPermissio, _storyboard$meta, _hooks$flowApi2, _storyboard$meta2;
329
- hooks === null || hooks === void 0 || (_hooks$checkInstalled = hooks.checkInstalledApps) === null || _hooks$checkInstalled === void 0 ? void 0 : _hooks$checkInstalled.preCheckInstalledApps(storyboard, appId => !!_internalApiGetAppInBootstrapData(appId));
329
+ hooks === null || hooks === void 0 || (_hooks$checkInstalled = hooks.checkInstalledApps) === null || _hooks$checkInstalled === void 0 || _hooks$checkInstalled.preCheckInstalledApps(storyboard, appId => !!_internalApiGetAppInBootstrapData(appId));
330
330
  var routeHelper = {
331
331
  bailout: output => {
332
332
  if (output.unauthenticated) {
@@ -357,6 +357,13 @@ function _render3() {
357
357
  _classPrivateFieldGet(this, _rendererContextTrashCan).add(prevRendererContext);
358
358
  return;
359
359
  } else {
360
+ var noAuthGuardLoginPath = getRuntime().getMiscSettings().noAuthGuardLoginPath;
361
+ if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {
362
+ redirectTo(noAuthGuardLoginPath, {
363
+ from: location
364
+ });
365
+ return;
366
+ }
360
367
  return {
361
368
  failed: true,
362
369
  output: {
@@ -397,7 +404,7 @@ function _render3() {
397
404
  _classPrivateFieldSet(this, _navConfig, undefined);
398
405
  registerCustomTemplates(storyboard);
399
406
  registerStoryboardFunctions((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.functions, currentApp);
400
- hooks === null || hooks === void 0 || (_hooks$flowApi2 = hooks.flowApi) === null || _hooks$flowApi2 === void 0 ? void 0 : _hooks$flowApi2.collectContract((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.contracts);
407
+ hooks === null || hooks === void 0 || (_hooks$flowApi2 = hooks.flowApi) === null || _hooks$flowApi2 === void 0 || _hooks$flowApi2.collectContract((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.contracts);
401
408
  var failed = false;
402
409
  var output;
403
410
  var stores = [];
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","_this","renderId","listen","_ref","_asyncToGenerator","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","_x","_x2","apply","arguments","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x3","_queuedRender3","_render2","nextLocation","_x4","_render3","_hooks$flowApi","_classPrivateFieldGet6","_this2","flowApi","clearCollectWidgetContract","renderStartTime","performance","now","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","_ref2","menuRequests","menuConfs","Promise","all","mergeMenuConfs","_x5","returnNode","NO_AUTH_GUARD","failed","node","BRICK","type","properties","textContent","runtimeContext","return","blockingList","rendererContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","stores","routes","setInitialMenuRequests","result","child","route","dispatchBeforePageLoad","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","renderTime","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(location);\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const renderStartTime = performance.now();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n []\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n await routeHelper.mergeMenus(output.menuRequests);\n rendererContext.setInitialMenuRequests(output.menuRequests);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n }\n\n const renderTime = performance.now() - renderStartTime;\n window.dispatchEvent(\n new CustomEvent(\"route.render\", {\n detail: {\n renderTime,\n },\n })\n );\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","_this","renderId","listen","_ref","_asyncToGenerator","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","_x","_x2","apply","arguments","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x3","_queuedRender3","_render2","nextLocation","_x4","_render3","_hooks$flowApi","_classPrivateFieldGet6","_this2","flowApi","clearCollectWidgetContract","renderStartTime","performance","now","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","_ref2","menuRequests","menuConfs","Promise","all","mergeMenuConfs","_x5","returnNode","NO_AUTH_GUARD","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","runtimeContext","return","blockingList","rendererContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","stores","routes","setInitialMenuRequests","result","child","route","dispatchBeforePageLoad","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","renderTime","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(location);\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const renderStartTime = performance.now();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n []\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n await routeHelper.mergeMenus(output.menuRequests);\n rendererContext.setInitialMenuRequests(output.menuRequests);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n }\n\n const renderTime = performance.now() - renderStartTime;\n window.dispatchEvent(\n new CustomEvent(\"route.render\", {\n detail: {\n renderTime,\n },\n })\n );\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
@@ -79,7 +79,7 @@ export class DataStore {
79
79
  for (var key in contexts) {
80
80
  var _context$eventTarget;
81
81
  var context = contexts[key];
82
- (_context$eventTarget = context.eventTarget) === null || _context$eventTarget === void 0 ? void 0 : _context$eventTarget.dispatchEvent(new CustomEvent(this.changeEventType, {
82
+ (_context$eventTarget = context.eventTarget) === null || _context$eventTarget === void 0 || _context$eventTarget.dispatchEvent(new CustomEvent(this.changeEventType, {
83
83
  detail: context.value
84
84
  }));
85
85
  }
@@ -163,7 +163,7 @@ export class DataStore {
163
163
  }
164
164
  onChange(dataName, listener) {
165
165
  var _this$data$get2;
166
- (_this$data$get2 = this.data.get(dataName)) === null || _this$data$get2 === void 0 ? void 0 : _this$data$get2.eventTarget.addEventListener(this.changeEventType, listener);
166
+ (_this$data$get2 = this.data.get(dataName)) === null || _this$data$get2 === void 0 || _this$data$get2.eventTarget.addEventListener(this.changeEventType, listener);
167
167
  }
168
168
  waitFor(dataNames) {
169
169
  var _this = this;
@@ -292,7 +292,7 @@ export class DataStore {
292
292
  } = dataConf.resolve;
293
293
  if (trigger && supportContextResolveTriggerBrickLifeCycle.includes(trigger)) {
294
294
  var _this3$rendererContex;
295
- (_this3$rendererContex = _this3.rendererContext) === null || _this3$rendererContex === void 0 ? void 0 : _this3$rendererContex.registerArbitraryLifeCycle(trigger, () => {
295
+ (_this3$rendererContex = _this3.rendererContext) === null || _this3$rendererContex === void 0 || _this3$rendererContex.registerArbitraryLifeCycle(trigger, () => {
296
296
  _this3.updateValue(dataConf.name, undefined, "load");
297
297
  });
298
298
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_x","apply","arguments","lazy","newData","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_x","apply","arguments","lazy","newData","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ export function devtoolsHookEmit(type, payload) {
11
11
  }
12
12
  var emit = () => {
13
13
  var _devtools$emit;
14
- (_devtools$emit = devtools.emit) === null || _devtools$emit === void 0 ? void 0 : _devtools$emit.call(devtools, {
14
+ (_devtools$emit = devtools.emit) === null || _devtools$emit === void 0 || _devtools$emit.call(devtools, {
15
15
  type,
16
16
  payload
17
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","_ref","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":"AAAA,OAAO,IAAMA,oBAAoB,GAAG,2BAA2B;AAC/D,OAAO,IAAMC,mBAAmB,GAAG,8BAA8B;AACjE,OAAO,IAAMC,YAAY,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAE5B,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,IAAMC,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,IAAMM,IAAI,GAAGA,CAAA,KAAY;IAAA,IAAAC,cAAA;IACvB,CAAAA,cAAA,GAAAH,QAAQ,CAACE,IAAI,cAAAC,cAAA,uBAAbA,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;AAEA,OAAO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAEC,IAAA,IAAkC;IAAA,IAAjC;MAAEC;IAAmB,CAAC,GAAAD,IAAA;IACxD,IAAI,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,IAAMO,OAA+B,GAAGY,IAAI,CAACZ,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACc,MAAM;UAC9B;QACF;MACA,KAAKnB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACe,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASb,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BU,4BAA4B;AACvE"}
1
+ {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","_ref","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":"AAAA,OAAO,IAAMA,oBAAoB,GAAG,2BAA2B;AAC/D,OAAO,IAAMC,mBAAmB,GAAG,8BAA8B;AACjE,OAAO,IAAMC,YAAY,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAE5B,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,IAAMC,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,IAAMM,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;AAEA,OAAO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAEC,IAAA,IAAkC;IAAA,IAAjC;MAAEC;IAAmB,CAAC,GAAAD,IAAA;IACxD,IAAI,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,IAAMO,OAA+B,GAAGY,IAAI,CAACZ,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACc,MAAM;UAC9B;QACF;MACA,KAAKnB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACe,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASb,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BU,4BAA4B;AACvE"}
@@ -18,12 +18,12 @@ export function historyExtended(browserHistory) {
18
18
  function push(location, state, callback) {
19
19
  blocked = false;
20
20
  originalPush(location, state);
21
- callback === null || callback === void 0 ? void 0 : callback(blocked);
21
+ callback === null || callback === void 0 || callback(blocked);
22
22
  }
23
23
  function replace(location, state, callback) {
24
24
  blocked = false;
25
25
  originalReplace(location, state);
26
- callback === null || callback === void 0 ? void 0 : callback(blocked);
26
+ callback === null || callback === void 0 || callback(blocked);
27
27
  }
28
28
  function updateQueryFactory(method) {
29
29
  return function updateQuery(query) {
@@ -1 +1 @@
1
- {"version":3,"file":"historyExtended.js","names":["parsePath","getBasePath","_internalApiMatchStoryboard","isOutsideApp","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","arguments","length","undefined","extraQuery","clear","keepHash","_objectWithoutProperties","_excluded","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","set","concat","toString","hash","pushAnchor","_objectSpread","notify","reload","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","startsWith","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 },\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}\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":["parsePath","getBasePath","_internalApiMatchStoryboard","isOutsideApp","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","arguments","length","undefined","extraQuery","clear","keepHash","_objectWithoutProperties","_excluded","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","set","concat","toString","hash","pushAnchor","_objectSpread","notify","reload","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","startsWith","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 },\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}\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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"}
@@ -64,7 +64,7 @@ export function mountTree(root, initializedElement) {
64
64
  if (currentReturn.childElements) {
65
65
  if (currentReturn.tag === RenderTag.ROOT) {
66
66
  var _currentReturn$contai;
67
- (_currentReturn$contai = currentReturn.container) === null || _currentReturn$contai === void 0 ? void 0 : _currentReturn$contai.append(...currentReturn.childElements);
67
+ (_currentReturn$contai = currentReturn.container) === null || _currentReturn$contai === void 0 || _currentReturn$contai.append(...currentReturn.childElements);
68
68
  } else {
69
69
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
70
70
  currentReturn.element.append(...currentReturn.childElements);
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","names":["bindTemplateProxy","getTplStateStore","bindListeners","setRealProperties","RenderTag","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","concat","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","properties","events","runtimeContext","$$tplStateStore","tplStateStoreMap","portal","push","return","childElements","sibling","_currentReturn","currentReturn","tag","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal"],"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 RenderNode,\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 let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\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 = 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 if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | 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}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mount.js","names":["bindTemplateProxy","getTplStateStore","bindListeners","setRealProperties","RenderTag","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","concat","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","properties","events","runtimeContext","$$tplStateStore","tplStateStoreMap","portal","push","return","childElements","sibling","_currentReturn","currentReturn","tag","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal"],"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 RenderNode,\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 let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\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 = 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 if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | 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}\n"],"mappings":"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"}