@next-core/runtime 1.11.1 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/CustomProcessors.js.map +1 -1
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/Dialog.js.map +1 -1
- package/dist/cjs/Notification.js.map +1 -1
- package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/cjs/auth.js +17 -47
- package/dist/cjs/auth.js.map +1 -1
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/getPageInfo.js.map +1 -1
- package/dist/cjs/handleHttpError.js.map +1 -1
- package/dist/cjs/history.js.map +1 -1
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +4 -4
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +4 -6
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +2 -0
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/abortController.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/checkIf.js.map +1 -1
- package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/cjs/internal/compute/computeRealValue.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +10 -5
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js +3 -2
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/compute/getNextStateOfUseBrick.js.map +1 -1
- package/dist/cjs/internal/compute/getTracks.js.map +1 -1
- package/dist/cjs/internal/compute/images.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/compute/markAsComputed.js.map +1 -1
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
- package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
- package/dist/cjs/internal/historyExtended.js.map +1 -1
- package/dist/cjs/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/cjs/internal/matchPath.js.map +1 -1
- package/dist/cjs/internal/matchRoutes.js +2 -2
- package/dist/cjs/internal/matchRoutes.js.map +1 -1
- package/dist/cjs/internal/matchStoryboard.js.map +1 -1
- package/dist/cjs/internal/mediaQuery.js.map +1 -1
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/proxyFactories.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +2 -0
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/test_only.js +22 -0
- package/dist/cjs/internal/test_only.js.map +1 -0
- package/dist/cjs/isStrictMode.js.map +1 -1
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Notification.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/auth.js +20 -46
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/getPageInfo.js.map +1 -1
- package/dist/esm/handleHttpError.js.map +1 -1
- package/dist/esm/history.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
- package/dist/esm/internal/Renderer.js +5 -5
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +4 -6
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +2 -0
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/abortController.js.map +1 -1
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/compute/checkIf.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +11 -6
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +3 -2
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js.map +1 -1
- package/dist/esm/internal/compute/getTracks.js.map +1 -1
- package/dist/esm/internal/compute/images.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
- package/dist/esm/internal/hasInstalledApp.js.map +1 -1
- package/dist/esm/internal/historyExtended.js.map +1 -1
- package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/esm/internal/matchPath.js.map +1 -1
- package/dist/esm/internal/matchRoutes.js +2 -2
- package/dist/esm/internal/matchRoutes.js.map +1 -1
- package/dist/esm/internal/matchStoryboard.js.map +1 -1
- package/dist/esm/internal/mediaQuery.js.map +1 -1
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/proxyFactories.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +2 -0
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/test_only.js +15 -0
- package/dist/esm/internal/test_only.js.map +1 -0
- package/dist/esm/isStrictMode.js.map +1 -1
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/auth.d.ts +8 -19
- package/dist/types/index.d.ts +2 -1
- package/dist/types/internal/Runtime.d.ts +26 -2
- package/dist/types/internal/secret_internals.d.ts +2 -0
- package/dist/types/internal/test_only.d.ts +5 -0
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +13 -14
- package/dist/cjs/internal/checkPermissions.js +0 -102
- package/dist/cjs/internal/checkPermissions.js.map +0 -1
- package/dist/cjs/internal/menu/computeMenuData.js +0 -37
- package/dist/cjs/internal/menu/computeMenuData.js.map +0 -1
- package/dist/cjs/internal/menu/constants.js +0 -13
- package/dist/cjs/internal/menu/constants.js.map +0 -1
- package/dist/cjs/internal/menu/fetchMenuById.js +0 -102
- package/dist/cjs/internal/menu/fetchMenuById.js.map +0 -1
- package/dist/cjs/internal/menu/fetchMenuTitle.js +0 -37
- package/dist/cjs/internal/menu/fetchMenuTitle.js.map +0 -1
- package/dist/cjs/internal/menu/getMenusOfStandaloneApp.js +0 -27
- package/dist/cjs/internal/menu/getMenusOfStandaloneApp.js.map +0 -1
- package/dist/cjs/internal/menu/interfaces.js +0 -4
- package/dist/cjs/internal/menu/interfaces.js.map +0 -1
- package/dist/cjs/internal/menu/loadDynamicMenuItems.js +0 -28
- package/dist/cjs/internal/menu/loadDynamicMenuItems.js.map +0 -1
- package/dist/cjs/internal/menu/mergeMenu.js +0 -74
- package/dist/cjs/internal/menu/mergeMenu.js.map +0 -1
- package/dist/cjs/internal/menu/reorderMenuItems.js +0 -20
- package/dist/cjs/internal/menu/reorderMenuItems.js.map +0 -1
- package/dist/esm/internal/checkPermissions.js +0 -107
- package/dist/esm/internal/checkPermissions.js.map +0 -1
- package/dist/esm/internal/menu/computeMenuData.js +0 -38
- package/dist/esm/internal/menu/computeMenuData.js.map +0 -1
- package/dist/esm/internal/menu/constants.js +0 -4
- package/dist/esm/internal/menu/constants.js.map +0 -1
- package/dist/esm/internal/menu/fetchMenuById.js +0 -104
- package/dist/esm/internal/menu/fetchMenuById.js.map +0 -1
- package/dist/esm/internal/menu/fetchMenuTitle.js +0 -38
- package/dist/esm/internal/menu/fetchMenuTitle.js.map +0 -1
- package/dist/esm/internal/menu/getMenusOfStandaloneApp.js +0 -19
- package/dist/esm/internal/menu/getMenusOfStandaloneApp.js.map +0 -1
- package/dist/esm/internal/menu/interfaces.js +0 -8
- package/dist/esm/internal/menu/interfaces.js.map +0 -1
- package/dist/esm/internal/menu/loadDynamicMenuItems.js +0 -28
- package/dist/esm/internal/menu/loadDynamicMenuItems.js.map +0 -1
- package/dist/esm/internal/menu/mergeMenu.js +0 -78
- package/dist/esm/internal/menu/mergeMenu.js.map +0 -1
- package/dist/esm/internal/menu/reorderMenuItems.js +0 -14
- package/dist/esm/internal/menu/reorderMenuItems.js.map +0 -1
- package/dist/types/internal/checkPermissions.d.ts +0 -17
- package/dist/types/internal/menu/computeMenuData.d.ts +0 -7
- package/dist/types/internal/menu/constants.d.ts +0 -3
- package/dist/types/internal/menu/fetchMenuById.d.ts +0 -3
- package/dist/types/internal/menu/fetchMenuTitle.d.ts +0 -2
- package/dist/types/internal/menu/getMenusOfStandaloneApp.d.ts +0 -2
- package/dist/types/internal/menu/interfaces.d.ts +0 -74
- package/dist/types/internal/menu/loadDynamicMenuItems.d.ts +0 -3
- package/dist/types/internal/menu/mergeMenu.d.ts +0 -3
- package/dist/types/internal/menu/reorderMenuItems.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGeneralGlobals.js","names":["_lodash","require","_i18n","_WidgetI18n","_images","
|
|
1
|
+
{"version":3,"file":"getGeneralGlobals.js","names":["_lodash","require","_i18n","_WidgetI18n","_images","_proxyFactories","_themeAndMode","_getBasePath","_registerAppI18n","_Runtime","getGeneralGlobals","attemptToVisitGlobals","options","globalVariables","variableName","variable","getIndividualGlobal","undefined","collectCoverage","widgetId","widgetVersion","app","appendI18nNamespace","storyboardFunctions","isStoryboardFunction","_hooks$checkPermissio","getBasePath","replace","fakeImageFactory","widgetImagesFactory","imagesFactory","id","isBuildPush","currentVersion","identity","widgetI18nFactory","i18n","getFixedT","getI18nNamespace","filter","Boolean","fakeI18nText","i18nText","getReadOnlyProxy","check","fakeCheckPermissions","hooks","checkPermissions","getTheme","console","href","origin","host","hostname","location","data","en","get","name"],"sources":["../../../../src/internal/compute/getGeneralGlobals.ts"],"sourcesContent":["import { identity } from \"lodash\";\nimport type { MicroApp } from \"@next-core/types\";\nimport { i18n, i18nText } from \"@next-core/i18n\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { ImagesFactory, imagesFactory, widgetImagesFactory } from \"./images.js\";\nimport { getReadOnlyProxy } from \"../proxyFactories.js\";\nimport { getTheme } from \"../../themeAndMode.js\";\nimport { getBasePath } from \"../../getBasePath.js\";\nimport { getI18nNamespace } from \"../registerAppI18n.js\";\nimport { hooks } from \"../Runtime.js\";\n\nexport interface GeneralGlobalsOptions {\n collectCoverage?: unknown;\n widgetId?: string;\n widgetVersion?: string;\n app?: PartialMicroApp;\n appendI18nNamespace?: string;\n storyboardFunctions?: unknown;\n isStoryboardFunction?: boolean;\n}\n\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\">;\n\n// `GeneralGlobals` are globals which are page-state-agnostic,\n// thus they can be used both in storyboard expressions and functions.\nexport function getGeneralGlobals(\n attemptToVisitGlobals: Set<string>,\n options: GeneralGlobalsOptions\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {};\n for (const variableName of attemptToVisitGlobals) {\n const variable = getIndividualGlobal(variableName, options);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n return globalVariables;\n}\n\nfunction getIndividualGlobal(\n variableName: string,\n {\n collectCoverage,\n widgetId,\n widgetVersion,\n app,\n appendI18nNamespace,\n storyboardFunctions,\n isStoryboardFunction,\n }: GeneralGlobalsOptions\n): unknown {\n switch (variableName) {\n case \"BASE_URL\":\n return collectCoverage ? \"/next\" : getBasePath().replace(/\\/$/, \"\");\n case \"FN\":\n return storyboardFunctions;\n case \"IMG\":\n return collectCoverage\n ? fakeImageFactory()\n : widgetId\n ? widgetImagesFactory(widgetId, widgetVersion)\n : imagesFactory(\n app!.id,\n app!.isBuildPush,\n (app as { currentVersion?: string }).currentVersion\n );\n case \"I18N\":\n return collectCoverage\n ? identity\n : widgetId\n ? widgetI18nFactory(widgetId)\n : i18n.getFixedT(\n null,\n [appendI18nNamespace, getI18nNamespace(\"app\", app!.id)].filter(\n Boolean\n ) as string[]\n );\n case \"I18N_TEXT\":\n return collectCoverage ? fakeI18nText : i18nText;\n case \"PERMISSIONS\":\n return getReadOnlyProxy({\n check: collectCoverage\n ? fakeCheckPermissions\n : hooks?.checkPermissions?.checkPermissions,\n });\n case \"THEME\":\n return getReadOnlyProxy({\n getTheme: collectCoverage ? () => \"light\" : getTheme,\n // getCssPropertyValue: collectCoverage ? () => \"\" : getCssPropertyValue,\n });\n case \"console\":\n return isStoryboardFunction ? getReadOnlyProxy(console) : undefined;\n case \"location\":\n return collectCoverage\n ? {\n href: \"http://localhost:3000/functions/test\",\n origin: \"http://localhost:3000\",\n host: \"localhost:3000\",\n hostname: \"localhost\",\n }\n : {\n href: location.href,\n origin: location.origin,\n host: location.host,\n hostname: location.hostname,\n };\n }\n}\n\nfunction fakeI18nText(data: Record<string, string>): string {\n return data?.en;\n}\n\nfunction fakeImageFactory(): ImagesFactory {\n return {\n get(name: string) {\n return `mock/images/${name}`;\n },\n };\n}\n\nfunction fakeCheckPermissions(): boolean {\n return true;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAcA;AACA;AACO,SAASS,iBAAiBA,CAC/BC,qBAAkC,EAClCC,OAA8B,EACL;EACzB,MAAMC,eAAwC,GAAG,CAAC,CAAC;EACnD,KAAK,MAAMC,YAAY,IAAIH,qBAAqB,EAAE;IAChD,MAAMI,QAAQ,GAAGC,mBAAmB,CAACF,YAAY,EAAEF,OAAO,CAAC;IAC3D,IAAIG,QAAQ,KAAKE,SAAS,EAAE;MAC1BJ,eAAe,CAACC,YAAY,CAAC,GAAGC,QAAQ;IAC1C;EACF;EACA,OAAOF,eAAe;AACxB;AAEA,SAASG,mBAAmBA,CAC1BF,YAAoB,EACpB;EACEI,eAAe;EACfC,QAAQ;EACRC,aAAa;EACbC,GAAG;EACHC,mBAAmB;EACnBC,mBAAmB;EACnBC;AACqB,CAAC,EACf;EAAA,IAAAC,qBAAA;EACT,QAAQX,YAAY;IAClB,KAAK,UAAU;MACb,OAAOI,eAAe,GAAG,OAAO,GAAG,IAAAQ,wBAAW,EAAC,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACrE,KAAK,IAAI;MACP,OAAOJ,mBAAmB;IAC5B,KAAK,KAAK;MACR,OAAOL,eAAe,GAClBU,gBAAgB,CAAC,CAAC,GAClBT,QAAQ,GACR,IAAAU,2BAAmB,EAACV,QAAQ,EAAEC,aAAa,CAAC,GAC5C,IAAAU,qBAAa,EACXT,GAAG,CAAEU,EAAE,EACPV,GAAG,CAAEW,WAAW,EACfX,GAAG,CAAiCY,cACvC,CAAC;IACP,KAAK,MAAM;MACT,OAAOf,eAAe,GAClBgB,gBAAQ,GACRf,QAAQ,GACR,IAAAgB,6BAAiB,EAAChB,QAAQ,CAAC,GAC3BiB,UAAI,CAACC,SAAS,CACZ,IAAI,EACJ,CAACf,mBAAmB,EAAE,IAAAgB,iCAAgB,EAAC,KAAK,EAAEjB,GAAG,CAAEU,EAAE,CAAC,CAAC,CAACQ,MAAM,CAC5DC,OACF,CACF,CAAC;IACP,KAAK,WAAW;MACd,OAAOtB,eAAe,GAAGuB,YAAY,GAAGC,cAAQ;IAClD,KAAK,aAAa;MAChB,OAAO,IAAAC,gCAAgB,EAAC;QACtBC,KAAK,EAAE1B,eAAe,GAClB2B,oBAAoB,GACpBC,cAAK,aAALA,cAAK,wBAAArB,qBAAA,GAALqB,cAAK,CAAEC,gBAAgB,cAAAtB,qBAAA,uBAAvBA,qBAAA,CAAyBsB;MAC/B,CAAC,CAAC;IACJ,KAAK,OAAO;MACV,OAAO,IAAAJ,gCAAgB,EAAC;QACtBK,QAAQ,EAAE9B,eAAe,GAAG,MAAM,OAAO,GAAG8B;QAC5C;MACF,CAAC,CAAC;;IACJ,KAAK,SAAS;MACZ,OAAOxB,oBAAoB,GAAG,IAAAmB,gCAAgB,EAACM,OAAO,CAAC,GAAGhC,SAAS;IACrE,KAAK,UAAU;MACb,OAAOC,eAAe,GAClB;QACEgC,IAAI,EAAE,sCAAsC;QAC5CC,MAAM,EAAE,uBAAuB;QAC/BC,IAAI,EAAE,gBAAgB;QACtBC,QAAQ,EAAE;MACZ,CAAC,GACD;QACEH,IAAI,EAAEI,QAAQ,CAACJ,IAAI;QACnBC,MAAM,EAAEG,QAAQ,CAACH,MAAM;QACvBC,IAAI,EAAEE,QAAQ,CAACF,IAAI;QACnBC,QAAQ,EAAEC,QAAQ,CAACD;MACrB,CAAC;EACT;AACF;AAEA,SAASZ,YAAYA,CAACc,IAA4B,EAAU;EAC1D,OAAOA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,EAAE;AACjB;AAEA,SAAS5B,gBAAgBA,CAAA,EAAkB;EACzC,OAAO;IACL6B,GAAGA,CAACC,IAAY,EAAE;MAChB,OAAQ,eAAcA,IAAK,EAAC;IAC9B;EACF,CAAC;AACH;AAEA,SAASb,oBAAoBA,CAAA,EAAY;EACvC,OAAO,IAAI;AACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextStateOfUseBrick.js","names":["StateOfUseBrick","exports","isLazyContentInUseBrick","state","USE_BRICK_PROPERTIES","USE_BRICK_TRANSFORM","USE_BRICK_EVENTS","USE_BRICK_IF","USE_BRICK_LIFECYCLE","USE_BRICK_DATA_SOURCE","getNextStateOfUseBrick","isArray","key","USE_BRICK","USE_BRICK_ITEM","USE_BRICK_SLOTS_ITEM_BRICKS","USE_BRICK_SLOTS_ITEM_BRICKS_ITEM","INITIAL","USE_BRICK_SLOTS","USE_BRICK_SLOTS_ITEM"],"sources":["../../../../src/internal/compute/getNextStateOfUseBrick.ts"],"sourcesContent":["export enum StateOfUseBrick {\n INITIAL,\n USE_BRICK,\n USE_BRICK_ITEM,\n USE_BRICK_PROPERTIES,\n // Compatible mode\n USE_BRICK_TRANSFORM,\n USE_BRICK_EVENTS,\n USE_BRICK_IF,\n USE_BRICK_SLOTS,\n USE_BRICK_SLOTS_ITEM,\n USE_BRICK_SLOTS_ITEM_BRICKS,\n USE_BRICK_SLOTS_ITEM_BRICKS_ITEM,\n USE_BRICK_LIFECYCLE,\n USE_BRICK_DATA_SOURCE,\n}\n\nexport function isLazyContentInUseBrick(\n state: StateOfUseBrick | undefined\n): boolean {\n switch (state) {\n case StateOfUseBrick.USE_BRICK_PROPERTIES:\n case StateOfUseBrick.USE_BRICK_TRANSFORM:\n case StateOfUseBrick.USE_BRICK_EVENTS:\n case StateOfUseBrick.USE_BRICK_IF:\n case StateOfUseBrick.USE_BRICK_LIFECYCLE:\n case StateOfUseBrick.USE_BRICK_DATA_SOURCE:\n return true;\n }\n return false;\n}\n\nexport function getNextStateOfUseBrick(\n state: StateOfUseBrick | undefined,\n isArray?: boolean,\n key?: string\n): StateOfUseBrick | undefined {\n if (isLazyContentInUseBrick(state)) {\n return state;\n }\n if (isArray) {\n switch (state) {\n case StateOfUseBrick.USE_BRICK:\n return StateOfUseBrick.USE_BRICK_ITEM;\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS:\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS_ITEM;\n }\n } else {\n switch (state) {\n case StateOfUseBrick.INITIAL:\n if (key === \"useBrick\") {\n return StateOfUseBrick.USE_BRICK;\n }\n break;\n case StateOfUseBrick.USE_BRICK:\n case StateOfUseBrick.USE_BRICK_ITEM:\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS_ITEM: {\n switch (key) {\n case \"properties\":\n return StateOfUseBrick.USE_BRICK_PROPERTIES;\n case \"transform\":\n return StateOfUseBrick.USE_BRICK_TRANSFORM;\n case \"dataSource\":\n return StateOfUseBrick.USE_BRICK_DATA_SOURCE;\n case \"events\":\n return StateOfUseBrick.USE_BRICK_EVENTS;\n case \"slots\":\n return StateOfUseBrick.USE_BRICK_SLOTS;\n case \"children\":\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS;\n case \"if\":\n return StateOfUseBrick.USE_BRICK_IF;\n case \"lifeCycle\":\n return StateOfUseBrick.USE_BRICK_LIFECYCLE;\n }\n break;\n }\n case StateOfUseBrick.USE_BRICK_SLOTS:\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM;\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM:\n if (key === \"bricks\") {\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS;\n }\n break;\n }\n }\n return StateOfUseBrick.INITIAL;\n}\n"],"mappings":";;;;;;;;IAAYA,eAAe,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAAC,OAAA,CAAAD,eAAA,GAAAA,eAAA;AAiBpB,SAASE,uBAAuBA,CACrCC,KAAkC,EACzB;EACT,QAAQA,KAAK;IACX,KAAKH,eAAe,CAACI,oBAAoB;IACzC,KAAKJ,eAAe,CAACK,mBAAmB;IACxC,KAAKL,eAAe,CAACM,gBAAgB;IACrC,KAAKN,eAAe,CAACO,YAAY;IACjC,KAAKP,eAAe,CAACQ,mBAAmB;IACxC,KAAKR,eAAe,CAACS,qBAAqB;MACxC,OAAO,IAAI;
|
|
1
|
+
{"version":3,"file":"getNextStateOfUseBrick.js","names":["StateOfUseBrick","exports","isLazyContentInUseBrick","state","USE_BRICK_PROPERTIES","USE_BRICK_TRANSFORM","USE_BRICK_EVENTS","USE_BRICK_IF","USE_BRICK_LIFECYCLE","USE_BRICK_DATA_SOURCE","getNextStateOfUseBrick","isArray","key","USE_BRICK","USE_BRICK_ITEM","USE_BRICK_SLOTS_ITEM_BRICKS","USE_BRICK_SLOTS_ITEM_BRICKS_ITEM","INITIAL","USE_BRICK_SLOTS","USE_BRICK_SLOTS_ITEM"],"sources":["../../../../src/internal/compute/getNextStateOfUseBrick.ts"],"sourcesContent":["export enum StateOfUseBrick {\n INITIAL,\n USE_BRICK,\n USE_BRICK_ITEM,\n USE_BRICK_PROPERTIES,\n // Compatible mode\n USE_BRICK_TRANSFORM,\n USE_BRICK_EVENTS,\n USE_BRICK_IF,\n USE_BRICK_SLOTS,\n USE_BRICK_SLOTS_ITEM,\n USE_BRICK_SLOTS_ITEM_BRICKS,\n USE_BRICK_SLOTS_ITEM_BRICKS_ITEM,\n USE_BRICK_LIFECYCLE,\n USE_BRICK_DATA_SOURCE,\n}\n\nexport function isLazyContentInUseBrick(\n state: StateOfUseBrick | undefined\n): boolean {\n switch (state) {\n case StateOfUseBrick.USE_BRICK_PROPERTIES:\n case StateOfUseBrick.USE_BRICK_TRANSFORM:\n case StateOfUseBrick.USE_BRICK_EVENTS:\n case StateOfUseBrick.USE_BRICK_IF:\n case StateOfUseBrick.USE_BRICK_LIFECYCLE:\n case StateOfUseBrick.USE_BRICK_DATA_SOURCE:\n return true;\n }\n return false;\n}\n\nexport function getNextStateOfUseBrick(\n state: StateOfUseBrick | undefined,\n isArray?: boolean,\n key?: string\n): StateOfUseBrick | undefined {\n if (isLazyContentInUseBrick(state)) {\n return state;\n }\n if (isArray) {\n switch (state) {\n case StateOfUseBrick.USE_BRICK:\n return StateOfUseBrick.USE_BRICK_ITEM;\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS:\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS_ITEM;\n }\n } else {\n switch (state) {\n case StateOfUseBrick.INITIAL:\n if (key === \"useBrick\") {\n return StateOfUseBrick.USE_BRICK;\n }\n break;\n case StateOfUseBrick.USE_BRICK:\n case StateOfUseBrick.USE_BRICK_ITEM:\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS_ITEM: {\n switch (key) {\n case \"properties\":\n return StateOfUseBrick.USE_BRICK_PROPERTIES;\n case \"transform\":\n return StateOfUseBrick.USE_BRICK_TRANSFORM;\n case \"dataSource\":\n return StateOfUseBrick.USE_BRICK_DATA_SOURCE;\n case \"events\":\n return StateOfUseBrick.USE_BRICK_EVENTS;\n case \"slots\":\n return StateOfUseBrick.USE_BRICK_SLOTS;\n case \"children\":\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS;\n case \"if\":\n return StateOfUseBrick.USE_BRICK_IF;\n case \"lifeCycle\":\n return StateOfUseBrick.USE_BRICK_LIFECYCLE;\n }\n break;\n }\n case StateOfUseBrick.USE_BRICK_SLOTS:\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM;\n case StateOfUseBrick.USE_BRICK_SLOTS_ITEM:\n if (key === \"bricks\") {\n return StateOfUseBrick.USE_BRICK_SLOTS_ITEM_BRICKS;\n }\n break;\n }\n }\n return StateOfUseBrick.INITIAL;\n}\n"],"mappings":";;;;;;;;IAAYA,eAAe,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAAC,OAAA,CAAAD,eAAA,GAAAA,eAAA;AAiBpB,SAASE,uBAAuBA,CACrCC,KAAkC,EACzB;EACT,QAAQA,KAAK;IACX,KAAKH,eAAe,CAACI,oBAAoB;IACzC,KAAKJ,eAAe,CAACK,mBAAmB;IACxC,KAAKL,eAAe,CAACM,gBAAgB;IACrC,KAAKN,eAAe,CAACO,YAAY;IACjC,KAAKP,eAAe,CAACQ,mBAAmB;IACxC,KAAKR,eAAe,CAACS,qBAAqB;MACxC,OAAO,IAAI;EACf;EACA,OAAO,KAAK;AACd;AAEO,SAASC,sBAAsBA,CACpCP,KAAkC,EAClCQ,OAAiB,EACjBC,GAAY,EACiB;EAC7B,IAAIV,uBAAuB,CAACC,KAAK,CAAC,EAAE;IAClC,OAAOA,KAAK;EACd;EACA,IAAIQ,OAAO,EAAE;IACX,QAAQR,KAAK;MACX,KAAKH,eAAe,CAACa,SAAS;QAC5B,OAAOb,eAAe,CAACc,cAAc;MACvC,KAAKd,eAAe,CAACe,2BAA2B;QAC9C,OAAOf,eAAe,CAACgB,gCAAgC;IAC3D;EACF,CAAC,MAAM;IACL,QAAQb,KAAK;MACX,KAAKH,eAAe,CAACiB,OAAO;QAC1B,IAAIL,GAAG,KAAK,UAAU,EAAE;UACtB,OAAOZ,eAAe,CAACa,SAAS;QAClC;QACA;MACF,KAAKb,eAAe,CAACa,SAAS;MAC9B,KAAKb,eAAe,CAACc,cAAc;MACnC,KAAKd,eAAe,CAACgB,gCAAgC;QAAE;UACrD,QAAQJ,GAAG;YACT,KAAK,YAAY;cACf,OAAOZ,eAAe,CAACI,oBAAoB;YAC7C,KAAK,WAAW;cACd,OAAOJ,eAAe,CAACK,mBAAmB;YAC5C,KAAK,YAAY;cACf,OAAOL,eAAe,CAACS,qBAAqB;YAC9C,KAAK,QAAQ;cACX,OAAOT,eAAe,CAACM,gBAAgB;YACzC,KAAK,OAAO;cACV,OAAON,eAAe,CAACkB,eAAe;YACxC,KAAK,UAAU;cACb,OAAOlB,eAAe,CAACe,2BAA2B;YACpD,KAAK,IAAI;cACP,OAAOf,eAAe,CAACO,YAAY;YACrC,KAAK,WAAW;cACd,OAAOP,eAAe,CAACQ,mBAAmB;UAC9C;UACA;QACF;MACA,KAAKR,eAAe,CAACkB,eAAe;QAClC,OAAOlB,eAAe,CAACmB,oBAAoB;MAC7C,KAAKnB,eAAe,CAACmB,oBAAoB;QACvC,IAAIP,GAAG,KAAK,QAAQ,EAAE;UACpB,OAAOZ,eAAe,CAACe,2BAA2B;QACpD;QACA;IACJ;EACF;EACA,OAAOf,eAAe,CAACiB,OAAO;AAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTracks.js","names":["_cook","require","_storyboard","_evaluate","getTracks","value","contextNames","stateNames","formStateNames","isEvaluable","isPreEvaluated","raw","getPreEvaluatedRaw","isTrackAll","result","trackAll","context","state","formState","track"],"sources":["../../../../src/internal/compute/getTracks.ts"],"sourcesContent":["import { isEvaluable, isTrackAll } from \"@next-core/cook\";\nimport { track, trackAll } from \"@next-core/utils/storyboard\";\nimport {\n PreEvaluated,\n getPreEvaluatedRaw,\n isPreEvaluated,\n} from \"./evaluate.js\";\n\nexport function getTracks(value: unknown) {\n let contextNames: string[] | Set<string> | false = false;\n let stateNames: string[] | Set<string> | false = false;\n let formStateNames: string[] | Set<string> | false = false;\n if (typeof value === \"string\" ? isEvaluable(value) : isPreEvaluated(value)) {\n const raw =\n typeof value === \"string\"\n ? value\n : getPreEvaluatedRaw(value as PreEvaluated);\n if (isTrackAll(raw)) {\n const result = trackAll(raw);\n if (result) {\n contextNames = result.context;\n stateNames = result.state;\n formStateNames = result.formState;\n }\n } else {\n contextNames = track(raw, \"track context\", \"CTX\");\n stateNames = track(raw, \"track state\", \"STATE\");\n formStateNames = track(raw, \"track formstate\", \"FORM_STATE\");\n }\n }\n\n return { contextNames, stateNames, formStateNames };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAMO,SAASG,SAASA,CAACC,KAAc,EAAE;EACxC,IAAIC,YAA4C,GAAG,KAAK;EACxD,IAAIC,UAA0C,GAAG,KAAK;EACtD,IAAIC,cAA8C,GAAG,KAAK;EAC1D,IAAI,OAAOH,KAAK,KAAK,QAAQ,GAAG,IAAAI,iBAAW,EAACJ,KAAK,CAAC,GAAG,IAAAK,wBAAc,EAACL,KAAK,CAAC,EAAE;IAC1E,MAAMM,GAAG,GACP,OAAON,KAAK,KAAK,QAAQ,GACrBA,KAAK,GACL,IAAAO,4BAAkB,EAACP,
|
|
1
|
+
{"version":3,"file":"getTracks.js","names":["_cook","require","_storyboard","_evaluate","getTracks","value","contextNames","stateNames","formStateNames","isEvaluable","isPreEvaluated","raw","getPreEvaluatedRaw","isTrackAll","result","trackAll","context","state","formState","track"],"sources":["../../../../src/internal/compute/getTracks.ts"],"sourcesContent":["import { isEvaluable, isTrackAll } from \"@next-core/cook\";\nimport { track, trackAll } from \"@next-core/utils/storyboard\";\nimport {\n PreEvaluated,\n getPreEvaluatedRaw,\n isPreEvaluated,\n} from \"./evaluate.js\";\n\nexport function getTracks(value: unknown) {\n let contextNames: string[] | Set<string> | false = false;\n let stateNames: string[] | Set<string> | false = false;\n let formStateNames: string[] | Set<string> | false = false;\n if (typeof value === \"string\" ? isEvaluable(value) : isPreEvaluated(value)) {\n const raw =\n typeof value === \"string\"\n ? value\n : getPreEvaluatedRaw(value as PreEvaluated);\n if (isTrackAll(raw)) {\n const result = trackAll(raw);\n if (result) {\n contextNames = result.context;\n stateNames = result.state;\n formStateNames = result.formState;\n }\n } else {\n contextNames = track(raw, \"track context\", \"CTX\");\n stateNames = track(raw, \"track state\", \"STATE\");\n formStateNames = track(raw, \"track formstate\", \"FORM_STATE\");\n }\n }\n\n return { contextNames, stateNames, formStateNames };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAMO,SAASG,SAASA,CAACC,KAAc,EAAE;EACxC,IAAIC,YAA4C,GAAG,KAAK;EACxD,IAAIC,UAA0C,GAAG,KAAK;EACtD,IAAIC,cAA8C,GAAG,KAAK;EAC1D,IAAI,OAAOH,KAAK,KAAK,QAAQ,GAAG,IAAAI,iBAAW,EAACJ,KAAK,CAAC,GAAG,IAAAK,wBAAc,EAACL,KAAK,CAAC,EAAE;IAC1E,MAAMM,GAAG,GACP,OAAON,KAAK,KAAK,QAAQ,GACrBA,KAAK,GACL,IAAAO,4BAAkB,EAACP,KAAqB,CAAC;IAC/C,IAAI,IAAAQ,gBAAU,EAACF,GAAG,CAAC,EAAE;MACnB,MAAMG,MAAM,GAAG,IAAAC,oBAAQ,EAACJ,GAAG,CAAC;MAC5B,IAAIG,MAAM,EAAE;QACVR,YAAY,GAAGQ,MAAM,CAACE,OAAO;QAC7BT,UAAU,GAAGO,MAAM,CAACG,KAAK;QACzBT,cAAc,GAAGM,MAAM,CAACI,SAAS;MACnC;IACF,CAAC,MAAM;MACLZ,YAAY,GAAG,IAAAa,iBAAK,EAACR,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC;MACjDJ,UAAU,GAAG,IAAAY,iBAAK,EAACR,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC;MAC/CH,cAAc,GAAG,IAAAW,iBAAK,EAACR,GAAG,EAAE,iBAAiB,EAAE,YAAY,CAAC;IAC9D;EACF;EAEA,OAAO;IAAEL,YAAY;IAAEC,UAAU;IAAEC;EAAe,CAAC;AACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.js","names":["_lodash","require","_getBasePath","imagesFactory","appId","isBuildPush","version","get","name","getBasePath","suffix","window","APP_ROOT","APP_ID","replace","RegExp","escapeRegExp","startsWith","widgetImagesFactory","widgetId","widgetVersion","_window$PUBLIC_ROOT","PUBLIC_ROOT","PUBLIC_ROOT_WITH_VERSION"],"sources":["../../../../src/internal/compute/images.ts"],"sourcesContent":["import { escapeRegExp } from \"lodash\";\nimport { getBasePath } from \"../../getBasePath.js\";\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport function imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n): ImagesFactory {\n return {\n get(name) {\n if (isBuildPush) {\n return `${getBasePath()}api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/next-builder/object/${name}`;\n }\n\n let suffix = window.APP_ROOT ? `${window.APP_ROOT}-/` : \"\";\n\n // In injecting menus, the current app ID maybe not the same as the\n // target app of the icon, try to replace the app ID as well as its\n // version in the suffix.\n if (window.APP_ID && window.APP_ID !== appId) {\n suffix = suffix\n .replace(\n new RegExp(`(^|/)${escapeRegExp(window.APP_ID)}/`),\n `$1${appId}/`\n )\n .replace(/\\/\\d+\\.\\d+\\.\\d+\\//, `/${version}/`);\n }\n if (!suffix.startsWith(\"/\")) {\n suffix = getBasePath() + suffix;\n }\n return `${suffix}micro-apps/${appId}/images/${name}`;\n },\n };\n}\n\nexport function widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n): ImagesFactory {\n return {\n get(name) {\n return `${window.PUBLIC_ROOT ?? \"\"}bricks/${widgetId}/${\n window.PUBLIC_ROOT_WITH_VERSION && widgetVersion\n ? `${widgetVersion}/`\n : \"\"\n }dist/assets/${name}`;\n },\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMO,SAASE,aAAaA,CAC3BC,KAAa,EACbC,WAAqB,EACrBC,OAAgB,EACD;EACf,OAAO;IACLC,GAAGA,CAACC,IAAI,EAAE;MACR,IAAIH,WAAW,EAAE;QACf,OAAQ,GAAE,IAAAI,wBAAW,
|
|
1
|
+
{"version":3,"file":"images.js","names":["_lodash","require","_getBasePath","imagesFactory","appId","isBuildPush","version","get","name","getBasePath","suffix","window","APP_ROOT","APP_ID","replace","RegExp","escapeRegExp","startsWith","widgetImagesFactory","widgetId","widgetVersion","_window$PUBLIC_ROOT","PUBLIC_ROOT","PUBLIC_ROOT_WITH_VERSION"],"sources":["../../../../src/internal/compute/images.ts"],"sourcesContent":["import { escapeRegExp } from \"lodash\";\nimport { getBasePath } from \"../../getBasePath.js\";\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport function imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n): ImagesFactory {\n return {\n get(name) {\n if (isBuildPush) {\n return `${getBasePath()}api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/next-builder/object/${name}`;\n }\n\n let suffix = window.APP_ROOT ? `${window.APP_ROOT}-/` : \"\";\n\n // In injecting menus, the current app ID maybe not the same as the\n // target app of the icon, try to replace the app ID as well as its\n // version in the suffix.\n if (window.APP_ID && window.APP_ID !== appId) {\n suffix = suffix\n .replace(\n new RegExp(`(^|/)${escapeRegExp(window.APP_ID)}/`),\n `$1${appId}/`\n )\n .replace(/\\/\\d+\\.\\d+\\.\\d+\\//, `/${version}/`);\n }\n if (!suffix.startsWith(\"/\")) {\n suffix = getBasePath() + suffix;\n }\n return `${suffix}micro-apps/${appId}/images/${name}`;\n },\n };\n}\n\nexport function widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n): ImagesFactory {\n return {\n get(name) {\n return `${window.PUBLIC_ROOT ?? \"\"}bricks/${widgetId}/${\n window.PUBLIC_ROOT_WITH_VERSION && widgetVersion\n ? `${widgetVersion}/`\n : \"\"\n }dist/assets/${name}`;\n },\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMO,SAASE,aAAaA,CAC3BC,KAAa,EACbC,WAAqB,EACrBC,OAAgB,EACD;EACf,OAAO;IACLC,GAAGA,CAACC,IAAI,EAAE;MACR,IAAIH,WAAW,EAAE;QACf,OAAQ,GAAE,IAAAI,wBAAW,EAAC,CAAE,iGAAgGD,IAAK,EAAC;MAChI;MAEA,IAAIE,MAAM,GAAGC,MAAM,CAACC,QAAQ,GAAI,GAAED,MAAM,CAACC,QAAS,IAAG,GAAG,EAAE;;MAE1D;MACA;MACA;MACA,IAAID,MAAM,CAACE,MAAM,IAAIF,MAAM,CAACE,MAAM,KAAKT,KAAK,EAAE;QAC5CM,MAAM,GAAGA,MAAM,CACZI,OAAO,CACN,IAAIC,MAAM,CAAE,QAAO,IAAAC,oBAAY,EAACL,MAAM,CAACE,MAAM,CAAE,GAAE,CAAC,EACjD,KAAIT,KAAM,GACb,CAAC,CACAU,OAAO,CAAC,mBAAmB,EAAG,IAAGR,OAAQ,GAAE,CAAC;MACjD;MACA,IAAI,CAACI,MAAM,CAACO,UAAU,CAAC,GAAG,CAAC,EAAE;QAC3BP,MAAM,GAAG,IAAAD,wBAAW,EAAC,CAAC,GAAGC,MAAM;MACjC;MACA,OAAQ,GAAEA,MAAO,cAAaN,KAAM,WAAUI,IAAK,EAAC;IACtD;EACF,CAAC;AACH;AAEO,SAASU,mBAAmBA,CACjCC,QAAgB,EAChBC,aAAsB,EACP;EACf,OAAO;IACLb,GAAGA,CAACC,IAAI,EAAE;MAAA,IAAAa,mBAAA;MACR,OAAQ,IAAAA,mBAAA,GAAEV,MAAM,CAACW,WAAW,cAAAD,mBAAA,cAAAA,mBAAA,GAAI,EAAG,UAASF,QAAS,IACnDR,MAAM,CAACY,wBAAwB,IAAIH,aAAa,GAC3C,GAAEA,aAAc,GAAE,GACnB,EACL,eAAcZ,IAAK,EAAC;IACvB;EACF,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","_utils2","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","contextNames","contextName","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName","formStateNames","formStateStore","getFormStateStore"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.runtimeContext.ctxStore.onChange(contextName, listener);\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n tplStateStore.onChange(stateName, listener);\n }\n }\n if (track.formStateNames) {\n const formStateStore = getFormStateStore(\n brick.runtimeContext,\n \"FORM_STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.formStateNames) {\n formStateStore.onChange(stateName, listener);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAUO,SAASG,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,
|
|
1
|
+
{"version":3,"file":"listenOnTrackingContext.js","names":["_setProperties","require","_utils","_utils2","listenOnTrackingContext","brick","trackingContextList","track","listener","element","setProperties","propName","propValue","runtimeContext","contextNames","contextName","ctxStore","onChange","stateNames","tplStateStore","getTplStateStore","stateName","formStateNames","formStateStore","getFormStateStore"],"sources":["../../../../src/internal/compute/listenOnTrackingContext.ts"],"sourcesContent":["import { setProperties } from \"./setProperties.js\";\nimport type { RuntimeBrick } from \"../interfaces.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\n\nexport interface TrackingContextItem {\n contextNames: string[] | Set<string> | false;\n stateNames: string[] | Set<string> | false;\n formStateNames: string[] | Set<string> | false;\n propName: string;\n propValue: unknown;\n}\n\nexport function listenOnTrackingContext(\n brick: RuntimeBrick,\n trackingContextList: TrackingContextItem[]\n): void {\n for (const track of trackingContextList) {\n const listener = (): void => {\n if (brick.element) {\n setProperties(\n brick.element,\n { [track.propName]: track.propValue },\n brick.runtimeContext\n );\n }\n };\n if (track.contextNames) {\n for (const contextName of track.contextNames) {\n brick.runtimeContext.ctxStore.onChange(contextName, listener);\n }\n }\n if (track.stateNames) {\n const tplStateStore = getTplStateStore(\n brick.runtimeContext,\n \"STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.stateNames) {\n tplStateStore.onChange(stateName, listener);\n }\n }\n if (track.formStateNames) {\n const formStateStore = getFormStateStore(\n brick.runtimeContext,\n \"FORM_STATE\",\n `: \"${track.propValue}\"`\n );\n for (const stateName of track.formStateNames) {\n formStateStore.onChange(stateName, listener);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAUO,SAASG,uBAAuBA,CACrCC,KAAmB,EACnBC,mBAA0C,EACpC;EACN,KAAK,MAAMC,KAAK,IAAID,mBAAmB,EAAE;IACvC,MAAME,QAAQ,GAAGA,CAAA,KAAY;MAC3B,IAAIH,KAAK,CAACI,OAAO,EAAE;QACjB,IAAAC,4BAAa,EACXL,KAAK,CAACI,OAAO,EACb;UAAE,CAACF,KAAK,CAACI,QAAQ,GAAGJ,KAAK,CAACK;QAAU,CAAC,EACrCP,KAAK,CAACQ,cACR,CAAC;MACH;IACF,CAAC;IACD,IAAIN,KAAK,CAACO,YAAY,EAAE;MACtB,KAAK,MAAMC,WAAW,IAAIR,KAAK,CAACO,YAAY,EAAE;QAC5CT,KAAK,CAACQ,cAAc,CAACG,QAAQ,CAACC,QAAQ,CAACF,WAAW,EAAEP,QAAQ,CAAC;MAC/D;IACF;IACA,IAAID,KAAK,CAACW,UAAU,EAAE;MACpB,MAAMC,aAAa,GAAG,IAAAC,uBAAgB,EACpCf,KAAK,CAACQ,cAAc,EACpB,OAAO,EACN,MAAKN,KAAK,CAACK,SAAU,GACxB,CAAC;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACW,UAAU,EAAE;QACxCC,aAAa,CAACF,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC7C;IACF;IACA,IAAID,KAAK,CAACe,cAAc,EAAE;MACxB,MAAMC,cAAc,GAAG,IAAAC,yBAAiB,EACtCnB,KAAK,CAACQ,cAAc,EACpB,YAAY,EACX,MAAKN,KAAK,CAACK,SAAU,GACxB,CAAC;MACD,KAAK,MAAMS,SAAS,IAAId,KAAK,CAACe,cAAc,EAAE;QAC5CC,cAAc,CAACN,QAAQ,CAACI,SAAS,EAAEb,QAAQ,CAAC;MAC9C;IACF;EACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markAsComputed.js","names":["_general","require","computed","WeakSet","markAsComputed","value","isObject","hasBeenComputed","add","Array","isArray","forEach","proto","Object","getPrototypeOf","constructor","values","object","has","resetAllComputedMarks"],"sources":["../../../../src/internal/compute/markAsComputed.ts"],"sourcesContent":["import { isObject } from \"@next-core/utils/general\";\n\nlet computed = new WeakSet();\n\n// The computed (or transformed) result should never be *computed* again.\n// So does the fetched data from a remote api.\nexport function markAsComputed(value: unknown): void {\n if (isObject(value)) {\n if (!hasBeenComputed(value)) {\n computed.add(value);\n if (Array.isArray(value)) {\n value.forEach(markAsComputed);\n } else {\n // Only mark pure objects.\n const proto = Object.getPrototypeOf(value);\n if (!proto || proto.constructor === Object) {\n Object.values(value).forEach(markAsComputed);\n }\n }\n }\n }\n}\n\nexport function hasBeenComputed(object: unknown): boolean {\n return computed.has(object as object);\n}\n\nexport function resetAllComputedMarks(): void {\n computed = new WeakSet();\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAIC,QAAQ,GAAG,IAAIC,OAAO,
|
|
1
|
+
{"version":3,"file":"markAsComputed.js","names":["_general","require","computed","WeakSet","markAsComputed","value","isObject","hasBeenComputed","add","Array","isArray","forEach","proto","Object","getPrototypeOf","constructor","values","object","has","resetAllComputedMarks"],"sources":["../../../../src/internal/compute/markAsComputed.ts"],"sourcesContent":["import { isObject } from \"@next-core/utils/general\";\n\nlet computed = new WeakSet();\n\n// The computed (or transformed) result should never be *computed* again.\n// So does the fetched data from a remote api.\nexport function markAsComputed(value: unknown): void {\n if (isObject(value)) {\n if (!hasBeenComputed(value)) {\n computed.add(value);\n if (Array.isArray(value)) {\n value.forEach(markAsComputed);\n } else {\n // Only mark pure objects.\n const proto = Object.getPrototypeOf(value);\n if (!proto || proto.constructor === Object) {\n Object.values(value).forEach(markAsComputed);\n }\n }\n }\n }\n}\n\nexport function hasBeenComputed(object: unknown): boolean {\n return computed.has(object as object);\n}\n\nexport function resetAllComputedMarks(): void {\n computed = new WeakSet();\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAIC,QAAQ,GAAG,IAAIC,OAAO,CAAC,CAAC;;AAE5B;AACA;AACO,SAASC,cAAcA,CAACC,KAAc,EAAQ;EACnD,IAAI,IAAAC,iBAAQ,EAACD,KAAK,CAAC,EAAE;IACnB,IAAI,CAACE,eAAe,CAACF,KAAK,CAAC,EAAE;MAC3BH,QAAQ,CAACM,GAAG,CAACH,KAAK,CAAC;MACnB,IAAII,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;QACxBA,KAAK,CAACM,OAAO,CAACP,cAAc,CAAC;MAC/B,CAAC,MAAM;QACL;QACA,MAAMQ,KAAK,GAAGC,MAAM,CAACC,cAAc,CAACT,KAAK,CAAC;QAC1C,IAAI,CAACO,KAAK,IAAIA,KAAK,CAACG,WAAW,KAAKF,MAAM,EAAE;UAC1CA,MAAM,CAACG,MAAM,CAACX,KAAK,CAAC,CAACM,OAAO,CAACP,cAAc,CAAC;QAC9C;MACF;IACF;EACF;AACF;AAEO,SAASG,eAAeA,CAACU,MAAe,EAAW;EACxD,OAAOf,QAAQ,CAACgB,GAAG,CAACD,MAAgB,CAAC;AACvC;AAEO,SAASE,qBAAqBA,CAAA,EAAS;EAC5CjB,QAAQ,GAAG,IAAIC,OAAO,CAAC,CAAC;AAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setRealProperties.js","names":["setRealProperties","brick","realProps","propName","propValue","Object","entries","k","v","Error"],"sources":["../../../../src/internal/compute/setRealProperties.ts"],"sourcesContent":["export function setRealProperties(\n brick: HTMLElement,\n realProps: Record<string, unknown> | undefined\n): void {\n if (!realProps) {\n return;\n }\n for (const [propName, propValue] of Object.entries(realProps)) {\n switch (propName) {\n case \"style\":\n case \"dataset\":\n for (const [k, v] of Object.entries(\n propValue as Record<string, unknown>\n )) {\n (brick[propName] as unknown as Record<string, unknown>)[k] = v;\n }\n break;\n case \"constructor\":\n case \"__proto__\":\n case \"innerHTML\":\n // `innerHTML` is dangerous, use `textContent` instead.\n throw new Error(`set \\`${propName}\\` is prohibited`);\n default:\n (brick as unknown as Record<string, unknown>)[propName] = propValue;\n }\n }\n}\n"],"mappings":";;;;;;AAAO,SAASA,iBAAiBA,CAC/BC,KAAkB,EAClBC,SAA8C,EACxC;EACN,IAAI,CAACA,SAAS,EAAE;IACd;EACF;EACA,KAAK,MAAM,CAACC,QAAQ,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACJ,SAAS,CAAC,EAAE;IAC7D,QAAQC,QAAQ;MACd,KAAK,OAAO;MACZ,KAAK,SAAS;QACZ,KAAK,MAAM,CAACI,CAAC,EAAEC,CAAC,CAAC,IAAIH,MAAM,CAACC,OAAO,CACjCF,
|
|
1
|
+
{"version":3,"file":"setRealProperties.js","names":["setRealProperties","brick","realProps","propName","propValue","Object","entries","k","v","Error"],"sources":["../../../../src/internal/compute/setRealProperties.ts"],"sourcesContent":["export function setRealProperties(\n brick: HTMLElement,\n realProps: Record<string, unknown> | undefined\n): void {\n if (!realProps) {\n return;\n }\n for (const [propName, propValue] of Object.entries(realProps)) {\n switch (propName) {\n case \"style\":\n case \"dataset\":\n for (const [k, v] of Object.entries(\n propValue as Record<string, unknown>\n )) {\n (brick[propName] as unknown as Record<string, unknown>)[k] = v;\n }\n break;\n case \"constructor\":\n case \"__proto__\":\n case \"innerHTML\":\n // `innerHTML` is dangerous, use `textContent` instead.\n throw new Error(`set \\`${propName}\\` is prohibited`);\n default:\n (brick as unknown as Record<string, unknown>)[propName] = propValue;\n }\n }\n}\n"],"mappings":";;;;;;AAAO,SAASA,iBAAiBA,CAC/BC,KAAkB,EAClBC,SAA8C,EACxC;EACN,IAAI,CAACA,SAAS,EAAE;IACd;EACF;EACA,KAAK,MAAM,CAACC,QAAQ,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACJ,SAAS,CAAC,EAAE;IAC7D,QAAQC,QAAQ;MACd,KAAK,OAAO;MACZ,KAAK,SAAS;QACZ,KAAK,MAAM,CAACI,CAAC,EAAEC,CAAC,CAAC,IAAIH,MAAM,CAACC,OAAO,CACjCF,SACF,CAAC,EAAE;UACAH,KAAK,CAACE,QAAQ,CAAC,CAAwCI,CAAC,CAAC,GAAGC,CAAC;QAChE;QACA;MACF,KAAK,aAAa;MAClB,KAAK,WAAW;MAChB,KAAK,WAAW;QACd;QACA,MAAM,IAAIC,KAAK,CAAE,SAAQN,QAAS,kBAAiB,CAAC;MACtD;QACGF,KAAK,CAAwCE,QAAQ,CAAC,GAAGC,SAAS;IACvE;EACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","batchUpdate","batchUpdateContextsNames","constructor","getValue","name","_this$data$get","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","load","promise","loaded","Promise","resolve","loading","cache","then","val","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","resolveDataStore","dataConf","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","listenerFactory","track","strictCollectMemberUsage","dep","batchAddListener","computeRealValue","has","set","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\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 AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\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\n constructor(type: T, hostBrick?: RuntimeBrick) {\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 }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n 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 asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\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 for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n const hostProps = await asyncHostProperties;\n if (hasOwnProperty(hostProps, dataConf.name)) {\n value = hostProps[dataConf.name];\n }\n }\n let load: DataStoreItem[\"load\"];\n let isLazyResolve: boolean | undefined = false;\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 isLazyResolve = dataConf.resolve.lazy;\n if (!isLazyResolve) {\n value = await load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if ((!load || isLazyResolve) && dataConf.value !== undefined) {\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 value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: !isLazyResolve,\n deps: [],\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 return true;\n }\n\n 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":["_general","require","_storyboard","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","batchUpdate","batchUpdateContextsNames","constructor","getValue","name","_this$data$get","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","load","promise","loaded","Promise","resolve","loading","cache","then","val","err","error","handleHttpError","callbackFactory","eventCallbackFactory","isObject","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","resolveDataStore","dataConf","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","asyncCheckIf","expose","hostProps","hasOwnProperty","isLazyResolve","undefined","resolveConf","transform","options","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","listenerFactory","track","strictCollectMemberUsage","dep","batchAddListener","computeRealValue","has","set","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\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 AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\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\n constructor(type: T, hostBrick?: RuntimeBrick) {\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 }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n 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 asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\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 for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n const hostProps = await asyncHostProperties;\n if (hasOwnProperty(hostProps, dataConf.name)) {\n value = hostProps[dataConf.name];\n }\n }\n let load: DataStoreItem[\"load\"];\n let isLazyResolve: boolean | undefined = false;\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 isLazyResolve = dataConf.resolve.lazy;\n if (!isLazyResolve) {\n value = await load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if ((!load || isLazyResolve) && dataConf.value !== undefined) {\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 value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: !isLazyResolve,\n deps: [],\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 return true;\n }\n\n 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":";;;;;;AAKA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAIA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAMA,IAAAO,gBAAA,GAAAP,OAAA;AAaO,MAAMQ,SAAS,CAAkC;EACrCC,IAAI;EACJC,IAAI,GAAG,IAAIC,GAAG,CAAwB,CAAC;EACvCC,eAAe;EACfC,YAAY,GAC3B,EAAE;EACYC,SAAS;EAClBC,WAAW,GAAG,KAAK;EACnBC,wBAAwB,GAAa,EAAE;EAE9CC,WAAWA,CAACR,IAAO,EAAEK,SAAwB,EAAE;IAC7C,IAAI,CAACL,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACG,eAAe,GAClB,IAAI,CAACH,IAAI,KAAK,YAAY,GACtB,kBAAkB,GAClB,IAAI,CAACA,IAAI,KAAK,OAAO,GACrB,cAAc,GACd,gBAAgB;IACtB,IAAI,CAACK,SAAS,GAAGA,SAAS;EAC5B;EAEAI,QAAQA,CAACC,IAAY,EAAW;IAAA,IAAAC,cAAA;IAC9B,QAAAA,cAAA,GAAO,IAAI,CAACV,IAAI,CAACW,GAAG,CAACF,IAAI,CAAC,cAAAC,cAAA,uBAAnBA,cAAA,CAAqBE,KAAK;EACnC;EAEAC,sBAAsBA,CAACJ,IAAY,EAAY;IAC7C,MAAMK,WAAW,GAAG,CAACL,IAAI,CAAC;IAC1B,IAAI,CAACT,IAAI,CAACe,OAAO,CAAC,CAACH,KAAK,EAAEI,GAAG,KAAK;MAChC,IAAIJ,KAAK,CAACK,IAAI,EAAE;QACd,MAAMC,QAAQ,GAAGN,KAAK,CAACK,IAAI,CAACE,IAAI,CAAEC,IAAI,IAAKN,WAAW,CAACO,QAAQ,CAACD,IAAI,CAAC,CAAC;QACtEF,QAAQ,IACNJ,WAAW,CAACQ,IAAI,CAACN,GAAG,CAAC,IACrBF,WAAW,CAACQ,IAAI,CAAC,GAAG,IAAI,CAACT,sBAAsB,CAACG,GAAG,CAAC,CAAC;MACzD;IACF,CAAC,CAAC;IACFF,WAAW,CAACS,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,IAAIC,GAAG,CAACV,WAAW,CAAC,CAAC;EAClC;EAEAW,YAAYA,CACVC,MAAgC,EAChCC,MAA4B,EAC5BC,WAAuD,EACjD;IACN,IAAI,CAACvB,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,wBAAwB,GAAGoB,MAAM,CAACG,GAAG,CAAET,IAAI,IAAKA,IAAI,CAACX,IAAI,CAAC;IAC/D,IACE,CAAC,GAAG,IAAIe,GAAG,CAAC,IAAI,CAAClB,wBAAwB,CAAC,CAAC,CAACwB,MAAM,KAClD,IAAI,CAACxB,wBAAwB,CAACwB,MAAM,EACpC;MACA,MAAM,IAAIC,KAAK,CAAE,4CAA2C,CAAC;IAC/D;IAEA,MAAMC,cAA6C,GAAG,CAAC,CAAC;IACxD,MAAMC,cAA6C,GAAG,CAAC,CAAC;IACxD,MAAMC,sBAAgC,GAAG,EAAE;IAE3CR,MAAM,CAACX,OAAO,CAAEoB,GAAG,IAAK;MACtB,MAAM;QAAE1B,IAAI;QAAEG;MAAM,CAAC,GAAGgB,WAAW,CAAC,CAACO,GAAG,CAAC,CAAC;MAC1C,MAAMC,iBAAiB,GAAG,IAAI,CAACpC,IAAI,CAACW,GAAG,CAACF,IAAI,CAAC;MAC7CyB,sBAAsB,CAACZ,IAAI,CAAC,GAAG,IAAI,CAACT,sBAAsB,CAACJ,IAAI,CAAC,CAAC;MACjE2B,iBAAiB,KAAKJ,cAAc,CAACvB,IAAI,CAAC,GAAG2B,iBAAiB,CAAC;MAC/D,IAAI,CAACC,WAAW,CAAC5B,IAAI,EAAYG,KAAK,EAAEe,MAAM,CAAC;IACjD,CAAC,CAAC;IAEFO,sBAAsB,CACnBI,MAAM,CAAElB,IAAI,IAAK,CAACY,cAAc,CAACZ,IAAI,CAAC,CAAC,CACvCL,OAAO,CAAEN,IAAI,IAAK;MACjB,MAAM8B,iBAAiB,GAAG,IAAI,CAACvC,IAAI,CAACW,GAAG,CAACF,IAAI,CAAC;MAC7C8B,iBAAiB,KAAKN,cAAc,CAACxB,IAAI,CAAC,GAAG8B,iBAAiB,CAAC;IACjE,CAAC,CAAC;IAEJ,MAAMC,YAAY,GAAIC,QAAuC,IAAW;MACtE,KAAK,MAAMzB,GAAG,IAAIyB,QAAQ,EAAE;QAAA,IAAAC,oBAAA;QAC1B,MAAMC,OAAO,GAAGF,QAAQ,CAACzB,GAAG,CAAC;QAC7B,CAAA0B,oBAAA,GAAAC,OAAO,CAACC,WAAW,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAqBG,aAAa,CAChC,IAAIC,WAAW,CAAC,IAAI,CAAC5C,eAAe,EAAE;UACpC6C,MAAM,EAAEJ,OAAO,CAAC/B;QAClB,CAAC,CACH,CAAC;MACH;IACF,CAAC;IAED4B,YAAY,CAACR,cAAc,CAAC;IAC5BQ,YAAY,CAACP,cAAc,CAAC;IAE5B,IAAI,CAAC5B,WAAW,GAAG,KAAK;IAExB;EACF;EAEAgC,WAAWA,CACT5B,IAAY,EACZG,KAAc,EACde,MAAiD,EACjDqB,QAAoC,EACpCC,sBAAuC,EACjC;IACN,MAAM7B,IAAI,GAAG,IAAI,CAACpB,IAAI,CAACW,GAAG,CAACF,IAAI,CAAC;IAChC,IAAI,CAACW,IAAI,EAAE;MACT,MAAM,IAAIW,KAAK,CAAE,GAAE,IAAI,CAAChC,IAAK,KAAIU,IAAK,kBAAiB,CAAC;IAC1D;IAEA,IAAIkB,MAAM,KAAK,SAAS,IAAIA,MAAM,KAAK,MAAM,EAAE;MAC7C,IAAI,CAACP,IAAI,CAAC8B,IAAI,EAAE;QACd,MAAM,IAAInB,KAAK,CACZ,eAAcJ,MAAO,KAAI,IAAI,CAAC5B,IAAK,IAAGU,IAAK,wBAC9C,CAAC;MACH;MAEA,IAAI0C,OAAqC;MACzC,IAAIxB,MAAM,KAAK,MAAM,EAAE;QACrB;QACA,IAAIP,IAAI,CAACgC,MAAM,EAAE;UACfD,OAAO,GAAGE,OAAO,CAACC,OAAO,CAAClC,IAAI,CAACR,KAAK,CAAC;QACvC,CAAC,MAAM,IAAIQ,IAAI,CAACmC,OAAO,EAAE;UACvBJ,OAAO,GAAG/B,IAAI,CAACmC,OAAO;QACxB;MACF;MAEA,IAAI,CAACJ,OAAO,EAAE;QACZA,OAAO,GAAG/B,IAAI,CAACmC,OAAO,GAAGnC,IAAI,CAAC8B,IAAI,CAAC;UACjCM,KAAK,EAAE7B,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,QAAQ;UAC/C,GAAIf;QACN,CAAC,CAAC;QACF;QACAuC,OAAO,CAACM,IAAI,CACTC,GAAG,IAAK;UACPtC,IAAI,CAACgC,MAAM,GAAG,IAAI;UAClBhC,IAAI,CAACR,KAAK,GAAG8C,GAAG;UAChBtC,IAAI,CAACwB,WAAW,CAACC,aAAa,CAC5B,IAAIC,WAAW,CAAC,IAAI,CAAC5C,eAAe,EAAE;YACpC6C,MAAM,EAAE3B,IAAI,CAACR;UACf,CAAC,CACH,CAAC;QACH,CAAC,EACA+C,GAAG,IAAK;UACP;UACA,IAAI,EAACX,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEY,KAAK,GAAE;YACpB,IAAAC,gCAAe,EAACF,GAAG,CAAC;UACtB;QACF,CACF,CAAC;MACH;MAEA,IAAIX,QAAQ,EAAE;QACZ,MAAMc,eAAe,GAAG,IAAAC,mCAAoB,EAC1Cf,QAAQ,EACRC,sBACF,CAAC;QAEDE,OAAO,CAACM,IAAI,CACTC,GAAG,IAAK;UACPI,eAAe,CAAC,SAAS,CAAC,CAAC;YAAElD,KAAK,EAAE8C;UAAI,CAAC,CAAC;UAC1CI,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC,EACAH,GAAG,IAAK;UACPG,eAAe,CAAC,OAAO,CAAC,CAACH,GAAG,CAAC;UAC7BG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9B,CACF,CAAC;MACH;MAEA;IACF;IAEA,IAAInC,MAAM,KAAK,SAAS,EAAE;MACxBP,IAAI,CAACR,KAAK,GAAGA,KAAK;IACpB,CAAC,MAAM;MACL,IAAI,IAAAoD,iBAAQ,EAAC5C,IAAI,CAACR,KAAK,CAAC,EAAE;QACxBqD,MAAM,CAACC,MAAM,CAAC9C,IAAI,CAACR,KAAK,EAAEA,KAAK,CAAC;MAClC,CAAC,MAAM;QACL;QACAuD,OAAO,CAACC,IAAI,CACT,gCAA+B,IAAI,CAACrE,IAAK,IAAGU,IAAK,wDACpD,CAAC;QACDW,IAAI,CAACR,KAAK,GAAGA,KAAK;MACpB;IACF;IAEA,IAAI,IAAI,CAACP,WAAW,EAAE;IAEtBe,IAAI,CAACwB,WAAW,CAACC,aAAa,CAC5B,IAAIC,WAAW,CAAC,IAAI,CAAC5C,eAAe,EAAE;MACpC6C,MAAM,EAAE3B,IAAI,CAACR;IACf,CAAC,CACH,CAAC;EACH;EAEAyD,MAAMA,CACJC,SAAoC,EACpCC,cAA8B,EAC9BC,mBAAqC,EAC/B;IACN,IAAIC,KAAK,CAACC,OAAO,CAACJ,SAAS,CAAC,IAAIA,SAAS,CAACxC,MAAM,GAAG,CAAC,EAAE;MACpD,MAAM6C,OAAO,GAAG,IAAAC,kCAAgB,EAC9BN,SAAS,EACRO,QAAqB,IACpB,IAAI,CAACvB,OAAO,CAACuB,QAAQ,EAAEN,cAAc,EAAEC,mBAAmB,CAAC,EAC7D,IAAI,CAACzE,IACP,CAAC;MACD,IAAI,CAACI,YAAY,CAACmB,IAAI,CAACqD,OAAO,CAAC;IACjC;EACF;EAEAG,QAAQA,CAACC,QAAgB,EAAEC,QAAuB,EAAQ;IAAA,IAAAC,eAAA;IACxD,CAAAA,eAAA,OAAI,CAACjF,IAAI,CACNW,GAAG,CAACoE,QAAQ,CAAC,cAAAE,eAAA,uBADhBA,eAAA,CAEIrC,WAAW,CAACsC,gBAAgB,CAAC,IAAI,CAAChF,eAAe,EAAE8E,QAAQ,CAAC;EAClE;EAEA,MAAMG,OAAOA,CAACC,SAAiC,EAAiB;IAC9D,KAAK,MAAM;MAAEC;IAAgB,CAAC,IAAI,IAAI,CAAClF,YAAY,EAAE;MACnD,MAAMkD,OAAO,CAACiC,GAAG,CACf,CAAC,GAAGF,SAAS,CAAC,CAACvD,GAAG,CAAE0D,GAAG,IAAK;QAC1B,MAAMC,CAAC,GAAGH,eAAe,CAAC1E,GAAG,CAAC4E,GAAG,CAAC;QAClC,OAAOC,CAAC;MACV,CAAC,CACH,CAAC;IACH;EACF;EAEA,MAAMC,UAAUA,CAAA,EAAkB;IAChC,KAAK,MAAM;MAAEC;IAAc,CAAC,IAAI,IAAI,CAACvF,YAAY,EAAE;MACjD,MAAMuF,aAAa;IACrB;EACF;EAEA,MAAcpC,OAAOA,CACnBuB,QAAqB,EACrBN,cAA8B,EAC9BC,mBAAqC,EACnB;IAClB,IAAI,EAAE,MAAM,IAAAmB,qBAAY,EAACd,QAAQ,EAAEN,cAAc,CAAC,CAAC,EAAE;MACnD,OAAO,KAAK;IACd;IACA,IAAI3D,KAAc;IAClB,IACE4D,mBAAmB,KAClB,IAAI,CAACzE,IAAI,KAAK,OAAO,GAAG8E,QAAQ,CAACe,MAAM,GAAG,IAAI,CAAC7F,IAAI,KAAK,YAAY,CAAC,EACtE;MACA,MAAM8F,SAAS,GAAG,MAAMrB,mBAAmB;MAC3C,IAAI,IAAAsB,uBAAc,EAACD,SAAS,EAAEhB,QAAQ,CAACpE,IAAI,CAAC,EAAE;QAC5CG,KAAK,GAAGiF,SAAS,CAAChB,QAAQ,CAACpE,IAAI,CAAC;MAClC;IACF;IACA,IAAIyC,IAA2B;IAC/B,IAAI6C,aAAkC,GAAG,KAAK;IAC9C,IAAInF,KAAK,KAAKoF,SAAS,EAAE;MACvB,IAAInB,QAAQ,CAACvB,OAAO,EAAE;QACpB,MAAM2C,WAAW,GAAG;UAClBC,SAAS,EAAE,OAAO;UAClB,GAAGrB,QAAQ,CAACvB;QACd,CAAC;QACD,IAAI,MAAM,IAAAqC,qBAAY,EAACd,QAAQ,CAACvB,OAAO,EAAEiB,cAAc,CAAC,EAAE;UACxDrB,IAAI,GAAG,MAAOiD,OAAO,IACnB,CACG,MAAM,IAAAC,wBAAW,EAACH,WAAW,EAAE1B,cAAc,EAAE4B,OAAO,CAAC,EAGxDvF,KAAK;UACTmF,aAAa,GAAGlB,QAAQ,CAACvB,OAAO,CAAC+C,IAAI;UACrC,IAAI,CAACN,aAAa,EAAE;YAClBnF,KAAK,GAAG,MAAMsC,IAAI,CAAC,CAAC;UACtB;QACF,CAAC,MAAM,IAAI,CAAC,IAAA4C,uBAAc,EAACjB,QAAQ,EAAE,OAAO,CAAC,EAAE;UAC7C,OAAO,KAAK;QACd;MACF;MACA,IAAI,CAAC,CAAC3B,IAAI,IAAI6C,aAAa,KAAKlB,QAAQ,CAACjE,KAAK,KAAKoF,SAAS,EAAE;QAC5D;QACA;QACApF,KAAK,GAAG,MAAM,IAAA0F,uCAAqB,EAACzB,QAAQ,CAACjE,KAAK,EAAE2D,cAAc,CAAC;MACrE;IACF;IAEA,MAAMgC,OAAsB,GAAG;MAC7B3F,KAAK;MACL;MACAgC,WAAW,EAAE,IAAI4D,WAAW,CAAC,CAAC;MAC9BtD,IAAI;MACJE,MAAM,EAAE,CAAC2C,aAAa;MACtB9E,IAAI,EAAE;IACR,CAAC;IAED,IAAI4D,QAAQ,CAACC,QAAQ,EAAE;MACrByB,OAAO,CAAC3D,WAAW,CAACsC,gBAAgB,CAClC,IAAI,CAAChF,eAAe,EACpB,IAAAuG,8BAAe,EAAC5B,QAAQ,CAACC,QAAQ,EAAEP,cAAc,CACnD,CAAC;IACH;IAEA,IAAIM,QAAQ,CAAC6B,KAAK,EAAE;MAClB,MAAMzF,IAAI,GAAG,IAAA0F,oCAAwB,EACnCzD,IAAI,GAAG2B,QAAQ,CAACvB,OAAO,GAAGuB,QAAQ,CAACjE,KAAK,EACxC,IAAI,CAACb,IACP,CAAC;MACD,CAACmD,IAAI,KAAKqD,OAAO,CAACtF,IAAI,GAAG,CAAC,GAAGA,IAAI,CAAC,CAAC;MACnC,KAAK,MAAM2F,GAAG,IAAI3F,IAAI,EAAE;QACtB,IAAI,CAAC6D,QAAQ,CACX8B,GAAG,EACH,IAAI,CAACC,gBAAgB,CAAC,MAAM;UAC1B,IAAI3D,IAAI,EAAE;YACR,IAAI,CAACb,WAAW,CAACwC,QAAQ,CAACpE,IAAI,EAAE;cAAE+C,KAAK,EAAE;YAAU,CAAC,EAAE,SAAS,CAAC;UAClE,CAAC,MAAM;YACL,IAAI,CAACnB,WAAW,CACdwC,QAAQ,CAACpE,IAAI,EACb,IAAAqG,kCAAgB,EAACjC,QAAQ,CAACjE,KAAK,EAAE2D,cAAc,CAAC,EAChD,SACF,CAAC;UACH;QACF,CAAC,EAAEM,QAAQ,CACb,CAAC;MACH;IACF;IAEA,IAAI,IAAI,CAAC7E,IAAI,CAAC+G,GAAG,CAAClC,QAAQ,CAACpE,IAAI,CAAC,EAAE;MAChC,MAAM,IAAIsB,KAAK,CACZ,GAAE,IAAI,CAAChC,IAAK,KAAI8E,QAAQ,CAACpE,IAAK,6BACjC,CAAC;IACH;IACA,IAAI,CAACT,IAAI,CAACgH,GAAG,CAACnC,QAAQ,CAACpE,IAAI,EAAE8F,OAAO,CAAC;IAErC,OAAO,IAAI;EACb;EAEAM,gBAAgBA,CACd7B,QAAuB,EACvBiC,WAAwB,EACT;IACf,OAAQC,KAA0B,IAAW;MAC3C,IACE,IAAI,CAAC7G,WAAW,IAChB,IAAI,CAACC,wBAAwB,CAACe,QAAQ,CAAC4F,WAAW,CAACxG,IAAI,CAAC,EACxD;QACA;MACF;MACAuE,QAAQ,CAACkC,KAAK,CAAC;IACjB,CAAC;EACH;AACF;AAACC,OAAA,CAAArH,SAAA,GAAAA,SAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getProviderBrick.js","names":["_loader","require","_Runtime","pool","Map","getProviderBrick","provider","_hooks$flowApi","isFlowApi","hooks","flowApi","isFlowApiProvider","FLOW_API_PROVIDER","brick","get","includes","customElements","registerFlowApiProvider","loadBricksImperatively","getBrickPackages","Error","document","createElement","set"],"sources":["../../../../src/internal/data/getProviderBrick.ts"],"sourcesContent":["import { loadBricksImperatively } from \"@next-core/loader\";\nimport { getBrickPackages, hooks } from \"../Runtime.js\";\n\nconst pool = new Map<string, HTMLElement>();\nexport async function getProviderBrick(provider: string): Promise<HTMLElement> {\n const isFlowApi = hooks?.flowApi?.isFlowApiProvider(provider);\n if (isFlowApi) {\n provider = hooks!.flowApi!.FLOW_API_PROVIDER;\n }\n\n let brick = pool.get(provider);\n if (brick) {\n return brick;\n }\n\n if (provider.includes(\"-\") && !customElements.get(provider)) {\n if (isFlowApi) {\n hooks!.flowApi!.registerFlowApiProvider();\n } else {\n await loadBricksImperatively([provider], getBrickPackages());\n\n if (!customElements.get(provider)) {\n throw new Error(`Provider not defined: \"${provider}\".`);\n }\n }\n }\n\n brick = document.createElement(provider);\n pool.set(provider, brick);\n return brick;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,MAAME,IAAI,GAAG,IAAIC,GAAG,
|
|
1
|
+
{"version":3,"file":"getProviderBrick.js","names":["_loader","require","_Runtime","pool","Map","getProviderBrick","provider","_hooks$flowApi","isFlowApi","hooks","flowApi","isFlowApiProvider","FLOW_API_PROVIDER","brick","get","includes","customElements","registerFlowApiProvider","loadBricksImperatively","getBrickPackages","Error","document","createElement","set"],"sources":["../../../../src/internal/data/getProviderBrick.ts"],"sourcesContent":["import { loadBricksImperatively } from \"@next-core/loader\";\nimport { getBrickPackages, hooks } from \"../Runtime.js\";\n\nconst pool = new Map<string, HTMLElement>();\nexport async function getProviderBrick(provider: string): Promise<HTMLElement> {\n const isFlowApi = hooks?.flowApi?.isFlowApiProvider(provider);\n if (isFlowApi) {\n provider = hooks!.flowApi!.FLOW_API_PROVIDER;\n }\n\n let brick = pool.get(provider);\n if (brick) {\n return brick;\n }\n\n if (provider.includes(\"-\") && !customElements.get(provider)) {\n if (isFlowApi) {\n hooks!.flowApi!.registerFlowApiProvider();\n } else {\n await loadBricksImperatively([provider], getBrickPackages());\n\n if (!customElements.get(provider)) {\n throw new Error(`Provider not defined: \"${provider}\".`);\n }\n }\n }\n\n brick = document.createElement(provider);\n pool.set(provider, brick);\n return brick;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,MAAME,IAAI,GAAG,IAAIC,GAAG,CAAsB,CAAC;AACpC,eAAeC,gBAAgBA,CAACC,QAAgB,EAAwB;EAAA,IAAAC,cAAA;EAC7E,MAAMC,SAAS,GAAGC,cAAK,aAALA,cAAK,wBAAAF,cAAA,GAALE,cAAK,CAAEC,OAAO,cAAAH,cAAA,uBAAdA,cAAA,CAAgBI,iBAAiB,CAACL,QAAQ,CAAC;EAC7D,IAAIE,SAAS,EAAE;IACbF,QAAQ,GAAGG,cAAK,CAAEC,OAAO,CAAEE,iBAAiB;EAC9C;EAEA,IAAIC,KAAK,GAAGV,IAAI,CAACW,GAAG,CAACR,QAAQ,CAAC;EAC9B,IAAIO,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EAEA,IAAIP,QAAQ,CAACS,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACF,GAAG,CAACR,QAAQ,CAAC,EAAE;IAC3D,IAAIE,SAAS,EAAE;MACbC,cAAK,CAAEC,OAAO,CAAEO,uBAAuB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACL,MAAM,IAAAC,8BAAsB,EAAC,CAACZ,QAAQ,CAAC,EAAE,IAAAa,yBAAgB,EAAC,CAAC,CAAC;MAE5D,IAAI,CAACH,cAAc,CAACF,GAAG,CAACR,QAAQ,CAAC,EAAE;QACjC,MAAM,IAAIc,KAAK,CAAE,0BAAyBd,QAAS,IAAG,CAAC;MACzD;IACF;EACF;EAEAO,KAAK,GAAGQ,QAAQ,CAACC,aAAa,CAAChB,QAAQ,CAAC;EACxCH,IAAI,CAACoB,GAAG,CAACjB,QAAQ,EAAEO,KAAK,CAAC;EACzB,OAAOA,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","cache","Map","resolveData","resolveConf","runtimeContext","options","useProvider","method","args","onReject","legacyProvider","provider","Error","providerBrick","actualArgs","Promise","all","getProviderBrick","asyncComputeRealValue","promise","resolveByProvider","transform","data","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","get","_hooks$flowApi","finalArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","resolve","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { hooks } from \"../Runtime.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const legacyProvider = (resolveConf as { provider?: string }).provider;\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n data = await promise;\n // The fetched data and its inner objects should never be *injected* again.\n // recursiveMarkAsInjected(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[]\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick.resolve(...finalArgs);\n })();\n\n cache.set(cacheKey, promise);\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":";;;;;;;;AAKA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAEA,MAAMG,KAAK,GAAG,IAAIC,GAAG,
|
|
1
|
+
{"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","cache","Map","resolveData","resolveConf","runtimeContext","options","useProvider","method","args","onReject","legacyProvider","provider","Error","providerBrick","actualArgs","Promise","all","getProviderBrick","asyncComputeRealValue","promise","resolveByProvider","transform","data","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","get","_hooks$flowApi","finalArgs","hooks","flowApi","isFlowApiProvider","getArgsOfFlowApi","resolve","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { hooks } from \"../Runtime.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const legacyProvider = (resolveConf as { provider?: string }).provider;\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n data = await promise;\n // The fetched data and its inner objects should never be *injected* again.\n // recursiveMarkAsInjected(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[]\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick.resolve(...finalArgs);\n })();\n\n cache.set(cacheKey, promise);\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":";;;;;;;;AAKA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAEA,MAAMG,KAAK,GAAG,IAAIC,GAAG,CAA2B,CAAC;AAc1C,eAAeC,WAAWA,CAC/BC,WAAwB,EACxBC,cAA8B,EAC9BC,OAAwB,EACxB;EACA,MAAM;IAAEC,WAAW;IAAEC,MAAM,GAAG,SAAS;IAAEC,IAAI,GAAG,EAAE;IAAEC;EAAS,CAAC,GAAGN,WAAW;EAE5E,MAAMO,cAAc,GAAIP,WAAW,CAA2BQ,QAAQ;EACtE,IAAID,cAAc,IAAI,CAACJ,WAAW,EAAE;IAClC,MAAM,IAAIM,KAAK,CACZ,2BAA0BF,cAAe,4DAC5C,CAAC;EACH;EAEA,MAAM,CAACG,aAAa,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CACpD,IAAAC,kCAAgB,EAACX,WAAW,CAAC,EAG7B,IAAAY,uCAAqB,EAACV,IAAI,EAAEJ,cAAc,CAAC,CAC5C,CAAC;EAEF,MAAMe,OAAO,GAAGC,iBAAiB,CAC/BP,aAAa,EACbP,WAAW,EACXC,MAAM,EACNO,UAAU,EACVT,OAAO,EACPG,IACF,CAAC;EAED,IAAI;IAAEa;EAAU,CAAC,GAAGlB,WAAW;EAC/B,IAAImB,IAAa;EAEjB,IAAI;IACFA,IAAI,GAAG,MAAMH,OAAO;IACpB;IACA;EACF,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,IAAIC,yBAAyB,CAACf,QAAQ,CAAC,EAAE;MACvCY,SAAS,GAAGZ,QAAQ,CAACY,SAAS;MAC9BC,IAAI,GAAGC,KAAK;IACd,CAAC,MAAM;MACL,MAAMA,KAAK;IACb;EACF;EAEA,IAAI,CAACF,SAAS,EAAE;IACd,OAAOC,IAAI;EACb;;EAEA;EACA,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;IACjC,OAAO;MAAE,CAACA,SAAS,GAAGC;IAAK,CAAC;EAC9B;EAEA,OAAO,IAAAJ,uCAAqB,EAACG,SAAS,EAAE;IAAE,GAAGjB,cAAc;IAAEkB;EAAK,CAAC,CAAC;AACtE;AAEO,SAASG,iBAAiBA,CAAA,EAAG;EAClCzB,KAAK,CAAC0B,KAAK,CAAC,CAAC;AACf;AAEO,eAAeN,iBAAiBA,CACrCO,KAA+B,EAC/BrB,WAAmB,EACnBC,MAAc,EACdC,IAAe,EACfH,OAAwB,EACxBuB,YAAwB,EACxB;EACA,IAAIC,QAAgB;EACpB,IAAI;IACF;IACA;IACAA,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBzB,WAAW;MACXC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOwB,CAAC,EAAE;IACV,IAAI,CAACJ,YAAY,EAAE;MACjB,MAAMI,CAAC;IACT;IACAH,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBzB,WAAW;MACXC,MAAM;MACNqB;IACF,CAAC,CAAC;EACJ;EAEA,IAAIT,OAAqC;EACzC,IAAI,CAAAd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEL,KAAK,MAAK,QAAQ,EAAE;IAC/BmB,OAAO,GAAGnB,KAAK,CAACiC,GAAG,CAACJ,QAAQ,CAAC;EAC/B;EACA,IAAI,CAACV,OAAO,EAAE;IACZA,OAAO,GAAG,CAAC,YAAY;MAAA,IAAAe,cAAA;MACrB,MAAMC,SAAS,GAAGC,cAAK,aAALA,cAAK,gBAAAF,cAAA,GAALE,cAAK,CAAEC,OAAO,cAAAH,cAAA,eAAdA,cAAA,CAAgBI,iBAAiB,CAAChC,WAAW,CAAC,GAC5D,MAAM8B,cAAK,CAACC,OAAO,CAACE,gBAAgB,CAACjC,WAAW,EAAEE,IAAI,EAAED,MAAM,CAAC,GAC/DC,IAAI;MACR,OAAOmB,KAAK,CAACa,OAAO,CAAC,GAAGL,SAAS,CAAC;IACpC,CAAC,EAAE,CAAC;IAEJnC,KAAK,CAACyC,GAAG,CAACZ,QAAQ,EAAEV,OAAO,CAAC;EAC9B;EAEA,OAAOA,OAAO;AAChB;AAEA,SAASK,yBAAyBA,CAChCf,QAAkC,EACG;EACrC,OAAO,CAAC,EAAEA,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAA8BY,SAAS;AAC3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDataStore.js","names":["_storyboard","require","resolveDataStore","contextConfs","resolveContext","keyword","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","_pendingDeps$get","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","_pendingDeps$get2","add","resolved","delete","left","Error","scheduleNext","scheduleAsSerial","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","collectMemberUsage","if","value","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\"\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(contextConfs, keyword);\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\"\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const stats = collectMemberUsage(\n [contextConf.if, contextConf.value, contextConf.resolve],\n keyword\n );\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolveDataStore.js","names":["_storyboard","require","resolveDataStore","contextConfs","resolveContext","keyword","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","_pendingDeps$get","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","_pendingDeps$get2","add","resolved","delete","left","Error","scheduleNext","scheduleAsSerial","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","collectMemberUsage","if","value","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\"\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(contextConfs, keyword);\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\"\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const stats = collectMemberUsage(\n [contextConf.if, contextConf.value, contextConf.resolve],\n keyword\n );\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasInstalledApp.js","names":["_compareVersions","require","_Runtime","hasInstalledApp","appId","matchVersion","app","_internalApiGetAppInBootstrapData","hooks","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","compare","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAG,IAAAC,0CAAiC,EAACH,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIE,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,kBAAkB,EAAE;IACrCH,GAAG,GAAGE,cAAK,CAACC,kBAAkB,CAACC,aAAa,CAACN,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACK,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACN,YAAY,IAAI,CAACC,GAAG,CAACM,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGR,YAAY,CAACS,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,CAAE,0BAAyBV,YAAa,EAAC,CAAC;IAC/D;IACA,OAAO,IAAAW,wBAAO,EACZV,GAAG,CAACM,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"hasInstalledApp.js","names":["_compareVersions","require","_Runtime","hasInstalledApp","appId","matchVersion","app","_internalApiGetAppInBootstrapData","hooks","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","compare","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAG,IAAAC,0CAAiC,EAACH,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIE,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,kBAAkB,EAAE;IACrCH,GAAG,GAAGE,cAAK,CAACC,kBAAkB,CAACC,aAAa,CAACN,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACK,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACN,YAAY,IAAI,CAACC,GAAG,CAACM,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGR,YAAY,CAACS,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,CAAE,0BAAyBV,YAAa,EAAC,CAAC;IAC/D;IACA,OAAO,IAAAW,wBAAO,EACZV,GAAG,CAACM,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CACX,CAAC;EACH,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;EACtB;EACA,OAAO,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyExtended.js","names":["_history","require","_getBasePath","_Runtime","_matchStoryboard","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","extraQuery","clear","keepHash","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","undefined","set","toString","hash","pushAnchor","notify","reload","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","parsePath","startsWith","isOutsideApp","_internalApiMatchStoryboard","getBasePath","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n },\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":["_history","require","_getBasePath","_Runtime","_matchStoryboard","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","extraQuery","clear","keepHash","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","undefined","set","toString","hash","pushAnchor","notify","reload","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","parsePath","startsWith","isOutsideApp","_internalApiMatchStoryboard","getBasePath","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n },\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertPreviewRoutes.js","names":["_lodash","require","insertPreviewRoutes","routes","window","parent","mergedRoutes","specificTemplatePreviewIndex","findLastIndex","route","path","startsWith","slice","bricks","brick","menu","exact","specificSnippetPreviewIndex"],"sources":["../../../src/internal/insertPreviewRoutes.ts"],"sourcesContent":["import { findLastIndex } from \"lodash\";\nimport type { RouteConf } from \"@next-core/types\";\n\nexport function insertPreviewRoutes(routes: RouteConf[]): RouteConf[] {\n // Insert preview routes for iframe only.\n if (window.parent === window) {\n return routes;\n }\n\n let mergedRoutes = routes;\n\n const specificTemplatePreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/template-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/template-preview/:templateId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificTemplatePreviewIndex + 1),\n ];\n\n const specificSnippetPreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/snippet-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/snippet-preview/:snippetId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificSnippetPreviewIndex + 1),\n ];\n\n return mergedRoutes;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,mBAAmBA,CAACC,MAAmB,EAAe;EACpE;EACA,IAAIC,MAAM,CAACC,MAAM,KAAKD,MAAM,EAAE;IAC5B,OAAOD,MAAM;EACf;EAEA,IAAIG,YAAY,GAAGH,MAAM;EAEzB,MAAMI,4BAA4B,GAAG,IAAAC,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACrEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,8CAA8C,CAAC
|
|
1
|
+
{"version":3,"file":"insertPreviewRoutes.js","names":["_lodash","require","insertPreviewRoutes","routes","window","parent","mergedRoutes","specificTemplatePreviewIndex","findLastIndex","route","path","startsWith","slice","bricks","brick","menu","exact","specificSnippetPreviewIndex"],"sources":["../../../src/internal/insertPreviewRoutes.ts"],"sourcesContent":["import { findLastIndex } from \"lodash\";\nimport type { RouteConf } from \"@next-core/types\";\n\nexport function insertPreviewRoutes(routes: RouteConf[]): RouteConf[] {\n // Insert preview routes for iframe only.\n if (window.parent === window) {\n return routes;\n }\n\n let mergedRoutes = routes;\n\n const specificTemplatePreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/template-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/template-preview/:templateId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificTemplatePreviewIndex + 1),\n ];\n\n const specificSnippetPreviewIndex = findLastIndex(mergedRoutes, (route) =>\n route.path.startsWith(\"${APP.homepage}/_dev_only_/snippet-preview/\")\n );\n mergedRoutes = [\n ...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1),\n {\n path: \"${APP.homepage}/_dev_only_/snippet-preview/:snippetId\",\n bricks: [{ brick: \"span\" }],\n menu: false,\n exact: true,\n } as RouteConf,\n ...mergedRoutes.slice(specificSnippetPreviewIndex + 1),\n ];\n\n return mergedRoutes;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,mBAAmBA,CAACC,MAAmB,EAAe;EACpE;EACA,IAAIC,MAAM,CAACC,MAAM,KAAKD,MAAM,EAAE;IAC5B,OAAOD,MAAM;EACf;EAEA,IAAIG,YAAY,GAAGH,MAAM;EAEzB,MAAMI,4BAA4B,GAAG,IAAAC,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACrEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,8CAA8C,CACtE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEL,4BAA4B,GAAG,CAAC,CAAC,EAC1D;IACEG,IAAI,EAAE,yDAAyD;IAC/DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACL,4BAA4B,GAAG,CAAC,CAAC,CACxD;EAED,MAAMU,2BAA2B,GAAG,IAAAT,qBAAa,EAACF,YAAY,EAAGG,KAAK,IACpEA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,6CAA6C,CACrE,CAAC;EACDL,YAAY,GAAG,CACb,GAAGA,YAAY,CAACM,KAAK,CAAC,CAAC,EAAEK,2BAA2B,GAAG,CAAC,CAAC,EACzD;IACEP,IAAI,EAAE,uDAAuD;IAC7DG,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAO,CAAC,CAAC;IAC3BC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACT,CAAC,EACD,GAAGV,YAAY,CAACM,KAAK,CAACK,2BAA2B,GAAG,CAAC,CAAC,CACvD;EAED,OAAOX,YAAY;AACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchPath.js","names":["_pathToRegexp","require","cache","Map","cacheLimit","cacheCount","compilePath","path","options","cacheKey","end","strict","sensitive","pathCache","get","set","cacheResult","keys","regexp","pathToRegexp","result","matchPath","pathname","p","exact","paths","Array","isArray","reduce","matched","match","exec","url","values","isExact","initialParams","params","memo","key","index","name","toPath","pathParams","compile"],"sources":["../../../src/internal/matchPath.ts"],"sourcesContent":["// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/matchPath.js\nimport type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport { pathToRegexp, Key, compile } from \"path-to-regexp\";\n\nconst cache: Map<string, Map<string, CompileResult>> = new Map();\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path: string, options: CompileOptions): CompileResult {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n let pathCache = cache.get(cacheKey);\n if (!pathCache) {\n cache.set(cacheKey, (pathCache = new Map()));\n }\n\n const cacheResult = pathCache.get(path);\n if (cacheResult) {\n return cacheResult;\n }\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache.set(path, result);\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nexport function matchPath(\n pathname: string,\n options: MatchPathOptions\n): MatchResult | null {\n const { path: p, exact = false, strict = false, sensitive = true } = options;\n\n const paths = Array.isArray(p) ? p : [p];\n\n return paths.reduce<MatchResult | null>((matched, path) => {\n if (matched) {\n return matched;\n }\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive,\n });\n const match = regexp.exec(pathname);\n\n if (!match) {\n return null;\n }\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) {\n return null;\n }\n\n const initialParams: MatchResult[\"params\"] = {};\n const result = {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, initialParams),\n };\n\n return result;\n }, null);\n}\n\nexport function toPath(\n path: string,\n pathParams?: Record<string, unknown>\n): string {\n return compile(path)(pathParams);\n}\n\ninterface CompileOptions {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\ninterface CompileResult {\n regexp: RegExp;\n keys: Key[];\n}\n\ninterface MatchOptions {\n path: string | string[];\n exact?: boolean;\n}\n\nexport type MatchPathOptions = MatchOptions & CompileOptions;\n\nexport type MatchResult = Exclude<\n LegacyCompatibleRuntimeContext[\"match\"],\n undefined\n>;\n"],"mappings":";;;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AAFA;;AAIA,MAAMC,KAA8C,GAAG,IAAIC,GAAG,
|
|
1
|
+
{"version":3,"file":"matchPath.js","names":["_pathToRegexp","require","cache","Map","cacheLimit","cacheCount","compilePath","path","options","cacheKey","end","strict","sensitive","pathCache","get","set","cacheResult","keys","regexp","pathToRegexp","result","matchPath","pathname","p","exact","paths","Array","isArray","reduce","matched","match","exec","url","values","isExact","initialParams","params","memo","key","index","name","toPath","pathParams","compile"],"sources":["../../../src/internal/matchPath.ts"],"sourcesContent":["// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/matchPath.js\nimport type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport { pathToRegexp, Key, compile } from \"path-to-regexp\";\n\nconst cache: Map<string, Map<string, CompileResult>> = new Map();\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path: string, options: CompileOptions): CompileResult {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n let pathCache = cache.get(cacheKey);\n if (!pathCache) {\n cache.set(cacheKey, (pathCache = new Map()));\n }\n\n const cacheResult = pathCache.get(path);\n if (cacheResult) {\n return cacheResult;\n }\n\n const keys: Key[] = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache.set(path, result);\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nexport function matchPath(\n pathname: string,\n options: MatchPathOptions\n): MatchResult | null {\n const { path: p, exact = false, strict = false, sensitive = true } = options;\n\n const paths = Array.isArray(p) ? p : [p];\n\n return paths.reduce<MatchResult | null>((matched, path) => {\n if (matched) {\n return matched;\n }\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive,\n });\n const match = regexp.exec(pathname);\n\n if (!match) {\n return null;\n }\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) {\n return null;\n }\n\n const initialParams: MatchResult[\"params\"] = {};\n const result = {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, initialParams),\n };\n\n return result;\n }, null);\n}\n\nexport function toPath(\n path: string,\n pathParams?: Record<string, unknown>\n): string {\n return compile(path)(pathParams);\n}\n\ninterface CompileOptions {\n end?: boolean;\n strict?: boolean;\n sensitive?: boolean;\n}\n\ninterface CompileResult {\n regexp: RegExp;\n keys: Key[];\n}\n\ninterface MatchOptions {\n path: string | string[];\n exact?: boolean;\n}\n\nexport type MatchPathOptions = MatchOptions & CompileOptions;\n\nexport type MatchResult = Exclude<\n LegacyCompatibleRuntimeContext[\"match\"],\n undefined\n>;\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.matchRoutes = matchRoutes;
|
|
7
7
|
var _matchPath = require("./matchPath.js");
|
|
8
8
|
var _checkIf = require("./compute/checkIf.js");
|
|
9
|
-
var
|
|
9
|
+
var _Runtime = require("./Runtime.js");
|
|
10
10
|
async function matchRoutes(routes, runtimeContext) {
|
|
11
11
|
for (const route of routes) {
|
|
12
12
|
if (typeof route.path !== "string") {
|
|
@@ -20,7 +20,7 @@ async function matchRoutes(routes, runtimeContext) {
|
|
|
20
20
|
exact: route.exact
|
|
21
21
|
});
|
|
22
22
|
if (match && (await (0, _checkIf.asyncCheckIf)(route, runtimeContext))) {
|
|
23
|
-
if (runtimeContext.app.noAuthGuard || route.public || (0
|
|
23
|
+
if (runtimeContext.app.noAuthGuard || route.public || !(_Runtime.hooks !== null && _Runtime.hooks !== void 0 && _Runtime.hooks.auth) || _Runtime.hooks.auth.isLoggedIn()) {
|
|
24
24
|
return {
|
|
25
25
|
match,
|
|
26
26
|
route
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchRoutes.js","names":["_matchPath","require","_checkIf","
|
|
1
|
+
{"version":3,"file":"matchRoutes.js","names":["_matchPath","require","_checkIf","_Runtime","matchRoutes","routes","runtimeContext","route","path","console","error","Error","routePath","replace","app","homepage","match","matchPath","location","pathname","exact","asyncCheckIf","noAuthGuard","public","hooks","auth","isLoggedIn"],"sources":["../../../src/internal/matchRoutes.ts"],"sourcesContent":["import type { RouteConf } from \"@next-core/types\";\nimport { MatchResult, matchPath } from \"./matchPath.js\";\nimport { asyncCheckIf } from \"./compute/checkIf.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\nimport { hooks } from \"./Runtime.js\";\n\ntype MatchRoutesResult =\n | {\n match: MatchResult;\n route: RouteConf;\n }\n | \"missed\"\n | \"unauthenticated\";\n\nexport async function matchRoutes(\n routes: RouteConf[],\n runtimeContext: RuntimeContext\n): Promise<MatchRoutesResult> {\n for (const route of routes) {\n if (typeof route.path !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid route with invalid path:\", route);\n throw new Error(\n `Invalid route with invalid type of path: ${typeof route.path}`\n );\n }\n const routePath = route.path.replace(\n /^\\$\\{APP.homepage\\}/,\n runtimeContext.app.homepage\n );\n const match = matchPath(runtimeContext.location.pathname, {\n path: routePath,\n exact: route.exact,\n });\n if (match && (await asyncCheckIf(route, runtimeContext))) {\n if (\n runtimeContext.app.noAuthGuard ||\n route.public ||\n !hooks?.auth ||\n hooks.auth.isLoggedIn()\n ) {\n return { match, route };\n }\n return \"unauthenticated\";\n }\n }\n return \"missed\";\n}\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAUO,eAAeG,WAAWA,CAC/BC,MAAmB,EACnBC,cAA8B,EACF;EAC5B,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAE;IAC1B,IAAI,OAAOE,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAClC;MACAC,OAAO,CAACC,KAAK,CAAC,kCAAkC,EAAEH,KAAK,CAAC;MACxD,MAAM,IAAII,KAAK,CACZ,4CAA2C,OAAOJ,KAAK,CAACC,IAAK,EAChE,CAAC;IACH;IACA,MAAMI,SAAS,GAAGL,KAAK,CAACC,IAAI,CAACK,OAAO,CAClC,qBAAqB,EACrBP,cAAc,CAACQ,GAAG,CAACC,QACrB,CAAC;IACD,MAAMC,KAAK,GAAG,IAAAC,oBAAS,EAACX,cAAc,CAACY,QAAQ,CAACC,QAAQ,EAAE;MACxDX,IAAI,EAAEI,SAAS;MACfQ,KAAK,EAAEb,KAAK,CAACa;IACf,CAAC,CAAC;IACF,IAAIJ,KAAK,KAAK,MAAM,IAAAK,qBAAY,EAACd,KAAK,EAAED,cAAc,CAAC,CAAC,EAAE;MACxD,IACEA,cAAc,CAACQ,GAAG,CAACQ,WAAW,IAC9Bf,KAAK,CAACgB,MAAM,IACZ,EAACC,cAAK,aAALA,cAAK,eAALA,cAAK,CAAEC,IAAI,KACZD,cAAK,CAACC,IAAI,CAACC,UAAU,CAAC,CAAC,EACvB;QACA,OAAO;UAAEV,KAAK;UAAET;QAAM,CAAC;MACzB;MACA,OAAO,iBAAiB;IAC1B;EACF;EACA,OAAO,QAAQ;AACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchStoryboard.js","names":["_lodash","require","_Runtime","matchStoryboard","storyboards","pathname","sortedStoryboards","orderBy","storyboard","_storyboard$app$homep","_storyboard$app","_storyboard$app$homep2","app","homepage","length","replace","startsWith","isOutsideApp","_getRuntime$getCurren","process","env","NODE_ENV","getRuntime","getCurrentApp","id","window","STANDALONE_MICRO_APPS","standaloneMode"],"sources":["../../../src/internal/matchStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { orderBy } from \"lodash\";\nimport { getRuntime } from \"./Runtime.js\";\n\nexport function matchStoryboard(\n storyboards: RuntimeStoryboard[],\n pathname: string\n): RuntimeStoryboard | undefined {\n // Put apps with longer homepage before shorter ones.\n // E.g., `/legacy/tool` will match first before `/legacy`.\n // This enables two apps with relationship of parent-child of homepage.\n const sortedStoryboards = orderBy(\n storyboards,\n (storyboard) => storyboard.app?.homepage?.length ?? 0,\n \"desc\"\n );\n for (const storyboard of sortedStoryboards) {\n const homepage = storyboard.app.homepage;\n if (typeof homepage === \"string\" && homepage[0] === \"/\") {\n if (\n homepage === \"/\"\n ? pathname === homepage\n : `${pathname.replace(/\\/+$/, \"\")}/`.startsWith(\n `${homepage.replace(/\\/+$/, \"\")}/`\n )\n ) {\n return storyboard;\n }\n }\n }\n}\n\n/**\n * We say it's an outside app when at least one of the below conditions are true:\n * - target app is not found.\n * - target app is not the current app.\n * - current app is non-standalone mode and target app is standalone mode.\n *\n * Note: when current app is standalone mode, other apps will not be found.\n */\nexport function isOutsideApp(\n storyboard: RuntimeStoryboard | undefined\n): boolean | undefined {\n if (process.env.NODE_ENV === \"test\") {\n return false;\n }\n return (\n !storyboard ||\n // Sometimes `storyboard.app.standaloneMode` is incorrect.\n (getRuntime().getCurrentApp()?.id !== storyboard.app.id &&\n !window.STANDALONE_MICRO_APPS &&\n storyboard.app.standaloneMode)\n );\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,SAASE,eAAeA,CAC7BC,WAAgC,EAChCC,QAAgB,EACe;EAC/B;EACA;EACA;EACA,MAAMC,iBAAiB,GAAG,IAAAC,eAAO,EAC/BH,WAAW,EACVI,UAAU;IAAA,IAAAC,qBAAA,EAAAC,eAAA,EAAAC,sBAAA;IAAA,QAAAF,qBAAA,IAAAC,eAAA,GAAKF,UAAU,CAACI,GAAG,cAAAF,eAAA,wBAAAC,sBAAA,GAAdD,eAAA,CAAgBG,QAAQ,cAAAF,sBAAA,uBAAxBA,sBAAA,CAA0BG,MAAM,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAAA,GACrD,
|
|
1
|
+
{"version":3,"file":"matchStoryboard.js","names":["_lodash","require","_Runtime","matchStoryboard","storyboards","pathname","sortedStoryboards","orderBy","storyboard","_storyboard$app$homep","_storyboard$app","_storyboard$app$homep2","app","homepage","length","replace","startsWith","isOutsideApp","_getRuntime$getCurren","process","env","NODE_ENV","getRuntime","getCurrentApp","id","window","STANDALONE_MICRO_APPS","standaloneMode"],"sources":["../../../src/internal/matchStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { orderBy } from \"lodash\";\nimport { getRuntime } from \"./Runtime.js\";\n\nexport function matchStoryboard(\n storyboards: RuntimeStoryboard[],\n pathname: string\n): RuntimeStoryboard | undefined {\n // Put apps with longer homepage before shorter ones.\n // E.g., `/legacy/tool` will match first before `/legacy`.\n // This enables two apps with relationship of parent-child of homepage.\n const sortedStoryboards = orderBy(\n storyboards,\n (storyboard) => storyboard.app?.homepage?.length ?? 0,\n \"desc\"\n );\n for (const storyboard of sortedStoryboards) {\n const homepage = storyboard.app.homepage;\n if (typeof homepage === \"string\" && homepage[0] === \"/\") {\n if (\n homepage === \"/\"\n ? pathname === homepage\n : `${pathname.replace(/\\/+$/, \"\")}/`.startsWith(\n `${homepage.replace(/\\/+$/, \"\")}/`\n )\n ) {\n return storyboard;\n }\n }\n }\n}\n\n/**\n * We say it's an outside app when at least one of the below conditions are true:\n * - target app is not found.\n * - target app is not the current app.\n * - current app is non-standalone mode and target app is standalone mode.\n *\n * Note: when current app is standalone mode, other apps will not be found.\n */\nexport function isOutsideApp(\n storyboard: RuntimeStoryboard | undefined\n): boolean | undefined {\n if (process.env.NODE_ENV === \"test\") {\n return false;\n }\n return (\n !storyboard ||\n // Sometimes `storyboard.app.standaloneMode` is incorrect.\n (getRuntime().getCurrentApp()?.id !== storyboard.app.id &&\n !window.STANDALONE_MICRO_APPS &&\n storyboard.app.standaloneMode)\n );\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,SAASE,eAAeA,CAC7BC,WAAgC,EAChCC,QAAgB,EACe;EAC/B;EACA;EACA;EACA,MAAMC,iBAAiB,GAAG,IAAAC,eAAO,EAC/BH,WAAW,EACVI,UAAU;IAAA,IAAAC,qBAAA,EAAAC,eAAA,EAAAC,sBAAA;IAAA,QAAAF,qBAAA,IAAAC,eAAA,GAAKF,UAAU,CAACI,GAAG,cAAAF,eAAA,wBAAAC,sBAAA,GAAdD,eAAA,CAAgBG,QAAQ,cAAAF,sBAAA,uBAAxBA,sBAAA,CAA0BG,MAAM,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAAA,GACrD,MACF,CAAC;EACD,KAAK,MAAMD,UAAU,IAAIF,iBAAiB,EAAE;IAC1C,MAAMO,QAAQ,GAAGL,UAAU,CAACI,GAAG,CAACC,QAAQ;IACxC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvD,IACEA,QAAQ,KAAK,GAAG,GACZR,QAAQ,KAAKQ,QAAQ,GACpB,GAAER,QAAQ,CAACU,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAAE,CAACC,UAAU,CAC1C,GAAEH,QAAQ,CAACE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAE,GAClC,CAAC,EACL;QACA,OAAOP,UAAU;MACnB;IACF;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,YAAYA,CAC1BT,UAAyC,EACpB;EAAA,IAAAU,qBAAA;EACrB,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;IACnC,OAAO,KAAK;EACd;EACA,OACE,CAACb,UAAU;EACX;EACC,EAAAU,qBAAA,OAAAI,mBAAU,EAAC,CAAC,CAACC,aAAa,CAAC,CAAC,cAAAL,qBAAA,uBAA5BA,qBAAA,CAA8BM,EAAE,MAAKhB,UAAU,CAACI,GAAG,CAACY,EAAE,IACrD,CAACC,MAAM,CAACC,qBAAqB,IAC7BlB,UAAU,CAACI,GAAG,CAACe,cAAe;AAEpC"}
|