{"version":3,"sources":["config-wrap-start-default.js","src/vbc/private/constants.js","src/vb/private/constants.js","src/vb/errors/httpError.js","src/vbc/private/utils.js","src/vb/private/configuration.js","src/vb/private/utils.js","src/vbc/private/logConfig.js","src/vbc/private/performance/performanceCategory.js","src/vbc/private/performance/immediateCategory.js","src/vbc/private/trace/spanContext.js","src/vbc/private/trace/tracer.js","src/vbc/private/performance/webVitalsCategory.js","src/vbc/private/performance/reporter.js","src/vbc/private/performance/performanceReport.js","src/vbc/private/performance/performance.js","src/vbc/private/monitorOptions.js","src/vbc/private/log.js","src/vb/private/log.js","src/vb/binding/expression.js","src/vb/private/pathHandler.js","src/vb/private/services/serviceConstants.js","src/vb/private/services/catalogRegistry.js","src/vb/private/services/protocolRegistry.js","src/vb/private/configLoader.js","src/vb/private/history.js","src/vb/private/stateManagement/navigationContext.js","src/vb/private/stateManagement/router.js","src/vb/private/mobile/customUrlScheme.js","src/vb/private/debug/constants.js","src/vb/private/debug/debugStream.js","src/vb/private/debug/applicationDebugStream.js","dist/package/versions.json!text","src/vb/versions.js","src/vb/private/rtEnvConfig.js","src/vb/private/polyfills.js","generated/vb/main.js","src/vb/action/action.js","src/vb/private/stateManagement/scopeResolver.js","src/vb/private/stateManagement/stateUtils.js","src/vb/private/action/assignmentHelper.js","src/vb/private/stateManagement/variable.js","src/vb/private/stateManagement/context/variableBridge.js","src/vb/private/stateManagement/instanceFactoryVariable.js","src/vb/action/builtin/assignVariablesAction.js","src/vb/action/builtin/barcodeAction.js","src/vb/helpers/actionHelpers.js","src/vb/private/stateManagement/variableFactory.js","src/vb/private/stateManagement/scope.js","src/vb/private/stateManagement/redux/basicStoreManager.js","src/vb/private/stateManagement/redux/storeManager.js","src/vb/private/translations/translationContext.js","src/vb/private/stateManagement/context/containerContext.js","src/vb/private/stateManagement/context/actionChainContext.js","src/vb/private/debug/actionChainDebugStream.js","src/vb/private/action/actionChain.js","src/vb/action/builtin/callChainAction.js","src/vb/action/builtin/callComponentMethodAction.js","src/vb/action/builtin/callModuleFunctionAction.js","src/vb/action/builtin/callVariableMethodAction.js","src/vb/action/builtin/checkForExtensionsAction.js","src/vb/private/action/actionHelper.js","src/vb/action/builtin/downloadExtensionsAction.js","src/vb/action/builtin/editorUrlAction.js","src/vb/action/eventAction.js","src/vb/private/events/eventBehavior.js","src/vb/private/events/transformEventBehavior.js","src/vb/private/events/checkCancelEventBehavior.js","src/vb/private/events/notifyEventBehavior.js","src/vb/private/events/notifyWaitEventBehavior.js","src/vb/private/events/undeclaredEventBehavior.js","src/vb/private/events/eventBehaviorFactory.js","src/vb/private/events/baseEventModel.js","src/vb/private/events/eventModel.js","src/vb/private/events/eventRegistry.js","src/vb/action/builtin/fireCustomEventAction.js","src/vb/private/types/dataProviderConstants.js","src/vb/private/types/utils/dataProviderUtils.js","src/vb/action/builtin/fireDataProviderEventAction.js","src/vb/action/builtin/fireNotificationEventAction.js","src/vb/action/builtin/forEachAction.js","src/vb/action/builtin/forkAction.js","src/vb/action/builtin/geolocationAction.js","src/vb/action/builtin/ifAction.js","src/vb/action/builtin/loginAction.js","src/vb/action/builtin/logoutAction.js","src/vb/action/builtin/navigateAction.js","src/vb/action/builtin/navigateBackAction.js","src/vb/helpers/navigate.js","src/vb/action/builtin/navigateToExternalAction.js","src/vb/action/builtin/navigateToPageAction.js","src/vb/action/builtin/openUrlAction.js","src/vb/action/builtin/resetVariablesAction.js","src/vb/private/services/swaggerUtils.js","src/vb/private/services/uriTemplate.js","src/vb/private/monitoring/fetchRequestMonitorOptions.js","src/vb/private/monitoring/fetchResponseMonitorOptions.js","src/vb/private/services/transformsUtils.js","src/vb/private/services/endpointReference.js","src/vb/private/helpers/abstractRestHelper.js","src/vb/helpers/rest.js","src/vb/action/builtin/restAction.js","src/vb/action/builtin/restartApplicationAction.js","src/vb/action/builtin/returnAction.js","src/vb/action/builtin/switchAction.js","src/vb/private/mobile/fileIo.js","src/vb/action/builtin/takePhotoAction.js","src/vb/action/builtin/transformChartDataAction.js","src/vb/action/builtin/webShareAction.js","src/vb/private/translations/bundleDefinition.js","src/vb/private/translations/bundleV2Definition.js","src/vb/private/translations/bundlesModel.js","src/vb/private/helpers/eventHelper.js","src/vb/private/model/modelUtils.js","src/vb/private/events/eventMonitorOptions.js","src/vb/private/stateManagement/container.js","src/vb/private/stateManagement/stateMonitor.js","src/vb/private/stateManagement/context/baseContext.js","src/vb/private/stateManagement/context/pageBaseContext.js","src/vb/helpers/componentFinder.js","src/vb/private/stateManagement/context/pageContext.js","src/vb/private/monitoring/loadMonitorOptions.js","src/vb/private/stateManagement/containerExtension.js","src/vb/private/stateManagement/context/extensionContext.js","src/vb/private/stateManagement/context/pageExtensionContext.js","src/vb/private/stateManagement/pageExtension.js","src/vb/private/stateManagement/page.js","src/vb/private/stateManagement/context/flowBaseContext.js","src/vb/private/stateManagement/context/flowContext.js","src/vb/private/stateManagement/context/flowExtensionContext.js","src/vb/private/stateManagement/flowExtension.js","src/vb/private/services/serviceProvider.js","src/vb/private/services/serviceUtils.js","src/vb/private/services/definitionObject.js","src/vb/private/services/servicesLoader.js","src/vb/private/services/endpointMetadata.js","src/vb/private/services/endpoint.js","src/vbsw/vbServiceWorkerModules/private/constants.js","src/vb/private/services/serviceDefinition.js","src/vb/private/services/readers/openApiObjectCommon.js","src/vb/private/services/readers/openApi2Object.js","src/vb/private/services/readers/openApiUtils.js","src/vb/private/services/readers/openApi3Object.js","src/vb/private/services/readers/openApiObjectFactory.js","src/vb/private/services/services.js","src/vb/private/stateManagement/flow.js","src/vb/private/stateManagement/redux/reduxRouter.js","src/vb/private/ui/responsiveUtils.js","src/vb/private/stateManagement/context/applicationContext.js","src/vb/private/stateManagement/applicationExtension.js","src/vb/private/stateManagement/packagePage.js","src/vb/private/stateManagement/packageFlow.js","src/vb/private/stateManagement/context/appPackageContext.js","src/vb/private/stateManagement/appPackageExtension.js","src/vb/private/stateManagement/appPackage.js","src/vb/private/urlMapper.js","src/vb/private/vx/extensionAdapterFactory.js","src/vb/private/services/extensionServices.js","src/vb/private/vx/extensionRegistry.js","src/vbc/private/pwa/pwaUtils.js","src/vb/private/pwa/jetCache.js","src/vbsw/vbServiceWorkerModules/private/utils.js","src/vbsw/vbServiceWorkerModules/private/stateCache.js","src/vbsw/vbServiceWorkerModules/private/cacheStrategy.js","src/vbsw/vbServiceWorkerModules/private/pwa/pwaUtils.js","src/vbsw/vbServiceWorkerModules/private/pwa/appShell.js","src/vbsw/vbServiceWorkerModules/private/pwa/pwaCacheStrategy.js","src/vbsw/vbServiceWorkerModules/private/cacheStrategyFactory.js","src/vbsw/vbServiceWorkerModules/api/fetchHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/pwa/applicationCache.js","src/vbsw/vbServiceWorkerModules/private/optCacheStrategies.js","src/vbsw/vbServiceWorkerModules/private/optCacheStrategiesFactory.js","src/vbsw/vbServiceWorkerModules/private/urlMapperClient.js","src/vbsw/vbServiceWorkerModules/private/fetchHandler.js","src/vbsw/vbServiceWorkerModules/private/serviceWorkerWrapper.js","src/vbsw/vbServiceWorkerModules/private/emulatedServiceWorkerWrapper.js","src/vbsw/vbServiceWorkerModules/private/browserServiceWorkerWrapper.js","src/vbsw/vbServiceWorkerModules/private/serviceWorkerManagerClass.js","src/vbsw/vbServiceWorkerModules/private/serviceWorkerManager.js","src/vb/private/services/fallbackServices.js","text!vb/components/oj-vb-content/component.json","css!vb/components/oj-vb-content/styles","src/vb/components/oj-vb-content/loader.js","src/vb/private/stateManagement/applicationClass.js","src/vb/private/stateManagement/application.js","src/vb/private/logCustomWriter.js","src/vb/bootstrap.js","text!vb/components/list-item/component.json","text!vb/components/list-item/listItem.html","css!vb/components/list-item/listItem","src/vb/components/list-item/loader.js","src/vb/components/messagebar/view.html!text","src/vb/components/messagebar/messageBar.html!text","src/vb/components/messagebar/viewModel.js","src/vb/components/messagebar/component.json!text","src/vb/components/messagebar/styles!css","src/vb/components/messagebar/loader.js","text!vb/components/mobile-navigation-bar-bottom/view.html","src/vb/components/mobile-navigation-bar-bottom/viewModel.js","text!vb/components/mobile-navigation-bar-bottom/component.json","text!vb/components/mobile-navigation-bar-bottom/styles.css","text!vb/components/mobile-navigation-item/component.json","src/vb/components/mobile-navigation-item/loader.js","src/vb/components/mobile-navigation-bar-bottom/loader.js","text!vb/components/mobile-navigation-bar-drawer/view.html","src/vb/components/mobile-navigation-bar-drawer/viewModel.js","text!vb/components/mobile-navigation-bar-drawer/component.json","text!vb/components/mobile-navigation-bar-drawer/styles.css","src/vb/components/mobile-navigation-bar-drawer/loader.js","text!vb/components/mobile-page-template/view.html","src/vb/components/mobile-page-template/viewModel.js","text!vb/components/mobile-page-template/component.json","text!vb/components/mobile-page-template/styles.css","src/vb/components/mobile-page-template/loader.js","src/vb/extensions/dynamic/private/helpers/baseHelper.js","src/vb/private/services/servicesManager.js","src/vb/private/stateManagement/context/layoutBaseContext.js","src/vb/private/stateManagement/context/layoutContext.js","src/vb/private/stateManagement/context/layoutExtensionContext.js","src/vb/private/stateManagement/layoutExtension.js","src/vb/private/stateManagement/layout.js","src/vb/extensions/dynamic/private/models/emptyContextModel.js","src/vb/extensions/dynamic/private/helpers/metadataHelperFactory.js","src/vb/extensions/dynamic/private/helpers/configurableMetadataProviderHelper.js","src/vb/extensions/dynamic/private/helpers/dataDescriptionMetadataProviderHelper.js","src/vb/extensions/dynamic/private/helpers/serviceMetadataProviderHelper.js","src/vb/extensions/dynamic/private/models/abstractModel.js","src/vb/extensions/dynamic/private/models/emptyModel.js","src/vb/extensions/dynamic/private/models/dataDescriptionExtensionModel.js","src/vb/extensions/dynamic/private/models/translationsModel.js","src/vb/extensions/dynamic/private/models/dataDescriptionModel.js","src/vb/extensions/dynamic/private/models/layoutOverlayExtensionModel.js","src/vb/extensions/dynamic/private/models/layoutOverlayModel.js","src/vb/helpers/mixin.js","src/vb/types/typeUtils.js","src/vb/types/extendedType.js","src/vb/private/types/builtinExtendedTypeMixin.js","src/vb/private/types/metadataDescriptor.js","src/vb/private/types/factoryMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/abstractMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/bridges/metadataProviderFactoryBridge.js","src/vb/extensions/dynamic/private/types/bridges/helperMetadataProviderFactoryBridge.js","src/vb/extensions/dynamic/private/types/bridges/serviceMetadataProviderFactoryBridge.js","src/vb/extensions/dynamic/private/types/bridges/dynamicLayoutMetadataProviderFactoryBridge.js","src/vb/extensions/dynamic/private/types/bridges/jsonMetadataProviderFactoryBridge.js","src/vb/extensions/dynamic/private/types/containerMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/serviceMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/dynamicLayoutMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/heterogeneousMetadataProviderDescriptor.js","src/vb/extensions/dynamic/private/types/jsonMetadataProviderDescriptor.js","src/vb/extensions/process/action/builtin/processAction.js","src/vb/extensions/process/helpers/processModel.json!text","src/vb/extensions/process/helpers/service.json!text","src/vb/extensions/process/helpers/processService.js","src/vb/extensions/process/action/builtin/getDeployedProcessAction.js","src/vb/extensions/process/action/builtin/getDeployedProcessCollectionAction.js","src/vb/extensions/process/action/builtin/getProcessInstanceAction.js","src/vb/extensions/process/action/builtin/getProcessInstanceCollectionAction.js","src/vb/extensions/process/action/builtin/getTaskAction.js","src/vb/extensions/process/action/builtin/getTaskCollectionAction.js","src/vb/extensions/process/action/builtin/performTaskAction.js","src/vb/extensions/process/action/builtin/startProcessAction.js","src/vb/helpers/restHookHandler.js","src/vb/private/helpers/restHelperFactory.js","src/vb/private/types/utils/serviceDataProviderRestHelper.js","src/vb/private/types/utils/serviceDataProviderRestHelperFactory.js","src/vb/private/types/capabilities/serviceTransformsHookHandler.js","src/vb/private/types/capabilities/fetchContext.js","src/vb/private/types/capabilities/noOpFetchByKeys.js","src/vb/private/types/capabilities/noOpFetchFirst.js","src/vb/private/types/capabilities/noOpFetchByOffset.js","src/vb/private/types/capabilities/fetchByOffsetUtils.js","src/vb/private/types/capabilities/fetchFirst.js","src/vb/private/types/capabilities/fetchByOffsetIteration.js","src/vb/private/types/disconnectedServiceDataProvider.js","src/vb/types/eventTargetMixin.js","src/vb/private/types/capabilities/fetchByKeysUtils.js","src/vb/private/types/capabilities/fetchByKeys.js","src/vb/private/types/capabilities/fetchByKeysIteration.js","src/vb/private/types/capabilities/fetchBySingleKey.js","src/vb/private/types/capabilities/containsKeys.js","src/vb/private/types/capabilities/fetchByOffset.js","src/vb/private/types/dataProviders/serviceDataProviderUtils.js","src/vb/private/types/serviceDataProvider.js","src/vb/extensions/process/private/types/processDataProvider.js","src/vb/extensions/protocol/vbExtensionHandler.js","src/vb/helpers/bootstrapRest.js","src/vb/helpers/extendedTypeHandler.js","src/vb/helpers/securityHelpers.js","src/vb/private/action/assignmentUtils.js","src/vb/private/helpers/runtimeEnvironment.js","src/vb/private/helpers/runtimeManager.js","src/vb/private/mobile/db.js","src/vb/private/mobile/security/constants.js","src/vb/private/mobile/security/strategy.js","src/vb/private/mobile/security/strategyOpenidOAuthIdm.js","src/vb/private/mobile/security/strategyBasicAuthIdm.js","src/vb/private/mobile/security/strategyOAuthIdm.js","src/vb/private/mobile/security/security.js","src/vb/private/pwa/pwaServiceWorkerManagerClass.js","src/vb/private/services/catalogHandler.js","src/vb/private/services/operationRefEndpoint.js","src/vb/private/services/operationRefEndpointProvider.js","src/vb/private/services/ramp/expandableField.js","src/vb/private/services/ramp/filterCriterionUtils.js","src/vb/private/services/ramp/rampTransforms.js","src/vb/private/stateManagement/applicationUtils.js","src/vb/private/types/arrayDataManager.js","src/vb/private/types/utils/jsonDiffer.js","src/vb/private/types/arrayDataProvider.js","src/vb/private/types/arrayDataProvider2.js","src/vb/private/types/dataProviders/multiServiceDataProviderUtils.js","src/vb/private/types/dataProviders/dynamicServiceDataProvider.js","src/vb/private/types/dataProviders/dynamicMultiServiceDataProvider.js","src/vb/private/types/dataProviders/multiServiceDataProvider2.js","src/vb/private/types/dataProviders/serviceDataProvider2.js","src/vb/types/securityProvider.js","src/vb/private/types/defaultSecurityProvider.js","src/vb/private/types/mobileDefaultSecurityProvider.js","src/vb/private/types/multiServiceDataProvider.js","src/vb/private/types/personalization.js","src/vb/private/vx/baseExtensionAdapter.js","src/vb/private/vx/localExtensionAdapter.js","src/vb/private/vx/remoteExtensionAdapter.js","src/vb/private/vx/nativeMobileExtensionAdapter.js","src/vb/types/extendedTypeMixin.js","src/vb/types/factories/typeFactory.js","src/vb/types/factories/multiServiceDataProviderFactory.js","src/vb/types/factories/serviceDataProviderFactory.js","src/vb/types/instanceFactory/builtinTypes.json!text","src/vb/types/instanceFactory/vbMultiServiceDataProvider2/index.d.ts!text","src/vb/types/instanceFactory/vbServiceDataProvider2/index.d.ts!text","src/vb/types/instanceFactory/loader.js","src/vb/types/personalizationProvider.js","src/vbsw/vbServiceWorkerModules/helpers/serviceWorkerHelpers.js","src/vbsw/vbServiceWorkerModules/main.js","src/vbsw/vbServiceWorkerModules/private/headerUtils.js","src/vbsw/vbServiceWorkerModules/private/plugins/abstractAuthHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/anonymousAuthHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authenticatedAuthHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authHeaderHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authPostprocessorHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authPreprocessorHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authPublicHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/authSessionHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/csrfTokenHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/fallbackInheritedAuthHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/generalHeadersHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/headerTidyHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/implicitFlowHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/mobileAuthHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/mobileAuthPreprocessorHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/multiTenantCsrfTokenHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/resourceChangedPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/sessionExpirePlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/sessionTrackingHandlerPlugin.js","src/vbsw/vbServiceWorkerModules/private/plugins/tokenRelayHandlerPlugin.js","../../../../../../onLayerEnd0.js","../../../../../../module-insertRequire.js","config-wrap-end-default.js"],"names":[],"mappings":"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","sourcesContent":["(function () {\n","'use strict';\n\ndefine('vbc/private/constants',[], () => {\n const Constants = {};\n\n /**\n * The default log levels\n */\n Constants.Severity = {\n ERROR: 'error',\n INFO: 'info',\n FINE: 'fine',\n FINER: 'finer',\n WARNING: 'warn',\n };\n\n // from highest precedence to lowest\n Constants.SeverityOrder = [\n Constants.Severity.ERROR,\n Constants.Severity.WARNING,\n Constants.Severity.INFO,\n Constants.Severity.FINE,\n Constants.Severity.FINER,\n ];\n\n Constants.PATH_SEPARATOR = '/';\n\n Constants.VbProtocols = {\n CATALOG: 'vb-catalog',\n };\n\n // these headers used in both the fetch handler plugins and service layer\n Constants.Headers = {\n CONTENT_TYPE: 'content-type',\n\n // used internally to communicate extensions to plugins; should be stripped before the actual request.\n VB_INFO_EXTENSION: 'vb-info-extension',\n\n // header for indicating if anonymous access is allowed for the request\n ALLOW_ANONYMOUS_ACCESS_HEADER: 'vb-allow-anonymous-access',\n\n // used when service uses HTTP protocol; we must use the proxy, and in order for the service worker to get the\n // request, we have to switch the protocol (http is blocked), and save the original in this header.\n // note; we don't really use the SW any more for requests, but we haven't officially dropped SW support.\n PROTOCOL_OVERRIDE_HEADER: 'vb-protocol',\n\n // sent by DT during in-page preview, needed to disable certain types of auth that won't work in that context\n VB_DT_AUTHENTICATION: 'dt-serviceAuthentication',\n\n INHERIT: 'inherit-authentication',\n };\n\n\n // predefined vbInitParam values (or \"initParams\")\n Constants.InitParams = {\n // an array of authentication 'type' values that the authPreprocessor plugin should not process.\n // useful when using non-standard VB plugins, that may process the same auth type.\n PLUGIN_PASSTHROUGHS: 'services.security.handlers.passthroughs',\n };\n\n return Constants;\n});\n\n","'use strict';\n\ndefine('vb/private/constants',['vbc/private/constants'], (CommonConstants) => {\n // copy over constants from CommonConstants\n const Constants = Object.assign({}, CommonConstants);\n\n /**\n * Supported Message Types allowed by JET.\n * @type {{ERROR: string, WARNING: string, INFO: string, CONFIRMATION: string, NONE: string}}\n * @see oj.Message component\n */\n Constants.MessageType = {\n ERROR: 'error',\n WARNING: 'warning',\n INFO: 'info',\n CONFIRMATION: 'confirmation',\n NONE: 'none',\n };\n\n /**\n * Supported variable name spaces.\n * - state (default): variable holds the state of a related object\n * - data: variable holds the data. example fetched from a backend service\n * - metadata: variable holds metadata. example: used with dynamic components\n * - builtin: builtin variable. Example currentPage and path.\n *\n * @type {{STATE: string, DATA: string, METADATA: string}}\n */\n Constants.VariableNamespace = {\n VARIABLES: 'variables',\n METADATA: 'metadata',\n BUILTIN: 'builtin',\n CONSTANTS: 'constants',\n };\n\n Constants.VariableClassification = {\n REGULAR: 'regular',\n INSTANCE_FACTORY: 'instanceFactory',\n };\n\n Constants.VariableTypePrefixes = {\n INSTANCE_FACTORY: 'vb/InstanceFactory',\n };\n\n /**\n * Suffixes appended to a builtin type variable.\n * @type {{VALUE: string, INTERNAL_STATE: string}}\n */\n Constants.BuiltinVariableName = {\n VALUE: '_value',\n INTERNAL_STATE: '_internalState',\n };\n\n /**\n * States a variable can be in its lifecycle.\n * - init: variable in the initialization stage. Usually the next state is active\n * - active: variable is live, meaning reading its state will yield a fully resolved value. Other variables it\n * depends on, also resolve to their full value. Usually this is right before vbEnter\n * - dispose: variable is in the process of being destroyed / disposed\n * Note: This is especially so when other variables it depends on (might) have already been destroyed.\n * @type {{INIT: number, ACTIVE: number, DISPOSE: number}}\n */\n Constants.VariableLifecycleStage = {\n INIT: 1,\n ACTIVE: 2,\n DISPOSE: 4,\n };\n\n /**\n *\n * @type {{ALL: string, NONE: string}}\n */\n Constants.VariableWritablePropertyOptions = {\n ALL: 'all',\n NONE: 'none',\n };\n\n /**\n * Name of properties available in context object exposed to the user\n * @type {String}\n */\n Constants.ContextName = {\n PARAMETERS: '$parameters',\n EVENT: '$event',\n PREVIOUS: '$previous', // used in event listeners, for 'transform' behavior\n CURRENT: '$current',\n BINDING_CONTEXT: '$bindingContext',\n INIT_PARAMS: '$initParams',\n };\n\n // Used to prefix service endpoints (ex: “base:fooService/getPets”)\n Constants.ExtensionNamespaces = {\n BASE: 'base',\n };\n\n\n Constants.CatalogNamespaces = {\n BASE: Constants.ExtensionNamespaces.BASE,\n TENANT: 'tenant', // @todo: near-future use\n };\n\n\n // BASE is for files that extend files in the base app; SELF is for files that are new in the extension.\n Constants.ExtensionFolders = {\n BASE: 'base',\n SELF: 'self',\n };\n\n\n /**\n * The name of the property used to store the action results in the action scope results variable.\n * @type {String}\n */\n Constants.RESULTS_VARIABLE_KEY = 'vb_results';\n\n /**\n * Built-in variables\n * @type {String}\n */\n Constants.CURRENT_PAGE_VARIABLE = 'currentPage';\n Constants.CURRENT_FLOW_VARIABLE = 'currentFlow';\n Constants.LOCALE_VARIABLE = 'locale';\n Constants.PATH_VARIABLE = 'path';\n\n /**\n * built-in constants\n * @type {string}\n */\n Constants.PROFILE_CONSTANT = 'profile'; // $application.profile\n Constants.DEPLOYMENT_CONSTANT = 'deployment'; // $application.deployment\n\n // these are peers of PATH_VARIABLE/CURRENT_PAGE_VARIABLE because they appear in the availableContexts,\n // but are not Variable objects.\n Constants.RESPONSIVE_CONTEXT = 'responsive';\n Constants.TRANSLATIONS_CONTEXT = 'translations';\n Constants.COMPONENTS_CONTEXT = 'components';\n Constants.INFO_CONTEXT = 'info';\n Constants.APPLICATION_USER_VARIABLE = 'user';\n Constants.INIT_PARAM_CONTEXT = 'initParams';\n\n Constants.PARENT_FOLDER = `..${Constants.PATH_SEPARATOR}`;\n Constants.CURRENT_FOLDER = `.${Constants.PATH_SEPARATOR}`;\n Constants.RELATIVE_FOLDER_PREFIX = '.';\n\n Constants.APPLICATION_PREFIX = 'application';\n Constants.FLOW_PREFIX = 'flow';\n Constants.PAGE_PREFIX = 'page';\n Constants.LAYOUT_PREFIX = 'layout';\n Constants.APP_PACKAGE_PREFIX = 'package';\n Constants.THIS_PREFIX = 'this';\n\n /**\n * Page event names\n */\n Constants.VB_EVENT_MARKER = 'vb';\n Constants.ENTER_EVENT = 'vbEnter';\n Constants.EXIT_EVENT = 'vbExit';\n Constants.BEFORE_ENTER_EVENT = 'vbBeforeEnter';\n Constants.BEFORE_EXIT_EVENT = 'vbBeforeExit';\n Constants.INTERACTABLE_EVENT = 'vbInteractable';\n Constants.NOTIFICATION_EVENT = 'vbNotification';\n Constants.AFTER_NAVIGATE_EVENT = 'vbAfterNavigate';\n Constants.INSTALL_PROMPT_EVENT = 'vbBeforeAppInstallPrompt';\n Constants.RESUME_EVENT = 'vbResume';\n Constants.PAUSE_EVENT = 'vbPause';\n Constants.DATAPROVIDER_NOTIFICATION_EVENT = 'vbDataProviderNotification';\n Constants.RESOURCE_CHANGED_EVENT = 'vbResourceChanged';\n Constants.NEW_CONTENT_AVAILABLE = 'vbNewContentAvailable';\n\n /**\n * variable events\n */\n // the event listener set on variable is 'onValueChanged' but the event name, though not\n // explicitly declared anywhere, could follow other vb event names - prefixed by 'vb' but for\n // whatever reason we have diverged from convention!.\n Constants.VALUE_CHANGED = 'onValueChanged';\n\n Constants.ContainerState = {\n CREATED: 'created',\n ENTERED: 'entered',\n EXITED: 'exited',\n REFRESHING: 'refreshing',\n };\n\n Constants.RouterStrategy = { QUERY: 'query', PATH: 'path' };\n\n /**\n * Name of the function on the page viewModel use to retrieve the\n * ojModule configuration for a flow.\n * @type {String}\n */\n Constants.flowModuleConfigFunctionName = 'flowModuleConfig';\n Constants.appModuleConfig = 'vbApplication';\n Constants.routerModuleConfig = 'vbRouterFlow';\n\n /**\n * The configuration object for an empty ojModule\n * @type {Object}\n */\n Constants.blankModuleConfig = { view: [], viewModel: null };\n\n /**\n * A descriptor used for the error page\n */\n Constants.errorPageDescriptor = {\n pageModelVersion: '1.0.0',\n description: 'Error Page',\n };\n\n /**\n * Service constants\n * @type {{definitionTimeout: number}}\n */\n Constants.Services = {\n definitionTimeout: 30000, // number of milliseconds to wait for a service definition\n };\n\n /**\n * The default rate limit in milliseconds for limiting how often onValueChanged should be fired\n * @type {number}\n */\n Constants.DEFAULT_RATE_LIMIT = 1;\n\n /**\n * The maximum depth we would recursively create default values for cyclic types\n * @type {number}\n */\n Constants.MAX_DEFAULT_VALUE_RECURSION_DEPTH = 1;\n\n /**\n * mime types\n * @type {{MULTIPART: string}}\n */\n Constants.ContentTypes = {\n MULTIPART: 'multipart/form-data',\n };\n\n Constants.Decorators = {\n PREFIX: '@decorators',\n };\n\n Constants.DefaultPaths = {\n LAYOUTS: 'dynamicLayouts/',\n CATALOG_JSON: 'services/catalog.json',\n };\n\n Constants.EXTENSION_PATH_NAME = 'vx';\n Constants.EXTENSION_PATH = `${Constants.EXTENSION_PATH_NAME}${Constants.PATH_SEPARATOR}`;\n\n Constants.EventTargets = {\n // the container which contains the chain the owns the action\n CURRENT: 'current',\n // the 'lowest' container in the current hierarchy (typically a Page).\n LEAF: 'leaf',\n };\n\n // declared event behaviors\n Constants.EventBehaviors = {\n NOTIFY: 'notify',\n NOTIFY_WAIT: 'notifyAndWait',\n CHECK_CANCEL: 'checkForCancel',\n TRANSFORM: 'transform',\n DYNAMIC_COMP: 'dynamicComponent', // a special behavior; used for dynamic UI template events\n };\n\n // declared event mode\n Constants.EventMode = {\n LISTENABLE: 'listenable',\n TRIGGERABLE: 'triggerable',\n };\n\n // returns from event listener processing, to differentiate from 'no return value'\n Constants.NO_EVENT_LISTENER_RESPONSE = '__no_listener__';\n\n Constants.User = {\n DEFAULT: 'anonymous',\n TESTER: 'tester',\n };\n\n /**\n *\n * @type {{ACTION_CHAIN: string, WEBDRIVER: string}}\n */\n Constants.TestMode = {\n ACTION_CHAIN: 'actionChain',\n WEBDRIVER: 'webdriver',\n };\n\n /**\n * An array of all possible scopes used in expressions\n * @type {Array}\n */\n Constants.ALL_SCOPES = ['$application', '$package', '$flow', '$page', '$base', '$extension', '$chain', '$variables',\n '$layout'];\n\n return Constants;\n});\n\n","'use strict';\n\ndefine('vb/errors/httpError',[], () => {\n const ERROR_CODE = {\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n };\n\n const STATUS_CODE_PROPERTY = 'statusCode';\n\n /**\n * HttpError class extend Error and support a HTTP error status code\n */\n class HttpError extends Error {\n constructor(statusCode, cause, message = cause.message, ...params) {\n super(message, ...params);\n // Make statusCode and cause 2 read-only properties\n Object.defineProperties(this, {\n [STATUS_CODE_PROPERTY]: {\n get: () => statusCode,\n enumerable: true,\n },\n cause: {\n get: () => cause,\n enumerable: true,\n },\n });\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, HttpError);\n }\n }\n\n isUnauthorized() {\n return this[STATUS_CODE_PROPERTY] === ERROR_CODE.UNAUTHORIZED;\n }\n\n isForbidden() {\n return this[STATUS_CODE_PROPERTY] === ERROR_CODE.FORBIDDEN;\n }\n\n isFileNotFound() {\n return this[STATUS_CODE_PROPERTY] === ERROR_CODE.NOT_FOUND;\n }\n\n static isHttpError(error) {\n return error && !!error[STATUS_CODE_PROPERTY];\n }\n\n /**\n * Return true if this error indicate a file not found error.\n * This is meant to be used for checking error duck typing HttpError so it checks\n * the statusCode property.\n *\n * @param {Error} error the error to check\n * @return {Boolean} true is the error is file not found\n */\n static isFileNotFound(error) {\n return error && error[STATUS_CODE_PROPERTY] === ERROR_CODE.NOT_FOUND;\n }\n }\n\n return HttpError;\n});\n\n","/* global cordova:false */\n\n'use strict';\n\ndefine('vbc/private/utils',[], () => {\n class Utils {\n /**\n * Generate a string unique Id.\n * @return {string} a unique id\n */\n static generateUniqueId() {\n return Math.random().toString(36).substr(2, 9);\n }\n\n /**\n * A very simplistic check to determine whether code is running on SW vs. UI thread\n *\n * @returns {boolean} true, if the code is executing on the service worker thread in the absence of a global\n * window object.\n */\n static isWorkerThread() {\n return globalThis.window === undefined;\n }\n\n /**\n * @param userAgent an optional userAgent string. If not specified, navigator.userAgent is used\n * @returns {boolean} true if browser is non Chromium based Edge\n */\n static isOldEdge(userAgent = navigator.userAgent) {\n return /Edge\\//i.test(userAgent);\n }\n\n /**\n * Determines whether an app is running as a hybrid mobile application on a device.\n * @returns {boolean}\n */\n static isMobile() {\n return typeof cordova !== 'undefined';\n }\n\n /**\n * Determines whether a mobile app is running on iOS.\n * @returns {boolean}\n */\n static isIos() {\n return Utils.isMobile() && cordova.platformId === 'ios';\n }\n\n /**\n * Determines whether a mobile app is running on Android.\n * @returns {boolean}\n */\n static isAndroid() {\n return Utils.isMobile() && cordova.platformId === 'android';\n }\n\n /**\n * Returns true if the value is an object. An array is not counted as an object for this\n * evaluation.\n *\n * @param value The object to test\n * @returns {boolean} True if the object is non-null, defined, and an object\n */\n static isObject(value) {\n return value && value !== null && typeof value === 'object' && !Array.isArray(value);\n }\n\n /**\n * Return a promise to load a resource.\n * Reject with the error if there was an error or the file doesn't exist\n *\n * @param {String} resource the path to the resource to load\n * @returns {Promise} a promise resolving to the content of the resource\n */\n static getResource(resource) {\n return new Promise((resolve, reject) => {\n requirejs([resource],\n (loaded) => {\n resolve(loaded);\n },\n (reason) => {\n reject(reason);\n });\n });\n }\n\n /**\n * Trace options correspond to vbInitConfig.TRACE_CONFIG. If vbInitConfig.TRACE_CONFIG.tracerOptions.applicationId\n * is not specified, vbInitConfig.APP_ID will be used instead.\n * @returns {Object|undefined} trace options extracted from vbInitConfig\n */\n static getTraceOptions(vbInitConfig) {\n if (vbInitConfig && vbInitConfig.TRACE_CONFIG) {\n // eslint-disable-next-line prefer-object-spread\n const tracerOptions = Object.assign({}, vbInitConfig.TRACE_CONFIG.tracerOptions);\n tracerOptions.applicationId = tracerOptions.applicationId || vbInitConfig.APP_ID;\n // eslint-disable-next-line prefer-object-spread\n return Object.assign({}, vbInitConfig.TRACE_CONFIG, { tracerOptions });\n }\n return undefined;\n }\n\n /**\n * @returns {boolean} a boolean indicating whether the browser is online.\n */\n static isOnline() {\n // if navigator.onLine is false, it is accurate\n if (!navigator.onLine) {\n return false;\n }\n return !(navigator.connection && navigator.connection.type === 'none');\n }\n }\n return Utils;\n});\n\n","'use strict';\n\ndefine('vb/private/configuration',[], () => {\n /**\n * The configuration object is used to store information on the current\n * configuration of the application.\n * This object is initialized once in main.js\n */\n class Configuration {\n static init(configuration) {\n // Store a copy of this function for testing\n Configuration.calculateApplicationUrl = configuration.calculateApplicationUrl;\n\n /**\n * The application URL. It is the URL showing in the browser running the application.\n * This URL can be different from the base URL used to retrieve the application resource.\n * This is will be used by the router sync navigation state and URL\n * See the configuration object in main.js for how it's calculated.\n */\n Configuration.applicationUrl = configuration.applicationUrl;\n\n /**\n * A string marker used in the URL when using the router path strategy to recognize\n * where in the URL the VB application path starts. This is used for the generic case\n * where vbInitConfig.APP_NAME is not defined.\n * For the URL https://host/pathname/vp/app/main/main-start\n * the VB path is /app/main/main-start\n * Page 'app' contains flow 'main' which contains page 'main-start'\n * The value is 'vp' and is defined once in main.js\n * @type {String}\n */\n Configuration.urlMarker = configuration.urlMarker || 'vp';\n\n /**\n * The name of the application as used in the URL. This value is copy from\n * vbInitConfig.APP_NAME. When it is set, it is used instead of urlMarker to\n * recognize where in the URL the application path starts.\n * For the URL https://host/pathname//app/main/main-start\n * the VB path is /app/main/main-start\n * Page app contains flow main which contains page main-start\n * @type {String}\n */\n Configuration.appName = configuration.appName;\n\n /**\n * Calculate the base URL given the values defined in the window.vbInitConfig\n * The body of this function is defined in the configuration object of in main.js\n * and copied here to avoid duplication.\n * This is expected to be used on PWA to calculated the baseUrl.\n * @return {String}\n */\n Configuration.getBaseUrlFromConfig = configuration.getBaseUrlFromConfig;\n }\n\n /**\n * Retrieve the sandbox id or the application. Currently uses the BASE_URL_TOKEN property but in\n * future, there will be a dedicated property on vbInitConfig\n * @return {String} an id describing the sandbox of the application\n */\n static getSandboxId() {\n const initConfig = window.vbInitConfig || {};\n\n // Honor BASE_URL_TOKEN first\n const baseUrlToken = initConfig.BASE_URL_TOKEN || '';\n let sandbox = baseUrlToken.split('sb:')[1];\n if (!sandbox) {\n sandbox = initConfig.SANDBOX;\n }\n\n return sandbox;\n }\n }\n\n return Configuration;\n});\n\n","/* eslint max-classes-per-file: [\"error\", 2] */\n\n'use strict';\n\ndefine('vb/private/utils',[\n 'knockout',\n 'vb/private/constants',\n 'vb/errors/httpError',\n 'jsondiff',\n 'vbc/private/utils',\n 'vb/private/configuration',\n 'urijs/URI',\n], (ko, Constants, HttpError, JsonDiff, CommonUtils, Configuration, URI) => {\n let logger;\n\n // Because of circular dependency we need to load the logger on demand\n const getLogger = () => {\n if (!logger) {\n const Log = requirejs('vb/private/log');\n logger = Log.getLogger('/vb/private/utils');\n }\n\n return logger;\n };\n\n // Use jsonDiff to compare state object\n const jsonDiff = JsonDiff.create({\n arrays: {\n detectMove: false,\n },\n cloneDiffValues: false,\n });\n\n class NameFilters {\n static isNotDecorator(name) {\n return name && !name.startsWith(Constants.Decorators.PREFIX);\n }\n }\n\n const BASE_URL_PARTS = ['VB_SERVER', 'CONTEXT_ROOT', 'APP_URL_PREFIX', 'APP_ID', 'APP_VERSION'];\n\n class Utils extends CommonUtils {\n /**\n * Return a promise to load a resource.\n * Reject with the error if there was an error or the file doesn't exist.\n *\n * @param {String} resource the path to the resource to load\n * @return {Promise} a promise resolving to the content of the resource\n */\n static getResource(resource) {\n return new Promise((resolve, reject) => {\n requirejs([resource],\n (loaded) => {\n resolve(loaded);\n },\n (reason) => {\n let error;\n // For HTTP error, the requireType property is undefined\n if (reason.requireType) {\n error = reason;\n } else {\n error = new HttpError(reason.xhr.status, reason);\n }\n\n reject(error);\n });\n });\n }\n\n /**\n * Return a promise to load an array of resources.\n * Reject with error if there was an error or the resources don't exist.\n *\n * @param resources an array of paths to the resources to load\n * @returns {Promise} a promise to return an array of loaded resources\n */\n static getResources(resources) {\n return new Promise((resolve, reject) => {\n requirejs(resources,\n (...loaded) => {\n resolve(loaded);\n },\n (reason) => {\n if (reason.xhr && reason.xhr.status) {\n reject(new HttpError(reason.xhr.status, reason));\n } else {\n reject(reason);\n }\n });\n });\n }\n\n /**\n * Check if a resource exists at the given path.\n * @param {String} resource the path to the resource to check\n * @return {Promise} a Promise that resolves to true if the file exist\n */\n static resourceExists(resource) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n const res = `${require.toUrl('')}${resource.substr(5)}`;\n\n xhr.open('HEAD', res);\n xhr.onload = function () {\n resolve(this.status !== 404);\n };\n xhr.onerror = function () {\n reject({ status: this.status, statusText: xhr.statusText });\n };\n xhr.send();\n });\n }\n\n static getTextResource(resource) {\n return Utils.getResource(`text!${resource}`);\n }\n\n /**\n * A JSON parser that throws an Error with the resource path.\n * @param {String} jsonContent the JSON content of the resource\n * @param {String} resource the path of the resource being parsed\n * @return {Object} the object\n */\n static parseJsonResource(jsonContent, resource = 'Unknown resource') {\n // An undefined, null or empty content is treated as a error. It's the case\n // for Android where no error is thrown but the content is empty when a file\n // is not found.\n if (!jsonContent) {\n throw new HttpError(404, new Error(`Empty file content for ${resource}.`));\n }\n\n try {\n return JSON.parse(jsonContent);\n } catch (error) {\n getLogger().error('Error when parsing', resource, error);\n throw (error);\n }\n }\n\n /**\n * Load a resource and parse it.\n * If the result of loading is falsy (undefined, null or '') it is not valid\n * and will throw an Http error.\n * If there is a parsing error, this method logs the name\n * of the resource failing and rethrow the error.\n *\n * @param {String} resource the path to the resource\n * @return {Promise.} a promise to the model object.\n */\n static loadAndParse(resource) {\n return Utils.getTextResource(resource).then((jsonContent) => Utils.parseJsonResource(jsonContent, resource));\n }\n\n // dynamically load and create the runtime environment, and cache the Promise\n static getRuntimeEnvironment() {\n if (!Utils.runtimeEnvironmentPromise) {\n Utils.runtimeEnvironmentPromise = this.getResource('vbRuntimeEnvironmentClass')\n .then((RuntimeEnvironmentClass) => new RuntimeEnvironmentClass());\n }\n return Utils.runtimeEnvironmentPromise;\n }\n\n /**\n * Will clone the object, but will copy primitive values, and objects\n * that are not directly derived from an object. For example, objects\n * whose parent class is not object will not be cloned, but passed by\n * reference.\n *\n * @param destination\n * @param source\n * @returns {*}\n */\n static cloneObject(source, destination) {\n let target = destination;\n\n // determine what to do if destination is not specified\n if (typeof destination === 'undefined') {\n if (!Utils.isCloneable(source)) {\n return source;\n }\n\n // otherwise create the right target\n target = Array.isArray(source) ? [] : {};\n }\n\n for (const name in source) {\n const copy = source[name];\n const src = target[name];\n let clone;\n\n // Prevent never-ending loop\n if (target === copy) {\n return target;\n }\n\n // Recurse if we're merging plain objects or arrays\n\n const copyIsArray = Array.isArray(copy);\n if (Utils.isCloneable(copy)) {\n if (copyIsArray) {\n // always clone into an empty array instead of overwriting the original\n clone = [];\n } else {\n clone = src && Utils.isObject(src) ? src : {};\n }\n\n // Never move original objects, clone them\n target[name] = Utils.cloneObject(copy, clone);\n\n // Don't bring in undefined values\n } else {\n target[name] = copy;\n }\n }\n\n return target;\n }\n\n /**\n * Empties all arrays in the value. This will return the new value, but it will also mutate\n * the value passed in.\n *\n * @param value a value, can be a primitive, object, or array\n * @param preserveNonEmpty\n */\n static emptyArrays(value, preserveNonEmpty = false) {\n if (!value) {\n return value;\n }\n let newValue = value;\n\n if (Array.isArray(value)) {\n newValue = [];\n if (preserveNonEmpty && !Utils.isStructureEmpty(value)) {\n Object.keys(value).forEach((k) => {\n const v = value[k];\n newValue.push(Utils.emptyArrays(v, preserveNonEmpty));\n });\n }\n } else if (Utils.isObject(value)) {\n Object.keys(value).forEach((key) => {\n const val = value[key];\n newValue[key] = Utils.emptyArrays(val, preserveNonEmpty);\n });\n }\n\n return newValue;\n }\n\n /**\n * Determines if an array has any set values on it's immediate properties.\n *\n * @private\n * @param structure\n */\n static isStructureEmpty(structure) {\n if (structure === undefined) {\n return true;\n }\n\n if (Array.isArray(structure)) {\n if (structure.length > 1) {\n return false;\n }\n\n const someChildrenHaveStructure = structure.some((v) => !Utils.isStructureEmpty(v));\n return !someChildrenHaveStructure;\n }\n\n if (Utils.isObject(structure)) {\n const keys = Object.keys(structure);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const val = structure[key];\n if (!Utils.isStructureEmpty(val)) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n\n static isPrototypeOfObject(test) {\n try {\n return test && (Object.getPrototypeOf(test) === Object.prototype || test.prototype === null);\n } catch (e) {\n // do nothing, happens on IE11 for non-objects\n }\n return false;\n }\n\n /**\n * Resolves every property of the object.\n * Also freeze the object at every level if the freeze option is set.\n *\n * @param {*} obj the object to traverse and resolve expression.\n * @param {Object} options object with only one possible property for now, freeze\n * { freeze: true } (the default) indicate all nested object should be frozen.\n * @returns {*}\n */\n static deepResolve(obj, options = { freeze: true }) {\n if (Utils.isObjectOrArray(obj)) {\n const propNames = Object.keys(obj); // don't use getOwnPropertyNames(); causes recursion on 'constants'\n\n propNames.forEach((name) => {\n obj[name] = Utils.deepResolve(obj[name], options);\n });\n\n return (options && options.freeze === true) ? Object.freeze(obj) : obj;\n }\n\n return Utils.resolveIfObservable(obj);\n }\n\n /**\n * Given a value that can be an observable, return the value by resolving the potential observable.\n * @param {Object|Function} value\n * @return {*}\n */\n static resolveIfObservable(value) {\n return ko.isObservable(value) ? value() : value;\n }\n\n /**\n * Returns true if value is a primitive.\n *\n * @param value\n * @returns {boolean}\n */\n static isPrimitive(value) {\n return value !== Object(value);\n }\n\n /**\n * Returns true if the value is defined, non-null, and an object or array.\n *\n * @param value The value to test\n * @returns {boolean} True if the object is defined, non-null, and an object or array\n */\n static isObjectOrArray(value) {\n return value && typeof value === 'object';\n }\n\n /**\n * Return true if the value (or the actual instance) is of an extended type.\n * @param {Object} value\n * @return {Boolean}\n */\n static isExtendedType(value) {\n return (value && typeof value.isExtendedType === 'function' && value.isExtendedType());\n }\n\n /**\n * Returns true if the type declaration is a instance factory type. Factory types are also automatically\n * instance types. See isInstanceType.\n * instanceFactory types can be declared in 2 ways when used under types -\n * vb/InstanceFactory, where foo/bar is an instance type (must have a '/')\n * vb/InstanceFactory, where the instance type is the same as the name of the type. example\n * \"types\": {\n * \"foo/bar\": {\n * \"constructorType\": \"vb/InstanceFactory\"\n * }\n * }\n * @param typeDef the type definition that is typically defined under types\n */\n static isTypeDefInstanceFactory(typeDef) {\n return (typeof typeDef === 'string' && typeDef.indexOf(Constants.VariableTypePrefixes.INSTANCE_FACTORY) === 0);\n }\n\n /**\n * Returns whether or not the type is an instance (class) type, e.g., vb/ServiceDataProvider.\n *\n * @param type the type to check\n * @returns {boolean}\n */\n static isInstanceType(type) {\n // types are referenced within the same container in the following format:\n // :\n // types are referenced as follows in the extensions:\n // <'base'|''|extensionId>/:\n // so the actual type comes after the colon\n // for simple types without the scope, check the whole string\n return typeof type === 'string' && type.substring(type.indexOf(':') + 1).indexOf('/') >= 0;\n }\n\n /**\n * Returns true if the type is an object type, e.g., { \"prop\": \"string\" }.\n * Note that this will return true for the wildcard \"object\" type and false for the wildcard \"any\" type.\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isObjectType(type) {\n return typeof type === 'string' ? type === 'object' : Utils.isObject(type);\n }\n\n /**\n * Returns true if the type is an array type, e.g., string[] or [{\"prop\": \"string\"}].\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isArrayType(type) {\n return typeof type === 'string' && type.endsWith('[]') ? true : Array.isArray(type);\n }\n\n /**\n * Returns true if type is a primitive type, i.e., string, number or boolean.\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isPrimitiveType(type) {\n return ['string', 'number', 'boolean'].some((primitiveType) => type === primitiveType);\n }\n\n /**\n * Returns true if the type is an object or array type.\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isObjectOrArrayType(type) {\n return Utils.isObjectType(type) || Utils.isArrayType(type);\n }\n\n /**\n * Return true if the type is any or object wildcard type.\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isWildcardType(type) {\n return type === 'any' || type === 'object';\n }\n\n /**\n * Returns true if the type is the wildcard \"any\" type.\n *\n * @param type the type to test\n * @returns {boolean}\n */\n static isAnyType(type) {\n return type === 'any';\n }\n\n /**\n * Returns the row type of an array type and null if the type is not an array type.\n *\n * @param type the type the extract the row type\n * @returns {*}\n */\n static getArrayRowType(type) {\n if (Utils.isArrayType(type)) {\n return Array.isArray(type) ? type[0] : type.substring(0, type.length - 2);\n }\n\n return null;\n }\n\n /**\n * Return true if the value is cloneable which means it is an array or an object whose prototype is\n * Object.prototype.\n *\n * @param value The value to test\n * @returns {boolean} True if the value is cloneable\n */\n static isCloneable(value) {\n // original expression\n // !(!Utils.isObjectOrArray(value) || (!Array.isArray(value) && !Utils.isPrototypeOfObject(value)));\n return Utils.isObjectOrArray(value) && (Array.isArray(value) || Utils.isPrototypeOfObject(value));\n }\n\n /**\n * Retrieve the name of an item to use in a web storage.\n * @param {string} applicationId\n * @param {string} scopeName the name of scope for this variable\n * @param {string} namespace the namespace of the variable\n * @param {string} name the name of the variable\n * @return {string} the item name\n */\n static getWebStorageItemName(applicationId, scopeName, namespace, name) {\n return `orcl.vbcs.${applicationId}.${scopeName}.${namespace}.${name}`;\n }\n\n /**\n * Replace the current URL pathname without changing anything else on the URL.\n *\n * @param {String} pathname the pathname to replace the current one\n * @return {String} the new URL\n */\n static replaceUrlPathname(pathname) {\n // TODO: come up with a better approach to detect capabilities based on running platform\n if (!this.isMobile()) {\n // Use the anchor element trick to rebuild the full href by only replacing\n // pathname.\n const parser = document.createElement('a');\n parser.href = window.location.href;\n parser.pathname = pathname;\n window.history.replaceState(window.history.state, '', parser.href);\n\n return parser.href;\n }\n\n return pathname;\n }\n\n static diff(obj1, obj2) {\n return jsonDiff.diff(obj1, obj2);\n }\n\n /**\n * Changes the browser history state and URL. In case the browser is throttling\n * updates to the history (like chrome does) repeat attempt to change the history every\n * second until it is correctly applied.\n * @param {Object} state\n * @param {String} url\n * @param {String} op 'replaceState' or 'pushState'\n * @return {Promise} a promise that resolves when the browser history is changed\n */\n static changeBrowserState(state, url, op) {\n // Do the push or replace\n window.history[op](state, '', url);\n // Check if it succeeded and retry after a second if not\n if (url !== window.location.href || this.diff(state, window.history.state)) {\n // logger.info('Failed changing browser state because of browser throttling, trying again in 1s.');\n return new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 1000);\n }).then(() => this.changeBrowserState(state, url, op));\n }\n\n return Promise.resolve();\n }\n\n static appendToUrlPathname(segment) {\n const pathname = window.location.pathname;\n const sep = (pathname.slice(-1) === Constants.PATH_SEPARATOR) ? '' : Constants.PATH_SEPARATOR;\n\n this.replaceUrlPathname(`${pathname}${sep}${segment}`);\n }\n\n /**\n * Promise rejects on completion of setTimeout, message will be 'timeout'.\n * @param millisecs\n * @param error optional, will reject with Error('timeout') otherwise\n * @returns {Promise}\n */\n static getTimeoutPromise(millisecs, error) {\n return new Promise((_, reject) => {\n const e = error || new Error('timeout');\n setTimeout(() => reject(e), millisecs);\n });\n }\n\n /**\n * @param promiseOrValue typically, a promise, but can be any value (value will cause this to resolve immediately).\n * @param millisecs timeout length\n * @param errorObj optional an Error object that will be passed to reject(), and subsequently the catch() handler\n * @returns {Promise.<*>|Promise}\n */\n static promiseRaceWithTimeout(promiseOrValue, millisecs, errorObj = new Error('promise timed out')) {\n const timeoutPromise = Utils.getTimeoutPromise(millisecs, errorObj);\n return Promise.race([promiseOrValue, timeoutPromise]);\n }\n\n /**\n * Take a load error, extract the status and build an error message.\n * @param {Object} err an error thrown by Utils.getResource\n * @return {string} the formatted error message.\n */\n static formatLoadError(err) {\n const errInfo = { error: err };\n\n if (!err || !err.message) {\n errInfo.message = 'Unknown error';\n } else {\n errInfo.message = err.message;\n // In case of http error, remove the file URL in front of status\n if (err.statusCode) {\n const statusIndex = err.message.indexOf('status: ');\n if (statusIndex >= 0) {\n const status = err.message.substring(statusIndex);\n errInfo.message = `HTTP error ${status}`;\n }\n }\n }\n\n return errInfo.message;\n }\n\n /**\n * @returns {boolean} true if browser is Safari\n */\n static isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n\n /**\n * Determines whether the application is running in a mobile Safari browser.\n *\n * @returns {boolean}\n */\n static isMobileSafari() {\n return /mobile\\/.*safari/i.test(navigator.userAgent);\n }\n\n /**\n * Reads a given file as binary Blob.\n * @param filePath file path to a file to read\n * @param mimeType optional, will use filename ext otherwise, defaults to application/octet-stream\n */\n static readBlob(filePath, mimeType) {\n const type = mimeType || Utils.getMimeType(filePath);\n const options = type ? { type } : undefined;\n\n if (!Utils.isMobile()) {\n return fetch(filePath)\n .then((response) => {\n if (response.ok) {\n return response.blob();\n }\n return null;\n });\n }\n\n return new Promise((resolve, reject) => {\n window.resolveLocalFileSystemURL(filePath, (fileEntry) => {\n fileEntry.file((file) => {\n const reader = new FileReader();\n\n reader.onloadend = () => {\n resolve(new Blob([new Uint8Array(reader.result)], options));\n };\n\n reader.readAsArrayBuffer(file);\n }, function (e) {\n reject(e);\n });\n }, function (e) {\n reject(e);\n });\n });\n }\n\n /**\n * for now, a limited mapping of common image types, by file extension\n * returns application/octet-stream if not one of the few known types.\n *\n * @param filePath\n * @returns {*}\n */\n static getMimeType(filePath) {\n const ext = filePath.substr(filePath.lastIndexOf('.') + 1);\n switch (ext) {\n case 'jpe':\n case 'jpeg':\n case 'jpg': return 'image/jpeg';\n\n case 'svg': return 'image/svg+xml';\n\n case 'bmp': return 'image/bmp';\n\n case 'gif': return 'image/gif';\n\n default:\n }\n\n return 'application/octet-stream';\n }\n\n /**\n * @typedef {Object} Version\n * @property {number} major major portion of the version\n * @property {number} minor minor portion of the version\n * @property {number} patch patch portion of the version\n */\n /**\n * parses a version string and returns its parts\n * @param versionStr\n * @returns {Version} Parsed version object\n */\n static parseVersionString(versionStr) {\n if (typeof (versionStr) !== 'string') {\n return null;\n }\n\n const versionParts = versionStr.split('.');\n\n // parse from string or default to 0 if can't parse\n return {\n major: parseInt(versionParts[0], 10) || 0,\n minor: parseInt(versionParts[1], 10) || 0,\n patch: parseInt(versionParts[2], 10) || 0,\n };\n }\n\n /**\n * Utility function to check if iOS version is >= 11.3 and < 12 for local file:// href. Used to check for ios bug.\n * https://bugs.webkit.org/show_bug.cgi?id=183028.\n *\n * @returns {boolean} true if iOS version is at least 11.3 and < 12 else false\n */\n static isLocalIOSVersionAtLeast113AndLessThan12() {\n // currently VB only supports Cordova with file:// protocol. So no need to check for file:// in href\n if (Utils.isIos() && window.device) {\n // we include the device plugin by default, so we can use version from device plugin\n // JIT initialize version only once\n Utils.version = Utils.version || Utils.parseVersionString(window.device.version);\n const { version } = Utils;\n\n if (version && (version.major === 11 && version.minor >= 3) && (version.major < 12)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Deletes decorator properties form the object.\n * @param obj\n * @param filterFnc optional\n * @returns {*}\n */\n static removeDecorators(obj, filterFnc = NameFilters.isNotDecorator) {\n if (obj) {\n const o = obj;\n Object.keys(obj || {}).forEach((name) => {\n if (!filterFnc(name)) {\n delete o[name];\n }\n });\n }\n return obj;\n }\n\n /**\n * Flattens a nested object into a an object with one level of properties, with dots in the property names.\n * example:\n * {\n * one: {\n * subone: {\n * suboneone: 'x',\n * subonetwo: 'y'\n * }\n * },\n * two: {\n * subtwo: 'z'\n * }\n * }\n * result:\n * {\n * one.subone.suboneone: 'x',\n * one.subone.subonetwo: 'y',\n * two.subtwo: 'z'\n * }\n * @param object\n * @returns {*}\n */\n static flatten(object) {\n return Object.assign({}, ...(function _flatten(subobj, path = '') {\n if (subobj) {\n return [].concat(\n ...Object.keys(subobj).map((key) =>\n (typeof subobj[key] === 'object' ? _flatten(subobj[key], `${path}${path ? '.' : ''}${key}`) :\n ({ [`${path}${path ? '.' : ''}${key}`]: subobj[key] }))));\n }\n return [];\n }(object)));\n }\n\n /**\n * Converts File object into Blob.\n *\n * Used as a workaround for some Chrome request-cloning bug in Chrome service workers.\n *\n * @param file - file to be converted into Blob.\n * @returns (Blob} a blob duck typed as File.\n */\n static fileToBlob(file) {\n return new Blob([file], { // Duck Blob as File\n type: file.type,\n name: file.name,\n size: file.size,\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n });\n }\n\n /**\n * Returns the 'base' for the proxy/tokenRelay URLs.\n *\n * Use the vbInitConfig parts, so this works for 'regular' and 'vanity url\" use cases.\n * examples:\n *\n * https://vbmasterdev-vbcsqatest.uscom-central-1.c9dev1.oc9qadev.com/ic/builder/design/myapp/1.0;profile=myprof\n * https://vbmasterdev-vbcsqatest.uscom-central-1.c9dev1.oc9qadev.com:443/ic/builder/rt/somewebapp/live/\n *\n * @param activeProfile\n *\n * @returns {string}\n */\n static getBaseUrlForProxy(activeProfile = null) {\n const vbInitConfig = window.vbInitConfig || {};\n\n let url = BASE_URL_PARTS.reduce((acc, curr) => {\n let segment = vbInitConfig[curr];\n // BUFP-30798: include 'profile' as matrix param for proxy/token-relay URLs\n // encode it, just in case, but it shouldn't be necessary\n if (curr === 'APP_VERSION' && activeProfile) {\n segment = `${segment};profile=${encodeURIComponent(activeProfile)}`;\n }\n return `${acc}${segment ? segment + Constants.PATH_SEPARATOR : ''}`;\n }, '');\n\n if (url && url !== '/////') {\n // remove the leading '/' from the reduce,\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n // and replace multiple forward slashes with a single slash (except after ':'), and remove ending slash\n return url.replace(/([^:]\\/)\\/+/g, '$1').replace(/\\/+$/, '');\n }\n\n /**\n * if for some reason, we didn't get nuggets, fall back to using the Configuration.applicationUrl.\n * but we should ALWAYS get nuggets though.\n */\n url = Configuration.applicationUrl || '';\n\n // and remove the end part that we don't need for the token relay/proxy URLs\n // look for the last two parts, just to be safe\n const endOfBase = ['APP_ID', 'APP_VERSION']\n .reduce((acc, cur) => `${acc}${vbInitConfig[cur]}${vbInitConfig[cur] ? '/' : ''}`, '');\n const index = url.indexOf(endOfBase);\n if (index >= 0) {\n url = url.substring(0, index + endOfBase.length);\n }\n\n if (activeProfile && vbInitConfig.APP_VERSION) {\n const verLen = vbInitConfig.APP_VERSION.length;\n const verIndex = url.lastIndexOf(vbInitConfig.APP_VERSION);\n if (verIndex >= 0) {\n url = `${url.substring(0, verIndex)}${vbInitConfig.APP_VERSION}`\n + `;profile=${encodeURIComponent(activeProfile)}${url.substring(verIndex + verLen)}`;\n }\n }\n // same as above; remove the leading from the reduce and concat\n // and replace multiple forward slashes with a single slash (except after ':')\n url = url.replace(/([^:]\\/)\\/+/g, '$1');\n if (url.endsWith(Constants.PATH_SEPARATOR)) {\n url = url.substring(0, url.length - 1);\n }\n return url;\n }\n\n /**\n * Simple file extension removal.\n * @param fileName\n * @returns {string}\n */\n static removeFileExtension(fileName) {\n const fileParts = fileName.split('.');\n if (fileParts.length > 1) {\n fileParts.pop();\n }\n return fileParts.join('.');\n }\n\n /**\n * Simple file name removal.\n * @param fullPath\n * @returns {string}\n */\n static removeFileName(fullPath) {\n return URI(fullPath).filename('').toString();\n }\n\n /**\n * Create a new object, with accessors, that call the functions in the wrapped object.\n *\n * One use-case is to call the JET string functions, with no args, without needing to use a function expression,\n * to match the existing syntax behavior;\n * ex. $page.translations.foo.myString calls the JET .myString function.\n *\n * @param functions {object} contains ONLY properties that are functions\n * @return {object} contains a set of properties with the same names as 'functions', where obj.x is functions.x()\n *\n * @private\n */\n static createFunctionWrappers(functions) {\n const getters = {};\n\n Object.keys(functions)\n .forEach((fncName) => {\n Object.defineProperty(getters, fncName, {\n // pass an empty object, to prevent exception; the generated functions don't guard against it.\n get: () => functions[fncName]({}),\n });\n });\n\n return getters;\n }\n\n /**\n * Utility to take hyphenated strings/filenames, remove the hyphens, and camel-case it.\n * ex: data-description-overlay.json => dataDescriptionOverlay\n *\n * @param hyphenatedString\n * @returns {string}\n */\n static hyphenatedToCamelCase(hyphenatedString) {\n // in cse its a file, remove any dot-something at the end, for convenience.\n const cleanedString = Utils.removeFileExtension(hyphenatedString);\n const parts = cleanedString.split('-')\n .map((part, index) => (index ? part.charAt(0).toUpperCase() + part.slice(1) : part));\n return parts.join('');\n }\n\n /**\n * Flattens the specified arguments producing an array with unique, defined elements. The order of the resulting\n * array is the order that the arguments are traversed.\n *\n * @example:\n * console.log(Utils.toFlatUniqueArray(1, 2, 1, 2, [1, [[1, undefined], 2, 3, [4]]])) // outputs [1, 2, 3, 4]\n *\n * @param args\n * @return {*[]}\n */\n static toFlatUniqueArray(...args) {\n // set accumulates the elements that are returned\n // arraySet avoids endless recursion if 2 arrays contain each other\n const doit = (set, arraySet, array) => {\n array.forEach((value) => {\n if (Array.isArray(value)) {\n const aSet = arraySet || new Set();\n if (!aSet.has(value)) {\n aSet.add(value);\n doit(set, aSet, value);\n }\n } else if (value !== undefined) {\n set.add(value);\n }\n });\n return set;\n };\n\n return [...doit(new Set(), undefined, args)];\n }\n\n /**\n * Parses the specified string value to return an object with one or more of the following properties: 'prefix',\n * 'main', and 'suffix'. The return is undefined if 'value' is not a string or if no properties were set.\n *\n * The value is parsed as follows:\n *
    \n *
  • If value has a 'suffix' token, the part after the token is the suffix and value now is only\n * the part before the token.
  • \n *
  • If value has a 'prefix' token, the part before the token is the prefix and value now is the part\n * after the token.
  • \n *
  • main is set to value
  • \n *
\n *\n * Notice that a consequence of the above approach is that if the prefix has the 'suffix token', the\n * returned object has only the main and suffix token - in other words, the prefix cannot have the 'suffix token'.\n *\n * Clients can override the 'prefixToken' and 'suffixToken' with default to ':' and '/' respectively. Moreover,\n * setting a token to an empty string causes it to be ignored - so setting 'prefixToken' causes the prefix\n * handling to be ignored.\n *\n * @examples:\n * console.log(Utils.parseQualifiedIdentifier('p:m/s')); // { prefix:p, main:m, suffix:s }\n * console.log(Utils.parseQualifiedIdentifier('m/s')); // { main:m, suffix:s }\n * console.log(Utils.parseQualifiedIdentifier('m')); // { main:m }\n * console.log(Utils.parseQualifiedIdentifier('/s')); // { suffix:s }\n * console.log(Utils.parseQualifiedIdentifier('p:')); // { prefix:p }\n * console.log(Utils.parseQualifiedIdentifier('p/:')); // { main:p, suffix:: }\n *\n * @param {string} value - the value to be parsed\n * @param {string} [prefixToken] - the prefix token, defaults to :\n * @param {string} [suffixToken] - the suffix token, defaults to /\n * @return {{[prefix]:string, [main]:string, [suffix]:string}|undefined} undefined if value is not a string or the\n * object described above.\n */\n static parseQualifiedIdentifier(value, { prefixToken = ':', suffixToken = '/' } = {}) {\n if (typeof value === 'string') {\n let prefix;\n let main = '';\n let suffix;\n\n const suffixIndex = value.indexOf(suffixToken.length > 0 ? suffixToken : null);\n if (suffixIndex >= 0) {\n if (suffixIndex > 0) {\n main = value.substring(0, suffixIndex);\n }\n suffix = value.substring(suffixIndex + 1);\n } else {\n main = value;\n }\n\n const prefixIndex = main.indexOf(prefixToken.length > 0 ? prefixToken : null);\n if (prefixIndex >= 0) {\n if (prefixIndex > 0) {\n prefix = main.substring(0, prefixIndex);\n }\n main = main.substring(prefixIndex + 1);\n }\n\n let parsed;\n if (prefix) {\n (parsed || (parsed = {})).prefix = prefix;\n }\n if (main) {\n (parsed || (parsed = {})).main = main;\n }\n if (suffix) {\n (parsed || (parsed = {})).suffix = suffix;\n }\n return parsed;\n }\n return undefined;\n }\n }\n\n // expose a static instance of filter utilities\n Utils.nameFilters = NameFilters;\n\n return Utils;\n});\n\n","'use strict';\n\n// This file was originally located in src/vb/private/. For full history: git log -- src/vb/private/logConfig.js\ndefine('vbc/private/logConfig',['vbc/private/constants'], (Constants) => {\n /**\n * These are the loggers used in VBRT, which is based on a path. Each logger can be configured for\n * that path, and will affect all path elements underneath it. If a logger is requested but not\n * found, the default settings will be used based on the system logger.\n *\n * Each path can specify what levels are logged.\n *\n * To use a log, see utils/logger.js.\n */\n const Loggers = {\n '/': { error: true, info: true, fine: false, finer: false, warn: true },\n '/vb/stateManagement/variable': { finer: true },\n '/vb/stateManagement/instanceFactoryVariable': { finer: true },\n '/vb/stateManagement/container': { finer: true },\n '/vb/action': { fine: true },\n '/vb/types/ServiceDataProvider': { finer: true },\n '/vb/types/ServiceDataProvider.AsyncIterator': { finer: true },\n '/vb/helpers/rest': { fine: true },\n };\n\n const SpecialLogConstants = {\n CODE: 'code',\n };\n\n /**\n * Allows a configuration of styles if the default styles are not visually pleasing. Please only\n * make changes to styles in your private copy in loggers-config.js.\n */\n const Styles = {};\n Styles[Constants.Severity.ERROR] = {\n display: 'ERROR',\n style: 'background-color: #EB2A64; color: white',\n };\n Styles[Constants.Severity.INFO] = {\n display: 'INFO',\n style: 'font-weight:normal;background-color: #CED6F0; color: #0C40ED',\n };\n Styles[Constants.Severity.FINE] = {\n display: 'FINE',\n style: 'font-weight:normal;background-color: #C4C6CC; color: #4A4A4A',\n };\n Styles[Constants.Severity.FINER] = {\n display: 'FINER',\n style: 'font-weight:normal;background-color: #E9EAF0; color: #616060',\n };\n Styles[Constants.Severity.WARNING] = {\n display: 'WARN',\n style: 'background-color: #F2F2A7; color: black',\n };\n Styles[SpecialLogConstants.CODE] = {\n display: 'FINER',\n style: 'font-weight:bold;background-color: #E9EAF0; color: #616060',\n };\n\n const FancyStyleByFeature = {\n containerStart: 'orange',\n containerEnd: 'orange-end',\n actionChainStart: 'purple',\n actionChainEnd: 'purple-end',\n restHelperStart: 'yellow',\n restHelperEnd: 'yellow-end',\n serviceDataProviderStart: 'bluegreen',\n serviceDataProviderEnd: 'bluegreen-end',\n };\n\n const FancyStyles = {\n 'fancy-yellow': 'font-weight:normal;background-color: #ffed00; color:#020200;padding:2px;font-size:11px;',\n 'fancy-yellow-end': 'font-weight:normal;color:#FFCC00;padding:2px;font-weight:bolder;font-size:11px;',\n 'fancy-orange': 'font-weight:normal;background-color: #EC9A29; color: #143642;padding:2px;font-size:11px;',\n 'fancy-orange-end': 'font-weight:normal;color:#A56B1C;padding:2px;font-weight:bolder;font-size:11px;',\n 'fancy-calm': 'font-weight:normal;background-color: #8BD8C6; color: black;font-size:14px;',\n 'fancy-green': 'font-weight:normal;background-color: #3E8914; color: #E8FCCF;padding:2px;font-size:11px;',\n 'fancy-bluegreen': 'font-weight:normal;background-color: #00cccc; color:#E8FCCF;padding:2px;font-size:11px;',\n 'fancy-bluegreen-end': 'font-weight:normal;color:#009999;padding:2px;font-weight:bolder;font-size:11px;',\n 'fancy-purple': 'font-weight:normal;color: transparent;text-shadow: 0 0 0 #9FAE68;' +\n 'background-color:#7768AE;color: #fff;padding:2px;font-size:11px;',\n 'fancy-purple-end': 'font-weight:normal;color: transparent;text-shadow: 0 0 0 #9FAE68;' +\n 'color:#551A8B;padding:2px;font-weight:bolder;font-size:11px;',\n };\n\n const Emojis = {\n 'fancy-orange': '🐬',\n 'fancy-orange-end': '🐬',\n 'fancy-green': '🐝',\n 'fancy-bluegreen': '🐿',\n 'fancy-bluegreen-end': '🐿',\n 'fancy-purple': '🐇',\n 'fancy-purple-end': '🐇',\n 'fancy-start': '✅️',\n 'fancy-end': '❌',\n 'fancy-calm': '🐐',\n 'fancy-yellow': '🐎',\n 'fancy-yellow-end': '🐎',\n };\n\n const CodeFontColors = {\n $string: 'color:#CD0000',\n $number: 'color:#0000FF',\n $boolean: 'color:#CC7832',\n $null: 'color:magenta',\n $key: 'color:#660E7A',\n };\n\n return { Loggers, Styles, FancyStyles, Emojis, CodeFontColors, FancyStyleByFeature };\n});\n\n","'use strict';\n\ndefine('vbc/private/performance/performanceCategory',[], () => {\n const EMPTY_ENTRIES_PROMISE = (format) => Promise.resolve(format([]));\n /**\n * A performance category has a name and a promise that resolves to (optionally formatted) entries.\n * If formatCallback is specified, it is applied to each entry individually.\n */\n class PerformanceCategory {\n // Because of a circular dependency between Performance and Log, logger needs to be loaded on demand\n getLogger() {\n if (!this.logger) {\n const Log = requirejs('vbc/private/log');\n this.logger = Log.getLogger('/vbc/private/performance/performanceCategory');\n }\n return this.logger;\n }\n\n /**\n * @param {string} name category name\n * @param {function} entriesCallback a callback is a promise to a list performance category entries,\n * optionally formatted. If no entries callback is specified, this category will be empty.\n */\n constructor(name, entriesCallback) {\n this.name = name;\n if (typeof entriesCallback === 'function') {\n this.entriesCallback = entriesCallback;\n } else {\n this.getLogger().warn(`A specified entriesCallabck: ${entriesCallback} is not a function and won't be used`);\n this.entriesCallback = EMPTY_ENTRIES_PROMISE;\n }\n }\n\n getName() {\n return this.name;\n }\n\n /**\n * @param {function} formatCallback formats each category entry individually\n * @returns {Promise} a promise to list of (optionally formatted) entries for this category,\n * or a promise to an empty array, if no entriesCallback has been specified\n */\n getEntries(formatCallback = ((e) => e)) {\n return this.entriesCallback(formatCallback);\n }\n }\n PerformanceCategory.EMPTY_ENTRIES_PROMISE = EMPTY_ENTRIES_PROMISE;\n return PerformanceCategory;\n});\n\n","'use strict';\n\ndefine('vbc/private/performance/immediateCategory',['vbc/private/performance/performanceCategory'], (PerformanceCategory) => {\n const EMPTY_ENTRIES = (format) => format([]);\n /**\n * A PerformanceCategory implementation that is capable of delivering entries immediatelly, without waiting\n * on a promise\n */\n class ImmediateCategory extends PerformanceCategory {\n /**\n * @param {string} name category name\n * @param {function} entriesNowCallback a callback to get a list of performance category entries,\n * optionally formatted.\n */\n constructor(name, entriesNowCallback) {\n super(name, (format) => Promise.resolve(this.getEntriesNow(format)));\n if (typeof entriesNowCallback === 'function') {\n this.entriesNowCallback = entriesNowCallback;\n } else {\n this.entriesNowCallback = EMPTY_ENTRIES;\n }\n }\n\n /**\n * @param {function} formatCallback formats each category entry individually\n * @returns {Array} a list of (optionally formatted) entries for this category or an empty array,\n * if no entriesNowCallback has been specified\n */\n getEntriesNow(formatCallback = ((e) => e)) {\n return this.entriesNowCallback(formatCallback);\n }\n }\n return ImmediateCategory;\n});\n\n","/* eslint-disable prefer-object-spread */\n\n'use strict';\n\ndefine('vbc/private/trace/spanContext',[], () => {\n class SpanContext {\n /**\n * @param startSpanOptions a function that returns start span options object\n * @returns {SpanContext} span context for chaining\n */\n addStartSpan(startSpanOptions) {\n this.startSpan = startSpanOptions;\n return this;\n }\n\n /**\n * @param endSpanOptions a function that returns end span options object\n * @returns {SpanContext} span context for chaining\n */\n addEndSpan(endSpanOptions) {\n this.endSpan = endSpanOptions;\n return this;\n }\n\n /**\n * @param operationName an operation name for the start span\n * @returns {SpanContext} span context for chaining\n */\n addOperationName(operationName) {\n this.operationName = operationName;\n return this;\n }\n\n /**\n * @param error an error for the end span\n * @returns {SpanContext}\n */\n addError(error) {\n this.error = error;\n return this;\n }\n\n /**\n * Adds a function to execute within a span() call\n * @param {} fn Function to execute\n */\n addSpanFunction(fn) {\n this.fn = fn;\n return this;\n }\n\n /**\n * @returns {Object | undefined} valid start span options or undefined\n */\n startSpanOptions() {\n let startSpanOptions;\n if (typeof this.startSpan === 'function') {\n startSpanOptions = this.startSpan();\n if (this.operationName) {\n startSpanOptions = Object.assign({}, this.startSpan(), { operationName: this.operationName });\n }\n }\n // start span options must have operationName set\n return (startSpanOptions && startSpanOptions.operationName) ? startSpanOptions : undefined;\n }\n\n /**\n * Returns function to execute within a span() call\n */\n spanFunction() {\n return this.fn;\n }\n\n /**\n * @returns {Object | undefined} end span options\n */\n endSpanOptions() {\n let endSpanOptions;\n if (typeof this.endSpan === 'function') {\n endSpanOptions = this.endSpan();\n if (endSpanOptions && this.error) {\n endSpanOptions = Object.assign({}, endSpanOptions, { error: this.error });\n }\n }\n return endSpanOptions;\n }\n }\n return SpanContext;\n});\n\n","/* eslint-disable class-methods-use-this */\n\n'use strict';\n\ndefine('vbc/private/trace/tracer',['vbc/private/utils', 'vbc/private/trace/spanContext'], (Utils, SpanContext) => {\n // Maximum number of trace records to buffer\n let tracerPromise;\n let logger;\n // Because of a circular dependency between Trace and Log, logger needs to be loaded on demand\n const getLogger = () => {\n if (!logger) {\n const Log = requirejs('vbc/private/log');\n logger = Log.getLogger('/vbc/private/trace/tracer');\n }\n return logger;\n };\n\n const noop = () => {};\n const noopTracer = {\n startSpan: noop,\n span: (opt, fn) => fn(),\n finishSpan: noop,\n shutdown: noop,\n inject: (req) => req,\n isBlacklisted: () => false,\n blacklist: noop,\n };\n\n /**\n * Used for OpenTracing log record and span management\n */\n class Tracer {\n constructor() {\n // a default tracer is a noop\n this.reset();\n this._blacklist = [];\n }\n\n /**\n * @param options tracer configuration - @see {@link Tracer#checkOptions}\n * @returns {Promise} a promise to an initialized tracer. If tracer options pass a basic sanity check,\n * this will be a client trace Tracer. Otherwise this will be a noop tracer.\n * @see https://confluence.oraclecorp.com/confluence/display/MDO/Trace-Client+API\n */\n init(options) {\n if (!tracerPromise) {\n tracerPromise = Promise.resolve()\n .then(() => {\n if (Tracer.checkOptions(options)) {\n this.options = options;\n // a default tracer is a noop\n if (this.isTelemetryLoaded()) {\n // BUFP-42619: If the telemetry libs were loaded but the tracer\n // isn't initialized yet, it's possible this will return\n // null. If so, enable tracing anyway and we'll check again\n // the first time a span is created.\n // eslint-disable-next-line\n this.tracer; // Prefetch the globalTracer\n this.isEnabled = true;\n }\n }\n getLogger().info('Tracer', this.isEnabled ? 'enabled' : 'disabled', 'on',\n globalThis.toString());\n return this;\n }).catch((err) => {\n getLogger().error('Failed to load tracer on', globalThis.toString(), err);\n this.reset();\n });\n }\n return tracerPromise;\n }\n\n /**\n * Ensure the telemetry lib is loaded\n */\n isTelemetryLoaded() {\n return globalThis.GlobalTracer !== undefined;\n }\n\n /**\n * Resolve the tracer object if it wasn't resolved by init()\n * @see https://jira.oraclecorp.com/jira/browse/BUFP-42619\n */\n get tracer() {\n if (this.isTelemetryLoaded()) {\n if (!this.globalTracer) {\n // Get the global tracer\n const tracer = globalThis.GlobalTracer.get();\n if (tracer) {\n // Cache if tracer was available\n this.globalTracer = tracer;\n } else {\n // Return noopTracer if tracer not loaded\n return noopTracer;\n }\n }\n return this.globalTracer;\n }\n // Return noopTracer if no telemetry\n return noopTracer;\n }\n\n /**\n * Resets tracer singleton so it can be reinitialized. Note that this will not affect the state of the\n * underlying tracer (since JET et al. may be using it), just resets and decouples the VB wrapper.\n */\n reset() {\n tracerPromise = null;\n delete this.options;\n this.globalTracer = null;\n delete this.isEnabled;\n\n this._blacklist = [];\n }\n\n /**\n * @param options tracer configuration, containing:\n *
  • disabled
  • true, if tracing should be disabled for this application\n *
  • injectEnabled
  • true if the tracer should inject span context in outgoing REST calls\n * @see https://confluence.oraclecorp.com/confluence/display/MDO/FusionApps+Client+Logging+Configuration\n * @returns {boolean} true, if trace options pass a basic sanity check. False otherwise.\n */\n static checkOptions(options) {\n if (options && options.disabled) {\n getLogger().info('Tracer options check: tracing is disabled', options, 'on', globalThis.toString());\n return false;\n }\n return true;\n }\n\n /**\n * Creates and returns a client trace span. Typically it is preferable to use span() instead\n * @param {Object} spanContext the SpanContext for the span\n * @returns {Object || undefined} span, if a valid span context was provided. Otherwise returns undefined.\n */\n startSpan(spanContext) {\n let span;\n if (this.isEnabled && spanContext instanceof SpanContext) {\n try {\n const spanOptions = spanContext.startSpanOptions();\n if (spanOptions) {\n span = this.tracer.startSpan(spanOptions);\n }\n } catch (err) {\n getLogger().error('Failed to start trace span', spanContext, 'on', globalThis.toString(), err);\n }\n }\n return span;\n }\n\n /**\n * Ends specified client trace span. If span is undefined, this is a noop.\n * @param {Object} span the span to close\n * @param {Object} spanContext the SpanContext for the span\n */\n finishSpan(span, spanContext) {\n try {\n if (this.isEnabled && span) {\n let spanOptions;\n if (spanContext instanceof SpanContext) {\n spanOptions = spanContext.endSpanOptions();\n }\n span.finish(spanOptions);\n }\n } catch (err) {\n getLogger().error('Failed to finish trace span', span, 'on', globalThis.toString(), err);\n }\n }\n\n /**\n * Executes a span with the given options, executing the spanContext.spanFunction within\n * a span's context and returning its return value, if any\n * @param {} spanContext Span context object\n * @returns The return value of the spanContext.spanFunction() property\n */\n span(spanContext) {\n if (spanContext instanceof SpanContext) {\n if (this.isEnabled) {\n try {\n const spanOptions = spanContext.startSpanOptions() || {};\n const fn = spanContext.spanFunction();\n if (spanOptions && fn) {\n return this.tracer.span(spanOptions, fn);\n }\n } catch (err) {\n getLogger().error('Failed to start trace span', spanContext, 'on', globalThis.toString(), err);\n }\n }\n\n // If disabled or error occurred, let function passthrough\n const fn = spanContext.spanFunction();\n if (fn) {\n return fn();\n }\n }\n return undefined;\n }\n\n /**\n * Injects span context headers into an outgoing fetch request, if applicable\n * @param {*} span Span whose context to inject\n * @param {*} request Request into which to inject it\n * @return Promise resolving to Request object with injected context\n */\n inject(request) {\n // TODO add explicit whitelisting\n if (this.options && this.options.injectEnabled) {\n if (!this.isBlacklisted(request)) {\n return new Promise((resolve) => {\n const newReq = this.tracer.inject(request.clone());\n resolve(newReq);\n });\n }\n }\n\n return Promise.resolve(request);\n }\n\n /**\n * Indicates whether the request has been blacklisted for trace context injection\n * @param {Request} request Request to check for blacklisting\n */\n isBlacklisted(request) {\n return this._blacklist.includes(request.url);\n }\n\n /**\n * Adds a url to the blacklist so injection won't be performed in the future\n * @param url URL to blacklist\n */\n blacklist(request) {\n this._blacklist.push(request.url);\n }\n }\n\n // return a singleton tracer\n return new Tracer();\n});\n\n","/* eslint-disable max-classes-per-file */\n\n'use strict';\n\ndefine('vbc/private/performance/webVitalsCategory',[\n 'vbc/private/utils',\n 'vbc/private/performance/performanceCategory',\n 'vbc/private/trace/tracer',\n 'vbc/private/trace/spanContext',\n], (Utils, PerformanceCategory, Tracer, SpanContext) => {\n const WEB_VITALS_CATEGORY_NAME = 'web vitals (ms)';\n\n class WebVital {\n constructor(reportHandler) {\n reportHandler(this.onReport.bind(this));\n }\n\n /**\n * @returns {Object} a web vitals metric, or example:\n * {name: \"TTFB\",\n * value: 947.4049999989802,\n * delta: 947.4049999989802,\n * entries: Array(1),\n * id: \"v1-1607453629257-9515794308663\"}\n * or undefined if no metric has been reported yet\n * @see https://github.com/GoogleChrome/web-vitals#metric\n */\n getMetric() {\n return this.metric;\n }\n\n onReport(metric) {\n this.metric = metric;\n // https://jira.oraclecorp.com/jira/browse/DTA-4027 addresses better message format\n const spanContext = new SpanContext().addOperationName(`metric/${metric.name}`);\n const metricMsg = { msg: metric };\n spanContext.addStartSpan(() => metricMsg);\n\n spanContext.addEndSpan(() => metricMsg);\n const span = Tracer.startSpan(spanContext);\n if (span) {\n span.finish();\n }\n }\n }\n\n /**\n * A performance category representing Web Vitals.\n * @see https://web.dev/vitals/\n * @see https://github.com/GoogleChrome/web-vitals\n *\n * This category works on UI thread only, and returns empty entries on a worker thread\n */\n class WebVitalsCategory extends PerformanceCategory {\n /**\n * @param {Object} webVitals a WebVitals implementation, if available\n * @see https://github.com/GoogleChrome/web-vitals\n */\n constructor(webVitals) {\n super(WEB_VITALS_CATEGORY_NAME, (format) => Promise.resolve(this.getEntriesNow(format)));\n this.vitals = [];\n\n this.addWebVitalsPromise = Promise.resolve()\n .then(() => {\n if (Utils.isWorkerThread()) {\n return null;\n }\n // a dynamic loading of web-vitals is required to avoid loading web-vitals on the sw thread\n const getWebVitalsPromise = webVitals ? Promise.resolve(webVitals) : Utils.getResource('web-vitals');\n\n return getWebVitalsPromise\n .then((wv) => {\n this.vitals.push(new WebVital(wv.getCLS));\n this.vitals.push(new WebVital(wv.getFCP));\n this.vitals.push(new WebVital(wv.getFID));\n this.vitals.push(new WebVital(wv.getLCP));\n this.vitals.push(new WebVital(wv.getTTFB));\n });\n });\n }\n\n /**\n * @param {function} formatCallback formats each category entry individually\n * @returns {Promise} a promise to list of (optionally formatted) web vital entries or a promise to an empty array,\n * if no entriesCallback has been specified or this is executed on a service worker thread\n */\n getEntries(formatCallback = ((e) => e)) {\n return this.addWebVitalsPromise\n .then(() => {\n if (Utils.isWorkerThread()) {\n return PerformanceCategory.EMPTY_ENTRIES_PROMISE(formatCallback);\n }\n const formattedMetrics = [];\n this.vitals.forEach((v) => {\n const m = v.getMetric();\n if (m) {\n // For CLS the value is first multiplied by 1000 for greater precision\n // See https://developers.google.com/codelabs/chrome-web-vitals-js#3\n const value = Math.round(m.name === 'CLS' ? m.delta * 1000 : m.delta);\n const metric = { [m.name]: Math.round(value) };\n formattedMetrics.push(metric);\n }\n });\n return formattedMetrics;\n });\n }\n }\n WebVitalsCategory.WEB_VITALS_CATEGORY_NAME = WEB_VITALS_CATEGORY_NAME;\n return WebVitalsCategory;\n});\n\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\n\n'use strict';\n\ndefine('vbc/private/performance/reporter',['vbc/private/constants'], (Constants) => {\n // Because of a circular dependency between Performance and Log, logger needs to be loaded on demand\n let logger;\n const getLogger = () => {\n if (!logger) {\n const Log = requirejs('vbc/private/log');\n logger = Log.getLogger('/vbc/private/performance/reporter');\n }\n return logger;\n };\n\n let loggingEnabled;\n const isLoggingEnabled = () => {\n if (loggingEnabled === undefined) {\n loggingEnabled = getLogger().isEnabled(Constants.Severity.INFO);\n }\n return loggingEnabled;\n };\n\n /**\n * A reporter that does nothing but is always enabled\n */\n class Reporter {\n // eslint-disable-next-line no-unused-vars\n report(name, entries) {\n }\n\n // eslint-disable-next-line\n isEnabled() {\n return true;\n }\n }\n\n /**\n * A reporter that logs performance category to the console at the info level\n */\n class ConsoleReporter extends Reporter {\n\n /**\n * @param {boolean} logObject if true, object will be logged directly in console regardless \n * of console.table support\n * @see Log.table\n */\n constructor(logObject = true) {\n super();\n this.logObject = logObject;\n }\n\n report(name = '', entries = []) {\n getLogger().info(`${name}:`);\n const obj = {};\n entries.forEach((e) => Object.assign(obj, e));\n getLogger().table({\n severity: Constants.Severity.INFO,\n groupTitle: name,\n obj,\n logObject: this.logObject,\n });\n }\n\n isEnabled() {\n return isLoggingEnabled();\n }\n }\n\n /**\n * A reporter that logs performance category to the console at the info level, using console.table for each\n * performance entry.\n */\n class TableConsoleReporter extends ConsoleReporter {\n constructor() {\n super(false);\n }\n }\n\n Reporter.CONSOLE_REPORTER = new ConsoleReporter();\n Reporter.TABLE_CONSOLE_REPORTER = new TableConsoleReporter();\n\n return Reporter;\n});\n\n","'use strict';\n\ndefine('vbc/private/performance/performanceReport',[\n 'vbc/private/performance/reporter'], (Reporter) => {\n /**\n * Generates a report for specified performance categories\n */\n class PerformanceReport {\n // Because of a circular dependency between Performance and Log, logger needs to be loaded on demand\n getLogger() {\n if (!this.logger) {\n const Log = requirejs('vbc/private/log');\n this.logger = Log.getLogger('/vbc/private/performance/performanceReport');\n }\n return this.logger;\n }\n\n // eslint-disable-next-line class-methods-use-this\n processCategory(category, reporter, format) {\n const name = category.getName();\n category.getEntries(format)\n .then((entries) => reporter.report(name, entries));\n }\n\n /**\n * Applies specified reporter to each performance category\n * @param {Array} categories an array of Performance categories to process\n * @param {Reporter} reporter to report on each performance category\n * @param {function} format a function to apply to each category entry before reporting\n * @returns {Promise} a promise that resolves when all categories have been successfully reportred\n */\n forEachCategory(categories, reporter, format) {\n const processCategoryPromises = [];\n if (categories) {\n categories.forEach((category) => {\n processCategoryPromises.push(this.processCategory(category, reporter, format));\n });\n }\n return Promise.all(processCategoryPromises);\n }\n\n /**\n * Reports each performance category using a specified format to the reporter\n * @param {Array} categories an array of Performance categories to process\n * @param {Reporter} reporter a function to report on a category\n * @param {function} format a function to apply to each category entry before reporting\n * @returns {Promise} a promise that resolves when all categories have been successfully reportred,\n * or an immediatelly resolved promise if reported is not enabled\n */\n reportEachCategory(categories, reporter = Reporter.CONSOLE_REPORTER, format = PerformanceReport.SIMPLE_FORMAT) {\n if (reporter.isEnabled()) {\n return this.forEachCategory(categories, reporter, format);\n }\n return Promise.resolve();\n }\n }\n\n /**\n * When logging performance entries directly to the console as an Object, formatting makes it easier to copy/paste\n * @param {*} entry a performance entry to format\n */\n PerformanceReport.SIMPLE_FORMAT = (entry) => {\n const formattedEntry = {};\n Object.getOwnPropertyNames(entry).forEach((propertyName) => {\n const formattedName = `\\r${propertyName}`;\n formattedEntry[formattedName] = entry[propertyName];\n });\n return formattedEntry;\n };\n\n return PerformanceReport;\n});\n\n","/* eslint-disable class-methods-use-this, prefer-destructuring */\n\n'use strict';\n\n//\n// performance is a global that is defined on window:\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/performance\n// and on WorkerGlobalScope:\n// https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope\n// which is a parent of ServiceWorkerGlobalScope:\n// https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope\n// Since this code runs both on UI thread and SW thread, it can't use window.performance or else it would break in SW,\n// where window is not defined.\n//\ndefine('vbc/private/performance/performance',[\n 'vbc/private/performance/performanceCategory',\n 'vbc/private/performance/immediateCategory',\n 'vbc/private/performance/webVitalsCategory',\n 'vbc/private/performance/performanceReport',\n 'vbc/private/performance/reporter',\n], (PerformanceCategory, ImmediateCategory, WebVitalsCategory, PerformanceReport, Reporter) => {\n const MARK_START = '_vbMarkStart';\n //\n // Entry types for PerformanceMark, PerformanceMeasure, PerformanceNavigationTiming and PerformanceResourceTiming\n //\n const MARK_TYPE = 'mark';\n const MEASURE_TYPE = 'measure';\n const NAVIGATION_TYPE = 'navigation';\n const RESOURCE_TYPE = 'resource';\n //\n // Common property names between (old) performance.timing (PerformanceTiming) and\n // performance.getEntriesByType('navigation')[0](PerformanceNavigationTiming) excluding unloadEventEnd and\n // unloadEventStart that happen before navigationStart\n // See https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming\n // See https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n //\n const COMMON_PROPS = ['connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd',\n 'domContentLoadedEventStart', 'domInteractive', 'domainLookupEnd', 'domainLookupStart', 'domainLookupEnd',\n 'fetchStart', 'loadEventEnd', 'loadEventStart', 'requestStart', 'responseEnd', 'responseStart'];\n\n // Default size of the resource timing buffer\n // From https://developer.mozilla.org/en-US/docs/Web/API/Performance/setResourceTimingBufferSize:\n // A browser's recommended resource timing buffer size is at least 150\n const DEFAULT_RESOURCE_BUFFER_SIZE = 150;\n\n // Because of a circular dependency between Performance and Log, logger needs to be loaded on demand\n let logger;\n const getLogger = () => {\n if (!logger) {\n const Log = requirejs('vbc/private/log');\n logger = Log.getLogger('/vbc/private/performance/performance');\n }\n return logger;\n };\n\n /**\n * Performance class with lazily initialized properties that correspond to the following performance categories:\n * - info: general information about this application\n * - navigation: entries corresponding to\n * [Navigation Timing Level 2]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming}\n * or\n * [PerformanceTiming]{@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming} API on browsers\n * that don't support PerformanceNavigationTiming.\n * - custom: custom navigation entries such as time to first byte\n * - timestamps: timestamp of important VB events, such as application's vbEnter\n * - durations - time spent on processing VB actions, action chains and fetch calls\n * - resources - 10 most expensive resources loaded by this application. This is either determined by time spent\n * loading this resource (on all browsers), or, resource size (on browser that support it)\n */\n class Performance {\n /**\n * @param resourceTimingBufferSize the size of the resource buffer for resource timing entries.\n * By default, it is 300.\n * @param maxResEntries the maximum number of resource entries to log. If not specified, it will be the same\n * as resourceTimingBufferSize\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/setResourceTimingBufferSize\n */\n constructor({\n resourceTimingBufferSize = DEFAULT_RESOURCE_BUFFER_SIZE,\n maxResEntries = resourceTimingBufferSize,\n } = {}) {\n if (!performance) {\n getLogger().warn('Browser does not support Web Performance');\n return;\n }\n\n // performance.addEventListener is not supported on IE\n if (typeof performance.setResourceTimingBufferSize === 'function') {\n performance.setResourceTimingBufferSize(resourceTimingBufferSize);\n }\n // on Firefox ServiceWorker performance.addEventListener('resourcetimingbufferfull') syntax fails.\n performance.onresourcetimingbufferfull = this.onResourceBufferFull.bind(this);\n\n Performance.INFO = new ImmediateCategory('info', this.getInfo.bind(this));\n Performance.NAVIGATION = new ImmediateCategory('navigation (ms)', this.getNavigation.bind(this));\n Performance.CUSTOM = new PerformanceCategory('custom (ms)', this.getCustom.bind(this));\n Performance.TIMESTAMPS = new ImmediateCategory('timestamps (ms)', this.getTimestamps.bind(this));\n Performance.DURATIONS = new ImmediateCategory('durations (ms)', this.getDurations.bind(this));\n Performance.RESOURCES_BY_DURATION = new ImmediateCategory('resorcesByDuration (ms)',\n this.getResourcesByDuration.bind(this));\n Performance.RESOURCES_BY_SIZE = new ImmediateCategory('resourcesBySize (Kb)',\n this.getResourcesBySize.bind(this));\n Performance.WEB_VITALS = new WebVitalsCategory();\n\n this.categories = [];\n this.categories.push(Performance.INFO);\n this.categories.push(Performance.NAVIGATION);\n this.categories.push(Performance.CUSTOM);\n this.categories.push(Performance.TIMESTAMPS);\n this.categories.push(Performance.DURATIONS);\n this.categories.push(Performance.RESOURCES_BY_DURATION);\n this.categories.push(Performance.RESOURCES_BY_SIZE);\n this.categories.push(Performance.WEB_VITALS);\n\n this.maxResEntries = maxResEntries;\n this.resourceTimingBufferSize = resourceTimingBufferSize;\n }\n\n getCategories() {\n return this.categories;\n }\n\n /**\n * Event listener for 'resourcetimingbufferfull' browser event. All existing resource timing entries are logged\n * and cleared and resource timing buffer size is set to resourceTimingBufferSize.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/resourcetimingbufferfull_event\n */\n onResourceBufferFull() {\n if (performance) {\n getLogger().warn('Resource timing buffer full');\n this.logResources();\n if (performance.getEntriesByType) {\n getLogger().info('Clearing', performance.getEntriesByType(RESOURCE_TYPE).length, 'resource entries');\n }\n // Remove all of the resource timing entries\n performance.clearResourceTimings();\n // Set the new size at resourceTimingBufferSize resource timing entries (PerformanceEntry objects)\n performance.setResourceTimingBufferSize(this.resourceTimingBufferSize);\n }\n }\n\n getReport() {\n if (!this.report) {\n this.report = new PerformanceReport();\n }\n return this.report;\n }\n\n /**\n * Log performance audits directly to the console.\n */\n log() {\n this.getReport().reportEachCategory(this.categories);\n }\n\n logTable() {\n // when using console.table(), there is no need for any formatting\n this.getReport().reportEachCategory(this.categories, Reporter.TABLE_CONSOLE_REPORTER, undefined);\n }\n\n logCustom() {\n this.getReport().reportEachCategory([Performance.CUSTOM]);\n }\n\n logTimestamps() {\n this.getReport().reportEachCategory([Performance.TIMESTAMPS]);\n }\n\n logDurations() {\n this.getReport().reportEachCategory([Performance.DURATIONS]);\n }\n\n logResources() {\n this.getReport().reportEachCategory([Performance.RESOURCES_BY_DURATION, Performance.RESOURCES_BY_SIZE]);\n }\n\n logVitals() {\n this.getReport().reportEachCategory([Performance.WEB_VITALS]);\n }\n\n logVB() {\n this.logDurations();\n this.logTimestamps();\n }\n\n\n /**\n * Determines if performance measuring should be enabled for a given performance config. For example:\n *
    \n     *    PERFORMANCE_CONFIG: {\n     *       resourceTimingBufferSize: 200,\n     *       disabled: false,\n     *   }\n     * 
    \n * means that performance should be enabled.\n * Performance measuring is disabled by default, but in an existing config it can also be disabled\n * by setting disabled property to false:\n *
    \n     *    PERFORMANCE_CONFIG: {\n     *       disabled: false,\n     *   }\n     * 
    \n * @param config PERFORMANCE_CONFIG specified in window.vbInitConfig\n * @returns {boolean} true, if measuring performance should be enabled, false otherwise. For an undefined config, or\n * for a config that does have disabled property set to true, performance is disabled. For all other cases,\n * including an empty PERFORMANCE_CONFIG object, performance measuring is enabled.\n */\n static isEnabled(config) {\n //\n // Cannot use config && ... here, because it gets mimified to:\n // return e && !e.disabled && void 0 !== performance;\n // which, for undefined config, evaluates to undefined and not false, and that breaks unit test in test-release\n //\n return !!(config !== undefined && config !== null\n && (config.disabled ? config.disabled === false : true)\n && performance !== undefined);\n }\n\n /**\n * If performance is enabled by the specified configuration and browser support for performance API,\n * adds perf property to the context object.\n *\n * @param context the object to add perf property to. This is typically window.vb, or\n * globalThis.vb for the ServiceWorkerGlobalContext\n * @param config the performance configuration\n */\n static init(context, config) {\n if (context && Performance.isEnabled(config)) {\n Performance.enabled = true;\n const perf = new Performance(config);\n Object.defineProperty(context, 'perf', {\n enumerable: true,\n configurable: true,\n value: perf,\n });\n Performance.perf = perf;\n } else {\n Performance.enabled = false;\n }\n }\n\n /**\n * Creates a named timestamp in the browser's performance entry buffer between the navigation start time and\n * the current time, if performance is enabled.\n *\n * @param name entries corresponding to the name of the timestamp, for example: 'app', 'beforeEnter'\n * @see {@link Performance.isEnabled()}\n */\n static timestamp(...name) {\n if (Performance.enabled && name && Array.isArray(name) && name.length > 0) {\n performance.mark(name.join(':'));\n }\n }\n\n /**\n * Creates a mark in the browser's performance entry buffer with the given name, if performance is enabled.\n *\n * @param name an array of entries corresponding to the name of the mark, for example, ['fetchHandler.', 'install']\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark\n * @see {@link Performance.isEnabled()}\n */\n static markStart(name = []) {\n if (Performance.enabled && name && Array.isArray(name) && name.length > 0) {\n performance.mark(`${name.join(':')}:${MARK_START}`);\n }\n }\n\n /**\n * Creates a named measure in a browser's performance entry buffer between the start mark with a matching name:\n * 'name' + _vbMarkStart and the current time, if performance is enabled.\n *\n * @param name an array of entries corresponding to the name of the mark, for example, ['fetchHandler.', 'install']\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/measure\n * @see {@link Performance.isEnabled()}\n */\n static markEnd(name = []) {\n if (Performance.enabled && name && Array.isArray(name) && name.length > 0 && performance.getEntriesByName) {\n const markName = name.join(':');\n // create a measure from start mark to now\n const startMarkName = `${markName}:${MARK_START}`;\n // make sure the start mark still exits\n const startMark = performance.getEntriesByName(startMarkName, MARK_TYPE);\n if (startMark && startMark[0]) {\n performance.measure(markName, startMarkName);\n performance.clearMarks(startMarkName);\n }\n }\n }\n\n /**\n * Removes performance entries of type 'mark' and 'measure', since the last leaf page load\n * @param clearResourceTimings if true, also removes 'resource' type entries\n */\n static clear(clearResourceTimings = false) {\n if (Performance.enabled) {\n performance.clearMeasures();\n performance.clearMarks();\n delete performance.onresourcetimingbufferfull;\n if (clearResourceTimings && Performance.perf) {\n Performance.perf.onResourceBufferFull(this);\n }\n }\n }\n\n /**\n * Returns a PerformanceNavigationTiming for browsers that support it. Otherwise, on IE and Safari, a\n * deprecated PerformanceTiming object is returned, or undefined, if neither is supported, or this is\n * a Service Worker thread.\n *\n * @returns {PerformanceNavigationTiming|PerformanceTiming} a performance navigation timing entry\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming\n */\n static getPerformanceTimingEntry() {\n let entry;\n let entries = [];\n if (performance.getEntriesByType) {\n entries = performance.getEntriesByType(NAVIGATION_TYPE);\n if (entries && entries.length > 0) {\n entry = entries[0];\n }\n }\n // fallback for legacy performance API\n if (entries.length === 0 && performance.timing) {\n entry = performance.timing;\n }\n return entry;\n }\n\n /**\n * Navigation start is the start point of a new page load as far as performance tools are concerned.\n * It is actually the moment just before a new page is requested.\n * For the legacy API, this corresponds to performance.timing.navigationStart. For v2 PerformanceNavigationTiming\n * API, it is PerformanceNavigationTiming.startTime, which is 0.\n *\n * @param entry a performance navigation entry\n * @returns {number} a navigation start time used to calculate custom performance entries\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/navigationStart\n */\n static getNavigationStart(entry) {\n // In the legacy PerformanceTiming API, all entries are in epoch time.\n let navigationStart = 0;\n if (entry) {\n if (entry.navigationStart !== undefined) {\n navigationStart = entry.navigationStart;\n } else if (entry.startTime) {\n navigationStart = entry.startTime;\n }\n }\n return navigationStart;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @returns {Array} a list of generic information about this performance audit, such as location and user agent.\n */\n getInfo(f) {\n const info = [];\n // On IE/Edge, performance.getEntriesByType('navigation')[0].name returns 'document', which is not a good name\n // so use window.location.href instead. Except can't use window on SW thread, it has to be globalThis\n info.push(f({ name: globalThis.location.href }));\n info.push(f({ userAgent: navigator.userAgent }));\n info.push(f({ globalObject: globalThis.toString() }));\n return info;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @returns {Array} a list of navigation timings for this application, such as domInteractive or fetchStart\n *\n * @see {@link Performance.getCommonEntryNames()}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming\n */\n getNavigation(f) {\n const navigation = [];\n const timingEntry = Performance.getPerformanceTimingEntry();\n\n if (timingEntry) {\n const navigationStart = Performance.getNavigationStart(timingEntry) || 0;\n // Add all entries common between (old) performance.timing (PerformanceTiming API) and\n // (new) performance.getEntriesByType('navigation')[0](PerformanceNavigationTiming API),\n // adjusting legacy entries for navigation start.\n COMMON_PROPS.forEach((prop) => {\n // adjust all entries that were represented in epoch time\n const propTime = timingEntry[prop] - navigationStart;\n const o = {};\n o[prop] = Math.round(propTime);\n navigation.push(f(o));\n });\n }\n return navigation;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @returns {Promise} a promise to a list of calculated performance measures, such as:\n *\n * - connectTime\n * - domLoadTime\n * - domParsingTime\n * - renderTime\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming\n */\n getCustom(f) {\n const custom = [];\n return Promise.resolve()\n .then(() => {\n const e = Performance.getPerformanceTimingEntry();\n if (e) {\n custom.push(f({ connectTime: Math.round(e.responseEnd - e.requestStart) }));\n custom.push(f({ domLoadTime: Math.round(e.domContentLoadedEventEnd - e.fetchStart) }));\n custom.push(f({ domParsingTime: Math.round(e.domContentLoadedEventEnd - e.domInteractive) }));\n custom.push(f({ renderTime: Math.round(e.domComplete - e.domContentLoadedEventEnd) }));\n }\n return custom;\n })\n .catch((error) => {\n getLogger().warn(error);\n return custom;\n });\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @return {Array} a list of all custom VB performance measures that were added since the last call\n * to {@link clear()}\n *\n * @see {@link markStart(name)}\n * @see {@link markEnd(name)}\n */\n getDurations(f) {\n const durations = [];\n if (performance.getEntriesByType) {\n const entries = performance.getEntriesByType(MEASURE_TYPE);\n if (entries) {\n entries.forEach((entry) => {\n const o = {};\n o[entry.name] = Math.round(entry.duration);\n durations.push(f(o));\n });\n }\n }\n return durations;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @returns {Array} a list of all custom VB timestamps that were added since the last call to {@link clear()}\n *\n * @see {@link timestamp(name)}\n */\n getTimestamps(f) {\n const timestamps = [];\n if (performance.getEntriesByType) {\n const entries = performance.getEntriesByType(MARK_TYPE);\n if (entries) {\n entries.forEach((entry) => {\n // marks ending with MARK_START are used to measure duration and should be ignored here\n if (!entry.name.endsWith(MARK_START)) {\n const o = {};\n o[entry.name] = Math.round(entry.startTime);\n timestamps.push(f(o));\n }\n });\n }\n }\n return timestamps;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @return {Array} For browsers that support PerformanceResourceTiming API's encodedBodySize, a list\n * of properties corresponding to maxResEntries biggest resources since the resource timing buffer has been cleared.\n * For other browsers, an empty array is returned.\n * Resource size is specified in Kb. Resources with size that rounds to zero are not included.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/encodedBodySize\n * @see {@link new Performance(maxResEntries)}\n */\n getResourcesBySize(f) {\n const resources = [];\n if (performance.getEntriesByType) {\n const resEntries = performance.getEntriesByType(RESOURCE_TYPE);\n // encodedBodySize is not universally supported\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/encodedBodySize\n // entries are sorted by size, if available\n const resEntry = resEntries[0];\n if (resEntry && resEntry.encodedBodySize !== undefined) {\n resEntries.sort((a, b) => {\n if (a.encodedBodySize < b.encodedBodySize) {\n return 1;\n }\n return -1;\n });\n resEntries.slice(0, resEntries.length > this.maxResEntries ? this.maxResEntries : resEntries.length)\n .forEach((entry) => {\n const size = Math.round(entry.encodedBodySize / 1024);\n // encodedBodySize for resource fetched on SW thread is showing up as 0, so don't include it\n if (size > 0) {\n const o = {};\n o[entry.name] = Math.round(size);\n resources.push(f(o));\n }\n });\n }\n }\n return resources;\n }\n\n /**\n * @param {function} f a format callback to apply to each entry\n * @return {Array} a list of properties corresponding to maxResEntries resources that took longest to load\n * for this application, since the resource timing buffer has been cleared.\n * Duration is specified in milliseconds.\n *\n * See {@link https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming}\n */\n getResourcesByDuration(f) {\n const resources = [];\n if (performance.getEntriesByType) {\n const resEntries = performance.getEntriesByType(RESOURCE_TYPE);\n if (resEntries) {\n resEntries.sort((a, b) => {\n if (a.duration < b.duration) {\n return 1;\n }\n return -1;\n });\n resEntries.slice(0, resEntries.length > this.maxResEntries ? this.maxResEntries : resEntries.length)\n .forEach((entry) => {\n // if a resource is fetched multiple times, use the longest duration (for now)\n if (!resources[entry.name] || resources[entry.name] < entry.duration) {\n const o = {};\n o[entry.name] = Math.round(entry.duration);\n resources.push(f(o));\n }\n });\n }\n }\n return resources;\n }\n }\n return Performance;\n});\n\n","/* eslint-disable prefer-destructuring */\n\n'use strict';\n\ndefine('vbc/private/monitorOptions',[], () => {\n const STARTING = 'starting';\n const ENDING = 'ending';\n class MonitorOptions {\n /**\n * @param operationName the name of the operation to monitor\n * @param message user readable monitor message\n */\n constructor(operationName, message) {\n this.operationName = operationName;\n this.message = message;\n }\n\n /**\n * @param message monitor message\n * @returns {MonitorOptions}\n */\n addMessage(message) {\n this.message = message;\n return this;\n }\n\n /**\n * @param message start monitor message\n * @returns {MonitorOptions} monitor options for chaining\n */\n addStartMessage(message) {\n this.startMessage = message;\n return this;\n }\n\n /**\n * @param message end monitor message\n * @returns {MonitorOptions} monitor options for chaining\n */\n addEndMessage(message) {\n this.endMessage = message;\n return this;\n }\n\n /**\n * @param tags a function that returns log monitor tags object\n * @returns {MonitorOptions} monitor options for chaining\n */\n addTags(tags) {\n this.tags = tags;\n return this;\n }\n\n /**\n * @param startFields a function that returns a fields object\n * @returns {MonitorOptions} monitor options for chaining\n */\n addStartFields(startFields) {\n this.startFields = startFields;\n return this;\n }\n\n /**\n * @param endFields a function that returns a fields object\n * @returns {MonitorOptions} monitor options for chaining\n */\n addEndFields(endFields) {\n this.endFields = endFields;\n return this;\n }\n\n /**\n * @returns {*|string} a start message for this monitor. If no start message was specified, start message is\n * constructed from the message.\n */\n getStartMessage() {\n let startMessage = this.startMessage;\n if (!startMessage && this.message) {\n startMessage = `${STARTING} ${this.message}`;\n }\n return startMessage;\n }\n\n /**\n * @returns {*|string} an end message for this monitor. If no end message was specified, end message is\n * constructed from the message.\n */\n getEndMessage() {\n let endMessage = this.endMessage;\n if (!endMessage && this.message) {\n endMessage = `${ENDING} ${this.message}`;\n }\n return endMessage;\n }\n\n /**\n * @returns {Object | undefined} log monitor tags object\n */\n getTags() {\n let tags;\n if (typeof this.tags === 'function') {\n tags = this.tags();\n }\n return tags;\n }\n\n /**\n * @returns {Object | undefined} log monitor fields object\n */\n getStartFields() {\n let fields;\n if (typeof this.startFields === 'function') {\n fields = this.startFields();\n }\n return fields || {};\n }\n\n /**\n * @returns {Object | undefined} log monitor fields object\n */\n getEndFields() {\n let fields;\n if (typeof this.endFields === 'function') {\n fields = this.endFields();\n }\n return fields || {};\n }\n }\n return MonitorOptions;\n});\n\n","/* eslint-disable max-classes-per-file */\n/* eslint-disable prefer-destructuring, prefer-object-spread */\n\n'use strict';\n\n// This file was originally located in src/vb/private/. For full history: git log src/vb/private/log.js\ndefine('vbc/private/log',[\n 'vbc/private/constants',\n 'vbc/private/logConfig',\n 'vbc/private/utils',\n 'vbc/private/performance/performance',\n 'vbc/private/trace/tracer',\n 'vbc/private/trace/spanContext',\n 'vbc/private/monitorOptions',\n], (Constants, LogConfig, Utils, Performance, Tracer, SpanContext, MonitorOptions) => {\n // The place where all the loggers are cached\n const cachedLoggers = {};\n\n /**\n * The global configuration object for all loggers that allows to turn off fancy mode(colors) and emoji's.\n * This is typically specified as a window.vbInitConfig.LOG parameter in index.html:\n *
    \n   *   {\n   *   mode: 'simple',\n   *   emoji: 'off',\n   *   }\n   * 
    \n * @type {{}}\n */\n let logConfig = {};\n\n // A no-op used in various place\n const noop = () => {\n };\n\n const resolveConsoleMappings = () => {\n // check to make sure we can actually log\n const compatLog = (console && console.log) ? console.log : noop;\n const compatInfo = (console && console.info) ? console.info : compatLog;\n const compatErr = (console && console.error) ? console.error : compatLog;\n const compatWarn = (console && console.warn) ? console.warn : compatLog;\n const compatDebug = (console && console.debug) ? console.debug : compatLog;\n\n /**\n * An object use to map a log severity to a console method name\n * @type {Object}\n */\n const consoleMapper = {\n [Constants.Severity.ERROR]: compatErr,\n [Constants.Severity.WARNING]: compatWarn,\n [Constants.Severity.INFO]: compatInfo,\n [Constants.Severity.FINE]: compatDebug,\n [Constants.Severity.FINER]: compatDebug,\n };\n\n return consoleMapper;\n };\n\n let consoleMapper = resolveConsoleMappings();\n\n // Internet explorer has limited support for console.\n const isIE = !!(console.table === undefined);\n\n // console.group support check\n const isGroup = !!(console.group && console.groupCollapsed && console.groupEnd);\n\n // console.table support check\n const isTable = console.table && !Utils.isOldEdge();\n\n /**\n * Given a path and the information in the logConfig, retrieve which severity\n * method will show on the console.\n * @param {String} path\n * @return {Object} an object where each property is a severity of type boolean\n */\n const getShowLogMap = (path) => {\n const loggerInfo = {};\n let loggerPath = path;\n\n // go through each of the path elements\n while (loggerPath.length > 0) {\n const foundLogger = LogConfig.Loggers[loggerPath];\n if (foundLogger) {\n // fill in the log levels that we can for the current path\n Constants.SeverityOrder.forEach((severity) => {\n if (loggerInfo[severity] === undefined && foundLogger[severity] !== undefined) {\n loggerInfo[severity] = foundLogger[severity];\n }\n });\n }\n\n // if we have all our info, abort\n if (Constants.SeverityOrder.every((severity) => loggerInfo[severity] !== undefined)) {\n break;\n }\n\n // get the next logger in the path\n const lastSlash = loggerPath.lastIndexOf('/');\n if (lastSlash === -1) {\n loggerPath = '';\n } else if (lastSlash === 0) {\n loggerPath = '/';\n } else {\n loggerPath = loggerPath.substring(0, lastSlash);\n }\n }\n\n return loggerInfo;\n };\n\n /**\n * Return true is the log should be in fancy mode\n * @return {Boolean}\n */\n const useFancyMode = (config) => {\n // Fancy mode is not supported by IE\n if (isIE) {\n return false;\n }\n return (config.mode !== 'simple');\n };\n\n /**\n * Return true is the log should be in fancy mode\n * @return {Boolean}\n */\n // eslint-disable-next-line arrow-body-style\n const useEmoji = (config) => {\n // By looking at the flag all the time, we allow switching mode during debugging\n return (config.emoji !== 'off');\n };\n\n /**\n * Only use template for formatting messages if we are not running in test mode.\n *\n * @param config log configuration\n * @returns {Boolean}\n */\n const useTemplate = config => (config.mode !== 'test');\n\n /**\n * if the LogConfig.Styles[severity] has a truthy 'disabled' property\n * @param severity\n * @returns {*}\n * @private\n */\n const isSeverityDisabled = (severity) => !!(LogConfig.Styles[severity] && LogConfig.Styles[severity].disabled);\n\n /**\n * A logger that has a name and log levels.\n *\n * @param {String} path The logger path (i.e. /vb)\n * @param {Object[]} customLoggers the definition of custom loggers\n * @param {String} customLoggers.name - the name of the function on the logger\n * @param {String} customLoggers.severity - the severity to use on the custom logger\n * @param {String} customLoggers.style - the style to use on the custom logger\n * @params {Object} options custom logging configuration\n * @params {boolean} options.useEmoji true, if logging messages can use emojis for fancy style\n * @param {boolean} options.useFancyMode true, if fancy node should be used to format log messages\n * @param {Object} options.wrapErrorIfNeeded a function that allows to perform special handling for log errors\n * @see {@link LogConfig#Emojis}\n * @see {@link LogConfig#FancyStyle}\n * @constructor\n * @private\n */\n class Logger {\n constructor(path, customLoggers, options = {}) {\n this._display = path;\n\n this._showLog = getShowLogMap(path);\n\n this.customLoggers = customLoggers;\n\n this.options = options;\n\n this.options.wrapErrorIfNeeded = this.options.wrapErrorIfNeeded || noop;\n\n // Dynamically create the methods error, war, info, fine and finer\n // on the Logger class\n Constants.SeverityOrder.forEach((severity) => {\n // Update the showLog map with info about the severity from the LogConfig\n const severityEnabled = !!(!isSeverityDisabled(severity) && this._showLog[severity] === true);\n this._showLog[severity] = severityEnabled;\n\n // Create a property for each severity (isInfo, isFine, isFiner, etc) so that logging can be\n // made optional using the condition logger.isFine\n let propName = severity.charAt(0).toUpperCase() + severity.slice(1);\n propName = `is${propName}`;\n this[propName] = severityEnabled;\n\n // Create the logging method\n this[severity] = this.getLoggerMethod(severity);\n });\n\n this.options.wrapErrorIfNeeded(this);\n\n // Create additional logging methods using severity and style passed to the constructor\n if (customLoggers) {\n customLoggers.forEach((def) => {\n this[def.name] = this.getLoggerMethod(def.severity, def.style);\n });\n }\n }\n\n /**\n * Get the method that should be called when logging with a specific severity and style\n * The method is bound to the console object to display the correct log location on the\n * debugger.\n * @param {String} severity\n * @param {String} style\n * @return {Function} the bound logging function\n */\n getLoggerMethod(severity, style) {\n if (this._showLog[severity] === true) {\n const consoleMethod = consoleMapper[severity];\n\n // Use bind instead of wrapping in order to display the log origin\n return consoleMethod.bind(console, ...this._buildParams(severity, style));\n }\n\n return noop;\n }\n\n /**\n * If logger is enabled for this severity, and console.table is enabled, specified object will\n * be displayed in a table within a console.group.\n * Otherwise, if logging level is enabled, but there is no table support, the object will be logged directly\n * in the console.\n * For a logging level that is disabled for this logger, there will be no console output.\n * @param severity logging level. For example, 'fine', 'info', 'error'. If not enabled for this logger,\n * there will be no console output\n * @param obj {Object} the object to display in console.table\n * @param groupTitle an optional title for the console.group, if group option is available\n * @param group a boolean specifying if table should be showed within a (collapsed) group\n * @param logObject if true, object will be logged directly in console regardless of console.table\n * support\n */\n table({\n severity, obj, groupTitle = '', group = true, logObject = false,\n } = {}) {\n if (this.isEnabled(severity) && Utils.isObject(obj)) {\n let endGroup = false;\n if (group && isGroup) {\n console.groupCollapsed(groupTitle);\n endGroup = true;\n }\n // console.table does not work for objects on Window's Edge (not Chromium based edge)\n // property names are shown, but not property values. On Chrome, table does not\n // show up every time console.table() is called. For those reasons, logObject flag is used to skip\n // console.table() call\n if (!logObject && isTable) {\n console.table(obj);\n } else {\n this.getLoggerMethod(severity)(obj);\n }\n if (endGroup) {\n console.groupEnd();\n }\n }\n }\n\n /**\n * @param severity logging level. For example, 'fine', 'info', 'error'.\n * @returns {boolean} true, if the logging level is enabled for this logger\n */\n isEnabled(severity) {\n return this[severity] !== noop;\n }\n\n /**\n * Creates a new monitor that can be used to time an operation.\n *\n * @param monitorOptions (Object) log monitor options for this monitor\n * @param fn (Function) a function that takes a timing function as a param to call when timing ends\n * @returns The return value of fn OR the end timing function if fn was not supplied\n */\n // eslint-disable-next-line class-methods-use-this\n monitor(monitorOptions, fn) {\n const startTime = new Date().getTime();\n let markName;\n let spanContext;\n let span;\n const endFunc = (detail) => {\n const duration = new Date().getTime() - startTime;\n if (markName) {\n Performance.markEnd(markName);\n }\n if (spanContext) {\n if (detail instanceof MonitorOptions) {\n spanContext.addEndSpan(() => (Object.assign({\n msg: detail.getEndMessage(),\n }, detail.getEndFields())));\n } else {\n spanContext.addError(detail);\n }\n\n Tracer.finishSpan(span, spanContext);\n }\n return `(completed in ${duration} ms)`;\n };\n\n if (monitorOptions instanceof MonitorOptions) {\n markName = [monitorOptions.operationName, monitorOptions.message];\n Performance.markStart(markName);\n spanContext = new SpanContext().addOperationName(monitorOptions.operationName);\n spanContext.addStartSpan(() => (Object.assign({\n msg: monitorOptions.getStartMessage(),\n tags: monitorOptions.getTags(),\n }, monitorOptions.getStartFields())));\n spanContext.addEndSpan(() => (Object.assign({\n msg: monitorOptions.getEndMessage(),\n }, monitorOptions.getEndFields())));\n\n if (fn) {\n // Use the span() function (preferred)\n spanContext.addSpanFunction((spn) => {\n span = spn;\n return fn(endFunc);\n });\n return Tracer.span(spanContext);\n }\n\n // Use the startSpan() function\n span = Tracer.startSpan(spanContext);\n }\n\n return endFunc;\n }\n\n /**\n * Builds params to format log message.\n * @param {String} severity\n * @param {String} style\n * @returns {Array}\n * @private\n */\n _buildParams(severity, style) {\n const params = [];\n const baseTemplate = '[VB (%s), %s]:';\n\n // directly format the message header when running in test mode\n if (!this.options.useTemplate) {\n params.push(`[VB (${LogConfig.Styles[severity].display}), ${this._display}]:`);\n return params;\n }\n\n if (!this.options.useFancyMode) {\n params.push(baseTemplate);\n } else if (style) {\n const fancyStyle = `fancy-${style}`;\n let emoji = '';\n if (this.options.useEmoji) {\n emoji = LogConfig.Emojis[fancyStyle];\n emoji = emoji ? `${emoji} ` : '';\n }\n params.push(`%c${emoji}${baseTemplate}`);\n params.push(LogConfig.FancyStyles[fancyStyle]);\n } else {\n params.push(`%c${baseTemplate}`);\n params.push(LogConfig.Styles[severity].style);\n }\n\n params.push(LogConfig.Styles[severity].display);\n params.push(this._display);\n\n return params;\n }\n }\n\n /**\n * Loggers are path based, to get a particular logger, use:\n *\n * Log.getLogger('/some/path')\n *\n * where the path is arbitrary but should reflect the organization of your resources.\n *\n * The second argument is used to define custom loggers. A custom logger has name, a severity\n * and a style. A new method with that name is created on the logger that will log a message\n * on the console using that severity and style.\n *\n * Logs can be configured by editing /loggers-config.js, please see the comments in there\n * for more details.\n */\n class Log {\n /**\n * Returns a logger for the given path (see Log.Loggers). The path will determine the attributes\n * of the logger, including what levels are shown by default.\n *\n * @param {String} path The logger path (i.e. /vb)\n * @param {Object[]} customLoggers the definition of custom loggers\n * @param {String} customLoggers.name - the name of the function on the logger\n * @param {String} customLoggers.severity - the severity to use on the custom logger\n * @param {String} customLoggers.style - the style to use on the custom logger\n * @param {Object} wrapErrorIfNeeded a function that allows to perform special handling for log errors\n */\n static getLogger(path, customLoggers, wrapErrorIfNeeded = noop) {\n let logger = cachedLoggers[path];\n\n if (!logger) {\n // create new logger with the logger levels\n const options = {};\n options.useTemplate = useTemplate(logConfig);\n options.useEmoji = useEmoji(logConfig);\n options.useFancyMode = useFancyMode(logConfig);\n options.wrapErrorIfNeeded = wrapErrorIfNeeded;\n logger = new Logger(path, customLoggers, options);\n cachedLoggers[path] = logger;\n }\n\n return logger;\n }\n\n /**\n * Allows sub class to access cached loggers.\n * @return an object containing existing loggers keyed by path\n */\n static getCachedLoggers() {\n return cachedLoggers;\n }\n\n /**\n * When the logger definition has changed, for example after the app-flow.json is loaded,\n * adjust all the exist cached loggers with the possible new definition.\n * @param {Object} config (optional) log config options for setting fancy mode and emoji\n */\n static rebuildLoggers(config) {\n consoleMapper = resolveConsoleMappings();\n Object.keys(cachedLoggers).forEach((path) => {\n const cached = cachedLoggers[path];\n const options = cached.options;\n if (config) {\n options.useEmoji = useEmoji(config);\n options.useFancyMode = useFancyMode(config);\n }\n const newLogger = new Logger(path, cached.customLoggers, options);\n Object.assign(cached, newLogger);\n });\n }\n\n /**\n * allow setting the minimum level of log message set to the console,\n * to quiet the logs, and (typically) improve performance\n * @param lvl\n * @returns {boolean}\n */\n static setMinimumLevel(lvl) {\n // backward compatibility\n const level = lvl === 'warning' ? 'warn' : lvl;\n\n const precedence = Constants.SeverityOrder.indexOf(level);\n if (precedence !== -1) {\n // disable all the lower ones\n const levelsToDisable = Constants.SeverityOrder.slice(precedence + 1);\n levelsToDisable.forEach((l) => {\n const style = LogConfig.Styles[l];\n if (style) {\n style.disabled = true;\n }\n });\n // @todo: revisit this; could we call this earlier?\n Log.rebuildLoggers();\n return true;\n }\n return false;\n }\n\n /**\n * A simple compare for log configuration objects. It does not consider default options, so:\n *
    \n     *   {\n     *   mode: 'simple',\n     *   emoji: 'on',\n     *   }\n     * 
    \n * and\n *
    \n     *   {\n     *   mode: 'simple',\n     *   }\n     * 
    \n * are considered different configurations. Nulls are not supported. Improvements can be made in the future.\n * @param c1 original log config\n * @param c2 new log config\n * @returns {boolean} true, if both objects are the same\n * @private\n */\n static compareConfigs(c1 = {}, c2 = {}) {\n return c1.mode === c2.mode && c1.emoji === c2.emoji;\n }\n\n /**\n * Sets the global log configuration and rebuilds all existing loggers, if configuration has changed.\n * @param {Object} config the log configuration options, for example:\n *
    \n     *   {\n     *   mode: 'simple',\n     *   emoji: 'off',\n     *   }\n     * 
    \n */\n static setConfig(config = {}) {\n if (config !== null && !Log.compareConfigs(logConfig, config)) {\n logConfig = config || {};\n Log.rebuildLoggers(logConfig);\n }\n }\n }\n\n Log.NOOP = noop; // expose for unit tests\n\n return Log;\n});\n\n","'use strict';\n\n/*\n * Created by cstraub on 10/31/14.\n */\ndefine('vb/private/log',['vb/private/constants', 'vb/private/utils', 'vbc/private/log'], (Constants, Utils, CommonLog) => {\n const vbConfig = window.vbInitConfig || {};\n CommonLog.setConfig(vbConfig.LOG || {});\n\n // global runtime environment to be shared by all logger instances\n let runtimeEnvironment;\n\n /**\n * Replace a logger error method with one that calls notifyError on the RuntimeEnvironment\n * @param {Logger} logger\n */\n const wrapError = (logger) => {\n const errorMethod = logger[Constants.Severity.ERROR];\n if (errorMethod) {\n // Wrap the existing logger in a function that logs and called notifyError\n logger[Constants.Severity.ERROR] = (...args) => { // eslint-disable-line no-param-reassign\n errorMethod(...args);\n // forwards the error to the runtime environment\n runtimeEnvironment.notifyError(...args);\n };\n }\n };\n\n /**\n * Return true if the RuntimeEnvironment implementation is ours, opposed to the DT version\n * @param {RuntimeEnvironment} rtEnvironment\n * @return {boolean}\n */\n // eslint-disable-next-line arrow-body-style\n const isRuntimeEnvironment = (rtEnvironment) => {\n // We can use constructor.name here because when live and preview use the debug version which is not mangled.\n return !!(rtEnvironment && Object.getPrototypeOf(rtEnvironment).constructor.name === 'RuntimeEnvironment');\n };\n\n // Note: There's a small window where the runtime environment will not be ready for notifying errors\n Utils.getRuntimeEnvironment().then((rtEnvironment) => {\n runtimeEnvironment = rtEnvironment;\n if (!isRuntimeEnvironment(runtimeEnvironment)) {\n // Fix the existing error loggers\n const cachedLoggers = CommonLog.getCachedLoggers();\n Object.keys(cachedLoggers).forEach((name) => {\n wrapError(cachedLoggers[name]);\n });\n }\n });\n\n const wrapErrorIfNeeded = (logger) => {\n if (!isRuntimeEnvironment(runtimeEnvironment)) {\n wrapError(logger);\n }\n };\n\n /**\n * Loggers are path based, to get a particular logger, use:\n *\n * Log.getLogger('/some/path')\n *\n * where the path is arbitrary but should reflect the organization of your resources.\n *\n * The second argument is used to define custom loggers. A custom logger has name, a severity\n * and a style. A new method with that name is created on the logger that will log a message\n * on the console using that severity and style.\n *\n * Logs can be configured by editing /loggers-config.js, please see the comments in there\n * for more details.\n */\n class Log extends CommonLog {\n /**\n * Returns a logger for the given path (see Log.Loggers). The path will determine the attributes\n * of the logger, including what levels are shown by default.\n *\n * @param {String} path The logger path (i.e. /vb)\n * @param {Object[]} customLoggers the definition of custom loggers\n * @param {String} customLoggers.name - the name of the function on the logger\n * @param {String} customLoggers.severity - the severity to use on the custom logger\n * @param {String} customLoggers.style - the style to use on the custom logger\n */\n static getLogger(path, customLoggers) {\n return CommonLog.getLogger(path, customLoggers, wrapErrorIfNeeded);\n }\n }\n return Log;\n});\n\n","'use strict';\n\ndefine('vb/binding/expression',[\n 'knockout',\n 'vb/private/log',\n 'vb/private/utils',\n], (ko, Log, Utils) => {\n const logger = Log.getLogger('/vb/binding/expression');\n\n // Check for {{..}} and [[..]] at the beginning of strings to avoid matching\n // any usages mid string\n const ATTR_EXP = /^(?:\\{\\{)([^]+)(?:\\}\\})$/;\n const ATTR_EXP_RO = /^(?:\\[\\[)([^]+)(?:\\]\\])$/;\n const WHITESPACE = /\\s/g; // matches whitespace\n const CONSTANTS_EXP = /(((\\$application|\\$page|\\$flow)\\.constants\\.)|(\\$constants\\.))[\\\\$A-Z_a-z]/g; // eslint-disable-line max-len\n const VARIABLES_EXP = /(((\\$application|\\$page|\\$flow)\\.variables\\.)|(\\$variables\\.))[\\\\$A-Z_a-z]/g; // eslint-disable-line max-len\n // allows [] following variable names.\n const VARIABLES_EXP2 = /((((\\$application|\\$page|\\$flow)\\.variables)|(\\$variables))\\[(.*?)\\])/g;\n\n /**\n * A reusable evaluated value that can be used to capture complex expressions.\n */\n class Expression {\n /**\n * public lookup\n * @return {RegExp}\n * @constructor\n */\n static get WHITESPACE_REGEX() {\n return WHITESPACE;\n }\n\n /**\n * Creates a new expression that will evaluate the passed in function whenever it\n * itself is evaluated.\n *\n * An expression can be directly assigned to a variable. When a variable assigned to an\n * expression is read, the evaluated result is read.\n *\n * An expression can also be assigned to a component property and will automatically\n * updated when the expression value has changed.\n *\n * An expression is called with some context as follows:\n *\n * variables: The innermost scope's set of variables\n * application: The application object\n * container: The container object, i.e. the page object or a flow object (may be undefined)\n * action: The action object (may be undefined).\n *\n * @param expressionFunc A function to evaluate when the expression is evaluated\n * @returns {*} an expression (do not treat this as an observable!)\n */\n static create(expressionFunction) {\n return new ko.pureComputed(expressionFunction.bind(null));\n }\n\n /**\n * Creates an expression from a string. This string is expected to be just the expression, i.e.\n * $variables.foo + $variables.bar\n * and not more complicated code, although we could support this in the future.\n *\n * Since the function generally runs in some context, this can be passed via the\n * injectedContextMap, which each key/value pair being injected into the function before\n * evaluation.\n *\n * @param expression\n * @param injectedContextMap A map of context objects that should be put in scope\n * @param prohibitWrites If true, will throw an exception if a variable in context is written to\n * @returns {f}\n */\n static createFromString(expression, injectedContextMap, prohibitWrites = true) {\n let funcStr = '';\n const injectedContext = [];\n if (injectedContextMap) {\n let i = 0;\n Object.keys(injectedContextMap).forEach((key) => {\n const val = injectedContextMap[key];\n funcStr += `const ${key} = injectedContext[${i}]; `;\n const injectedObj = prohibitWrites ? this.preventWritesToStructure(val, expression) : val;\n injectedContext.push(injectedObj);\n i += 1;\n });\n }\n funcStr += `return ${expression};`;\n\n try {\n const f = new Function('injectedContext', funcStr);\n return Expression.create(f.bind(null, injectedContext));\n } catch (e) {\n logger.error('Could not evaluate expression', expression, e);\n\n // The return value is expected to be a function. This makes it so that the code doesn't throw again\n return () => undefined;\n }\n }\n\n /**\n * Wraps the structure and throws exceptions if any of the objects are mutated. Note that we do not\n * use Object.freeze since we do not want to alter the original structures or prevent writes to them\n * outside of our usage.\n *\n * We also do not want to proactively clone the structures since (a) this is expensive and (b) does not\n * help the user fix their code.\n *\n * The motivation for doing this is to prevent random errors. If a mutation occurs within an expression\n * than that mutation will occur whenever something in the expression changes (causing that expression\n * to reevaulate). That reevaulation can occur seemingly randomly, causing the mutation to also occur\n * randomly - which is very bad!\n *\n * Dev note: this will only protect on modern browsers. That should be good enough for things to fail, and\n * we can hope that not all testing occurs on older browsers!\n *\n * @private\n * @param obj The object to write protect\n * @param expression The expression that was used\n * @returns {*}\n */\n static preventWritesToStructure(obj, expression) {\n const listener = {\n get(target, property) {\n const realValue = target[property];\n\n const config = Object.getOwnPropertyDescriptor(target, property);\n if (config && config.configurable === false && config.writable === false) {\n return realValue;\n }\n\n if (Utils.isObjectOrArray(realValue) && Utils.isPrototypeOfObject(realValue)) {\n // eslint-disable-next-line no-use-before-define\n return createProxy(realValue);\n }\n return realValue;\n },\n set() {\n throw new Error(`The expression '${expression}' has a method that has mutated a variable. This can `\n + 'lead to unexpected behavior when this expression is evaluated. Consider using '\n + 'the \\'callModuleFunctionAction\\' instead for a safe way of mutating variables.');\n },\n };\n\n const createProxy = (toProxyObj) => new Proxy(toProxyObj, listener);\n\n try {\n return createProxy(obj);\n } catch (e) {\n return obj; // for IE11\n }\n }\n\n /**\n * Return true is v starts with '{{' (or '[[') and ends with '}}' (or ']]').\n * @param v\n * @returns {boolean}\n */\n static isExpression(v) {\n return !!(typeof v === 'string' && Expression.getExpression(v));\n }\n\n /**\n * Return the expression string without {{ }} or [[ ]] or null if the string doesn't have {{ }} or [[ ]].\n * @param {String} v an expression with {{ }} or [[]]\n * @return {String} the expression without the bracket\n */\n static getExpression(v) {\n let exp;\n if (v) {\n const trimmedVal = v.trim();\n exp = ATTR_EXP.exec(trimmedVal);\n exp = exp ? exp[1] : null;\n if (!exp) {\n exp = ATTR_EXP_RO.exec(trimmedVal);\n exp = exp ? exp[1] : null;\n }\n }\n\n return exp;\n }\n\n /**\n * looks for expressions in the object/scalar, and evaluates them (invokes the function immediately).\n * This is in contrast to StateUtils.getValueOrExpression, that leaves them as variables.\n *\n * @param value the possible expression. if its a string, and does not have the expression syntax, return as-is.\n * @param scopes map of dollar-variables available to the expressions.\n *\n * @todo: the name 'scopes' is used elsewhere, but we should come up with a better name.\n * @returns {*}\n */\n static getEvaluated(value, scopes) {\n if (!value) {\n return value;\n }\n\n if (typeof value === 'string') {\n const expression = Expression.getExpression(value);\n if (expression) {\n const fnc = Expression.createFromString(expression, scopes);\n return fnc();\n }\n } else if (Array.isArray(value)) {\n return value.map((item) => Expression.getEvaluated(item, scopes));\n } else if (!Utils.isPrototypeOfObject(value)) {\n return value;\n } else if (Utils.isObject(value)) {\n const obj = {};\n Object.keys(value).forEach((key) => {\n obj[key] = Expression.getEvaluated(value[key], scopes);\n });\n return obj;\n }\n\n // if it's not an expression, just return the value as is\n return value;\n }\n\n\n /**\n * wraps in a try/catch, just in case.\n * returns the original expression if the expression definition is falsey,\n * or null if there is an exception.\n\n * @param expression\n * @param context optional properties that can be referenced in the expression\n * @returns {*}\n */\n static getEvaluatedSafe(expression, context = {}) {\n try {\n return expression ? Expression.getEvaluated(expression, context) : expression;\n } catch (e) {\n logger.error('unable to create expression', expression, e);\n }\n return null;\n }\n\n /**\n * Returns true if we have an expression and it has a 'constants' in it. See the regex above\n * for this.\n * This does not check if the expression is a pure constants expression, iow that it only\n * contains 'constants' and no other - like variables, builtins etc.\n * @param expr\n * @returns {*|boolean|String|Array|{index: number, input: string}}\n */\n static hasConstantsInExpr(expr) {\n return Expression.hasTokenInExpr(expr, CONSTANTS_EXP);\n }\n\n /**\n * Returns true if we have an expression and it has a 'variables' in it. See the regex above\n * for this.\n * This does not check if the expression is a pure variables expression, iow that it only\n * contains 'variables' and no other - like constants, builtins etc.\n * @param expr\n * @returns {*|boolean|String|Array|{index: number, input: string}}\n */\n static hasVariablesInExpr(expr) {\n return Expression.hasTokenInExpr(expr, VARIABLES_EXP) || Expression.hasTokenInExpr(expr, VARIABLES_EXP2);\n }\n\n /**\n * Returns true if regex token appears in expression\n * @param expr expression\n * @param token token to look for in expression\n * @return {*|boolean|String|RegExpMatchArray}\n * @private\n */\n static hasTokenInExpr(expr, token) {\n const strippedExpr = expr && typeof expr === 'string' && Expression.getExpression(expr);\n // strips white spaces before checking expression\n return strippedExpr && strippedExpr.replace(WHITESPACE, '').match(token);\n }\n }\n\n return Expression;\n});\n\n","'use strict';\n\ndefine('vb/private/pathHandler',['urijs/URI', 'vb/private/constants'], (URI, Constants) => {\n // const logger = Log.getLogger('/vb/private/pathHandler');\n\n function startsWithDot(path) {\n return path && path.startsWith(Constants.RELATIVE_FOLDER_PREFIX);\n }\n\n function isAbsolute(path = '') {\n return path.startsWith('/') || new URI(path).is('absolute');\n }\n\n /**\n * utility class to handle our import path scheme.\n * We hve defined some conventions for Service Def, Transform, and Bundle paths\n *\n * - Paths that start with a dot (.) are 'container-relative'.\n * - Paths that include a host name are 'absolute'\n * - Paths that do not start with a dot, but are not absolute, are 'application-relative'.\n * application-relative paths are (the only paths that are) subject to requireJS mapping.\n *\n * Additionally, there are restrictions:\n * - in some cases, typically when a Flow or Page is doing the importing, we do not allow parent folder paths\n * in the path; that means, we do not allow double-dot (../) anywhere in the path. This is to limit the\n * reach of a Flo of Page into other Flows or Pages.\n *\n * TODO: We will allow Paths to reach into flows for translations bundles.\n *\n * TODO: this utility is initially used only by Bundles, but should be shared.\n */\n class PathHandler {\n /**\n *\n * @param filePath\n * @param containerPath\n * @param options\n * @param options.allowParent {boolean} default is false;\n * @param options.allowSelfRelative {boolean} default is true\n */\n constructor(filePath, containerPath = '', options) {\n const { allowParent, allowSelfRelative } = options;\n\n this.filePath = filePath;\n this.resolvedFilePath = null;\n\n this.allowParent = allowParent || false;\n\n this.allowSelfRelative = (allowSelfRelative !== false); // null/undefined means true\n this.containerPath = containerPath + (containerPath.endsWith('/') ? '' : '/');\n }\n\n /**\n *\n * @returns {boolean}\n */\n isAllowed() {\n if (this.filePath) {\n if (this.isContainerRelative() && !this.allowSelfRelative) {\n return false;\n }\n return (this.allowParent || this.filePath.indexOf(Constants.PARENT_FOLDER) === -1);\n }\n return false;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isAbsolute() {\n return isAbsolute(this.filePath);\n }\n\n /**\n *\n * @returns {boolean}\n */\n isContainerRelative() {\n return this.filePath && startsWithDot(this.filePath);\n }\n\n /**\n * if the \"path\" begins with \".\", do not prepend the current container requireJS path.\n * this allows containers to leverage requireJS mappings.\n *\n * this will prepend the container path if there is one, and the path isn't absolute;\n * otherwise, the paths are left as-is.\n *\n * @returns {string}\n */\n getResolvedPath() {\n if (!this.resolvedFilePath) {\n let filePath = this.filePath;\n let path;\n\n // check if its mapped, by seeing if requireJS gives us some new url, or just puts the base on it\n let isAbs = isAbsolute(filePath);\n\n // this function used to use requirejs.toUrl() to translate paths, but:\n // 1. there is no (good) reason that should have been necessary (event though I'm sure there was some issue...)\n // 2. that _may_ have been necessary to support path mappings that include the 'nls' path, but we can\n // state that that isn't supported (since it wouldn't be supported in JET);\n // ex: \"paths\": { \"foo\": \"somewhere/resource/nls\" }\n // 3. the application bundling uses \"bundles\", and that causes toUrl() to return the bundle path, not the\n // translation (js) path.\n // there may be an issue with loading the same bundle through different mappings (ojL10n gets stuck),\n // but i've only seen that during unit tests, and it would not make sense for that to happen in a real app.\n\n // only add the container path as a prefix if\n // a) the path is not already absolute\n // b) we allow all paths, OR the path currently starts with a 'dot', and\n // c) the container prefix isn't \"/\"\n if (!isAbs &&\n (this.allowParent || startsWithDot(filePath)) && this.containerPath !== Constants.PATH_SEPARATOR) {\n path = this.containerPath + filePath;\n isAbs = isAbsolute(path); // changed, update 'isAbs'\n } else {\n path = filePath;\n }\n\n // normalize now\n path = new URI(path).normalizePath().toString();\n\n // some final processing for non-absolute paths\n if (!isAbs) {\n // special case, there are double-dots; get the path as a requirejs path that starts with slash,\n // which requires the file extension\n if (path.indexOf(Constants.PARENT_FOLDER) !== -1) {\n const uri = new URI(path);\n // normalize here, requirejs does not handle './foo/../bar' properly, so try to simplify\n path = uri.normalizePath().toString();\n }\n // .. and if we still start with './', (try to) get rid of the './'\n if (path.startsWith(Constants.CURRENT_FOLDER)) {\n path = URI(path).normalizePath().toString();\n }\n }\n\n this.resolvedFilePath = path;\n }\n\n return this.resolvedFilePath;\n }\n }\n\n return PathHandler;\n});\n\n","'use strict';\n\ndefine('vb/private/services/serviceConstants',[],() => {\n const ServiceConstants = {};\n\n /**\n * when using the ProtocolRegistry, these represent the property names for the two types of merged/resolved\n * information. This is meant as an outward-facing type, for ProtocolHandlers to understand, and use appropriately.\n *\n * The ProtocolHandler can resolve different protocols, via different declarations, but shared the concept of\n * \"services\", \"backends\", and \"metadata\" with the handlers.\n *\n * @type {{SERVICES: string, BACKENDS: string, METADATA: string}}\n */\n ServiceConstants.ExtensionTypes = {\n // definitions applicable at the service level; unique to each service.\n // including things like authentication, proxyUrls, etc.\n // the \"headers\" in this section are not merged with the backends', currently (bt may be in the future).\n SERVICES: 'services',\n\n // data-endpoint specific info; these are intended to be reusable between services, and thus,\n // should not contain things like proxyUrls (which contain service IDs), for example.\n // Typically, a catalog \"service\" would point to a catalog \"backend\", though a service metadata (swagger) might\n // point to a backend directly.\n BACKENDS: 'backends',\n\n // // this is specific to the fetch of the service metadata (openapi3).\n // METADATA: 'metadata',\n };\n\n\n ServiceConstants.VB_EXTENSIONS = 'x-vb';\n\n // name of the catalog.json property in the 'x-vb' extensions for defining authorization configuration\n ServiceConstants.AUTH_DECL_NAME = 'authentication';\n\n return ServiceConstants;\n});\n\n","'use strict';\n\ndefine('vb/private/services/catalogRegistry',[\n 'vb/private/log',\n 'vb/private/utils',\n 'vb/private/constants',\n 'urijs/URI',\n], (Log, Utils, Constants, URI) => {\n const logger = Log.getLogger('/vb/private/services/catalogRegistry');\n\n // if the transforms is defined on the catalog, it's better to resolve it's path now to avoid errors later.\n // What is happening here:\n // - the catalog path is typically something like 'services/catalog.json' and the transforms path something like\n // './serviceName/transforms.js'\n // - The code is meant to resolve the relative transforms path against the catalog path, normalizing it.\n const adjustTransforms = (catalogPath, transformsObject) => {\n if (transformsObject) {\n if (transformsObject.path && transformsObject.path[0] === '.') {\n // eslint-disable-next-line no-param-reassign\n transformsObject.path = new URI(transformsObject.path, catalogPath).path();\n }\n\n if (transformsObject.originalPath && transformsObject.originalPath[0] === '.') {\n // eslint-disable-next-line no-param-reassign\n transformsObject.originalPath = new URI(transformsObject.originalPath, catalogPath).path();\n }\n }\n };\n\n /**\n * A class to support multiple catalog.json (and potentially catalog-x.jsons in the future).\n *\n * All Catalogs will be registered with this class, and loaded by this class.\n * Catalog's are associated with their 'namespace', which is either 'base', or the extension ID.\n * There is always a 'base' catalog.json.\n *\n * Clients (CatalogHandler) will ask this for names of the services and backends for a given catalog,\n * or for all catalogs, in priority order.\n */\n class CatalogRegistry {\n constructor() {\n this.loadPromise = Promise.resolve();\n this.pending = [];\n this.catalogs = {};\n }\n\n /**\n * Add a catalog.json path to the list of catalogs to be loaded, associated by namespace.\n *\n * At the next access to any of the public APIs below, any newly registered catalogs will be loaded.\n * @param path\n * @param name\n */\n register(name, path) {\n this.pending.push({ path, name });\n }\n\n /**\n * @todo: not initially implemented; we do not currently have a concept of a catalog 'extension'.\n */\n // registerExtension(path, name) {\n // this.pending.push({ path, name });\n // }\n\n\n /**\n * Get a list of names, so we can programmatically iterate resolutions.\n * This is used by ExtensionServices to get names specific to its namespace (extension ID)\n *\n * @returns {Promise<{services: *, backends: *}>}\n *\n * @see ExtensionServices\n */\n getNames(namespace = CatalogRegistry.ROOT_CATALOG) {\n return this.get(namespace)\n .then((catalog) => ({\n backends: Object.keys(catalog.backends || {}),\n services: Object.keys(catalog.services || {}),\n }));\n }\n\n\n /**\n * Returns an array of objects describing the backend and service names for each catalog.\n *\n * @see getNames\n * example:\n * [{\n * \"namespace\": \"base\",\n * \"backends\": [\"fa\"],\n * \"services\": [\"crmRestApi\"]\n * },\n * {\n * \"namespace\": \"extB\",\n * \"backends\": [\"simplecatalog\"],\n * \"services\": [\"simplecatalog\"]\n * }]\n\n * @returns {Promise<{ namespace: {string}, backends: {Object[]}, services: {Object[]} }[] >}\n */\n getAllNames() {\n return this.getNamespaces()\n .then((names) => names.map((namespace) => ({\n namespace,\n backends: Object.keys(this.catalogs[namespace].backends || {}),\n services: Object.keys(this.catalogs[namespace].services || {}),\n })));\n }\n\n\n /**\n * used by getAllNames, returns all keys for the base, and any extension, catalogs.\n * Always includes 'base', may contain keys.\n *\n * @returns {Promise}\n * @private\n */\n getNamespaces() {\n return this.loadPending()\n .then(() => Object.keys(this.catalogs));\n }\n\n\n /**\n * Used internally by getNames()\n * @param name\n * @returns {Promise}\n * @private\n */\n get(name = CatalogRegistry.ROOT_CATALOG) {\n return this.loadPending()\n .then(() => this.catalogs[name]);\n }\n\n\n /**\n * Loads the registered catalogs, that have not been loaded since thelast time this was called.\n * Allows catalogs to be added after the vb-protocol has been initialized / used.\n *\n * @returns {Promise}\n */\n loadPending() {\n if (this.pending.length === 0) {\n return this.loadPromise;\n }\n // clear the pending list\n const pending = this.pending;\n this.pending = [];\n // ... and load\n this.loadPromise = Promise.resolve()\n .then(() => {\n const promises = pending.map(({ path, name }) => {\n if (this.catalogs[name]) {\n logger.warn('catalog already loaded, skipping', name, path);\n return null;\n }\n\n return this.load(path)\n .then((catText) => {\n try {\n const catalog = JSON.parse(catText);\n\n if (catalog.backends) {\n // we ignore the backends on catalog from extensions\n if (name !== CatalogRegistry.ROOT_CATALOG) {\n logger.warn('Backends provided by extensions are ignored', name, path);\n delete catalog.backends;\n } else {\n Object.keys(catalog.backends).forEach((backendId) => {\n const backend = catalog.backends[backendId];\n adjustTransforms(path, backend.transforms);\n });\n }\n }\n\n if (catalog.services) {\n Object.keys(catalog.services).forEach((serviceId) => {\n const service = catalog.services[serviceId];\n const transforms = service.info && service.info['x-vb'] && service.info['x-vb'].transforms;\n adjustTransforms(path, transforms);\n });\n }\n\n this.catalogs[name] = catalog;\n } catch (e) {\n // log it, but continue loading other catalogs\n logger.error('Invalid JSON for catalog', name, path, e);\n }\n });\n });\n return Promise.all(promises);\n })\n .then(() => this.catalogs);\n\n return this.loadPromise;\n }\n\n /**\n *\n * @param path\n * @returns {Promise}\n */\n // eslint-disable-next-line class-methods-use-this\n load(path) {\n return Utils.getRuntimeEnvironment()\n .then((rtEnv) => rtEnv.getServiceExtensionCatalog(path));\n }\n\n /**\n *\n */\n // eslint-disable-next-line class-methods-use-this\n dispose() {\n this.loadPromise = null;\n this.catalogs = {};\n }\n }\n\n // an internal name for the base/root catalog\n CatalogRegistry.ROOT_CATALOG = Constants.CatalogNamespaces.BASE;\n\n\n return CatalogRegistry;\n});\n\n","/* eslint-disable no-underscore-dangle */\n\n'use strict';\n\ndefine('vb/private/services/protocolRegistry',['vb/private/constants',\n 'vb/private/utils',\n 'vb/private/log',\n 'vb/private/services/serviceConstants',\n 'vb/private/services/catalogRegistry',\n 'urijs/URI',\n 'signals',\n],\n(Constants, Utils, Log, ServiceConstants, CatalogRegistry, URI, signals) => {\n //\n const logger = Log.getLogger('/vb/private/services/protocolRegistry');\n\n const HANDLERS = [\n 'vb/private/services/catalogHandler',\n 'vb/extensions/protocol/vbExtensionHandler',\n ];\n\n class ProtocolRegistry {\n /**\n *\n * @param config\n * @param activeProfile - derived from the config, but broken out for re-use elsewhere\n * @param tenantConfig {object}\n * @param catalogRegistry {CatalogRegistry}\n */\n constructor(config, activeProfile, tenantConfig, catalogRegistry) {\n this._registry = {};\n this._config = config;\n this._activeProfile = activeProfile;\n this._tenantConfig = tenantConfig;\n this._initPromise = null;\n\n // allow listeners to see what gets referenced\n this._listeners = [];\n\n this.opened = new signals.Signal();\n\n this.catalogRegistry = catalogRegistry || new CatalogRegistry();\n }\n\n\n /**\n * creates and initializes all handlers; successful ones are put into the protocol map\n * @returns {Promise}\n */\n init() {\n if (!this._initPromise) {\n this._initPromise = Promise.resolve()\n .then(() => Utils.getResources(HANDLERS))\n .then((handlers) => {\n handlers.forEach((HandlerClass) => {\n if (HandlerClass.shouldInstall(this._config)) {\n // each handler has the option to interpret multiple protocols\n HandlerClass.PROTOCOLS.forEach((protocol) => {\n this._registry[protocol] = new HandlerClass(this._config,\n this._activeProfile, this._tenantConfig, this.catalogRegistry);\n });\n }\n });\n return this;\n });\n }\n return this._initPromise;\n }\n\n /**\n *\n * @returns {*}\n */\n get activeProfile() {\n return this._activeProfile;\n }\n\n\n /**\n * returns all possible paths through the catalog,\n * by starting with every object (both 'services' and 'backends'),\n * and resolving the URLs.\n *\n * @returns {Promise<{ services: [], backends: [] }>}\n *\n * Example:\n * If ONLY \"extB\" defines a catalog, and has one \"services\" object named \"simplecatalog\",\n * which references a backend also named \"simplecatalog\":\n *\n * [{\n * \"name\": \"simplecatalog\",\n * \"namespace\": \"extB\"\n * \"url\": \"http://localhost:9002/simple-files/services\", <- resolved URL\n * \"extensions\": {\n * \"services\": { (x-vb's merged - headers, etc) },\n * \"backends\": { (x-vb's merged - headers, etc) },\n * },\n * \"metadata\": { <- this is only used when fetching metadata (/describe)\n * \"services\": {\n * \"openapi\": \"3.0\",\n * \"path\": \"/sample-data-service.json\",\n * \"query\": \"\",\n * \"extensions\": { (additional x-vb, used for fetching the /describe ; headers, etc),}\n * },\n * \"chain\": [\n * { \"type\": \"services\", \"name\": \"simplecatalog\" },\n * { \"type\": \"backends\", \"name\": \"simplecatalog\" }\n * ],\n * }\n ]\n *\n * @see UrlMapper.getUrlMapping\n */\n getTree() {\n if (!this.treePromise) {\n this.treePromise = this.init()\n .then(() => {\n const promises = [];\n Object.keys(this._registry).forEach((protocol) => {\n if (this._registry[protocol].getNames) {\n const p = this._registry[protocol].getNames()\n .then((catalogs) => Object.assign({ protocol }, { catalogs }));\n promises.push(p);\n }\n });\n return Promise.all(promises);\n })\n .then((protocolInfos) => {\n /**\n * at this point, we have an array of protocol-specific objects whose handler supports getNames().\n * Today, that is only \"vb-catalog\", so this array has one object.\n * Within that object, there is an array of namespaces objects; one for 'base' and optionally one for\n * each extension. These contain the backends and services for each.\n *\n * [{\n * \"protocol\": \"vb-catalog\",\n * \"catalogs\": [\n * {\n * \"namespace\": \"base\",\n * \"backends\": [ \"crm\", \"demo\" ],\n * \"services\": [ \"crmBusinessObjects\", \"demo-service-two\" ]\n * },\n * {\n * \"namespace\": \"extB\",\n * \"backends\": [ \"simplecatalog\" ],\n * \"services\": [ \"simplecatalog\" ]\n * }\n * ]\n * }]\n */\n const promises = [];\n\n protocolInfos.forEach((protocolInfo) => {\n /**\n * we only need the \"services\" for URL-mapping (we don't map directly to backend URLs).\n */\n protocolInfo.catalogs.forEach((catalog) => {\n // this used to process both BACKENDS and SERVICES, but we only need to resolve SERVICES,\n // because we now only look at \"services\" for mappings.\n // see UrlMapping.getUrlMapping\n const objType = ServiceConstants.ExtensionTypes.SERVICES;\n const names = catalog[objType] || [];\n names.forEach((name) => {\n // construct an (artificial) reference to each named service, and have the handler resolve the URL.\n // This passes the namespace ('base' or ext id) to make sure the correct registered catalog is used.\n // ex: this.getResolvedInfo('vb-protocol://services/someService', 'extA')\n\n const ref = `${protocolInfo.protocol}://${objType}/${name}`;\n const p = this.getResolvedInfo(ref, catalog.namespace)\n .catch((e) => {\n // just log errors when building the mapping tree, since it may contain\n // unused, broken references. see https://jira.oraclecorp.com/jira/browse/BUFP-41687\n logger.warn(`Ignoring missing catalog reference for mapping: ${ref}`, e);\n });\n promises.push(p);\n });\n });\n });\n return Promise.all(promises)\n .then((catalogObjects) => catalogObjects.filter((o) => !!o)); // remove undefines\n });\n }\n return this.treePromise;\n }\n\n\n /**\n * calls getResolvedObject, and returns a default object, if null\n * @param url\n * @param namespace {string}\n * @returns {Object} object containing the resolved url, and combined service and backend extension info,\n * or a 'default' object with the original url and empty extension information\n * {\n * url: {string}\n * extensions: {\n * services: {}, // headers, etc.\n * backends: {}, // headers, transforms, etc.\n * }\n */\n getResolvedInfoOrDefault(url, namespace) {\n return this.getResolvedInfo(url, namespace)\n .then((resolved) => resolved || ProtocolRegistry.createDefault(url))\n .then((resolved) => {\n this.opened.dispatch(url, resolved, namespace);\n\n return resolved;\n });\n }\n\n /**\n * for internal use only (for now).\n *\n * Init the registry on-demand, and then find the correct handlers, and delegate\n *\n * Also merges the backends and services extensions, EXCEPT for the services headers.\n * (The CatalogHandler keeps the backends and services extension separate)\n *\n * @param url\n * @param namespace {string}\n *\n * @returns {Object} object containing the resolved url, and combined service and backend extension info, or null\n * {\n * url: {string}\n * extensions: {\n * services: {}, // headers, etc.\n * backends: {}, // headers, transforms, etc.\n * },\n * metadata: {\n * services: {}, // optional openapi3 Operation Object\" stub for fetching the openapi3.\n * // not currently legal or meaningful for backends to have a 'metadata' object\n * }\n * }\n */\n getResolvedInfo(url, namespace) {\n // let resolvedInfo;\n let found;\n let protocolHandler;\n\n return Promise.resolve()\n .then(() => this.init())\n .then(() => {\n const urlInfo = URI.parse(url);\n if (urlInfo.protocol && this._registry[urlInfo.protocol]) {\n protocolHandler = this._registry[urlInfo.protocol];\n return protocolHandler.getResolvedObject(url, namespace, urlInfo)\n .then((resolved) => {\n if (resolved) {\n // keep a list of visited objects, since we may need the names for the proxy/token relay urls\n const chain = [];\n chain.push({\n type: resolved.type,\n name: resolved.name,\n namespace: resolved.namespace,\n });\n return Object.assign(resolved, { chain });\n }\n return null;\n });\n }\n return null;\n })\n .then((f) => {\n found = f;\n // check if we still need to resolve the URL (recursively), using the found object's namespace\n return found ? this.getResolvedInfo(found.url, f.namespace) : null;\n })\n .then((next) => {\n if (next) {\n // use the next level's url instead of ours, and merge its extensions into ours\n const extensions = {};\n\n // merge the 'services' extensions\n extensions[ServiceConstants.ExtensionTypes.SERVICES] =\n protocolHandler.mergeExtensions(next.extensions[ServiceConstants.ExtensionTypes.SERVICES] || {},\n found.extensions[ServiceConstants.ExtensionTypes.SERVICES] || {});\n\n // merge the backend extension, which should also include all the service extensions.\n //\n // EXCEPT, when using the deprecated \"services\" syntax, EXCLUDE the following from the \"services\" object:\n // - headers, proxyUrls, tokenRelayUrls.\n // (we leave it to the catalogHandler to filter the proxyUrls/tokenRelayUrls).\n // We used to use the \"services\" headers for the metadata, and not mix them with the \"backend\" data headers.\n // With the new syntax, we have a separate section for metadata headers,\n // so we merge services and backend headers.\n //\n // note: 'closest' is most-precedent for conflicting extensions.\n // for example, service1 -> backend1 -> backend2, the transforms in service1 win.\n\n const servicesExtWithoutHeaders =\n protocolHandler.getPropertiesForCrossObjectMerge(\n found,\n extensions[ServiceConstants.ExtensionTypes.SERVICES],\n ServiceConstants.ExtensionTypes.SERVICES,\n ServiceConstants.ExtensionTypes.BACKENDS);\n\n extensions[ServiceConstants.ExtensionTypes.BACKENDS] =\n protocolHandler.mergeExtensions(next.extensions[ServiceConstants.ExtensionTypes.BACKENDS] || {},\n found.extensions[ServiceConstants.ExtensionTypes.BACKENDS] || {},\n servicesExtWithoutHeaders);\n\n // 'metadata' is used in the new syntax for specifying how to get the service def.\n // currently, metadata is services-only, but we don't need to distinguish here.\n const chain = found.chain.slice().concat(next.chain); // add the next chain to ours.\n\n found = {\n url: next.url,\n extensions,\n metadata: found.metadata,\n chain,\n name: found.name,\n namespace: found.namespace,\n };\n } else if (found && found.extensions) {\n // bufp-31105; if the \"services\" never referenced a \"backends\", just use \"services\" for both\n if (found.extensions.services && !found.extensions.backends) {\n found.extensions.backends = Object.assign({}, found.extensions.services); // shallow copy, just in case\n }\n }\n\n return found;\n });\n }\n\n /**\n * for each registered protocol handler, get list of the names of the 'services' and 'backends'\n * Really, only the 'catalog' supports this, so the top-level array always has one item.\n *\n * resolves with an array: [{ protocol: string, namespaces: { backends: Array, services: } }]\n * [{\n * \"protocol\": \"vb-catalog\",\n * \"namespaces\": [{\n * \"namespace\": \"base\",\n * \"backends\": ['foo', 'fa' ],\n * \"services\": ['puppyservice']\n * },\n * ... \n * ]\n * }]\n }\n ]\"\n *\n * @returns {Promise}\n */\n getNames() {\n if (!this.namesPromise) {\n this.namesPromise = this.init()\n .then(() => {\n const promises = [];\n Object.keys(this._registry).forEach((protocol) => {\n if (this._registry[protocol].getNames) {\n const p = this._registry[protocol].getNames()\n .then((namespaces) => Object.assign({ protocol }, { namespaces }));\n promises.push(p);\n }\n });\n\n return Promise.all(promises);\n })\n .catch((e) => {\n logger.info('no catalog.json, continuing', e.toString());\n return [];\n });\n }\n return this.namesPromise;\n }\n\n\n /**\n * disposes the catalog, so it can be refreshed\n * @param protocol\n */\n disposeHandler(protocol) {\n // allow handlers to optionally define the 'dispose' function\n if (this._registry[protocol].dispose) {\n this._registry[protocol].dispose();\n }\n }\n\n /**\n * convenience method\n *\n * The catalog.json will be re-read on-demand, as well as any other protocol-specific resources.\n */\n disposeCatalog() {\n Object.keys(this._registry).forEach((protocol) => {\n this.disposeHandler(protocol);\n });\n\n if (this.catalogRegistry) {\n this.catalogRegistry.dispose();\n this.catalogRegistry = null;\n }\n }\n\n\n /**\n * create a minimal, usable, default\n * @param url\n * @returns {Promise<{url: *, extensions: {services:{}, backends: {}}}>}\n */\n static createDefault(url) {\n return Promise.resolve({\n url,\n extensions: {\n [ServiceConstants.ExtensionTypes.SERVICES]: {},\n [ServiceConstants.ExtensionTypes.BACKENDS]: {},\n },\n chain: [], // nothing visited\n });\n }\n }\n\n return ProtocolRegistry;\n});\n\n","'use strict';\n\n/**\n * Loads the app-flow.json early, so it can configure requireJS before other things, like JET, is loaded.\n * Specifically, translations bundle overrides need to be configured before ojcore is loaded.\n *\n * This uses the runtime environment to get the resource.\n *\n * clients should just call init() on the singleton.\n */\ndefine('vb/private/configLoader',['vb/private/utils',\n 'vb/binding/expression',\n 'vb/private/log',\n 'vb/private/constants',\n 'vb/private/pathHandler',\n 'vb/private/services/protocolRegistry',\n 'vb/private/services/catalogRegistry',\n 'vbc/private/trace/tracer',\n],\n(Utils, Expression, Log, Constants, PathHandler, ProtocolRegistry, CatalogRegistry, Tracer) => {\n const logger = Log.getLogger('/vb/private/configLoader');\n\n let protocolRegistry; // private, accessed via getter in singleton\n let urlMapper; // private, accessed via getter in singleton\n let vbInitConfigClone;\n let serviceWorkerConfigClone;\n let catRegistry;\n\n // if requireJS ever changes their internal implementation, this is a guard.\n // almost certainly won't happen; its easy to find many references to this in other libraries.\n let usePrivateRequirejsApi = true;\n\n\n class ConfigLoader {\n constructor() {\n this.requirePath = ''; // shared with the application\n\n // used to attempt to keep track of the requirejs.config calls we know about.\n // assumes successive calls override previous ones.\n this.currentRequireConfig = {};\n }\n\n /**\n * loads the app-flow.json and reads configuration-specific declaration.\n * Evaluates any expressions,\n * though the only dollar-variable available are the ones exposed by createInitParams (currently none).\n * Currently, the declarations it looks for are:\n *\n * \"localization\": { // new!!\n * \"locale\" - a string\n * \"merge\" - a map, matches the ojL10n \"merge\" config syntax\n * }\n *\n * In translation bundle definitions, we look for one new property:\n * \"translations\": { // exists, not used here\n * \"myBundle\": { // exists, not used here\n * \"path: ... // exists, not used here\n * \"merge\" - a new property used to also construct an entry for the merge map.\n * }\n * }\n *\n * \"requirejs\": a new object, that is passed to requirejs.config, except where values from the\n * previous two declarations conflict:\n * - \"locale\" above will override config.ojL10N.locale\n * - \"merge\" will be a merge of the localization.merge, the \"merge\" bundle properties, and config.ojL10N.merge\n *\n * @return {Promise}\n */\n init() {\n let evaluatedConfig = {};\n let config;\n\n return ConfigLoader.initTracer(window.vbInitConfig)\n .then(() => this.loadConfiguration())\n .then((cfg) => {\n config = cfg;\n\n // get the application ID\n this.appId = config.id || 'app';\n\n let locale;\n\n this.initParams = ConfigLoader.createInitParams(config);\n this.configurationDeclaration = ConfigLoader.createConfigurationDeclaration(config);\n this.servicesMap = (config && config.services) || {};\n\n // configuration for the ProtocolRegistry and CatalogHandler\n // combine the declared \"configuration\" and window.vbInitConfig, and add the relativePath\n this.catalogConfiguration = Object.assign({\n relativePath: this.requirePath,\n initConfig: window.vbInitConfig || {},\n }, this.configurationDeclaration);\n\n // Application Profile\n this.activeProfile = (this.catalogConfiguration.profile) || '';\n\n // configure logging here, instead of application.js, so it is as early as possible\n ConfigLoader.configureLogging(config);\n\n // look for the \"localization\" section\n if (config.localization) {\n // first, check for the top-level \"locale\"\n locale = this.getEvaluatedSafe(config.localization.locale);\n }\n\n // now look for \"merge\" properties in the translation bundle declarations\n const bundleMergePropMap = {};\n if (config.translations) {\n Object.keys(config.translations)\n .forEach((bundleName) => {\n const bundleDecl = config.translations[bundleName];\n const bundleMerge = this.getEvaluatedSafe(bundleDecl.merge);\n\n if (bundleMerge && typeof bundleMerge === 'string' && bundleDecl.path) {\n const overriddenBundlePath = bundleMerge;\n // need to 'normalize' the path for JET\n const resolvedPathExpr = this.getEvaluatedSafe(bundleDecl.path);\n if (resolvedPathExpr) {\n // 'root' path, unrestricted: true\n const pathHandler = new PathHandler(resolvedPathExpr, '', { allowParent: true });\n bundleMergePropMap[overriddenBundlePath] = pathHandler.getResolvedPath();\n }\n }\n });\n }\n\n // if there is a \"requirejs\" declaration, just take it verbatim, after evaluating expressions,\n // and pass it to requirejs\n if (config.requirejs && typeof config.requirejs === 'object') {\n evaluatedConfig = this.getEvaluatedSafe(config.requirejs);\n }\n\n // top-level 'locale' takes priority\n if (locale) {\n evaluatedConfig.config = evaluatedConfig.config || {};\n evaluatedConfig.config.ojL10n = evaluatedConfig.config.ojL10n || {};\n evaluatedConfig.config.ojL10n.locale = locale || evaluatedConfig.config.ojL10n;\n }\n\n // \"merge\" properties take priority, and are merged with explicit ones\n if (Object.keys(bundleMergePropMap).length) {\n evaluatedConfig.config = evaluatedConfig.config || {};\n evaluatedConfig.config.ojL10n = evaluatedConfig.config.ojL10n || {};\n // 'merge' maps are combined with conflicts resolved by:\n // \"Localization\": \"merge\" takes precedence\n // then the 'merge\" property in the app bundle declarations\n // finally, and \"merge\" properties in the \"requirejs\"\n const allMerges = Object.assign({}, evaluatedConfig.config.ojL10n.merge, bundleMergePropMap);\n evaluatedConfig.config.ojL10n.merge = allMerges;\n }\n\n // handle userConfig here, so we can configure URL Mapping to skip it\n this.initializeUserConfig(config);\n\n // 'dtConfig' was introduces on 2104 and allows DT to pass information that is not available\n // on other sources, like index.html for example.\n // At the moment, this object is used to convey the IDCS host information so that 'vb-extension://tenant/idcs'\n // can be resolved when the RT application is running in the preview mode, i.e., running inside a DT frame\n // (see DT's PreviewResourceContentRewriter.js).\n this.dtConfig = config.dtConfig || {};\n\n // workaround circular dependency UrlMapper->ServicesUtils->ConfigLoader->UrlMapper\n return Utils.getResource('vb/private/urlMapper')\n .then((UrlMapper) => {\n urlMapper = new UrlMapper(this.protocolRegistry, this.activeProfile, this.serviceWorkerConfig);\n });\n })\n .then(() => this.getRuntimeEnvironment())\n .then((re) => re.getServiceWorkerRequireConfig())\n .then((swRequireConfig) => {\n // merge in the service worker require config from the runtime environment if any\n if (swRequireConfig) {\n evaluatedConfig = Utils.cloneObject(swRequireConfig, evaluatedConfig);\n }\n\n // eslint-disable-next-line no-underscore-dangle\n this._setConfiguration(evaluatedConfig);\n\n // return a config object containing require config, external plugins, and logConfig\n // eslint-disable-next-line no-underscore-dangle\n return ConfigLoader._getExternalPlugins(config.userConfig)\n .then((plugins) => {\n // this is passed to the 'service worker' initialization as externalConfig\n const result = {\n requireConfig: evaluatedConfig,\n logConfig: config ? config.logConfig : undefined,\n userConfig: this.userConfig,\n };\n // @todo: used to return null here, not sure why\n if ((plugins && plugins.length > 0) || Object.keys(evaluatedConfig).length > 0) {\n result.plugins = plugins;\n }\n return result;\n });\n });\n }\n\n /**\n * convenience wrapper for window.vbInitConfig. returns a (deep) clone.\n * @todo: may be useful for abstraction in the future; look at replacing other access\n * @returns {*|{}} deep clone of the value, or an empty object\n */\n get vbInitConfig() {\n if (!vbInitConfigClone) {\n vbInitConfigClone = Utils.cloneObject(window.vbInitConfig || {});\n }\n return vbInitConfigClone;\n }\n\n /**\n * convenience wrapper for window.vbInitConfig.SERVICE_WORKER_CONFIG. returns a (deep) clone.\n * @returns {*|{}} deep clone of the value, or an empty object\n */\n get serviceWorkerConfig() {\n if (!serviceWorkerConfigClone) {\n serviceWorkerConfigClone = Utils.cloneObject(this.vbInitConfig.SERVICE_WORKER_CONFIG || {});\n }\n return serviceWorkerConfigClone;\n }\n\n\n /**\n * @param vbInitConfig window.vbInitConfig\n * @returns {*} a promise to an initialized tracer. If the runtime environment allows it, and tracer configuration\n * specified in vbInitConfig is valid, this will be a client trace Tracer. Otherwise this will be a noop tracer.\n * Must be called prior to Service Worker registration.\n * @see https://confluence.oraclecorp.com/confluence/display/MDO/Trace-Client+API\n */\n static initTracer(vbInitConfig) {\n return Utils.getRuntimeEnvironment()\n .then((re) => {\n if (typeof re.isOpenTraceEnabled === 'function' && re.isOpenTraceEnabled()) {\n const traceOptions = Utils.getTraceOptions(vbInitConfig);\n return Tracer.init(traceOptions);\n }\n // set explicit disabled flag in trace config, because SW thread cannot access runtime environment\n // so it can't run the above check\n if (vbInitConfig && vbInitConfig.TRACE_CONFIG) {\n // eslint-disable-next-line no-param-reassign\n vbInitConfig.TRACE_CONFIG.disabled = true;\n }\n return Promise.resolve();\n });\n }\n\n /**\n * loads app-flow.json\n *\n * @returns {Promise}\n */\n loadConfiguration() {\n return this.getRuntimeEnvironment()\n .then(re => re.getApplicationDescriptor(`${this.requirePath}app`));\n }\n\n /**\n * separate to allow mocking\n */\n getRuntimeEnvironment() {\n // allow runtimeEnvironment to be mocked for unit tests\n return (this.runtimeEnvironment) ?\n Promise.resolve(this.runtimeEnvironment) :\n Utils.getRuntimeEnvironment()\n .then((re) => {\n this.runtimeEnvironment = re;\n return re;\n });\n }\n\n /**\n * initialize the 'initParams' values from either the window variable, or the app-flow declaration\n *\n * (this will also exposed in $application.initParams object, see application.js)\n *\n * Expressions are supported for \"initParams\" JSON,\n * but may NOT reference any VB constructs; only 'window' variables are usable.\n *\n *\n * as a window variable:\n * window.vbInitParams = {\n * ...\n * }\n *\n * as a declaration:\n * \"configuration\": {\n * \"initParams\": {\n * ...\n * }\n * }\n *\n *\n *\n *\n * @returns {{}}\n */\n static createInitParams(config) {\n const windowValues = (window && window.vbInitParams) || {};\n const declaredValues = Expression\n .getEvaluatedSafe((config.configuration && config.configuration.initParams) || {}, {});\n\n return Object.assign({}, windowValues, declaredValues);\n }\n\n /**\n *\n * @returns {*}\n */\n static createConfigurationDeclaration(config) {\n // first. look for window.vbInitParams.catalog\n // @todo: vbInitParams is temporary - remove, once consumers are able to declare in app-flow.json\n //\n // note: this is different than initParams\n // 'initParams' is window.vbInitParams {...} and \"configuration\": { \"initParams\": {...} }\n // This instead uses window.vbInitParams {...} and \"configuration\": {...} <- uses configuration object!\n // The use of the window variables will be removed eventually\n\n const windowValues = (window && window.vbInitParams) || {};\n const declaredValues = (config.configuration) || {};\n\n // declared values override windows values\n return Object.assign(windowValues, declaredValues);\n }\n\n\n /**\n * wrapper for Expression.getEvaluatedSafe.\n *\n * this is used for evaluating expressions in the \"translations\", \"localization\", and \"requirejs\",\n * which are all evaluated before $application exists.\n * These values can be referenced by \"$initParams.\n *\n * @param expression\n * @private\n * @returns {*}\n */\n getEvaluatedSafe(expression) {\n return Expression.getEvaluatedSafe(expression, this.getExpressionContext());\n }\n\n /**\n * @private\n * @returns {{ $initParams: {Object} }}\n */\n getExpressionContext() {\n return { [Constants.ContextName.INIT_PARAMS]: this.initParams };\n }\n\n\n /**\n * do the actual requireJS call\n * @param configuration\n * @private\n */\n _setConfiguration(configuration) {\n if (configuration) {\n // eslint-disable-next-line no-underscore-dangle\n this.currentRequireConfig = ConfigLoader._mergeRequirejsConfig(this.currentRequireConfig, configuration);\n requirejs.config(configuration);\n }\n }\n\n\n /**\n * used for \"requirejs\" declarations in app-flow-x extensions. Allows:\n * - only \"paths\" to be used from the extension\n * - only paths that are not already set can be set; we check the requireJS config for existing paths.\n * @param config\n */\n addRequirejsPathsFromExtension(config) {\n if (config.paths) {\n const paths = Object.assign({}, config.paths);\n\n const existingPaths = this._getExistingRequirejsPaths();\n\n // don't allow existing ones to change\n if (existingPaths) {\n Object.keys(existingPaths).forEach((path) => {\n if (paths[path]) {\n logger.warn('An extension has tried to replace an existing requireJS \"paths\" entry, ignoring: '\n + `\"${path}\": \"${paths[path]}\"`);\n delete paths[path];\n }\n });\n }\n\n requirejs.config({\n paths,\n });\n }\n }\n\n /**\n * return the current requireJS paths\n *\n * separate function, to allow mocking in tests\n * @private\n */\n _getExistingRequirejsPaths() {\n // always try the internal requirejs config, first.\n if (usePrivateRequirejsApi) {\n try {\n return requirejs.s.contexts._.config.paths;\n } catch (err) {\n // only fail once; use our own from that point on.\n logger.warn('Unable to get requirejs configuration, using internal configuration and continuing.');\n usePrivateRequirejsApi = false;\n }\n }\n // only used if the above reference causes an exception\n return this.currentRequireConfig.paths;\n }\n\n /**\n * does a merge of 'paths' and 'maps', with 'current' taking precedence.\n * @param previous\n * @param current\n * @private\n */\n static _mergeRequirejsConfig(previous, current) {\n const merged = {};\n\n if (previous.paths || current.paths) {\n merged.paths = Object.assign({}, previous.paths, current.paths);\n }\n\n if (previous.map) {\n merged.map = {};\n // merge each sub-map object\n Object.keys(previous.map).forEach((mapProp) => {\n merged.map[mapProp] = Object\n .assign({}, previous.map[mapProp], current.map && current.map[mapProp]);\n });\n }\n // make sure we get all new map objects\n if (current.map) {\n merged.map = Object.assign({}, current.map, merged.map);\n }\n\n return merged;\n }\n\n /**\n * Return external plugins specified by the security provider.\n *\n * @param userConfig metadata for the security provider\n * @returns {*}\n * @private\n */\n static _getExternalPlugins(userConfig) {\n if (userConfig && userConfig.type) {\n return Utils.getResource(userConfig.type).then((SecurityProviderClass) => {\n if (SecurityProviderClass) {\n const securityProvider = new SecurityProviderClass();\n\n // need to dynamically load DefaultSecurityProvider here instead of in define so we don't\n // pull in JET too early and break the translation bundle\n return Utils.getResource('vb/private/types/defaultSecurityProvider')\n .then((DefaultSecurityProvider) => {\n // if securityProvider is an instance of DefaultSecurityProvider, only return the plugins\n // specified in userConfig.configuration.plugins\n if (securityProvider instanceof DefaultSecurityProvider) {\n return userConfig.configuration ? userConfig.configuration.plugins : undefined;\n }\n\n // otherwise, call getServiceWorkerPlugins to get the external plugins\n return securityProvider.getServiceWorkerPlugins(userConfig.configuration);\n })\n // need to also get the plugins provided by RuntimeEnvironment.getServiceWorkerPlugins\n .then((externalPlugins) => Utils.getRuntimeEnvironment()\n .then((re) => re.getServiceWorkerPlugins()\n .then((pluginsOverride) => {\n if (!pluginsOverride) {\n return externalPlugins;\n }\n\n if (!externalPlugins) {\n return pluginsOverride.length > 0 ? pluginsOverride : undefined;\n }\n\n return externalPlugins.concat(pluginsOverride);\n })));\n }\n\n return Promise.resolve();\n }).catch((e) => {\n // log and ignore the error\n logger.error('Failed to load security provider', userConfig.type, e);\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * use \"logConfig\" in application to configure logging;\n * for now, only \"level\" is supported.\n *\n * ex.\n * \"logConfig\": {\n * \"level: \"info\"\n * }\n *\n * @param config the contents of app-flow.json\n * @returns {boolean}\n */\n static configureLogging(config) {\n if (config && config.logConfig && config.logConfig.level) {\n return Log.setMinimumLevel(config.logConfig.level);\n }\n return false;\n }\n\n\n /**\n * these services should NOT be used by the Application! These are here for things that need\n * to load services before Application is created, but...\n *\n * Application service paths may refer to Application variables.\n * But...\n * ApplicationConfiguration is creating its own service map BEFORE Application exists,\n * for things that may need access to service defs before the Application is created.\n *\n * So, if the vb app requires services before Application (for example, if its configured for Extensions,\n * or the security provider is using a service def), the application CANNOT use\n * any dollar-variables in the service map expressions EXCEPT $initParams.\n *\n *\n * @param definition\n * @returns {Promise}\n */\n getServices() {\n if (!this._servicesPromise) {\n this._servicesPromise = Utils.getResource('vb/private/services/services')\n .then((Services) => {\n const options = {\n relativePath: this.requirePath,\n serviceFileMap: this.servicesMap,\n expressionContext: this.getExpressionContext(),\n isUnrestrictedRelative: true,\n protocolRegistry: this.protocolRegistry,\n };\n return new Services(options);\n });\n }\n return this._servicesPromise;\n }\n\n /**\n * setup this.userConfig, and evaluate the userConfig.configuration.path as an expression, if needed.\n * @params config contents of app-flow.json\n * @returns {Object} original userConfig, or a shallow clone with the configuration.url evaluated, if applicable.\n */\n initializeUserConfig(appConfig) {\n this.userConfig = appConfig.userConfig;\n\n const config = (this.userConfig && this.userConfig.configuration);\n if (config && config.url) {\n const context = { [Constants.ContextName.INIT_PARAMS]: this.initParams };\n this.userConfig.configuration = Object\n .assign({}, config, { url: Expression.getEvaluatedSafe(config.url, context) });\n }\n return this.userConfig;\n }\n\n\n /**\n * create a shared ProtocolRegistry, used to re-reference additional, app-flow.json-defined, service metadata\n *\n * as a window variable:\n * window.vbInitParams.config = {\n * catalog: path to catalog JSON file\n * services: {\n * catalog: {\n * .... backend and services token values\n * }\n * }\n * }\n *\n * as a declaration:\n * \"configuration\": {\n * \"initParams\": {\n * ...\n * }\n * }\n *\n * @param declaration\n * @returns {ProtocolRegistry}\n */\n get protocolRegistry() {\n if (!protocolRegistry) {\n const tenantConfig = {};\n const idcsInfo = (this.userConfig && this.userConfig.configuration && this.userConfig.configuration.idcsInfo)\n || this.dtConfig.idcsInfo;\n if (idcsInfo) {\n tenantConfig.idcsInfo = idcsInfo;\n }\n\n protocolRegistry = new ProtocolRegistry(this.catalogConfiguration,\n this.activeProfile, tenantConfig, this.catalogRegistry);\n }\n return protocolRegistry;\n }\n\n\n /**\n * accessor\n * catalogRegistry to register the base catalog.json, or any extension catalog.json\n * @returns {CatalogRegistry}\n */\n get catalogRegistry() {\n if (!catRegistry) {\n catRegistry = new CatalogRegistry();\n }\n return catRegistry;\n }\n\n /**\n *\n * @returns {UrlMapper}\n */\n get urlMapper() {\n if (!urlMapper) {\n logger.error('MNo UrlMapper available; ConfigLoader.init must be called first');\n }\n return urlMapper;\n }\n\n /**\n * @param p {ProtocolRegistry}\n * @private only for tests!!\n */\n // eslint-disable-next-line class-methods-use-this\n set protocolRegistry(p) {\n protocolRegistry = p;\n }\n }\n\n return new ConfigLoader(); // singleton\n});\n\n","'use strict';\n\ndefine('vb/private/history',['vb/private/utils', 'vb/private/log', 'vb/private/constants', 'urijs/URI',\n], (Utils, Log, Constants, URI) => {\n const logger = Log.getLogger('/vb/private/history');\n const VB_STATE_PROPERTY = 'vbState';\n const REPLACE_STATE_OP = 'replaceState';\n const PUSH_STATE_OP = 'pushState';\n let cachedState;\n let uri;\n let stateOp;\n let urlParameters;\n let navBackParams;\n let useIOSVersion113Navigation;\n let stateBeforeHistoryPop = null;\n\n /**\n * The History class has 3 purposes:\n * 1) abstract the window.history API\n * 2) defer any updates to the browser history until sync is called to minimized the amount\n * of change to the browser history\n * 3) get around Google chrome throttling of the history state\n *\n * The state for VB is stored in a sub-property named 'vbState' to not conflict with other\n * state also stored in the browser history.\n */\n class History {\n /**\n * initialize the History class.\n * - cached state is empty\n * - any URL params are copied internally if clearParameter is truthy\n * - URL params are removed from the search\n * - operation is set to replaceState\n * @param {boolean} clearParameters if true, URL params are not stored internally\n * @param {function} popStateCallback register a callback on the history popstate event\n */\n static init(clearParameters, popStateCallback) {\n // Add a listener to the popstate event so when navigating using the browser back button\n // or when history.back() is called we know to update the cached state\n window.onpopstate = (event) => {\n History.popStateEventHandler(event);\n if (popStateCallback) {\n popStateCallback();\n }\n };\n\n useIOSVersion113Navigation = Utils.isLocalIOSVersionAtLeast113AndLessThan12();\n cachedState = {};\n uri = new URI();\n // Make a copy of the original query param and clean up the URL\n // This is so query param that are not part matching any fromUrl variable are removed\n // from the URL when that application is started\n if (!clearParameters) {\n urlParameters = URI.parseQuery(uri.search());\n }\n uri.search('');\n stateOp = REPLACE_STATE_OP;\n }\n\n /**\n * A listener for the popstate event so when navigating using the browser back button\n * or when history.back() is called we know to update the cached state.\n *\n * @param {Object} event the popState event\n */\n static popStateEventHandler(event) {\n // Make a copy of the state before changing it. It will be used to restore state and url\n // if the navigation is cancelled.\n stateBeforeHistoryPop = {\n state: History.state,\n url: uri.href(),\n };\n\n // It is possible for event.state to be null, for example if a previous pushState used\n // null for the state argument or when a link with href=\"#\" is clicked\n if (event.state === null) {\n const oldUrl = new URI(uri).hash('');\n const newUrl = new URI().hash('');\n const samePage = newUrl.equals(oldUrl);\n\n // Do not loose internal state if navigating to the same page\n if (!samePage) {\n History.replaceState(null);\n }\n } else {\n History.replaceState(event.state[VB_STATE_PROPERTY]);\n }\n\n // Merge navBackParams on top of the cachedState inputParameters\n // This is to properly handle input parameters coming from the navigateBack action\n if (navBackParams) {\n cachedState.inputParameters = cachedState.inputParameters || {};\n Utils.cloneObject(navBackParams, cachedState.inputParameters);\n navBackParams = undefined;\n }\n\n // Create a new URI object using the existing browser URL\n uri = new URI();\n // Repopulate the url params that will be used by manageInputParameters\n urlParameters = URI.parseQuery(uri.search());\n stateOp = REPLACE_STATE_OP;\n }\n\n /**\n * Reset the pathname part of the current uri.\n * This is needed after the router navigated event to update the uri\n * with the new path set by the router. Input parameter need to be\n * kept around to initialize the fromUrl variable.\n */\n static resetUri() {\n const search = History.getSearch();\n const hash = History.getHash();\n uri = new URI();\n History.setSearch(search);\n History.setHash(hash);\n }\n\n /**\n * Reset the URL parameters.\n * This is used before navigating to clean up for the new state.\n */\n static resetUrlParameters() {\n History.setSearch('');\n urlParameters = {};\n }\n\n /**\n * Retrieve the current cached state. Never returns undefined or null.\n *\n * @return {Object} the current state\n */\n static get state() {\n return Utils.cloneObject(cachedState);\n }\n\n /**\n * Set the browser state operation to be pushState\n * @param {Object} state the new state\n * @param {String} url the new URL\n */\n static pushState() {\n stateOp = PUSH_STATE_OP;\n }\n\n /**\n * Replace the currently cached browser state and URL.\n * @param {Object} state the new state\n * @param {String} url the new URL\n */\n static replaceState(state) {\n cachedState = state ? Utils.cloneObject(state) : {};\n }\n\n static setUrlParameters(urlParams) {\n if (useIOSVersion113Navigation) {\n logger.warn('Alternate Navigation Mode - ignoring url update of params', Object.keys(urlParams));\n return;\n }\n\n uri.addSearch(urlParams);\n }\n\n static addUrlParameter(name, value) {\n if (useIOSVersion113Navigation) {\n logger.warn('Alternate Navigation Mode - ignoring url update of parameter', name);\n return;\n }\n\n if (value !== undefined) {\n uri.addSearch(name, value);\n }\n }\n\n static setUrlParameter(name, value) {\n if (useIOSVersion113Navigation) {\n logger.warn('Alternate Navigation Mode - ignoring url update of parameter', name);\n return;\n }\n\n if (value !== undefined) {\n uri.setSearch(name, value);\n } else {\n uri.removeSearch(name);\n }\n }\n\n static getUrlParameter(name) {\n return urlParameters[name];\n }\n\n /**\n * Retrieve the search section of the current URI\n * @return {String}\n */\n static getSearch() {\n return uri.search();\n }\n\n /**\n * Replace the search section of the current URI\n * @param {String} search\n */\n static setSearch(search = '') {\n uri.search(search);\n }\n\n /**\n * Retrieve the hash section of the cached URI\n * @return {String} hash\n */\n static getHash() {\n return uri.hash();\n }\n\n /**\n * Replace the hash section of the cached URI\n * @param {String} hash\n */\n static setHash(hash = '') {\n uri.hash(hash);\n }\n\n /**\n * Store a copy of the input parameters in history.\n * It is the options.params argument of the navigateToPage action. This is needed\n * in two situation:\n * 1) When navigating back to this page and initializing the page input parameter.\n * 2) When navigating to the same page to compare if the input parameters are different.\n *\n * @param {Object} inputParameters an object where the property keys are params name and\n * the property values the params values.\n */\n static setInputParameters(inputParameters) {\n cachedState.inputParameters = {};\n Utils.cloneObject(inputParameters, cachedState.inputParameters);\n }\n\n static getInputParameters() {\n return cachedState.inputParameters || {};\n }\n\n /**\n * Set the navBackParams object.\n * This is used by the navigateBackAction to set input parameters on the page it is\n * navigating nack to.\n * @param {Object} params\n */\n static setNavNavBackParams(params) {\n navBackParams = params;\n }\n\n static setPagePath(pagePath) {\n cachedState.pagePath = pagePath;\n }\n\n static getPagePath() {\n return cachedState.pagePath;\n }\n\n /**\n * Used to store history persisted variables.\n * Variable state is stored in state.variables[${namespace}.${name}]\n *\n * @param {[type]} namespace [description]\n * @param {[type]} name [description]\n * @param {[type]} value [description]\n */\n static setVariable(namespace, name, value) {\n const key = `${namespace}.${name}`;\n\n if (value !== undefined) {\n if (!cachedState.variables) {\n cachedState.variables = {};\n }\n cachedState.variables[key] = value;\n } else if (cachedState.variables) {\n delete cachedState.variables[key];\n }\n }\n\n /**\n * Used to retrieve history persisted variables\n *\n * @param {[type]} namespace [description]\n * @param {[type]} name [description]\n * @return {[type]} [description]\n */\n static getVariable(namespace, name) {\n const key = `${namespace}.${name}`;\n return cachedState.variables && cachedState.variables[key];\n }\n\n static getVariables() {\n return cachedState.variables || {};\n }\n\n /**\n * Execute the back on browser history API\n */\n static back() {\n window.history.back();\n }\n\n /**\n * Apply cached changes to the browser history or URL.\n * @return {Promise} a promise that resolves when the browser history changed\n */\n static sync() {\n const href = uri.href();\n\n stateBeforeHistoryPop = null;\n\n if (stateOp === REPLACE_STATE_OP) {\n let historyState = window.history.state;\n const vbState = historyState && historyState[VB_STATE_PROPERTY];\n\n if (href !== window.location.href || Utils.diff(cachedState, vbState)) {\n // An empty cacheState is the same as undefined\n if (Object.keys(cachedState).length > 0) {\n if (!historyState) {\n historyState = {};\n }\n // Our state is always store in the property 'vbState' of the history state\n historyState[VB_STATE_PROPERTY] = cachedState;\n } else if (historyState) {\n delete historyState[VB_STATE_PROPERTY];\n }\n\n return Utils.changeBrowserState(historyState, href, stateOp);\n }\n return Promise.resolve();\n }\n // In the pushState case, don't need to merge with existing state\n return Utils.changeBrowserState({ [VB_STATE_PROPERTY]: cachedState }, href, stateOp).then(() => {\n stateOp = REPLACE_STATE_OP;\n });\n }\n\n /**\n * Restore the URL and the history state to the value before the browser back/forward button.\n * This is to be used when a navigation initiated by a browser back/forward button is cancelled.\n * @return {Promise} a promise that resolve when the browser history is restored\n */\n static restoreStateBeforeHistoryPop() {\n // Only restore the state if the the navigation was initiated from a browser back/forward button\n if (stateBeforeHistoryPop) {\n cachedState = stateBeforeHistoryPop.state;\n uri = new URI(stateBeforeHistoryPop.url);\n return History.sync();\n }\n\n return Promise.resolve();\n }\n\n // end of history class\n }\n\n return History;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/navigationContext',[\n 'vb/private/log',\n 'vb/private/utils',\n], (Log, Utils) => {\n const logger = Log.getLogger('/vb/stateManagement/navigationContext');\n const ACTIVE = 'active';\n const CANCELLED = 'cancelled';\n\n /**\n * Use to hold the context of the current navigation during all the steps of navigation.\n * Most importantly it allows to change the state of the navigation from active to cancelled.\n * When cancelled, navigation process can decided to abort the navigation and return immediately.\n */\n class NavigationContext {\n constructor(container, options) {\n this.status = ACTIVE;\n this.container = container;\n this.options = options;\n this.id = Utils.generateUniqueId();\n this.navigatePromise = null;\n // Keep track of pages created during this navigation chain\n // so that we can clean them if the navigation is cancelled.\n this.pages = [];\n }\n\n /**\n * Start the navigation process by invoking navigateToPage using the container and the options\n * of this navigation context.\n * Make sure multiple invocation returns the same promise.\n * @return {Promise} the navigation promise\n */\n navigate() {\n this.navigatePromise = this.navigatePromise || this.container.navigateOperation(this.options, this);\n return this.navigatePromise;\n }\n\n /**\n * Cancel the current navigation\n */\n cancel() {\n logger.info('A new navigation cancelled navigation to', this.options.page);\n this.status = CANCELLED;\n }\n\n /**\n * Check the status of the navigation and return true if the state is active\n * @return {Boolean} true if the state is active\n */\n isActive() {\n return this.status === ACTIVE;\n }\n\n /**\n * Check the status of the navigation and return true if the state is cancelled\n * @return {Boolean} true if the state is cancelled\n */\n isCancelled() {\n return this.status === CANCELLED;\n }\n\n /**\n * Return true is the navigation info passed as an argument has the same container and options\n * @param {Container} container\n * @param {Object} options\n * @return {Boolean} true if the same\n */\n equals(container, options) {\n return (this.container === container && !Utils.diff(this.options, options));\n }\n\n /**\n * Clean up pages created if the navigation was cancelled\n */\n clean() {\n while (this.pages.length) {\n this.pages.pop().dispose();\n }\n }\n }\n\n return NavigationContext;\n});\n\n","/* global cordova:false */\n\n'use strict';\n\ndefine('vb/private/stateManagement/router',[\n 'ojs/ojrouter', 'ojs/ojcontext',\n 'vb/private/log', 'vb/private/utils', 'vb/private/constants', 'vb/private/configuration',\n 'vb/private/history', 'vb/private/stateManagement/navigationContext', 'urijs/URI',\n], (ojRouter, ojContext, Log, Utils, Constants, Configuration, History, NavigationContext, URI) => {\n // Un-comment to see ojRouter logging.\n // oj.Logger.option('level', oj.Logger.LEVEL_INFO);\n const SPECIAL_URLS_REGEX = /^(tel:|sms:|mailto:|geo:)/;\n\n const HTTP_FILE_REGEX = new RegExp('^(http|https):', 'i');\n\n const SUPPORTED_MOBILE_FILE_TYPES =\n new Map([\n ['txt', 'text/plain'],\n ['text', 'text/plain'],\n ['rtf', 'text/rtf'],\n ['csv', 'text/csv'],\n ['pdf', 'application/pdf'],\n ['doc', 'application/msword'],\n ['xls', 'application/vnd.ms-excel'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['mp4', 'video/mp4'],\n ['mp3', 'audio/mpeg']]);\n\n function targetError() {\n return new Error('The target option is only valid with flow');\n }\n\n class Router {\n constructor() {\n this.log = Log.getLogger('/vb/stateManagement/router');\n\n // Initialize history with a listener for the history popstate event\n History.init(false, this.popStateEventListener.bind(this));\n\n // remove the url fragment without triggering a refresh, e.g., clear the access token fragment\n Router.removeAccessTokenFromUrlFragment();\n\n // A place to store simultaneous navigation during the navigation process\n this.pendingNavigations = {};\n\n // This property will be initialized in application.load()\n this.application = null;\n\n // Create the baseUrl property using on the already calculated baseUrl from require config\n // This property is read-only\n Object.defineProperty(this, 'baseUrl', {\n value: requirejs.toUrl(''),\n enumerable: true,\n });\n this.log.info('Loading application resources from', this.baseUrl);\n\n // Make sync available on Router\n this.sync = ojRouter.sync;\n }\n\n /**\n * Initialize the router URL adapter and baseUrl value based on a combination\n * of URL setting and the \"useParamAdapter\" entry in the app flow definition.\n *\n * @param {oj.Router} router the JET router object to be the root for the application\n * @param {Boolean} routerStrategy the value of the entry in the app\n * flow definition\n */\n init(router, routerStrategy) {\n this.router = router;\n\n // Make stateId available on Router\n this.stateId = router.stateId;\n\n // Initialize the router baseUrl with the application URL\n // What the JET Router calls the \"baseUrl\" is the URL of the application in browser\n ojRouter.defaults.baseUrl = Configuration.applicationUrl;\n this.log.info('Application URL is', Configuration.applicationUrl);\n\n let proxyGo = Router.prototype.goWithoutUrlMarker;\n\n if (routerStrategy === Constants.RouterStrategy.QUERY) {\n const routerDefaults = ojRouter.defaults;\n // Name of the request attribute to be used for the page\n routerDefaults.rootInstanceName = 'page';\n routerDefaults.urlAdapter = new ojRouter.urlParamAdapter();\n } else if (!Configuration.appName) {\n // When the router strategy is PATH and app name is not defined then\n // the go function needs to add the URL marker 'vp' to the URL\n this.log.info('Using navigation with URL marker:', Configuration.urlMarker);\n proxyGo = Router.prototype.goWithUrlMarker;\n }\n\n // workaround a nasty bug in iOS 11.3-11.4, where history.pushState and history.updateState throw an exception\n // see bug https://bugs.webkit.org/show_bug.cgi?id=183028\n // This issue is resolved after iOS 12.0+\n if (Utils.isLocalIOSVersionAtLeast113AndLessThan12()) {\n this.log.warn('Alternate navigation mode on for iOS 11.3 - 11.4!');\n proxyGo = Router.prototype.goIOS113;\n Router.prototype.doNavigateBack = Router.prototype.doNavigateBackIOS113;\n }\n\n Router.prototype.go = proxyGo;\n\n // Busy state will be released in the run of the leaf page\n this.setBusyState();\n }\n\n /**\n * A listener of the popstate event used to know when to refresh the input parameters\n * when the navigating back to the same page.\n */\n popStateEventListener() {\n // Set the router busy state on navigation from the browser, the state will be cleared\n // when the page is rendered in page.run()\n this.setBusyState();\n\n const page = this.getCurrentPage();\n\n if (page && page.fullPath === History.getPagePath()) {\n Promise.resolve().then(() => {\n page.refreshInputParameters();\n\n // Invoke the after navigate event\n const eventPayload = {\n previousPage: this.application.previousPagePath,\n previousPageParams: this.application.currentPageParams,\n currentPage: page.getNavPath(),\n currentPageParams: Utils.cloneObject(History.getInputParameters()),\n };\n\n return page.invokeEventWithBubbling(Constants.AFTER_NAVIGATE_EVENT, eventPayload);\n }).finally(() => {\n // Navigation to the same page does not call page.run(), so need to clear the state here\n this.clearBusyState();\n });\n }\n }\n\n /**\n * Pushes a new path into the internal history stack\n * @param fullPath\n */\n pushState(fullPath) {\n if (!this.historyStack) {\n Object.defineProperty(this, 'historyStack', {\n // start the history with the current path\n value: [this.application.getCurrentPagePath()],\n enumerable: true,\n configurable: true,\n });\n }\n\n this.historyStack.push(fullPath);\n }\n\n /**\n * Pops the internal history stack and returns the last item in it\n * @returns {string}\n */\n popState() {\n if (this.historyStack && this.historyStack.length > 0) {\n return this.historyStack.pop();\n }\n\n return null;\n }\n\n /**\n * Peeks the last item in the history stack\n * @returns {string}\n */\n peekState() {\n if (this.historyStack && this.historyStack.length > 0) {\n return this.historyStack[this.historyStack.length - 1];\n }\n\n return null;\n }\n\n /**\n * A proxy for the router.go method to be used to workaround bug https://bugs.webkit.org/show_bug.cgi?id=183028\n *\n * Same API as ojRouter.go\n * @see goWithoutUrlMarker\n */\n goIOS113(...args) {\n const argsCopy = [...args];\n const fullPath = argsCopy[0];\n const goOptions = argsCopy[1];\n\n // keep track of the history so that we can use it on navigateBack\n this.pushState(fullPath);\n goOptions.historyUpdate = 'skip';\n\n return this.router.go(...args);\n }\n\n /**\n * A proxy for the router.go method to be used when\n * the URL marker 'vp' is not needed on the URL\n *\n * Same API as ojRouter.go\n */\n goWithoutUrlMarker(...args) {\n return this.router.go(...args);\n }\n\n /**\n * A proxy for the router.go method to be used when\n * the URL marker 'vp' is needed.\n *\n * Same API as ojRouter.go\n */\n goWithUrlMarker(...args) {\n const argsCopy = [...args];\n\n let path = argsCopy[0];\n // When using the 'path strategy', prefixes the path with /vp\n path = `/${Configuration.urlMarker}/${path}`;\n argsCopy[0] = path;\n\n return this.router.go(...argsCopy);\n }\n\n /**\n * Clean up and validate the navigateAction and navigateToPageAction arguments\n *\n * @param {Object} options\n * @param {String} options.operation - the navigation operation to perform\n * @param {String} options.page - the path to the destination page. The path is absolute starting\n * at the application or relative to the current page. When use in combination with flow or appPackage,\n * the path cannot be absolute and it navigates to the page relative to the flow or appPackage.\n * @param {String} options.flow - the id of the destination flow. Change the content of the flow displayed\n * in the current page. When used in combination with a page property, navigates to the page in that flow.\n * @param {String} options.package - the id of the destination app-package. Change the content of the\n * app-package displayed in the host application. When used in combination with a page property, navigates\n * to the page in that app-package.\n * @param {Object} options.params - A map of URL parameters. Same as in the navigateToPage\n * action (optional)\n * @param {String} options.history - the type of operation on the browser history. Allowed value are 'replace',\n * 'skip' or 'push'. If the value is 'replace', the current browser history entry is replaced, meaning that back\n * button will not go back to it. If the value is 'skip', the URL is left untouched.\n * Same as in the navigateToPage action(optional and default is push)\n * @return {Object} the cleaned up options\n */\n validateNavigationOptions(options) {\n let page = options.page;\n let flow = options.flow;\n let appPackage = options.package;\n let target = options.target;\n let operation = options.operation;\n\n page = page && page.trim();\n flow = flow && flow.trim();\n appPackage = appPackage && appPackage.trim();\n target = target && target.trim();\n operation = operation && operation.trim();\n\n if (operation === 'oldNavigateToPage') {\n if (!page) {\n throw new Error('Cannot navigate to an undefined path.');\n }\n } else if (typeof appPackage === 'string') {\n if (target) {\n throw targetError();\n }\n const id = appPackage;\n if (id.length > 0 && !this.application.extensionRegistry.getAppPackageExtension(id)) {\n throw new Error(`The app-package ${id} does not exist.`);\n }\n operation = 'navigateToPackage';\n } else if (typeof flow === 'string') {\n if (flow.indexOf('/') > 0) {\n throw new Error(`The flow parameter \"${flow}\" cannot be a path, it should be a flow id.`);\n }\n operation = 'navigateToFlow';\n } else if (typeof page === 'string') {\n if (target) {\n throw targetError();\n }\n operation = 'navigateToPage';\n } else {\n throw new Error('Cannot navigate to an undefined location.');\n }\n\n return {\n page,\n flow,\n package: appPackage,\n target,\n operation,\n params: options.params,\n history: options.history,\n };\n }\n\n /**\n * Manage page navigation such that when an attemp to navigate is made while navigating,\n * the current navigation is cancelled and the new one is executed. the goal being that\n * when multiple navigation are queued, only the last navigation should complete.\n * @param {Container} container the container on which the navigation is performed\n * @param {Object} options the set of option for the navigation\n * @param {String} options.operation - the navigation operation to perform\n * @param {String} options.page - the path to the destination page. The path is absolute starting\n * at the application or relative to the current page. When use in combination with flow or appPackage,\n * the path cannot be absolute and it navigates to the page relative to the flow or appPackage.\n * @param {String} options.flow - the id of the destination flow. Change the content of the flow displayed\n * in the current page. When used in combination with a page property, navigates to the page in that flow.\n * @param {String} options.package - the id of the destination app-package. Change the content of the\n * app-package displayed in the host application. When used in combination with a page property, navigates\n * to the page in that app-package.\n * @param {Object} options.params - A map of URL parameters. Same as in the navigateToPage\n * action (optional)\n * @param {String} options.history - the type of operation on the browser history. Allowed value are 'replace',\n * 'skip' or 'push'. If the value is 'replace', the current browser history entry is replaced, meaning that back\n * button will not go back to it. If the value is 'skip', the URL is left untouched.\n * Same as in the navigateToPage action(optional and default is push)\n * @return {Promise} a Promise that resolves to an object with a property named\n * 'navigated' which value is true if a navigation occurred.\n */\n queueNavigate(container, opts) {\n return Promise.resolve()\n .then(() => this.validateNavigationOptions(opts))\n .then((options) => container.validateNavigationInDt(options)\n .then((canNavigate) => {\n if (!canNavigate) {\n return { navigated: false };\n }\n\n // If a navigation to the same page already exist, return the existing promise\n // instead of creating a new one.\n let navContext = this.getPendingNavigation(container, options);\n if (navContext) {\n return navContext.navigatePromise;\n }\n\n // We're about to start a new navigation, so start cancelling all existing navigation\n this.cancelPendingNavigations();\n\n // Create a new navigation context and add it to the list of pending navigation.\n navContext = this.addPendingNavigation(container, options);\n\n // add a busy state just to be safe and consistent with navigateBack which will be cleared after\n // page enter\n this.setBusyState();\n\n return navContext.navigate()\n .then((result) => {\n // When navigated is true, the busy state should not be cleared until the page is done\n // (after vbEnter), but if navigated is false, clearBusyState right away\n if (result && result.navigated === false) {\n this.clearBusyState();\n }\n\n return result;\n })\n .catch((error) => {\n this.clearBusyState();\n throw error;\n })\n .finally(() => {\n this.deletePendingNavigation(navContext);\n });\n }))\n .catch((error) => {\n // Log the error because the action just return a failure outcome without errors\n this.log.error(error);\n throw error;\n });\n }\n\n /**\n * Create a new navigate context and add it to the pending navigations\n * @param {Container} container the container driving the navigation\n * @param {Object} options a set of navigation options\n * @returns {NavigationContext} the newly created navigation context\n */\n addPendingNavigation(container, options) {\n const navContext = new NavigationContext(container, options);\n this.pendingNavigations[navContext.id] = navContext;\n return navContext;\n }\n\n /**\n * Delete a navigation context from the pending navigations\n * @param {NavigationContext} navContext [description]\n */\n deletePendingNavigation(navContext) {\n if (navContext.isCancelled()) {\n this.log.info('Ending cancelled navigation to:', navContext.options);\n } else {\n this.log.info('Ending executed navigation to:', navContext.options);\n }\n\n delete this.pendingNavigations[navContext.id];\n }\n\n /**\n * Return a navigationContext from the pending navigation that matches\n * the navigation requirement (container + options)\n * @param {Container} container the container driving the navigation\n * @paraM {Object} options the navigation options\n * @retuns {NavigationContext} the navigation context in the pending navigations\n * matching container and options\n */\n getPendingNavigation(container, options) {\n const values = Object.values(this.pendingNavigations);\n\n for (let index = 0; index < values.length; index += 1) {\n const item = values[index];\n // Check if the navigation is the same\n if (item.equals(container, options)) {\n return item;\n }\n }\n\n return null;\n }\n\n /**\n * Cancels all active pending navigation\n */\n cancelPendingNavigations() {\n Object.values(this.pendingNavigations).forEach((item) => {\n // if we are in the middle of a navigation, cancel it\n if (item.isActive()) {\n item.cancel();\n }\n });\n }\n\n /**\n * Navigate to an external site with given a set of input parameters.\n *\n * @param {String} url The url to navigate to (required)\n * @param {Array} params A map of URL parameters (optional)\n * @param {String} hash The hash entry (optional)\n * @param {String} history Effect on the browser history. Allowed value are 'replace' or 'push'.\n * If the value is 'replace', the current browser history entry is replace,\n * meaning that back button will not go back to it.\n * (optional and default is push)\n */\n navigateToExternal(options) {\n const href = Utils.resolveIfObservable(options.url);\n\n if (!href) {\n throw new Error('The property url is a required parameter for navigateToExternal action.');\n }\n // For DT environment, retrieve current and destination page then invoke the\n // canNavigatePage to give a chance to DT to cancel navigation.\n const currentPath = this.application.getCurrentPagePath();\n this.application.runtimeEnvironment.canNavigateToUrl(currentPath, href).then((canNavigate) => {\n if (canNavigate) {\n const uri = new URI(href);\n\n if (options.params) {\n uri.addSearch(options.params);\n }\n\n if (options.hash) {\n uri.hash(options.hash);\n }\n\n if (options.history === 'replace') {\n window.location.replace(uri.href());\n } else {\n window.location.assign(uri.href());\n }\n }\n });\n }\n\n /**\n * Implementation of the openUrl action.\n * Open the specified resource in the current window or in a new window using the window.open() API\n * as defined at {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/open|Window.open()}\n * In the mobile case, the cordova's inAppBrowser plugin will be used to open the specified resource.\n * For more information about the plugin, please refer to\n * {@link https://github.com/apache/cordova-plugin-inappbrowser}\n *\n * @param {String} url The url to navigate to (required)\n * @param {Object} params An object with each property is a URL parameters (optional)\n * @param {String} hash The hash entry (optional)\n * @param {String} history Effect on the browser history (optional)\n * This is only used when opening the resource in the same window.\n * Allowed values are 'replace' or 'push'. Default is 'push'.\n * If the value is 'replace', the current browser history entry is\n * replaced instead of pushed, meaning that the browser back button\n * will not go back to it.\n * @param {String} windowName A name identifying the window as defined in window.open API (optional)\n * If not defined, the URL will be open in the current window otherwise\n * refer to the window.open API.\n * In the mobile case, there are 3 possible values: '_self', '_blank',\n * or '_system'. Default is '_self'\n */\n openUrl(options) {\n const url = Utils.resolveIfObservable(options.url);\n\n // Empty string is valid but not undefined or null\n if (url === undefined || url === null) {\n throw new Error('The property \"url\" is required for openUrl.');\n }\n\n let windowName = options.windowName || '_self';\n if (windowName.indexOf(' ') >= 0) {\n throw new Error('The property \"windowName\" should not contain whitespace.');\n }\n\n // For DT environment, retrieve current path then invoke the canOpenUrl to give a chance\n // to DT to cancel the operation.\n return this.application.runtimeEnvironment.canOpenUrl(this.application.getCurrentPagePath(),\n url, options.windowName)\n .then((result) => {\n if (result) {\n const uri = new URI(url);\n\n if (options.params) {\n uri.addSearch(options.params);\n }\n\n if (options.hash) {\n uri.hash(options.hash);\n }\n\n const href = uri.href();\n\n if (Utils.isMobile()) {\n // For native mobile, we now support displaying the following local file attachments using the\n // cordova-file-opener2 plugin:\n // .pdf, .txt/.text, .mp3, .mp4, .rtf, .doc, .xls, .ppt, .csv\n // Using links and the inappbrowser plugin is not helpful in this case because on Android\n // the WebView doesn't support these extensions and on iOS there is no back button to get\n // back to the app once the file is opened.\n\n // determine whether it's a supported file extension:\n if (this.canOpenMobileFile(href)) {\n // the given file extension is supported, so we should open it using the fileOpener2 cordova plugin\n // note that the windowName is ignored in this case\n return this.openMobileFile(href);\n }\n\n // The file extension is either not recognized or the file is not local, so go through the\n // inappbrowser cordova plugin\n // on Android tel:, sms:, mailto:, geo: only work if the windowName is _system, so as the workaround\n // re-set the windowName to _system only if it hasn't been specifically set by the user\n if (href.match(SPECIAL_URLS_REGEX) && !options.windowName) {\n windowName = '_system';\n }\n\n window.open(href, windowName);\n } else if (windowName === '_self') {\n // When operating on the same window in a web app, use replace or assign depending on the history setting\n if (options.history === 'replace') {\n window.location.replace(href);\n } else {\n window.location.assign(href);\n }\n } else {\n window.open(href, windowName);\n }\n }\n\n return Promise.resolve();\n });\n }\n\n /**\n * Navigate back to the previous page in browser history with input parameters.\n *\n * @param {Page} page - the current page instance\n * @param {Object} options - The set of options for the navigateBack action\n * @param {Array} options.params - The input parameters for the page\n * the action is going back to\n */\n navigateBack(page, options) {\n // Since runtimeEnvironment.canNavigateBack and history.back are both async, there is a window\n // where the application could be in a non-busy state during page transition. We close that\n // window here by setting a busy state which will be cleared after page enter.\n this.setBusyState();\n\n // For DT environment, invoke the canNavigatePage with the current page to give a\n // chance to DT to cancel navigation.\n this.application.runtimeEnvironment.canNavigateBack(page.fullPath).then((canNavigate) => {\n if (canNavigate) {\n History.setNavNavBackParams(options.params);\n\n this.doNavigateBack();\n } else {\n this.clearBusyState();\n }\n });\n }\n\n /**\n * Alternate navigate back to the previous page for iOS 11.3\n *\n * @see navigateBack\n * @see doNavigateBack\n */\n doNavigateBackIOS113() {\n // popup out of the existing page\n this.popState();\n // look up the previous page now\n const backPage = this.peekState();\n\n if (backPage) {\n this.router.go(backPage, { historyUpdate: 'skip' });\n } else {\n this.log.warn(' Navigating back from', backPage,\n 'not possible! VBCS does not have the previous page in stack. Please use navigateToPageAction.');\n }\n }\n\n /**\n * Perform the actual navigation back\n * @see navigateBack\n */\n doNavigateBack() {\n History.back();\n }\n\n /**\n * Traverse the router hierarchy to retrieve the current page.\n * The content of the application is made of nested flows and the leaf flow is\n * displaying a page. This routine traverse the hierarchy of flows using the\n * router hierarchy and return the page on the leaf flow.\n *\n * @private\n * @param {Router} rt router\n * @return {Page} the current page\n */\n getPageInternal(rt) {\n if (!rt) {\n return null;\n }\n\n const currentState = rt.currentState();\n if (!currentState) {\n return null;\n }\n\n const id = currentState.id;\n // The container is set in the router configure callback\n const container = currentState.value;\n if (!container || !container.router) {\n return null;\n }\n const childRouter = container.router.getChildRouter(id);\n const page = this.getPageInternal(childRouter);\n if (page) {\n return page;\n }\n\n return container.getContainer(id);\n }\n\n /**\n * Retrieve the currently displayed page\n *\n * @return {Page} the current page\n */\n getCurrentPage() {\n return this.getPageInternal(this.router);\n }\n\n /**\n * Return the container instance for a path. Instance can either be a flow or a page.\n * @param {Container} container the container where the path will be searched\n * @param {String} path the path to search\n * @return {Container} Either a flow or a page\n */\n getContainer(container, path) {\n const index = path.indexOf('/');\n\n if (index > 0) {\n const id = path.substring(0, index);\n return this.getContainer(container.getContainer(id), path.substr(index + 1));\n }\n\n return container.getContainer(path);\n }\n\n /**\n * Build the query parameters representing the current page when using the\n * query router strategy.\n *\n * @param {ojRouter} rt the base router\n */\n buildSearch(rt, params = [], finalParams = []) {\n const currentState = rt.currentState();\n if (currentState) {\n const name = rt.name;\n const id = currentState.id;\n\n params.push({ name, id });\n\n // Default state is not shown on the URL\n if (id !== rt.defaultStateId) {\n finalParams = finalParams.concat(params);\n params = [];\n }\n\n // The container is set in the router configure callback\n const container = currentState.value;\n const childRouter = container.router.getChildRouter(id);\n if (childRouter) {\n return this.buildSearch(childRouter, params, finalParams);\n }\n }\n\n return finalParams;\n }\n\n /**\n * Save the URL parameter on the URL and the input parameter in the browser history\n * @param {String} pagePath the path to the current page\n * @param {boolean} skipUpdateWithRouter whether to skip updating with router query parameters. Used with\n * historyUpdate = \"skip\" for pageNavigation\n */\n updateState(pagePath, skipUpdateWithRouter) {\n if (!skipUpdateWithRouter) {\n // After the router changed the path, reset the URI kept in history to match\n // the rew path\n History.resetUri();\n }\n\n if (this.application.isQueryStrategy()) {\n // if the page navigation is done with historyUpdate = \"skip\", simply use the current location search\n if (!skipUpdateWithRouter) {\n const params = this.buildSearch(this.router);\n params.forEach((param) => {\n History.addUrlParameter(param.name, param.id);\n });\n }\n }\n\n History.setPagePath(pagePath);\n }\n\n /**\n * Calculate the URL of a page or flow given its id path like /pageId/flowId/pageId\n * This is mainly needed to build the return path when calling a the login service.\n * It does not prepend the base URL. When this method is called while loading the\n * application, all existing input parameters are copied to the returned path, this\n * is to preserve the bookmarked data when calling the login service.\n *\n * @param {string} path the path of a page or flow\n * @return {string} the URL to this page or flow\n */\n getUrlFromPath(path = '') {\n // Paths are always absolute. In case the path starts with '/', remove it\n if (path.startsWith('/')) {\n path = path.substring(1);\n }\n\n let uri;\n if (this.application.started) {\n uri = new URI(''); // Create a blank uri\n } else {\n // When loading the the application for the first time, we need to copy the\n // existing request parameters to the return URL\n uri = new URI();\n }\n\n if (this.application.isQueryStrategy()) {\n if (path) {\n const segments = path.split('/');\n let key = ojRouter.defaults.rootInstanceName;\n\n segments.forEach((segment) => {\n uri.addSearch(key, segment);\n key = segment;\n });\n }\n return uri.search();\n }\n\n if (Configuration.appName) {\n return `${path}${uri.search()}`;\n }\n\n return `${Configuration.urlMarker}/${path}${uri.search()}`;\n }\n\n /**\n * Parse the given # into a map of keys and values.\n *\n * @param hash the hash to parse\n * @returns {{}}\n */\n parseFragment(hash) {\n const uri = new URI(hash);\n return URI.parseQuery(uri.fragment());\n }\n\n /**\n * Remove fragment from the current URL is the fragment is an access token.\n * This is done without triggering a refresh.\n */\n static removeAccessTokenFromUrlFragment() {\n const { location } = window;\n const fragment = location.hash;\n\n // Only remove the hash when the fragment is an access token\n if (fragment && !Utils.isMobile()\n && (fragment.indexOf('token_type') > 0 || fragment.indexOf('access_token') > 0)) {\n window.history.replaceState(window.history.state, '', location.pathname + location.search);\n }\n }\n\n /**\n * Add a busy state to the page's busy context during navigation.\n *\n * Note: For now, to keep it simple, we will assume there can be only one busy state outstanding meaning\n * no navigation can happen in the middle of another navigation. We will address that use case in the\n * future.\n */\n setBusyState() {\n if (!this.busyStateResolver) {\n const busyContext = ojContext.getPageContext().getBusyContext();\n this.busyStateResolver = busyContext.addBusyState({ description: 'VB Router' });\n }\n }\n\n /**\n * Clear the outstanding busy state.\n */\n clearBusyState() {\n if (this.busyStateResolver) {\n this.busyStateResolver();\n delete this.busyStateResolver;\n }\n }\n\n /**\n * Determines whether the given file is local and can be opened.\n * @param filePath path to the file to open\n * @returns {boolean} true if the file can be opened; false otherwise\n */\n canOpenMobileFile(filePath) {\n if (!HTTP_FILE_REGEX.test(filePath)) {\n const ext = filePath.substr(filePath.lastIndexOf('.') + 1);\n return !!(ext && SUPPORTED_MOBILE_FILE_TYPES.get(ext));\n }\n\n return false;\n }\n\n /**\n * Retrieves the mime type for the given file. If the file extension is not supported, an empty string\n * is returned back.\n * @param filePath path to the file to open\n * @returns {string} supported mime type for the given file or an empty string otherwise\n */\n getMobileFileExtensionMimeType(filePath) {\n const ext = filePath.substr(filePath.lastIndexOf('.') + 1);\n return ext && SUPPORTED_MOBILE_FILE_TYPES.get(ext) ? SUPPORTED_MOBILE_FILE_TYPES.get(ext) : '';\n }\n\n /**\n * Opens the given file by using the cordova fileOpener2 plugin.\n * @param filePath path to the file to open\n * @returns {Promise} a promise which resolves if the file was successfully opened or rejects otherwise\n */\n openMobileFile(filePath) {\n // get the mime type for the file to open:\n const mimeType = this.getMobileFileExtensionMimeType(filePath);\n\n if (mimeType) {\n return new Promise((resolve, reject) => {\n cordova.plugins.fileOpener2.open(\n filePath,\n mimeType,\n {\n error(msg) {\n reject(msg);\n },\n success() {\n resolve();\n },\n });\n });\n }\n\n // un-supported mime type:\n return Promise.reject('Cannot open unsupported file.');\n }\n }\n\n // Return a singleton object representing the router for this application.\n return new Router();\n});\n\n","'use strict';\n\ndefine('vb/private/mobile/customUrlScheme',['vb/private/configLoader', 'vb/private/stateManagement/router', 'urijs/URI'], (ConfigLoader, Router, URI) => {\n class CustomUrlScheme {\n /**\n * Handles the launch of a native mobile app from a deep link url.\n * The deep link url could be in one of the following formats:\n * mycoolapp://\n * mycoolapp://shell/main/main-start\n * mycoolapp://shell/main/main-start?param1=value1\n * mycoolapp://?param1=value1\n * mycoolapp is used as an example of the custom url scheme here. The custom url scheme is set in the DT\n * automatically and can be changed by the user to whatever they wish as long as it's unique per installed\n * application.\n * For more information about handleOpenUrl please refer to the following cordova plugin:\n * https://github.com/EddyVerbruggen/Custom-URL-scheme\n */\n handleDeepLinkUrl(url) {\n if (!url) {\n return;\n }\n\n const userConfig = ConfigLoader.userConfig;\n if (userConfig\n && userConfig.configuration\n && userConfig.configuration.idcsInfo\n && userConfig.configuration.idcsInfo.oAuthRedirectEndpoint\n && url.startsWith(userConfig.configuration.idcsInfo.oAuthRedirectEndpoint)) {\n // handleOpenURL is invoked by IDCS after a successful login while trying to\n // redirect back to the native mobile app\n // in this case handleOpenURL should be ignored\n return;\n }\n\n // cache the url so that it can be handled once the application is initialized\n this.deepLinkUrl = url;\n\n if (Router.application) {\n // the application has already been initialized so handle the deep link url right away:\n this.performNavigationIfNeeded();\n }\n }\n\n /**\n * Navigates to the deep link url. Prior to navigation, convert the pathname from\n * the deep link url to the path parameters, i.e.\n * in the following deep link url 'mycoolapp://shell/main/main-start?param1=value1'\n * the pathname would be '//shell/main/main-start' and it will be transformed to:\n * '?page=shell&shell=main&main=main-start'\n */\n performNavigationIfNeeded() {\n if (this.deepLinkUrl) {\n // unfortunately URL and URI pathname doesn't consistently return the same pathname\n // on both Android and iOS, on Android it returns the origin as 'mycoolapp://'\n // but on iOS it's 'mycoolapp://shell' as a result the pathname becomes incorrect\n // so have to workaround it by removing the protocol and the search if present to end up\n // only with the real pathname\n const deepLinkUrl = new URL(this.deepLinkUrl);\n const { protocol } = deepLinkUrl;\n const { search } = deepLinkUrl;\n const { hash } = deepLinkUrl;\n let pathname = this.deepLinkUrl.replace(protocol, '');\n pathname = pathname.replace(search, '');\n pathname = pathname.replace(hash, '');\n if (pathname && pathname.startsWith('//')) {\n pathname = pathname.substring(2);\n }\n const pathParamsUri = new URI(Router.getUrlFromPath(pathname));\n\n const deepLinkUri = new URI(this.deepLinkUrl);\n deepLinkUri.addSearch(pathParamsUri.search(true));\n const queryParams = deepLinkUri.search();\n\n window.location.href = `index.html${queryParams}`;\n }\n }\n }\n\n return new CustomUrlScheme(); // singleton\n});\n\n","'use strict';\n\ndefine('vb/private/debug/constants',[], () => {\n const Constants = {};\n\n // types for messages used for communicating between the debugger and debuggee\n Constants.MessageType = {\n DEBUGGEE: 'vbDebuggeeMessage', // message from the debuggee\n DEBUGGER: 'vbDebuggerMessage', // message from the debugger\n };\n\n // types for message responses\n Constants.ResponseType = {\n DEBUGGEE: 'vbDebuggeeResponse', // response for a debuggee message\n DEBUGGER: 'vbDebuggerResponse', // response for a debugger message\n };\n\n // types for debuggee\n Constants.DebuggeeType = {\n APPLICATION: 'application',\n ACTION_CHAIN: 'actionChain',\n };\n\n // states for the change event sent to the debugger\n Constants.DebugState = {\n CHAIN_STARTING: 'chainStarting',\n CHAIN_FINISHED: 'chainFinished',\n ACTION_STARTING: 'actionStarting',\n ACTION_RUNNING: 'actionRunning',\n ACTION_SUSPENDED: 'actionSuspended',\n ACTION_FINISHED: 'actionFinished',\n DESCRIPTORS_LOADED: 'descriptorsLoaded',\n };\n\n return Constants;\n});\n\n","'use strict';\n\ndefine('vb/private/debug/debugStream',['vb/private/utils', 'vb/private/debug/constants', 'vb/private/constants'],\n (Utils, DebugConstants, Constants) => {\n /**\n * Stream used to postMessage data to the VB debugger and receive messages from the debugger.\n */\n class DebugStream {\n constructor(type) {\n this.vbConfig = window.vbInitConfig || {};\n\n // unique id for this debug stream\n this.id = Utils.generateUniqueId();\n\n this.type = type;\n\n if (this.isDebuggerInstalled) {\n this.installDebuggeeMessageListener();\n }\n }\n\n /**\n * Returns true if the debugger is installed.\n *\n * @returns {boolean|*}\n */\n get isDebuggerInstalled() {\n return this.vbConfig.debuggerInstalled;\n }\n\n /**\n * Returns true if we are running in actionChain test mode.\n *\n * @returns {boolean}\n */\n get isTestMode() {\n return this.vbConfig.TEST_MODE === Constants.TestMode.ACTION_CHAIN;\n }\n\n /**\n * Returns true if either the debugger is installed or we are running in test mode.\n *\n * @returns {boolean|*|boolean}\n */\n get isEnabled() {\n return this.isDebuggerInstalled || this.isTestMode;\n }\n\n /**\n * Post the given response to the debugger using the given port.\n *\n * @param port the port to post the response\n * @param method the method where the response comes from\n * @param response the response to post\n */\n postDebuggeeResponse(port, method, response) {\n const msg = {\n type: DebugConstants.ResponseType.DEBUGGEE,\n debuggeeId: this.id,\n debuggeeType: this.type,\n method,\n };\n\n Promise.resolve(response)\n .then((result) => {\n msg.success = true;\n msg.result = result;\n port.postMessage(msg);\n })\n .catch((error) => {\n msg.success = false;\n msg.error = JSON.stringify(error);\n port.postMessage(msg);\n });\n }\n\n /**\n * Invoke the method specified in methodInfo on the debug stream and post the response\n * back via the given port.\n *\n * @param methodInfo contains info on how to invoke a method\n * @param port the port used to send the response\n */\n invokeDebuggeeMethod(methodInfo, port) {\n const method = methodInfo.method;\n const args = methodInfo.args || [];\n\n this.postDebuggeeResponse(port, method, this[method](...args));\n }\n\n /**\n * Listen for messages from the debugger to the debuggee.\n */\n installDebuggeeMessageListener() {\n this.debuggeeMsgListener = (event) => {\n const data = event.data;\n const type = data.type;\n\n if (type === 'vbDebuggerUninstalled') {\n this.debuggerUninstalled();\n } else if (type === DebugConstants.MessageType.DEBUGGEE) {\n // make sure it's message from the debugger\n const message = data.message;\n\n // make sure this message is intended for us\n if (message.debuggeeId === this.id) {\n this.invokeDebuggeeMethod(message, event.ports[0]);\n }\n }\n };\n\n window.addEventListener('message', this.debuggeeMsgListener, false);\n }\n\n /**\n * Post the given message from the debuggee to the debugger.\n *\n * @param message the message to post\n * @returns {Promise}\n */\n postDebuggerMessage(message) {\n return new Promise((resolve) => {\n const msgChannel = new MessageChannel();\n\n msgChannel.port1.onmessage = (event) => {\n console.log('Response received from the debugger', event.data);\n const data = event.data;\n\n if (data.success) {\n resolve(data.result);\n } else {\n // ignore all errors from the debugger\n console.log(data.err);\n resolve();\n }\n };\n\n msgChannel.port1.onmessageerror = () => {\n console.log('Failed to send message to the debugger.');\n resolve();\n };\n\n window.postMessage({\n type: DebugConstants.MessageType.DEBUGGER,\n message,\n }, '*', [msgChannel.port2]);\n });\n }\n\n /**\n * Invoke the given method on the debugger.\n *\n * @param method the method to invoke on the debugger\n * @param args the arguments for the method\n * @returns {Promise}\n */\n invokeDebuggerMethod(method, ...args) {\n return this.postDebuggerMessage({\n debuggeeId: this.id,\n method,\n args,\n });\n }\n\n /**\n * Register this debug stream as a debuggee with the debugger.\n *\n * @param context the context for the debuggee\n * @returns {Promise}\n */\n registerDebuggee(context) {\n return this.invokeDebuggerMethod('registerDebuggee', this.type, context);\n }\n\n /**\n * Fire a state changed event to the debugger.\n *\n * @param state new state\n * @param data data associated with the new state\n * @returns {Promise}\n */\n fireStateChanged(state, data) {\n if (this.isDebuggerInstalled) {\n const event = {\n state,\n data,\n };\n return this.invokeDebuggerMethod('fireStateChanged', event);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Called when the debugger is uninstalled.\n */\n debuggerUninstalled() {}\n\n /**\n * Dispose this debug stream.\n */\n dispose() {\n // unregister the message listener for messages from the debugger\n if (this.debuggeeMsgListener) {\n window.removeEventListener('message', this.debuggeeMsgListener);\n }\n }\n\n /**\n * This method is used to sanitize objects that cannot be serialized via postMessage.\n *\n * @param source object to sanitize\n * @returns {*}\n */\n static sanitize(source) {\n // if source is an extended typed object such as a SDP, clone its internal value state instead\n if (Utils.isExtendedType(source)) {\n return DebugStream.cloneObject(source.value);\n }\n\n // if source is a function, return its string representation\n if (typeof source === 'function') {\n return source.toString();\n }\n\n // map the Headers object to a plain object\n if (source instanceof Headers) {\n const headers = {};\n\n for (const entry of source.entries()) {\n if (entry && entry.length >= 2) {\n // lower case header names so we can assert the headers in a canonical way\n headers[entry[0].toLowerCase()] = entry[1];\n }\n }\n\n return headers;\n }\n\n // for non-plain objects, return its string representation\n // TODO: should we call JSON.stringify instead?\n if (source && !Utils.isPrimitive(source) && !Utils.isPrototypeOfObject(source)) {\n return source.toString();\n }\n\n return source;\n }\n\n /**\n * Specialized cloneObject that also sanitizes the object so it can be serialized via postMessage.\n *\n * @param source source to clone\n * @param destination\n * @returns {*}\n */\n static cloneObject(source, destination) {\n let target = destination;\n\n // determine what to do if destination is not specified\n if (typeof destination === 'undefined') {\n if (!Utils.isCloneable(source)) {\n return DebugStream.sanitize(source);\n }\n\n // otherwise create the right target\n target = Array.isArray(source) ? [] : {};\n }\n\n for (const name in source) {\n const copy = source[name];\n const src = target[name];\n let clone;\n\n // Prevent never-ending loop\n if (target === copy) {\n return target;\n }\n\n // Recurse if we're merging plain objects or arrays\n\n const copyIsArray = Array.isArray(copy);\n if (Utils.isCloneable(copy)) {\n if (copyIsArray) {\n // always clone into an empty array instead of overwriting the original\n clone = [];\n } else {\n clone = src && Utils.isObject(src) ? src : {};\n }\n\n // Never move original objects, clone them\n target[name] = DebugStream.cloneObject(copy, clone);\n\n // Don't bring in undefined values\n } else {\n target[name] = DebugStream.sanitize(copy);\n }\n }\n\n return target;\n }\n }\n\n return DebugStream;\n });\n\n","'use strict';\n\ndefine('vb/private/debug/applicationDebugStream',['vb/private/debug/debugStream', 'vb/private/utils', 'vb/private/debug/constants', 'vb/private/configuration'],\n (DebugStream, Utils, DebugConstants, Configuration) => {\n /**\n * Debug stream for the application.\n */\n class ApplicationDebugStream extends DebugStream {\n constructor() {\n super(DebugConstants.DebuggeeType.APPLICATION);\n\n // a map of all the loaded descriptors\n this.loadedDescriptorMap = {};\n\n this.installDebuggeeMessageListener();\n }\n\n /**\n * Perform hand shake with the debugger. It performs the following:\n * 1. determine if the debugger is actually installed, if so, set vbInitConfig.debuggerInstalled to true\n * 2. register all the currently loaded JSON descriptors with the debugger.\n * @returns {Promise}\n */\n handShake() {\n return this.invokeDebuggerMethod('handShake').then((debuggerInstalled) => {\n if (debuggerInstalled) {\n console.log('Debugger hand shake successful', debuggerInstalled);\n window.vbInitConfig.debuggerInstalled = true;\n\n // register with the debugger and send over the loaded descriptors without waiting\n this.registerDebuggee()\n .then(() => this.descriptorsLoaded(this.loadedDescriptorMap));\n }\n\n return debuggerInstalled;\n }).catch((err) => {\n // ignore error\n });\n }\n\n /**\n * Register with the debugger.\n *\n * @returns {Promise}\n */\n registerDebuggee() {\n // clone and sanitize window.vb before sending it over to the debugger\n const vb = DebugStream.cloneObject(window.vb);\n const vbInitConfig = DebugStream.cloneObject(window.vbInitConfig);\n\n const context = {\n vb,\n vbInitConfig,\n debuggerState: this.loadDebuggerState(),\n };\n\n return super.registerDebuggee(context);\n }\n\n /**\n * Getter for the debugger state storage id.\n *\n * @returns {string}\n */\n get debuggerStateStorageId() {\n // use the application url to create an unique storage id since the local storage is shared for a\n // given domain\n if (!this.storageId) {\n this.storageId = `vb-debugger-state-${Configuration.applicationUrl}`;\n }\n\n return this.storageId;\n }\n\n /**\n * Load the debugger state from local storage.\n *\n * @returns {Object}\n */\n loadDebuggerState() {\n const debuggerStateJsonStr = localStorage.getItem(this.debuggerStateStorageId);\n const debuggerState = debuggerStateJsonStr ? JSON.parse(debuggerStateJsonStr) : {};\n\n return debuggerState;\n }\n\n /**\n * Persist the given debugger state to local storage.\n *\n * @param debuggerState the debugger state to persist\n */\n storeDebuggerState(debuggerState) {\n localStorage.setItem(this.debuggerStateStorageId, JSON.stringify(debuggerState));\n }\n\n /**\n * Update the debugger state for the given locator which results in a write to local storage.\n *\n * @param locator locator for the debugger state\n * @param state new state\n */\n updateDebuggerState(locator, state) {\n const debuggerState = this.loadDebuggerState();\n\n debuggerState[locator] = state;\n\n this.storeDebuggerState(debuggerState);\n }\n\n /**\n * Register a single loaded descriptor.\n *\n * @param url url for the descriptor\n * @param descriptor loaded descriptor\n * @param container container that loaded the descriptor\n */\n descriptorLoaded(url, descriptor, container) {\n let descUrl;\n if (container.className === 'Page') {\n descUrl = `${url}-page.json`;\n } else {\n descUrl = `${url}-flow.json`;\n }\n\n this.loadedDescriptorMap[descUrl] = descriptor;\n\n // Because the container descriptor can be dynamically updated when a file-based chain is loaded,\n // we need to update the debugger with the updated descriptor.\n if (this.isDebuggerInstalled) {\n return this.descriptorsLoaded({\n [descUrl]: descriptor,\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Register the loaded descriptors with the debugger.\n *\n * @param descriptors a map of descriptors indexed by their urls\n * @returns {Promise}\n */\n descriptorsLoaded(descriptors) {\n return this.fireStateChanged(DebugConstants.DebugState.DESCRIPTORS_LOADED, descriptors);\n }\n }\n\n // return a singleton so it's visible application wide\n return new ApplicationDebugStream();\n });\n\n","\ndefine('text!vbVersions/versions.json',[],function () { return '{\\n \"visualDevelopmentPlatform\": {\\n \"version\": \"2107.0.2\",\\n \"sprint\": \"Beetal\",\\n \"commit\": \"c9e26ba4a 2021-05-24T19:00:56-07:00\"\\n },\\n \"jet\": {\\n \"version\": \"10.0.5\",\\n \"cdnPath\": \"https://static.oracle.com/cdn/jet/\",\\n \"revision\": \"2021-05-05_12-22-23\"\\n },\\n \"workbox\": {\\n \"version\": \"6.1.0\",\\n \"cdnPath\": \"https://static.oracle.com/cdn/vb/workbox/releases/\"\\n }\\n}\\n';});\n\n","'use strict';\n\n/**\n * the versions.json is generated in dist/packages, requires using our grunt tasks to generate.\n */\ndefine('vb/versions',['text!vbVersions/versions.json'], (versions) => {\n const vb = JSON.parse(versions);\n\n (function () {\n window.vb = vb.visualDevelopmentPlatform;\n window.vb.jet = vb.jet;\n window.vb.workbox = vb.workbox;\n }());\n\n return vb;\n});\n\n","'use strict';\n\ndefine('vb/private/rtEnvConfig',[], () => {\n class RtEnvConfig {\n constructor() {\n const config = RtEnvConfig.getCommunicationConfig(window.vbInitConfig || {}, window.location.href);\n\n this.module = config.module;\n this.environmentClass = config.environmentClass;\n\n // Configure the require so that \"vbRuntimeEnvironmentClass\" maps to the environment class\n requirejs.config({\n map: {\n '*': {\n vbRuntimeEnvironmentClass: config.environmentClass,\n },\n },\n });\n }\n\n /**\n * This function retrieve the configuration for the communication channel between DT and RT.\n *\n * @returns {{environmentClass: String, module: String}} the config object for the communication channel\n * environmentClass the class that should be mapped to 'vbRuntimeEnvironmentClass' in the requireConfig\n * mapping. It allows DT to change the implementation of the runtimeEnvironment. The value can be undefined,\n * in which case the runtime dummy implementation is used. (See the buildRequireConfig function)\n * module is of the library provided by DT to communicate with RT when an application runs inside DT,\n * like preview or live mode. It can be undefined, in that case no library is loaded.\n */\n static getCommunicationConfig(vbInitConfig, url) {\n const initConfig = Object.assign({}, vbInitConfig);\n const config = {\n // By default uses the Runtime implementation\n environmentClass: initConfig.RUNTIME_ENV_CLASS || 'vb/private/helpers/runtimeEnvironment',\n module: '',\n };\n\n try {\n if (initConfig.EDITOR_URL && url) {\n const { searchParams } = new URL(url);\n const vbComChannelUrl = searchParams.get('vbdt:editModeComChannelUrl');\n const vbRuntimeEnvClass = searchParams.get('vbdt:editModeComChannelClass');\n if (vbComChannelUrl && vbRuntimeEnvClass) {\n // For the channel URL to be correct, it has to starts with the EDITOR_URL\n // even if the port is not the same.\n if (!vbComChannelUrl.startsWith(initConfig.EDITOR_URL)) {\n try {\n const editorUrl = new URL(initConfig.EDITOR_URL);\n // Remove the potential port from the editor URL\n const noPortEditorUrl = `${editorUrl.protocol}//${editorUrl.hostname}${editorUrl.pathname}`;\n if (!vbComChannelUrl.startsWith(noPortEditorUrl)) {\n return config;\n }\n } catch (err) {\n console.warn('Invalid Editor URL:', initConfig.EDITOR_URL);\n return config;\n }\n }\n\n // Export the URL of the communication module\n config.module = vbComChannelUrl;\n config.environmentClass = vbRuntimeEnvClass;\n }\n }\n } catch (err) {\n // This is to catch when IE throws on new URL\n // DT does not run on IE either so we're fine.\n }\n\n return config;\n }\n }\n\n return RtEnvConfig;\n});\n\n","'use strict'\n\n/**\n * simple polyfills for IE11, Safari, etc.\n * Object.assign\n * Object.entries\n * ObjectValues\n * String.startsWith\n * String.endsWith\n * Symbol\n */\n\n/**\n * Object.assign\n *\n */\nif (typeof Object.assign != 'function') {\n\n Object.defineProperty(Object, \"assign\", {\n // .length of function is 2\n value: function assign(target, varArgs) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined/null to object');\n }\n\n var targetObj = Object(target);\n\n // for each argument, assign the source prop to the target using in/hasOwnProperty\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n for (var nextKey in nextSource) {\n // don't called 'shadowed' hasProperty\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n targetObj[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return targetObj;\n },\n writable: true,\n configurable: true\n });\n}\n\n\n/**\n * Object.entries\n * uses Object.keys\n */\nif (!Object.entries)\n Object.entries = function( obj ){\n var ownProps = Object.keys( obj );\n var i = ownProps.length;\n var resArray = new Array(i);\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n\n return resArray;\n };\n\n\n/**\n * String.startsWith\n */\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(toFind, fromPos) {\n return this.substr(fromPos || 0, toFind.length) === toFind;\n };\n}\n\n/**\n * String.endsWith\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill\n */\n\nif (!String.prototype.endsWith)\n String.prototype.endsWith = function(toFind, fromPos) {\n if (!(fromPos < this.length)) {\n fromPos = this.length;\n }\n else {\n fromPos |= 0;\n }\n return this.substr(fromPos - toFind.length,\n toFind.length) === toFind;\n };\n\n/**\n * String.includes\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill\n */\nif (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > this.length) {\n return false;\n } else {\n return this.indexOf(search, start) !== -1;\n }\n };\n}\n\nNumber.isNaN = Number.isNaN || function (number) {\n return typeof number === 'number' && isNaN(number); // eslint-disable-line no-restricted-globals\n};\n\n/**\n * Object.values\n *\n * could use work, could be simplified\n */\nif (!Object.values) {\n var isEnumerable = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n var concat = Function.bind.call(Function.call, Array.prototype.concat);\n var keys;\n if (typeof Reflect === 'object' && typeof Reflect.ownKeys === 'function') {\n // not sure when this would take effect\n keys = Reflect.ownKeys;\n } else if (typeof Object.getOwnPropertySymbols === 'function') {\n // safar 9.1, others?\n keys = function Reflect_ownKeys(o) {\n return (\n Object.getOwnPropertyNames(o).concat(Object.getOwnPropertySymbols(o))\n );\n }\n } else {\n // ie11\n keys = Object.getOwnPropertyNames;\n }\n\n Object.values = function values(O) {\n var k = keys(O);\n try {\n var val = k.reduce(function (v, k) {\n return concat(v, typeof k === 'string' && isEnumerable(O, k) ? [O[k]] : []);\n }, []);\n return val;\n }\n catch(e) {\n console.error(e);\n }\n return [];\n };\n}\n\n\n/**\n * Array.includes\n * https://tc39.github.io/ecma262/#sec-array.prototype.includes\n */\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, 'includes', {\n value: function(searchElement, fromIndex) {\n\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (If fromIndex is undefined, this step produces the value 0.)\n var n = fromIndex | 0;\n\n // 5. If n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. If k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat, while k < len\n while (k < len) {\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\n // b. If SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n }\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return kValue.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return undefined.\n return undefined;\n },\n configurable: true,\n writable: true,\n });\n}\n\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return k.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return k;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return -1.\n return -1;\n },\n configurable: true,\n writable: true\n });\n}\n\n// Production steps of ECMA-262, Edition 6, 22.1.2.1\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from\nif (!Array.from) {\n Array.from = (function () {\n var toStr = Object.prototype.toString;\n var isCallable = function (fn) {\n return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n };\n var toInteger = function (value) {\n var number = Number(value);\n if (isNaN(number)) { return 0; }\n if (number === 0 || !isFinite(number)) { return number; }\n return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n };\n var maxSafeInteger = Math.pow(2, 53) - 1;\n var toLength = function (value) {\n var len = toInteger(value);\n return Math.min(Math.max(len, 0), maxSafeInteger);\n };\n\n // The length property of the from method is 1.\n return function from(arrayLike/*, mapFn, thisArg */) {\n // 1. Let C be the this value.\n var C = this;\n\n // 2. Let items be ToObject(arrayLike).\n var items = Object(arrayLike);\n\n // 3. ReturnIfAbrupt(items).\n if (arrayLike == null) {\n throw new TypeError('Array.from requires an array-like object - not null or undefined');\n }\n\n // 4. If mapfn is undefined, then let mapping be false.\n var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\n var T;\n if (typeof mapFn !== 'undefined') {\n // 5. else\n // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\n if (!isCallable(mapFn)) {\n throw new TypeError('Array.from: when provided, the second argument must be a function');\n }\n\n // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 2) {\n T = arguments[2];\n }\n }\n\n // 10. Let lenValue be Get(items, \"length\").\n // 11. Let len be ToLength(lenValue).\n var len = toLength(items.length);\n\n // 13. If IsConstructor(C) is true, then\n // 13. a. Let A be the result of calling the [[Construct]] internal method\n // of C with an argument list containing the single item len.\n // 14. a. Else, Let A be ArrayCreate(len).\n var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n\n // 16. Let k be 0.\n var k = 0;\n // 17. Repeat, while k < len… (also steps a - h)\n var kValue;\n while (k < len) {\n kValue = items[k];\n if (mapFn) {\n A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n } else {\n A[k] = kValue;\n }\n k += 1;\n }\n // 18. Let putStatus be Put(A, \"length\", len, true).\n A.length = len;\n // 20. Return A.\n return A;\n };\n }());\n}\n\nif (!Math.sign) {\n Math.sign = function(x) {\n // If x is NaN, the result is NaN.\n // If x is -0, the result is -0.\n // If x is +0, the result is +0.\n // If x is negative and not -0, the result is -1.\n // If x is positive and not +0, the result is +1.\n return ((x > 0) - (x < 0)) || +x;\n };\n}\n\n/**\n * Symbol - very simple polyfill, just enough to run\n */\n\nif (!window.Symbol) {\n window.Symbol = function(name) {\n return '_' + name;\n };\n window.Symbol.iterator = 'iterator';\n}\n\n// finally is missing in ios safari promise implementation\nif (window.Promise && !Promise.prototype.finally) {\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback())\n .then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback())\n .then(function () {\n throw reason;\n });\n });\n };\n}\n;\ndefine(\"vb/private/polyfills\", function(){});\n\n","\n/* global cordova:false */\n\n'use strict';\n\n// Wrap the code in a closure in order to hide it from global scope\n(function main() {\n // only time reading from the window will be allowed - so we can specify the bootstrap individually\n // across different applications\n const VB_CONF = window.vbInitConfig || {};\n\n if (VB_CONF.IS_MOBILE) {\n /**\n * Handles the launch of a native mobile app from a deep link url. Has to be defined as early as possible.\n * It is important to notice that this code registers the handleOpenURL but it does not execute anything yet.\n * This is why the content of the function can call requirejs, because at that point when the code is executed\n * (when the handleOpenURL callback is called), requirejs has been configured, this is why we can use the\n * ‘vb/...’ path.\n * @param url deep link url\n */\n window.handleOpenURL = (url) => {\n console.log(`handleOpenURL is invoked with: ${url}`);\n requirejs(['vb/private/mobile/customUrlScheme'], (MobileCustomUrlScheme) => {\n MobileCustomUrlScheme.handleDeepLinkUrl(url);\n });\n };\n }\n\n const vbRuntime = `visual-runtime${VB_CONF.DEBUG ? '-debug' : ''}.js`;\n // Look up the root location from where this script is loaded which is used to construct the url for\n // loading the vbcs-icon-font.css.\n const scriptSrc = document.currentScript.src;\n const scriptRoot = scriptSrc.substring(0, scriptSrc.indexOf(vbRuntime));\n // start injected shared scripts\n /**\n * Based on the location and vbInitConfig parameters, calculates the application URL. The underlying assumption\n * here is that the worker (for example, sw.js) is registered at the same location as index.html.\n * Depending on the existence of the marker 'vp' in the URL, the application URL can take two values:\n * 1) If the marker is not in the URL, the application URL is the current path.\n * 2) Otherwise the application URL is the part of the URL before the marker.\n *\n * This URL can be different from the base URL used to retrieve the application resource.\n * This is will be used by the router sync navigation state and URL and service worker to cache app resources\n * @param {*} loc Window.location or WorkerGlobalScope.location\n * @param {*} vbInitConfig application configuration\n * @param {*} urlMarker (optional) the urlMarker is defined here and the Configuration class is used to access it\n */\n const calculateApplicationUrl = (loc, vbInitConfig = {}, urlMarker = 'vp') => {\n const appName = vbInitConfig.APP_NAME;\n\n if (appName) {\n // Match the first occurrence of /appName/ or ending with /appName\n const regex = new RegExp(`/${appName}$|/${appName}/`, 'g');\n const result = regex.exec(loc.pathname);\n\n if (result) {\n let appUrl = loc.origin + loc.pathname.substring(0, result.index + 1 + appName.length);\n // Make sure to terminate with a '/'\n if (appUrl.slice(-1) !== '/') {\n appUrl += '/';\n }\n\n return appUrl;\n }\n }\n // Retrieve the URL without search or hash. Depending on context, pathname can be:\n // - /ic/builder/rt/rx/1.0/webApps/abc/ on the main thread\n // - /ic/builder/rt/rx/1.0/webApps/abc/sw.js in the service worker context\n // - /context.html or /debug.html for unit test\n let appUrl = loc.origin + loc.pathname;\n const visualIndex = appUrl.indexOf(`/${urlMarker}/`);\n\n // Make sure that we either have .../vp/... or it ends with /vp\n if (visualIndex > 0) {\n appUrl = appUrl.substring(0, visualIndex + 1);\n } else if (appUrl.substring(appUrl.length - urlMarker.length - 1) === `/${urlMarker}`) {\n appUrl = appUrl.substring(0, appUrl.length - urlMarker.length - 1);\n } else {\n // Location path might end with a resource\n // eslint-disable-next-line no-restricted-syntax\n for (const r of ['index.html', 'sw.js', 'debug.html', 'context.html']) {\n const resourceIndex = appUrl.indexOf(r);\n if (resourceIndex > 0) {\n appUrl = appUrl.substring(0, resourceIndex);\n break;\n }\n }\n }\n\n // Make sure to terminate with a '/'\n if (!appUrl.endsWith('/')) {\n appUrl += '/';\n }\n return appUrl;\n };\n /**\n * The base URL is where all the application resources are loaded from.\n * @param {*} vbInitConfig application configuration\n * @param {*} applicationUrl calculated application URL\n * @return {String} the baseUrl\n */\n const getBaseUrlFromConfig = (vbInitConfig, applicationUrl) => {\n // For mobile, the base URL can only be relative to application URL because\n // application resource are always stored locally\n if (vbInitConfig.IS_MOBILE) {\n return applicationUrl;\n }\n // If BASE_URL is defined in vbInitConfig, we use it as-is.\n let baseUrl = vbInitConfig.BASE_URL;\n // If not defined, the base URL is a combination of application URL and BASE_URL_TOKEN\n if (!baseUrl) {\n baseUrl = applicationUrl;\n let baseUrlToken = vbInitConfig.BASE_URL_TOKEN;\n if (baseUrlToken) {\n // When using vanity URL, BASE_URL_TOKEN starts with '/'\n if (baseUrlToken[0] === '/') {\n baseUrlToken = baseUrlToken.substring(1);\n }\n baseUrl = `${baseUrl}${baseUrlToken}`;\n }\n }\n // Make sure to terminate with a '/', because BASE_URL or BASE_URL_TOKEN might not be\n if (!baseUrl.endsWith('/')) {\n baseUrl += '/';\n }\n return baseUrl;\n };\n\n // end injected shared scripts\n const configuration = {\n // Hold a copy of this function for testing\n calculateApplicationUrl,\n\n appName: VB_CONF.APP_NAME,\n\n // Store the URL marker\n // The urlMarker is defined here and the Configuration class is used to access its value\n urlMarker: 'vp',\n\n // Calculate the value once\n applicationUrl: calculateApplicationUrl(window.location, VB_CONF),\n\n getBaseUrlFromConfig,\n };\n\n /**\n * Build the config object that will be used by requirejs.config\n * This object is built in multiple phase.\n * @param {Boolean} isMobile true if in mobile environment\n * @return {Object} a require config object\n */\n function buildRequireConfig(isMobile) {\n const requireConfig = {\n config: {\n text: {\n // allow cross-domain requests\n // remote server allows CORS\n useXhr: () => true,\n },\n },\n };\n\n // Since we set require baseUrl, this value can later be retrieved by calling requirejs.toUrl('')\n // Note: Don't set the baseUrl when running in action chain test mode since the baseUrl should be one\n // set up by the tests.\n if (VB_CONF.TEST_MODE !== 'actionChain') {\n requireConfig.baseUrl = configuration.getBaseUrlFromConfig(VB_CONF, configuration.applicationUrl);\n }\n\n requireConfig.map = {\n '*': {\n /* built in types */\n 'vb/ServiceDataProvider': 'vb/private/types/serviceDataProvider',\n 'vb/ServiceDataProvider2': 'vb/private/types/dataProviders/serviceDataProvider2',\n 'vb/MultiServiceDataProvider': 'vb/private/types/multiServiceDataProvider',\n 'vb/MultiServiceDataProvider2': 'vb/private/types/dataProviders/multiServiceDataProvider2',\n 'vb/ArrayDataProvider': 'vb/private/types/arrayDataProvider',\n 'vb/ArrayDataProvider2': 'vb/private/types/arrayDataProvider2',\n 'vb/MetadataDescriptor': 'vb/private/types/metadataDescriptor',\n 'vb/DefaultSecurityProvider': isMobile\n ? 'vb/private/types/mobileDefaultSecurityProvider' : 'vb/private/types/defaultSecurityProvider',\n 'vb/Personalization': 'vb/private/types/personalization',\n 'vb/DefaultPersonalizationProvider': 'vb/types/personalizationProvider',\n // For backward compatibility\n 'vb/UserSecurityProvider': 'vb/private/types/defaultSecurityProvider',\n 'vb/RestHookHandler': 'vb/helpers/restHookHandler',\n 'vb/extensions/process/ProcessDataProvider': 'vb/extensions/process/private/types/processDataProvider',\n /* built in transforms */\n // todo: remove ServiceRampTransforms when DT has caught up\n 'vb/ServiceRampTransforms': 'vb/private/services/ramp/rampTransforms',\n 'vb/BusinessObjectsTransforms': 'vb/private/services/ramp/rampTransforms',\n\n // dynamic UI\n 'vb/FactoryMetadataProviderDescriptor': 'vb/private/types/factoryMetadataProviderDescriptor',\n 'vb/extensions/dynamic/ServiceMetadataProviderFactory':\n 'vb/extensions/dynamic/private/factories/serviceMetadataProviderFactoryBridge',\n 'vb/extensions/dynamic/JsonMetadataProviderFactory':\n 'vb/extensions/dynamic/private/factories/jsonMetadataProviderFactoryBridge',\n 'vb/extensions/dynamic/DynamicLayoutMetadataProviderFactory':\n 'vb/extensions/dynamic/private/factories/dynamicLayoutMetadataProviderFactoryBridge',\n // dynamic UI \"metadata\" variable types\n 'vb/JsonMetadataProviderDescriptor':\n 'vb/extensions/dynamic/private/types/jsonMetadataProviderDescriptor',\n 'vb/ServiceMetadataProviderDescriptor':\n 'vb/extensions/dynamic/private/types/serviceMetadataProviderDescriptor',\n 'vb/DynamicLayoutMetadataProviderDescriptor':\n 'vb/extensions/dynamic/private/types/dynamicLayoutMetadataProviderDescriptor',\n 'vb/ContainerMetadataProviderDescriptor':\n 'vb/extensions/dynamic/private/types/containerMetadataProviderDescriptor',\n 'vb/HeterogeneousMetadataProviderDescriptor':\n 'vb/extensions/dynamic/private/types/heterogeneousMetadataProviderDescriptor',\n\n main: 'vb/main',\n vbIconFontCss: `css!${scriptRoot}resources/vb-icon-font`,\n\n // for backwards compatibility with the opt prefix\n opt: 'persist',\n },\n };\n\n return requireConfig;\n }\n\n /**\n * Detect if we have the chrome debugger extension installed.\n */\n function debuggerHandShake() {\n // only install the listener for chrome\n if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n window.addEventListener('message', (event) => {\n const data = event.data;\n const type = data.type;\n\n if (type === 'vbDebuggerHandShake') {\n // If we get a hand shake message, invoke handShake method on the debugger to make\n // sure it's installed. Also import versions to initialize the version data since it needs to\n // communicated to the debugger during hand shake.\n requirejs(['vb/private/debug/applicationDebugStream', 'vb/versions'], (ApplicationDebugStream) => {\n ApplicationDebugStream.handShake();\n });\n } else if (type === 'vbDebuggerUninstalled') {\n console.log('Debugger extension uninstalled');\n VB_CONF.debuggerInstalled = false;\n }\n }, false);\n }\n }\n\n // It is possible that window.vbInitConfig is not defined and that requirejs has\n // already been configured, in that case, skip the configuration\n if (Object.keys(VB_CONF).length > 0) {\n // Call requirejs.config once with the complete configuration\n requirejs.config(buildRequireConfig(VB_CONF.IS_MOBILE));\n }\n\n function getServiceWorkerManagerClass(Utils) {\n let swmClass = 'vbsw/private/serviceWorkerManagerClass';\n // make sure window.vb is defined\n return Utils.getResource('vbc/private/pwa/pwaUtils')\n .then((pwaUtils) => {\n // Even if this is a PWA, don't enable Service Worker in DT preview\n if (!VB_CONF.IS_DT_MODE && pwaUtils.isWebPwaConfig(VB_CONF)) {\n swmClass = 'vb/private/pwa/pwaServiceWorkerManagerClass';\n }\n return Utils.getResource(swmClass);\n });\n }\n\n function installServiceWorkers(Utils, config, Configuration) {\n // skip install service worker if skipInstall is set to true\n if (VB_CONF.SERVICE_WORKER_CONFIG && VB_CONF.SERVICE_WORKER_CONFIG.skipInstall) {\n return Promise.resolve();\n }\n let swmInstance;\n return getServiceWorkerManagerClass(Utils)\n .then((SWManagerClass) => {\n swmInstance = new SWManagerClass();\n return Utils.getResource('vbsw/private/serviceWorkerManager');\n })\n .then((swm) => {\n swm.setInstance(swmInstance);\n return swm.getInstance().installServiceWorkers(scriptRoot, config, Configuration);\n })\n .then(() => swmInstance)\n .then((serviceWorkerManager) => serviceWorkerManager.installOfflineHandler(config));\n }\n\n /**\n * Require the library to communicate with DT when an application runs inside DT.\n * This needs to be done before other RT libraries in order for page preview to work in DT\n * @param {function} initRt a callback to invoke Runtime initialization\n */\n function initRtDtEnv(initRt) {\n // Require the library to communicate with DT when an application runs inside DT.\n // This needs to be done before other library for page preview to work\n requirejs(['vb/private/rtEnvConfig'], (RtEnvConfig) => {\n const rtModule = RtEnvConfig && new RtEnvConfig().module;\n if (rtModule) {\n // This is when running in DT environment\n requirejs([rtModule], initRt);\n } else {\n initRt();\n }\n });\n }\n\n function init() {\n // detect chrome debugger extension\n debuggerHandShake();\n\n // Init RtDt environment first then continue with RT initalization\n initRtDtEnv(() => {\n requirejs(['promise', 'vb/private/constants', 'vb/private/polyfills'], (Promise, Constants) => {\n // first make sure Promise is polyfilled - this is taken from ojcore.js\n // this code executes before ojcore in included/required, so we need to make sure the es6-promise is loaded\n Promise['polyfill'](); // eslint-disable-line dot-notation\n\n if (VB_CONF.TEST_MODE === Constants.TestMode.WEBDRIVER) {\n // for security reason, we'll only enable loading of vb-test-utils.js if the application has\n // vbInitConfig.TEST_MODE set to webdriver\n requirejs.config({\n paths: {\n vbtu: `${scriptRoot}vb-test-utils`,\n },\n bundles: {\n vbtu: ['vbtu/testUtils'],\n },\n });\n }\n\n requirejs(['vb/private/utils', 'vb/private/configuration', 'vb/private/configLoader'],\n (Utils, Configuration, ConfigLoader) => {\n Configuration.init(configuration);\n\n if (VB_CONF.TEST_MODE === Constants.TestMode.ACTION_CHAIN) {\n // when running in action chain test mode, skip bootstrapping the application\n console.log('Starting VB in action chain test mode.');\n\n // send a message to the action chain tester to start running the test\n window.postMessage({\n type: 'vbActionChainTesterHandShake',\n }, window.location.origin);\n } else {\n // install service worker, then load application configuration\n ConfigLoader.init()\n .then((config) => installServiceWorkers(Utils, config, Configuration)\n .then(() => Utils.getResource('vb/bootstrap'))\n .then((bootstrap) => bootstrap()));\n }\n });\n });\n });\n }\n\n /**\n * Initialize the Cordova plugin used with the device Virtual Keyboard. We put a fix for the following issues:\n * 1. When the virtual keyboard is displayed the Webview needs to be shrunk otherwise the native view will introduce\n * a scrollbar and scroll the top of the WebView off, which will scroll the fixed header off in the app.\n * 2. When the webview is shrunk, any input fields that are near the bottom need to be brought back into viewport.\n * This is because the view port needs to be scrolled by the reduction in size of the webview. Our fix is in html\n * and JS which is similar to the recommended native fix from Apple:\n *\n * https://developer.apple.com/library/archive/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7\n */\n function initVirtualKeyboard() {\n if (window.Keyboard) {\n // Use the keyboard plugin to shrink the webview\n window.Keyboard.shrinkView(true);\n\n const isInViewport = (elem) => {\n const bounding = elem.getBoundingClientRect();\n return (\n bounding.top >= 0\n && bounding.left >= 0\n && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n && bounding.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n };\n\n // setup a listener for 'keyboardDidShow' event to scroll element under keyboard into view\n window.addEventListener('keyboardDidShow', () => {\n const activeElem = document.activeElement;\n // window viewport is bigger than the screen then the viewport has scrollbars\n if (activeElem && (window.innerHeight < window.screen.height)) {\n // use timeout so that the viewport is sized and adjusted by native code first.\n // 100 ms is arbitrary low number to jump over native code in iOS. Android native code adjusts the viewport\n // correctly so the fix is only for iOS, i.e. it does not effect Android.\n window.setTimeout(() => {\n if (!isInViewport(activeElem)) {\n activeElem.scrollIntoView();\n }\n }, 100);\n }\n }, false);\n }\n }\n\n function initMobile() {\n init();\n\n // ensure window.open is set to the inAppBrowser's open API\n window.open = cordova.InAppBrowser.open;\n\n // Apply the JET platform marker class:\n document.body.classList.add(`oj-platform-${cordova.platformId}`);\n navigator.splashscreen.hide();\n\n // Initialize the virtualKeyboard\n initVirtualKeyboard();\n }\n\n /**\n * Return true if we are in the hidden iframe for refreshing the access token.\n *\n * @returns {boolean}\n */\n function inRefreshAuthTokenIframe() {\n try {\n return window.self !== window.top && window.frameElement.id === 'vb-refresh-access-token-iframe';\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Post the access token which should be attached to the URL as a hash back to the parent window.\n */\n function refreshAuthToken() {\n window.parent.postMessage({\n method: 'vbRefreshAuthToken',\n args: [window.location.hash],\n }, window.location.origin);\n }\n\n if (VB_CONF.IS_MOBILE) {\n document.addEventListener('deviceready', initMobile, false);\n } else if (!inRefreshAuthTokenIframe()) {\n init();\n } else {\n refreshAuthToken();\n }\n}());\n\ndefine(\"generated/vb/main\", function(){});\n\n","'use strict';\n\ndefine('vb/action/action',['vb/private/constants', 'vb/private/log', 'vb/private/utils'], (Constants, Log, Utils) => {\n const logger = Log.getLogger('/vb/action/action');\n /**\n * Base class for creating an custom action.\n */\n class Action {\n constructor(id, label) {\n this.log = logger;\n\n // add uniqueness for cases where this is invoked in a called action chain (thus\n // run many times)\n this.id = `${id}_${Utils.generateUniqueId()}`;\n this.label = label || this.id;\n this.logLabel = (this.label === this.id) ? this.id : `${this.label} [${this.id}]`;\n this.metadataKey = id; // the original key from the \"actions\" in the action chain\n }\n\n /**\n * Starts the action and adds default handling.\n *\n * @private\n * @param parameters\n * @returns {Promise}\n */\n start(parameters) {\n // the promise executor function is called immediately (before the Promise constructor returns),\n // so there should be no difference checking isCancelled() outside of the executor\n if (this.isCancelled()) {\n // prevent the action from starting if it's in a cancelled state\n return Promise.reject('cancelled because the page has exited due to navigation');\n }\n\n // call the action - if its a promise, treat it as such, otherwise, just resolve\n return Promise.resolve().then(() => this.perform(parameters))\n .catch((e) => {\n this.log.error('Action', this.logLabel, 'failed.', e);\n let err = e || new Error('error in executing action');\n if (typeof e === 'string') {\n err = new Error(e);\n }\n throw err;\n });\n }\n\n /**\n * Performs an action. This can either run synchronsouly (returning an outcome) or return\n * a promise (which resolves to an outcome). The 'createOutcome' utility method can be used\n * to generate the result in either implemenation.\n *\n * If this returns a promise, rejecting without an outcome will result in the action chain\n * terminating (TODO: we dont yet do this =)).\n *\n * @param parameters\n */\n perform(parameters) {\n throw new TypeError('Subclass needs to override execute method.');\n }\n\n /**\n * This method is used to check if the action is in a cancelled state. An action is cancelled when the underlying\n * page, for example, has exited due to navigation to a different page. This method is used to immediately reject\n * an action before it starts and thus terminating the action chain. An in-flight action can also use this method\n * to terminate itself to prevent unwanted side effects.\n *\n * @returns {boolean}\n */\n isCancelled() {\n // an action chain is cancelled when the underlying container has exited\n return this.containerLifecycleState === Constants.ContainerState.EXITED;\n }\n\n /**\n * Possible action outcome name\n */\n static get Outcome() {\n return {\n SUCCESS: 'success',\n FAILURE: 'failure',\n TRUE: 'true',\n FALSE: 'false',\n };\n }\n\n /**\n * Utility method to create an outcome with the name and payload.\n *\n * @param name The name of the outcome - will determine what action occurs next\n * @param result The optional payload for the result\n */\n static createOutcome(name, result) {\n return { name, result };\n }\n\n /**\n * Utility method to create a 'success' outcome.\n *\n * @param result The optional payload for the result\n */\n static createSuccessOutcome(result) {\n return { name: this.Outcome.SUCCESS, result };\n }\n\n /**\n * Utility method to create a 'failure' outcome.\n *\n * @param summary The optional summary error message, used as the 'summary' in the Message object.\n * @param error The optional Error/exception object\n * @param payload The optional payload for the result, (outcome.result.payload)\n * @returns {{name: string, result: (message: {summary}, error, payload})\n */\n static createFailureOutcome(summary, error, payload) {\n const result = {\n // todo: this should eventually match the JET Message class {detail, severity, summary}\n message: {\n summary,\n },\n error,\n payload,\n };\n return { name: this.Outcome.FAILURE, result };\n }\n }\n\n return Action;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/scopeResolver',['vb/private/constants',\n], (Constants) => {\n class ScopeResolver {\n constructor(map = {}) {\n Object.assign(this, map);\n }\n\n /**\n * Return true if the scope resolves to this.\n * @param {String} scopeName the name of the scope to test\n * @return {Boolean} true is the scope resolves to this\n */\n isThis(scopeName) {\n return this[scopeName] === this[Constants.THIS_PREFIX];\n }\n }\n\n return ScopeResolver;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/stateUtils',[\n 'vb/private/constants',\n 'vb/binding/expression',\n 'vb/private/utils',\n 'vb/private/stateManagement/scopeResolver',\n 'vb/private/log',\n 'acorn',\n 'acorn-walk',\n], (Constants, Expression, Utils, ScopeResolver, Log, Acorn, AcornWalk) => {\n const log = Log.getLogger('/vb/stateManagement/stateUtils');\n\n class StateUtils {\n /**\n * Checks whether the variable definition type is an instance first and then an instanceFactory Type.\n * @param variableDef\n * @param scopeResolver\n * @return {*}\n * @private\n */\n static isVariableDefInstanceFactoryType(variableDef, scopeResolver) {\n const constructorType = StateUtils.getVariableDefConstructorFactoryType(variableDef, scopeResolver);\n return constructorType && Utils.isTypeDefInstanceFactory(constructorType);\n }\n\n /**\n * Returns the constructorType defined on the typedef for the variableDef type, if it exists.\n * @param variableDef\n * @param scopeResolver\n * @return {*}\n */\n static getVariableDefConstructorFactoryType(variableDef, scopeResolver) {\n const isInstanceType = Utils.isInstanceType(variableDef.type);\n const typeInfo = isInstanceType && StateUtils.resolveType(variableDef.type, scopeResolver, true);\n const typeDef = typeInfo && typeInfo.type;\n return typeDef && typeDef.type && typeDef.type.constructorType;\n }\n\n /**\n * Returns the default value of a variable. It uses the type or the definition or the\n * defaultValue property of the variable definition from the descriptor to determine the default\n * value. What is returned can be an object or a function if the defaultValue property is an\n * expression.\n *\n * @param {string} variableName the name of the variable\n * @param {Object} variableDef the definition of the variable from the descriptor.\n * @param {ScopeResolver} scopeResolver the scope resolver object (application, page, ...)\n * @param {Scope} scope the scope\n * @param {Object} completeScopes the entire set of scopes in context\n * @param {string} namespace the variable namespace\n * @returns {Promise} A promise that resolves to the default value\n */\n static createVariableDefaultValue(variableName, variableDef,\n scopeResolver = new ScopeResolver(), scope = null, completeScopes = {}, namespace) {\n return Promise.resolve().then(() => {\n const isInstanceFactoryType = StateUtils.isVariableDefInstanceFactoryType(variableDef, scopeResolver);\n const isInstanceType = Utils.isInstanceType(variableDef.type);\n if (isInstanceFactoryType) {\n // when dealing with instance factory variable create a noop instance temporarily. During variable activate()\n // cycle the real instance will be created\n return StateUtils.createNonInstanceTypeDefaultValue(variableName,\n { type: 'any', defaultValue: variableDef.constructorParams }, scopeResolver, completeScopes);\n }\n\n if (isInstanceType) {\n return StateUtils.instantiateType(variableName, variableDef, scopeResolver, scope, completeScopes, namespace)\n .catch(() => {\n throw new Error(`Unknown built-in type: ${variableDef.type}.`);\n });\n }\n\n return StateUtils.createNonInstanceTypeDefaultValue(variableName, variableDef, scopeResolver, completeScopes);\n });\n }\n\n /**\n * Returns the default value of a variable or a constant when the type is a not an instance type.\n * It uses the type or the definition or the defaultValue property of the variable or constant definition\n * from the descriptor to determine the default value. What is returned can be an object or a function if the\n * defaultValue property is an expression.\n * @param {String} name the name of the variable or constant\n * @param {Object} definition the definition of the variable or constant from the descriptor\n * @param {ScopeResolver} scopeResolver the scope resolver object (application, page, ...)\n * @param {Object} completeScopes the entire set of scopes in context\n * @return {*} the default value\n */\n static createNonInstanceTypeDefaultValue(name, definition, scopeResolver, completeScopes) {\n const type = StateUtils.getType(name, definition, scopeResolver);\n\n // perform a type check on the defaultValue\n const typeCheckInfo = {};\n if (!definition.resolved && !StateUtils.typeCheck(type, definition.defaultValue, typeCheckInfo)) {\n // typeCheckInfo contains info on all the invalid values\n // TODO: Warn the typeCheckInfo for now to avoid logging the error twice. In the future, we should\n // implement a custom exception that can carry the typeCheckInfo\n const message = `Default value for ${name} does not match its type`;\n log.warn(`${message}:`, typeCheckInfo);\n\n throw new Error(`${message}.`);\n }\n\n // build the default value using the type and default value definition\n return StateUtils.buildVariableDefaults(name, completeScopes, type, definition.defaultValue);\n }\n\n /**\n * Returns an object containing 2 properties, both flat array of expressions given a variable config.\n * - original contains the configured expressions.\n * - stripped contains expressions stripped of all spaces for ease of use\n * @param config\n * @param expressions\n * @returns {{original: [], stripped: []}}\n * @private\n */\n static getDepVarExpressions(config, expressions = { original: [], stripped: [] }) {\n if (!config) {\n return expressions;\n }\n if (Expression.isExpression(config)) {\n // track all expressions used within variable configuration\n const expr = Expression.getExpression(config);\n expressions.original.push(expr);\n expressions.stripped.push(expr.replace(Expression.WHITESPACE_REGEX, ''));\n } else if (typeof config === 'object') {\n if (!Array.isArray(config)) {\n Object.keys(config).forEach((prop) => StateUtils.getDepVarExpressions(config[prop], expressions));\n } else {\n config.forEach((subProp) => StateUtils.getDepVarExpressions(subProp, expressions));\n }\n }\n return expressions;\n }\n\n /**\n * Builds a dependency graph of all instance factory variables in current scope.\n * - Walks the JSON for each variable and locates properties containing an expression.\n * - converts the expression to AST to locate the actual variable. builds an array of dependent variables.\n * - later in activate stage this array will be used to lazy load variables in using the dependency order\n *\n * @param variablesDef\n * @param scopeResolver\n * @return {Object} containing 2 properties\n * expressions - Array of (variable) expressions that this variable configuration references\n * variables - Array of Objects representing the referenced variable info; where each Object contains the\n * following properties - scopeName, variableName\n * @see https://astexplorer.net/\n */\n static buildVariablesDependenciesGraph(variablesDef, scopeResolver) {\n const variableDepsMap = {};\n // cache AST trees for expressions that have already been exploded, as an optimization\n const fastASTLookupCache = {};\n // isolate variables that are instance factory types.\n Object.keys(variablesDef).forEach((variableName) => {\n const vDef = variablesDef[variableName];\n const isInstanceFactoryType = StateUtils.isVariableDefInstanceFactoryType(vDef, scopeResolver);\n const config = isInstanceFactoryType ? vDef.constructorParams : vDef.defaultValue;\n const depExprs = StateUtils.getDepVarExpressions(config);\n if (depExprs && depExprs.original.length > 0) {\n variableDepsMap[variableName] = { expressions: depExprs };\n }\n });\n\n // for each variable, parse expressions to isolate the ones with dependent variables\n Object.keys(variableDepsMap).forEach((vDepItem) => {\n const currentVarDeps = variableDepsMap[vDepItem];\n const expressions = variableDepsMap[vDepItem].expressions;\n const stripExprs = (expressions && expressions.stripped) || [];\n stripExprs.forEach((expr) => {\n let exprAST;\n const astCacheForExpr = fastASTLookupCache[expr];\n try {\n exprAST = astCacheForExpr || Acorn.parse(expr, { ecmaVersion: 'latest' });\n if (!astCacheForExpr) {\n fastASTLookupCache[expr] = exprAST;\n }\n AcornWalk.fullAncestor(exprAST, (node, ancestors) => {\n const scopeName = node.name;\n const processNode = (item, parent, grandParent) => {\n if (item.type === 'Identifier' && (Constants.ALL_SCOPES.indexOf(scopeName) !== -1)) {\n currentVarDeps.variables = currentVarDeps.variables || [];\n let parentNode;\n let entry;\n if (scopeName !== '$variables') {\n if (parent && parent.type === 'MemberExpression' && parent.object.name === scopeName\n && parent.property && parent.property.name === 'variables') {\n entry = { scopeName };\n parentNode = grandParent;\n }\n } else {\n entry = {};\n parentNode = parent;\n }\n\n if (parentNode) {\n if (parentNode && parentNode.type === 'MemberExpression') {\n const parentNodeProp = parentNode.property;\n if (parentNodeProp) {\n if (parentNodeProp.type === 'Identifier') {\n entry.variableName = parentNodeProp.name;\n } else if (parentNodeProp.type === 'Literal') {\n entry.variableName = parentNodeProp.value;\n }\n // are there other cases?\n }\n\n if (entry.variableName) {\n currentVarDeps.variables.push(entry);\n }\n }\n }\n }\n };\n\n const reverseWalk = (arr = [], fn) => {\n let l = (arr.length - 1);\n l = l < 0 ? 0 : l;\n while (l) {\n const parent = arr[l - 1] || null;\n const grandParent = arr[l - 2] || null;\n fn(arr[l], parent, grandParent);\n l -= 1;\n }\n };\n\n reverseWalk(ancestors, processNode);\n });\n } catch (e) {\n log.error('Unable to parse expression: ', expr, ', set on variable', vDepItem);\n }\n });\n });\n return variableDepsMap;\n }\n\n /**\n * Parse a string chain id with the format \"scope:id\" and return an array where\n * 1st element is the scope, 2nd is the id.\n * If the expression only contains an id, return the value 'this' for the first\n * element.\n *\n * @param {String} chainId\n * @return {Array} array 1st element is the scope, 2nd is the id\n */\n static parseChain(chainId) {\n const parts = chainId.split(':');\n\n // If the scope is not part of the expression, insert 'this' at the\n // beginning of the array\n if (parts.length === 1) {\n parts.unshift(Constants.THIS_PREFIX);\n }\n\n return parts;\n }\n\n /**\n * Parses a string type with the format <'base'|''|extensionId>/: and returns an object\n * with the following properties:\n * extId: id of the extension where type is defined (if no extension id is provided, this would be undefined)\n * scope: name of the scope where type is defined (if no scope is provided, this would be set to 'this')\n * name: type name\n * @param {String} type referenced type\n * @returns {{ extId: string, scope: string, name: string }}\n */\n static parseType(type) {\n let extId;\n let scope;\n const parsed = Utils.parseQualifiedIdentifier(type, { prefixToken: ':', suffixToken: '' });\n const name = parsed.main;\n\n if (parsed.prefix) {\n let namespace = parsed.prefix;\n // assume 'base' for the extension id, when it starts with a slash\n if (namespace.startsWith('/')) {\n namespace = `${Constants.ExtensionNamespaces.BASE}${namespace}`;\n }\n const parsedPrefix = Utils.parseQualifiedIdentifier(namespace, { prefixToken: '/', suffixToken: '' });\n extId = parsedPrefix.prefix;\n scope = parsedPrefix.main;\n }\n\n if (!scope) {\n // no scope is provided, so set it to 'this'\n scope = Constants.THIS_PREFIX;\n }\n\n return { extId, scope, name };\n }\n\n /**\n * Retrieves the scope in which the given type is defined.\n * @param {Object} scopeResolver a map of scopes object keyed by scope names\n * @param {String} extensionId the extension id in which the given type is defined\n * @param {String} scopeName the name of scope in which the given type is defined\n * @param {String} typeName name of the type definition\n * @returns {null|*} scope in which the given type is defined or null if the scope is not found\n */\n static retrieveScope(scopeResolver, extensionId, scopeName, typeName) {\n if (!extensionId) {\n // no need to traverse, so retrieve the scope\n return scopeResolver[scopeName];\n }\n\n const currentContainer = scopeResolver[Constants.THIS_PREFIX];\n const extendedContainer = currentContainer.base;\n\n if (!extendedContainer) {\n return null;\n }\n\n if (extensionId === extendedContainer.extensionId) {\n // found the container, retrieve the scope only if the type is defined in the\n // interface section as otherwise extensions should not have access to this type:\n const scope = extendedContainer.scopeResolver[scopeName];\n return (scope && scope.isInterfaceType(typeName)) ? scope : null;\n }\n\n // now need to traverse the extension hierarchy until we find the match\n return StateUtils.retrieveScope(extendedContainer.scopeResolver, extensionId, scopeName, typeName);\n }\n\n /**\n * Given a type and a resolver object, fetch the type metadata using the resolver.\n * Return a typeInfo object made of two properties:\n * type: the resolved type or undefined if no resolver matches.\n * scopeResolver: the object where the type was found\n *\n * The context is needed to recursively evaluate type. For example when a type is\n * flow:foo and foo is complex type that uses a type defined in the flow, this type\n * can only be resolved in the context of the flow.\n *\n * @param {String} type the type descriptor\n * @param {Object} scopeResolver a map of scopes object keyed by scope names\n * @param softCheck when true this method does not throw error, which getType does if there is a missing type.\n * Type declarations are missing for extended types for example\n * @return {Object.} an object made of the type metadata and the context of the type\n */\n static resolveType(type, scopeResolver = new ScopeResolver(), softCheck = false) {\n const result = StateUtils.parseType(type);\n const scopeName = result.scope;\n const typeName = result.name;\n const scope = StateUtils.retrieveScope(scopeResolver, result.extId, scopeName, typeName);\n let typeFinal;\n\n if (scope) {\n if (softCheck) {\n typeFinal = scope.hasType(typeName) ? scope.getType(typeName) : undefined;\n } else {\n typeFinal = scope.getType(typeName);\n }\n\n return {\n scopeResolver: scope.scopeResolver,\n type: typeFinal,\n scopeName,\n };\n }\n\n return {};\n }\n\n /**\n * Resolve and load the action chain identified by the given chainId.\n *\n * @param chainId the id for the action chain\n * @param scopeResolver used to resolve the scope of the action chain, e.g., flow:myChain\n * @returns {Promise}\n */\n static resolveChain(chainId, scopeResolver = new ScopeResolver()) {\n return Promise.resolve().then(() => {\n const result = StateUtils.parseChain(chainId);\n const scope = scopeResolver[result[0]];\n\n if (scope) {\n return scope.loadChain(result[1]);\n }\n\n return null;\n });\n }\n\n /**\n * Use the given chainId and scopeResolver to look up the container in which the action chain is defined.\n *\n * @param chainId chain id, e.g., fooChain, page:fooChain, flow:fooChain or application:fooChain\n * @param scopeResolver used to resolve the container\n * @returns {*}\n */\n static resolveContainer(chainId, scopeResolver = new ScopeResolver()) {\n const result = StateUtils.parseChain(chainId);\n\n return scopeResolver[result[0]];\n }\n\n /**\n * Returns type information from the variable (or event) definition.\n * This will resolve all externalized types and denormalize this into a single structured type.\n *\n * A type can be a primitive, i.e. \"string\", \"boolean\", or \"number\".\n *\n * It can also be an object. In this case, the type will be returned as an object, where the keys are the\n * names of the properties, and the values are the types for those keys. The types for keys can also be objects\n * or any other type.\n *\n * A type can also be an array, in which case it will be represented as a single item array where that item\n * describes the type of each item in the array. If the array is an array of primitives, that will be returned as\n * a string such as \"string[]\", \"boolean[]\", or \"number[]\".\n *\n * A type can be an extended type (meaning it is an instance of some class). In this case, the type is the string\n * representation of the module (i.e. \"vb/ServiceDataProvider\").\n * (note: Events do not support builtin types, and disallow those, before calling this).\n *\n * Finally, a type can be a wildcard object. In this case the type is the string, \"object\". If it's an array\n * whose items can be wildcards, this can be explicitly represented as \"object[]\". Note that \"object\" can\n * also be an array or an object otherwise, although the platform will default it to an empty object if no\n * other default value is specified.\n *\n * If the type cannot be derived, this will method will throw an exception.\n *\n * @param variableName\n * @param variableDef the variable definition as defined in json. Built in types which have\n * their own definition may also resolve the definition, and set the resolved type under a\n * 'type' property and also set a 'resolved' boolean property, indicating that the type has\n * been resolved.\n * @param scopeResolver\n * @param referencedTypes\n */\n static getType(variableName, variableDef, scopeResolver = new ScopeResolver(), referencedTypes = {}) {\n if (variableDef.resolved) {\n return variableDef.type;\n }\n\n if (!variableDef || !variableDef.type) {\n throw new Error(`Type for '${variableName}' was not defined.`);\n }\n\n let type = variableDef.type;\n if (typeof type === 'string') {\n type = type.trim();\n\n if (['string', 'boolean', 'number', 'any'].some((e) => type === e)) {\n return type;\n }\n\n // check to see if the type is an instance type, e.g., vb/ServiceDataProvider; or if instanceFactoryType\n // return the actual constructorType\n if (Utils.isInstanceType(type)) {\n const constructorType = StateUtils.getVariableDefConstructorFactoryType(variableDef, scopeResolver);\n return (constructorType && Utils.isTypeDefInstanceFactory(constructorType)) ? constructorType : type;\n }\n\n // run legacy checks\n if (type === 'object' && !variableDef.definition) {\n return type;\n }\n if (type === 'object' || type === 'array') {\n type = StateUtils.resolveLegacyType(variableName, variableDef, scopeResolver);\n log.warn(`Deprecated type definition for variable '${variableName}'.`);\n return type;\n }\n\n // check for primitive arrays\n const isArray = type.endsWith('[]');\n if (isArray && ['string', 'boolean', 'number', 'any', 'object'].some((e) => type.startsWith(e))) {\n return type;\n }\n\n // check for a type that needs to be resolved\n let referencedTypeName = type;\n\n // deal with referenced array types\n if (isArray) {\n referencedTypeName = referencedTypeName.substring(0, referencedTypeName.length - 2);\n }\n\n let referencedType = referencedTypes[referencedTypeName];\n if (!referencedType) {\n const typeInfo = StateUtils.resolveType(referencedTypeName, scopeResolver);\n const typeDefinition = typeInfo && typeInfo.type;\n\n if (!typeDefinition) {\n throw new Error(`Type for '${variableName}' references '${referencedTypeName}' which is not defined.`);\n }\n\n // prevent infinite recursion for cyclic type definitions.\n typeDefinition.constructedType = {};\n referencedTypes[referencedTypeName] = typeDefinition.constructedType; // eslint-disable-line no-param-reassign\n\n // Drill in getType using the inner resolver returned by the scope resolver.\n // Only passes the referencedTypes references when drilling in the same scope (THIS_PREFIX)\n // since flow or application references only work upward they cannot cycle.\n const isThis = scopeResolver.isThis(typeInfo.scopeName);\n referencedType = StateUtils.getType(variableName, typeDefinition, typeInfo.scopeResolver,\n isThis ? referencedTypes : {});\n }\n\n if (isArray) {\n return [referencedType];\n }\n\n return referencedType;\n }\n\n // handle objects\n if (Utils.isObject(type)) {\n const constructedType = variableDef.constructedType || {};\n const entries = Object.entries(type);\n if (entries.length === 0) {\n throw new Error(`Type for '${variableName}' contains an empty map, did you mean to use 'object'?`);\n }\n\n entries.forEach((entry) => {\n const key = entry[0];\n const itemTypeDef = entry[1];\n constructedType[key] = StateUtils.getType(key, { type: itemTypeDef },\n scopeResolver, referencedTypes);\n });\n return constructedType;\n }\n\n // handle arrays\n if (Array.isArray(type)) {\n if (type.length === 0) {\n throw new Error(`Type for '${variableName}' contains an empty array, did you mean to use 'string[]'?`);\n }\n\n if (type.length > 1) {\n throw new Error(`Type for '${variableName}' contains an array type that contains more than one item.`);\n }\n\n const arrayTypeDef = type[0];\n if (!Utils.isObjectOrArray(arrayTypeDef)) {\n throw new Error(`Type for '${variableName}' contains an invalid array type, did you mean to use 'string[]'?`);\n }\n\n const arrayType = StateUtils.getType(variableName, { type: arrayTypeDef }, scopeResolver, referencedTypes);\n return [arrayType];\n }\n\n throw new Error(`Type for '${variableName}' was not recognized.`);\n }\n\n /**\n * Returns the type information using the legacy syntax.\n *\n * @TODO remove this\n *\n * @private\n * @param variableName\n * @param variableDef\n * @param scopeResolver\n * @returns {string|*}\n */\n static resolveLegacyType(variableName, variableDef, scopeResolver) {\n const type = variableDef.type;\n const definition = variableDef.definition;\n if (!definition) {\n throw new Error(`The '${variableName}' variable has a complex type but no definition, `\n + 'did you mean \\'object\\' (\\'*\\') type?');\n }\n\n // handle string definition, e.g., boolean, app:type, etc\n if (typeof definition === 'string') {\n let convertedType;\n if (definition === '*') {\n convertedType = 'object';\n } else if (['string', 'boolean', 'number'].some((e) => definition === e)) {\n convertedType = definition;\n } else {\n convertedType = StateUtils.getType(variableName, { type: definition }, scopeResolver);\n }\n\n if (typeof convertedType === 'string') {\n return type === 'array' ? `${convertedType}[]` : convertedType;\n }\n\n return type === 'array' ? [convertedType] : convertedType;\n }\n\n // handle object definition\n // get a type from the definition\n const constructedType = {};\n const entries = Object.entries(definition);\n if (entries.length === 0) {\n return type === 'object' ? 'object' : 'object[]';\n }\n\n entries.forEach((entry) => {\n const key = entry[0];\n const itemTypeDef = entry[1];\n constructedType[key] = StateUtils.getType(variableName, itemTypeDef, scopeResolver);\n });\n\n return type === 'object' ? constructedType : [constructedType];\n }\n\n /**\n * Perform a type check on the given value. All invalid values will be recorded in typeCheckInfo. It will return\n * true if the type check passes and false otherwise.\n *\n * @param type the required type\n * @param value the value to check the type against\n * @param typeCheckInfo contains all the invalid values flagged by typeCheck\n * @returns {boolean}\n */\n static typeCheck(type, value, typeCheckInfo) {\n const info = typeCheckInfo;\n info.Type = type;\n\n // holds all the mismatched values\n const MISMATCHED_VALUES = 'Mismatched Value(s)';\n info[MISMATCHED_VALUES] = value;\n\n let result = true;\n\n if (!type) {\n result = false;\n } else if ((value === undefined || value === null) || Expression.isExpression(value) || type === 'any') {\n result = true;\n } else if (type === 'any[]') {\n result = Array.isArray(value);\n } else if (type === 'object') {\n result = Utils.isObjectType(value);\n } else if (type === 'object[]') {\n if (!Array.isArray(value)) {\n result = false;\n } else {\n info[MISMATCHED_VALUES] = [];\n value.forEach((item) => {\n const itemInfo = {};\n if (!StateUtils.typeCheck('object', item, itemInfo)) {\n info[MISMATCHED_VALUES].push(itemInfo);\n result = false;\n }\n });\n }\n } else if (Utils.isObjectType(type) && Utils.isObject(value)) {\n info[MISMATCHED_VALUES] = {};\n Object.keys(value).forEach((key) => {\n const itemInfo = {};\n if (!StateUtils.typeCheck(type[key], value[key], itemInfo)) {\n info[MISMATCHED_VALUES][key] = itemInfo;\n result = false;\n }\n });\n } else if (Utils.isArrayType(type) && Array.isArray(value)) {\n const itemType = Utils.getArrayRowType(type);\n info[MISMATCHED_VALUES] = [];\n value.forEach((item) => {\n const itemInfo = {};\n if (!StateUtils.typeCheck(itemType, item, itemInfo)) {\n info[MISMATCHED_VALUES].push(itemInfo);\n result = false;\n }\n });\n } else {\n const valueType = typeof value;\n // check to make sure a string can be coerced into a number\n if (type === 'number' && valueType === 'string' && value.trim()) {\n result = !isNaN(value);\n } else {\n result = type === valueType;\n }\n }\n\n return result;\n }\n\n /**\n * Generates a default value for a type.\n *\n * @param variableName The name of the variable (for logging purposes)\n * @param scopes The complete set of scopes (for expression evaluation)\n * @param type the type for the variable\n * @param defaultValueDefinition The default value as specified in the page model\n * @param recursionDepths used to prevent infinite recursion for cyclic types\n * @returns {*}\n */\n static buildVariableDefaults(variableName, scopes, type, defaultValueDefinition, recursionDepths = {}) {\n // the literal default value definition from the type structure, if its not present, return the initial\n // structure as defined by the type (which could be a structure or undefined)\n if (defaultValueDefinition === undefined) {\n if (type === 'any[]' || type === 'object[]') {\n return [];\n }\n if (type === 'object') {\n return {};\n }\n if (type === 'any') {\n return undefined;\n }\n }\n\n // deal with expression\n if (Expression.isExpression(defaultValueDefinition)) {\n return StateUtils.getValueOrExpression(defaultValueDefinition, scopes);\n }\n\n // deal with arrays\n if (Utils.isArrayType(type)) {\n // if it's an array, go through each part of the array and fill in the type\n const rowType = Utils.getArrayRowType(type);\n const defaultValue = [];\n\n // if there's no definition, simply return []\n if (defaultValueDefinition === undefined) {\n return defaultValue;\n }\n\n // fill in the array index by index if defaultValueDefinition is an array, otherwise, it should be\n // an expression which will be handled at the end\n if (Array.isArray(defaultValueDefinition)) {\n defaultValueDefinition.forEach((v) => {\n const indexDefaultValue = StateUtils.buildVariableDefaults(variableName, scopes, rowType, v,\n recursionDepths);\n defaultValue.push(indexDefaultValue);\n });\n return defaultValue;\n }\n }\n\n // deal with objects\n if (Utils.isObjectType(type)) {\n if (defaultValueDefinition === null) {\n return null;\n }\n\n const defaultValue = {};\n const isWildCardType = StateUtils.isWildCardType(type);\n\n if (Utils.isObject(defaultValueDefinition)) {\n Object.keys(defaultValueDefinition).forEach((key) => {\n const v = defaultValueDefinition[key];\n const propType = isWildCardType ? 'any' : type[key];\n\n // get the default value by recursing on this property\n defaultValue[key] = StateUtils.buildVariableDefaults(variableName, scopes, propType, v, recursionDepths);\n });\n }\n\n // if the type is not a wild card, we need to iterate the type to make sure properties are properly\n // filled if not provided by defaultValueDefinition\n if (!isWildCardType) {\n // look up the current recursion depth for type\n let depth = recursionDepths[type];\n if (!depth) {\n depth = {};\n recursionDepths[type] = depth; // eslint-disable-line no-param-reassign\n }\n\n Object.keys(type).forEach((key) => {\n if (!defaultValueDefinition || !Object.prototype.hasOwnProperty.call(defaultValueDefinition, key)) {\n // look up the current recursion depth for key\n depth[key] = depth[key] || 0;\n\n // used to restore to current depth after recursion\n const currentDepth = depth[key];\n\n // stop the recursion if the depth has reached the maximum recursion depth for key\n if (currentDepth < Constants.MAX_DEFAULT_VALUE_RECURSION_DEPTH) {\n depth[key] += 1;\n defaultValue[key] = StateUtils.buildVariableDefaults(variableName, scopes, type[key],\n undefined, recursionDepths);\n\n // restore to the original current depth\n depth[key] = currentDepth;\n } else {\n defaultValue[key] = undefined;\n }\n }\n });\n }\n\n return defaultValue;\n }\n\n if (defaultValueDefinition) {\n // coerce a string to number\n if (type === 'number' && typeof defaultValueDefinition === 'string') {\n return Number(defaultValueDefinition);\n }\n\n // deal with primitive or expression\n return StateUtils.getValueOrExpression(defaultValueDefinition, scopes);\n }\n\n return defaultValueDefinition;\n }\n\n /**\n * Returns a value or an expression depending on the value. For expressions, the entire value must be wrapped\n * into either {{ expr }} or [[ expr ]]. At the moment, there is no semantic difference between the two.\n *\n * @private\n * @param value\n * @param scopes The complete set of scopes (for expression evaluation)\n * @return {*} a function evaluation, or the original value (if not a string. array, or object)\n */\n static getValueOrExpression(value, scopes) {\n if (!value) {\n return value;\n }\n\n if (typeof value === 'string') {\n const expression = Expression.getExpression(value);\n if (expression) {\n return Expression.createFromString(expression, scopes);\n }\n\n return value.trim();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => StateUtils.getValueOrExpression(item, scopes));\n }\n\n if (!Utils.isPrototypeOfObject(value)) {\n return value;\n }\n\n if (Utils.isObject(value)) {\n const obj = {};\n Object.keys(value).forEach((key) => {\n obj[key] = StateUtils.getValueOrExpression(value[key], scopes);\n });\n return obj;\n }\n\n // if it's not an expression, just return the value as is\n return value;\n }\n\n /**\n * Recursively evaluate expressions contained in the given value.\n *\n * @param value the value to evaluate\n * @param scopes scopes used for evaluation\n * @returns {*}\n */\n static deepEval(value, scopes) {\n if (!value) {\n return value;\n }\n\n if (typeof value === 'string') {\n const expression = Expression.getExpression(value);\n if (expression) {\n return Expression.createFromString(expression, scopes)();\n }\n\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => StateUtils.deepEval(item, scopes));\n }\n\n if (!Utils.isPrototypeOfObject(value)) {\n return value;\n }\n\n if (Utils.isObject(value)) {\n const obj = {};\n Object.keys(value).forEach((key) => {\n obj[key] = StateUtils.deepEval(value[key], scopes);\n });\n return obj;\n }\n\n // if it's not an expression, just return the value as is\n return value;\n }\n\n /**\n * Creates an instance of the following types used on a variable -\n * - vb builtin types (or extended types). For these types the sibling variables are also created. Example\n * type: 'vb/ServiceDataProvider'\n * - vb instance factory with constructorParams.\n * - any random type with no constructorParams. Example: type: 'some/noConstructorClass'\n *\n * @private\n * @param name The name of the variable\n * @param variableDef The variable definition\n * @param scopeResolver An array of type resolver for complex types\n * @param scope The current scope\n * @param completeScopes The entire set of scopes in context\n * @param namespace variable's namespace ('variables' or 'metadata')\n * @return {Promise} the requested object or null if the type is not known.\n */\n static instantiateType(name, variableDef, scopeResolver = new ScopeResolver(), scope,\n completeScopes, namespace = Constants.VariableNamespace.VARIABLES) {\n return new Promise((resolve) => {\n requirejs([variableDef.type], (TypeClass) => {\n // if the type is not an extended type just resolve the type\n const newInstance = new TypeClass();\n if (!Utils.isExtendedType(newInstance)) {\n resolve(newInstance);\n return;\n }\n\n // we are dealing with an extendedType\n let createTypePromise = Promise.resolve();\n const typeDefinition = newInstance.getTypeDefinition(variableDef, scopeResolver);\n if (typeDefinition) {\n // create a typeDefinition for default value calculation\n const td = {\n type: typeDefinition.type,\n definition: typeDefinition.definition,\n defaultValue: variableDef.defaultValue,\n persisted: variableDef.persisted,\n resolved: typeDefinition.resolved,\n };\n const isBuiltinType = newInstance.isBuiltinType && newInstance.isBuiltinType();\n\n // create the default value\n createTypePromise = StateUtils.createVariableDefaultValue(name, td, scopeResolver, scope,\n completeScopes, namespace)\n .then((defaultValue) => Promise.resolve(newInstance.init(name, variableDef, defaultValue,\n scope.container))\n .then(() => defaultValue))\n .then((defaultValue) => {\n // a builtin type variable gets 2 additional variables created on the scope; named _value &\n // _internalState;\n // create the 'value' variable and add it to the scope. '_value' variable is the value of the variable,\n // and reads and writes to the instance (hoisted**) properties are always done on this variable, not the\n // instance variable.\n const tdType = StateUtils.getType(name, td, scopeResolver);\n const newVariable = StateUtils.addInstancePropertyToScope(newInstance, name, namespace,\n 'value', tdType, defaultValue, scope, td.persisted);\n const currentScope = scope;\n\n // for niceness, if the type is an object, copy all top-level properties onto the instance\n // itself so it can be directly addressable\n if (Utils.isObject(defaultValue) && !Array.isArray(defaultValue)\n && Utils.isPrototypeOfObject(defaultValue) && typeDefinition\n && typeof tdType === 'object' && newInstance.hoistValueObjectProperties()) {\n // allow builtin types to setup variable properties accessors. Currently this is not supported on\n // custom (external) types.\n if (isBuiltinType) {\n // builtin types using extendedType mixin may override this method to customize getter / setter\n newInstance.setupVariableProperties(defaultValue, currentScope, namespace, newVariable);\n } else {\n StateUtils.setupVariableProperties(newInstance, defaultValue, currentScope, namespace, newVariable);\n }\n }\n\n // chain variables don’t fire change events so they don’t have onValueChanged; if they do setup\n // listener to notify value change\n if (newVariable.onValueChanged) {\n // listen for changes in the variable, and send the event to the TDS\n newVariable.onValueChanged.add((e) => {\n newInstance.handlePropertyVariableChangeEvent(e);\n }, newInstance);\n\n // additionally if the builtin type variableDef has configured valueChange\n // listeners then wire up listeners for the _value variable.\n scope.container.addVariableValueChangedListeners(newVariable, variableDef, completeScopes);\n }\n\n // allow for certain actions to be invoked within the extended type\n const handlerDescriptor = {\n value: {\n getType(type, description) {\n return StateUtils.getType(description, { type }, scope.container.scopeResolver);\n },\n invokeEvent(eventName, eventPayload /* withBubbling = true */) {\n // invoking event without bubbling is not recommended as it bypasses event configuration\n // if (!withBubbling) {\n // return scope.container.invokeEvent(eventName, eventPayload);\n // }\n return scope.container.invokeEventWithBubbling(eventName, eventPayload);\n },\n },\n };\n if (isBuiltinType) {\n handlerDescriptor.value = Object.assign(handlerDescriptor.value, {\n callActionChain(id, params) {\n return scope.container.callActionChain(id, params);\n },\n });\n }\n Object.defineProperty(newInstance, 'handler', handlerDescriptor);\n });\n }\n\n // after the value has been created (or not)\n createTypePromise.then(() => {\n // add another variable '_internalState' so that the type instance can stash internal\n // state\n // in the scope\n StateUtils.addInstancePropertyToScope(newInstance, name, namespace, 'internalState',\n 'object', {}, scope, variableDef.persisted);\n\n // return the whole instance\n resolve(newInstance);\n }).catch((e) => {\n log.error(e);\n throw new Error(`Error creating value for variable '${name}'.`);\n });\n });\n });\n }\n\n /**\n * Sets up accessors for all properties on the variable value. By default the accessors read from and write to the\n * underlying 'value' variable on scope.\n * @param instance\n * @param defaultValue\n * @param currentScope\n * @param namespace\n * @param variable\n */\n static setupVariableProperties(instance, defaultValue, currentScope, namespace, variable) {\n Object.keys(defaultValue).forEach((k) => {\n Object.defineProperty(instance, k, StateUtils.getVariablePropertyDefinition(instance, k, currentScope,\n namespace, variable));\n });\n }\n\n /**\n * Returns the accessors to read write value for properties on extended type value.\n * @param instance the extended type instance\n * @param prop property of extended type\n * @param cs currentScope where the variable is defined\n * @param namespace\n * @param variable the variable instance\n *\n */\n static getVariablePropertyDefinition(instance, prop, cs, namespace, variable) {\n const currentScope = cs;\n const k = prop;\n return {\n get: () => instance.getValue()[k],\n set: (newValue) => {\n // use the derived name of the instance property variable to lookup its value\n currentScope.variableNamespaces[namespace][variable.name][k] = newValue;\n },\n enumerable: true,\n configurable: true,\n };\n }\n\n /**\n * Create a property on the instance of the object that is mapped to a variable that\n * is created into the scope. Also creates a variable with the name and propertyName on the\n * scope.\n *\n * @private\n * @param instance The instance of the variable\n * @param name The name of the variable\n * @param namespace of the variable\n * @param propertyName The property to add to the instance\n * @param type The type of the variable (see Variable.getType())\n * @param defaultValue The default value of the property\n * @param scope the scope to insert the state into\n * @param persisted indicate whether the instance property should be persisted in local or session storage\n * @returns {Variable} The newly created variable\n */\n static addInstancePropertyToScope(instance, name, namespace, propertyName, type, defaultValue, scope, persisted) {\n const currentScope = scope;\n // TODO: a potential bug exists where if author creates an SDP variable 'foo', and\n // also creates another variable called 'foo_value' or 'foo_internalState' that this\n // would conflict with the special variables with the same name. Maybe using '_vb_'\n // can have less likelihood for name collision.\n const variableName = `${name}_${propertyName}`; // in redux\n const newVariable = scope.createVariable(variableName, namespace, type,\n defaultValue, undefined, { persisted, writableOptions: instance.getWritableOptions() });\n\n Object.defineProperty(instance, propertyName, {\n get: () => scope.variableNamespaces[namespace][variableName],\n set: (newValue) => {\n currentScope.variableNamespaces[namespace][variableName] = newValue;\n },\n enumerable: true,\n configurable: true,\n });\n\n return newVariable;\n }\n\n /**\n * Creates an initial value for a variable given its default value and a possible initial value.\n * If the initial value exist, a clone of it is returned, otherwise the defaultValue created\n * from the variable definition is used as a prototype for the return value.\n *\n * @private\n * @param {*} defaultValue The default value created from the variable definition to be used as\n * a prototype for the initial value (may be a primitive, struct,\n * or expr)\n * @param {*} initialValue An optional initial value\n * @return {*} The initial value for the variable\n */\n static createVariableInitialValue(defaultValue, initialValue) {\n if (initialValue !== undefined) {\n return Utils.cloneObject(initialValue);\n }\n\n if (!Utils.isObjectOrArray(defaultValue) // if it's not an object\n || (!Array.isArray(defaultValue)\n && !Utils.isPrototypeOfObject(defaultValue))) { // or is an instance (!obj.proto)\n return defaultValue;\n }\n\n return Utils.cloneObject(defaultValue);\n }\n\n /**\n * For persisted value, since an expression or expressions contained in an object cannot be stored and retrieved\n * from the browser storage, this method will restore them using the default value structure.\n *\n * @param persistedValue the persisted value that may need to be restored\n * @param defaultValue the default value used to restore the persisted value\n * @returns {*}\n */\n static restorePersistedValue(persistedValue, defaultValue) {\n const persVal = persistedValue;\n // restore the persisted value to the default expression\n if (typeof defaultValue === 'function') {\n return defaultValue;\n }\n\n if (Utils.isObjectOrArray(defaultValue)) {\n Object.keys(defaultValue).forEach((key) => {\n // with generators the persisted value could be quite dissimilar from the defaultValue primarily because\n // the latter is not necessarily complete as a result of its type not being known or fully parse-able.\n if (!Array.isArray(defaultValue) || (persVal && Object.prototype.hasOwnProperty.call(persVal, key))) {\n persVal[key] = StateUtils.restorePersistedValue(persVal[key], defaultValue[key]);\n }\n });\n }\n\n return persVal;\n }\n\n /**\n * Returns whether or not the value is a one of the wildcards.\n *\n * @param type The type to test\n * @returns {boolean} True if the value is a boolean\n */\n static isWildCardType(type) {\n return type === 'any' || type === 'object' || type === 'any[]' || type === 'object[]';\n }\n }\n\n return StateUtils;\n});\n\n","'use strict';\n\ndefine('vb/private/action/assignmentHelper',['vb/binding/expression', 'vb/private/utils', 'vb/private/stateManagement/stateUtils'],\n (Expression, Utils, StateUtils) => {\n /**\n * This helper class is used by assign variable functions to get values from variable expressions and perform\n * pick operations\n */\n class AssignmentHelper {\n constructor(availableContexts, targetType) {\n this.targetType = targetType;\n\n // the get method is defined here to protect access to the availableContexts\n /**\n * Gets a variable from a scope by its string representation. The returned variable value will\n * be unwrapped by calling Utils.cloneObject.\n *\n * @param expr string representation of a variable\n */\n this.get = expr => Utils.cloneObject(Expression.createFromString(expr, availableContexts)());\n }\n\n /**\n * Assigns properties from one or more sources to the target if and only if the property already exists on the\n * target. The sources are processed in the order they are defined.\n *\n * If target is null, any empty target value will be created based on the target's type. If the target is not\n * null, it will be cloned and the sources will be assigned into the clone. In either case, this value will be\n * returned as the result.\n *\n * NOTE: This method will directly write into the target if the target is an object or array. It\n * is the responsibility of the caller to pass in a target that can be written into. For example,\n * if target is a wrapped variable value, it should be unwrapped by using Utils.cloneObject before\n * passing it into this method.\n *\n * @param target the target of the pick operation\n * @param sources the sources to be picked into the target in the order thye are defined\n * @returns {*}\n */\n pick(target, ...sources) {\n const result = sources.reduce(\n (accumulator, currentValue) => this.pickRecursive(accumulator, currentValue, this.targetType),\n target);\n\n return result;\n }\n\n /**\n * Recursively pick properties from the source to the target.\n *\n * @param target target of the pick operation\n * @param source source of the pick operation\n * @param targetPrototype used for picking array elements\n * @returns {*}\n * @private\n */\n pickRecursive(target, source, targetType) {\n // throw an error if assigning an array or primitive to a target with object type\n if (targetType === 'object') {\n if (Array.isArray(source)) {\n throw new Error('Cannot assign an array to a target with \\'object\\' type.');\n }\n\n if (!Utils.isObject(source)) {\n throw new Error('Cannot assign a primitive value to a target with \\'object\\' type.');\n }\n }\n\n const isSourceObject = Utils.isObject(source);\n const isSourceArray = Array.isArray(source);\n\n // if targetType is any or object, merge if both target and source are object (not array),\n // otherwise, directly assign source to target\n if (targetType === 'any' || targetType === 'object') {\n if (isSourceObject && Utils.isObject(target)) {\n return Utils.cloneObject(source, target);\n }\n return source;\n }\n\n const isTargetObject = Utils.isObjectType(targetType);\n const isTargetArray = Utils.isArrayType(targetType);\n let targetValue = target;\n\n if (isTargetArray) {\n // initialize the targetValue if necessary\n targetValue = targetValue || [];\n\n const rowType = Utils.getArrayRowType(targetType);\n const sourceArr = isSourceArray ? source : [source];\n\n sourceArr.forEach((sourceRow) => {\n // pass in null for target and let pickRecursive figure how to create the row\n targetValue.push(this.pickRecursive(null, sourceRow, rowType));\n });\n } else if (isTargetObject && isSourceObject) {\n // initialize the targetValue if necessary\n targetValue = targetValue || StateUtils.buildVariableDefaults(null, null, targetType);\n\n Object.keys(targetType).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n targetValue[key] = this.pickRecursive(targetValue[key], source[key], targetType[key]);\n } else if (!Object.prototype.hasOwnProperty.call(targetValue, key)) {\n // if targetValue[key] doesn't exist, add it and set it to undefined\n targetValue[key] = undefined;\n }\n });\n } else if (!Utils.isObjectOrArray(targetType) && !Utils.isObjectOrArray(source)) {\n // target is a primitive, coerce the source to the target type\n return AssignmentHelper.coerceType(source, targetType);\n } else if (Utils.isInstanceType(targetType)) {\n return source;\n }\n\n return targetValue;\n }\n\n /**\n * Coerce value to the given type.\n *\n * @param value the value to coerce\n * @param type the type to coerce into\n * @returns {*}\n */\n static coerceType(value, type) {\n // don't coerce null, undefined or expression\n if (value === undefined || value === null || typeof value === 'function') {\n return value;\n }\n\n // coerce string type\n if (type === 'string') {\n return String(value);\n }\n\n // coerce boolean type\n if (type === 'boolean') {\n if (typeof value === 'string' &&\n (value.toLocaleLowerCase() === 'false' || value === '0')) {\n return false;\n }\n\n return Boolean(value);\n }\n\n // coerce number type\n if (type === 'number') {\n return Number(value);\n }\n\n // if type is an instance type, e.g., vb/ServiceDataProvider, don't coerce the value\n if (Utils.isInstanceType(type)) {\n return value;\n }\n\n // for object or array type, use AssignmentHelper.pick to do the coercion\n const helper = new AssignmentHelper(null, type);\n return helper.pick(null, value);\n }\n }\n\n return AssignmentHelper;\n });\n\n","'use strict';\n\ndefine('vb/private/stateManagement/variable',[\n 'knockout', 'signals', 'vb/private/log', 'vb/private/utils', 'jsondiff', 'vb/private/constants',\n], (ko, signals, Log, Utils, JsonDiff, Constants) => {\n const logger = Log.getLogger('/vb/stateManagement/variable');\n /**\n * The type for the redux action used to update a variable in the store\n */\n const UPDATE_ACTION_TYPE = 'update';\n /**\n * A marker to represent an undefined value in the redux store\n */\n const UNDEFINED_MARKER = Symbol('undefined');\n\n const SKIP_EVAL_EXPRESSIONS_MARKER = '__vb_skip_eval_expr';\n const RETR_OLD_EVAL_MARKER = '__vb_retrieve_old_eval_value';\n const RETR_NEW_VALUE_MARKER = '__vb_retrieve_new_value';\n\n const isPrototypeInstance = (c) => (!Utils.isPrototypeOfObject(c) && !Array.isArray(c));\n\n const jsonDiff = JsonDiff.create({\n arrays: {\n detectMove: false,\n },\n cloneDiffValues: false,\n });\n\n // this skips diffing functions, and instance types as diffing fails or goes into weird recursions\n jsonDiff.processor.pipes.diff.before('trivial', (context) => {\n const cl = context.left;\n const cr = context.right;\n // ignore diffing functions or instance types.\n if (typeof cl === 'function' || typeof cr === 'function') {\n context.setResult(undefined).exit();\n } else if (isPrototypeInstance(cl) || isPrototypeInstance(cr)) {\n let res;\n if (cl !== cr) {\n res = 'isDifferent';\n }\n context.setResult(res).exit();\n }\n });\n\n /**\n * A variable is a basic unit of state. It can be a primitive, structure, collection, or Jet\n * data type.\n *\n * At runtime it does not have any intrinsic structure, although once set, it will freeze\n * the structure so that it cannot be modified unless set otherwise.\n *\n * FIXME add more doc when this is fleshed out...\n */\n class Variable {\n constructor(scope, name, namespace, type, defaultValue, initialValue, descriptor) {\n /**\n * Creates a new variable in the given scope and name. An initial value is optional, but\n * when provided will initialize the state in the store. The default value is what is specified\n * in the variable definition. It is the same as the initial value except for the case where\n * the variable is persisted, in which case, the initial value would be the persisted value.\n *\n * If the variable has a structure in the initial value, the object will be frozen on get,\n * such that adding new properties will not be possible unless a new structure is set on the\n * variable.\n *\n * @param {Scope} scope The scope on which this variable is active on // FIXME\n * @param {string} name The name of the variable in the scope\n * @param {string} namespace The namespace of the variable in the scope\n * @param {*} type The type as described in getType()\n * used when creating new instances of this variable\n * @param {*} defaultValue An optional value used for the variable default value\n * @param {*} initialValue An optional value used for the variable initial value\n * @param {*} descriptor An object whose properties defines the behavior of the\n * variable, for example,\n * { writable: true }, whether variable can be written into,\n * { rateLimit: 100 } the rate limit in milliseconds for\n * limiting how often onValueChanged should be fired.\n * { input: String } the input value for the variable\n * descriptor ('fromUrl', 'fromCaller', ...)\n * { writableOptions: object }, where one of the options\n * is 'propertiesWritable', which can be 'all' or 'none'.\n * 'all' means all properties can be set, 'none' implies none\n * can be set.\n * { dependencies: Object } a Map of dependencies (on other variables) for the\n * current variable. Contains 2 properties\n * - expressions - Array of (variable) expressions that this variable\n * configuration references\n * - variables - Array of Objects representing the referenced variable info;\n * where each Object contains the following properties - scopeName, variableName\n */\n this.log = logger;\n this.scope = scope;\n this.name = name;\n this.namespace = namespace || '';\n this.descriptor = descriptor;\n\n this.type = type;\n this.initialValue = initialValue;\n this.defaultValue = defaultValue;\n\n if (this.scope.silent === false) {\n this.onValueChanged = new signals.Signal();\n }\n this.triggerObservable = ko.observable();\n this.isDirty = false;\n this.extendedType = false;\n\n this.eventThrottle = null;\n this.writableOptions = (descriptor && descriptor.writableOptions) || {};\n\n if (!this.namespace) {\n this.namespace = Constants.VariableNamespace.VARIABLES;\n this.log.warn('variable created without a namespace, using', this.namespace, ':', name);\n }\n // variable is considered to be in 'init' stage at this point. Though primitive and object variable types may\n // not have an explicit init() method, extended types do.\n this.lifecycleStage = Constants.VariableLifecycleStage.INIT;\n this.log.finer('initializing variable', this.name);\n this.typeClassification = Constants.VariableClassification.REGULAR;\n }\n\n /**\n * Name of the property to address the value of the variable in the redux store\n * Format for a variables named foo is 'variables@foo'.\n * @return {String} the name of the property used to address the value of this variable in the redux store\n */\n get stateProperty() {\n return `${this.namespace}@${this.name}`;\n }\n\n static get UNDEFINED_MARKER() {\n return UNDEFINED_MARKER;\n }\n\n static get UPDATE_ACTION_TYPE() {\n return UPDATE_ACTION_TYPE;\n }\n\n static isPrototypeInstance(c) {\n return isPrototypeInstance(c);\n }\n\n /**\n * Create a reducer for this variable. This is used by the storage manager to combine all\n * the reducers in a scope.\n * @return {Function} the reducer function\n */\n createReducer() {\n return (state, action) => {\n // When the state is undefined, the reducer must return the initial state\n if (state === undefined) {\n // undefined is not a valid value for the redux state, so use a marker\n if (this.initialValue === undefined) {\n return UNDEFINED_MARKER;\n }\n return this.getReducerInitialValue();\n }\n\n if (action.type === UPDATE_ACTION_TYPE && this === action.variable) {\n this.isDirty = true;\n // undefined is not a valid value for the redux state, so use a marker\n if (action.value === undefined) {\n return UNDEFINED_MARKER;\n }\n\n return Utils.cloneObject(action.value);\n }\n\n return state;\n };\n }\n\n /**\n * returns the initial value to store in redux\n * @return {*}\n */\n getReducerInitialValue() {\n return this.initialValue;\n }\n\n /**\n * Create a redux action to be used in a call to the redux store.dispatch\n * @param {Object} value the new value for the variable\n * @returns {{variable: Variable, type: string, value: *}}\n */\n createUpdateAction(value) {\n return { type: UPDATE_ACTION_TYPE, variable: this, value };\n }\n\n /**\n * Returns the value of the variable, or null if the variable is set but does not\n * currently have a value.\n *\n * This is an observable value - meaning that if the value changes the events will be\n * propagated automatically when referenced within an expression.\n *\n * @param raw Whether or not to return the object 'as is' from the store\n * @returns {*} The value of the variable\n */\n getValue(raw = false) {\n if (!this.computedValue) {\n this.computedValue = this.getComputedValueObservable(raw);\n\n // normally we can detect events from the redux store - however if we are bound to an\n // expression, and that expression changes, the redux value for this variable will not\n // change (it will remain the expression).\n // We therefore rely on ko to detect these other changes so that we can continue to fire\n // the right event. We will cancel this event if there is a real 'set' event so only one\n // event is thrown.\n this.computedValue.subscribe((oldValue) => {\n this.oldComputedValue = oldValue;\n }, null, 'beforeChange');\n this.computedValue.subscribe((newValue) => {\n // since we lose the old value, we capture the last evaulated expressions to use for\n // the old value for these types of events\n const oldValue = this.oldComputedValue;\n delete this.oldComputedValue;\n const lastEvaluatedValue = Variable.cloneWithMarkers(oldValue, [RETR_OLD_EVAL_MARKER]);\n this.handleValueObservableChange(lastEvaluatedValue, newValue);\n });\n }\n\n return this.computedValue();\n }\n\n getComputedValueObservable(raw = false) {\n return ko.computed(() => {\n this.triggerObservable();\n\n return this.getValueFromStore(raw);\n });\n }\n\n /**\n * Gets the value directly from the store. This will always recompute expressions.\n *\n * @param raw Whether or not to return the object 'as is' from the store\n * @returns {*}\n */\n getValueFromStore(raw = false) {\n const state = this.scope.getState();\n if (state) {\n let val = state[this.stateProperty];\n\n if (val === UNDEFINED_MARKER) {\n return undefined;\n }\n\n if (!raw) {\n val = this.getWrappedValue(val);\n }\n\n // seal the object so that new properties cannot be added\n // return val !== null ? Object.seal(val) : null;\n // FIXME action chains require these to be updated\n return val;\n }\n\n return null;\n }\n\n /**\n * Given a value returns the wrapped value\n * @param value\n * @return {*}\n */\n getWrappedValue(value) {\n let val = value;\n val = Utils.resolveIfObservable(val);\n\n // clone the object so no one mutates the store directly, then wrap so we are\n // notified when the properties are changed so we can update the base object\n if (this.extendedType || Utils.isExtendedType(val)) {\n this.extendedType = true;\n // though we don't clone the extended type variable by calling cloneObject(), we\n // also don't want to wrap it, as only its value and internalState variables are\n // mutable.\n return val;\n }\n val = Utils.cloneObject(val);\n this.wrapObject(val);\n return val;\n }\n\n /**\n * returns the serialized state for this variable. Discard any properties that are class instances because there\n * might be circular dependencies\n * @param value\n * @return {*}\n */\n // eslint-disable-next-line class-methods-use-this\n serialize(value) {\n // TODO: are there issues with dropping instances entirely?\n const REPLACER_FUNC = (k, v) => ((Utils.isCloneable(v) || Utils.isPrimitive(v)) ? v : undefined);\n return JSON.stringify(value, REPLACER_FUNC);\n }\n\n /**\n * Sets a new value for the variable. If the value has a structure, the structure will be\n * frozen until the next time a value is set.\n *\n * To unset the variable, assign the new value as 'null'.\n *\n * @param value The new value.\n */\n setValueInternal(value) {\n // if the scope has not yet been hooked up with the store, simply change the initialValue\n // this can occur in a personalization variable if retrieval of the data happens quickly\n if (!this.scope.store) {\n this.initialValue = value;\n return;\n }\n\n const currentValue = this.getValueFromStore(); // get it directly from the store\n\n // clone the object to get rid of getters and setters and restore the original values\n // (which will have expressions) - this will only clone the object if it was previously\n // returned from a getValue(). otherwise this will just return the object\n // the idea is to remove the evaluated expression values from the object and restore\n // the raw values, which can include the raw expression functions.\n // since brand new values are not wrapped (and have their expressions evaluated, we\n // do nothing for those cases\n // furthermore, this is only called when the entire object is set, which would be\n // very rare. if a user sets a property of that object, we will optimize so that we\n // do not have to do a deep clone\n const unwrappedValue = Variable.unwrapAndClone(value);\n\n // Only log when level is finer. This is to avoid fetching the value unnecessarily.\n if (this.log.isFiner) {\n if (ko.isObservable(value)) {\n this.log.finer('Updating variable', this.name, 'to an expression =', value());\n } else {\n this.log.finer('Updating variable', this.name, 'to', unwrappedValue);\n }\n }\n\n // update the store and event\n this.scope.store.dispatch(this.createUpdateAction(unwrappedValue));\n if (this.scope.silent === false) {\n // we need to refetch the variable otherwise we will not evaulate expressions\n // contained within it (then freeze it to make sure no one attempts to write to it)\n const newValue = this.getValue();\n this.dispatchChangeEvent(currentValue, newValue);\n }\n }\n\n /**\n * Sets a new value for variable if the variable is not read-only.\n * @param {*} value The new value.\n */\n setValue(value) {\n if (this.isWritable()) {\n this.setValueInternal(value);\n }\n }\n\n /**\n * Fires an event when the observable has detected a change from ko. If this change was\n * caused by a 'set' operation, the eventing from that operation will cancel out this event\n * (so only one event is sent). Thus, any events from this method that are actually sent\n * *should* be for the following scenario:\n *\n * - We have an expression bound to some other variable\n * - That variable's value has changed\n *\n * @private\n * @param oldValue The old value of this variable\n * @param value The new value of this variable\n */\n handleValueObservableChange(oldValue, value) {\n if (!this.onValueChanged) {\n return;\n }\n // Here we record events that are caused with no explicit set (indirect write) - for\n // example our value contains an expression that uses some other variable - and that\n // variable value change.\n // if there is already an event throttle timer in queue this event value is set on the\n // same event throttle timer.\n\n this._throttleValueChangeEvent(oldValue, value);\n }\n\n /**\n * Fires an event that the value has changed. This will throttle events so that multiple\n * simultaneous events will be attempted to be delivered together. This is called only when\n * the value of the variable is directly set.\n *\n * @private\n * @param oldValue The old value of this variable\n * @param value The new value of this variable\n */\n dispatchChangeEvent(oldValue, value) {\n if (!this.onValueChanged) {\n return;\n }\n\n // Here we record events that are caused with an explicit set (direct write). When a previous\n // ko change started a timer that is pending and we have a set coming in, then the new\n // changes are piggy backed on the same eventThottle state. Otherwise a new timer is created.\n\n this._throttleValueChangeEvent(oldValue, value);\n }\n\n /**\n * Throttles dispatching the onValueChanged event by starting a timer using the identifier\n * to capture extra state including the actual timer, if a timer with that identifier doesn't\n * already exist. The timeout used by default is 1ms unless the variable is explicitly\n * configured with a rateLimit.timeout value.\n * If a timer with that identifier was already started the new value is updated on the timer\n * state.\n *\n * Note: If page author were to set timeout to 0 or a negative value the actual delay\n * browser uses varies and is at least 4 ms.\n * See MDN reference - the specification requires that there is a minimum timeout.\n * (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#Specification)\n * If you provide something less than this (HTML5 spec says 4ms) then the browser will just\n * ignore your delay and use the minimum. The schema description has been updated to reflect\n * this.\n *\n * Often page authors end up updating multiple properties on complex variables like an SDP\n * variable and expect the changes to be reflected on it and UI right away (iow,\n * synchronously). But it's ok for valueChanged event firing to be throttled. VB recommends\n * user specify a throttle using rateLimit.timeout on the variable. Throttling must work\n * consistently in all of these cases (see below). For the above SDP example there are at\n * least 4 ways the variable properties can be changed. These rules are applicable to all\n * complex variable updates.\n *\n * Example: an SDP variable that is defined like below\n * sdp: {\n * defaultValue: {\n * sort: \"{{ $variables.foo.sort }}\"\n * filter: \"{{ $variables.foo.filter }}\"\n * },\n * rateLimit: {\n * timeout: 50\n * }\n * }\n *\n * Case 1: Direct Updates\n * here multiple SDP properties are updated directly via assignVariables action or\n * some UI writing to the property directly\n *\n * Case 2: Indirect Updates\n * here multiple SDP properties are updated indirectly, by writing to the referenced\n * variables via assignVariables action, or some UI writing to the variable directly\n *\n * Case 3: Mixed Update: Direct update followed by Indirect\n * here one property is updated directly using assignVars action or a UI write -\n * $variables.sdp.sortCriteria, and the second SDP property updated indirectly -\n * $variables.foo.filter.\n *\n * Case 4: Mixed Update: Indirect Update followed by Direct\n * - Same as Case 3 but the order is flipped.\n *\n * @param oldValue\n * @param value\n * @param {String} throttleTimer identifier of the timer\n * @private\n */\n _throttleValueChangeEvent(oldValue, value, throttleTimer = 'eventThrottle') {\n const hasValueChangedListeners = this.onValueChanged.getNumListeners() > 0;\n if (hasValueChangedListeners) {\n if (!this[throttleTimer]) {\n // use the rateLimit specified in the descriptor or the default rate limit\n const rateLimit = this.descriptor && this.descriptor.rateLimit\n ? this.descriptor.rateLimit : {};\n const timeout = rateLimit.timeout !== undefined\n ? rateLimit.timeout : Constants.DEFAULT_RATE_LIMIT;\n\n this[throttleTimer] = {\n oldValue,\n value,\n timer: setTimeout(() => {\n const ov = this[throttleTimer].oldValue;\n const nv = this[throttleTimer].value;\n this[throttleTimer] = null;\n\n // calculate the diffs once;\n let diff;\n if (typeof ov !== 'function' && typeof nv !== 'function') {\n diff = Variable.diff(ov, nv);\n }\n\n // dispatch the event if there's a diff\n if (diff) {\n this.onValueChanged.dispatch({\n name: this.name,\n namespace: this.namespace,\n type: Constants.VALUE_CHANGED,\n oldValue: ov,\n value: nv,\n diff,\n });\n }\n }, timeout),\n };\n } else if (Variable.diff(this[throttleTimer].value, value)) {\n // note: we do not update the old value since we want the old value to\n // come from the original event, since we are throttling the events\n // sometimes we get multiple updates for the same value; guard against that\n this[throttleTimer].value = value;\n }\n }\n }\n\n /**\n * Creates a new value for the Variable. If 'withDefaults' is true, this will include the default\n * value(s) for this variable, otherwise, just an empty structure will be returned.\n *\n * @returns {*}\n */\n createNewValue() {\n return Utils.cloneObject(this.defaultValue);\n }\n\n /**\n * Returns the type for this variable.\n *\n * A type can be a primitive, i.e. \"string\", \"boolean\", or \"number\".\n *\n * It can also be an object. In this case, the type will be returned as an object, where the\n * keys are the names of the properties, and the values are the types for those keys. The\n * types for keys can also be objects or any other type.\n *\n * A a type can also be an array, in which case it will be represented as a single item array\n * where that item describes the type of each item in the array. If the array is an array of\n * primitives, that will be returned as a string such as \"string[]\", \"boolean[]\", or \"number[]\".\n *\n * A type can be an extended type (meaning it is an instance of some class). In this case, the\n * type is the string representation of the module (i.e. \"vb/ServiceDataProvider\").\n *\n * Finally, a type can be a wildcard object. In this case the type is a string, \"any\". If it's\n * an array whose items can be wildcards, this is represented as \"any[]\".\n *\n * @return {*} The variable type\n */\n getType() {\n return this.type;\n }\n\n subscribeToStore(store) {\n this.disposeStateSubscription = store.subscribe(() => {\n // if (this.scope.silent === false) {\n if (this.isDirty === true) {\n // trigger side effect\n // this.getValue();\n this.trigger();\n this.isDirty = false;\n }\n // }\n });\n\n // force an initial getValue to set up the observable and establish dependencies\n this.getValue();\n }\n\n /**\n * Notifies the variable that it's underlying state has changed. Should only be called\n * by the scope to notify about a change in the store.\n */\n trigger() {\n this.triggerObservable.notifySubscribers();\n }\n\n /**\n * Returns the change set between the old and new values.\n *\n * See: https://github.com/benjamine/jsondiffpatch/blob/master/docs/deltas.md\n *\n * @private\n * @param oldValue The old value\n * @param newValue The new value\n * @returns {boolean} A delta format for what has changed\n */\n static diff(oldValue, newValue) {\n // If a value is not cloneable, it means that it's an instance of a class and may have functions.\n // JSON diff will throw an exception when comparing values containing functions. Therefore, perform\n // idenity comparison instead.\n if (!Utils.isCloneable(oldValue) || !Utils.isCloneable(newValue)) {\n return oldValue !== newValue;\n }\n return jsonDiff.diff(oldValue, newValue);\n }\n\n /**\n * Sets up getter and setter wrappers for all properties of the variable's value object.\n * Watches all properties of struct like value, such that modifying any one of the properties\n * will result in the the whole variable being resent to the store. If set is disabled the\n * setter logs an error.\n *\n * @private\n * @param obj The root or parent object that represents the value of this variable\n */\n wrapObject(obj) {\n this.traverseObject(obj, obj, (po, propKey, pv) => {\n const root = obj;\n const propValue = pv;\n const parentObject = po;\n\n const propDescriptor = Object.getOwnPropertyDescriptor(po, propKey);\n if (propDescriptor.configurable) {\n const deletedProp = delete parentObject[propKey];\n\n if (deletedProp) {\n const val = propValue;\n let newValue;\n let isDirty = false;\n\n // we sometimes rely on knockout to deliver change events - when this happens, we lose\n // the 'old' value since the old value will be evaluated in the context of the new\n // value. we therefore keep the last evaluated value in order to provide the correct\n // change events (we can consider moving this to the redux store directly for\n // improved debugging).\n let lastEvaluatedValue = val;\n\n // when the propVal is an expression, evaluate the ko computed. Only do this for ko observables.\n if (ko.isObservable(lastEvaluatedValue)) {\n // Cache the initial evaluation so we can establish the proper old value when\n // notified of beforeChange by knockout. We also need to clone the value to\n // prevent the side effect of updates to the original value changing the\n // lastEvaluatedValue.\n lastEvaluatedValue = Utils.cloneObject(lastEvaluatedValue());\n }\n\n const propertyDescriptorDef = {\n get: () => {\n if (Object.prototype.hasOwnProperty.call(root, RETR_NEW_VALUE_MARKER) === true\n && isDirty) {\n return newValue;\n }\n\n if (Object.prototype.hasOwnProperty.call(root, RETR_OLD_EVAL_MARKER) === true) {\n return lastEvaluatedValue;\n }\n\n if (typeof val === 'function'\n && typeof val.subscribe === 'function'\n && Object.prototype.hasOwnProperty.call(root, SKIP_EVAL_EXPRESSIONS_MARKER) === false) {\n lastEvaluatedValue = Utils.cloneObject(val());\n return lastEvaluatedValue;\n }\n\n return val;\n },\n enumerable: true,\n configurable: true,\n };\n\n if (this.writableOptions.propertiesWritable === Constants.VariableWritablePropertyOptions.NONE) {\n propertyDescriptorDef.set = (nv) => {\n // explicit writes to properties are disallowed when disabled\n this.log.error('Cannot set the value', nv, 'to property ', propKey, 'of the'\n + ' variable \\'', this.name, '\\'as it disallows property writes. Use VB'\n + ' actions like assignVariablesAction to update the variable instead.');\n };\n } else {\n propertyDescriptorDef.set = (nv) => {\n isDirty = true;\n // when a new value is set, it is important that we not mutate the original\n // object in redux (i.e., val), instead we track the new value (via closure).\n // This is done to not break the immutability requirement of redux state. E.g.,\n // one place where this manifests is a JET component holding on to the old\n // property (object) because it is needing to compare with a new value.\n newValue = nv;\n\n // TODO - we should do an optimized set here to avoid the deep clone\n this.setValue(obj);\n };\n }\n Object.defineProperty(parentObject, propKey, propertyDescriptorDef);\n }\n }\n });\n }\n\n traverseObject(root, parentObject = root, propertyHandler) {\n if (Array.isArray(parentObject)\n || (Utils.isObject(parentObject) && Utils.isPrototypeOfObject(parentObject))) {\n Object.keys(parentObject).forEach((propKey) => {\n this.setupPropertyHandler(parentObject, propKey, propertyHandler, root);\n });\n }\n }\n\n setupPropertyHandler(parentObject, propKey, propertyHandler, root) {\n const propValue = parentObject[propKey];\n const propType = typeof propValue;\n\n if (propType === 'boolean' || propType === 'number' || propType === 'string'\n || propType === 'function' || propValue === null || propValue === undefined) {\n propertyHandler.call(this, parentObject, propKey, propValue);\n } else if (propType === 'object' && Array.isArray(propValue)) {\n // handle the array itself\n propertyHandler.call(this, parentObject, propKey, propValue);\n\n // handle all the items in the array\n this.traverseObject(root, propValue, propertyHandler);\n } else if (propType === 'object') {\n this.traverseObject(root, propValue, propertyHandler);\n }\n }\n\n isWritable() {\n return !this.descriptor || this.descriptor.writable !== false;\n }\n\n /**\n * Called during the 'activate' lifecycle stage. This stage is particularly important for extended types so they\n * can use this opportunity to read property values and other activation related tasks.\n * @param {Scope} currentScope\n * @param {Object} availableContexts\n *\n * @return {Promise} resolves when variable is active. Most variables only perform synchronous activation today,\n * but if the activate returns a Promise wait for it to be resolved before returning.\n */\n // eslint-disable-next-line no-unused-vars\n activate(currentScope, availableContexts) {\n // only activate if it has not been previously\n if (this.lifecycleStage === Constants.VariableLifecycleStage.INIT) {\n if (this.extendedType || Utils.isExtendedType(this.initialValue)) {\n // explicit check to ensure duck typed extended types don't break!\n if (typeof this.initialValue.activate === 'function') {\n const ret = this.initialValue.activate();\n // currently activate method on extended types can be synch. If it returns a Promise then wait for\n // that to resolve before finishing activation\n return Promise.resolve(ret).then(() => {\n this.lifecycleStage = Constants.VariableLifecycleStage.ACTIVE;\n });\n }\n }\n this.lifecycleStage = Constants.VariableLifecycleStage.ACTIVE;\n }\n return Promise.resolve();\n }\n\n /**\n * Called during the 'dispose' lifecycle stage of a variable, typically when a variable is being torn down.\n * Particularly of use to extended types that might need to perform cleanup tasks like unwind async tasks or\n * unregister listeners or notify their subscribers.\n */\n dispose() {\n this.log.finer('disposing variable', this.name);\n this.lifecycleStage = Constants.VariableLifecycleStage.DISPOSE;\n // call dispose on builtin type variables\n if (this.extendedType || Utils.isExtendedType(this.initialValue)) {\n // explicit check to ensure duck typed extended types don't break!\n if (typeof this.initialValue.dispose === 'function') {\n this.initialValue.dispose();\n }\n }\n\n if (this.disposeStateSubscription) {\n this.disposeStateSubscription();\n }\n\n if (this.scope.silent === false) {\n this.onValueChanged.removeAll();\n }\n\n // Dispose of observable to remove dependencies\n if (this.computedValue) {\n this.computedValue.dispose();\n }\n }\n\n /**\n * Clones the variable's data. This will result in a disconnected structure that can be modified\n * or used independently of this variables data.\n *\n * If the variable was a complex object containing expressions, those expressions would not be\n * evaluated, but rather preserved in the cloned structure.\n *\n * @returns {*} The cloned data structure or primitive\n */\n cloneData() {\n return Variable.unwrapAndClone(this.getValue());\n }\n\n static unwrapAndClone(value) {\n return Variable.cloneWithMarkers(value, [SKIP_EVAL_EXPRESSIONS_MARKER, RETR_NEW_VALUE_MARKER]);\n }\n\n /**\n * Called to clone the variable value with a special marker property defined on the object\n * before cloning. This marker is used for optimizing accessors for property (see wrapObject).\n * so that when the clone recurses through the property accessors, the presence of this\n * marker will return the last evaluated value (or whatever the presence of the marker\n * indicates) rather than re-evaluate every time.\n * marker will return the last evaluated value, rather than re-evaluate every time. Once the\n * cloning is done we delete the marker.\n * Note 1: deleting the marker invalidates the Inline Caches, that JS engine sets up for\n * optimization, negatively affecting performance\n * Note 2: When defineProperty is called on the instance aka the literal value, the call reverts\n * the property getters and setters back for other properties.\n *\n * @param value\n * @param marker\n * @returns {*}\n */\n static cloneWithMarkers(value, markers = []) {\n // for builtin types no cloning with markers is necessary\n if (Utils.isCloneable(value)) {\n const obj = value;\n\n // When defineProperty is called on the instance aka the literal value, the call reverts\n // the property getters and setters back for other properties.\n // Another problem is we define the marker property on obj and then immediately delete the\n // marker both from the original obj (in finally) and on the cloned value (in the try).\n // The cloned object doesn't even have it to begin with.\n markers.forEach((marker) => {\n Object.defineProperty(obj, marker, {\n enumerable: false,\n configurable: true,\n value: true,\n });\n });\n\n try {\n const newObj = Array.isArray(obj) ? [] : {};\n Utils.cloneObject(obj, newObj);\n\n markers.forEach((marker) => {\n delete newObj[marker];\n });\n\n return newObj;\n } finally {\n markers.forEach((marker) => {\n delete obj[marker];\n });\n }\n }\n return value;\n }\n }\n\n return Variable;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/variableBridge',['vb/private/stateManagement/stateUtils'], (StateUtils) => {\n /**\n * set of properties to expose in $base for page extension\n */\n class VariableBridge {\n constructor(scope, instance) {\n this.instanceFactoryTypeInstance = instance;\n this.scope = scope;\n this.scopeResolver = scope.container.scopeResolver;\n }\n\n /**\n * Returns the type definition exploded.\n */\n getType(description, type) {\n return StateUtils.getType(description, { type }, this.scopeResolver);\n }\n\n invokeEvent(eventName, eventPayload /* withBubbling = true */) {\n return this.scope.container.invokeEventWithBubbling(eventName, eventPayload);\n }\n\n callActionChain(id, params) {\n return this.scope.container.callActionChain(id, params);\n }\n\n activateAsync() {\n if (this.instanceFactoryTypeInstance && typeof this.instanceFactoryTypeInstance.activateAsync === 'function') {\n return this.instanceFactoryTypeInstance.activateAsync();\n }\n return Promise.resolve();\n }\n }\n\n return VariableBridge;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/instanceFactoryVariable',['knockout',\n 'vb/private/stateManagement/variable',\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/binding/expression',\n 'vb/private/stateManagement/context/variableBridge',\n 'vb/private/log',\n 'signals',\n 'vb/private/utils',\n 'vb/private/constants',\n], (ko, Variable, Constants, Utils, Expression, VariableBridge) => {\n // eslint-disable-next-line no-useless-escape\n const MODULE_CLASS_PATTERN = /<(.*?)>/;\n\n /**\n * convenience func to update the prevValue with the instance and the constructorParams\n * @param prevValue\n * @param newInstance\n * @param newConstructorParams\n * @return {} the old value that was replaced\n */\n const UPDATE_PREV_VALUE_FUNC = (prevValueIS, newInstance, newConstructorParams) => {\n const prevValueInStore = prevValueIS;\n const oldInstance = prevValueInStore.instance;\n const oldCP = Utils.cloneObject(prevValueInStore.constructorParams);\n\n // update\n prevValueInStore.instance = newInstance;\n // clone the constructorParams first to break out of ko observables that might potentially pick any future changes\n // to referenced observables\n // const deepValue = Utils.deepResolve(Utils.cloneObject(newConstructorParams), { freeze: false });\n const clonedCP = Utils.cloneObject(newConstructorParams);\n prevValueInStore.constructorParams = clonedCP;\n\n return { instance: oldInstance, constructorParams: oldCP };\n };\n\n /**\n * A variable whose type refers to any generic module that returns a class of the type.\n * A unique instance of the type is created using its constructor (new a/genericType()) when the variable is\n * created, and every time any of its 'constructorParams' changes.\n * In the below example if 'foo' and 'bar' properties change, a new instance is created.\n *\n * The InstanceFactory variable has the following definition -\n * {\n * \"genericTypeVar\": {\n * \"type\": \"vb/InstanceFactory\",\n * \"constructorParams\": {\n * \"foo\" : \"{{ $variables.foo }},\n * \"bar\": \"bar\"\n * }\n * }\n * }\n *\n * TODO: using a factory modules and methods are not supported yet. Also async factory methods are also not supported\n *\n * The value of the variable is an Object containing 2 properties - instance and constructorParams\n *\n * The instance is stored in redux as is and any internal state changes are not tracked. For example if the\n * instance has some internal property 'lucy' that changes VB does not create a new instance, because 'lucy' is\n * not listed under constructorParams.\n * It is possible for callers to directly set an instance, which will cause the constructorParams to get\n * out-of-sync. It's important that both be kept in sync especially if value needs to be persisted.\n *\n * A new instance will be created in the following cases:\n * - at init time, VB variable creates an instance using the constructorParams\n * - page author mutates a referenced variable in the constructorParams using assignVariablesAction.\n * - page author mutates the constructorParams directly using writable expressions. This does not work as expected\n * due to stale data issues and array wrappers and has been disabled for now.\n * - page author can call resetVariablesAction on the instance factory type variable, which will reset the\n * variable to its original state\n * - page author updates the instance directly (i.e. in JS)\n *\n * Calling methods on the instance can be done using callVariableMethodAction. Example,\n * \"parameters\": {\n * \"variable\": \"$page.variables.incidentsListLDPV\",\n * \"method\": \"getCapability\",\n * \"params\": [ \"sort\" ]\n * }\n */\n class InstanceFactoryVariable extends Variable {\n constructor(scope, name, namespace, type, defaultValue, initialValue, descriptor, variableDef) {\n super(scope, name, namespace, type, defaultValue, initialValue, descriptor);\n this.variableDef = variableDef;\n this.dependencies = descriptor.dependencies;\n this.instanceFactoryTypeClass = undefined;\n this.prevValueWrapped = undefined;\n this.variableBridge = undefined;\n // empty array is assumed for constrcutorParams when none specified so reducer (see createReducer) pushes []\n // as the default value to store\n this.defaultValue = { constructorParams: defaultValue || [] };\n this.initialValue = initialValue || [];\n\n // TODO: limit writeback via expressions to properties\n this.writableOptions = { propertiesWritable: Constants.VariableWritablePropertyOptions.NONE };\n this.typeClassification = Constants.VariableClassification.INSTANCE_FACTORY;\n }\n\n /**\n * overridden to return the initial value to store in redux, which for instance factory variable includes the\n * constructorParams and the instance (yet to be created).\n * @see Variable#createReducer\n * @return {*}\n */\n getReducerInitialValue() {\n return { instance: undefined, constructorParams: this.initialValue };\n }\n\n /**\n * Create a redux action to be used in a call to the redux store.dispatch. This method is called from\n * setValue(). Always return a massaged value that includes the updated instance. Generally setValue() for\n * instanceFactoryType variables is always the instance.\n *\n * @param {Object} value the new value for the variable\n * @returns {{variable: Variable, type: string, value: *}}\n */\n createUpdateAction(value) {\n const rawStoreValue = this.getValueFromStore(true);\n if (rawStoreValue) {\n rawStoreValue.instance = value.instance;\n if (value.constructorParams) {\n rawStoreValue.constructorParams = value.constructorParams;\n }\n }\n return { type: Variable.UPDATE_ACTION_TYPE, variable: this, value: rawStoreValue };\n }\n\n /**\n * Returns a Promise that resolves when variable is fully initialized and active. When the variable has\n * dependencies then it waits to activate to complete on all variables it dependents on before initiating\n * activation.\n * @param currentScope\n * @param {Object} availableContexts\n * @return {Promise<*>} resolves when variable is active. Waits for referenced variables to be active before the\n * creating instance of current variable\n */\n activate(currentScope, availableContexts) {\n return this.activateAsync(currentScope, availableContexts);\n }\n\n /**\n * Activates variable asynchronously by loading referenced variables in order of dependency\n * @param currentScope\n * @param availableContexts\n * @return {*|Promise}\n * @private\n */\n activateAsync(currentScope, availableContexts) {\n this.activatePromise = this.activatePromise\n || this.activateReferencedVariables(currentScope, availableContexts).then(() => {\n // all referenced variables must be fully active at this point\n const currentValue = this.getValueFromStore();\n const constructorParams = currentValue && currentValue.constructorParams;\n return this.createInstanceAsync(constructorParams).then((newInstance) => {\n this.lifecycleStage = Constants.VariableLifecycleStage.ACTIVE;\n this.setValue({ instance: newInstance });\n this.log.finer('activated variable', this.name);\n });\n });\n return this.activatePromise;\n }\n\n /**\n * Locate the referenced variables, activate them and return when all is resolved\n * @param currentScope\n * @param availableContexts\n * @return Promise resolves when all referenced variables are active\n * @private\n */\n activateReferencedVariables(currentScope, availableContexts) {\n const referencedVars = (this.dependencies && this.dependencies.variables) || [];\n if (referencedVars.length > 0) {\n const suppVarsPromises = [];\n referencedVars.forEach((sVar) => {\n const refVar = sVar;\n if (refVar) {\n const scope = availableContexts[refVar.scopeName] || currentScope;\n const variable = scope.getVariable(refVar.variableName, Constants.VariableNamespace.VARIABLES);\n refVar.variable = variable;\n suppVarsPromises.push(variable.activate(currentScope, availableContexts));\n }\n });\n return Promise.all(suppVarsPromises);\n }\n return Promise.resolve();\n }\n\n /**\n * returns the serialized state for this variable. Discard any properties that are expression that might be other\n * instance factory types.\n * @return {*}\n */\n serialize() {\n // TODO: are there issues with dropping instances entirely?\n const REPLACER_FUNC = (k, v) => ((Utils.isCloneable(v) || Utils.isPrimitive(v)) ? v : undefined);\n const currentValue = this.getValueFromStore();\n const constructorParams = currentValue && currentValue.constructorParams;\n\n return JSON.stringify(constructorParams, REPLACER_FUNC);\n }\n\n /**\n * Instance Factory types need to store both the instance and the constructorParams in redux so\n * ko subscriptions work when dependents change. The value returned by this computed is an Object containing\n * both the instance and the constructorParams.\n * @param raw\n */\n getComputedValueObservable(raw = false) {\n return ko.computed(() => {\n // this computed is called both when retrieving the value of the variable and also when a referenced variable\n // changes on the constructorParams. For the latter case we diff the latest value in store with the last known\n // value (of constructorParams). If there is a diff then we create a new instance, update store and return\n // new value. We only do this after an instance has been created post-activate.\n\n let valueInStoreWrapped = this.getValueFromStore(raw);\n\n if (this.prevValueWrapped && this.prevValueWrapped.constructorParams) {\n if (this.prevValueWrapped.instance === valueInStoreWrapped.instance) {\n // It's unclear if a diff of the constructorParams is needed before creating a new instance as the computed\n // value is being re-evaluated because ko detected a change in the constructorParams\n\n // TODO: can a ko computed be async to resolve its value?!\n const newInstance = this.createInstance(valueInStoreWrapped.constructorParams);\n const oldValue = UPDATE_PREV_VALUE_FUNC(this.prevValueWrapped,\n newInstance, valueInStoreWrapped.constructorParams);\n\n // this would update the instance in the store\n const updateStoreValue = this.createUpdateAction({ instance: newInstance });\n this.log.finer('Updating variable', this.name, 'with a new instance value,', updateStoreValue);\n this.scope.store.dispatch(updateStoreValue);\n if (this.scope.silent === false) {\n // re-fetch new value from store\n valueInStoreWrapped = this.getValueFromStore(raw);\n this.dispatchChangeEvent(oldValue, valueInStoreWrapped);\n }\n } else {\n UPDATE_PREV_VALUE_FUNC(this.prevValueWrapped,\n valueInStoreWrapped.instance, valueInStoreWrapped.constructorParams);\n }\n }\n\n // to update instance during activation\n if (!this.prevValueWrapped && valueInStoreWrapped.instance) {\n this.prevValueWrapped = this.prevValueWrapped || {};\n UPDATE_PREV_VALUE_FUNC(this.prevValueWrapped, valueInStoreWrapped.instance,\n valueInStoreWrapped.constructorParams);\n // re-fetch wrapped value from store\n valueInStoreWrapped = this.getValueFromStore(raw);\n }\n\n this.triggerObservable();\n return valueInStoreWrapped;\n });\n }\n\n /**\n * called in teh following situations:\n * i. when the instance is set as is (during activation or when caller sets it using assignVars / component\n * writebacks?)\n * ii. when the constructorParams is changed (during assignVars, or using property writebacks)\n * iii. when both are set.\n * @param value\n */\n setValueInternal(value) {\n // if the scope has not yet been hooked up with the store, simply change the initialValue\n // this can occur in a personalization variable if retrieval of the data happens quickly\n if (!this.scope.store) {\n this.initialValue = value;\n return;\n }\n\n const currentValue = this.getValueFromStore();\n const unwrappedValue = Variable.unwrapAndClone(value);\n if (!unwrappedValue.instance || (currentValue.instance === unwrappedValue.instance)) {\n // when the instance in store is the same as the instance in value, or when value has no instance, then create\n // a new instance using the constructorParams. Assume for now that constructorParams have changed. Ideally\n // we need to diff to make sure there are changes before updating redux.\n // TODO: sanity check constructorParams are valid!\n const wrappedCP = this.getWrappedValue(unwrappedValue.constructorParams\n || currentValue.constructorParams);\n const newInstance = this.createInstance(wrappedCP);\n unwrappedValue.instance = newInstance;\n }\n\n const updateActionResult = this.createUpdateAction(unwrappedValue);\n const finalStoreValue = updateActionResult.value;\n\n // Only log when level is finer. This is to avoid fetching the value unnecessarily.\n if (this.log.isFiner) {\n if (ko.isObservable(value)) {\n this.log.finer('Updating variable', this.name, 'to an expression =', finalStoreValue());\n } else {\n this.log.finer('Updating variable', this.name, 'to', finalStoreValue);\n }\n }\n\n // update the store and event\n this.scope.store.dispatch(updateActionResult);\n if (this.scope.silent === false) {\n // we need to re-fetch the variable otherwise we will not evaulate expressions\n // contained within it (then freeze it to make sure no one attempts to write to it)\n const newValue = this.getValue();\n this.dispatchChangeEvent(currentValue, newValue);\n }\n }\n\n /**\n * Creates new instance of the 'type' class\n * @param {Object} constructorParams\n *\n * @returns {Promise} resolves with the activated instance\n * @private\n */\n createInstanceAsync(constructorParams) {\n return Promise.resolve().then(() => {\n // when instance type is not specified with vb/InstanceFactory the type name is assumed to be the instance type\n const matchType = this.type.match(MODULE_CLASS_PATTERN);\n this.type = Array.isArray(matchType) ? matchType[1] : this.variableDef.type;\n\n return Utils.getResource(this.type).then((RealTypeClass) => {\n this.instanceFactoryTypeClass = RealTypeClass;\n const args = constructorParams || this.initialValue;\n const instance = this.createInstance(args);\n const activatePromise = this.variableBridge ? this.variableBridge.activateAsync() : Promise.resolve();\n return activatePromise.then(() => (instance));\n });\n });\n }\n\n /**\n * creates instance synchronously using either constructor or factory method\n * @param args\n *\n * @return the instance of the type\n */\n createInstance(args) {\n const type = this.type;\n const factoryMethod = this.createMethod;\n const RealClazz = this.instanceFactoryTypeClass;\n let clazzInstance;\n\n if (!factoryMethod) {\n clazzInstance = new RealClazz(...args);\n } else {\n clazzInstance = RealClazz[this.createMethod].call(null, ...args);\n }\n this.addContextToVBTypes(clazzInstance);\n const methodStr = this.createMethod ? `factory method ${this.createMethod}` : 'constructor';\n if (this.log.isFiner) {\n this.log.finer(' Created new instance for variable', this.name, 'of type', type, 'using', methodStr,\n 'and args', ...args);\n }\n return clazzInstance;\n }\n\n /**\n * For VB types provide a VariableBridge that allows these types to access internal VB methods.\n * @param clazzInstance\n */\n addContextToVBTypes(clazzInstance) {\n switch (this.type) {\n case 'vb/MultiServiceDataProvider2':\n case 'vb/ServiceDataProvider2':\n this.variableBridge = new VariableBridge(this.scope, clazzInstance);\n clazzInstance.setVariableBridge(this.variableBridge);\n break;\n default:\n break;\n }\n }\n\n /**\n * overridden so property handler can be setup for the instance property alone.\n * @param parentObject\n * @param propKey\n * @param propertyHandler\n * @param root\n */\n setupPropertyHandler(parentObject, propKey, propertyHandler, root) {\n const propValue = parentObject[propKey];\n\n if (propKey === 'instance' && propValue && Variable.isPrototypeInstance(propValue)) {\n propertyHandler.call(this, parentObject, propKey, propValue);\n } else {\n super.setupPropertyHandler(parentObject, propKey, propertyHandler, root);\n }\n }\n }\n return InstanceFactoryVariable;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/assignVariablesAction',[\n 'vb/action/action', 'vb/binding/expression', 'vb/private/utils', 'vb/private/action/assignmentHelper',\n 'vb/private/stateManagement/stateUtils', 'vb/private/constants', 'acorn', 'vb/private/log',\n 'vb/private/stateManagement/instanceFactoryVariable', 'vb/private/stateManagement/variable',\n], (Action, Expression, Utils, AssignmentHelper, StateUtils, Constants, Acorn, Log, InstanceFactoryVariable, Variable) => {\n const logger = Log.getLogger('/vb/action/builtin/assignVariablesAction');\n\n /**\n * The reset option determines whether or not to reset the target before an assignment. The default is 'toDefault'\n * which would set the target to its default value before assigning values to it. 'none' means override the existing\n * value. 'empty' means empty out the target before assignment.\n *\n * @type {{NONE: string, TO_DEFAULT: string}}\n */\n const RESET_OPTION = {\n NONE: 'none',\n TO_DEFAULT: 'toDefault',\n EMPTY: 'empty',\n };\n\n /**\n * The auto option controls whether to auto-assign all properties from the source to the corresponding properties of\n * the target. If auto is set to 'ifNoMapping', the default, auto-assignment will only be performed if no\n * mapping is provided. If auto is set to 'always', auto-assignment will always be performed first before any\n * mapping is applied.\n *\n * @type {{ALWAYS: string, IF_NO_MAPPING: string}}\n */\n const AUTO_OPTION = {\n ALWAYS: 'always',\n IF_NO_MAPPING: 'ifNoMapping',\n ASSIGNED: '_assigned', // indicate an object has already been auto-assigned (for internal use only)\n };\n\n /**\n * Assign Variable Function Syntax:\n * The new syntax simply calls an assign variable function on the page functions module:\n *\n * parameters: {\n * \"$page.variables.target1\": { \"functionName\": \"assignVarFunc\" }\n * }\n *\n * The assignVarFunc is meant to be generated by the DT using helper functions from AssignVariableHelper.\n * For example:\n *\n * assignVarFunc(helper, targetPrototype) {\n * const sourceVar = helper.get(\"$page.variables.source1\");\n * return helper.pick(targetPrototype, sourceVar);\n * }\n *\n * Metadata-driven Syntax:\n * This action is used to assign values to a set of variables. The action takes a map of target expression and\n * assignment metadata pairs. For example:\n *\n * parameters: {\n * \"$page.variables.target1\": { \"source\": $page.variables.source1 },\n * \"$page.variables.target2\": { \"source\": $page.variables.source2 }\n * }\n *\n * The target expression has to resolve to a variable or a variable's property if it's a structure. It has to be\n * prefixed with one of the following: $application.variables, $page.variables, $chain.variables, $variables and\n * followed by a variable name or a path to a variable property. For example:\n *\n * $application.variables.a\n * $page.variables.a.b\n * $variables.a.b.c (which is shorthand for $chain.variables.a.b.c)\n *\n * Furthermore, the expression can be arbitrarily complex as long as it is a valid JavaScript expression and satisfies\n * the above constraints. For example:\n *\n * $page.variables[$page.variables.varName]\n * $page.variables.targetArray[$page.functions.getArrayIndex() + 1][$page.variables.propName]\n *\n * The assignment metadata has the following format:\n * {\n * \"source\": \"some expression\", /\n * \"reset\": \"none\", // default to \"toDefault\"\n * \"auto\": \"always\", // default to \"ifNoMappings\"\n * \"mapping\": { ... }\n * }\n *\n * The \"source\" expression can be an arbitrary expression that evaluates to a primitive value, an object or an array.\n *\n * The \"reset\" option can be either \"toDefault\" (which is the default), \"none\" or \"empty. The \"toDefault\" options\n * means that the action will first reset the target to its default value before assignment. The \"none\" option means\n * to override the existing value. The 'empty' option means empty out the target before assignment.\n *\n * The auto option controls whether to auto-assign all properties from the source to the corresponding properties of\n * the target. If auto is set to 'ifNoMapping', the default, auto-assignment will only be performed if no\n * mapping is provided. If auto is set to 'always', auto-assignment will always be performed first before any\n * mapping is applied.\n *\n * The \"mapping\" is a piece of metadata used to provide fine-grained control over what gets assigned from the source\n * to the target.\n *\n * If no mapping is provided or the auto option is set to 'always', the assign action will auto-assign the source to\n * the target. If the source is an object, auto-assignment will recursively assign each property in the source object\n * to the corresponding property in the target object. (Note that if the target property is an object and the source\n * property is a primitive or vice versa, no assignment will be made). If the target is an array, the source will be\n * treated as an array if it is not one already. For each row of the source array, a default row will be created and\n * appended to the target array and the source row is auto-assigned to the target row.\n *\n * If the target does not have a wildcard (any or object) type, the assignment mode will be auto. Otherwise, it will\n * be treated as a direct assignment with the exception where if both the target and the source are objects\n * (not array), the source will be merged into the target. If you want to directly assign the source to the target\n * in this case, you'll need to set the reset option to 'empty'.\n *\n * If mapping is provided and the auto option is set to 'ifNoMapping', instead of auto-assigning the source to the\n * target, assignment will be performed according to the mapping. For example:\n *\n * \"$page.variables.target\": {\n * \"source\": \"{{ $page.variables.source }}\",\n * \"mapping\": {\n * \"$target.a\": \"$source.b\",\n * \"$target.b.c\": \"$source.c.b\"\n * }\n * }\n *\n * $target is an implicit variable that refers to $page.variables.target. Similarly, $source is an implicit variable\n * that refers to $page.variables.source if it's a primitive or an object. In the case where $page.variables.source\n * is an array, $source will refer to a row in the array. Furthermore, just like the \"source\" expression, the\n * right-hand-side values of the mapping are also expressions. In the above example, $source.b will be auto-assigned\n * to $target.a and $source.c.b to $target.b.c.\n *\n * The mapping can also be nested. For example:\n *\n * \"$page.variables.target\": {\n * \"source\": \"{{ $page.variables.source }}\",\n * \"mapping\": {\n * \"$target.a\": \"$source.b\",\n * \"$target.b\": {\n * \"source\": \"$source.c\",\n * \"mapping\": {\n * \"$target.c\": \"$source.b\"\n * }\n * }\n * }\n * }\n *\n * In the nested mapping, $target will refer to the closest target expression which is $target.b. Similarly, $source\n * will refer to the closest source which is $source.c. This example is equivalent to the previous example without\n * the nested mapping. Note that the reset option can also be specified in the nested mapping which can be used\n * to override the reset option for the parent mapping.\n *\n */\n class AssignVariablesAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.availableContexts = null;\n this.log = logger;\n }\n\n /**\n * @param parameters\n * @returns on success, Outcome {name: \"success\"}. On failure throws the first caught exception\n */\n perform(parameters) {\n let exception;\n Object.keys(parameters).some((targetExpr) => {\n const md = parameters[targetExpr];\n\n try {\n if (md.functionName) {\n this.assignUsingFunction(targetExpr, md.module, md.functionName, md.params);\n } else {\n // handle deprecated syntax\n const resetOption = md.reset || RESET_OPTION.TO_DEFAULT;\n const autoOption = md.auto || AUTO_OPTION.IF_NO_MAPPING;\n const targetInfo = this.assignUsingMetadata(targetExpr, md.source,\n md.mapping, {\n resetOption,\n autoOption,\n availableContexts: this.availableContexts,\n });\n\n // For now, we need to assign the root value to the variable to trigger a write to the store.\n // TODO: remove this code once we support using the assign action as the reducer for the redux store\n if (targetInfo.rootObj && targetInfo.rootPropName) {\n const tRValue = targetInfo.rootValue;\n this.log.info('Action', this.logLabel, 'assigning variable', targetExpr, 'to', tRValue);\n targetInfo.rootObj[targetInfo.rootPropName] = tRValue;\n }\n }\n return false; // keep calling some()\n } catch (e) {\n // let the parent logger get this, so it actually has the action id\n // this.log.error(`Error executing action (${this.actionId})`, e);\n exception = e;\n return true; // terminate the some()\n }\n });\n\n // this should just throw the error\n // return failed ? Action.createOutcome('failure', exception) : Action.createOutcome('success');\n if (exception) {\n throw exception;\n }\n return Action.createSuccessOutcome();\n }\n\n /**\n * Inject the available contexts for expression evaluations.\n *\n * @param availableContexts the available contexts such as $application, $page, etc\n */\n setAvailableContext(availableContexts) {\n this.availableContexts = availableContexts;\n }\n\n /**\n * Perform the assignment using the custom page function specified by functionName.\n *\n * @param targetExpr the target expression string\n * @param functionName the name of the custom page function\n * @param parms\n */\n assignUsingFunction(targetExpr, module = undefined, functionName, parms) {\n const params = parms || [];\n const mod = module || this.availableContexts.$page.functions;\n const assignVarFunc = mod[functionName];\n if (!assignVarFunc) {\n throw new Error(`Custom function ${functionName} does not exist.`);\n }\n\n const targetInfo = this.analyzeTargetExpr(targetExpr, { availableContexts: this.availableContexts });\n\n // make the prototype value available to the helper so it can be used for picking arrays\n const helper = new AssignmentHelper(this.availableContexts, targetInfo.type);\n\n // the prototype value passed into the assign variable function needs to have arrays emptied\n const defaultValue = Utils.emptyArrays(Utils.cloneObject(targetInfo.defaultValue));\n\n const instanceFactoryVar = targetInfo.typeClassification === Constants.VariableClassification.INSTANCE_FACTORY;\n const $source = assignVarFunc.apply(mod, [helper, defaultValue, ...params]);\n if (instanceFactoryVar) {\n // This workaround is done only for instanceFactory variables to stop from inadvertently breaking existing apps\n // that use function based assignment. The workaround addresses 2 problems -\n //\n // 1. There is a bug when using a function to assign value to existing variable, the unwrapped value\n // minus the computeds is getting written back to the store, wiping out any referenced variable dependencies.\n // Therefore it's preferable to use the metadata assignment so as not to lose the computeds in the unwrapped\n // value. Using the metadata assignment approach using 'auto' assignment always gets the store value and copies\n // over the changes.\n // 2. Another problem with function assignment is that writing back an array item does not work because\n // there are no setter wrappers for the array item itself. Example this does not work\n // \"module\": \"vb/action/builtin/assignVariablesAction\",\n // \"parameters\": {\n // \"$page.variables.incidentsListLDPV.constructorParams[0]\": {\n // \"module\": \"{{ $page.functions }}\",\n // \"functionName\": \"updateFilterCriterionForIncidents\" // this returns an item in the array\n // },\n // \"reset\": \"none\"\n // }\n const finalTI = this.performAutoAssignment(targetExpr, $source, undefined, targetInfo);\n // Assign the root value to the variable to trigger a write to the store.\n // TODO: remove this code once we support using the assign action as the reducer for the redux store\n if (finalTI.rootObj && finalTI.rootPropName) {\n const tRValue = targetInfo.rootValue;\n this.log.info('Action', this.logLabel, 'assigning variable', targetExpr, 'to', $source);\n finalTI.rootObj[finalTI.rootPropName] = tRValue;\n }\n } else {\n // create an expression to perform the final assignment\n const availableContexts = Object.assign({}, this.availableContexts, { $source });\n const assignExpr = Expression.createFromString(`${targetExpr} = $source`, availableContexts, false);\n this.log.info('Action', this.logLabel, 'assigning variable', targetExpr, 'to', $source);\n assignExpr();\n }\n }\n\n /**\n * Perform the assignment using metadata.\n *\n * @param targetExpr the target expression string\n * @param source the source value\n * @param mapping mapping metadata\n * @param baseTargetInfo analyzed info regarding the assignment target\n * @returns {*}\n */\n assignUsingMetadata(targetExpr, source, mapping, baseTargetInfo) {\n let targetInfo = this.analyzeTargetExpr(targetExpr, baseTargetInfo);\n\n // perform auto assignment if there are no mappings or if the auto option is set to always\n if (!mapping || targetInfo.autoOption === AUTO_OPTION.ALWAYS) {\n targetInfo = this.performAutoAssignment(targetExpr, source, mapping, targetInfo);\n }\n\n if (mapping) {\n const targetType = targetInfo.type;\n let $target = targetInfo.leafObj[targetInfo.leafPropName];\n const $source = source;\n\n targetInfo.resetOption = RESET_OPTION.NONE;\n\n if (Utils.isArrayType(targetType)) {\n $target = $target || [];\n const rowType = Utils.getArrayRowType(targetType);\n const sourceArr = Array.isArray($source) ? $source : [$source];\n\n for (let i = 0; i < sourceArr.length; i += 1) {\n const sourceRow = sourceArr[i];\n let targetRow;\n\n if (targetInfo.autoOption === AUTO_OPTION.ASSIGNED) {\n const rowIndex = ($target.length - sourceArr.length) + i;\n\n // if autoOption is assigned, that means we've already auto-assigned the sourceArr to $target\n // so we need to apply the mapping to the assigned rows in $target instead\n targetRow = $target[rowIndex];\n\n // if target row is null or undefined and the row type is an object type, we need to replace the row\n // with an empty structure so we don't get a NPE when assigning values into the row\n if ((targetRow === null || targetRow === undefined) && Utils.isObjectType(rowType)) {\n targetRow = StateUtils.buildVariableDefaults(null, null, rowType);\n $target[rowIndex] = targetRow;\n }\n } else if (Utils.isArrayType(rowType)) {\n targetRow = [];\n } else if (Utils.isObjectType(rowType)) {\n // create an empty target row using rowType\n targetRow = StateUtils.buildVariableDefaults(null, null, rowType);\n } else if (Utils.isAnyType(rowType)) {\n // for any type, determine the initial value for targetRow based on the sourceRow\n if (Array.isArray(sourceRow)) {\n targetRow = [];\n } else if (Utils.isObject(sourceRow)) {\n targetRow = {};\n }\n }\n\n const rowTargetInfo = {\n type: rowType,\n availableContexts: targetInfo.availableContexts,\n leafObj: targetRow,\n };\n\n this.assignUsingMapping(mapping, { $target: targetRow, $source: sourceRow }, rowTargetInfo);\n\n // don't append the row again if it's an auto-assigned row\n if (targetInfo.autoOption !== AUTO_OPTION.ASSIGNED) {\n $target.push(rowTargetInfo.rootValue);\n }\n }\n\n targetInfo.leafObj[targetInfo.leafPropName] = $target;\n } else {\n this.assignUsingMapping(mapping, { $target, $source }, targetInfo);\n }\n }\n\n return targetInfo;\n }\n\n /**\n * Does auto assignment when there are no mappings or if the auto option is set to always.\n * @param targetExpr\n * @param source\n * @param mapping\n * @param tInfo\n * @private\n */\n performAutoAssignment(targetExpr, source, mapping, tInfo) {\n const targetInfo = tInfo;\n // perform auto assignment if there are no mappings or if the auto option is set to always\n if (!mapping || targetInfo.autoOption === AUTO_OPTION.ALWAYS) {\n const helper = new AssignmentHelper(this.availableContexts, targetInfo.type);\n const leafValue = targetInfo.leafObj[targetInfo.leafPropName];\n\n if (leafValue && !Utils.isCloneable(source)) {\n if (targetInfo.type === 'object') {\n logger.warn('Assigning ', source, ' to ', targetExpr,\n ' will result in data being copied into an empty or existing object. If you intend to'\n + ' have the variable reference the source instance, change the variable type to any or make the'\n + ' instance directly available on $page.functions instead.');\n } else if (targetInfo.type === 'any') {\n logger.warn('Assigning ', source, ' to ', targetExpr,\n ' will result in data being copied into the existing instance held by the variable. If you '\n + 'intend to replace the variable with the new source instance, set the reset option to empty.');\n }\n }\n\n // using pick to perform auto assignment\n targetInfo.leafObj[targetInfo.leafPropName] = helper.pick(leafValue, source);\n\n // set autoOption to assigned so we don't auto-assigned the properties again when processing the mappings\n if (targetInfo.autoOption === AUTO_OPTION.ALWAYS) {\n targetInfo.autoOption = AUTO_OPTION.ASSIGNED;\n }\n }\n return targetInfo;\n }\n\n /**\n * Perform the assignment using the given mapping metadata.\n *\n * @param mapping mapping metadata\n * @param scope scope for evaluating the target and source expressions\n * @param baseTargetInfo analyzed info regarding the assignment target\n */\n assignUsingMapping(mapping, scope, baseTargetInfo) {\n const availableContexts = Object.assign({}, baseTargetInfo.availableContexts, scope);\n const targetInfo = Object.assign(baseTargetInfo, { availableContexts });\n\n Object.keys(mapping).forEach((lhs) => {\n const rhs = mapping[lhs];\n let source;\n let rhsMapping;\n\n if (typeof rhs === 'string') {\n source = Expression.createFromString(rhs, availableContexts, false)();\n targetInfo.resetOption = baseTargetInfo.resetOption;\n } else if (typeof rhs === 'object') {\n source = Expression.createFromString(rhs.source, availableContexts, false)();\n rhsMapping = rhs.mapping;\n\n // use the reset and auto options from the mapping if specified\n targetInfo.resetOption = rhs.reset || baseTargetInfo.resetOption;\n targetInfo.autoOption = rhs.auto || baseTargetInfo.autoOption;\n }\n\n const newTargetInfo = this.assignUsingMetadata(lhs, source, rhsMapping, targetInfo);\n if (targetInfo.leafPropName) {\n targetInfo.leafObj[targetInfo.leafPropName] = newTargetInfo.rootValue;\n } else {\n targetInfo.rootValue = newTargetInfo.rootValue;\n }\n });\n }\n\n /**\n * Parse the given expression and analyze its abstract syntax tree. The return value is a stack containing\n * name-value pairs of all the evaluated properties. The bottom of the stack should be one of the built-in\n * scope variables. For example, given the expression $page.variables.target, the stack would look at follow:\n *\n * stack:\n * 0: { name: '$page', value: [page context] }\n * 1: { name: 'variables', value: [namespace object] }\n * 2: { name: 'target', value: [value of target] }\n *\n * @param expr the expression string to parse and analyze\n * @param contexts the available contexts used for evaluating scope variables\n * @returns {[*]} the stack containing name-value pairs of all the evaluated properties\n */\n analyzeExprAst(expr, contexts) {\n const ast = Acorn.parse(expr, { ecmaVersion: 'latest' });\n if (ast.body.length !== 1) {\n throw new Error(`The target of an assignment must be a single expression: ${expr}`);\n }\n\n const stmt = ast.body[0];\n if (stmt.type !== 'ExpressionStatement') {\n throw new Error(`The target of an assignment must be an expression: ${expr}`);\n }\n\n const stack = [{ name: 'contexts', value: contexts }];\n this.analyzeExprNode(stmt.expression, expr, stack);\n\n // remove the contexts\n stack.splice(0, 1);\n\n return stack;\n }\n\n /**\n * Analyze an expression node.\n *\n * @param exprNode an expression node\n * @param expr the expression string\n * @param stack the stack containing name-value pairs of all the evaluated properties\n */\n analyzeExprNode(exprNode, expr, stack) {\n const type = exprNode.type;\n\n if (type === 'Identifier') {\n this.evalAndPushPropValue(exprNode.name, stack);\n } else if (type === 'MemberExpression') {\n this.analyzeObjNode(exprNode.object, expr, stack);\n this.analyzePropNode(exprNode.property, expr, stack);\n } else {\n throw new Error(`Invalid expression: ${this.getExprFragment(exprNode, expr)}`);\n }\n }\n\n /**\n * Analyze an object node.\n *\n * @param objNode and object node\n * @param expr the expression string\n * @param stack the stack containing name-value pairs of all the evaluated properties\n */\n analyzeObjNode(objNode, expr, stack) {\n const type = objNode.type;\n\n if (type === 'Identifier') {\n this.evalAndPushPropValue(objNode.name, stack);\n } else if (type === 'MemberExpression') {\n this.analyzeExprNode(objNode, expr, stack);\n } else {\n throw new Error(`Invalid object expression: ${this.getExprFragment(objNode, expr)}`);\n }\n }\n\n /**\n * Analyze a property node.\n *\n * @param propNode a property node\n * @param expr the expression string\n * @param stack the stack containing name-value pairs of all the evaluated properties\n */\n analyzePropNode(propNode, expr, stack) {\n const type = propNode.type;\n let propName;\n\n if (type === 'Literal') {\n propName = propNode.value;\n } else if (type === 'Identifier') {\n propName = propNode.name;\n } else {\n // if the property node is not a literal or identifier, extract the expression fragment for the property\n // node and directly evaluate it\n const contexts = stack[0].value;\n const propExpr = this.getExprFragment(propNode, expr);\n propName = Expression.createFromString(propExpr, contexts)();\n }\n\n this.evalAndPushPropValue(propName, stack);\n }\n\n /**\n * Evaluate the property value for the given propName by peeking at the stack. The result is pushed\n * onto the stack as a name-value pair.\n *\n * @param propName the property name\n * @param stack the stack to peak and push the result name-value pair\n */\n // eslint-disable-next-line class-methods-use-this\n evalAndPushPropValue(propName, stack) {\n const parentObj = stack[stack.length - 1];\n const value = parentObj && parentObj.value ? parentObj.value[propName] : undefined;\n stack.push({ name: propName, value });\n }\n\n /**\n * Extract an expression fragment from the given expr using the node's start and end indices.\n *\n * @param exprNode an expression node\n * @param expr the expression string from which to extract the fragment\n * @returns {string}\n */\n // eslint-disable-next-line class-methods-use-this\n getExprFragment(exprNode, expr) {\n return expr.substring(exprNode.start, exprNode.end);\n }\n\n\n /**\n * only allow assignment to certain namespaces\n * @param namespace\n * @returns {boolean}\n */\n static isValidTargetNamespace(namespace) {\n return namespace === Constants.VariableNamespace.VARIABLES || namespace === Constants.TRANSLATIONS_CONTEXT;\n }\n\n /**\n * if we are assigning to a variable that is NOT in the 'variables' namespace, assume that its 'builtin' internally\n * @param namespace\n * @returns {string}\n */\n static actualNamespace(namespace) {\n return (namespace === Constants.VariableNamespace.VARIABLES) ? namespace : Constants.VariableNamespace.BUILTIN;\n }\n\n /**\n * Return an error for missing namespace in the expression\n *\n * @param {String} targetExpr the target expression\n * @return {Error} the error object\n */\n static getMissingNamespaceError(targetExpr) {\n return new Error(`No namespace provided for target expression ${targetExpr}.`);\n }\n\n /**\n * Return an error for an invalid namespace in the expression\n *\n * @param {String} namespace the invalid namespace\n * @param {String} targetExpr the target expression\n * @return {Error} the error object\n */\n static getInvalidNamespaceError(namespace, targetExpr) {\n return new Error(`Invalid namespace ${namespace} in target expression ${targetExpr}.`);\n }\n\n /**\n * Return an error for missing variable name in the expression\n *\n * @param {String} targetExpr the target expression\n * @return {Error} the error object\n */\n static getMissingVariableNameError(targetExpr) {\n return new Error(`No variable name provided in target expression ${targetExpr}.`);\n }\n\n /**\n * Verify that an expression with base is valid. This method is called for expression having\n * $base.x or $extension.base.x\n * @param {String} targetExpr the target expression\n * @param {Array} stack an array of object with name and value for each level of the expression\n * @return {Object} the next scope to be validated\n */\n static checkBase(targetExpr, stack) {\n let scope = stack[0].value;\n\n if (stack.length < 3) {\n throw AssignVariablesAction.getMissingNamespaceError(targetExpr);\n }\n\n const baseName = stack[1].name;\n if (baseName !== Constants.VariableNamespace.VARIABLES) {\n if (baseName !== 'application' && baseName !== 'flow' && baseName !== 'page') {\n throw AssignVariablesAction.getInvalidNamespaceError(baseName, targetExpr);\n }\n\n // Change the scope to be at $base.application, $base.flow or $base.page\n scope = stack[1].value;\n\n // and remove page, flow or application from stack\n stack.splice(1, 1);\n }\n\n return scope;\n }\n\n\n /**\n * Analyze the target expression to determine the variable and its type and default value, etc.\n *\n * @param targetExpr the target expression\n * @param baseTargetInfo analyzed info regarding the assignment target\n * @returns {*}\n */\n analyzeTargetExpr(targetExpr, baseTargetInfo) {\n const targetInfo = Object.assign({}, baseTargetInfo);\n let scope;\n let defaultValue;\n let type;\n let leafObj;\n let leafPropName;\n\n const stack = this.analyzeExprAst(targetExpr, baseTargetInfo.availableContexts);\n if (stack.length < 1) {\n throw new Error('Invalid empty target expression.');\n }\n\n const scopeName = stack[0].name;\n if (Constants.ALL_SCOPES.indexOf(scopeName) !== -1) {\n if (scopeName !== '$variables') {\n scope = stack[0].value;\n\n if (stack.length < 2) {\n throw AssignVariablesAction.getMissingNamespaceError(targetExpr);\n }\n\n // With the introduction of $base, the namespace following up can be page, flow or application\n if (scopeName === '$base') {\n scope = AssignVariablesAction.checkBase(targetExpr, stack);\n } else if (scopeName === '$extension') {\n const baseName = stack[1].name;\n if (baseName !== 'base') {\n throw AssignVariablesAction.getInvalidNamespaceError(baseName, targetExpr);\n }\n\n // Remove $extension from stack\n stack.splice(0, 1);\n\n scope = AssignVariablesAction.checkBase(targetExpr, stack);\n }\n\n targetInfo.rootObj = stack[1].value;\n targetInfo.namespace = stack[1].name;\n\n if (targetInfo.namespace === Constants.VariableNamespace.CONSTANTS) {\n throw new Error(`Cannot assign a value to a constant in target expression ${targetExpr}.`);\n }\n\n if (!AssignVariablesAction.isValidTargetNamespace(targetInfo.namespace)) {\n throw AssignVariablesAction.getInvalidNamespaceError(targetInfo.namespace, targetExpr);\n }\n\n if (stack.length < 3) {\n throw AssignVariablesAction.getMissingVariableNameError(targetExpr);\n }\n targetInfo.rootPropName = stack[2].name;\n\n stack.splice(0, 3);\n } else {\n // for $variables, the scope is $chain\n scope = targetInfo.availableContexts.$chain;\n\n targetInfo.namespace = scopeName.substring(1);\n targetInfo.rootObj = stack[0].value;\n\n if (stack.length < 2) {\n throw AssignVariablesAction.getMissingVariableNameError(targetExpr);\n }\n targetInfo.rootPropName = stack[1].name;\n\n stack.splice(0, 2);\n }\n\n const rootValue = targetInfo.rootObj[targetInfo.rootPropName];\n\n // only an instance of extendedType has an internal variables for its properties, e.g., ServiceDataProvider\n if (Utils.isExtendedType(rootValue)) {\n targetInfo.rootPropName += Constants.BuiltinVariableName.VALUE;\n }\n\n const variable = scope.getVariable(targetInfo.rootPropName,\n AssignVariablesAction.actualNamespace(targetInfo.namespace));\n\n if (!variable) {\n throw new Error(`Variable ${targetInfo.rootPropName} does not exist in target expression ${targetExpr}.`);\n }\n\n targetInfo.typeClassification = variable.typeClassification;\n\n // TEMPORARY: need to clone the variable's data without any expressions getting evaluated\n targetInfo.rootValue = variable.cloneData();\n\n defaultValue = variable.createNewValue();\n type = variable.getType();\n } else {\n // $target\n targetInfo.rootObj = targetInfo.leafObj;\n targetInfo.rootPropName = targetInfo.leafPropName;\n targetInfo.rootValue = stack[0].value;\n defaultValue = targetInfo.defaultValue;\n type = targetInfo.type;\n stack.splice(0, 1);\n }\n\n if (stack.length > 0) {\n leafObj = targetInfo.rootValue;\n\n for (let i = 0; i < stack.length; i += 1) {\n const item = stack[i];\n const propName = item.name;\n\n if (i < stack.length - 1) {\n leafObj = leafObj[propName];\n }\n\n leafPropName = propName;\n\n if (Utils.isWildcardType(type)) {\n // a dereferenced wildcard type should aways be any\n type = 'any';\n } else if (Utils.isArrayType(type)) {\n type = Utils.getArrayRowType(type);\n } else if (Utils.isObjectType(type)) {\n type = type[propName];\n }\n\n if (defaultValue) {\n if (Array.isArray(defaultValue)) {\n // can't deference an array default value so build it from the type\n defaultValue = StateUtils.buildVariableDefaults(null, null, type);\n } else {\n if (typeof defaultValue === 'function') {\n // when evaluating the target variable expression if the token de-references into an\n // expression, then the assignment is not a supported usecase. Throw an error to\n // user suggesting an alternate assignment.\n const parentName = stack[(i > 0 ? i - 1 : 0)].name;\n const err = `Detected an unsupported assignment: ${targetExpr}! Either assign `\n + `a literal value to '${parentName}' directly, or assign to the variable that `\n + `${parentName}' references!`;\n throw err;\n }\n defaultValue = defaultValue[propName];\n }\n }\n }\n } else {\n leafObj = targetInfo;\n leafPropName = 'rootValue';\n }\n\n if (targetInfo.resetOption === RESET_OPTION.TO_DEFAULT) {\n leafObj[leafPropName] = Utils.cloneObject(defaultValue);\n } else if (targetInfo.resetOption === RESET_OPTION.EMPTY) {\n let emptyValue;\n if (Utils.isArrayType(type)) {\n emptyValue = [];\n } else if (Utils.isObjectType(type)) {\n // create an empty object with undefined properties using the type\n emptyValue = StateUtils.buildVariableDefaults(null, null, type);\n } else {\n emptyValue = undefined;\n }\n leafObj[leafPropName] = emptyValue;\n }\n\n targetInfo.leafObj = leafObj;\n targetInfo.leafPropName = leafPropName;\n targetInfo.defaultValue = defaultValue;\n targetInfo.type = type;\n\n return targetInfo;\n }\n\n static get RESET_OPTION() {\n return RESET_OPTION;\n }\n }\n\n return AssignVariablesAction;\n});\n\n","'use strict';\n\n/* global BarcodeDetector */\n\ndefine('vb/action/builtin/barcodeAction',['vb/action/action', 'vb/private/log'], (Action, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/barcodeAction');\n // detector should be reused because it can allocate and hold significant resources.\n let defaultDetector;\n\n /**\n * BarcodeAction enables web applications to decode information from QR codes and barcodes, such as urls,\n * wi-fi connections and contact information.\n *\n * BarcodeAction has two parameters:\n *
  • image an image object (either a CanvasImageSource, Blob, ImageData or an element) to decode\n *
  • formats an (optional) a series of barcode formats to search for. For example, one, or more of\n * the following:\n * ['aztec', 'code_128', 'code_39', 'code_93', 'codabar', 'data_matrix', 'ean_13', 'ean_8', itf', 'pdf417',\n * 'qr_code', 'upc_a', 'upc_e']\n * Not all formats may be supported on all platforms.\n * If formats is not specified, the browser will search all supported formats, so limiting the search to a particular\n * subset of supported formats is likely to provide better performance.\n * @see [BarcodeDetectorOptions]{@link https://wicg.github.io/shape-detection-api/#dictdef-barcodedetectoroptions}\n *\n * An example below illustrates BarcodeAction metadata for reading QRCode from an HTML image element:\n *
    \n   *   \"parameters\": {\n   *   \"image\": \"[[ document.querySelector('#qrcode') ]]\",\n   *   \"formats\": \"[[ [ 'qr_code' ] ]]\",\n   *   },\n   * 
    \n * A success outcome will include DetectedBarcode object as a result. DetectedBarcode\n * has a rawValue property that corresponds to the decoded string.\n * @see [DetectedBarcode]{@link https://wicg.github.io/shape-detection-api/#detectedbarcode}\n *\n * A failure outcome is returned when browser does not support Shape Detection API, or a specified format is not\n * supported.\n *\n * @see {@link https://wicg.github.io/shape-detection-api/#barcode-detection-api}\n */\n class BarcodeAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n * @param parameters\n * @returns {Promise} Outcome {name: \"success\"}, once barcode detection completed or {name: \"failure\"},\n * when BarcodeDetector is not supported by the browser, or a specified format is not supported.\n */\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n if (!('BarcodeDetector' in window && 'getSupportedFormats' in BarcodeDetector)) {\n const msg = 'Shape Detection API is not supported in the browser';\n return Action.createFailureOutcome(msg, new Error(msg));\n }\n const image = parameters.image;\n const formats = parameters.formats;\n if (!this.checkImage(image)) {\n this.log.error(`(${this.logLabel}): ${this.errorMessage}`);\n return Action.createFailureOutcome(this.errorMessage, new TypeError(this.errorMessage));\n }\n\n return BarcodeDetector.getSupportedFormats()\n .then((supportedFormats) => {\n // check whether format is supported\n const supported = this.checkFormats(supportedFormats, formats);\n if (supported) {\n let outcome;\n const barcodeDetector = this.getBarcodeDetector(formats);\n return barcodeDetector.detect(image)\n .then((barcodes) => {\n if (barcodes && barcodes.length > 0) {\n // return DetectedBarcode as a result. Clients can access url as $chain.results.barcodeAction.rawValue\n outcome = Action.createSuccessOutcome(barcodes[0]);\n } else {\n const msg = 'No barcodes detected';\n outcome = Action.createFailureOutcome(msg, new Error(msg));\n }\n return outcome;\n });\n }\n const msg = `${formats} ${(formats && formats.length > 1) ? 'are' : 'is'} not supported by the browser`;\n return Action.createFailureOutcome(msg, new Error(msg));\n })\n .catch((error) => {\n this.log.error(`(${this.logLabel}): ${error.message}`);\n return Action.createFailureOutcome(error.message, error, error.code);\n });\n }\n\n /**\n * Creates a BarcodeDetector corresponding to specified formats. A default detector is cached upon creation for\n * reuse.\n * @param formats an array of requested formats\n * @returns {BarcodeDetector} a BarcodeDetector object\n */\n // eslint-disable-next-line class-methods-use-this\n getBarcodeDetector(formats) {\n let barcodeDetector;\n if (formats === undefined) {\n if (defaultDetector === undefined) {\n defaultDetector = new BarcodeDetector();\n }\n barcodeDetector = defaultDetector;\n } else {\n barcodeDetector = new BarcodeDetector({ formats });\n }\n return barcodeDetector;\n }\n\n /**\n * Detects missing image parameter.\n * @see https://web.dev/shape-detection/\n * BarcodeDetector.detect() takes an ImageBitmapSource as an input (that is, either a CanvasImageSource, a Blob,\n * or ImageData), however, strict type checking is not enforced here, because detect() method will fail anyway\n * given an invalid input.\n *\n * @param {*} image\n */\n checkImage(image) {\n if (!image) {\n this.errorMessage = 'BarcodeAction image parameter must be specified';\n return false;\n }\n return true;\n }\n\n /**\n * Verifies whether specified formats parameter is valid. A valid formats parameter is either undefined,\n * or it is an array of individual formats that are supported by the browser.\n * @param supportedFormats an array of formats supported by the browser. For example:\n * ['aztec', 'code_128', 'code_39', 'code_93', 'codabar', 'data_matrix', 'ean_13', 'ean_8', itf', 'pdf417',\n * 'qr_code', 'upc_a', 'upc_e']\n * @param formats formats requested by the BarcodeAction\n * @returns {boolean|*}\n */\n // eslint-disable-next-line class-methods-use-this\n checkFormats(supportedFormats, formats) {\n if (Array.isArray(formats)) {\n if (formats.length === 0) {\n // at least one format must be specified\n return false;\n }\n return formats.reduce((acc, curr) => acc && supportedFormats.find((f) => f === curr), true);\n }\n return true;\n }\n }\n return BarcodeAction;\n});\n\n","'use strict';\n\ndefine('vb/helpers/actionHelpers',[\n 'vb/private/stateManagement/router',\n], (Router) => {\n /**\n * A set of helper routines that require a context and are used by built-in actions.\n * The context is hidden using a closure.\n *\n */\n class ActionHelpers {\n constructor(context) {\n if (!context) {\n return;\n }\n\n Object.assign(this, {\n /**\n * Navigate to a page with input parameters.\n * This action is deprecated in favor of navigate action below\n * See https://confluence.oraclecorp.com/confluence/display/ABCS/VB+navigate+action\n *\n * @param {Object} options\n * @param {String} options.page The destination page path (required)\n * @param {Object} options.params A map of URL parameters (optional)\n * @param {String} options.history Effect on the browser history. Allowed value\n * are 'replace', 'skip' or 'push'. If the value is 'replace', the current browser\n * history entry is replaced, meaning that back button will not go back to it.\n * If the value is 'skip', the URL is left untouched. (optional and default is push)\n * @return {Promise} a Promise that resolves to an object with a property named\n * 'navigated' which value is true or false depending on the outcome of\n * the navigation.\n */\n navigateToPage(options) {\n return this.navigate(Object.assign(options, { operation: 'oldNavigateToPage' }));\n },\n\n /**\n * Navigate action\n *\n * @param {Object} options\n * @param {String} options.page - the path to the destination page. The path is absolute starting\n * at the application or relative to the current page. When use in combination with flow or appPackage,\n * the path cannot be absolute and it navigates to the page relative to the flow or appPackage.\n * @param {String} options.flow - the id of the destination flow. Change the content of the flow displayed\n * in the current page. When used in combination with a page property, navigates to the page in that flow.\n * @param {String} options.package - the id of the destination app-package. Change the content of the\n * app-package displayed in the host application. When used in combination with a page property, navigates\n * to the page in that app-package.\n * @param {Object} options.params - A map of URL parameters. Same as in the navigateToPage\n * action (optional)\n * @param {String} options.history - the type of operation on the browser history. Allowed value are 'replace',\n * 'skip' or 'push'. If the value is 'replace', the current browser history entry is replaced, meaning that back\n * button will not go back to it. If the value is 'skip', the URL is left untouched.\n * Same as in the navigateToPage action(optional and default is push)\n * @return {Promise} a Promise that resolves to an object with a property named\n * 'navigated' which value is true if a navigation occurred.\n */\n navigate(options) {\n return Router.queueNavigate(context.container, options);\n },\n\n /**\n * Navigate back to the previous page in browser history with input parameters.\n *\n * @param {Object} options - The set of options for the navigateBack action\n * @param {Array} options.params - The input parameters for the page\n * the action is going back to\n */\n navigateBack(options) {\n // Pass the current page instance\n Router.navigateBack(context.container, options);\n },\n });\n }\n }\n\n return ActionHelpers;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/variableFactory',['vb/private/stateManagement/variable',\n 'vb/private/stateManagement/instanceFactoryVariable',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/constants',\n 'vb/private/utils',\n], (Variable, InstanceFactoryVariable, StateUtils, Constants, Utils) => {\n /**\n * A variable factory that creates different kinds of variables based on its 'type'\n * - primitive (uses variable.js)\n * - object (- do -)\n * - extended type class (- do -): 'vb/ServiceDataProvider', 'fa/SearchDataProvider'\n * - any old type with no 'constructorParams' property: { type: 'oj/someRandomOJClass' }\n *\n * - all other types (uses instanceFactoryVariable.js) - any type that has a 'constructorParams' property will be\n * considered this new kind of variable. A fresh instance of the type is created every time its state changes.\n * It's state is really its 'constructorParams'\n */\n class VariableFactory {\n /**\n * Creates either a regular Variable or a InstanceFactoryVariable.\n * TODO: The current 'ExtendedType' variables are going to need some special casing\n * @param type The type of the variable (see StateUtils.getType() for type details)\n * @param options Object\n * @param options.scope\n * @param options.name The name of the variable\n * @param options.namespace optional, defaults to \"variables\"\n * @param options.type\n * @param options.defaultValue\n * @param options.initialValue\n * @param options.descriptor optional, example: {writable: false}. overrides other values.\n * For a full list of properties see constructor for Variable and InstanceFactoryVariable.\n * @return {DynamicServiceDataProvider} DynamicServiceDataProvider standalone instance\n */\n static createVariable(type, options) {\n const argsArr = (options && Object.values(options)) || [];\n const Clazz = Utils.isTypeDefInstanceFactory(type) ? InstanceFactoryVariable : Variable;\n return new Clazz(...argsArr);\n }\n }\n\n return VariableFactory;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/scope',[\n 'knockout',\n 'vb/private/stateManagement/variable',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/stateManagement/router',\n 'vb/private/utils',\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/private/action/assignmentHelper',\n 'vb/private/history',\n 'vb/private/stateManagement/variableFactory',\n], (ko, Variable, StateUtils, Router, Utils, Constants, Log, AssignmentHelper, History, VariableFactory) => {\n const logger = Log.getLogger('/vb/scope');\n\n class Scope {\n /**\n * A scope is a used to manage the state of a collection variables and constants.\n * The scope defines the lifespan and the storage of a variable.\n * @param {String} name A string use to name the scope. This will be used by the storage\n * mechanism. The name can be made unique using the { unique: true } option.\n * @param {Container} container the container object (page, flow, etc) that this scope is build for.\n * It can be null, like for action chain.\n * @param {Object} options An object with property describing how the scope should be built.\n * There are 2 options available:\n * { unique: true } build a scope using a unique name, default is false.\n * { silent: true } variables in the scope will not dispatch a change event\n * @return {Scope} the new scope object\n */\n constructor(name, container, options = {}) {\n this.log = logger;\n\n if (options.unique === true) {\n this.name = `${name}/${Utils.generateUniqueId()}`;\n } else {\n this.name = name;\n }\n\n this.variablesDef = [];\n this.variableNamespaces = {};\n // namespace is one of 'variables, 'builtin', ...\n Object.values(Constants.VariableNamespace).forEach((namespace) => {\n this.variableNamespaces[namespace] = {};\n Object.defineProperty(this, namespace, {\n value: this.variableNamespaces[namespace],\n enumerable: true,\n });\n });\n\n this.silent = options.silent || false;\n\n // When creating a scope for a chain, container is null\n if (container) {\n // Used by getWebStorageItemName to generated an application specific storage key\n this.appId = container.application.definition.id;\n\n // store access to the container directly\n this.container = container;\n }\n\n // change listeners for persisted variables\n this.persistedVariablesListeners = [];\n\n // The object where sessionStorage and localStorage API exist\n // Having it defined as a property allows tests to inject a mock storage\n this.storageInterface = window;\n }\n\n /**\n * Collect all the variable reducers and return them in an array\n * @return {Array[function]} the reducers array\n */\n initVariableReducers() {\n const reducers = {};\n\n this.variablesDef.forEach((variable) => {\n // Redux does not have context when calling the reducers. so we need to bind\n // each reducer to the variable they are used for.\n reducers[variable.stateProperty] = variable.createReducer().bind(variable);\n });\n\n return reducers;\n }\n\n syncWithStore(store) {\n this.store = store;\n\n // When an extension is present, all the extension scopes are synched to the store\n // before the variables in the scope subscribe to the store\n if (!this.container || !this.container.extensions || Object.keys(this.container.extensions).length === 0) {\n this.subscribeVariablesToStore();\n }\n }\n\n subscribeVariablesToStore() {\n // For each variable, listen to state change and update the observable.\n // Since it's an observable, we don't worry about duplicate update.\n this.variablesDef.forEach((variable) => variable.subscribeToStore(this.store));\n }\n\n getState() {\n let state;\n\n if (this.store) {\n state = this.store.getState()[this.name];\n }\n\n return state;\n }\n\n /**\n * Create a variable in the scope.\n * If the variable already exist, nothing happens.\n *\n * @param {string} name The name of the variable\n * @param {string} namespace the namespace that this variable belongs to. Valid namespaces\n * are: state, data and metadata. A variable can only belong to one namespace.\n * @param {*} type The type of the variable (see StateUtils.getType() for type details)\n * @param {*} defaultValue The default value created from the variable definition (may\n * be a primitive, struct, or expr)\n * @param {*} inputParamValue value passed in from the caller\n * @param {*} descriptor An object to defines the behavior of the variable.\n * The values can be:\n * { writable: Boolean } to create a read-only variable.\n * { persisted: String } to define the type of persistence to use.\n * The type is a string that can take the value \"none\", \"device\",\n * \"session\" or \"history\".\n * { rateLimit: { timeout: Number } } to specify the timeout in milliseconds for\n * { input: String } the input value for the variable descriptor ('fromUrl',\n * 'fromCaller', ...) limiting how often onValueChanged should be fired.\n * { dependencies: Object}, a Map of dependencies (on other variables) for the current\n * variable. Contains 2 properties\n * expressions - Array of (variable) expressions that this variable configuration\n * references.\n * variables - Array of Objects representing the referenced variable info; where\n * each Object contains the following properties - scopeName, variableName. See\n * StateUtils.buildVariablesDependenciesGraph\n * @return {Variable} A Variable object\n */\n createVariable(name, namespace, type, defaultValue, inputParamValue, descriptor = {}, variableDef) {\n let variable = this.getVariable(name, namespace);\n\n if (variable) {\n return variable;\n }\n\n // This scenario should not occur and trying to make it work is not performant since the\n // redux reducer would have to be combined again.\n if (this.store) {\n throw new Error(`Cannot create a variable ${name} because the scope ${this.name} has been added to the store.`);\n }\n\n let persisted;\n const fromUrl = descriptor.input === 'fromUrl';\n const inputType = descriptor.persisted;\n if (inputType && inputType !== 'none') {\n persisted = inputType;\n }\n\n if (!namespace) {\n this.log.error('A namespace should be provided for the variable', name);\n } else if (this[namespace] === undefined) {\n this.log.error('The namespace', namespace, 'is not valid for the variable', name);\n }\n\n // Retrieve the initial value from the defaultValue, input parameter or persisted value\n // TODO: pavi: calculating initial value for type instances does not work\n // - for instance factory types the initialValues for constructorParams must be determined using\n // inputParamValue and persisted.\n // - for extended types it's the same behavior as instance factory types. It may also be required to apply\n // the new value on the sibling variables.\n // - for type instances initialized with no constructors it's a no op\n const initialValue = this.calculateInitialValue(name, namespace, type, defaultValue, inputParamValue, persisted);\n\n variable = VariableFactory.createVariable(type, {\n scope: this,\n name,\n namespace,\n type,\n defaultValue,\n initialValue,\n descriptor,\n variableDef,\n });\n\n this.variablesDef.push(variable);\n\n // variable created under namespace\n Object.defineProperty(this.variableNamespaces[namespace], name,\n {\n get() {\n return variable.getValue();\n },\n set(value) {\n variable.setValue(value);\n },\n enumerable: true,\n });\n\n // Listen to variable change to update persisted storage\n if (persisted || fromUrl) {\n const varChangeTracker = {\n eventSource: variable.onValueChanged,\n eventListener: (payload) => {\n // only persist the value if there is a diff\n if (payload.diff) {\n if (persisted) {\n const state = variable.serialize(payload.value);\n try {\n this.storePersistedValue(this.name, payload.namespace, payload.name, persisted, state);\n } catch (error) {\n this.log.error(error);\n }\n }\n if (fromUrl) {\n const defValue = Utils.resolveIfObservable(defaultValue);\n if (payload.value !== defValue) {\n // Update input parameters so that they can be restored on the back button\n const inputParameters = History.getInputParameters();\n inputParameters[payload.name] = payload.value;\n History.setInputParameters(inputParameters);\n\n History.setUrlParameter(payload.name, payload.value);\n // Immediately update the URL\n History.sync();\n }\n }\n }\n },\n };\n variable.onValueChanged.add(varChangeTracker.eventListener, this);\n this.persistedVariablesListeners.push(varChangeTracker);\n }\n\n return variable;\n }\n\n /**\n * Retrieve the initial value from the defaultValue, input parameter or persisted value\n * @param {string} name name of the variable\n * @param {string} namespace namespace for this variable\n * @param {string} type type\n * @param {*} defaultValue the default value\n * @param {*} inputParamValue the input parameter\n * @param {string} persisted the persisted type, either \"local\", \"session\", \"device\" or undefined\n * @return {*} the initial value\n */\n calculateInitialValue(name, namespace, type, defaultValue, inputParamValue, persisted) {\n let initialValue;\n try {\n // input parameter value takes precedence over persisted value\n if (inputParamValue !== undefined) {\n initialValue = inputParamValue;\n } else if (persisted) {\n // Load the persisted value before creating the variable so that the initial value is set\n const persistedValue = this.loadPersistedValue(this.name, namespace, name, persisted);\n\n if (persistedValue !== undefined && persistedValue !== null) {\n initialValue = StateUtils.restorePersistedValue(persistedValue, defaultValue);\n this.log.info('Loaded', persisted, 'persisted', namespace,\n Utils.getWebStorageItemName(this.appId, this.name, namespace, name),\n 'value:', initialValue);\n }\n }\n\n // make sure the initialValue is coerced into the variable's type\n // Note: This code cannot be in StateUtils.createVariableInitialValue because it introduces a circular\n // require dependency between StateUtils and AssignmentHelper.\n if (initialValue !== undefined) {\n initialValue = AssignmentHelper.coerceType(initialValue, type);\n }\n\n initialValue = StateUtils.createVariableInitialValue(defaultValue, initialValue);\n } catch (error) {\n // Do not break when the variable cannot be loaded/parsed, just log the error\n this.log.error(error);\n }\n\n return initialValue;\n }\n\n /**\n * Return the own property descriptors for the given variable.\n *\n * @param variable the variable from which to get the property descriptors\n * @returns {{[P in keyof any]: TypedPropertyDescriptor} & {[p: string]: PropertyDescriptor}}\n */\n static getVariablePropertyDescriptors(variable) {\n if (typeof Object.getOwnPropertyDescriptors === 'function') {\n return Object.getOwnPropertyDescriptors(variable);\n }\n\n // IE11 - Object.getOwnPropertyDescriptors is not implemented in IE so we create the descriptors\n // by iterating over the property names returned from Object.getOwnPropertyNames.\n const descriptors = {};\n Object.getOwnPropertyNames(variable).forEach((name) => {\n descriptors[name] = Object.getOwnPropertyDescriptor(variable, name);\n });\n return descriptors;\n }\n\n /**\n * Create and add a variable that references another variable.\n *\n * @param variableName the name of the reference variable\n * @param namespace the namespace for the reference variable\n * @param referencedVariable the referenced variable\n */\n createReferenceVariable(variableName, namespace, referencedVariable) {\n // create a shallow clone of the referenced variable\n // Note: Ideally, we would create a Proxy. However, since Proxy is not supported for IE11. we'll just create\n // a shallow clone.\n const referenceVariable = Object.create(\n Object.getPrototypeOf(referencedVariable),\n Scope.getVariablePropertyDescriptors(referencedVariable));\n\n // set the name and namespace for the reference variable\n referenceVariable.name = variableName;\n referenceVariable.namespace = namespace;\n\n // create an empty dispose function so we don't actually dispose the referenced variable\n referenceVariable.dispose = () => {};\n\n // add the variable proxy to the scope\n this.variablesDef.push(referenceVariable);\n\n // variable created under namespace\n Object.defineProperty(this.variableNamespaces[namespace], variableName,\n {\n get() {\n return referencedVariable.getValue();\n },\n set(value) {\n referencedVariable.setValue(value);\n },\n enumerable: true,\n });\n }\n\n /**\n * Remove a variable in the scope.\n * @param {string} name name of the variable to remove\n * @param {string} namespace\n * @return {boolean} true is a variable was removed\n */\n removeVariable(name, namespace = Constants.VariableNamespace.VARIABLES) {\n for (let i = 0; i < this.variablesDef.length; i += 1) {\n const variable = this.variablesDef[i];\n if (variable.name === name && variable.namespace === namespace) {\n this.variablesDef.splice(i, 1);\n\n if (this.variableNamespaces[namespace]) {\n delete this.variableNamespaces[namespace].name;\n } else {\n this.log.error('Unable to remove variable', name, 'in the namespace', namespace,\n 'because this namespace does not exist');\n }\n\n variable.dispose();\n\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Return a variable in the scope given its name.\n * @param {string} name the name of the variable\n * @param {string} namespace the namespace of the variable\n * @return {Variable} a Variable object\n */\n getVariable(name, namespace = Constants.VariableNamespace.VARIABLES) {\n for (let i = 0; i < this.variablesDef.length; i += 1) {\n const variable = this.variablesDef[i];\n if (variable.name === name && variable.namespace === namespace) {\n return variable;\n }\n }\n\n return undefined;\n }\n\n /**\n * Retrieve the value of a variable from one of three storage type.\n * 1) session: value is stored on the browser sessionStorage.\n * 2) device: value is stored on browser localStorage\n * 3) history: value is stored on the browser history state.\n * If the type is not any of those storage type, undefine is returned.\n *\n * @param {string} scopeName the name of scope for this variable\n * @param {string} namespace the namespace of the variable\n * @param {string} variableName the name of the variable\n * @param {string} type the type of persistence, 'session','device' or 'history'.\n * @return {*} the stored value\n */\n loadPersistedValue(scopeName, namespace, variableName, type) {\n let webStorageType;\n switch (type) {\n case 'history': {\n const serializedValue = History.getVariable(namespace, variableName);\n let value;\n if (serializedValue) {\n value = JSON.parse(serializedValue);\n }\n return value;\n }\n case 'device': webStorageType = 'local';\n break;\n\n case 'local': // backward compatilibity\n case 'session': webStorageType = type;\n break;\n\n default:\n return undefined;\n }\n\n const newName = Utils.getWebStorageItemName(this.appId, scopeName, namespace, variableName);\n // storage is either local or session\n const storage = `${webStorageType}Storage`;\n\n let value = this.storageInterface[storage].getItem(newName);\n // For backward compatibility, look if the value exist under the old name and\n // convert it to use the new name\n if (value === null || value === undefined) {\n const oldName = Utils.getWebStorageItemName('app', scopeName, namespace, variableName);\n value = this.storageInterface[storage].getItem(oldName);\n if (value) {\n // Store the value using the new name\n this.storageInterface[storage].setItem(newName, value);\n // and remove the old one\n this.storageInterface[storage].removeItem(oldName);\n }\n }\n\n // getItem never returns undefined, so can safely call JSON.parse with its result\n return JSON.parse(value);\n }\n\n /**\n * Save the value of a variable on one of three storage type.\n * 1) session: value is stored on the browser sessionStorage.\n * 2) device: value is stored on browser localStorage\n * 3) history: value is stored on the browser history state.\n * If the type is not any of those storage type, nothing is saved.\n *\n * @param {string} scopeName the name of scope for this variable\n * @param {string} namespace the namespace of the variable\n * @param {string} variableName the name of the variable\n * @param {string} type the type of persistence, 'session'. 'device' or 'history'\n * @param {*} value the serialized value to store\n */\n storePersistedValue(scopeName, namespace, variableName, type, value) {\n let webStorageType;\n const serializedValue = value;\n\n switch (type) {\n case 'history': {\n History.setVariable(namespace, variableName, serializedValue);\n // Immediately update the history\n History.sync();\n return;\n }\n case 'device': webStorageType = 'local';\n break;\n\n case 'local': // backward compatilibity\n case 'session': webStorageType = type;\n break;\n\n default:\n return;\n }\n\n const itemName = Utils.getWebStorageItemName(this.appId, scopeName, namespace, variableName);\n this.storageInterface[`${webStorageType}Storage`].setItem(itemName, serializedValue);\n }\n\n /**\n * Constants are stored directly in the scope, not in the redux store.\n * For maximum performance, constants are evaluated lazily and once evaluated,\n * they are redefined as readonly property.\n *\n * @param {string} name the constant name\n * @param {string} namespace the namespace that this constants belongs to.\n * Valid namespaces are \"constants\" and \"builtin\"\n * @param {string} type the type of the constant\n * @param {*} value the constant value (primitive or object)\n * @param {*} inputParamValue the value from the input parameter\n * @param {string} inputType either \"none\", \"local\", \"device\" or undefined\n * @param {Object} options an object to specify the behavior of the constant.\n * { freeze: false } specify if nested properties of the\n * constant should be frozen (immutable). Default is true\n */\n createConstant(name, namespace, type, value, inputParamValue, inputType, options = { freeze: true }) {\n let persisted;\n\n if (inputType && inputType !== 'none') {\n persisted = inputType;\n }\n\n if (namespace !== Constants.VariableNamespace.CONSTANTS\n && namespace !== Constants.VariableNamespace.BUILTIN) {\n // No need to throw an error. VB internal code controls what's the namespace is.\n return;\n }\n\n\n const initialValue = this.calculateInitialValue(name, namespace, type, value, inputParamValue, persisted);\n\n let getter;\n\n // this is to support constant with live expression.\n // Skip constants defined in a chain/action (when container is null)\n if (this.container && ko.isObservable(initialValue)) {\n // Create a variable to handle expression updates\n const variable = new Variable(this, name, namespace, type, value, initialValue);\n this.variablesDef.push(variable);\n\n // but only define a getter\n getter = () => variable.getValue();\n\n // variable created under namespace\n Object.defineProperty(this.variableNamespaces[namespace], name, {\n get: getter,\n enumerable: true,\n });\n\n return;\n }\n\n // Uses the lazy value pattern. The expression is evaluated only the first time\n // it is accessed then the getter become read-only with the finalValue.\n Object.defineProperty(this.variableNamespaces[namespace],\n name, {\n get() {\n // Evaluate any observable from expression in nested object properties and\n // deep freeze the object to enforce no changes\n const finalValue = Utils.deepResolve(initialValue, { freeze: options.freeze });\n\n // Once the final value is calculated, redefine the property as a value, so the\n // next time it is read, the value will be returned immediately.\n // Note that \"this\" here is this.variableNamespaces.constants\n Object.defineProperty(this, name, {\n value: finalValue,\n enumerable: true,\n });\n\n return finalValue;\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n /**\n * Called when a variable has been initialized and added to scope and is considered 'active', so subscribers can\n * be be notified that it's safe tor read the (variable) value\n * @param availableContexts\n */\n activateVariables(availableContexts) {\n this.log.info('Activate variables for scope', this.name);\n const promises = [];\n\n this.variablesDef.forEach((variable) => {\n promises.push(variable.activate(this, availableContexts));\n });\n return Promise.all(promises);\n }\n\n dispose() {\n this.log.info('Disposing scope', this.name);\n\n this.variablesDef.forEach((variable) => {\n variable.dispose();\n });\n\n this.variablesDef = [];\n this.variableNamespaces = {};\n Object.values(Constants.VariableNamespace).forEach((namespace) => {\n this.variableNamespaces[namespace] = {};\n });\n\n // clean up persisted variables listeners\n this.persistedVariablesListeners.forEach((tracker) => {\n tracker.eventSource.remove(tracker.eventListener);\n });\n }\n }\n\n return {\n createScope(name, container, options) {\n return new Scope(name, container, options);\n },\n };\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/redux/basicStoreManager',['vb/private/log', 'redux', 'redux-thunk'],\n (Log, Redux, Thunk) => {\n const log = Log.getLogger('/vb/stateManagement/redux/basicStoreManager');\n\n /**\n * A base class to manage a redux store.\n * Known subclass is undoStoreManager which support undo/redo for time travel.\n */\n class BasicStoreManager {\n constructor() {\n // The redux store\n this.store = null;\n // Array of reducers\n this.reducers = null;\n // Description used by the log\n this.name = 'redux store manager without Time Travel';\n }\n\n /**\n * Initialize the store manager. Create a redux store and apply middleware.\n * @param {Array} the reducers\n * @return {Store} the redux store\n */\n init(reds) {\n log.info('Initializing', this.name);\n if (this.store) {\n throw new Error('StoreManager is already initialized.');\n }\n\n this.reducers = reds;\n\n this.store = Redux.createStore(this.combineReducers(),\n {}, // No default state\n // Apply the thunk middleware to work with async action\n Redux.applyMiddleware(Thunk.default));\n\n return this.store;\n }\n\n /**\n * Combines the reducers. Subclass like underStoreManager have their own way to\n * combine reducers\n * @return {Function} A reducer that invokes every reducer inside the this.reducers object\n */\n combineReducers() {\n if (this.reducers) {\n return Redux.combineReducers(this.reducers);\n }\n return (state) => (state || {});\n }\n\n /**\n * Add a scope to the redux store. It combines the reducers for each variables\n * with the existing array of reducers\n * @param {Scope} scope a scope object\n */\n addScopeToStore(scope) {\n // Collect each variable reducer\n const variableReducers = scope.initVariableReducers();\n\n // If no variable in the scope yet, nothing to do\n if (Object.keys(variableReducers).length === 0) {\n return;\n }\n\n log.fine('Adding scope', scope.name);\n const red = this.reducers;\n\n const scopeReducer = Redux.combineReducers(variableReducers);\n\n if (red) {\n if (red[scope.name]) {\n throw new Error(`Scope ${scope.name} already exist in the store.`);\n }\n\n red[scope.name] = scopeReducer;\n } else {\n this.reducers = { [scope.name]: scopeReducer };\n }\n\n this.store.replaceReducer(this.combineReducers());\n\n scope.syncWithStore(this.getStore());\n }\n\n /**\n * Remove a scope from the redux store. It removes the scope reducers from the\n * array of reducers.\n * @param {Scope} scope a scope object\n */\n removeScopeFromStore(scope) {\n log.fine('Removing scope', scope.name);\n const red = this.reducers;\n\n if (!red) {\n return;\n }\n\n // Remove the reducer\n delete red[scope.name];\n // Delete the state keyed by id before calling replaceReducers otherwise\n // redux complains rightfully about state not match reducers.\n delete this.getState()[scope.name];\n\n this.store.replaceReducer(this.combineReducers());\n }\n\n /**\n * Return the state from the redux store\n * @return {Object} the state\n */\n getState() {\n return this.store.getState();\n }\n\n /**\n * Return the redux store\n * @return {Store} the redux store\n */\n getStore() {\n return this.store;\n }\n\n dispose() {\n this.store = null;\n this.reducers = null;\n }\n }\n\n return BasicStoreManager;\n });\n\n","'use strict';\n\n/**\n * Return a singleton storeManager. There two type of store manager, basic and undo.\n * The undo store has undo/redp support for time travel.\n * Which type to use could be controlled using an environment variable.\n * @return {StoreManager}\n */\n\ndefine('vb/private/stateManagement/redux/storeManager',['vb/private/stateManagement/redux/basicStoreManager'],\n (BasicStoreManager) => new BasicStoreManager());\n\n","'use strict';\n\ndefine('vb/private/translations/translationContext',['ojs/ojtranslation'], (ojTranslation) => {\n /**\n *\n */\n\n class TranslationContext {\n constructor() {\n throw new Error('TranslationContext is a set of static methods, do not call constructor');\n }\n\n /**\n * create an object with just properties we want to expose to the expression context\n * @param bundles\n * @returns {*}\n */\n static createContext(bundles) {\n // if no bundles yet, just return the utility method(s), and don't look up the key\n // just in case this is called before the bundles are loaded, which shouldn't happen\n if (!bundles) {\n return {\n format: (_, str, ...params) => ojTranslation.applyParameters(str, ...params),\n };\n }\n\n const utilities = {\n format: (bundleName, key, ...params) => {\n // if no bundleName is passed, assume they are referencing a bundle named 'format'\n if (arguments.length === 0) {\n return bundles.getStringMap().format;\n }\n\n // delegate formatting to the actual instance (BundleDefinition or BundleV2Definition).\n const bundleDef = bundles.bundleDefinitionsMap[bundleName];\n return bundleDef.format(key, ...params);\n },\n };\n\n return Object.assign({}, bundles.getStringMap(), utilities);\n }\n }\n\n // all static\n return TranslationContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/containerContext',['vb/private/constants', 'vb/private/translations/translationContext',\n], (Constants, TranslationContext) => {\n const symbol = Symbol('container-accessor');\n /**\n * a 'base' class for defining a set of properties available for binding, expression, and action contexts.\n * Intended to be subclassed for each of the various container types.\n *\n *\n * ContainerContext\n * |\n * +--------------------------+----------------------------+\n * | | |\n * FlowContext PageContext ExtensionContext\n * | |\n * +----------+-----------+ +---------------------+--------------------+\n * | | | | |\n * ApplicationContext AppPackageContext FlowExtensionContext PageExtensionContext LayoutExtensionContext\n *\n */\n class ContainerContext {\n /**\n * base class for subset of scope properties,\n * plus possibly some extra (like 'responsive', 'translations', etc) that doesn't belong in the scope.\n *\n * this is meant to create the bindable properties that are visible to the author.\n *\n * this class is intended to be subclassed.\n *\n * All namesakes like $flow, $application, $page, etc, will be subclasses of ContainerContexts.\n *\n * One 'weird' addition is getVariable(), used by AssignVariableAction. When creating a top-level\n * namesake ContainerContext, this method is added to allow access to the Scope variables. (This could\n * go in ActionHelpers, but I wasn't sure if we should expose this to application authors creating custom Actions).\n *\n * @param container\n */\n constructor(container) {\n // A closure to access 'this' in the lazy getter for the base property\n const self = this;\n\n Object.defineProperty(this, symbol,\n {\n value: {\n container,\n get scope() {\n return container.scope;\n },\n get bundles() {\n return container.bundles;\n },\n bundleContext: null,\n get baseContext() {\n // Lazily create the BaseContext because it's only needed when\n // an extension is using an expression with $base\n // We use self to point to the containerContext object, because `this`\n // here is the object returned by the symbol property.\n const context = new (self.constructor.BaseContextType)(container);\n // and redefine the property as a value for immediate access on the next get\n Object.defineProperty(this, 'baseContext', {\n value: context,\n enumerable: true,\n });\n\n return context;\n },\n get application() {\n let app;\n // Depending if the container is in a package or not, the content of the application\n // object is different. When in an app-package, the application object is only what is\n // defined in the interface.\n const appPackage = container.package;\n if (appPackage) {\n const extensionApplication = appPackage.application.extensions[appPackage.extensionId];\n app = extensionApplication.expressionContext.base;\n } else {\n app = container.application.expressionContext;\n }\n\n // and redefine the property as a value for immediate access on the next get\n Object.defineProperty(this, 'application', {\n value: app,\n enumerable: true,\n });\n\n return app;\n },\n },\n });\n }\n\n /**\n * baseContext is available on the expressionContext of any container but it\n * is only exposed by extensions of this container.\n * baseContext is the $base scope on extensions of this container\n * @return {BaseContext}\n */\n get baseContext() {\n return this[symbol].baseContext;\n }\n\n\n /**\n * Accessor for the variables namespace\n * @return {Object}\n */\n get [Constants.VariableNamespace.VARIABLES]() {\n const { scope } = this[symbol];\n // protect again variables not be being initialized\n return scope && scope.variableNamespaces[Constants.VariableNamespace.VARIABLES];\n }\n\n /**\n * Accessor for the metadata namespace\n * @return {Object}\n */\n get [Constants.VariableNamespace.METADATA]() {\n const { scope } = this[symbol];\n // protect again variables not be being initialized\n return scope && scope.variableNamespaces[Constants.VariableNamespace.METADATA];\n }\n\n /**\n * Accessor for the constants namespace\n * @return {Object}\n */\n get [Constants.VariableNamespace.CONSTANTS]() {\n const { scope } = this[symbol];\n return scope && scope.variableNamespaces[Constants.VariableNamespace.CONSTANTS];\n }\n\n /**\n * Accessor for the event listeners\n * @return {Object}\n */\n get listeners() {\n return this[symbol].container.eventListeners || {};\n }\n\n /**\n * Accessor for the module functions\n * @return {Object}\n */\n get functions() {\n return this[symbol].container.functions;\n }\n\n /**\n * Accessor for the chains definition?\n * @return {Object}\n */\n get chains() {\n return this[symbol].container.chains || {};\n }\n\n /**\n * Accessor for the translations\n * @return {Object}\n */\n get [Constants.TRANSLATIONS_CONTEXT]() {\n if (!this[symbol].bundleContext) {\n this[symbol].bundleContext = TranslationContext.createContext(this[symbol].bundles);\n }\n return this[symbol].bundleContext;\n }\n\n /**\n * Setter used by action chain tester to mock translation bundles.\n *\n * @param bundleContext mock bundle\n */\n set [Constants.TRANSLATIONS_CONTEXT](bundleContext) {\n const vbConfig = window.vbInitConfig || {};\n\n // only override if we are in action chain test mode\n if (vbConfig.TEST_MODE === Constants.TestMode.ACTION_CHAIN) {\n this[symbol].bundleContext = bundleContext;\n }\n }\n\n /**\n * Accessor for the application\n * @return {Object}\n */\n get application() {\n return this[symbol].application;\n }\n\n // special case, add the getVariable method from Scope\n getVariable(...args) {\n return this[symbol].scope.getVariable(...args);\n }\n\n /**\n * @param container\n *\n * this method is static because we need to be able to create the available contexts BEFORE\n * the individual XXXContext objects are creates, because we base the viewModel on the availableContexts object.\n *\n * these static methods still use class hierarchy for inheriting property accessors.\n *\n * @returns {{$application: *, $variables, $metadata}}\n */\n static getAvailableContexts(container) {\n const availableContexts = {};\n\n // make this function non-enumerable\n Object.defineProperty(availableContexts, 'clone', {\n enumerable: false,\n value: ContainerContext.cloneContext.bind(availableContexts),\n });\n\n Object.defineProperty(availableContexts, 'addAccessor', {\n enumerable: false,\n value: ContainerContext.addAccessor.bind(availableContexts),\n });\n\n\n // using defineProperties, and accessors for multiple reasons:\n // - make these un-settable\n // - allow us to create the ViewModel from this object, before calling run() (for Page in particular)\n // - for Page, something needs $flow and $application before Page.run(), so we don't actually\n // have an expressionContext the first time getAvailableContexts() is called - we don't want to create the\n // Scope before then. So, rather than create a $flow/$application only version of the available contexts,\n // using accessors allows the 'value' for $page (and its properties) be created after this\n // $todo: see if we can re-work the calls to getAvailableContexts() before run()\n Object.defineProperties(availableContexts, {\n $application: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.application,\n },\n $variables: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.variables,\n },\n $metadata: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.metadata,\n },\n $constants: {\n enumerable: true,\n configurable: true,\n get() {\n return container.expressionContext.constants;\n },\n },\n $chains: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.chains,\n },\n $functions: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.functions,\n },\n $listeners: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.listeners,\n },\n $imports: {\n enumerable: true,\n configurable: true,\n // imports are not exposed on the container context, instead only export '$imports' to limit scope to current\n // container. This will prevent '$flow.imports', '$application.imports' explicitly\n get: () => container.imports,\n },\n [`$${Constants.TRANSLATIONS_CONTEXT}`]: {\n enumerable: true,\n configurable: true,\n get: () => container.expressionContext.translations,\n },\n });\n\n if (container.package) {\n Object.defineProperty(availableContexts, '$package', {\n enumerable: true,\n configurable: true,\n get: () => container.package.expressionContext,\n });\n }\n\n return availableContexts;\n }\n }\n\n\n /**\n * this is a regular function, so that 'this' is bindable; shared with ActionChainContexts\n *\n * a simple shallow-ish clone, to handle accessors via property descriptors\n * also creates new arrays at ONLY the top level.\n *\n * good enough for contexts, for now, but requirements could change is contexts need more functionality\n */\n ContainerContext.cloneContext = function cloneContext() {\n const cloneObj = {};\n Object.keys(this).forEach((propertyName) => {\n const def = Object.getOwnPropertyDescriptor(this, propertyName);\n if (Array.isArray(def.value)) {\n def.value = def.value.slice();\n }\n Object.defineProperty(cloneObj, propertyName, def);\n });\n\n Object.defineProperty(cloneObj, 'clone', {\n enumerable: false,\n value: ContainerContext.cloneContext.bind(cloneObj),\n });\n\n Object.defineProperty(cloneObj, 'addAccessor', {\n enumerable: false,\n value: ContainerContext.addAccessor.bind(cloneObj),\n });\n\n return cloneObj;\n };\n\n\n /**\n * when the container needs to add something that does not already exist, instead of just defining a property\n * on the object, this is how it should be added. Makes it discoverable, and debuggable.\n * For example, ForEach action adds a $current\n */\n ContainerContext.addAccessor = function addAccessor(contextName, accessor) {\n if (contextName && typeof accessor === 'function') {\n Object.defineProperty(this, contextName, {\n enumerable: true,\n configurable: true,\n get: accessor,\n });\n }\n };\n\n\n return ContainerContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/actionChainContext',[\n 'vb/private/stateManagement/context/containerContext',\n 'vb/private/constants',\n], (ContainerContext, Constants) => {\n const symbol = Symbol('chain-accesssor');\n // todo: when ActionChain subclasses Container, this should also subclass ContainerContext\n class ActionChainContext {\n /**\n * @param chain\n */\n constructor(chain) {\n Object.defineProperty(this, symbol,\n {\n value: {\n chain,\n scope: chain.scope,\n },\n });\n }\n\n /**\n * $chain.variables\n * same as ContainerContext, but for ActionChain\n */\n get [Constants.VariableNamespace.VARIABLES]() {\n return this[symbol].scope.variableNamespaces.variables;\n }\n\n /**\n * $chain.metadata\n * same as ContainerContext, but for ActionChain\n */\n get [Constants.VariableNamespace.METADATA]() {\n return this[symbol].scope.variableNamespaces.metadata;\n }\n\n /**\n * $chain.constants\n * same as ContainerContext, but for ActionChain\n */\n get [Constants.VariableNamespace.CONSTANTS]() {\n return this[symbol].scope.variableNamespaces.constants;\n }\n\n /**\n * $chain.results\n * same as ContainerContext, but for ActionChain\n */\n get results() {\n return this[Constants.VariableNamespace.VARIABLES][Constants.RESULTS_VARIABLE_KEY];\n }\n\n\n // special case, add the getVariable method from Scope\n getVariable(...args) {\n return this[symbol].scope.getVariable(...args);\n }\n\n\n static getAvailableContexts(chain) {\n // todo: when this subclasses ContainerContext, this won't be necessary here\n const availableContexts = {};\n\n // make this function non-enumerable\n Object.defineProperty(availableContexts, 'clone', {\n enumerable: false,\n // sharing the clone function for now, until ActionChain extends Container\n value: ContainerContext.cloneContext.bind(availableContexts),\n });\n\n /**\n * see containerContext.js for description\n */\n Object.defineProperty(availableContexts, 'addAccessor', {\n enumerable: false,\n value: ContainerContext.addAccessor.bind(availableContexts),\n });\n\n\n // We can use \"value\" instead of \"get\" here, because expressionContext is always created first.\n Object.defineProperties(availableContexts, {\n $chain: {\n enumerable: true,\n configurable: true,\n value: chain.expressionContext,\n },\n $variables: {\n enumerable: true,\n configurable: true,\n value: chain.expressionContext.variables,\n },\n $metadata: {\n enumerable: true,\n configurable: true,\n value: chain.expressionContext.metadata,\n },\n $constants: {\n enumerable: true,\n configurable: true,\n value: chain.expressionContext.constants,\n },\n });\n\n return availableContexts;\n }\n }\n\n return ActionChainContext;\n});\n\n","'use strict';\n\ndefine('vb/private/debug/actionChainDebugStream',['vb/private/debug/debugStream', 'vb/private/utils', 'vb/private/debug/constants',\n 'vb/private/constants', 'vb/binding/expression'],\n (DebugStream, Utils, DebugConstants, Constants, Expression) => {\n /**\n * Debug stream for an action chain.\n */\n class ActionChainDebugStream extends DebugStream {\n constructor(actionChain) {\n super(DebugConstants.DebuggeeType.ACTION_CHAIN);\n\n // the action being debugged\n this.actionChain = actionChain;\n\n // the accumulated content of the stream\n this.content = {\n type: 'actionChainExecution',\n chainId: actionChain.id,\n execId: this.id,\n $chain: {\n actions: [],\n },\n };\n }\n\n /**\n * Set the locator used to look up the chain diagram on the debugger side. The container locator\n * is the url used by requirejs to load the container descriptor file.\n *\n * @param containerLocator the locator which is the url used to load the container descriptor\n */\n setChainLocator(containerLocator) {\n // append the action chain id to the the container locator\n this.chainLocator = `/${containerLocator}/${this.actionChain.id}/`;\n }\n\n /**\n * Clone the current variable state in $application, $package, $flow, $page and $chain.\n */\n cloneState() {\n const scopes = this.actionChain.availableContexts;\n const state = {};\n\n ['$chain', '$layout', '$page', '$flow', '$package', '$application'].forEach((scopeName) => {\n const scope = scopes[scopeName];\n\n if (scope) {\n state[scopeName] = {\n variables: DebugStream.cloneObject(scope.variables),\n constants: DebugStream.cloneObject(scope.constants),\n };\n }\n });\n\n return state;\n }\n\n /**\n * Suspend the action if we have reached a breakpoint and met the breakpoint condition if set.\n *\n * @param action the action to suspend\n * @returns {*}\n */\n suspendIfBreakpointReached(action) {\n if (this.isDebuggerInstalled) {\n const breakpointReached = Object.keys(this.breakpoints)\n .some((key) => {\n const bp = this.breakpoints[key] || {};\n\n // return true if there is a breakpoint set for this action and meets the condition if set\n return action.id.startsWith(`${key}_`) && bp.isSet && this.evalCondition(bp.condition);\n });\n\n if (!this.runUntilFinish && (this.stopAtNextAction || breakpointReached)) {\n this.stopAtNextAction = false;\n\n const actionState = this.content.$chain.actions.find(element => element.id === action.id);\n\n // inform the debugger that a breakpoint is reached\n this.fireStateChanged(DebugConstants.DebugState.ACTION_SUSPENDED, actionState);\n\n // suspend the action\n return this.suspend();\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Evaluation the expression for the breakpoint condition.\n *\n * @param condition expression for the breakpoint condition\n * @returns {boolean}\n */\n evalCondition(condition) {\n if (condition) {\n try {\n return condition ? Expression.createFromString(condition, this.actionChain.availableContexts)() : true;\n } catch (err) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Log the starting state of the action chain.\n */\n start() {\n if (this.isEnabled) {\n // log the context before the chain is executed\n this.content.$chain.beforeContext = this.cloneState();\n\n return this.registerDebuggee()\n .then(() => this.fireStateChanged(DebugConstants.DebugState.CHAIN_STARTING));\n }\n\n return Promise.resolve();\n }\n\n /**\n * Log the starting state of the given action.\n *\n * @param action the action to log\n * @param parameters the parameters for the action\n */\n actionStart(action, parameters) {\n if (this.isEnabled) {\n const actionState = {\n id: action.id,\n parameters: DebugStream.cloneObject(parameters),\n beforeContext: this.cloneState(),\n };\n\n this.content.$chain.actions.push(actionState);\n\n return this.fireStateChanged(DebugConstants.DebugState.ACTION_STARTING, actionState)\n .then(() => this.suspendIfBreakpointReached(action))\n .then(() => {\n actionState.startTime = new Date().getTime();\n })\n .then(() => this.fireStateChanged(DebugConstants.DebugState.ACTION_RUNNING, actionState));\n }\n\n return Promise.resolve();\n }\n\n /**\n * Log the ending state of the given action.\n *\n * @param action the action to log\n * @param outcome the outcome of the action\n */\n actionEnd(action, outcome) {\n if (this.isEnabled) {\n const endTime = new Date().getTime();\n const actionState = this.content.$chain.actions.find(element => element.id === action.id);\n\n if (actionState) {\n actionState.outcome = DebugStream.cloneObject(outcome);\n actionState.afterContext = this.cloneState();\n actionState.completionTime = `${endTime - actionState.startTime} ms`;\n }\n\n this.fireStateChanged(DebugConstants.DebugState.ACTION_FINISHED, actionState);\n }\n }\n\n /**\n * Log the ending state of the action chain.\n */\n end() {\n if (this.isEnabled) {\n this.content.$chain.afterContext = this.cloneState();\n\n // wrap the results in $chain so it can be used for evaluating expect statements\n this.content.$chain.results =\n this.actionChain[Constants.VariableNamespace.VARIABLES][Constants.RESULTS_VARIABLE_KEY];\n\n this.fireStateChanged(DebugConstants.DebugState.CHAIN_FINISHED);\n }\n }\n\n\n /**\n * Suspend the debug stream until resume is called.\n *\n * @returns {Promise|null}\n */\n suspend() {\n if (this.isDebuggerInstalled) {\n if (!this.suspendPromise) {\n this.suspendPromise = new Promise((resolve) => {\n this.resumeResolver = resolve;\n });\n }\n\n return this.suspendPromise;\n }\n\n return Promise.resolve();\n }\n\n /**\n * Resume the debug stream.\n */\n resume() {\n if (this.resumeResolver) {\n this.resumeResolver();\n\n this.suspendPromise = null;\n }\n }\n\n // the following methods make calls to the debugger\n\n /**\n * Register this debug stream as a debuggee with the debugger.\n *\n * @returns {*}\n */\n registerDebuggee() {\n if (this.isDebuggerInstalled) {\n return super.registerDebuggee({ chainLocator: this.chainLocator });\n }\n\n return Promise.resolve();\n }\n\n // the following methods are called by the debugger\n\n /**\n * Called by the debugger to update the breakpoints.\n *\n * @param breakpoints updated breakpoints\n */\n updateBreakpoints(breakpoints) {\n this.breakpoints = breakpoints || {};\n }\n\n /**\n * Called by the debugger to continue execution until the next breakpoint is reached.\n */\n continue() {\n this.resume();\n }\n\n /**\n * Called by the debugger to continue execution and break at the next action.\n */\n step() {\n if (this.suspendPromise) {\n this.stopAtNextAction = true;\n this.resume();\n }\n }\n\n /**\n * Called by the debugger to finish execution of the chain without breaking.\n */\n finish() {\n if (this.suspendPromise) {\n this.runUntilFinish = true;\n this.resume();\n }\n }\n\n /**\n * Resume suspended action when the debugger is uninstalled.\n */\n debuggerUninstalled() {\n this.resume();\n super.debuggerUninstalled();\n }\n }\n\n return ActionChainDebugStream;\n });\n\n","/* eslint-disable max-classes-per-file */\n'use strict';\n\ndefine('vb/private/action/actionChain',[\n 'ojs/ojcontext',\n 'vb/action/action',\n 'vb/helpers/actionHelpers',\n 'vb/private/stateManagement/scope',\n 'vb/private/stateManagement/redux/storeManager',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/utils',\n 'vb/private/stateManagement/context/actionChainContext',\n 'vb/private/log',\n 'vbc/private/logConfig',\n 'vb/private/constants',\n 'vb/private/action/assignmentHelper',\n 'vb/private/debug/actionChainDebugStream',\n 'vbc/private/monitorOptions',\n], (ojContext, Action, ActionHelpers, Scope, StoreManager, StateUtils, Utils, ActionChainContext, Log,\n LogConfig, Constants, AssignmentHelper, ActionChainDebugStream, MonitorOptions) => {\n const logger = Log.getLogger('/vb/action/actionChain', [\n // Register custom loggers\n {\n name: 'startChain',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.actionChainStart,\n },\n {\n name: 'endChain',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.actionChainEnd,\n },\n ]);\n\n const PARAMETERS_VARIABLE_KEY = 'vb_parameters';\n\n // bufp-17642: list of dollar-variables to skip when injecting the context for the current page into the\n // context for the chain. These should only be available to the event listener, and passed to chains if needed.\n // note: this '$current' is the one from the JET event listener, and NOT the one from forEachAction.\n const EXCLUDED_CHAIN_SCOPE_VARS = [\n Constants.ContextName.EVENT,\n Constants.ContextName.BINDING_CONTEXT,\n '$current', // not using constant, so it is not mistaken for the 'forEachAction' one\n Constants.ContextName.PREVIOUS,\n ];\n\n class ActionMonitorOptions extends MonitorOptions {\n constructor(actionId, actionDef, action) {\n const message = `${actionDef.module} ${action.logLabel}`;\n super('action', message);\n this.addTags(() => ({\n actionId,\n actionType: actionDef.module,\n }));\n }\n }\n\n class ActionChainMonitorOptions extends MonitorOptions {\n constructor(chainId, rootAction, logLabel) {\n const message = `action chain ${logLabel}`;\n super('actionChain', message);\n this.addTags(() => ({\n chainId,\n rootAction,\n }));\n }\n }\n\n /**\n * An ActionChain is a graph of one or more Actions that are executed using the supplied\n * context.\n */\n class ActionChain extends Action {\n /**\n * Builds a new action chain instance with page model metadata. This will create the proper context\n * for an action chain to run. An action chain should not be created manually, it should be created\n * by the static helper method ('start()').\n *\n * @private\n * @param id The ID for the action chain\n * @param metadata The action chain metadata as defined in the page model\n */\n constructor(id, metadata) {\n super(id);\n\n this.log = logger;\n this.id = id;\n\n this.constantDefs = metadata.constants || {};\n\n // variables will be created and initialized when we start the action chain\n this.variableDefs = metadata.variables;\n\n // store the list of actions\n this.actionDefs = metadata.actions;\n\n // the starting action\n this.rootAction = metadata.root;\n\n // optional return type\n this.returnType = metadata.returnType;\n\n // optional array of outcomes\n this.outcomes = metadata.outcomes;\n\n // The unique option create a store with a unique name.\n // The silent option is used when value change listener are not needed.\n this.scope = Scope.createScope(`chain_${id}`, null, { unique: true, silent: true });\n\n // storage for action results; results are stored in the 'variables' namespace\n this.scope.results = this.scope.createVariable(Constants.RESULTS_VARIABLE_KEY,\n Constants.VariableNamespace.VARIABLES, 'object', {});\n\n // storage for action parameters; action parameters are stored in the 'variables' namespace\n this.scope.createVariable(PARAMETERS_VARIABLE_KEY, Constants.VariableNamespace.VARIABLES, 'object', {});\n\n this.variables = this.scope.variableNamespaces[Constants.VariableNamespace.VARIABLES];\n\n // this is the $chain variable, and contains variables, metadata, and results.\n // injectContext will add additional properties from the calling context.\n this.expressionContext = new ActionChainContext(this);\n\n // the set of all Contexts and shortcuts, available for expressions:\n // $chain = expressionContext, $variables = $chain.variables, $metadata = $chain.metadata\n this.availableContexts = ActionChainContext.getAvailableContexts(this);\n\n // functions to call at the end, unconditionally; only actions that have access to the chain can add these\n // contains { actionId, name, fnc }\n this.finallyCallbacks = [];\n\n // stream used to communicate with the VB debugger\n this.debugStream = new ActionChainDebugStream(this);\n }\n\n /**\n * Execute the action chain beginning with the root action.\n *\n * @param params the params that this action chain is called with\n * @param callingContexts the contexts of the caller which can be another action chain\n * @return {Promise} resolves with an outcome object when the action chain has completed.\n */\n start(params, callingContexts) {\n const parameters = params || {};\n return Promise.resolve().then(() => {\n // evaluate the parameter using the calling contexts\n const inputParamValues = {};\n Object.keys(parameters).forEach((key) => {\n const param = parameters[key];\n const value = StateUtils.getValueOrExpression(param, callingContexts);\n\n // immediately resolve the initial value if it's an expression since we don't want the expression\n // to stick around in the chain variable since we prevent overwriting an expression\n inputParamValues[key] = Utils.resolveIfObservable(value);\n });\n\n // initialize constants and variables to the input parameters or their default values\n this.initializeConstants(inputParamValues);\n return this.initializeVariables(inputParamValues, callingContexts)\n .then(() => {\n StoreManager.addScopeToStore(this.scope);\n this.activateVariables();\n this.log.startChain('Starting action chain', this.logLabel, 'with parameters:',\n inputParamValues);\n const mo = new ActionChainMonitorOptions(this.id, this.rootAction, this.logLabel);\n return this.log.monitor(mo, (totalTime) => {\n this.totalTime = totalTime;\n\n // debug the start of the action chain\n return this.debugStream.start().then(() => this.runActionStep(this.rootAction));\n });\n });\n })\n .then((result) => {\n this.end();\n return result;\n })\n .catch((error) => {\n this.end(error);\n throw error;\n });\n }\n\n /**\n * Initialize constants from declaration.\n * TODO: when ActionChain subclasses Container this code must be removed\n */\n initializeConstants(inputParamValues = {}) {\n const scopeResolver = this.context && this.context.container && this.context.container.scopeResolver;\n\n // go through the constants and create each one.\n // this assumes the constants definition has been filtered by initDefault()\n Object.keys(this.constantDefs).forEach((constantName) => {\n const constantDef = this.constantDefs[constantName];\n\n // get the initial value if any\n const inputParamValue = inputParamValues && inputParamValues[constantName];\n\n if (Utils.isExtendedType(inputParamValue)) {\n throw new Error(`Constant '${constantName}' cannot be an extended type.`);\n } else if (Utils.isInstanceType(constantDef.type)) {\n throw new Error(`Constant '${constantName}' cannot be a built-in type.`);\n } else {\n this.createConstant(constantName, constantDef, scopeResolver, inputParamValue);\n }\n });\n }\n\n /**\n * Create a constant and store it in the scope\n * @param {String} constantName the name of the constant\n * @param {Object} constantDef the definition of the constant\n * @param {Container} scopeResolver the scope resolver object (application, page, ...)\n * @param {*} inputParamValue the fromCaller or fromUrl value\n */\n createConstant(constantName, constantDef, scopeResolver, inputParamValue) {\n // determine the default value for this constant then create the constant\n const defaultValue = StateUtils.createNonInstanceTypeDefaultValue(constantName, constantDef,\n scopeResolver, this.availableContexts);\n\n this.scope.createConstant(constantName, Constants.VariableNamespace.CONSTANTS,\n constantDef.type, defaultValue, inputParamValue);\n }\n\n /**\n * Create the chain variables and initialize them to their default values or initial values (input parameters).\n * TODO: when ActionChain subclasses Container Container this code must be removed\n *\n * @param parameters parameters to the action chain\n * @param callingContexts the contexts of the caller which can be another action chain\n * @param namespace\n * @returns {Promise}\n */\n initializeVariables(initialValues = {}, callingContexts, namespace = Constants.VariableNamespace.VARIABLES) {\n if (!this.variableDefs) {\n return Promise.resolve();\n }\n\n const promises = [];\n const scopeResolver = this.context && this.context.container && this.context.container.scopeResolver;\n\n Object.keys(this.variableDefs).forEach((variableName) => {\n const variableDef = this.variableDefs[variableName];\n\n // A variable and constant cannot have the same name\n if (this.constantDefs[variableName]) {\n promises.push(Promise\n .reject(new Error(`Variable '${variableName}' cannot have the same name as a constant.`)));\n } else {\n let refVariablesAdded;\n // get the initial value if any\n const initialValue = initialValues && initialValues[variableName];\n\n // if the value is an instance of an extended class, e.g., ServiceDataProvider, we need to look up the\n // actual referenced variable and the instance properties variable and create reference variables\n // for them in order to support pass-by-reference.\n if (Utils.isExtendedType(initialValue)) {\n refVariablesAdded = this.addReferenceVariables(initialValue, variableName, namespace, callingContexts);\n }\n\n if (!refVariablesAdded) {\n const promise = StateUtils.createVariableDefaultValue(variableName, variableDef, scopeResolver,\n this.scope, this.availableContexts, namespace).then((defaultValue) => {\n const type = StateUtils.getType(variableName, variableDef, scopeResolver);\n this.scope.createVariable(variableName, namespace, type, defaultValue, initialValue);\n });\n\n promises.push(promise);\n }\n }\n });\n\n return Promise.all(promises);\n }\n\n /**\n * Activate all variables for the current container (chain scope).\n * TODO: when ActionChain subclasses Container this code must be removed\n *\n * @private\n */\n activateVariables() {\n this.scope.activateVariables();\n // currently we do not allow variables defined in actions chains to be extended, for that matter we\n // don't allow extending chains, so activateVariables doesn't have to be called on extensions\n }\n\n /**\n * Given an instance of an extended class, e.g., ServiceDataProvider, look up its instance variable and\n * instance properties variable and create and add reference variables pointing to them to the chain scope.\n *\n * @param instance an instance of an extended class, e.g., ServiceDataProvider\n * @param referenceVariableName the name for the reference variable\n * @param namespace namespace for the reference variable\n * @param callingContexts the contexts of the caller used to looked up the referenced variables\n * @returns {Boolean}\n */\n addReferenceVariables(instance, referenceVariableName, namespace, callingContexts) {\n const { id } = instance;\n let added;\n\n if (id) {\n added = ['$chain', '$page', '$flow', '$application'].some((contextName) => {\n const context = callingContexts[contextName];\n\n if (context) {\n const variable = context.getVariable(id, Constants.VariableNamespace.VARIABLES);\n if (variable && variable.getValue() === instance) {\n // look up the instance properties variable whose name ends with _value\n const propVariable = context.getVariable(`${id}${Constants.BuiltinVariableName.VALUE}`,\n Constants.VariableNamespace.VARIABLES);\n\n if (propVariable) {\n // create a reference variable that points to the instance variable\n this.scope.createReferenceVariable(referenceVariableName, namespace, variable);\n\n // create a reference variable that points to the instance properties variable\n this.scope.createReferenceVariable(`${referenceVariableName}${Constants.BuiltinVariableName.VALUE}`,\n namespace, propVariable);\n\n return true;\n }\n }\n }\n\n return false;\n });\n }\n\n if (!added) {\n throw new Error(`Failed to add reference variables for ${referenceVariableName}.`);\n }\n\n return true;\n }\n\n end(error) {\n if (this.totalTime) {\n this.log.endChain('Ending action chain', this.logLabel, 'successfully', this.totalTime(error));\n }\n\n // close the debug stream\n this.debugStream.end();\n\n this.dispose();\n }\n\n /**\n * Extract the chain id from the given id which can be prefixed, e.g., application:fooAction or flow:fooAction.\n *\n * @param id the id, e.g., fooChain, application:fooChain or flow:fooChain\n * @returns {*|string}\n */\n static extractChainId(id) {\n const idParts = id.split(':');\n return idParts.length === 1 ? idParts[0] : idParts[1];\n }\n\n /**\n * Starts an action chain and returns the promise that will resolve to the outcome of the last\n * executed action of the chain.\n *\n * @param actionId The chain id\n * @param params Set of parameters to match the variables of the action chain\n * @param scopes Scopes in context for the chain\n * @param context Internal objects like actions, application, and flow needed by a builtin action\n * @returns {Promise.<*>}\n */\n static startChain(actionId, params, scopes, context) {\n return Promise.resolve().then(() => {\n if (!actionId) {\n throw new Error('Required \\'id\\' parameter missing for starting action chain.');\n }\n\n // handle application, flow or page level action chains\n // Resolve the scope (application, flow, page) from the actionId if one exist\n // and get the action metadata.\n return StateUtils.resolveChain(actionId, context.container.scopeResolver)\n .then((actionMetadata) => {\n if (!actionMetadata) {\n throw new Error(`Action chain ${actionId} does not exist.`);\n }\n\n // setup the action chain and execute and make sure we extract the proper chain id\n const actionChain = new ActionChain(ActionChain.extractChainId(actionId), actionMetadata);\n\n actionChain.injectContext(scopes, context, actionId);\n\n let chainError;\n\n // add a busy state to JET's busy context which is used by webdriverjs tests to wait for\n // activities in the page to quiet down\n const busyContext = ojContext.getPageContext()\n .getBusyContext();\n const busyStateResolver = busyContext.addBusyState({ description: actionId });\n\n return actionChain.start(params, scopes)\n .catch((e) => {\n chainError = e;\n })\n .then((result) => {\n // run any registered 'finally' cleanup tasks\n actionChain.runFinallyCallbacks();\n\n // resolve the busy state\n busyStateResolver();\n\n // if we caught an error above, throw that\n if (chainError) {\n throw chainError;\n }\n // otherwise, return the original chain's result, not the event handler's chain\n return result;\n });\n });\n });\n }\n\n /**\n * Also adds any scoped implicit objects for this action chain context. The format should be a\n * map from key (name of the implciit object) to it's value.\n *\n * @param scopes The set of scopes applicable for this action chain\n * @param context The current actions, application, and flow\n * @param chainId used to look up the container using the scopeResolver\n */\n injectContext(scopes, context, chainId) {\n // add 'internal' for any availableContexts that the action may expect, but we don't expose in EL.\n this.internalContext = {};\n\n // cannot use Object.assign, need to copy getters; some values might not have been created yet (page.pageScope)\n Object.getOwnPropertyNames(scopes).forEach((key) => {\n // skip ones that are specific to the eventListener declaration, and should not be available in the chain\n const descriptor = Object.getOwnPropertyDescriptor(scopes, key);\n\n if (EXCLUDED_CHAIN_SCOPE_VARS.indexOf(key) === -1) {\n // guard against scope contexts that attempt to override our chain variables\n if (!Object.prototype.hasOwnProperty.call(this.availableContexts, key)) {\n Object.defineProperty(this.availableContexts, key, descriptor);\n }\n } else {\n // don't expose, but make it available to actions that need it\n Object.defineProperty(this.internalContext, key, descriptor);\n }\n });\n\n this.context = context;\n\n // only execute this code when the debugger is installed\n if (this.debugStream.isDebuggerInstalled) {\n // use the scopeResolver to look up the container in which the chain is defined\n const container = StateUtils.resolveContainer(chainId, context.container.scopeResolver);\n\n // set up the locator for looking up the chain on the debugger side\n this.debugStream.setChainLocator(container.getResourcePath());\n }\n }\n\n /**\n * Create a scope to store the action parameters and provide isolation between action steps\n * and returns an array of values/getters.\n * Each parameter is defined as a constant so that the value is not stored in redux store.\n * @param {String} id a unique id\n * @param {Object} actionParams the parameter definition, object where each property is a parameter\n * @param {Object} availableContexts the contexts for expression evaluation\n * @return {Array} an array with the parameter values\n */\n static createActionParameters(id, actionParams = {}, availableContexts) {\n const keys = Object.keys(actionParams);\n\n // Only create the scope if there is at least one parameter\n if (keys.length === 0) {\n return [];\n }\n\n const scope = Scope.createScope(id, null, { silent: true });\n\n // Traverse the action parameters definition and create a constant in the action scope for each parameter\n keys.forEach((key) => {\n const type = 'any';\n const defaultValue = StateUtils.buildVariableDefaults(key, availableContexts, type, actionParams[key]);\n // Constant is created using freeze: false so that their value are allowed to mutate\n scope.createConstant(key, Constants.VariableNamespace.CONSTANTS, type, defaultValue, undefined, null,\n { freeze: false });\n });\n\n return scope.variableNamespaces[Constants.VariableNamespace.CONSTANTS];\n }\n\n /**\n * Load the action module specified by actionModuleId. This method will return the cached module if it\n * has already been loaded.\n *\n * @param actionModuleId the id for the action module to load\n */\n static loadActionModule(actionModuleId) {\n this.actionModules = this.actionModules || {};\n\n return Promise.resolve().then(() => {\n const module = this.actionModules[actionModuleId];\n\n if (!module) {\n return Utils.getResource(actionModuleId).then((actionModule) => {\n // TODO: turn off caching for now to unblock preflight\n // this.actionModules[actionModuleId] = actionModule;\n\n return actionModule;\n });\n }\n\n return module;\n });\n }\n\n /**\n * Runs a particular action with the given ID. The ID must be part of the action chain that this class is\n * associated with.\n *\n * @param aid The ID of the action to accept\n * @param scopeContextOverride optional. if undefined, this.scopeContext is used.\n * @returns {Promise} a promise that resolves with an outcome object\n */\n runActionStep(aid, availableContexts = this.availableContexts) {\n // used to measure setup time for the action\n const setupTime = this.log.monitor();\n\n let actionId = aid;\n // this method takes in the action ID, however we had previously supported the outcomes explicitly providing\n // the action definition. this bit of code provides backwards compatiblity. When we want to stop supporting\n // the old syntax, we will always lookup the actionDef from the actionId\n let actionDef;\n if (typeof actionId === 'string') {\n // this is forward looking code\n actionDef = this.actionDefs[actionId];\n if (!actionDef) {\n throw new Error(`The action chain '${this.id}' does not contain action with ID '${actionId}', aborting.`);\n }\n } else {\n // this is backwards compatible code\n actionDef = actionId;\n actionId = actionDef.id;\n }\n\n return ActionChain.loadActionModule(actionDef.module).then((NewAction) => {\n const actionOutcomes = actionDef.outcomes;\n\n // create and configure the action\n const actionConfig = this.getActionConfig(actionId, actionDef);\n const action = new NewAction(actionId, actionDef.label, actionConfig);\n this.addHelpersToAction(action);\n this.addContextToAction(actionDef.module, actionDef, action, availableContexts);\n\n // Use the unique id of the action to build the unique id of the scope\n const actionParamInstances = ActionChain.createActionParameters(`parameters_${action.id}`,\n actionDef.parameters, availableContexts);\n\n // need to create a separate parameter instance for the debugger/action chain tester since\n // it needs to serialize the parameters which causes expressions in the parameter instance to\n // be evaluated too early because they now behave like constants\n // RESOLVE: We can't move this code into the debugStream because it causes circular require dependency\n const debugActionParamInstances = this.debugStream.isEnabled\n ? ActionChain.createActionParameters(`parameters_${action.id}`,\n actionDef.parameters, availableContexts) : null;\n this.log.info('Chain', this.logLabel, 'starting action step', action.logLabel,\n 'with parameters:', actionParamInstances, ' setup:', setupTime());\n\n const mo = new ActionMonitorOptions(actionId, actionDef, action);\n // eslint-disable-next-line arrow-body-style\n return this.log.monitor(mo, (totalStepTime) => {\n // execute action and process the next action based on the outcome\n return this.debugStream.actionStart(action, debugActionParamInstances)\n .then(() => action.start(actionParamInstances)\n .then((outcome) => {\n const ao = this.handleActionOutcome(actionId, actionOutcomes, outcome);\n this.log.info('Chain', this.logLabel, 'ending action step', action.logLabel,\n 'with outcome', outcome, totalStepTime());\n\n // debug the end of an action\n this.debugStream.actionEnd(action, outcome);\n\n if (ao.nextAction) {\n return this.runActionStep(ao.nextAction, availableContexts);\n }\n return ao.outcome;\n })\n .catch((e) => {\n this.log.error('Chain', this.logLabel, 'action step', action.logLabel, 'failed.', e,\n totalStepTime(e));\n throw e; // FIXME messaging\n }));\n });\n });\n }\n\n /**\n * Returns the final outcome if there is no nextAction to execute; Or returns the\n * id of the nextAction.\n * @param {String} actionId\n * @param {Array[String]} actionOutcomes\n * @param {Object} outcomeParam\n * @returns {*} object with one of 2 properties: outcome, a string or nextAction.\n */\n handleActionOutcome(actionId, actionOutcomes, outcomeParam) {\n const outcome = outcomeParam;\n const nextAction = actionOutcomes ? actionOutcomes[outcome.name] : null;\n\n if (!nextAction) {\n if (this.outcomes && this.outcomes.indexOf(outcome.name) === -1) {\n throw new Error(`The ${outcome.name} outcome does not match one of the chain's possible outcomes.`);\n }\n\n // automap the outcome result using the return type\n if (this.returnType) {\n const scopeResolver = this.context && this.context.container && this.context.container.scopeResolver;\n const resolvedType = StateUtils.getType(null, { type: this.returnType }, scopeResolver);\n\n // coerce the result to the return type\n outcome.result = AssignmentHelper.coerceType(outcome.result, resolvedType);\n }\n\n this.addActionResult(actionId, outcome);\n return { outcome };\n }\n\n this.addActionResult(actionId, outcome);\n\n // at this point we need to call the next step in the action\n return { nextAction };\n }\n\n /**\n * Store the result of the action in results so that we can access it later\n */\n addActionResult(actionId, outcome) {\n if (actionId) {\n this.scope.results.getValue()[actionId] = outcome.result;\n }\n }\n\n /**\n * Certain actions need more context. Instead of exposing an interface API, we instead look\n * for specific actions and inject the context.\n *\n * The advantage of this approach is that user-specified actions cannot configure their\n * actions to gain access to the context - something we want to avoid in general.\n *\n * @private\n * @param actionType The module name of the action\n * @param actionDef The definition of the action in metadata\n * @param action The newly created action\n */\n addContextToAction(actionType, actionDef, action, availableContexts = this.availableContexts) {\n if (actionType.startsWith('vb/action/builtin/')) {\n switch (actionType.substr(18)) {\n case 'assignVariablesAction':\n case 'callVariableMethodAction':\n case 'resetVariablesAction': {\n action.setAvailableContext(availableContexts);\n break;\n }\n\n case 'callChainAction': {\n // need to clear action chain specific context before passing it along\n const availableContextsClone = this.availableContexts.clone();\n // leave the $chain on the availableContexts so it can be used to look up extended-typed variables\n // such as ServiceDataProvider\n delete availableContextsClone.$variables;\n\n action.setContext(availableContextsClone, this.context);\n break;\n }\n\n case 'forkAction': {\n // backward compatibility, 'originally used overloaded 'outcomes' map\n // now uses a 'parameters.actions' map; keep 'outcomes' for a little while\n // we won't need to do this once we remove backward-compat\n const outcomes = !actionDef.outcomes ? {} : Utils.cloneObject(actionDef.outcomes);\n if (outcomes.join) {\n delete outcomes.join;\n }\n action.setContext(this, outcomes);\n break;\n }\n case 'downloadExtensionsAction':\n case 'forEachAction': {\n action.setContext(this, availableContexts);\n break;\n }\n\n case 'restAction':\n case 'callModuleFunctionAction':\n case 'fireNotificationEventAction':\n case 'loginAction':\n case 'logoutAction':\n case 'editorUrlAction':\n case 'checkForExtensionsAction':\n case 'restartApplicationAction': {\n action.setContext(this.context);\n break;\n }\n\n case 'takePhotoAction': {\n action.setAvailableContexts(availableContexts);\n break;\n }\n\n case 'fireCustomEventAction': {\n action.setInternalContext(this.context, this.internalContext);\n break;\n }\n\n\n default:\n break;\n }\n }\n\n // inject the container lifecycle state without making the container available to the action\n if (this.context && this.context.container) {\n Object.defineProperty(action, 'containerLifecycleState', {\n get: () => this.context.container.lifecycleState,\n });\n }\n }\n\n\n /**\n * get the configuration object to pass to the constructor\n * currently only contains the 'registrar', to allow action to register callbacks\n *\n * @param actionId\n * @returns {{registrar: {setFinallyCallback: (function(*=, *=))}}}\n */\n getActionConfig(actionId /* , actionDef */) {\n // provide a narrow interface for the action to call\n return {\n registrar: {\n setFinallyCallback: (name, callback) => {\n this.setFinallyCallback(actionId, name, callback);\n },\n },\n };\n }\n\n\n /**\n * actions that are granted access to the actionChain can register a callback called when the chain is complete.\n * use an array; callbacks will be called in registration order\n * the callback can optionally return a Promise.\n *\n * @param actionInstanceId\n * @param name\n * @param callback\n */\n setFinallyCallback(actionInstanceId, name, callbackFnc) {\n const existing = this.finallyCallbacks.find(callback => callback.id === actionInstanceId);\n // replace the existing one - each action only gets one\n if (existing) {\n existing.name = name;\n existing.fnc = callbackFnc;\n } else {\n this.finallyCallbacks.push({ id: actionInstanceId, name, fnc: callbackFnc });\n }\n }\n\n /**\n * run any registered callbacks\n *\n * If a callback returns a Promise, it must resolve/reject before the next callback is called.\n * A rejected Promise does not stop callback processing.\n */\n runFinallyCallbacks() {\n let promise = Promise.resolve(); // initial promise\n this.finallyCallbacks.forEach((callback) => {\n promise = promise.then(() => {\n if (typeof callback.fnc === 'function') {\n try {\n this.log.info('calling', callback.name, 'callback for action', callback.id);\n // allow callback fnc to optionally return a Promise\n return Promise.resolve(callback.fnc());\n } catch (e) {\n this.log.error('error in Action callback for', callback.id, ':', callback.name, e);\n }\n }\n return null; // not used;\n });\n });\n }\n\n\n /**\n * Add to an action the helper functions that require the context . The helper\n * functions are needed to implement user-specified actions.\n *\n * @param {Action} the newly created action\n */\n addHelpersToAction(action) {\n // inject the helpers on the action\n Object.defineProperty(action, 'helpers', {\n value: new ActionHelpers(this.context),\n });\n }\n\n /**\n *\n */\n dispose() {\n delete this.variables;\n this.scope.dispose();\n StoreManager.removeScopeFromStore(this.scope);\n }\n }\n\n return ActionChain;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/callChainAction',[\n 'vb/action/action',\n 'vb/private/action/actionChain',\n 'vb/private/utils',\n 'vb/private/log',\n],\n(Action, ActionChain, Utils, Log) => {\n /**\n * // TODO doc this, write tests\n */\n class CallChainAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = Log.getLogger('/vb/action/action/CallChainAction');\n this.scopes = null;\n this.context = null;\n }\n\n perform(parameters) {\n return new Promise((resolve, reject) => {\n const actionId = parameters.id;\n const params = parameters.params;\n\n if (!actionId) {\n this.log.error('Required \\'id\\' parameter missing.');\n reject();\n }\n\n this.log.info('Calling action chain', actionId, 'with parameters:', params);\n ActionChain.startChain(actionId, params, this.scopes, this.context)\n .catch(reject)\n .then(resolve);\n });\n }\n\n setContext(scopes, context) {\n this.scopes = scopes;\n this.context = context;\n }\n }\n\n return CallChainAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/callComponentMethodAction',['vb/action/action', 'vb/private/log', 'ojs/ojcomponentcore', 'vb/private/utils'], (Action, Log, ojCC, Utils) => {\n const logger = Log.getLogger('/vb/private/stateManagement/callComponentMethodAction');\n\n class CallElementMethod extends Action {\n /**\n * @param parameters {component, method, params}\n * - component {Element}\n * - method {string}\n * - params {Array}\n *\n * @returns {Outcome)\n */\n perform(parameters) {\n const element = parameters.component;\n const methodName = parameters.method;\n const params = parameters.params || [];\n\n if (element && methodName) {\n // make sure the parameters are plain objects instead of proxies\n const clonedParams = [];\n if (params) {\n Utils.cloneObject(params, clonedParams);\n }\n\n let returnValue;\n try {\n returnValue = ojCC.callComponentMethod(element, methodName, ...clonedParams);\n } catch (e) {\n return Action.createFailureOutcome('Error during CallElementMethod', e);\n }\n\n // handle both sync and async methods\n return Promise.resolve(returnValue)\n .then((result) => Action.createSuccessOutcome(result))\n .catch((e) => Action.createFailureOutcome('Error during CallElementMethod', e));\n }\n\n const msg = `Missing parameter, element='${element}', methodName='${methodName}'`;\n logger.error(msg);\n\n return Action.createFailureOutcome('Error during CallElementMethod', new Error(msg)); // default\n }\n }\n\n return CallElementMethod;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/callModuleFunctionAction',[\n 'vb/action/action',\n 'vb/private/utils',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/action/assignmentHelper',\n 'vb/private/log',\n],\n(Action, Utils, StateUtils, AssignmentHelper, Log) => {\n /**\n * Invokes a custom javascript method on a container method, where the container can be a flow or a page. This\n * action is the principal method of calling custom javascript code.\n *\n * The parameters to this action are as follows:\n *\n * module: The module to call the function on (usually $page.functions, $application.functions,\n * or $flow.functions)\n * funcName: The name of the function to execute in the module\n * params: (optional) An array of parameters to pass into the function. This parameter array will be\n * expanded into individual parameters to the function\n * paramTypes: (optional) An array of type definitions describing the parameters (in page model format)\n * returnType: (optional) A type defining the return value (in page model format)\n *\n * If paramTypes are returnType are defined, the parameters or return types will be coerced to that type.\n */\n class CallModuleAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = Log.getLogger('/vb/action/action/CallModuleAction');\n this.context = null;\n }\n\n /**\n * returned Promise is resolved with Outcome (success or failure), or rejected with a message\n * @param parameters\n * @returns {Promise}\n */\n perform(parameters) {\n const module = parameters.module;\n const funcName = parameters.functionName;\n const params = parameters.params;\n const paramTypes = parameters.paramTypes;\n const returnType = parameters.returnType;\n\n if (params && !Array.isArray(params)) {\n const msg = `Action ${this.logLabel}: Inputs to CallModuleFunctionAction` +\n 'should be an array, even if it is a single item.';\n this.log.error(msg);\n return Promise.reject(msg);\n }\n\n // if param types are specified, do some basic checking, then coerce to the types\n if (paramTypes && (!Array.isArray(paramTypes) || !params || !params.length === paramTypes.length)) {\n const msg = `Action ${this.logLabel}: Parameters to CallModuleFunctionAction does` +\n 'not match the parameter types.';\n this.log.error(msg);\n return Promise.reject(msg);\n }\n if (paramTypes) {\n params.forEach((v, i) => {\n const type = paramTypes[i];\n params[i] = this.coerceToType(`${funcName}:param[${i}]`, v, type);\n });\n }\n\n // to protect custom code from making unpredictable changes, we are going to pass by value\n // instead of by reference. we understand this is controversial to some respects, but it\n // means the behavior of custom code is deterministic and does not have hard to debug side\n // affects. users can still wire up the output of custom code to their original sources - but\n // that is predictable\n const clonedParams = [];\n if (params) {\n Utils.cloneObject(params, clonedParams);\n }\n\n // RESOLVE: this is breaking variable assignment downstream\n // Utils.deepFreeze(clonedParams);\n if (!module || !module[funcName]) {\n const msg = `Action ${this.logLabel}: The module does not exist or the function '${funcName}'` +\n ' does not exist in the module';\n const cont = this.context && this.context.container;\n // Add location of the error: Page 'main' or Flow 'foo'.\n const detail = cont ? ` for ${cont.className} '${cont.id}'` : '';\n return Promise.reject(`${msg}${detail}.`);\n }\n\n const func = module[funcName];\n\n let ret;\n try {\n ret = func.apply(module, clonedParams);\n } catch (e) {\n const msg = `Action ${this.logLabel}: error calling function: ${funcName}(${params})`;\n this.log.error(msg, e);\n return Promise.resolve(Action.createFailureOutcome(msg, e));\n }\n\n return Promise.resolve(ret)\n .then((result) => {\n let res = result;\n // if we have a return type, we want to form the return value of the function to that type. we start\n // out by resolving the type\n if (returnType) {\n res = this.coerceToType(`${funcName}:returnType`, res, returnType);\n }\n\n return Action.createSuccessOutcome(res);\n })\n .catch((e) => {\n const msg = `Action ${this.logLabel}: error calling function: ${funcName}(${params || ''})`;\n return Action.createFailureOutcome(msg, e);\n });\n }\n\n coerceToType(name, value, type) {\n // pick attributes from the return value into an object that matches the type\n const resolvedType = StateUtils.getType(name, { type }, this.context.container.scopeResolver);\n const newValue = AssignmentHelper.coerceType(value, resolvedType);\n this.log.finer('Action', this.logLabel, name, value, 'was coerced to', newValue);\n return newValue;\n }\n\n setContext(context) {\n this.context = context;\n }\n }\n\n return CallModuleAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/callVariableMethodAction',[\n 'vb/action/action',\n 'vb/private/utils',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/log',\n 'vb/private/constants',\n 'vb/action/builtin/assignVariablesAction',\n],\n(Action, Utils, StateUtils, Log, Constants, AssignVariablesAction) => {\n /**\n * Invoke a method on a variable of instanceFactory type.\n *\n * The parameters to this action are as follows:\n *\n * variable: a variable, e.g., $page.variables.foo\n * method: the method to invoke\n * params: the parameters to the method\n */\n class CallVariableMethodAction extends AssignVariablesAction {\n constructor(id, label) {\n super(id, label);\n this.log = Log.getLogger('/vb/action/action/CallVariableFunctionAction');\n }\n\n /**\n * returned Promise is resolved with Outcome (success or failure), or rejected with a message\n * @param parameters\n * @returns {Promise}\n */\n perform(parameters) {\n const variable = parameters.variable;\n const method = parameters.method;\n const params = parameters.params;\n\n // locate variable and instance property on it\n const targetInfo = this.analyzeTargetExpr(variable,\n { availableContexts: this.availableContexts });\n const instanceFactoryVar = targetInfo.typeClassification === Constants.VariableClassification.INSTANCE_FACTORY;\n\n if (!instanceFactoryVar) {\n const msg = `Action ${this.logLabel} cannot be used with non instance factory variable ${variable}`;\n this.log.error(msg);\n return Promise.reject(msg);\n }\n const varValue = targetInfo.rootValue;\n if (!varValue) {\n const msg = `Action ${this.logLabel} could not read the value of variable ${variable}`;\n this.log.error(msg);\n return Promise.reject(msg);\n }\n const instance = varValue.instance;\n if (!instance || !method || typeof instance[method] !== 'function') {\n const msg = `Action ${this.logLabel} cannot call method ${method} on variable ${variable}`;\n this.log.error(msg);\n return Promise.reject(msg);\n }\n\n if (params && !Array.isArray(params)) {\n const msg = `Action ${this.logLabel}: Inputs to CallVariableFunctionAction`\n + ' should be an array, even if it is a single item.';\n this.log.error(msg);\n return Promise.reject(msg);\n }\n\n const clonedParams = [];\n if (params) {\n Utils.cloneObject(params, clonedParams);\n }\n\n const func = instance[method];\n let ret;\n try {\n ret = func.apply(instance, clonedParams);\n } catch (e) {\n const msg = `Action ${this.logLabel}: error calling function: ${method}(${params})`;\n this.log.error(msg, e);\n return Promise.resolve(Action.createFailureOutcome(msg, e));\n }\n\n return Promise.resolve(ret)\n .then((result) => Action.createSuccessOutcome(result))\n .catch((e) => {\n const msg = `Action ${this.logLabel}: error calling function: ${method}(${params || ''})`;\n return Action.createFailureOutcome(msg, e);\n });\n }\n\n\n /**\n * Inject the available contexts for expression evaluations.\n *\n * @param availableContexts the available contexts such as $application, $page, etc\n */\n setAvailableContext(availableContexts) {\n this.availableContexts = availableContexts;\n }\n }\n\n return CallVariableMethodAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/checkForExtensionsAction',[\n 'vb/action/action',\n], (Action) => {\n /**\n * Check if extensions need to be downloaded from an extension manager. If the extensions have been previously\n * downloaded to the device, version check is performed to upgrade or download new extensions\n *\n * @param {Object} parameters Parameters passed to the action\n * @param {String} parameters.registryUrl The url for the Extension Registry Manager (required)\n *\n * @returns {Promise>} A Promise with an Outcome containing a literal object with property\n * \"updateAvailable\". The object property updateAvailable shall be true if there are extensions that\n * need to be downloaded, otherwise false. The result can be accessed in the action chain result using:\n * \"$chain.results.[actionName].updateAvailable\" for e.g.\"[[ $chain.results.checkForExtensions]].updateAvailable\"\n *\n *\n * An example of entry to download extension in a page descriptor:\n *\n * \"parameters\": {\n * \"registryUrl\": \"https://fuscdrmsmc217-fa-ext.us.oracle.com:443/fscmUI/vxmanifest/v1/applications\"\n * }\n *\n */\n class CheckForExtensionsAction extends Action {\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n return this.context.application.extensionRegistry.checkForExtensions(parameters.registryUrl)\n .then((extensions) => Action.createSuccessOutcome({ updateAvailable: !!(extensions && extensions.length > 0) }))\n .catch((e) => Action.createFailureOutcome('Failed to retrieve extensions', e));\n }\n\n setContext(context) {\n this.context = context;\n }\n }\n\n return CheckForExtensionsAction;\n});\n\n","'use strict';\n\ndefine('vb/private/action/actionHelper',['vb/private/constants'],\n (Constants) => {\n /**\n * This helper class is used by assign variable functions to get values from variable expressions and perform\n * pick operations\n */\n class ActionHelper {\n /**\n * Creates a new Context for an action so that additional actions within the action chain can be invoked.\n * @param {Object} availableContexts available contexts to create a new context with (required)\n * @param {Action} action the action for which we are creating a new context (required)\n * @param additionalContexts Additional contexts to add onto the available contexts\n */\n static createNewContext(availableContexts, action, additionalContexts = {}) {\n if (availableContexts === null || availableContexts === undefined) {\n throw new Error('availableContexts must be provided to create a new context ');\n }\n\n if (action === null || action === undefined) {\n throw new Error('action must be provided to create a new context ');\n }\n\n // copy the contexts (shallow clone)\n const contexts = availableContexts.clone();\n\n contexts[Constants.ContextName.CURRENT] = {};\n\n // add the new ones\n Object.entries(additionalContexts).forEach((entity) => {\n // eslint-disable-next-line prefer-destructuring\n contexts[entity[0]] = entity[1];\n });\n\n // if we have the original metadata key name, make an accessor on the available contexts with the given alias\n // currently this creates a top-level property with this name (ex. 'myAction.data' is bindable)\n const alias = action.alias || action.metadataKey;\n if (alias) {\n contexts.addAccessor(alias, () => contexts[Constants.ContextName.CURRENT]);\n }\n\n return contexts;\n }\n }\n\n return ActionHelper;\n });\n\n","'use strict';\n\ndefine('vb/action/builtin/downloadExtensionsAction',[\n 'vb/action/action',\n 'vb/private/action/actionHelper',\n], (Action, ActionHelper) => {\n /**\n * Downloads extensions to the device from an extension manager. If the extensions are already there on the device,\n * version check is performed to upgrade or download new extensions\n *\n * @param {Object} parameters Parameters passed to the action\n * @param {String} parameters.registryUrl The url for the Extension Registry Manager (required)\n * @param {String} parameters.progressUpdateActionId ID of action in current chain to execute for providing\n * progress update during extension downloads. In the executed action chain '$current' shall be available\n * in the context to retrieve 'percent' indicating the progress, for e.g. \"{{ $current.percent }}\" can\n * be used to set the progress percentage\n *\n * @returns {Promise>} A Promise with an Outcome containing a literal object with property \"updated\".\n * The object property \"update\"\"shall be true if there are extensions that were to be downloaded, otherwise false.\n * The result can be accessed in the action chain result using:\n * \"$chain.results.[actionName].updated\" for e.g.\"[[ $chain.results.downloadExtensions]].updated\"\n *\n * An example of entry to download extension in a page descriptor:\n * \"downloadExtensions\": {\n * \"module\": \"vb/action/builtin/downloadExtensionsAction\",\n * \"parameters\": {\n * \"registryUrl\": \"https://fuscdrmsmc217-fa-ext.us.oracle.com:443/fscmUI/vxmanifest/v1/applications\",\n * \"progressUpdateActionId\": \"updateProgress\"\n * },\n * \"outcomes\": {\n * \"success\": \"hideDownloadScreen\"\n * }\n * },\n * \"updateProgress\" : {\n * \"module\": \"vb/action/builtin/assignVariablesAction\",\n * \"parameters\": {\n * \"$page.variables.downloadPercent\": {\n * \"source\": \"{{ $current.percent }}\"\n * }\n * }\n * }\n *\n *\n */\n class DownloadExtensionsAction extends Action {\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n let actionContext;\n if (parameters.progressUpdateActionId) {\n actionContext = ActionHelper.createNewContext(this.availableContexts, this);\n }\n\n return this.actionChain.context.application.extensionRegistry\n .downloadExtensions(parameters.registryUrl, parameters.progressUpdateActionId, this.actionChain, actionContext)\n .then((extensions) => Action.createSuccessOutcome({ updated: !!(extensions && extensions.length > 0) }))\n .catch((e) => Action.createFailureOutcome('Failed to download extensions', e));\n }\n\n /**\n * called by actionChain\n * @param actionChain\n * @param availableContexts\n */\n setContext(actionChain, availableContexts) {\n this.actionChain = actionChain;\n this.availableContexts = availableContexts;\n }\n }\n\n return DownloadExtensionsAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/editorUrlAction',[\n 'vb/action/action',\n 'vb/private/log',\n 'vb/private/configuration',\n 'vb/private/utils',\n 'vb/private/stateManagement/router',\n 'urijs/URI',\n],\n(Action, Log, Configuration, Utils, Router, URI) => {\n const logger = Log.getLogger('/vb/action/builtin/editorUrlAction');\n const PARAMS = {\n APP_NAME: 'app',\n APP_URL: 'appUrl',\n PAGE_URL: 'pageUrl',\n DOMAIN: 'domain',\n BASE: 'base',\n SANDBOX: 'sandbox',\n STRIPE: 'stripe',\n PAGE_CONT: 'pageContainer',\n PAGE_PATH: 'pagePath',\n COMPONENT_ID: 'componentId',\n DYNAMIC_LAYOUT: 'dynamicLayout',\n RULESET: 'ruleset',\n };\n\n const SAAS_HASH = 'saas';\n\n /**\n * This action is used to build the URL of the VB editor from an application at runtime. It gathers\n * multiple pieces of information and returns a URL with request parameters representing various\n * contextual info needed by the VB editor. This action should not be used for mobile application.\n * The base URL pointing to the editor location is either passed as an argument to the action or\n * has to be defined in the EDITOR_URL property of the vbInitConfig global object. If this value\n * is not available, the action will abort with an error.\n * Depending if the dynamicLayout request parameter is defined, the editor will either edit the\n * current page or the ruleset of a specific dynamic component.\n * Here is the list of all request parameters on the generated URL to the editor:\n *
    \n * app: Web application name\n * appUrl: URL of the application. This will not be on the URL if it is the same as \"base\"\n * domain: Domain part of the URL of the application\n * base: The URL of the application resources (possibly a CDN path)\n * sandbox: Sandbox ID (if there is one active)\n * stripe: the FA stripe, for example \"fscm\"\n * pageContainer: Containership path of the current page. This is the page/flow/page path\n * that represent which flow contains the page\n * pagePath: Resource path of the current page. This is a path is relative to the application\n * path (see base param above)\n * componentId: DOM id of the dynamic layout component to edit\n * dynamicLayout: A way to identify the dynamic layout of the component to edit. This is the\n * endpoint property of the DynamicLayoutMetadataProviderDescriptor bound to the layout component\n * to edit for example \"leads/get_leads\"\n * ruleset: Value of \"layout\" property of the dynamic layout component to edit\n *
    \n * @param componentId {String} the id of the component the DOM. The component has to\n * be a dynamic component.\n */\n class EditorUrlAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n perform(parameters) {\n const initConfig = window.vbInitConfig || {};\n const faConfig = window.faConfig || {};\n\n let { editorUrl } = parameters;\n if (!editorUrl) {\n editorUrl = initConfig.EDITOR_URL;\n if (!editorUrl) {\n throw new Error('The property EDITOR_URL is missing from vbInitConfig.');\n }\n }\n\n // Construct the URL starting with the value from vbInitConfig\n const uri = new URI(editorUrl);\n\n // Strip existing request parameters\n uri.search('');\n\n // Make sure the path ends with '/'\n const path = uri.path();\n if (path.slice(-1) !== '/') {\n uri.path(`${path}/`);\n }\n\n // Search always starts with ?_h=saas\n const search = { _h: SAAS_HASH };\n\n // Set the \"app\" parameter\n let appId = initConfig.APP_ID;\n if (!appId) {\n appId = this.scopes.application.definition.id;\n }\n search[PARAMS.APP_NAME] = appId;\n\n // Set the \"domain\" parameter\n search[PARAMS.DOMAIN] = window.location.host;\n\n // Set the \"base\" parameter\n const base = initConfig.BASE_URL || require.toUrl('');\n search[PARAMS.BASE] = base;\n let appUrl = base;\n\n // Set the \"appUrl\" parameter\n if (Configuration.applicationUrl !== base) {\n appUrl = Configuration.applicationUrl;\n search[PARAMS.APP_URL] = appUrl;\n }\n\n // Set the \"pageUrl\" parameter\n let pageUrl = window.location.href;\n // Shorten the page URL when it starts with the appUrl\n if (pageUrl.startsWith(appUrl)) {\n pageUrl = pageUrl.substring(appUrl.length);\n }\n search[PARAMS.PAGE_URL] = pageUrl;\n\n // Set the \"sandbox\" parameter\n const sandbox = Configuration.getSandboxId();\n if (sandbox) {\n search[PARAMS.SANDBOX] = sandbox;\n }\n\n // set the \"stripe\" parameter\n const stripe = faConfig.APP_STRIPE;\n if (stripe) {\n search[PARAMS.STRIPE] = stripe;\n }\n\n // Set the \"pageContainer\" parameter\n const currentPage = Router.getCurrentPage();\n if (currentPage) {\n // Use getNavPath() instead of fullPath for the value of the container path because\n // getNavPath() knows how to skip the hidden page of the fndShell.\n const currentPageContainer = currentPage.getNavPath();\n search[PARAMS.PAGE_CONT] = currentPageContainer;\n\n // Set the \"pagePath\" parameter\n const currentPagePath = currentPage.getResourcePath();\n search[PARAMS.PAGE_PATH] = currentPagePath;\n }\n\n // Set the componentId the ruleset parameters\n const { componentId } = parameters;\n if (componentId) {\n // TODO: The search for the component should only be done in the view for\n // this page, not the entire document.\n const element = document.getElementById(componentId);\n if (element) {\n search[PARAMS.COMPONENT_ID] = componentId;\n search[PARAMS.RULESET] = element.getAttribute('layout');\n const binding = element.getAttribute('metadata');\n if (binding) {\n const dynamicLayout = this.getDynamicLayout(binding);\n if (dynamicLayout) {\n search[PARAMS.DYNAMIC_LAYOUT] = dynamicLayout;\n } else {\n this.log.warn('Component', componentId,\n 'is missing its DynamicLayoutMetadataProviderDescriptor definition');\n }\n }\n } else {\n this.log.warn('Component', componentId, 'is not found in the document.');\n }\n }\n\n this.log.info('Using VB editor URL:', editorUrl, 'with params:', search);\n\n uri.setSearch(search);\n\n // The action result is the URL to open the VB editor\n return Action.createSuccessOutcome(uri.href());\n }\n\n /**\n * Return the dynamic layout given the component binding\n * @param {String} binding\n * @return {String}\n */\n getDynamicLayout(binding) {\n let ret;\n\n const mdpd = EditorUrlAction.getMetadataProviderFromBinding(binding);\n if (mdpd) {\n const { definition } = this.scopes.container;\n const mdpdDef = definition.metadata[mdpd];\n if (mdpdDef) {\n ret = mdpdDef.defaultValue && mdpdDef.defaultValue.endpoint;\n }\n }\n\n return ret;\n }\n\n /**\n * Return the DynamicLayoutMetadataProviderDescriptor id given the binding of a component.\n * Assume the binding is of the form '[[$page.metadata.leads.provider]]'\n * @param {String} binding\n * @return {String}\n */\n static getMetadataProviderFromBinding(binding) {\n // TODO: Find a cleaner way to retrieve the metadata object\n const marker = '.metadata.';\n const mtIndex = binding.indexOf(marker);\n let ret;\n\n if (mtIndex) {\n const start = mtIndex + marker.length;\n ret = binding.substring(start, binding.indexOf('.', start));\n }\n\n return ret;\n }\n\n setContext(scopes) {\n this.scopes = scopes;\n }\n }\n\n return EditorUrlAction;\n});\n\n","'use strict';\n\ndefine('vb/action/eventAction',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/action/action',\n 'vb/private/stateManagement/router',\n],\n(Constants, Log, Action, Router) => {\n const logger = Log.getLogger('/vb/action/eventAction');\n\n /**\n * not allowed\n */\n const INVALID_EVENTS = [\n Constants.ENTER_EVENT,\n Constants.EXIT_EVENT,\n Constants.BEFORE_ENTER_EVENT,\n Constants.BEFORE_EXIT_EVENT,\n Constants.INTERACTABLE_EVENT,\n Constants.AFTER_NAVIGATE_EVENT,\n Constants.RESOURCE_CHANGED_EVENT,\n ];\n\n // --\n class EventAction extends Action {\n // abstract base class\n perform() {\n throw new Error('Cannot instantiate EventAction.');\n }\n\n setContext(context) {\n this.context = context;\n if (context && context.container && context.container.invokeEventWithBubbling\n && typeof context.container.invokeEventWithBubbling === 'function') {\n this.eventContainer = context.container;\n }\n }\n\n /**\n * @param target\n * @returns {boolean}\n */\n static isValidTarget(target) {\n return target === undefined || target === null\n || target === Constants.EventTargets.LEAF || target === Constants.EventTargets.CURRENT;\n }\n\n /**\n * determine which container to use as the start of the event, and fire/invoke the event\n * @param name\n * @param payload\n * @param options all parameters for the action\n * @returns {Promise|null} null means it did not fire the event\n */\n static fireEvent(eventContainer, name, payload, options) {\n let container;\n if (options && options.target === Constants.EventTargets.LEAF) {\n container = Router.getCurrentPage();\n if (!container) {\n logger.warn(`Could not get the current page for event: ${name}`);\n }\n } else {\n container = eventContainer;\n }\n\n if (container) {\n // returns Promise\n return container.invokeEventWithBubbling(name, payload);\n }\n return null;\n }\n\n /**\n * check if the event name is allowed\n * @param name\n * @returns {boolean}\n */\n static isValid(name) {\n return name && INVALID_EVENTS.indexOf(name) === -1;\n }\n }\n\n return EventAction;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/eventBehavior',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/action/action',\n 'vb/private/action/assignmentHelper',\n 'vb/private/stateManagement/router',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/utils',\n], (Constants, Log, Action, AssignmentHelper, Router, StateUtils, Utils) => {\n const logger = Log.getLogger('/vb/private/events/eventBehavior');\n\n /**\n * EventBehavior\n *\n * two main sets of functionality:\n * A) \"behavior\" attribute - how the listeners are invoked, and results are returned.\n * B) propagation - order of containers and extensions.\n *\n *\n * A) Behaviors\n * implements for the \"behavior\" of declared ('custom') events, via subclasses.\n * Where \"behavior\" can be:\n * notify\n * - standard behavior, all container's listener chains called immediately, no waiting.\n *\n * notifyAnWait\n * - each container's listener chains are called serially\n *\n * checkForCancel\n * - each container's listener chains are called serially; propagation stops when a chain returns a \"success\"true.\n * with a payload of { stopPropagation: true }\n *\n * transform\n * - the listener has an additional \"$previous\" variable which can be passed to the chain\n * - the declaration has an optional additional \"returnType\"\n * - each container's listener chains are called serially, and the result of each listener chain\n * is the $previous of the next listener context\n *\n * The container is responsible for finding the event in the registry, and calling EventBehavior.execute.\n *\n *\n * B) Propagation\n * This class now controls the order of container and and extensions event processing.\n * Propagation is 'lateral' within a container and extensions, and 'vertical', up through container parents.\n *\n */\n class EventBehavior {\n /**\n * @param name {string}\n * @param eventModel {object}\n * @param registry {EventRegistry}\n */\n constructor(name, eventModel, registry) {\n if (eventModel) {\n this.name = name;\n this.behavior = eventModel.behavior;\n this.payloadType = eventModel.payloadType;\n this.returnType = eventModel.returnType;\n this.mode = eventModel.mode;\n this.eventModel = eventModel;\n }\n\n this.registry = registry; // prevent circular requireJS dependency\n\n this.behavior = this.behavior || Constants.EventBehaviors.NOTIFY;\n }\n\n\n /**\n * called by Container, to start event propagation.\n *\n * @param firingContainer\n * @param eventName we need the nae that the caller used, to make sure the namespace is right\n * @param eventPayload\n * @returns {Promise|*}\n */\n start(firingContainer, eventName, eventPayload, expressionContexts) {\n const startingContainer = this.startingContainer(firingContainer);\n\n // if the event is declared, or using a namespace, it is a 'new' style of event,\n // and always starts bubbling from the (lowest) current Page (or lowest valid container).\n if (startingContainer) {\n const eventModel = this.findEventDefinition(startingContainer, eventName, firingContainer);\n\n if (eventModel) {\n const coercedPayload = (eventModel && eventModel.payloadType)\n ? AssignmentHelper.coerceType(eventPayload, eventModel.payloadType)\n : eventPayload;\n\n // convenience object, for internal methods\n const eventWrapper = {\n callerName: eventName,\n name: this.eventModel.fullName,\n origin: firingContainer, // the one who fired\n payload: eventPayload,\n coercedPayload,\n eventModel,\n };\n\n // now get the listener functions\n const functionWrappers = this\n .recurseContainmentAndCreateFunctions(startingContainer, eventWrapper, expressionContexts);\n\n return this.eventModel.behavior.execute(functionWrappers);\n }\n\n return Promise.reject(new Error(`unable to fire event ${eventName}: no event model found `\n + `for ${startingContainer.className}, fired from ${firingContainer.className}.`));\n }\n return Promise.reject(new Error(`unable to fire event ${eventName}: no event source found, `\n + ` fired from ${firingContainer.className}.`));\n }\n\n\n /**\n * default behavior; start from the current 'leaf' container (not necessarily the 'event firer')\n * @returns {Page|*}\n */\n startingContainer(container) {\n if (container) {\n return container.getLeafContainer();\n }\n // fallback; shouldn't need this though\n return Router.getCurrentPage();\n }\n\n\n /**\n * default (declared) implementation\n * returns true if the \"mode\" is \"listenable\" or \"triggerable\" (all triggerable events are listenable).\n * @param container\n * @returns {boolean}\n */\n listenableBy(container) {\n return (!container.isExtension()\n || this.mode === Constants.EventMode.TRIGGERABLE\n || this.mode === Constants.EventMode.LISTENABLE);\n }\n\n\n /**\n * default (declared) implementation\n * @param container\n * @returns {boolean}\n */\n triggerableBy(container) {\n return (!container.isExtension() || this.mode === Constants.EventMode.TRIGGERABLE);\n }\n\n /**\n * look for the event by name in the global registry\n * @param eventName\n * @param containerThatFired\n * @private\n */\n findEventDefinition(container, eventName, containerThatFired) {\n let eventDef = this.registry.get(container, containerThatFired, eventName);\n\n if (!eventDef) {\n const nextContainer = container.parent;\n if (nextContainer) {\n eventDef = this.findEventDefinition(nextContainer, eventName, containerThatFired);\n }\n }\n return eventDef;\n }\n\n\n /**\n * call all the chains defined for the event listener.\n * this delegates to callChainFunctionsInternal, and wraps the results\n *\n * @param container\n * @param chainFunctionWrappers Array<{chainId: string, fnc: function}\n * @param expressionContexts\n * @param previousResult (*)\n * @returns {Promise}\n */\n // eslint-disable-next-line no-unused-vars\n callChainFunctions(container, chainFunctionWrappers, expressionContexts, previousResult) {\n return this.callChainFunctionsInternal(container, chainFunctionWrappers, expressionContexts, previousResult);\n }\n\n /**\n * call all the chains defined for the event listener, called by callChainFunctions\n * this is the 'default' behavior, other behaviors may override\n *\n * @param container\n * @param chainFunctionWrappers Array<{chainId: string, fnc: function}\n * @param expressionContexts\n * @param previousResult (*)\n * @returns {Promise}\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n callChainFunctionsInternal(container, chainFunctionWrappers, expressionContexts, previousResult) {\n return container.callListenerChainFunctionsInParallel(chainFunctionWrappers, expressionContexts)\n // wrap each result with an object\n .then((results) => results && results\n .map((result, index) => ({ chainId: chainFunctionWrappers[index].chainId, result })));\n }\n\n /**\n * Call the invokeEvent functions for a given container in the propagation 'chain'.\n * The functions are the set of invokeEvent() calls for the container tree,\n * created by Container.recurseContainmentAndCreateFunctions.\n *\n * The function signature should be: fnc(eventBehavior, previousValue).\n * Container curries the invokeEvent function (bind) to provide the name and payload.\n *\n * This delegates to executeInternal, but resolves with undefined.\n * Subclasses should only override if they need to return a result;\n * otherwise, they should override executeInternal.\n *\n * @param functionWrappers Array<{container: Container, fnc: function}>\n * @returns {Promise}\n */\n execute(functionWrappers) {\n logger.info('Triggering declared event, name:', this.name, 'behavior:',\n this.behavior, 'payloadType:', this.payloadType);\n return this.executeInternal(functionWrappers)\n .then(() => undefined);\n }\n\n\n /**\n * called by execute, can be overridden by subclasses\n *\n * For this base implementation, these are called in parallel.\n * This is the default behavior; subclasses may override.\n *\n * This is invoked by execute().\n *\n * @param functionWrappers\n * @returns {Promise}\n * @private\n */\n executeInternal(functionWrappers) {\n return Promise.all(functionWrappers.map((wrapper) => wrapper.fnc(this)));\n }\n\n /**\n * simple utility to call AssignmentHelper.coerceType conditionally\n * @param value\n * @param type\n * @returns {*|string|boolean|number}\n */\n static shape(value, type) {\n return type ? AssignmentHelper.coerceType(value, type) : value;\n }\n\n\n /**\n * creates an array of function wrappers that represent a curried version of container.invokeEvent.\n * the curried function represents: container.invokeEvent(name, coercedPayload).\n *\n * the caller (EventBehavior) provides the rest of the args (behavior, previous) at invocation.\n *\n *\n * @param container\n * @param eventModel\n * @param eventWrapper\n * @param expressionContexts\n * @returns {Array<{ container: Container, fnc: function }>}\n */\n curryListeners(container, eventModel, eventWrapper, expressionContexts) {\n const functionWrappers = [];\n const fnc = container.invokeEvent.bind(container, eventWrapper.name, eventWrapper.coercedPayload);\n functionWrappers.push({\n container,\n fnc,\n });\n\n if (eventModel.isInterface) {\n const fncWrappers = this.recurseExtensionsAndCreateFunctions(container, eventWrapper,\n eventModel, expressionContexts);\n\n Array.prototype.push.apply(functionWrappers, fncWrappers);\n }\n\n return functionWrappers;\n }\n\n\n /**\n * for event bubbling,\n * from the current container, build an array of (bound) asynchronous functions, that return a Promise;\n * Each functions will be a (curried) call to this.invokeEvent.\n * The caller of this function is responsible for calling these functions.\n * By building an array, the caller can chose to serialize, or call in parallel.\n *\n * Each wrapped function must be called by the EventBehavior.execute, initiated by calling EventBehavior.start.\n *\n * The 'eventWrapper' is:\n * name: event name, optionally qualified with container class prefix\n * origin: the Container FIRING the event\n * eventModel: the EventModel\n * payload: optional, event-specific\n *\n * @param container\n * @param eventWrapper\n * @param eventWrapper.name {string}\n * @param eventWrapper.origin: {Container}\n * @param eventWrapper.payload: {*}\n * @param eventWrapper.coercedPayload: {*}\n * @param eventWrapper.eventModel: {EventModel}\n * @param expressionContexts\n * @returns {Array<{ container: Container, fnc: function }>}\n */\n recurseContainmentAndCreateFunctions(container, eventWrapper, expressionContexts) {\n const functionWrappers = [];\n let nextContainer;\n\n // if there is a definition anywhere in the chain,\n // we only invoke the event if we can see the event definition from the current container.\n const eventModel = this.registry.get(container, eventWrapper.origin, eventWrapper.name);\n\n if (eventModel) {\n // do not curry the invokeEvent if we are not allowed to listen to it\n if (this.listenableBy(container)) {\n // get the curried function for the event listeners for the (base) container, and siblings (extensions).\n // this may be overridden by the behavior to change the order, or to change if extensions are processed.\n const fncWrappers = this.curryListeners(container, eventModel, eventWrapper, expressionContexts);\n Array.prototype.push.apply(functionWrappers, fncWrappers);\n }\n }\n\n // go to the next container...\n const terminalContainer = eventWrapper.eventModel.container;\n // do not bubble to containers above the declaration of the event\n if (container !== terminalContainer) {\n nextContainer = this.getNextContainerForBubbling(container, eventWrapper.name, expressionContexts);\n }\n\n if (nextContainer) {\n const fncWrappers = this\n .recurseContainmentAndCreateFunctions(nextContainer, eventWrapper, expressionContexts);\n Array.prototype.push.apply(functionWrappers, fncWrappers);\n }\n\n // we are out of parents\n return functionWrappers;\n }\n\n\n /**\n * iterate any extensions, and return (curried) invokeEvent functions.\n *\n * analogous to Container.recurseContainmentAndCreateFunctions, but for extensions.\n * @param container\n * @param eventWrapper\n * @param eventModel\n * @param expressionContexts\n * @returns {Array<{ container: Container, fnc: function }>}\n */\n recurseExtensionsAndCreateFunctions(container, eventWrapper, eventModel, expressionContexts) {\n const functionWrappers = [];\n if (container.extensionsArray) {\n container.extensionsArray\n .forEach((extension) => {\n const fncWrappers = this.recurseContainmentAndCreateFunctions(extension, eventWrapper, expressionContexts);\n Array.prototype.push.apply(functionWrappers, fncWrappers);\n });\n }\n\n return functionWrappers;\n }\n\n /**\n * used in recurseContainmentAndCreateFunctions\n * @param container\n * @param eventName\n * @param expressionContexts\n * @returns {Container}\n * @private\n */\n getNextContainerForBubbling(container, eventName, expressionContexts) {\n if (!this.checkStopPropagationExpression(container, eventName, expressionContexts)) {\n return container.parent;\n }\n return null;\n }\n\n\n /**\n * looks at the listener definition for 'stopPropagation'\n *\n * if the listener def has 'stopPropagation': true, we do not bubble\n * todo: need to reconcile this with vbBeforeEnter, and result.cancelled: true\n * @param container\n * @param eventName\n * @param expressionContexts\n * @returns {boolean}\n */\n checkStopPropagationExpression(container, eventName, expressionContexts) {\n // support this property only on 'eventListeners', not 'events'\n const eventListener = container.findEventListener(eventName);\n\n // evaluate listener stopPropagation values\n const stopped = (() => {\n if (eventListener && eventListener.stopPropagation) {\n const expr = StateUtils.getValueOrExpression(eventListener.stopPropagation, expressionContexts);\n return Utils.resolveIfObservable(expr);\n }\n return false;\n })();\n\n // log an 'info here\n if (stopped) {\n const msg = 'Event listener \\'stopPropagation\\' returned true';\n logger.info('Event bubbling stopped for event', eventName, ':', msg);\n }\n return stopped;\n }\n }\n\n // used for constructing the results\n EventBehavior.ResultProperties = {\n RETURN: 'return',\n };\n\n return EventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/transformEventBehavior',[\n 'vb/private/events/eventBehavior',\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/action/action',\n], (EventBehavior, Constants, Log, Action) => {\n const logger = Log.getLogger('/vb/private/events/transformEventBehavior');\n /**\n * TransformEventBehavior, behavior = \"transform\"\n */\n class TransformEventBehavior extends EventBehavior {\n /**\n * override, to return the actual result, instead of undefined\n * @param functionWrappers\n * @returns {Promise<{ result: * }>}\n * @override\n */\n execute(functionWrappers) {\n logger.info('Triggering declared event, name:', this.name, 'behavior:',\n this.behavior, 'payloadType:', this.payloadType);\n\n return this.executeInternal(functionWrappers)\n .then((result) => ({ [EventBehavior.ResultProperties.RETURN]: result }));\n }\n\n /**\n * call the (curried) invokeEvent functions serially, and also call the chains called within\n * each invokeEvent serially.\n *\n * Before calling each chain, $previous is added to the expressionContexts, to be optionally passed to\n * the chain, as defined by the declared listener. (@see TransformEventBehavior.callChainFunctions)\n *\n * When assigning 'previous' from the result of an invokeEvent, we need to ignore any that return\n * the 'no listener' marker.\n *\n * The result is a Promise, resolved with a value that is coerced to the resultType.\n * @param functionWrappers\n * @private\n * @override\n */\n executeInternal(functionWrappers) {\n // an initial, valid, empty result to start with\n let previousValidResult = {\n name: Action.Outcome.SUCCESS,\n result: undefined,\n };\n\n return functionWrappers\n .reduce((p, wrapper) => Promise.resolve(p)\n .then((result) => {\n previousValidResult = TransformEventBehavior\n .resultToPrevious(result, this.returnType, previousValidResult);\n return wrapper.fnc(this, previousValidResult);\n }),\n Promise.resolve())\n // handle the result of the reduce()\n .then((finalResult) => TransformEventBehavior\n .resultToPrevious(finalResult, this.returnType, previousValidResult));\n }\n\n /**\n * called during execute(), serialized, and passed the previous result (if any).\n * The functions should be passed the expression context.\n * Container curries the other required parameters (id, params).\n * The function signature should be: fnc()\n *\n * @param container\n * @param chainFunctionWrappers Array<{chainId: string, fnc: function}\n * @param contexts\n * @param previousResult\n * @returns {Promise<{ name: string, result: * }>}\n * @override\n * @private\n */\n callChainFunctionsInternal(container, chainFunctionWrappers, contexts, previousResult) {\n const expressionContexts = contexts;\n expressionContexts[Constants.ContextName.PREVIOUS] = previousResult;\n\n // as if we came from an action chain for the initial iteration through reduce()\n const initialResult = {\n name: Action.Outcome.SUCCESS,\n result: contexts[Constants.ContextName.PREVIOUS],\n };\n\n return chainFunctionWrappers\n .reduce((p, wrapper) => Promise.resolve(p)\n .then((result) => {\n expressionContexts[Constants.ContextName.PREVIOUS] = TransformEventBehavior\n .resultToPrevious(result, this.returnType);\n return wrapper.fnc(expressionContexts);\n }),\n Promise.resolve(initialResult));\n }\n\n /**\n * convert the result of a listener invocation (a chain) to the value used for $previous.\n * if it is NOT \"success\", $previous will be undefined\n * @param result\n * @param type\n * @param lastPrevious the last valid result, meaning, the last result that was not a 'no listener' marker\n * @returns {*}\n */\n static resultToPrevious(result, type, lastPrevious) {\n if (result) {\n if (result.name === Action.Outcome.SUCCESS) {\n return EventBehavior.shape(result.result, type);\n }\n if (result === Constants.NO_EVENT_LISTENER_RESPONSE) {\n return lastPrevious;\n }\n }\n return undefined;\n }\n }\n\n return TransformEventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/checkCancelEventBehavior',[\n 'vb/private/events/eventBehavior',\n 'vb/private/constants',\n 'vb/private/log',\n], (EventBehavior, Constants, Log) => {\n const logger = Log.getLogger('/vb/private/events/checkCanceleventBehavior');\n /**\n * CheckCancelEventBehavior, behavior = \"checkForCancel\"\n */\n class CheckCancelEventBehavior extends EventBehavior {\n /**\n * call the (curried) invokeEvent functions serially, but stop when one returns a {\"success\", true} outcome\n * @param functionWrappers\n * @private\n * @override\n */\n executeInternal(functionWrappers) {\n const results = [];\n let cancelled = false;\n return functionWrappers\n .reduce((p, wrapper) => p\n .then((result) => {\n // if the previous one did not return a cancel result, keep going\n if (!cancelled) {\n if (!CheckCancelEventBehavior.isCancelResult(result)) {\n return Promise.resolve(wrapper.fnc(this))\n .then((r) => {\n results.push(r);\n return r;\n });\n }\n logger.info(`Event propagation cancelled for event ${this.name}`);\n cancelled = true;\n }\n return null;\n }),\n Promise.resolve(Constants.NO_EVENT_LISTENER_RESPONSE)); // @todo: dummy result for first invocation\n }\n\n /**\n * @param result\n * @returns {*} truthy value if the result is \"success\" with a payload of { stopPropagation: true }\n * @private\n */\n static isCancelResult(result) {\n return (Array.isArray(result)\n && result.some((wrapper) => wrapper\n && wrapper.result.name === 'success'\n && wrapper.result.result && wrapper.result.result.stopPropagation === true));\n }\n\n\n /**\n * opposite of 'default' behavior; extensions get the event first, then base\n * @param container\n * @param eventModel\n * @param eventWrapper\n * @param expressionContexts\n * @returns {Array<{ container: Container, fnc: function }>}\n * @override\n */\n curryListeners(container, eventModel, eventWrapper, expressionContexts) {\n const functionWrappers = [];\n if (eventModel.isInterface) {\n const fncWrappers = this\n .recurseExtensionsAndCreateFunctions(container, eventWrapper, eventModel, expressionContexts);\n Array.prototype.push.apply(functionWrappers, fncWrappers);\n }\n\n const fnc = container.invokeEvent.bind(container, eventWrapper.name, eventWrapper.coercedPayload);\n functionWrappers.push({\n container,\n fnc,\n });\n\n return functionWrappers;\n }\n }\n\n return CheckCancelEventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/notifyEventBehavior',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/action/action',\n 'vb/private/action/assignmentHelper',\n 'vb/private/events/eventBehavior',\n], (Constants, Log, Action, AssignmentHelper, EventBehavior) => {\n /**\n * NotifyEventBehavior\n * call event listeners, don't wait for any responses.\n */\n class NotifyEventBehavior extends EventBehavior {\n /**\n * override for 'notify' so the fireCustomEventAction doesn't wait for the listeners to finish/resolve.\n * @param functionWrappers\n * @returns {Promise}\n * @private\n * @override\n */\n executeInternal(functionWrappers) {\n super.executeInternal(functionWrappers);\n return Promise.resolve(null);\n }\n }\n\n return NotifyEventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/notifyWaitEventBehavior',[\n 'vb/private/events/eventBehavior',\n], (EventBehavior) => {\n /**\n * NotifyWaitEventBehavior, behavior = \"notifyAndWait\"\n */\n class NotifyWaitEventBehavior extends EventBehavior {\n /**\n * call invokeEvent in sequence\n * @param functionWrappers\n * @override\n * @private\n */\n executeInternal(functionWrappers) {\n return functionWrappers\n .reduce((p, wrapper) => Promise.resolve(p)\n .then(() => Promise.resolve(wrapper.fnc(this))\n .then((r) => r)),\n Promise.resolve());\n }\n }\n\n return NotifyWaitEventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/undeclaredEventBehavior',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/action/action',\n 'vb/private/action/assignmentHelper',\n 'vb/private/events/eventBehavior',\n], (Constants, Log, Action, AssignmentHelper, EventBehavior) => {\n\n const NAMESPACES = [\n Constants.APPLICATION_PREFIX,\n Constants.FLOW_PREFIX,\n Constants.PAGE_PREFIX,\n ];\n\n\n /**\n * UndeclaredEventBehavior\n *\n * this represents the behavior for events events that are not declared in an \"events\" section.\n * Those are the original style of events (they were called 'custom' events, but now the new ones are),\n * and the built-in 'vbXXX' events.\n *\n *\n * when using fireCustomEventAction with undeclared events:\n * - start bubbling at the container that calls the action\n * - no behavior - just call all listeners, and don't wait for Promises, and don't return results.\n *\n * call event listeners, don't wait for any responses.\n */\n class UndeclaredEventBehavior extends EventBehavior {\n /**\n * default behavior; start from the current page (not necessarily the 'event firer')\n *\n * @param container\n * @returns {Page|*}\n */\n startingContainer(container) {\n return UndeclaredEventBehavior.isNamespaced(this.name) ? null : container;\n }\n\n /**\n * see if the name reference has a prefix ('foo:', etc.)\n * @param name\n * @returns {boolean}\n */\n // eslint-disable-next-line class-methods-use-this\n static isNamespaced(name) {\n const parts = (name || '').split(':');\n if (parts.length === 2) {\n const prefixParts = parts[0].split('/'); // get the last part\n return NAMESPACES.indexOf(prefixParts[prefixParts.length - 1]) >= 0;\n }\n return false;\n }\n\n /**\n * anyone can trigger an undeclared event\n * @param container\n * @returns {boolean}\n * @override\n */\n triggerableBy() {\n return true;\n }\n\n\n /**\n * undeclared events are always listenable, but this is double-checking that the name isn't namespaced.\n * @returns {boolean}\n * @override\n */\n listenableBy() {\n return !UndeclaredEventBehavior.isNamespaced(this.name);\n }\n\n /**\n * don't process extensions, only invoke the event on itself\n * @param container\n * @param eventModel\n * @param eventWrapper\n * @returns {Array<{ container: Container, fnc: function }>}\n * @override\n */\n curryListeners(container, eventModel, eventWrapper) {\n const functionWrappers = [];\n const fnc = container.invokeEvent.bind(container, eventWrapper.name, eventWrapper.coercedPayload);\n functionWrappers.push({\n container,\n fnc,\n });\n return functionWrappers;\n }\n }\n\n return UndeclaredEventBehavior;\n});\n\n","/* eslint-disable class-methods-use-this,max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/eventBehaviorFactory',[\n 'vb/private/events/eventBehavior',\n 'vb/private/events/transformEventBehavior',\n 'vb/private/events/checkCancelEventBehavior',\n 'vb/private/events/notifyEventBehavior',\n 'vb/private/events/notifyWaitEventBehavior',\n 'vb/private/events/undeclaredEventBehavior',\n 'vb/private/constants',\n], (EventBehavior, TransformEventBehavior, CheckCancelEventBehavior,\n NotifyEventBehavior, NotifyWaitEventBehavior, UndeclaredEventBehavior, Constants) => {\n /**\n * factory for various EventBehavior implementations\n */\n class EventBehaviorFactory {\n /**\n * @param name {string}\n * @param model {EventModel}\n * @param registry {EventRegistry}\n * @returns {EventBehavior}\n */\n static create(name, model, registry) {\n const behavior = model && model.behavior;\n\n switch (behavior) {\n case Constants.EventBehaviors.TRANSFORM:\n return new TransformEventBehavior(name, model, registry);\n case Constants.EventBehaviors.CHECK_CANCEL:\n return new CheckCancelEventBehavior(name, model, registry);\n case Constants.EventBehaviors.NOTIFY_WAIT:\n return new NotifyWaitEventBehavior(name, model, registry);\n case Constants.EventBehaviors.NOTIFY:\n return new NotifyEventBehavior(name, model, registry);\n case Constants.EventBehaviors.DYNAMIC_COMP:\n return new EventBehavior(name, model, registry);\n default:\n if (behavior) {\n throw new Error(`Event declaration has an invalid \"behavior\": ${behavior}`);\n }\n if (model && model.isDeclared) {\n // this is the default behavior for declared events\n return new NotifyEventBehavior(name, model, registry);\n }\n // this is the behavior for undeclared events\n return new UndeclaredEventBehavior(name, model || {}, registry);\n }\n }\n }\n\n return EventBehaviorFactory;\n});\n\n","/* eslint-disable max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/baseEventModel',[\n 'vb/private/constants',\n 'vb/private/log',\n], (Constants, Log) => {\n const logger = Log.getLogger('/vb/private/events/eventModel');\n\n // an ordered list of container classes, used for checking if an Event reference is allowed\n const CLASSES = [\n 'Application',\n 'Flow',\n 'Page',\n 'FlowExtension',\n 'PageExtension',\n ];\n\n /**\n * A model for event definitions, both declared and undeclared.\n *\n * Along with name, defining container (if one), and other convenience properties,\n * this contains a \"behavior\" {EventBehavior} property.\n *\n * Any model returned from the registry extends this model.\n *\n */\n class BaseEventModel {\n /**\n * @param name\n * @param registry {EventRegistry} needed to prevent circular requireJS dependency\n * @param definition JSON declaration, if any\n * @param container {Container|null} if declared, the declaring container; otherwise null\n * @param isInterface {boolean} whether this is declared in the container's \"interface\" section.\n */\n constructor(name, registry, definition, container, isInterface = false) {\n this.name = name;\n Object.assign(this, definition); // cheap class for now, copies behavior & mode\n this.container = container;\n\n this.isDeclared = !!container; // only true if we were given a declaring container\n\n // the fully-qualified name, using extension namespace/prefix:\n // /:\n // - extension namespace: extension ID or 'base'\n // - container prefix: 'application', 'flow', or 'page'\n // - simple name: the event name, with no prefix/namespace\n\n if (container) {\n this.fullName = `${container.extensionId || Constants.ExtensionNamespaces.BASE}/`\n + `${BaseEventModel.basePrefix(container)}:${name}`;\n } else {\n this.fullName = name;\n }\n\n this.isInterface = isInterface;\n }\n\n /**\n * checks if the event is accessible to the container.\n * In any given context, we only have access to one of each Page / Flow / Application,\n * even though Flows can have sub-Flows (with Pages, etc).\n *\n * The registrar's scopeResolver must have the container that is asking for the registration.\n *\n * @param container\n * @param name the name used by the reference.\n * @returns {boolean} false if the name is not properly qualified or the event in not defined container scope.\n * @private\n */\n accessibleBy(container, name) {\n if (this.container.className === 'Application') {\n // everyone can access;\n return true;\n }\n\n if (container.isExtension()) {\n // extensions can only access events defined in the \"interface\"\n if (!this.isInterface) {\n return false;\n }\n // ... or if they use properly qualified names. check that the name's 'ext' resolves the same\n // for the container (that we are checking for) as it resolves for the registrar\n const partsForMe = BaseEventModel.parseName(container, name);\n const partsForRegistrar = BaseEventModel.parseName(this.container, this.name);\n if (partsForMe.ext !== partsForRegistrar.ext) {\n return false;\n }\n }\n\n const registrarClassName = this.container.eventPrefix;\n\n // When getting the scopeResolver and className to check access, we want it for the 'base' container,\n // not the extension.\n // For example, for a PageExtension, we want the Page's scopeResolver, and we look for the 'page'.\n const base = BaseEventModel.baseContainer(container);\n\n const resolver = base.scopeResolver;\n // the event is accessible if the scope resolver for the container that fired the event\n // has a property that is the container that is requesting the event registration,\n // AND if the requesting container is a equal or lower class of the registrar.\n //\n // For example, a Flow's scopeResolver will have only 'application' and 'flow' (and 'this').\n // If the current container's className.toLowerCase() is 'page', this returns false.\n // If it is 'flow', make sure the 'flow' in the resolver is the same Flow as the one asking for the event.\n\n return !!(resolver && resolver[registrarClassName.toLowerCase()] === this.container)\n && (CLASSES.indexOf(container.className) >= CLASSES.indexOf(registrarClassName));\n }\n\n /**\n * return the base container (page, flow, application).\n * @param container\n * @returns {*}\n */\n static baseContainer(container) {\n return container.base || container;\n }\n\n /**\n * return the base container class, as lower case, for use in event names/keys\n * @param container\n * @returns {string}\n */\n static basePrefix(container) {\n return BaseEventModel.baseContainer(container).eventPrefix;\n }\n\n /**\n * <'base'|''|extensionId>/:\n *\n * @param container\n * @param name\n * @returns {*|string[]|void}\n */\n static parseName(container, name) {\n const parts = name.split(':');\n\n let namespace;\n let simpleName;\n if (parts.length === 2) {\n [namespace, simpleName] = parts;\n } else if (parts.length === 1) {\n [simpleName] = parts;\n const extensionContext = container.extensionId || Constants.ExtensionNamespaces.BASE;\n const prefix = BaseEventModel.basePrefix(container);\n namespace = `${extensionContext}/${prefix}`;\n } else {\n logger.error('Invalid event name', name);\n return null;\n }\n\n const namespaceParts = namespace.split('/');\n\n if (namespaceParts.length === 2) {\n // assume 'base' when it starts with a slash\n if (!namespaceParts[0]) {\n namespaceParts[0] = Constants.ExtensionNamespaces.BASE;\n }\n } else if (namespaceParts.length === 1) {\n // no slash, if it has a has an extensionId, use it; otherwise, use 'base'\n const extPrefix = container.extensionId || Constants.ExtensionNamespaces.BASE;\n namespaceParts.unshift(extPrefix);\n }\n\n if (!namespaceParts[1]) {\n namespaceParts[1] = BaseEventModel.basePrefix(container);\n }\n\n return {\n ext: namespaceParts[0],\n prefix: namespaceParts[1], // container: 'application', 'page', or 'flow'\n name: simpleName,\n };\n }\n }\n\n return BaseEventModel;\n});\n\n","'use strict';\n\ndefine('vb/private/events/eventModel',[\n 'vb/private/events/baseEventModel',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/events/eventBehaviorFactory',\n], (BaseEventModel, StateUtils, EventBehaviorFactory) => {\n /**\n * this represents a standard VB event\n */\n class EventModel extends BaseEventModel {\n constructor(name, registry, definition, container, isInterface = false) {\n super(name, registry, definition, container, isInterface);\n\n // VB Events must have a behavior\n this.behavior = EventBehaviorFactory.create(name, this, registry);\n }\n }\n\n return EventModel;\n});\n\n","/* eslint-disable max-classes-per-file */\n\n'use strict';\n\ndefine('vb/private/events/eventRegistry',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/private/utils',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/events/eventBehaviorFactory',\n 'vb/private/events/baseEventModel',\n 'vb/private/events/eventModel',\n 'vb/private/events/undeclaredEventBehavior',\n], (Constants, Log, Utils, StateUtils, EventBehaviorFactory, BaseEventModel, EventModel, UndeclaredEventBehavior) => {\n const logger = Log.getLogger('/vb/private/events/eventRegistry');\n\n /**\n * events are stored in different maps, based on behavior\n * @param behavior\n * @returns {string}\n */\n function getSection(behavior) {\n return (behavior === Constants.EventBehaviors.DYNAMIC_COMP) ? behavior : 'vb';\n }\n\n /**\n * return which class should we use for the model\n * @param behavior\n * @returns {*}\n */\n function getRegistrationClass(behavior) {\n return (behavior === Constants.EventBehaviors.DYNAMIC_COMP) ? BaseEventModel : EventModel;\n }\n\n /**\n * no default class when using the 'template' behavior; otherwise, default is the 'undeclared' model\n * @param behavior\n * @returns {function}\n */\n function getFallbackClass(behavior) {\n return (behavior === Constants.EventBehaviors.DYNAMIC_COMP) ? null : EventModel;\n }\n\n\n /**\n * All declared Events *must* be registered with this singleton, by the container in which the Event is declared.\n *\n * Components will use the registry to get an EventModel/EventBehavior for all events.\n * The EventRegistry always returns an EventModel for any fired event, whether one has been registered or not;\n * the model abstracts whether an event was declared, or not.\n *\n * the mapping is: {\n * [container:fullPath + event simple name] : EventModel\n * }\n *\n */\n class EventRegistry {\n constructor() {\n // this will be a two-dimensional map of [section][name]\n this.registeredMap = {};\n }\n\n /**\n *\n * @param container {Container}\n * @param eventName {string} MUST be the unqualified name; the 'simple' name, with no namespace or prefix.\n * @param declaration {object} from JSON declaration\n * @param isInterface {boolean} should be true if this is defined in the \"interface\" section.\n * @returns {null|*}\n */\n register(container, eventName, declaration, isInterface = false) {\n if (eventName) {\n const decl = declaration || {};\n\n if (decl.payloadType) {\n if (Utils.isInstanceType(decl.payloadType)) {\n // don't allow 'vb/ServiceProvider, etc.\n logger\n .error(`Declared events do not allow builtin types, skipping: ${eventName}, type: ${decl.payloadType}`);\n return null;\n }\n try {\n // eventName in this call is not used, except in the Exception message\n StateUtils.getType(eventName, { type: decl.payloadType });\n } catch (e) {\n logger.error(`Declared events error, skipping: ${e}`);\n return null;\n }\n }\n // qualify the name with the (extensionId, if any, and) container path\n const extId = container.extensionId || ''; // @todo: does this need to be hierarchical for ext-of-ext?\n const key = EventRegistry.key(extId, container.fullPath, eventName);\n\n const section = getSection(declaration.behavior);\n this.registeredMap[section] = this.registeredMap[section] || {};\n\n const EventClazz = getRegistrationClass(declaration.behavior);\n\n this.registeredMap[section][key] = new EventClazz(eventName, this, decl, container, isInterface);\n return this.registeredMap[section][key];\n }\n\n return null;\n }\n\n /**\n * Called during eventpropagation, returns an EventModel for the requested event.\n * Either find a registered event model, or create an event model for an undeclared event.\n *\n * if the 'name' is passed unqualified, qualify it using the firing container's namespace.\n *\n * if there is a declared event with the qualified name\n * - returns the model if it is in requesting container's scope (flow cannot access page events, for example)\n * - returns null otherwise\n *\n * otherwise, when there is no declaration found:\n * - if the name is unqualified, return a model for an 'undeclared' event\n * - return null if the name is qualified\n *\n * The (qualified) event name tells us with container 'type' must have registered the event.\n * If the registration is found, the registrar container's scopeResolver tells us which container have access.\n *\n * note that a return of null alone is not enough to determine if an event can be acted on by a container;\n * the event processing must also call listenableBy().\n *\n * examples:\n * Flow declares \"foo\", Page fires \"foo:foo\", Flow calls get for the event:\n * EventRegistry.get returns the registered EventModel\n * Event is propagated from leaf page.\n *\n * Page declares \"foo\", Flow fires \"page:foo\"\n * EventRegistry.get returns null, because event though it is declared, it is inaccessible to Flow.\n * No event propagated.\n *\n * Page declares \"foo\", Flow fires \"foo\"\n * EventRegistry.get returns EventModel with an UndeclaredEventBehavior, because FLow has not used a qualified\n * name, so we must assume its an 'undeclared' event.\n * Event is propagated from firing Flow (undeclared behavior) - only listeners for 'foo' are called.\n *\n * @todo: more work could be done to simplify differences between inaccessible declared and undeclared events.\n *\n * @param container the container asking for the Event definition, for handling\n * @param containerThatFired\n * @param name optionally namespaced, according to Event namespacing rules (ex. \"page:foo\", \"base/flow:bar\").\n * @param behavior\n * @returns {null|EventModel} null means the event is not accessible by the requesting container.\n */\n get(container, containerThatFired, name, behavior) {\n // split the name in to /:, providing defaults where needed\n const nameParts = EventModel.parseName(containerThatFired, name);\n\n // @todo: this may need work when we support extensions-of-extensions\n const containerForPrefix = (nameParts.ext === Constants.ExtensionNamespaces.BASE)\n ? EventModel.baseContainer(containerThatFired) : containerThatFired;\n\n const scopeResolver = containerForPrefix.scopeResolver || {}; // shouldn't need the fallback\n\n if (scopeResolver && scopeResolver[nameParts.prefix]) {\n const key = EventRegistry.key(nameParts.ext, scopeResolver[nameParts.prefix].fullPath, nameParts.name);\n\n const section = getSection(behavior);\n\n const decl = this.registeredMap[section] && this.registeredMap[section][key];\n // accessibleBy checks if the Page or Flow that is asking for it is the Page or Flow that\n // is in the scope of the container that declared the event\n if (decl) {\n return decl.accessibleBy(container, name) ? decl : null;\n }\n\n // we didn't find a declared event, so return an 'undeclared' if its a plain name (no prefix, etc),\n // or null if its qualified, as if referencing a declared event ('page: somefoo')\n // return (UndeclaredEventBehavior.isNamespaced(name)) ? null : new EventModel(name, this);\n if (UndeclaredEventBehavior.isNamespaced(name)) {\n return null;\n }\n const FallbackClazz = getFallbackClass(behavior);\n return FallbackClazz ? new FallbackClazz(name, this) : null;\n }\n\n return null;\n }\n\n\n /**\n * Convenience method, to match the name with the listener declaration in the container.\n *\n * @param container\n * @param eventName\n * @returns {*}\n */\n // eslint-disable-next-line class-methods-use-this\n findListener(container, eventName) {\n const listenerDefs = (container.definition && container.definition.eventListeners) || {};\n if (!listenerDefs) {\n return null;\n }\n\n // if the whole name is there, return it\n if (listenerDefs[eventName]) {\n return listenerDefs[eventName];\n }\n\n // split the name; if the prefix matches our container class, look for the 'simple' name, without the prefix\n const parts = EventModel.parseName(container, eventName);\n if (parts.ext === Constants.ExtensionNamespaces.BASE) {\n // check for abbreviated name, without the 'base' namespace (ex: /flow:foo)\n // only add the leading slash if we are an extension container\n const shortName = `${container.isExtension() ? '/' : ''}${parts.prefix}:${parts.name}`;\n if (listenerDefs[shortName]) {\n return listenerDefs[shortName];\n }\n }\n\n // if we are in the same container scope, match the simple name\n if (parts.prefix === EventModel.basePrefix(container) && listenerDefs[parts.name]) {\n return listenerDefs[parts.name];\n }\n\n // just return the raw name, if it exists\n return listenerDefs[eventName];\n }\n\n /**\n * note: different than the event qualified name;\n * uses the full path of the container, instead of the container prefix ('application:', 'flow:', etc.)\n * @param extId\n * @param containerPath\n * @param name\n * @returns {string}\n */\n static key(extId, containerPath, name) {\n const path = containerPath || ''; // only used for generating a unique key\n return `${extId || Constants.ExtensionNamespaces.BASE}/${path.toLowerCase()}:${name}`;\n }\n }\n\n\n return new EventRegistry(); // singleton\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/fireCustomEventAction',['vb/action/eventAction', 'vb/action/action', 'vb/private/log', 'vb/private/constants',\n 'vb/private/events/eventRegistry',\n 'vb/private/action/assignmentHelper',\n], (EventAction, Action, Log, Constants, EventRegistry, AssignmentHelper) => {\n const logger = Log.getLogger('/vb/private/stateManagement/fireCustomEventAction');\n\n // provided by JET\n const DISPATCH_NAME = '$dispatchEvent';\n\n class FireCustomEventAction extends EventAction {\n perform(parameters) {\n const { name, payload } = parameters;\n\n logger.info('FireCustomEventAction', this.logLabel, 'with event name', name, 'and payload', payload);\n\n if (!EventAction.isValid(name)) {\n return EventAction.createFailureOutcome(`unable to fire invalid event: ${name}`);\n }\n\n // look for a declaration; we need to determine if this is a 'normal' VB event,\n // or the dynamic-UI 'dynamicComponent' behavior event.\n const dcEventModel = EventRegistry\n .get(this.context.container, this.context.container, name, Constants.EventBehaviors.DYNAMIC_COMP);\n\n if (dcEventModel) {\n if (!dcEventModel.isInterface) {\n return EventAction\n .createFailureOutcome('Events with \"template\" behavior must be declared in the \"interface\" section: '\n + `${parameters.target}`);\n }\n\n return this.performDynamicComponentBehavior(name, payload, dcEventModel);\n }\n\n if (parameters && !EventAction.isValidTarget(parameters.target)) {\n return EventAction.createFailureOutcome(`invalid \"target\" for event action: ${parameters.target}`);\n }\n\n if (this.eventContainer) {\n // ignore returned Promise; we don't wait for event processing\n const result = EventAction.fireEvent(this.eventContainer, name, payload, parameters);\n if (!result) {\n return EventAction.createFailureOutcome(`Unable to find target: ${parameters.target}`);\n }\n\n // action waits for promises to resolve\n const promise = Promise.resolve(result);\n return promise\n .then((resolved) => EventAction.createSuccessOutcome(resolved));\n }\n\n return EventAction\n .createFailureOutcome(`FireCustomEventAction ${this.logLabel}: unable to fire event ${name}, no page context`);\n }\n\n\n /**\n * @param name {string} the event name; must be declared in \"events\", and accessible to this container\n * @param payload {object}\n * @param eventModel {EventModel} the one for 'behavior:dynamicComponent'\n */\n performDynamicComponentBehavior(name, payload, eventModel) {\n if (!name || !EventAction.isValid(name)) {\n return EventAction.createFailureOutcome(`Unable to fire invalid event: ${name}`);\n }\n\n if (!this.eventContainer || this.eventContainer.className !== 'Layout') {\n const msg = `Unable to fire event: ${name}. Events with 'dynamicComponent' `\n + 'behavior must be fired from a Layout';\n logger.error(msg);\n\n return EventAction.createFailureOutcome(msg);\n }\n\n if (name.toLowerCase() !== name) {\n logger.warn('About to fire an event with a name that is not all lower case;'\n + 'make sure your DOM listener uses lower case for the attribute name.');\n }\n\n // there is no good reason this should ever happen\n if (!this.context) {\n return EventAction\n .createFailureOutcome(`vb/fireCustomEventAction does not have a valid context for event: ${name}.`);\n }\n\n if (!eventModel || !eventModel.isDeclared) {\n return EventAction.createFailureOutcome(`Unable to find event declaration for: ${name}`);\n }\n\n const coercedPayload = eventModel.payloadType\n ? AssignmentHelper.coerceType(payload, eventModel.payloadType) : payload;\n\n return this.raiseEvent(name, coercedPayload);\n }\n\n\n /**\n * uses the JET-provided abstraction (defined to the VB layout model) to raise the event\n * @param name\n * @param payload\n * @returns {{result: *, name: string}}\n */\n raiseEvent(name, payload) {\n const dispatch = this.getDispatcher();\n\n if (!dispatch) {\n return EventAction.createFailureOutcome(`unable to fire event \"${name}\", no JET context provided.`);\n }\n\n try {\n // the JET-provided function will raise the event on the dynamic UI component\n\n const isIE = console.table === undefined;\n let event;\n if (!isIE) {\n event = new Event(name, { bubbles: false });\n } else {\n event = document.createEvent('Event');\n event.initEvent(name, false, true);\n }\n\n event.detail = payload;\n\n dispatch(event);\n\n logger.info('Dispatched Dynamic Container event: ', name, 'result');\n } catch (e) {\n return EventAction.createFailureOutcome(`Exception firing DOM event: ${name}`, e);\n }\n\n return EventAction.createSuccessOutcome();\n }\n\n /**\n * return the JET-provided function\n * @returns {*|mockScopes.$bindingContext|{$data}|{$dispatchEvent}}\n */\n getDispatcher() {\n // get the JET interface / abstraction for raising the event on the dynamic container\n const $bindingContext = this.internalContext && this.internalContext.$bindingContext;\n\n // @todo: the name & shape of this property will be defined by JET\n return $bindingContext && $bindingContext.$data && $bindingContext.$data[DISPATCH_NAME];\n }\n\n /**\n *\n * @param context\n * @param internalContext\n */\n setInternalContext(context, internalContext) {\n super.setContext(context);\n this.internalContext = internalContext;\n }\n }\n\n return FireCustomEventAction;\n});\n\n","'use strict';\n\n// ojdataprovider and ojcore modules are explicitly required to ensure the classes added to oj namespace by\n// dataprovider is automatically made available in release mode. Until JET-35243 is fixed so we have to hard code\n// JET API constants / enums\ndefine('vb/private/types/dataProviderConstants',[], () => {\n const Constants = {};\n\n Constants.Common = {\n IMPLEMENTATION: 'implementation',\n ITERATION: 'iteration',\n };\n Constants.DataProviderFetchType = {\n FETCH_BY_KEYS: 'fetchByKeys',\n FETCH_FIRST: 'fetchFirst',\n FETCH_BY_OFFSET: 'fetchByOffset',\n };\n Constants.CAPABILITIES_KEY = 'capabilities';\n Constants.TOTAL_SIZE = 'totalSize';\n Constants.CapabilityType = {\n SORT: 'sort',\n FILTER: 'filter', // not defined by JET oj.DataProvider\n FETCH_BY_KEYS: Constants.DataProviderFetchType.FETCH_BY_KEYS,\n FETCH_BY_OFFSET: Constants.DataProviderFetchType.FETCH_BY_OFFSET,\n FETCH_FIRST: Constants.DataProviderFetchType.FETCH_FIRST,\n };\n Constants.CapabilityKeys = {\n FETCH_BY_KEYS_IMPLEMENTATION: Constants.Common.IMPLEMENTATION,\n FETCH_BY_KEYS_MULTI_KEY_LOOKUP: 'multiKeyLookup',\n FETCH_BY_OFFSET_IMPLEMENTATION: Constants.Common.IMPLEMENTATION,\n FETCH_FIRST_IMPLEMENTATION: Constants.Common.IMPLEMENTATION,\n FETCH_FIRST_ITERATE_AFTER_DONE: 'iterateAfterDone',\n FILTER_OPERATORS: 'operators',\n SORT_ATTRIBUTES: 'attributes',\n };\n Constants.CapabilityValues = {\n FETCH_BY_KEYS_IMPLEMENTATION_LOOKUP: 'lookup',\n FETCH_BY_KEYS_IMPLEMENTATION_ITERATION: Constants.Common.ITERATION,\n FETCH_BY_KEYS_MULTI_KEY_LOOKUP_YES: 'yes',\n FETCH_BY_KEYS_MULTI_KEY_LOOKUP_NO: 'no',\n FETCH_BY_OFFSET_IMPLEMENTATION_RANDOM_ACCESS: 'randomAccess',\n FETCH_BY_OFFSET_IMPLEMENTATION_ITERATION: Constants.Common.ITERATION,\n FETCH_FIRST_IMPLEMENTATION_ITERATION: Constants.Common.ITERATION,\n FETCH_FIRST_ITERATE_AFTER_DONE_NOT_ALLOWED: 'notAllowed',\n FILTER_OPERATORS_OPS: [\n '$co', // oj.AttributeFilterOperator.AttributeOperator.$co,\n '$eq', // oj.AttributeFilterOperator.AttributeOperator.$eq,\n '$ew', // oj.AttributeFilterOperator.AttributeOperator.$ew,\n '$pr', // oj.AttributeFilterOperator.AttributeOperator.$pr,\n '$gt', // oj.AttributeFilterOperator.AttributeOperator.$gt,\n '$ge', // oj.AttributeFilterOperator.AttributeOperator.$ge,\n '$lt', // oj.AttributeFilterOperator.AttributeOperator.$lt,\n '$le', // oj.AttributeFilterOperator.AttributeOperator.$le,\n '$ne', // oj.AttributeFilterOperator.AttributeOperator.$ne,\n // BUFP-31575: for the short term disable regex operators for all services until\n // BUFP-31650 is addressed\n // '$regex', // oj.AttributeFilterOperator.AttributeOperator.$regex,\n '$sw', // oj.AttributeFilterOperator.AttributeOperator.$sw,\n '$and', // oj.CompoundFilterOperator.CompoundOperator.$and,\n '$or', // oj.CompoundFilterOperator.CompoundOperator.$or,\n ],\n SORT_ATTRIBUTES_MULTIPLE: 'multiple',\n };\n\n /**\n * the name of property on a DataProvider implementation used to set the primary key attribute(s)\n * @type {{ID_ATTRIBUTE: string, KEY_ATTRIBUTES: string}}\n */\n Constants.DataProviderIdAttributeProperty = {\n ID_ATTRIBUTE: 'idAttribute',\n KEY_ATTRIBUTES: 'keyAttributes',\n };\n\n /**\n * Events raised by DataProvider implementation per JET contract.\n * @type {{REFRESH: string, MUTATE: string}}\n * @see oj.DataProvider oj.DataProviderMutationEvent oj.DataProviderRefreshEvent\n */\n Constants.DataProviderEvent = {\n REFRESH: 'refresh',\n MUTATE: 'mutate',\n };\n\n /**\n * Types of mutation events\n * @type {{ADD: string, UPDATE: string, REMOVE: string}}\n * @see oj.DataProviderMutationEventDetail\n */\n Constants.DataProviderMutationEvent = {\n ADD: 'add',\n UPDATE: 'update',\n REMOVE: 'remove',\n };\n\n /**\n * Special idAttribute keywords.\n * @type {{AT_INDEX: string, AT_VALUE: string}}\n */\n Constants.DataProviderIdAttribute = {\n AT_INDEX: '@index',\n AT_VALUE: '@value',\n };\n\n /**\n * default array type structure\n * @type {string}\n */\n Constants.DEFAULT_ANY_ARRAY_TYPE = 'any[]';\n /**\n * default any type structure\n * @type {string}\n */\n Constants.DEFAULT_ANY_TYPE = 'any';\n /**\n * default object type structure\n * @type {string}\n */\n Constants.DEFAULT_OBJECT_TYPE = 'object';\n /**\n * default object type structure\n * @type {string}\n */\n Constants.DEFAULT_OBJECT_ARRAY_TYPE = 'object[]';\n /**\n * default primitive array type structure\n * @type {Array}\n */\n Constants.DEFAULT_PRIMITIVE_ARRAY_TYPES = ['string[]', 'number[]', 'boolean[]'];\n\n return Constants;\n});\n\n","// eslint-disable-next-line max-classes-per-file\n/* eslint max-classes-per-file: [\"error\", 6] */\n\n'use strict';\n\ndefine('vb/private/types/utils/dataProviderUtils',['knockout', 'vb/private/utils', 'vb/private/log', 'vb/binding/expression',\n 'vb/private/types/dataProviderConstants'],\n(ko, Utils, Log, Expression, DPConstants) => {\n /**\n * utilities for data providers, custom variables.\n *\n */\n // for static method in ServiceAsyncIterator\n const logger = Log.getLogger('/vb/private/types/utils/dataProviderUtils');\n\n /**\n * local implementation of oj.Object.compareValues.\n */\n const OJCompareUtils = {\n innerEquals: (obj1, obj2) => {\n if (obj1 === obj2) {\n return true;\n }\n\n if (!(obj1 instanceof Object) || !(obj2 instanceof Object)) {\n return false;\n }\n\n if (obj1.constructor !== obj2.constructor) {\n return false;\n }\n\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n const props1 = Object.keys(obj1);\n let prop;\n\n // eslint-disable-next-line consistent-return\n props1.forEach((i) => {\n prop = props1[i];\n\n if (hasOwnProperty.call(obj1, prop)) {\n if (!hasOwnProperty.call(obj2, prop)) {\n return false;\n }\n\n if (obj1[prop] !== obj2[prop]) {\n if (typeof (obj1[prop]) !== 'object') {\n return false;\n }\n\n if (!OJCompareUtils.innerEquals(obj1[prop], obj2[prop])) {\n return false;\n }\n }\n }\n });\n\n const props2 = Object.keys(obj2);\n // eslint-disable-next-line no-plusplus,consistent-return\n props2.forEach((i) => {\n prop = props2[i];\n\n if (hasOwnProperty.call(obj2, prop) && !hasOwnProperty.call(obj1, prop)) {\n return false;\n }\n });\n\n if (props1.length === 0 && props2.length === 0) {\n // we are dealing with objects that have no properties like Number or Date.\n return JSON.stringify(obj1) === JSON.stringify(obj2);\n }\n\n return true;\n },\n\n compareValues: (obj1, obj2) => {\n if (obj1 === obj2) {\n return true;\n }\n\n const obj1Type = typeof obj1;\n const obj2Type = typeof obj2;\n\n if (obj1Type !== obj2Type) {\n // of different type so consider them unequal\n return false;\n }\n\n // At this point means the types are equal\n\n // note that if the operand is an array or a null then typeof is an object\n // check if either is null and if so return false [i.e. case where one might be a null and another an object]\n // and one wishes to avoid the null pointer in the following checks. Note that null === null has been already\n // tested\n if (obj1 === null || obj2 === null) {\n return false;\n }\n\n // now check for constructor since I think by here one has ruled out primitive values and if the constructors\n // aren't equal then return false\n if (obj1.constructor === obj2.constructor) {\n // these are special cases and will need to be modded on a need to have basis\n if (Array.isArray(obj1)) {\n return OJCompareUtils.compareArrayValues(obj1, obj2);\n }\n if (obj1.constructor === Object) {\n // for now invoke innerEquals and in the future if there are issues then resolve them\n return OJCompareUtils.innerEquals(obj1, obj2);\n }\n if (obj1.valueOf && typeof obj1.valueOf === 'function') {\n // test cases for Boolean, String, Number, Date\n // Note if some future JavaScript constructors\n // do not impl it then it's their fault\n return obj1.valueOf() === obj2.valueOf();\n }\n }\n\n return false;\n },\n\n compareArrayValues: (array1, array2) => {\n if (array1.length !== array2.length) {\n return false;\n }\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0, j = array1.length; i < j; i++) {\n // recurse on each of the values, order does matter for our case since do not wish to search\n // for the value [expensive]\n if (!OJCompareUtils.compareValues(array1[i], array2[i])) {\n return false;\n }\n }\n return true;\n },\n };\n\n /**\n * uses JET compare utility to compare 2 complex keys\n * @return boolean true of keys values match\n */\n function compareKeyValues(key1, key2) {\n return OJCompareUtils.compareValues(key1, key2);\n }\n\n /**\n * compares 2 key values. Each key value is always either a primitive or Object. When\n * multiple attributes are used then this could be an Array, a Set.\n *\n * When a single attribute is used as an idAttribute, each key value can be:\n * - primitive\n * - Object - this can be whatever that attribute holds - object, array.\n * example:\n * var res = [{ id: {foo: 'a', bar: 'b'}], name: 'whatever'} and idAttribute is \"id\"\n * // key is {foo: 'a', bar: 'b'}\n *\n * For an idAttribute that is an Array of attributes each key is an array of individual\n * attribute values, where each attribute value can be a primitive or Object.\n * example:\n * var res = [{ id: {foo: 'a', bar: 'b'}], name: 'whatever'} and idAttribute is \"[id, name]\"\n * // key will be [{foo: 'a', bar: 'b'}, 'whatever']\n *\n * @param {Set|Array} key1\n * @param {Set|Array} key2\n * @return {boolean}\n */\n function compareObjects(key1, key2) {\n let k1 = key1;\n let k2 = key2;\n // when we are asked to compare 2 key values the same type is required.\n if ((k1 instanceof Set && k2 instanceof Set)) {\n // TODO: need polyfill for IE11\n // k1 = [...key1]; // k2 = [...key2];\n k1 = [];\n key1.forEach((x) => { k1.push(x); });\n k2 = [];\n key2.forEach((x) => { k2.push(x); });\n }\n return compareKeyValues(k1, k2);\n }\n\n const DEFAULT_CAPABILITIES = {\n getKeys: 'auto',\n };\n\n /**\n * IdAttributeHelper\n * base class for attribute helpers.\n * Calculates keys for a given 'idAttribute' value.\n *\n * When working with a collection, the caller is expected to first call getKeys(), and check for null.\n * If null, the caller my then optionally fallback to calling getIndices(), with an optional callback.\n *\n * This two-step process allows the caller to defer any offset calculations, until its known that its needed.\n */\n class IdAttributeHelper {\n /**\n * Returns the key using the value provided and the idAttribute. If an idAttribute is not\n * set then returns undefined.\n * @param value\n */\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n getKey(value) { throw new Error('getKey unimplemented'); }\n\n /**\n * returns a Set of keys\n * @param {Array*} values\n */\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n getKeys(values) { throw new Error('getKeys unimplemented'); }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n getIndices(values, offset) { throw new Error('getIndices unimplemented'); }\n\n // eslint-disable-next-line class-methods-use-this\n compare(key1, key2) {\n return key1 === key2;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getCapabilities() {\n return DEFAULT_CAPABILITIES;\n }\n }\n\n\n /**\n * SinglePropertyIdAttributeHelper\n *\n * used when idAttribute is a string, representing a property name\n * ex.\n * \"idAttribute\": \"id\",\n */\n class SinglePropertyIdAttributeHelper extends IdAttributeHelper {\n constructor(idAttr) {\n super();\n this.idAttr = idAttr;\n }\n\n getKey(value) {\n return value[this.idAttr];\n }\n\n getKeys(values) {\n return new Set(values.map((value) => this.getKey(value)));\n }\n\n // eslint-disable-next-line class-methods-use-this\n getIndices(values, offset) {\n return values.map((_, index) => index + offset);\n }\n\n // eslint-disable-next-line class-methods-use-this\n compare(key1, key2) {\n return compareObjects(key1, key2);\n }\n }\n\n /**\n * MultiplePropertyIdAttributeHelper\n *\n * used when idAttribute is an array of strings, the key will be an Array or Set of property\n * values VB event does not support a Set but components will give us a Set\n *\n * ex.\n * \"idAttribute\": [\"firstName\", \"lastName\"],\n *\n * key = [\"Jim\", \"Johnston\"]\n */\n class MultiplePropertyIdAttributeHelper extends IdAttributeHelper {\n constructor(idAttrs) {\n super();\n this.idAttrs = idAttrs;\n }\n\n // like oj.ArrayDataProvider, returns the keys as an array\n getKey(value) {\n return this.idAttrs.map((attrName) => value[attrName]);\n }\n\n getKeys(values) {\n return new Set(values.map((value) => this.getKey(value)));\n }\n\n // eslint-disable-next-line class-methods-use-this\n getIndices(values, offset) {\n return values.map((_, index) => index + offset);\n }\n\n // eslint-disable-next-line class-methods-use-this\n compare(key1, key2) {\n return compareObjects(key1, key2);\n }\n }\n\n /**\n * Similar to MultiplePropertyIdAttributeHelper, but uses all of the objects properties to\n * form the (array) key. This is when the idAttribute is set to '@value'\n *\n * @see MultiplePropertyIdAttributeHelper\n */\n class AllPropertiesIdAttributeHelper extends IdAttributeHelper {\n constructor(idAttrs) {\n super();\n this.idAttrs = idAttrs;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getKey(value) {\n let names;\n try {\n names = Object.getOwnPropertyNames(value);\n } catch (e) {\n names = Object.getOwnPropertyNames.prototype.call(value);\n }\n\n return names.map((attrName) => value[attrName]);\n }\n\n getKeys(values) {\n return new Set(values.map((value) => this.getKey(value)));\n }\n\n // eslint-disable-next-line class-methods-use-this\n getIndices(values, offset) {\n return values.map((_, index) => index + offset);\n }\n\n // eslint-disable-next-line class-methods-use-this\n compare(key1, key2) {\n return compareObjects(key1, key2);\n }\n }\n\n\n /**\n * IndexIdAttributeHelper\n *\n * default case, does not return keys, but instead returns indices. This is when the idAttribute\n * is set to '@value'\n * This is separate from getKeys() because of the 'offset', and the extra logic that maybe\n * required to get the offset.\n */\n class IndexIdAttributeHelper extends IdAttributeHelper {\n // eslint-disable-next-line class-methods-use-this\n getKey() {\n return null;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getKeys() {\n return null;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getIndices(values, offset = 0) {\n return values.map((_, index) => index + offset);\n }\n\n // eslint-disable-next-line class-methods-use-this\n getCapabilities() {\n return {\n getKeys: 'none',\n };\n }\n }\n\n const ATTRIBUTE_FILTER_OPS = {\n EQUAL: '$eq',\n NOT_EQUAL: '$ne',\n GREATER_THAN: '$gt',\n GREATER_THAN_EQUAL: '$ge',\n LESS_THAN: '$lt',\n LESS_THAN_EQUAL: '$le',\n STARTS_WITH: '$sw',\n ENDS_WITH: '$ew',\n CONTAINS: '$co',\n PRESENT: '$pr',\n };\n const COMPOUND_FILTER_OPS = {\n AND: '$and',\n OR: '$or',\n };\n\n /**\n * set of static utility methods. related to data providers\n */\n class DataProviderUtils {\n /**\n * for a given 'idAttribute' value, get the proper helper utility\n * supports string, string[], '@index', and '@value'\n * @param idAttribute\n * @returns {*}\n */\n static getIdAttributeHelper(idAttribute) {\n // empty string is treated as no value\n if (idAttribute && typeof idAttribute === 'string') {\n // from JET ArrayDataProvider\n // @index causes ArrayDataProvider to use index as key and @value will cause ArrayDataProvider\n // to use all attributes as key.\n if (idAttribute === DPConstants.DataProviderIdAttribute.AT_INDEX) {\n // it is up to the caller to call getKeys(), check for null, and call getIndices().\n return new IndexIdAttributeHelper(idAttribute);\n }\n\n if (idAttribute === DPConstants.DataProviderIdAttribute.AT_VALUE) {\n return new AllPropertiesIdAttributeHelper(idAttribute);\n }\n\n return new SinglePropertyIdAttributeHelper(idAttribute);\n }\n\n if (Array.isArray(idAttribute)) {\n return new MultiplePropertyIdAttributeHelper(idAttribute);\n }\n\n // it is up to the caller to call getKeys(), check for null, and call getIndices().\n return new IndexIdAttributeHelper();\n }\n\n /**\n * helper to unwrap observables\n * @param data\n * @returns {*}\n */\n static unwrapData(data) {\n let d = data;\n if (ko.isObservable(d)) {\n // variable default value can now reference a constant and so we need to eval that\n d = ko.utils.unwrapObservable(data);\n }\n return d;\n }\n\n /**\n * Returns the inner object with the object that is located at 'path'.\n * The path can be a tokenized string that when expanded yields an array.\n *\n * Examples:\n * '',\n * 'a[4][5].b.c[6]'\n * 'a.b'\n * '[0][4]'\n * 'a[\" \"]' //returns error\n *\n *\n * @param object\n * @param path\n * @returns {*|Array}\n */\n static getObjectByPath(object, path = '') {\n let data = object;\n if (path && (path.length > 0)) {\n const dotTokens = path.split('.'); // example a[4][5].b.c[6]\n dotTokens.forEach((dt) => {\n if (data) {\n // each token can include an array index. example a[4][5] or [0][3]\n const arrayTokens = dt.match(/\\[(.*?)\\]/g);\n if (arrayTokens) {\n let arrRoot;\n arrayTokens.forEach((at, idx) => {\n if (idx === 0) {\n arrRoot = dt.substr(0, dt.indexOf(at));\n data = arrRoot ? (data[arrRoot] || []) : data;\n }\n const matches = (at && at.match(/\\[(.*?)\\]/)) || [];\n // const matches = (at && at.match(/\\[[0-9]+\\]/)) || [];\n const numericToken = matches[1] ? Number(matches[1]) : null;\n // see polyfills for IE11 support\n if (!Number.isNaN(numericToken)) {\n data = data[numericToken];\n } else {\n logger.error('there was an issue evaluating', dt,\n 'within the itemPath', path, 'for the data provided', object);\n data = undefined;\n }\n });\n } else {\n data = data[dt];\n if (!data) {\n logger.error('there was an issue evaluating', dt,\n 'within the itemPath', path,\n 'for the data provided', object);\n data = undefined;\n }\n }\n }\n });\n }\n return data || [];\n }\n\n static setObjectByPath(object, path = '', value) {\n let data = object;\n if (path && (path.length > 0)) {\n const dotTokens = path.split('.'); // example a[4][5].b.c[6]\n dotTokens.forEach((dt, index) => {\n const ERR_STR = `there was an issue evaluating '${dt}' within the itemPath `\n + `${path}, for the data provided ${object}`;\n if (data) {\n // each token can include an array index. example a[4][5] or [0][3]\n const arrayTokens = dt.match(/\\[(.*?)\\]/g);\n if (arrayTokens) {\n let arrRoot;\n arrayTokens.forEach((at, idx) => {\n if (idx === 0) {\n arrRoot = dt.substr(0, dt.indexOf(at));\n data = arrRoot ? (data[arrRoot] || []) : data;\n }\n const matches = (at && at.match(/\\[(.*?)\\]/)) || [];\n // const matches = (at && at.match(/\\[[0-9]+\\]/)) || [];\n const numericToken = matches[1] ? Number(matches[1]) : null;\n // see polyfills for IE11 support\n if (!Number.isNaN(numericToken)) {\n if (index === (dotTokens.length - 1)) {\n data[numericToken] = value;\n } else {\n data = data[numericToken];\n }\n } else {\n logger.error(ERR_STR);\n data = undefined;\n }\n });\n } else if (index === (dotTokens.length - 1)) {\n data[dt] = value;\n } else {\n data = data[dt];\n if (!data) {\n logger.error(ERR_STR);\n data = undefined;\n }\n }\n } else {\n logger.error(ERR_STR);\n }\n });\n }\n return data;\n }\n\n /**\n * Returns the resolved response type, given the response type and the builtin variable\n * instance\n * @param type responseType\n * @param extendedType builtin variable like ServiceDataProvider\n * @param generateDefaultType optional set of options\n * @return {*}\n */\n static getResolvedType(type, extendedType, generateDefaultType = false) {\n // ES5 - don't pass string to Object.keys(). And skip this code if its an empty type object\n if (type && (!Utils.isObjectOrArray(type) || Object.keys(type).length > 0)) {\n return extendedType.getType(type, `${extendedType.getId()}:response`);\n }\n\n // we are here because a (response) type was not provided, so return a default response\n // type, if requested\n return generateDefaultType ? DPConstants.DEFAULT_ANY_TYPE : type;\n }\n\n /**\n * Returns true if type definition is incompletely defined where an exploded object or array\n * of object type structure is expected.\n * @param type\n * @return {boolean}\n */\n static isTypeDefIncomplete(type) {\n const incompleteBaseTypes = [DPConstants.DEFAULT_OBJECT_TYPE, DPConstants.DEFAULT_OBJECT_ARRAY_TYPE,\n DPConstants.DEFAULT_ANY_TYPE, DPConstants.DEFAULT_ANY_ARRAY_TYPE];\n return (typeof type === 'string' && type.includes(incompleteBaseTypes));\n }\n\n /**\n * given a type definition this method returns all leaf (primitive properties) at the\n * current level\n * @param typeDef\n * @return {*}\n */\n static getTypeWithLeafProps(typeDef) {\n let newType;\n if (Array.isArray(typeDef)) {\n newType[0] = DataProviderUtils.getTypeWithLeafProps(typeDef[0]);\n }\n if (typeof typeDef === 'object') {\n const itemTypeProps = Object.keys(typeDef);\n itemTypeProps.forEach((prop) => {\n if (typeof typeDef[prop] !== 'object') {\n newType = newType || {};\n newType[prop] = typeDef[prop];\n }\n });\n } else if (typeof typeDef === 'string') {\n // for non-object resolved types abort recursing;\n // we could have a string[], boolean[], number[], or worse just primitives which is\n // plain incorrect, in which case use 'any'\n newType = (typeDef.includes(DPConstants.DEFAULT_PRIMITIVE_ARRAY_TYPES))\n ? typeDef || DPConstants.DEFAULT_ANY_TYPE : DPConstants.DEFAULT_ANY_TYPE;\n }\n return newType;\n }\n\n static hasDefaultKeyword(attrs) {\n const defaultKeyword = attrs.find((attr) => (typeof attr === 'string' && attr === '@default')\n || (typeof attr === 'object' && attr.name === '@default'));\n return !!defaultKeyword;\n }\n\n /**\n * Builds the filtered typeDef at each level with just the properties requested via attrs.\n * DataProvider fetches can now include an 'attributes' parameter that is arbitrarily\n * complex structure of attributes that must be included in the response type. The\n * frustrating thing is that the attrs structure may not mirror the typeDef structure.\n *\n * @param {Array} attrs the filtered list of attributes to include in the final result. The\n * list of attributes aka fields generally belong to the collection identified by itemsPath.\n * @param {*} type the items type (located generally at itemsPath of SDP), or during a\n * recursive call it is the type for a nested (object) attribute.\n * @returns {*}\n * @see oj.DataProvider\n */\n static getFilteredTypeDef(attrs, type) {\n let newType;\n // 1. process leaf attributes (that are not objects themselves) for the current level\n\n // a. first check the type is incomplete\n if (DataProviderUtils.isTypeDefIncomplete(type) && attrs.length > 0) {\n newType = type || DPConstants.DEFAULT_ANY_TYPE;\n return newType;\n }\n\n // we are dealing with a meaningful type definition or a primitive\n if (typeof type === 'object') {\n newType = DataProviderUtils.getTypeWithLeafProps(type);\n } else {\n // for non-object resolved types abort recursing;\n // is it possible to get here? iow, the type is a primitive\n // Yes, if attributes is telling us something is an object but the typeDef for the\n // attribute is a primitive. So in such cases, we flip type to 'any'\n newType = type || DPConstants.DEFAULT_ANY_TYPE;\n return newType;\n }\n\n // if @default is set at current level then keep all fields from type but remove\n // exclusions if specified in attrs\n // if @default is not set then include just the fields specified in attrs\n const defaultKeyword = DataProviderUtils.hasDefaultKeyword(attrs);\n const flattenedAttrs = DataProviderUtils.getFlattenedAttrs(attrs);\n\n if (defaultKeyword) {\n const excludedAttrs = flattenedAttrs\n .filter((attr) => (attr && attr.startsWith('!')))\n .map((attr) => (attr.startsWith('!') ? attr.substr(1) : attr));\n\n if (excludedAttrs && excludedAttrs.length > 0) {\n if (Array.isArray(newType)) {\n newType[0] = DataProviderUtils.getFilteredItemTypeDef(newType[0], excludedAttrs, true);\n } else {\n newType = DataProviderUtils.getFilteredItemTypeDef(newType, excludedAttrs, true);\n }\n }\n } else {\n const includedAttrs = flattenedAttrs\n .filter((attr) => typeof attr === 'string');\n if (includedAttrs && includedAttrs.length > 0) {\n if (Array.isArray(newType)) {\n newType[0] = DataProviderUtils.getFilteredItemTypeDef(newType[0], includedAttrs);\n } else {\n newType = DataProviderUtils.getFilteredItemTypeDef(newType, includedAttrs);\n }\n }\n }\n\n // 2. process object attributes at current level\n const objectAttrs = attrs.filter((attr) => typeof attr === 'object' && Object.keys(attr).length > 1);\n objectAttrs.forEach((oAttr) => {\n if (oAttr.name && oAttr.attributes && oAttr.attributes.length > 0) {\n let oAttrType;\n if (Array.isArray(type)) {\n oAttrType = type[0][oAttr.name];\n newType[0][oAttr.name] = DataProviderUtils.getFilteredTypeDef(oAttr.attributes, oAttrType);\n } else if (typeof type === 'object') {\n oAttrType = type[oAttr.name];\n newType[oAttr.name] = DataProviderUtils.getFilteredTypeDef(oAttr.attributes, oAttrType);\n } else {\n // sub object has non-object type; use 'any'\n newType[oAttr.name] = oAttrType || DPConstants.DEFAULT_ANY_TYPE;\n }\n }\n });\n return newType;\n }\n\n /**\n * builds a filtered item type def for the attributes provided. If exclude is true the\n * type corresponding to the attribute is removed from the final filtered type. If exclude\n * is false the type def for the attribute is included in the filtered type. If such a\n * type does not exist then 'any' is set.\n * @param itemTypeDef\n * @param attrList\n * @param exclude\n * @returns {*}\n * @see oj.DataProvider\n * @private\n */\n static getFilteredItemTypeDef(itemTypeDef, attrList, exclude = false) {\n let filteredType;\n if (exclude) {\n filteredType = itemTypeDef;\n }\n Object.values(attrList).forEach((attr) => {\n const foundItem = Object.keys(itemTypeDef).find((itemTypeAttr) => itemTypeAttr === attr);\n if (foundItem) {\n if (!exclude) {\n filteredType = filteredType || {};\n filteredType[foundItem] = itemTypeDef[foundItem];\n } else {\n delete filteredType[foundItem];\n }\n } else if (!exclude) {\n // if (select) attribute that is to be included is not found in itemTypeDef, then set\n // 'any' as the type\n filteredType = filteredType || {};\n filteredType[foundItem] = DPConstants.DEFAULT_ANY_TYPE;\n }\n });\n\n return filteredType;\n }\n\n /**\n * Build a flattened list of attribute names at the top level filtering out nested (child)\n * object attributes\n * @param attrs\n * @returns {Array}\n * @see oj.DataProvider\n * @private\n */\n static getFlattenedAttrs(attrs) {\n const flattened = [];\n attrs.forEach((attr) => {\n if (typeof attr === 'string') {\n flattened.push(attr);\n } else if (typeof attr === 'object' && Object.keys(attr).length === 1\n && attr.name && typeof attr.name === 'string') {\n flattened.push(attr.name);\n }\n });\n return flattened;\n }\n\n /**\n * returns true if it's an attribute criterion with 3 properties - op, attribute and value,\n * where op is one of the supported attribute operators, attribute is valid. We don;t check\n * the value because it can be set to undefined.\n * A 'criteria' property of non-zero length returns false.\n * @param acion\n * @return {*|boolean}\n */\n static isAttributeCriterion(acion) {\n return (acion && typeof acion === 'object'\n && DataProviderUtils.isAttributeOperator(acion.op) && acion.attribute\n && (!acion.criteria || (Array.isArray(acion.criteria) && acion.criteria.length === 0)));\n }\n\n /**\n * whether the (Filter) criterion is a compound criterion\n *\n * @param sccion\n * @return {boolean}\n */\n static isCompoundCriterion(sccion) {\n if ((!sccion.op || DataProviderUtils.isCompoundOperator(sccion.op))\n && (sccion.criteria && Array.isArray(sccion.criteria) && sccion.criteria.length >= 1)\n && !sccion.attribute && !sccion.value) {\n return true;\n }\n return false;\n }\n\n /**\n * returns true for supported operators. See oj.AttributeFilterOperator for full list.\n * @param aop\n * @return {boolean}\n */\n static isAttributeOperator(aop) {\n return (aop === ATTRIBUTE_FILTER_OPS.EQUAL\n || aop === ATTRIBUTE_FILTER_OPS.NOT_EQUAL\n || aop === ATTRIBUTE_FILTER_OPS.GREATER_THAN\n || aop === ATTRIBUTE_FILTER_OPS.GREATER_THAN_EQUAL\n || aop === ATTRIBUTE_FILTER_OPS.LESS_THAN\n || aop === ATTRIBUTE_FILTER_OPS.LESS_THAN_EQUAL\n || aop === ATTRIBUTE_FILTER_OPS.STARTS_WITH\n || aop === ATTRIBUTE_FILTER_OPS.ENDS_WITH\n || aop === ATTRIBUTE_FILTER_OPS.CONTAINS\n || aop === ATTRIBUTE_FILTER_OPS.PRESENT);\n }\n\n static isCompoundOperator(cop) {\n return cop && (cop === COMPOUND_FILTER_OPS.AND || cop === COMPOUND_FILTER_OPS.OR);\n }\n\n /**\n * Combines the filterCriterion provided by caller with the one that is configured using\n * an AND operator.\n * @param fetchOptionFC the filterCriterion provided by caller\n * @param configuredFC the configured criterion\n * @return the combined FC\n */\n static combineFilterCriterionFromMultipleSources(fetchOptionFC, configuredFC) {\n const coFC = configuredFC;\n const foFC = fetchOptionFC;\n const newFC = {};\n if (coFC && (DataProviderUtils.isAttributeCriterion(coFC)\n || DataProviderUtils.isCompoundCriterion(coFC))) {\n newFC.op = COMPOUND_FILTER_OPS.AND;\n newFC.criteria = [];\n newFC.criteria.push(foFC);\n newFC.criteria.push(coFC);\n return newFC;\n }\n return foFC;\n }\n }\n\n return DataProviderUtils;\n});\n\n","// eslint-disable-next-line max-classes-per-file\n/* eslint max-classes-per-file: [\"error\", 6] */\n\n'use strict';\n\ndefine('vb/action/builtin/fireDataProviderEventAction',['ojs/ojdataprovider', 'vb/action/action', 'vb/private/log', 'vb/private/types/utils/dataProviderUtils',\n 'vb/private/types/dataProviderConstants', 'vb/private/utils'],\n(ojDataProvider, Action, Log, DataUtils, DPConstants, Utils) => {\n const logger = Log.getLogger('/vb/private/stateManagement/fireDataProviderEventAction');\n const REFRESH_EVENT = DPConstants.DataProviderEvent.REFRESH;\n const MUTATION_EVENTS = [DPConstants.DataProviderMutationEvent.ADD,\n DPConstants.DataProviderMutationEvent.UPDATE, DPConstants.DataProviderMutationEvent.REMOVE];\n const OJ_REFRESH_EVENT = new ojDataProvider.DataProviderRefreshEvent();\n\n /**\n * Duck types ItemMetadata.\n */\n class DataProviderItemMetadata {\n constructor(key) {\n this.key = key;\n }\n }\n\n /**\n * Mutation operation payload used by update and delete operations. Implements the\n * oj.IteratingDataProviderAddOperationEventDetail interface.\n */\n class DataProviderMutationOperationPayload {\n constructor(metadata, data, indexes, keys) {\n this.metadata = metadata;\n this.data = data;\n this.indexes = indexes;\n this.keys = keys;\n }\n }\n\n /**\n * Add operation payload. Implements the oj.IteratingDataProviderMutationOperationEventDetail\n */\n class DataProviderAddOperationPayload extends DataProviderMutationOperationPayload {\n constructor(metadata, data, indexes, keys, afterKeys, addBeforeKeys) {\n super(metadata, data, indexes, keys);\n this.afterKeys = afterKeys || [];\n this.addBeforeKeys = addBeforeKeys || [];\n }\n }\n\n /**\n * Implements the ojDataProvider.DataProviderMutationEventDetail. A single event can be raised\n * that includes multiple operations - add / remove / update and this object represents all\n * operations. Note: The only requirement being that if more than operation is present then the\n * keys have to be disjointed. IOW if you had an add and remove in the same mutation event\n * then the keys must not intersect. This requirement is enforced by JET.\n * @param add\n * @param remove\n * @param update\n * @constructor\n */\n class DataProviderEventDetail {\n constructor() {\n this.add = null;\n this.remove = null;\n this.update = null;\n return this;\n }\n\n addEvent(add) {\n this.add = add;\n return this;\n }\n\n updateEvent(update) {\n this.update = update;\n return this;\n }\n\n removeEvent(remove) {\n this.remove = remove;\n return this;\n }\n }\n\n /**\n * A class that manages dispatching dataProvider events to iterating data providers like\n * ServiceDataProvider, ArrayDataProvider etc.\n */\n class DataProviderEventDispatcher {\n constructor(dataProvider) {\n this.dataProvider = dataProvider;\n if (Utils.isExtendedType(dataProvider)) {\n this.extendedType = true;\n const dpValue = dataProvider.getValue();\n const idProp = (dataProvider.getIdAttributeProperty && dataProvider.getIdAttributeProperty());\n this.idAttribute = idProp ? dpValue[idProp]\n : dpValue[DPConstants.DataProviderIdAttributeProperty.ID_ATTRIBUTE];\n this.itemsPath = dpValue.itemsPath;\n this.log = logger;\n }\n }\n\n /**\n * Throws error for invalid payload\n * @param eventType\n * @param err\n */\n static throwError(eventType, err) {\n const errStr = err || `${eventType} event was raised but a valid payload was not provided!`;\n logger.error(errStr);\n throw errStr;\n }\n\n /**\n * whether payload is present for certain operations\n */\n static isEventWithValidPayload(eventType, payload) {\n if (MUTATION_EVENTS.indexOf(eventType) >= 0) {\n const hasPayload = payload && Object.keys(payload).length > 0;\n if (hasPayload) {\n if (payload.data || payload.keys || payload.indexes) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * builds keys from data. If it can't be built throws error.\n * @param et\n * @param data\n * @param keys\n * @returns {*}\n * @private\n */\n assembleKeysFromData(et, data, keys) {\n let ks = keys;\n let ksLen = ks && (ks instanceof Set ? ks.size : ks.length);\n if ((!ks || !ksLen) && this.canBuildKeys()) {\n // It is mandatory for keys to be present when data is present.\n this.log.warn('No keys were specified in the event payload for the mutation operation', et,\n '. Attempting to build keys from data.');\n\n // return an empty key set if data is empty\n if (data && data.length === 0) {\n return new Set();\n }\n\n ks = this._buildKeys(data);\n ksLen = ks && ks.size;\n if (!ksLen || (ksLen === 0 && data.length > 0)) {\n DataProviderEventDispatcher.throwError(et, `${et} event has no keys set for the data, or `\n + `the keys cannot be determined from the data, ${data}`);\n } else if (ksLen > 0 && (ksLen > data.length)) {\n // if keys is present and data size does not match or exceed keys (which is a Set)\n // for non-remove events, throw an error\n if (et !== DPConstants.DataProviderMutationEvent.REMOVE) {\n DataProviderEventDispatcher.throwError(et, `${et} event has more keys ${keys} than the `\n + `data ${data}`);\n }\n }\n }\n return ks && Array.isArray(ks) ? new Set(ks) : ks;\n }\n\n /**\n * Dispatches a DataProvider event. It can be a refresh event or a mutation event.\n *\n * @param {object} event - the keys are the supported events - refresh, add, remove, update.\n * The value for the event is as follows:\n * - For 'refresh' there is no payload necessary. it's of type oj.DataProviderRefreshEvent\n * - For 'add' operation it's of type oj.DataProviderAddOperationEventDetail\n * - For 'remove' and 'update' operations it's oj.DataProviderOperationEventDetail\n *\n * The payload for a mutation event can contain at least the following properties. Also this\n * action payload specifies as one atomic event, all the mutation operations which occurred.\n * The keys for each operation must be disjoint from each other, e.g. for example an add and\n * remove cannot occur on the same item. In addition, any indexes specified must be\n * monotonically increasing:\n * - data: optional Array; the results of the 'add' operation. Note there can be more\n * than one rows added.\n * - addBeforeKeys: optional Array<*> (new in JET 7.0) of keys for items located after the\n * items involved in the add operation. If null and index not specified then insert at\n * the end.\n * http://jet.us.oracle.com/jsdocs/oj.DataProviderAddOperationEventDetail.html#addBeforeKeys\n * - afterKeys: optional Set<*>; (deprecated in JET 7.0) a Set that is the keys of items\n * located after the items involved in the operation. If null and index not\n * specified then insert at the end.\n * - keys: Set<*>. Since SDP variable is configured with idAttribute this can be\n * determined by SDP itself from the data\n * - metadata: optional Array>. Since the SDP variable is configured\n * with 'idAttribute', this can be determined by SDP itself.\n * - indexes: optional Array\n *\n * @since JET 7.0.x\n * @public\n */\n fireEvent(event) {\n let ojEvent = null;\n\n if (Object.keys(event).indexOf(REFRESH_EVENT) >= 0) {\n ojEvent = OJ_REFRESH_EVENT;\n } else {\n let data;\n let metadata;\n let indexes;\n let keys;\n let afterKeys;\n let addBeforeKeys;\n\n const mutationEventDetail = new DataProviderEventDetail();\n Object.keys(event).forEach((eventType) => {\n const payload = event[eventType];\n // sanity check\n if (!DataProviderEventDispatcher.isEventWithValidPayload(eventType, payload)) {\n DataProviderEventDispatcher.throwError(eventType);\n }\n\n if (this.extendedType) {\n switch (eventType) {\n case DPConstants.DataProviderMutationEvent.ADD: {\n data = this._getDataItemsArray(payload.data);\n keys = this.assembleKeysFromData(eventType, data, payload.keys);\n ({ metadata } = payload);\n ({ indexes } = payload);\n ({ afterKeys } = payload);\n ({ addBeforeKeys } = payload);\n\n const afterKeyLen = afterKeys\n && (afterKeys instanceof Set ? afterKeys.size : afterKeys.length);\n if (afterKeyLen > 0) {\n this.log.warn('afterKeys parameter is being deprecated on the'\n + ' FireDataProviderEventAction. Use addBeforeKeys instead.');\n }\n const operationEventDetail = new\n DataProviderAddOperationPayload(metadata, data, indexes, keys, afterKeys, addBeforeKeys);\n mutationEventDetail.addEvent(operationEventDetail);\n\n break;\n }\n case DPConstants.DataProviderMutationEvent.UPDATE:\n case DPConstants.DataProviderMutationEvent.REMOVE: {\n data = this._getDataItemsArray(payload.data);\n keys = this.assembleKeysFromData(eventType, data, payload.keys);\n ({ indexes } = payload);\n ({ metadata } = payload);\n\n const operationEventDetail = new\n DataProviderMutationOperationPayload(metadata, data, indexes, keys);\n if (eventType === DPConstants.DataProviderMutationEvent.UPDATE) {\n mutationEventDetail.updateEvent(operationEventDetail);\n } else {\n mutationEventDetail.removeEvent(operationEventDetail);\n }\n\n break;\n }\n default: {\n const err = `The event ${eventType} is not recognized as a valid DataProvider event`;\n DataProviderEventDispatcher.throwError(eventType, err);\n break;\n }\n }\n } else {\n // for instance types payload is passed-through\n ({ keys } = payload);\n ({ data } = payload);\n ({ metadata } = payload);\n ({ indexes } = payload);\n ({ afterKeys } = payload);\n ({ addBeforeKeys } = payload);\n // keys must be a Set\n keys = keys && Array.isArray(keys) ? new Set(keys) : keys;\n switch (eventType) {\n case DPConstants.DataProviderMutationEvent.ADD: {\n const operationEventDetail = new\n DataProviderAddOperationPayload(metadata, data, indexes, keys, afterKeys, addBeforeKeys);\n mutationEventDetail.addEvent(operationEventDetail);\n break;\n }\n case DPConstants.DataProviderMutationEvent.UPDATE:\n case DPConstants.DataProviderMutationEvent.REMOVE: {\n const operationEventDetail = new\n DataProviderMutationOperationPayload(metadata, data, indexes, keys);\n if (eventType === DPConstants.DataProviderMutationEvent.UPDATE) {\n mutationEventDetail.updateEvent(operationEventDetail);\n } else {\n mutationEventDetail.removeEvent(operationEventDetail);\n }\n break;\n }\n default: {\n const err = `The event ${eventType} is not recognized as a valid DataProvider event`;\n DataProviderEventDispatcher.throwError(eventType, err);\n break;\n }\n }\n }\n });\n\n ojEvent = new ojDataProvider.DataProviderMutationEvent(mutationEventDetail);\n }\n\n if (ojEvent) {\n // JET throws when something fails processing the dispatched event.\n try {\n this.dataProvider.dispatchEvent(ojEvent, true);\n } catch (e) {\n const err = `failure during processing of dispatched event '${ojEvent}' because of error: ${e}`;\n DataProviderEventDispatcher.throwError(err);\n }\n }\n }\n\n /**\n * Returns the collection of items in the response data that is located at itemsPath.\n * @param jsonData the response returned from a Rest call.\n * @returns {*|Array}\n * @private\n */\n _getDataItemsArray(jsonData) {\n // TODO: assumes application/json content type\n const { itemsPath } = this;\n let data = jsonData;\n\n if (itemsPath && (itemsPath.length > 0)) {\n const path = itemsPath.split('.');\n for (let i = 0; i < path.length; i += 1) {\n data = data && data[path[i]];\n }\n }\n // always return a collection because data is\n if (!data || !Array.isArray(data)) {\n data = data ? [data] : [];\n }\n return data;\n }\n\n /**\n * Returns an Array of ItemMetadata objects.\n * @param items\n * @private\n */\n _getItemsMetadata(items) {\n const idHelper = DataUtils.getIdAttributeHelper(this.idAttribute);\n // todo: does this need to fall back to indices if idAttribute isn't set?\n // it did not fallback before helper change, but it looks weird\n const itemsMetadata = [];\n // getKeys() returns null if idHelper does not support this capability\n const keys = items && (idHelper.getKeys(items) || []);\n keys.forEach((key) => itemsMetadata.push(new DataProviderItemMetadata(key)));\n return itemsMetadata;\n }\n\n /**\n * Returns an set of keys. This method is called only when the keys need to be assembled\n * from data, using the idAttribute. if an idAttribute was not set or is set to '@index'\n * there is no reason to build a keys\n * @param items\n * @return Set of keys or undefined\n * @private\n */\n _buildKeys(items) {\n let keySet;\n if (this.idAttribute) {\n const idHelper = DataUtils.getIdAttributeHelper(this.idAttribute);\n // getKeys returns null if idAttribute is set to '@index'\n keySet = items && idHelper.getKeys(items);\n }\n return keySet;\n }\n\n /**\n * Can build keys if dealing with index as the idAttribute\n * @return {boolean}\n * @private\n */\n canBuildKeys() {\n return (!this.idAttribute\n || (this.idAttribute !== DPConstants.DataProviderIdAttribute.AT_INDEX));\n }\n }\n\n const isIteratingDataProvider = function (dataProvider) {\n if (dataProvider.fetchFirst && dataProvider.getCapability) {\n return true;\n }\n return false;\n };\n\n /**\n * Dispatches an event on a data provider of type oj.DataProvider.\n * @returns {Object} success outcome when event was processed successfully. failure\n * otherwise with the error. The Object has 2 properties:\n * - name: {string} of the outcome. example 'success' or 'failure'\n * - result: error string if failure outcome. undefined otherwise\n */\n class FireDataProviderEventAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n * Called with either a mutation event or a refresh event. A mutation event can include\n * multiple mutation operations as long as the id...values between operations do not\n * intersect. Example you cannot add a record and remove it in the same event.\n *\n * @param parameters\n * @returns {{name, result}|*}\n */\n perform(parameters) {\n const dataProvider = parameters.target;\n let mutationEvent;\n let refreshEvent;\n\n MUTATION_EVENTS.forEach((eventName) => {\n if (parameters[eventName]) {\n mutationEvent = mutationEvent || {};\n mutationEvent[eventName] = Utils.cloneObject(parameters[eventName]);\n }\n });\n\n if (Object.keys(parameters).indexOf(REFRESH_EVENT) >= 0) {\n this.log.finer('payload for', REFRESH_EVENT, 'is ignored, as no payload is required');\n refreshEvent = refreshEvent || {};\n refreshEvent[REFRESH_EVENT] = null;\n }\n\n if (mutationEvent && refreshEvent) {\n throw new Error(`refresh event cannot be raised along with mutation event. ${parameters}.`);\n } else if (!mutationEvent && !refreshEvent) {\n throw new Error(`either refresh or mutation event needs to be present, not both. ${parameters}.`);\n }\n\n // we have at least one event.\n const event = refreshEvent || mutationEvent;\n if (refreshEvent) {\n this.log.info('FireDataProviderEventAction called with a refresh event');\n } else {\n this.log.info('FireDataProviderEventAction called with a mutation event for operations:',\n JSON.stringify(Object.keys(event)),\n 'and payloads:',\n JSON.stringify(Object.values(event)),\n 'respectively.');\n }\n\n // In minified JET this oj class is not exposed.\n // if (oj.DataProviderFeatureChecker.isIteratingDataProvider())\n if (dataProvider && isIteratingDataProvider(dataProvider)) {\n try {\n const eventDipatcher = new DataProviderEventDispatcher(dataProvider);\n eventDipatcher.fireEvent(event);\n return Action.createSuccessOutcome();\n } catch (e) {\n return Action.createFailureOutcome(`Dispatching data provider event ${event} failed`, e);\n }\n } else {\n throw new Error('a valid DataProvider instance is required in order to dispatch the event');\n }\n }\n }\n\n return FireDataProviderEventAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/fireNotificationEventAction',['vb/action/eventAction', 'vb/action/action', 'vb/private/log', 'vb/private/utils', 'vb/private/constants']\n, (EventAction, Action, Log, Utils, Constants) => {\n const logger = Log.getLogger('/vb/private/stateManagement/fireNotificationEventAction');\n\n const Modes = {\n PERSIST: 'persist',\n TRANSIENT: 'transient',\n };\n\n class FireNotificationEventAction extends EventAction {\n /**\n *\n * @param parameters\n * These parameters are used in the payload of the event.\n * It is ultimately up to the listener to decide the meaning of the parameters, but suggested values are:\n * - summary: {string} event title/summary\n * - message: {string}event text\n * - displayMode: {string} 'persist', 'transient'\n * - type: {string} 'error', 'warning', 'confirmation', 'info'\n * - key: {string} optional, if not provided, a 9 character alphanumeric UID is generated randomly.\n * @returns {{name, result}|*}\n */\n perform(parameters) {\n const payload = FireNotificationEventAction.createPayload(parameters);\n\n logger.info('FireNotificationEventAction', payload.type, payload.displayMode);\n\n if (parameters && !EventAction.isValidTarget(parameters.target)) {\n return EventAction.createFailureOutcome(`invalid \"target\" for event action: ${parameters.target}`);\n }\n\n if (this.eventContainer) {\n // ignore returned Promise; we don't wait for event processing\n const promiseOrNull = EventAction.fireEvent(this.eventContainer, Constants.NOTIFICATION_EVENT, payload, parameters);\n return promiseOrNull ? EventAction.createSuccessOutcome() :\n EventAction.createFailureOutcome(`Unable to find target: ${parameters.target}`);\n }\n\n return EventAction.createFailureOutcome(`unable to fire ${Constants.NOTIFICATION_EVENT} event, no page context`);\n }\n\n /**\n * construct the payload, with appropriate defaults\n * @param options same as parameters for perform()\n * @returns {{summary: string, message: string, displayMode: string, type: (string|string), key: string}}\n */\n static createPayload(options) {\n return {\n summary: options.summary || '',\n message: options.message || '',\n displayMode: options.displayMode || Modes.PERSIST,\n type: options.type || Constants.MessageType.ERROR,\n key: options.key || Utils.generateUniqueId(),\n };\n }\n }\n\n return FireNotificationEventAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/forEachAction',['vb/action/action', 'vb/private/constants', 'vb/private/action/actionHelper'], (Action, Constants, ActionHelper) => {\n //\n const MODES = {\n SERIAL: 'serial',\n PARALLEL: 'parallel',\n };\n\n const VALID_MODES = Object.values(MODES);\n\n class ForEachAction extends Action {\n /**\n * @param parameters {items, actionId, as}\n * - items {Array}\n * - actionId {string} ID of action in current chain to start executing for each loop\n * - as {string} an alias for $current\n * - mode: 'serial' (default) or 'parallel'\n * @returns {Outcome)\n */\n perform(parameters) {\n return Promise.resolve().then(() => {\n const { items, mode, actionId } = parameters;\n\n // this is a failure of the runtime, not the app\n if (!this.actionChain || !this.availableContexts) {\n throw new Error(`ForEachAction (${this.logLabel}): invalid execution context, internal error`);\n }\n\n if (!Array.isArray(items)) {\n this.log.error('ForEachAction', this.logLabel, '\\'items\\' is not an array');\n return Action.createFailureOutcome();\n }\n if (typeof actionId !== 'string') {\n this.log.error('ForEachAction', this.logLabel, 'invalid actionId', actionId);\n return Action.createFailureOutcome();\n }\n if (mode && VALID_MODES.indexOf(mode) === -1) {\n this.log.error('ForEachAction', this.logLabel, 'invalid mode value', mode,\n 'must be one of', JSON.stringify(VALID_MODES));\n return Action.createFailureOutcome();\n }\n\n // set this, before calling createNewContext\n this.alias = parameters.as;\n\n const promises = [];\n\n let promise = Promise.resolve(); // initial promise\n items.forEach((data, index) => {\n // the context for the Callee (called) action - need a new one for each iteration\n const actionContext = ActionHelper.createNewContext(this.availableContexts, this);\n\n // if we are NOT parallel, we need to wait for the previous promise to resolve/reject\n const promiseToWaitFor = (mode === MODES.PARALLEL) ? Promise.resolve() : promise;\n\n promise = promiseToWaitFor.then(() => {\n // $current may be replaced by sub-actions, but the alias will not\n actionContext[Constants.ContextName.CURRENT] = { data, index };\n return this.actionChain.runActionStep(actionId, actionContext);\n });\n\n promises.push(promise);\n\n // don't reject any promises; just put the error in the results\n promise\n .catch((e) => {\n this.log.error('ForEachAction', this.logLabel, e);\n return e; // todo: ok to have the Error (or whatever) in the resolved results?\n });\n });\n\n // wait for all promises, before completing action\n return Promise.all(promises)\n .then((results) => Action.createSuccessOutcome(results))\n // this catch() should not happen, since we convert each promise to success (see 'don't reject')\n .catch((error) => Action.createFailureOutcome(error));\n });\n }\n\n /**\n * called by actionChain\n * @param actionChain\n * @param availableContexts\n */\n setContext(actionChain, availableContexts) {\n this.actionChain = actionChain;\n this.availableContexts = availableContexts;\n }\n }\n\n return ForEachAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/forkAction',[\n 'vb/action/action',\n 'vb/private/log',\n],\n(Action, Log) => {\n const logger = Log.getLogger('/vb/action/action/forkAction');\n\n /**\n * The fork action allows multiple action steps to be run in parallel (forking each set of action steps), then\n * having a common outcome that awaits and collects the results (joining each set back together).\n *\n * A fork action has an arbitrary set of outcomes whose action sub-chains will all run in parallel. A special\n * outcome 'join' will be followed once all the sub-chains complete processing.\n *\n * If successful, the result is a mapping from the outcome id's of the sub-chains to their outcome/result payload.\n * If unsuccessful, this will return a 'failure' outcome with the result being the outcome of the failed\n * forked sub-chain.\n */\n class ForkAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n this.actionChain = null;\n this.outcomesMap = null; // backward-compatibility, this should be removed\n }\n\n perform(parameters) {\n return new Promise((resolve) => {\n const results = {};\n\n // go through all the outcomes and run in parallel\n const ongoingPromises = [];\n\n const actionMap = (parameters && parameters.actions) || this.outcomesMap;\n // abort if the actions is an array\n if (!actionMap || typeof actionMap !== 'object' || Array.isArray(actionMap)) {\n const msg = `forkAction ${this.logLabel} has an invalid action parameter`;\n this.log.warn(msg);\n resolve(Action.createFailureOutcome('Error during ForkAction', new Error(msg), results));\n return;\n }\n\n Object.keys(actionMap).forEach((actionId) => {\n const action = actionMap[actionId];\n const actionPromise = this.actionChain.runActionStep(action);\n\n // keep track of results\n actionPromise.then((result) => {\n results[actionId] = result;\n });\n\n // capture the promise\n ongoingPromises.push(actionPromise);\n });\n\n // when all actions (and their steps) have been completed, return the result\n Promise.all(ongoingPromises)\n .then(() => {\n resolve(Action.createOutcome('join', results));\n })\n .catch((e) => {\n resolve(Action.createFailureOutcome('Error during ForkAction', e, results));\n });\n });\n }\n\n setContext(actionChain, outcomesMap) {\n this.actionChain = actionChain;\n this.outcomesMap = outcomesMap;\n }\n }\n\n return ForkAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/geolocationAction',['vb/action/action', 'vb/private/log'], (Action, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/geolocationAction');\n\n /**\n * Provides access to geographical location information associated with the hosting device.\n * This action requires user's consent and, as a best practice, should only be fired on user gesture.\n * Doing so will allow users to more easily associate the system permission prompt for access with the action\n * they just initiated.\n *
    \n * Following parameters correspond to\n * [PositionOptions]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions}:\n * - [maximumAge]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/maximumAge}, default: 0\n * - [timeout]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/timeout}, default: Infinity\n * - [enableHighAccuracy]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/enableHighAccuracy},\n * default: false\n *\n * On mobile devices, enableHighAccuracy should be set to true in order to use GPS sensors.\n *
    \n * If geolocation API is supported in the browser, a\n * [Position]{@link https://developer.mozilla.org/en-US/docs/Web/API/Position} that represents the position\n * of the device at a given time is returned. Latitude and longitude can be accessed from position's\n * [Coordinates]{@link https://developer.mozilla.org/en-US/docs/Web/API/Coordinates} as follows:\n * - [[ $chain.results.getCurrentLocation.coords.latitude ]]\n * - [[ $chain.results.getCurrentLocation.coords.longitude ]]\n * where getCurrentLocation is a geolocationAction.\n *
    \n * If geolocation is not supported by the browser, or a parameter with a wrong type is detected, a failure outcome\n * is returned.\n * If a [PositionError]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionError} occurs when obtaining\n * geolocation, a failure outcome with\n * [PositionError.code]{@link https://developer.mozilla.org/en-US/docs/Web/API/PositionError/code} payload is\n * returned. Possible PositionError.code values are:\n * - 1 - PositionError.PERMISSION_DENIED\n * - 2 - PositionError.POSITION_UNAVAILABLE\n * - 3 - PositionError.TIMEOUT\n *
    \n * For every failure, a descriptive error message can be obtained from the action chain. For example:\n * [[ $chain.results.getCurrentLocation.error.message ]]\n */\n class GeolocationAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n * @param parameters\n * @returns {Promise} Outcome {name:\"success\"}, or {name:\"failure\"} for PositionError, or when geolocation\n * is not supported, or parameter error is detected.\n */\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n if (!navigator.geolocation) {\n const msg = 'Geolocation is not supported in the browser';\n return Action.createFailureOutcome(msg, new Error(msg));\n }\n\n // PositionOptions: https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions\n const options = {};\n const maximumAge = parameters.maximumAge; // eslint-disable-line prefer-destructuring\n const timeout = parameters.timeout; // eslint-disable-line prefer-destructuring\n const enableHighAccuracy = parameters.enableHighAccuracy; // eslint-disable-line prefer-destructuring\n\n // Make sure that parameters, if specified, are of correct types\n if (!(this.checkParam(maximumAge, 'number', 'maximumAge') &&\n this.checkParam(timeout, 'number', 'timeout') &&\n this.checkParam(enableHighAccuracy, 'boolean', 'enableHighAccuracy'))) {\n return Action.createFailureOutcome(this.errorMessage, new TypeError(this.errorMessage));\n }\n\n if (maximumAge) {\n // maximumAge = maximum age for a possible previously-cached position.\n // 0 = must return the current position, not a prior cached position\n options.maximumPage = maximumAge;\n }\n if (timeout) {\n // timeout = how long does the device have, in milliseconds to return a result?\n // The default value is set to Infinity, meaning that getCurrentPosition() might never return\n options.timeout = timeout;\n }\n if (enableHighAccuracy) {\n // enableHighAccuracy = should the device take extra time or power to return a really accurate result,\n // or should it give you the quick (but less accurate) answer?\n options.enableHighAccuracy = enableHighAccuracy;\n }\n\n return new Promise((resolve) => {\n navigator.geolocation.getCurrentPosition(\n // success callback\n (position) => {\n resolve(Action.createSuccessOutcome(position));\n },\n // failure callback\n (positionError) => {\n this.log.error(`(${this.logLabel}): ${positionError.message}`);\n resolve(Action.createFailureOutcome(positionError.message, positionError, positionError.code));\n },\n options\n );\n });\n }\n\n /**\n * Checks whether a parameter, if defined, is of an expected type. Sets this.errorMessage on type mismatch\n * and logs an error. For example:\n * \n * (getCurrentLocation_r65qq5d23): Invalid GeolocationAction parameter 'enableHighAccuracy' : yes\n * \n * @param param parameter value to check\n * @param expectedType the expected type\n * @param paramName parameter name for error message\n * @returns {boolean} true, if no type errors are found, false otherwise.\n */\n checkParam(param, expectedType, paramName) {\n if (param && typeof param !== expectedType) { // eslint-disable-line valid-typeof\n this.errorMessage = `Invalid GeolocationAction parameter '${paramName}' : ${param}`;\n this.log.error(`(${this.logLabel}): ${this.errorMessage}`);\n return false;\n }\n return true;\n }\n }\n\n return GeolocationAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/ifAction',[\n 'vb/action/action',\n],\n(Action) => {\n /**\n *\n */\n class IfAction extends Action {\n perform(parameters) {\n const condition = parameters.condition;\n\n return condition ? Action.createOutcome(Action.Outcome.TRUE, true)\n : Action.createOutcome(Action.Outcome.FALSE, false);\n }\n }\n\n return IfAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/loginAction',[\n 'vb/action/action',\n],\n(Action) => {\n /**\n * Launch the login process as defined in the Security Provider implementation.\n * It invokes the handleLogin function on the Security Provider with the returnPath argument.\n * The returnPath parameter is used by the login page to return to the application\n * after a successfull login.\n *\n * @param {String} returnPath the path of the page or flow to go to when login is successful\n *\n * Returns a 'failure' outcome in case of error or the outcome 'success' with the payload true if\n * navigation to the login page was successful.\n *\n */\n class LoginAction extends Action {\n\n perform(parameters) {\n const securityProvider = this.context.application.securityProvider;\n\n if (!securityProvider) {\n return Action.createFailureOutcome('Security Provider missing.');\n }\n\n try {\n return Action.createSuccessOutcome(securityProvider.handleLogin(parameters.returnPath));\n } catch (error) {\n return Action.createFailureOutcome('Error during login operation', error);\n }\n }\n\n setContext(context) {\n this.context = context;\n }\n }\n\n return LoginAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/logoutAction',[\n 'vb/action/action',\n 'vb/private/stateManagement/router',\n],\n(Action, Router) => {\n /**\n * Launch the logout process as defined in the Security Provider implementation.\n * It invokes the handleLogout function on the Security Provider with the logoutUrl\n * argument.\n *\n * @param {String} logoutUrl the URL to navigate to in order to log out\n *\n * Returns a 'failure' outcome in case of error or the outcome 'success' with the payload true if\n * navigation to the login page was successful.\n */\n class LogoutAction extends Action {\n\n perform(parameters) {\n const securityProvider = this.context.application.securityProvider;\n\n if (!securityProvider) {\n return Action.createFailureOutcome('Security Provider missing.');\n }\n\n try {\n securityProvider.handleLogout(parameters.logoutUrl);\n return Action.createSuccessOutcome();\n } catch (error) {\n return Action.createFailureOutcome('Error during logout operation', error);\n }\n }\n\n setContext(context) {\n this.context = context;\n }\n }\n\n return LogoutAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/navigateAction',['vb/action/action'], (Action) => {\n /**\n * A generic way to navigate to page, flow or app-package.\n *\n * @param {Object} options\n * @param {String} options.page - the path to the destination page. The path is absolute starting\n * at the application or relative to the current page. When use in combination with flow or appPackage,\n * the path cannot be absolute and it navigates to the page relative to the flow or appPackage.\n * @param {String} options.flow - the id of the destination flow. Change the content of the flow displayed\n * in the current page. When used in combination with a page property, navigates to the page in that flow.\n * @param {String} options.package - the id of the destination app-package. Change the content of the\n * app-package displayed in the host application. When used in combination with a page property, navigates\n * to the page in that app-package.\n * @param {Object} options.params - A map of URL parameters. Same as in the navigateToPage\n * action (optional)\n * @param {String} options.history - Effect on the browser history. Allowed value are 'replace', 'skip' or\n * 'push'. If the value is 'replace', the current browser history entry is replaced, meaning that back\n * button will not go back to it. If the value is 'skip', the URL is left untouched.\n * Same as in the navigateToPage action(optional and default is push)\n * Returns the outcome 'success' if there was no error during navigation. If navigation\n * completed, returns the payload { navigated: true }.\n * Returns the outcome 'failure' with the error in the payload.\n */\n class NavigateAction extends Action {\n perform(parameters) {\n return this.helpers.navigate(parameters)\n .then((result) => Action.createSuccessOutcome(result))\n .catch((e) => Action.createFailureOutcome('Error during navigateAction', e));\n }\n }\n\n return NavigateAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/navigateBackAction',[\n 'vb/action/action',\n],\n(Action) => {\n /**\n * Navigate back to the previous page in browser history with input parameters.\n *\n * @param {Object} options - The set of options for the navigateBack action\n * @param {Array} options.params - The input parameters for the page\n * the action is going back to\n * @return {Object} Always return a success outcome.\n */\n class NavigateBackAction extends Action {\n perform(parameters) {\n this.helpers.navigateBack(parameters);\n return Action.createSuccessOutcome();\n }\n }\n\n return NavigateBackAction;\n});\n\n","'use strict';\n\ndefine('vb/helpers/navigate',[\n 'vb/private/stateManagement/router',\n], (Router) => {\n /**\n * A set of routines related to navigation and used by built-in actions.\n */\n class Navigate {\n /**\n * Navigate to an external site with given a set of input parameters.\n *\n * @param {String} url The url to navigate to (required)\n * @param {Array} params A map of URL parameters (optional)\n * @param {String} hash The hash entry (optional)\n * @param {String} history Effect on the browser history. Allowed value are 'replace' or 'push'.\n * If the value is 'replace', the current browser history entry is replace,\n * meaning that back button will not go back to it.\n * (optional and default is push)\n */\n static toUrl(options) {\n Router.navigateToExternal(options);\n }\n\n /**\n * Calculate the URL of a page or flow given its id path like /pageId/flowId/pageId\n *\n * @param {string} path the path of a page or flow\n * @return {string} the URL to this page or flow\n */\n static getUrlFromPath(path) {\n return Router.getUrlFromPath(path);\n }\n }\n\n return Navigate;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/navigateToExternalAction',[\n 'vb/action/action',\n 'vb/helpers/navigate',\n],\n(Action, Navigate) => {\n /**\n * Navigate to an external site with given a set of input parameters.\n *\n * @param {String} url The url to navigate to (required)\n * @param {Array} params A map of URL parameters (optional)\n * @param {String} hash The hash entry (optional)\n * @param {String} history Effect on the browser history. Allowed value are 'replace' or 'push'.\n * If the value is 'replace', the current browser history entry is replace,\n * meaning that back button will not go back to it. (optional and default is push)\n *\n * Always return {'success'}.\n *\n * An example of entry as seen in a page descriptor:\n *\n * \"parameters\": {\n * \"url\": \"'http://mysite/index.html'\",\n * \"params\": \"{ id: $variables.id, name: 'Charles' }\",\n * \"hash\": \"'details'\"\n * }\n *\n */\n class NavigateToExternalAction extends Action {\n\n perform(parameters) {\n Navigate.toUrl(parameters);\n return Action.createSuccessOutcome();\n }\n }\n\n return NavigateToExternalAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/navigateToPageAction',['vb/action/action'], (Action) => {\n /**\n * Navigate to a page of the application with given input parameters.\n * This action is deprecated in favor of the navigate action.\n * See https://confluence.oraclecorp.com/confluence/display/ABCS/VB+navigate+action\n *\n * @param {String} page The destination page path relative to the current flow (required)\n * @param {Array} params A map of URL parameters (optional)\n * @param {String} history Effect on the browser history. Allowed value are 'replace', 'skip' or 'push'.\n * If the value is 'replace', the current browser history entry is replace,\n * meaning that back button will not go back to it.\n * If the value is 'skip', the URL is left untouched.\n * (optional and default is push)\n * Returns the outcome 'success' if there was no error during navigation. If navigation\n * completed, returns the payload { navigated: true }.\n * Returns the outcome 'failure' with the error in the payload.\n */\n class NavigateToPageAction extends Action {\n perform(parameters) {\n return this.helpers.navigateToPage(parameters)\n .then((result) => Action.createSuccessOutcome(result.navigated === true))\n .catch((e) => Action.createFailureOutcome('Error during NavigateToPageAction', e));\n }\n }\n\n return NavigateToPageAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/openUrlAction',[\n 'vb/action/action',\n 'vb/private/stateManagement/router',\n],\n(Action, Router) => {\n /**\n * Open the specified resource in the current window or in a new window using the window.open() API\n * as defined at {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/open|Window.open()}\n * In the mobile case, the cordova's inAppBrowser plugin will be used to open the specified resource.\n * For more information about the plugin, please refer to\n * {@link https://github.com/apache/cordova-plugin-inappbrowser}\n *\n * @param {String} url The url to navigate to (required)\n * @param {Object} params An object with each property is a URL parameters (optional)\n * @param {String} hash The hash entry (optional)\n * @param {String} history Effect on the browser history (optional)\n * This is only used when opening the resource in the same window.\n * Allowed values are 'replace' or 'push'. Default is 'push'.\n * If the value is 'replace', the current browser history entry is\n * replaced instead of pushed, meaning that the browser back button\n * will not go back to it.\n * @param {String} windowName A name identifying the window as defined in window.open API (optional)\n * If not defined, the URL will be open in the current window otherwise\n * refer to the window.open API.\n * In the mobile case, there are 3 possible values: '_self', '_blank',\n * or '_system'. Default is '_self'\n *\n * Always return {'success'}.\n *\n * An example of entry to open the URL in a new window as seen in a page descriptor:\n *\n * \"parameters\": {\n * \"url\": \"http://mysite/index.html\",\n * \"params\": {\n * \"id\": \"{{ $variables.id }}\",\n * },\n * \"hash\": \"details\",\n * \"name\": \"myOtherWindow\",\n * }\n *\n */\n class OpenUrlAction extends Action {\n\n perform(parameters) {\n return Router.openUrl(parameters)\n .then(() => Action.createSuccessOutcome())\n .catch(e => Action.createFailureOutcome('Failed to open url', e));\n }\n }\n\n return OpenUrlAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/resetVariablesAction',['vb/action/action', 'vb/action/builtin/assignVariablesAction', 'vb/private/utils',\n 'vb/private/log'], (Action, AssignVariablesAction, Utils, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/resetVariablesAction');\n\n /**\n * This action can be used to reset a list of variables to their default values. For examples:\n *\n * parameters: {\n * \"variables\": [\"$page.variables.var1\", \"$page.variables.var2\"]\n * }\n *\n * Note: If a single variable is provided, it will be treated as an array implicitly.\n *\n * Each expression in the variables array has to resolve to variable or a variable's property if it's a structure.\n * It has to be prefixed with one of the following: $application.variables, $page.variables, $chain.variables,\n * $variables and followed by a variable name or a path to a variable property. For example:\n *\n * $application.variables.a\n * $page.variables.a.b\n * $variables.a.b.c (which is shorthand for $chain.variables.a.b.c)\n *\n */\n class ResetVariablesAction extends AssignVariablesAction {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n /**\n * @param parameters\n * @returns on success, Outcome {name:\"success\"}. on failure, throws the first caught exception\n */\n perform(parameters) {\n let exception;\n let variables = parameters.variables || [];\n\n // Implicitly treat the single variable as an array\n if (!Array.isArray(variables)) {\n variables = [variables];\n }\n\n variables.some((variable) => {\n try {\n const resetOption = ResetVariablesAction.RESET_OPTION.TO_DEFAULT;\n const targetInfo = this.analyzeTargetExpr(variable,\n { resetOption, availableContexts: this.availableContexts });\n\n // For now, we need to assign the root value to the variable to trigger a write to the store.\n // TODO: remove this code once we support using the assign action as the reducer for the redux store\n const tRValue = targetInfo.rootValue;\n this.log.info(this.constructor.name, this.id, 'resetting variable', variable, 'to', tRValue);\n targetInfo.rootObj[targetInfo.rootPropName] = tRValue;\n return false; // keep calling some()\n } catch (e) {\n // let the parent logger get this, so it actually has the action id\n // this.log.error(`Error executing action (${this.actionId})`, e);\n exception = e;\n return true; // terminate the some()\n }\n });\n\n // this should just throw the error\n // return failed ? Action.createOutcome('failure', exception) : Action.createOutcome('success');\n if (exception) {\n throw exception;\n }\n return Action.createSuccessOutcome();\n }\n }\n\n return ResetVariablesAction;\n});\n\n\n","'use strict';\n\ndefine('vb/private/services/swaggerUtils',['vb/private/log', 'vb/private/services/serviceConstants'], (Log, ServiceConstants) => {\n const SWAGGER_OPERATIONID = 'operationId';\n const swaggerOperationWithBody = ['put', 'post', 'patch'];\n\n const logger = Log.getLogger('/vb/private/services/swaggerUtils');\n\n class SwaggerUtils {\n /**\n * find suitable endpoint ID if there is no operation ID\n * @param pathKey\n * @param pathObject\n * @param operationKey\n * @returns {*}\n */\n\n static getEndpointId(pathKey, pathObject, operationKey, operationObject) {\n let endpointId = operationObject[SWAGGER_OPERATIONID];\n if (!endpointId) {\n const pathNoSlash = pathKey.replace(/\\//g, '');\n endpointId = `${operationKey}${pathNoSlash}`;\n }\n return endpointId;\n }\n\n\n static hasRequestBody(operation) {\n return swaggerOperationWithBody.indexOf((operation || '').toLowerCase()) !== -1;\n }\n\n\n /**\n * recursely resolve all references in the object, where 'resolve': replace $ref props with the referenced objects\n * @param swaggerObject\n * @param filterFn optional, fn(node, resolutionContext) return false if node should be skipped\n * @param node\n * @param resolutionContext used internally, caller should not pass a value\n * @returns {{}}\n */\n static resolveReferences(swaggerObject, filterFn,\n node = swaggerObject, resolutionContext = { names: [], map: {} }) {\n // check if we should abort\n if (filterFn && !filterFn(node, resolutionContext)) {\n return node;\n }\n\n function resolveArray(arr) {\n return arr.map((arrItem) => {\n if (Array.isArray(arrItem)) {\n return resolveArray(arrItem);\n }\n if (arrItem && typeof arrItem === 'object') {\n return SwaggerUtils.resolveReferences(swaggerObject, filterFn, arrItem, resolutionContext);\n }\n return arrItem;\n });\n }\n\n const newNode = {};\n\n const result = Object.assign({}, SwaggerUtils.resolveReference(swaggerObject, node, resolutionContext));\n // if resolution left the $ref intact, just return it, and use as the node\n if (result.$ref) {\n return result;\n }\n\n const dereferencedNode = result.reference;\n\n if (result.inMap) {\n return dereferencedNode;\n }\n\n Object.keys(dereferencedNode).forEach((nodeName) => {\n const childNode = dereferencedNode[nodeName];\n\n resolutionContext.names.push(nodeName);\n\n if (Array.isArray(childNode)) {\n newNode[nodeName] = resolveArray(childNode);\n } else if (childNode && typeof childNode === 'object') {\n newNode[nodeName] = SwaggerUtils.resolveReferences(swaggerObject, filterFn, childNode, resolutionContext);\n } else {\n newNode[nodeName] = childNode;\n }\n resolutionContext.names.pop();\n });\n\n return newNode;\n }\n\n\n /**\n * recursively follow references, expanding. does not follow combinations (allOf, etc).\n * @param swaggerObject\n * @param node\n * @param resolveContext should not be passed by the caller, used internally to track recursion\n * @returns { inMap: true/false, reference: the referenced object, or the original if not found }\n */\n static resolveReference(swaggerObject, node = {}, resolutionContext = {}) {\n const contextMap = resolutionContext.map;\n\n const contextPath = resolutionContext.names.join('/');\n if (!contextMap[contextPath]) {\n contextMap[contextPath] = node;\n }\n\n if (node && node.$ref) {\n // todo assume simple same-file reference. otherwise, ignore\n let refPath = node.$ref;\n // if its not a string, its either a valid name which happens to be \"$ref\", or its some wonky syntax.\n // either way, just return it\n if (typeof refPath !== 'string') {\n return node;\n }\n\n // skip external references\n // todo: we will possibly need to resolve these, at some point\n if (!refPath || refPath.startsWith('http')) {\n // bufp-36865 don't log, this gets noisy with new BO openapi3\n return {\n inMap: false,\n reference: node,\n };\n }\n\n if (refPath.startsWith('#/')) {\n refPath = refPath.substring(2);\n }\n\n // first, see if we've already expanded it\n // note: this is a very simple recursion check, only to prevent loops.\n // it does not define the loop in an 'optimal' way, it only stops the loop.\n // for example: the two recursive references, loop1 and loop2, where each has a ref to the other,\n // the expansion will not create objects that are recursive; the references will\n // terminate with an unexpanded object at some level.\n // loops really only happen in schemas, and runtime does not use the schema information.\n if (contextMap[refPath]) {\n return {\n inMap: true,\n reference: contextMap[refPath],\n };\n }\n\n let foundNode = swaggerObject;\n\n refPath.split('/').some((part) => {\n foundNode = foundNode && foundNode[part];\n return !foundNode;\n });\n\n if (foundNode) {\n const result = SwaggerUtils.resolveReference(swaggerObject, foundNode, resolutionContext);\n contextMap[refPath] = result.reference; // new map entry for path, and resolved object\n contextMap[contextPath] = result.reference; // replace the path/object with the resolved one\n return {\n inMap: false,\n reference: result.reference,\n };\n }\n\n // this doesn't happen; this would mean the local reference doesn't exist\n logger.info('unable to resolve reference:', refPath);\n }\n\n return {\n inMap: false,\n reference: node,\n };\n }\n\n\n /**\n * follow 'allOf' combinations, recursively, and return an array of all schemas\n * this requires that all $ref references have already be resolved.\n * @param schema\n * @returns {Array} array of expanded schemas, including allOf references\n */\n static expandSchema(schema) {\n const schemas = [];\n\n if (schema) {\n if (schema.allOf && Array.isArray(schema.allOf)) {\n schema.allOf.forEach((allOfSchema) => {\n // recurse, each 'allOf' could in turn include an 'allOf'\n const allOfSchemas = SwaggerUtils.expandSchema(allOfSchema);\n schemas.push(...allOfSchemas);\n });\n } else {\n schemas.push(schema);\n }\n }\n return schemas;\n }\n\n\n /**\n * this requires that the parameter defs have been processed by SwaggerUtils.separateParameters\n * @param paramDef\n * @returns {string}\n */\n static getParameterDefault(paramDef = {}) {\n let defaultValue = paramDef[ServiceConstants.VB_EXTENSIONS]\n && paramDef[ServiceConstants.VB_EXTENSIONS][SwaggerUtils.VB_DEFAULT_VALUE];\n\n if (defaultValue === undefined) {\n defaultValue = paramDef[SwaggerUtils.VB_DEPRECATED_DEFAULT_VALUE];\n }\n if (defaultValue === undefined) {\n defaultValue = paramDef.schema && paramDef.schema.default;\n }\n\n return defaultValue;\n }\n\n\n /**\n * @param mergedParameters\n * @returns {{path: {}, query: {}, header: {}, body: {}, etc}}\n */\n static separateParameters(mergedParameters) {\n const parameters = {};\n\n (mergedParameters || []).forEach((paramDef) => {\n parameters[paramDef.in] = parameters[paramDef.in] || {};\n // look for (VB-specific) param default value, and copy it to defaultValue\n const newParamDef = Object.assign({\n defaultValue: SwaggerUtils.getParameterDefault(paramDef),\n }, paramDef);\n parameters[paramDef.in][paramDef.name] = newParamDef;\n });\n\n return parameters;\n }\n\n /**\n * for the map of Parameter definitions, return the parameter definitions of the required query and path parameters.\n * Only looks at parameters for the URL ('path', 'query') and ignores 'body' and 'header' parameters (swagger 2.0).\n * @param parameterDefs mapped first by type (query, path, etc.), then by name.\n * {\n * path: { foo: {...} },\n * query: {limit: {...} }, ...\n * }\n * @returns {Array}\n */\n static getRequiredParameters(parameterDefs) {\n const requiredDefs = [];\n // these are the only param types used on the URL\n SwaggerUtils.URL_PARAM_TYPES.forEach((type) => {\n const parameterDefsForType = parameterDefs[type];\n Object.keys(parameterDefsForType || {}).forEach((key) => {\n const parameterDef = parameterDefsForType[key];\n // note, 'path' should have 'required: true', but check for 'path' just in case\n if (type === 'path' || parameterDef.required === true) {\n requiredDefs.push(Object.assign({ type }, parameterDef));\n }\n });\n });\n return requiredDefs;\n }\n }\n\n SwaggerUtils.VB_DEPRECATED_DEFAULT_VALUE = `${ServiceConstants.VB_EXTENSIONS}-defaultValue`;\n\n SwaggerUtils.VB_DEFAULT_VALUE = 'defaultValue'; // this appears in a 'x-vb'\n\n // the openapi3/swagger parameter types that need replacement/appending in the url\n SwaggerUtils.URL_PARAM_TYPES = ['path', 'query'];\n\n\n return SwaggerUtils;\n});\n\n","'use strict';\n\n// originally we intended to support RFC 6570, but we switched to Swagger,\n// which does not support the full spec, so some of the functionality here isn't used.\n\ndefine('vb/private/services/uriTemplate',[\n 'vb/private/services/swaggerUtils',\n 'vb/private/log',\n 'vb/private/constants',\n 'urijs/URI',\n],\n(SwaggerUtils, Log, Constants, URI) => {\n // BUFP-19472: pluses cause issues with proxy server (will be fixed, this should be removable eventually)\n // eslint-disable-next-line no-param-reassign\n URI.escapeQuerySpace = false;\n\n // start conservatively, only look for forward slash\n const REGEXP_RESERVED = /[/]/; // cannot be global! will save state, and give alternating results\n\n const logger = Log.getLogger('/vb/private/service/uriTemplate');\n const regexTemplates = /{(.*?)}/gi;\n\n // handles the '?' case, including comma-delimited names\n function formReplace(names = [], variables = {}) {\n let str = '';\n\n let isFirst = true;\n names.forEach((nameStr) => {\n let name = nameStr;\n let len = 0;\n const colon = name.indexOf(':');\n\n if (colon >= 0) {\n name = nameStr.substring(0, colon);\n len = parseInt(nameStr.substring(colon + 1), 10);\n }\n\n if (variables[name] !== undefined && variables[name] !== null) {\n const valueStr = `${variables[name]}`; // convert to string\n const replacement = len > 0 ? valueStr.substring(0, len) : valueStr;\n\n str = `${str}${(isFirst ? '?' : '&')}${name}=${replacement}`;\n isFirst = false;\n }\n });\n return str;\n }\n\n /**\n * private to this module, represents the contents of a {brace} template\n */\n class Expression {\n constructor(exprStr) {\n const expr = exprStr;\n this.isForm = expr.startsWith('?');\n this.expr = this.isForm ? expr.substring(1) : expr;\n }\n\n getNames() {\n return this.expr.split(',').map((name) => {\n // strip character count, if any (ex: 'query:4')\n const colon = name.indexOf(':');\n return (colon !== -1) ? name.substring(0, colon) : name;\n });\n }\n\n getReplacement(variables = {}) {\n let str;\n if (this.isForm) {\n logger.warn('warning: {?q} template syntax not supported in service definitions');\n str = formReplace(this.expr.split(','), variables);\n } else {\n // this is a change in behavior, but it shouldn't matter because this is a failure case, and\n // nothing should be expecting, or relying on, the old behavior.\n str = variables[this.expr] || `{${this.expr}}`;\n }\n return str;\n }\n }\n\n\n /**\n * utility to expand RFC 6570 URI Templates.\n * A very basic, Level 1 implementation for now, including basic form query support:\n * ex:\n * http://example.com/search/{name}/customers{?q,lang}\n * If we need expanded support, we should look at using a 3rd party lib.\n *\n *\n * NOTE: service definitions switched to using Swagger-2.0-like syntax,\n * which does NOT support all of RFC 6570. In particular, query parameter replacement\n * is not supported. So, the ability to handle the templates is here,\n * but the service definitions should not be using those (unless something changes).\n */\n class UriTemplate {\n /**\n *\n * @param uri\n * @param parameterDefs from the service definition (swagger)\n * @param doNotAppendExtras normally, we append extra params as query params.\n */\n constructor(uri, parameterDefs = {}, doNotAppendExtras = false) {\n this.uri = uri || '';\n this.doNotAppendExtras = doNotAppendExtras;\n this.parameterDefs = parameterDefs;\n this.requiredParameters = SwaggerUtils.getRequiredParameters(this.parameterDefs);\n\n // get default values from the schemas (only respecting query defaults for now).\n this.defaultValueMap = {};\n\n SwaggerUtils.URL_PARAM_TYPES.forEach((type) => {\n const queryParameterDefs = this.parameterDefs[type] || {};\n Object.values(queryParameterDefs).forEach((paramDef) => {\n const paramDefault = SwaggerUtils.getParameterDefault(paramDef);\n if (paramDef && paramDefault !== undefined) {\n // if there is already a param with the same name, log a warning (should not happen)\n if (this.defaultValueMap[paramDef.name]) {\n logger.warn(`found conflicting parameter names with default values: ${paramDef.name}`);\n }\n this.defaultValueMap[paramDef.name] = paramDefault;\n }\n });\n });\n\n // this.expressionInfo = this._getExpressionInfo(); // todo: should we enable this?\n }\n\n\n /**\n * do all path/query parameter replacement; this is the main API.\n *\n * const temp = new UriTemplate('http:/myhost/{foo}');\n * const newUrl = temp.replace({ foo: 'a', boo: 'b' }); // 'http:/myhost/a?boo=b'\n *\n * @param variablesArg\n * @param skipTemplateEncoding default is false. should only be true when you know there will missing parameters,\n * and you do not want to encode the braces\n * @returns {string}\n */\n replace(variablesArg = {}, skipTemplateEncoding = false) {\n // protect against non-object values\n const variables = (typeof variablesArg === 'object' && !Array.isArray(variablesArg))\n ? variablesArg : {};\n\n const variablesToMerge = Object.assign({}, this.defaultValueMap, variables);\n\n // if a path parameter has reserved characters, it must be encoded, so create a 'placeholder',\n // and encode at the end\n let placeholderIndex = 0;\n const placeholderMap = {};\n const mergedVariables = {};\n\n let newUrl = this.uri.replace(regexTemplates, (braceStr, exprStr) => {\n const expr = new Expression(exprStr);\n let exprReplacement = expr.getReplacement(variablesToMerge);\n\n // if the param value has reserved characters, handle separately\n if (exprReplacement) {\n const def = this._findParameterDefinition(exprStr);\n // if its a path parameter, use a placeholder, and replace it after we encode everything else\n // arbitrary placeholder, that can be reasonably expected to be unique, and does not need encoding\n const placeholder = `___ph${placeholderIndex += 1}___`;\n\n // if we have a character in the regex that needs to be encoded...\n if (def && def.in === 'path' && REGEXP_RESERVED.test(exprReplacement)) {\n placeholderMap[placeholder] = encodeURIComponent(exprReplacement);\n exprReplacement = placeholder;\n } else {\n // no param definition; keep the template unencoded if there is no value to replace it\n // using a different check than exprReplacement, because getReplacement() returns the template,\n // when there's no value, and there's no way to tell the difference\n // between 'no value' and 'value looks like template'\n const noReplacement = !(exprStr in variablesToMerge);\n\n if (noReplacement) {\n // else, if\n placeholderMap[placeholder] = exprReplacement; // leave it as-is\n exprReplacement = placeholder;\n }\n }\n }\n\n expr.getNames().forEach((nameInExpr) => {\n // track variables that have been merged (replaced in the url) and remove them from variablesToMerge after\n // the replace. This ensures repeating patterns are addressed\n mergedVariables[nameInExpr] = 'merged';\n });\n return exprReplacement;\n });\n\n // remove variables already replaced, the leftovers are query params\n Object.keys(mergedVariables).forEach((name) => {\n delete variablesToMerge[name];\n });\n\n // now add the ones passed in\n // const qParamNames = Object.keys(this.queryParameters).filter(name => replaced.indexOf(name) < 0);\n // we used to respect the Swagger param definitions, and only included params that were defined.\n // now, we'll use the x-vb-defaultValue if its there, but otherwise, any variables passed in that weren't\n // used already in path templates, and are not defined as non-query, are assumed to be form/query parameters\n\n const qParamNames = Object.keys(variablesToMerge).sort(); // sorted so the order is predictable for tests\n\n // for BUFP-32180, switching to using URI to add the query params here.\n const uri = new URI(newUrl);\n\n if (qParamNames.length) {\n const addQueryParameter = (n, v) => {\n // to match pre-URI behavior, add 'null' or 'undefined'; @todo: revisit this\n if (v === null) {\n uri.addSearch(n, 'null');\n } else if (v === undefined) {\n uri.addSearch(n, 'undefined');\n } else {\n uri.addSearch(n, v);\n }\n };\n\n qParamNames.forEach((paramName) => {\n const value = variablesToMerge[paramName];\n // include null, or non-objects\n if (typeof value !== 'object' || value === null) {\n const def = this._findParameterDefinition(paramName);\n\n // add it if its 'query', or if we don't see a definition for it\n if ((!def && !this.doNotAppendExtras) || (def && def.in === 'query')) {\n addQueryParameter(paramName, value);\n }\n } else if (Array.isArray(value)) {\n const def = this._findParameterDefinition(paramName);\n if (!def || def.in === 'query') {\n if (def && def.collectionFormat === 'multi') {\n value.forEach((v) => {\n addQueryParameter(paramName, v);\n });\n } else if (def || !this.doNotAppendExtras) {\n const queryValue = value\n .map((v) => (typeof v.replace === 'function' ? v.replace(/,/g, '%2C') : v))\n .join();\n addQueryParameter(paramName, queryValue);\n }\n }\n }\n });\n\n newUrl = uri.toString();\n }\n\n // finally, encode the entire URL (this used to be done in Rest helper)\n // @todo: revisit this, see serviceSpec: 'test endpoint parameter substitution 2 (arrays)'\n if (!skipTemplateEncoding) {\n const newNewUrl = UriTemplate.encode(newUrl);\n // check if encoding added a trailing slash;\n // only happens with host-only url (URIjs adds it), so encoding shouldn't matter\n newUrl = (newNewUrl === `${newUrl}${Constants.PATH_SEPARATOR}`)\n ? newNewUrl.substring(0, newNewUrl.length - 1) : newNewUrl;\n }\n\n // finally, replace the placeholders for reserved-character path params\n Object.keys(placeholderMap).forEach((placeholder) => {\n newUrl = newUrl.replace(placeholder, placeholderMap[placeholder]);\n });\n return newUrl;\n }\n\n\n /**\n * find the definition for the parameter.\n * First looks in the 'query' parameters, since different parameter types can have the same name.\n *\n * the parameterDefs maps the defs by the (swagger) \"in\" parameter type\n * {\n * \"query\": {.... },\n * \"header\": {.....},\n * \"cookie\": {....},\n * \"path\": {....},\n * any others?\n * }\n *\n * todo: if this method is repurposed for headers, need to account for duplicate names\n * @param paramName\n * @returns {*}\n * @private\n */\n _findParameterDefinition(paramName) {\n let def = this.parameterDefs.query && this.parameterDefs.query[paramName];\n if (!def) {\n Object.keys(this.parameterDefs).some((inType) => {\n def = this.parameterDefs[inType][paramName];\n return def;\n });\n }\n return def;\n }\n\n\n /**\n * not used for runtime, only useful for design-time currently\n * returns an array of information about each variable template in the URI\n * {\n * isQuery: true/false\n * name: the name, without any qualifier\n * isRequired: false if its a form (query) parameter, making it optional\n * length: - optional, only set if the variable name is qualified with a size. ex. {name:4}\n * }\n * @returns {Array}\n */\n _getExpressionInfo() {\n const templateInfo = [];\n\n let queryPos = this.uri.indexOf('?');\n\n let match = regexTemplates.exec(this.uri);\n\n while (match != null) {\n let isForm = false;\n\n let str = match[1] || '';\n\n if (str.startsWith('?')) {\n logger.warn('warning: {?} template syntax not supported in service definitions');\n isForm = true;\n str = str.substring(1);\n if (queryPos < 0) {\n queryPos = match.index;\n }\n }\n\n const isQuery = isForm || (match.index >= queryPos && queryPos >= 0);\n\n // handle comma-separated lists\n str.split(',').forEach((strItem) => {\n let name = strItem;\n const colon = name.indexOf(':');\n let len = -1;\n if (colon >= 0) {\n name = strItem.substring(0, colon);\n len = parseInt(strItem.substring(colon + 1), 10);\n }\n\n const paramInfo = {\n isQuery,\n name,\n isRequired: !isForm,\n };\n // add optional 'length' if one is specified (ex. {name:2}\n if (len > -1) {\n paramInfo.length = len;\n }\n\n templateInfo.push(paramInfo);\n });\n\n // keep looking\n match = regexTemplates.exec(this.uri);\n }\n\n return templateInfo;\n }\n\n /**\n * returns an array of names of missing required parameters (if any).\n * @param values\n * @returns {Array} list of parameter definitions, or an empty Array\n */\n getMissingRequiredParameters(values) {\n const missingDefs = [];\n this.requiredParameters.forEach((paramDef) => {\n const name = paramDef.name;\n const noValue = !values || (values[name] === undefined || values[name] === null);\n const noDefault = (this.defaultValueMap[name] === undefined || this.defaultValueMap[name] === null);\n if (noValue && noDefault) {\n missingDefs.push(paramDef);\n }\n });\n return missingDefs;\n }\n\n\n /**\n * encode url and query parameter values, for added security\n *\n * See rest.js; we used to do this there; moved this closer to where the param substitution is done,\n * to handle path parameter encoding better.\n *\n * @param url\n * @param encodePath if false, the path portion of the url is not encoded. default: true\n * @private\n */\n static encode(url, encodePath = true) {\n const uriObj = URI.parse(url);\n const queryObj = URI.parseQuery(uriObj.query);\n if (queryObj) {\n // decode the existing parameters\n Object.keys(queryObj).forEach((name) => {\n const value = queryObj[name];\n // decode the values - if not encoded, we should get the same value\n if (typeof value === 'string') {\n queryObj[name] = URI.decodeQuery(value);\n } else if (value && Array.isArray(value)) {\n queryObj[name] = value.map(v => URI.decodeQuery(v));\n }\n });\n // this will re-build it with encoding\n uriObj.query = URI.buildQuery(queryObj, true);\n\n // bufp-24834 whatwg doesn't encode spaces in the url, so encode the path.\n // note: this requires that path params have NOT been encoded already.\n if (uriObj.path && encodePath) {\n uriObj.path = URI.encodeReserved(uriObj.path);\n }\n\n return URI.build(uriObj).toString();\n }\n\n return url;\n }\n }\n\n\n return UriTemplate;\n});\n\n","'use strict';\n\ndefine('vb/private/monitoring/fetchRequestMonitorOptions',[\n 'vbc/private/monitorOptions',\n], (MonitorOptions) => {\n /**\n * Monitor options for tracing rest requests\n */\n class FetchRequestMonitorOptions extends MonitorOptions {\n constructor(operationName, message, request) {\n super(operationName, message);\n this.addStartFields(() => ({\n request,\n }));\n }\n }\n\n\n return FetchRequestMonitorOptions;\n});\n\n","'use strict';\n\ndefine('vb/private/monitoring/fetchResponseMonitorOptions',[\n 'vbc/private/monitorOptions',\n], (MonitorOptions) => {\n /**\n * Monitor options for tracing rest responses\n */\n class FetchResponseMonitorOptions extends MonitorOptions {\n constructor(operationName, message, response) {\n super(operationName, message);\n this.addEndFields(() => ({\n response,\n }));\n }\n }\n\n return FetchResponseMonitorOptions;\n});\n\n","'use strict';\n\ndefine('vb/private/services/transformsUtils',[], () => {\n const REQUEST_TRANSFORMS_TYPE_BODY = 'body';\n const REQUEST_TRANSFORMS_TYPE_FETCHBYKEYS = 'fetchByKeys';\n\n class TransformsUtils {\n /**\n * sort callback that sorts 'body' transform last\n * @param a\n * @param b\n * @returns {number}\n */\n static bodyTransformLast(a, b) {\n if (a === REQUEST_TRANSFORMS_TYPE_BODY) {\n return 1;\n }\n if (b === REQUEST_TRANSFORMS_TYPE_BODY) {\n return -1;\n }\n return 0;\n }\n\n /**\n * filter callback function to exclude fetchByKeys\n * @param a\n * @returns {boolean}\n */\n static excludeFetchByKeys(a) {\n return (a !== REQUEST_TRANSFORMS_TYPE_FETCHBYKEYS);\n }\n\n /**\n * sort callback that sorts select transform to be first in list of transforms\n * @param a\n * @returns {number}\n */\n static selectTransformFirst(a) {\n return (a === 'select' ? -1 : 1);\n }\n }\n\n return TransformsUtils;\n});\n\n","'use strict';\n\ndefine('vb/private/services/endpointReference',[\n 'vb/private/constants',\n 'vb/private/utils',\n], (Constants, Utils) => {\n /**\n * class EndpointReference\n *\n * An abstraction of the ways a service endpoint (a.k.a. operation) can be references.\n * Normally, an \"endpoint\" property is used, which is \"[:]/\",\n * where the namespace is optional.\n *\n * When creating an SDP programmatically for some Dynamic UI cases, an tuple with { url, operationRef } may be used.\n *\n * This class is meant to:\n * - represent either in a scalable way (allow more properties in the future if needed, etc).\n * - calculate a namespace when the namespace is not specified, and a container is provided for context.\n *\n */\n class EndpointReference {\n /**\n * Creates an endpoint reference from the specified arguments.\n *\n * A string id is parsed to obtain the 'namespace', 'serviceId', and 'operationId' following this pseudo expression\n * [namespace]:serviceId/[operationId]. If not provided 'namespace' is undefined while 'serviceId' and\n * 'operationId' are both empty strings.\n *\n * An object id is expected to provide the 'url', 'serviceId', and 'operationRef' information.\n *\n * @param {(string|{url: string, serviceId: string, operationRef: string})} id\n * @param {object} [container] - typically the container which defines the scope in which the endpoint is being\n * invoked.\n * @param {string} [container.extensionId] - the container's extension Id (or namespace), which is used to\n * set the endpoint reference 'containerNamespace' property (defaults\n * to 'base' if not informed).\n * @throws {Error} if id is neither a string nor an object\n */\n constructor(id, { extensionId = Constants.ExtensionNamespaces.BASE } = {}) {\n if (!id) {\n throw Error('Invalid ID used for endpoint reference.');\n }\n\n // the namespace of the extension/container/\"scope\" in which this endpoint is being used - for example, 'extA' if\n // this endpointReference is being instantiated because of an action chain in extension 'extA'. Never undefined.\n this.containerNamespace = extensionId;\n\n if (typeof id === 'string') {\n // eslint-disable-next-line max-len\n const { prefix: namespace, main: serviceId = '', suffix: operationId = '' } = Utils.parseQualifiedIdentifier(id);\n this.namespace = namespace;\n this.serviceId = serviceId;\n this.operationId = operationId;\n } else if (id.url) {\n // if its not a string, assume it's one from JET Dyn UI - url, operationRef.\n const { url, operationRef, serviceId } = id;\n this.url = url;\n this.operationRef = operationRef;\n this.serviceId = serviceId;\n } else {\n throw new Error(`Attempt to create an invalid EndpointReference: ${JSON.stringify(id)}`);\n }\n }\n\n // never undefined: either the namespace or containerNamespace\n // useful when there is a need to obtain \"the best, defined\" namespace for this endpoint reference\n get derivedNamespace() {\n return this.namespace || this.containerNamespace;\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return JSON.stringify(this);\n }\n }\n\n return EndpointReference;\n});\n\n","'use strict';\n\ndefine('vb/private/helpers/abstractRestHelper',[\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/log',\n 'vbc/private/logConfig',\n 'vb/private/services/uriTemplate',\n 'vb/private/services/transformsUtils',\n 'vb/private/services/endpointReference',\n], (Constants, Utils, Log, LogConfig, UriTemplate, TransformsUtils, EndpointReference) => {\n const logger = Log.getLogger('/vb/private/helpers/abstractRestHelper', [\n // Register custom loggers\n {\n name: 'startRest',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.restHelperStart,\n },\n {\n name: 'endRest',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.restHelperEnd,\n },\n ]);\n\n // match 'application(any number of word or / or .)json. Example\n // application/vnd.oracle.adf.resourceitem+json\n const APP_JSON_CONTENT_TYPE_REGEX = /application[\\w/+.]*json/;\n const REQUEST_TRANSFORMS_TYPE_BODY = 'body';\n\n /**\n * Helper to make a REST call. This class is loosely based on the fetch API\n * proposal (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).\n *\n * The result of calling fetch is the Response object as defined here:\n * https://developer.mozilla.org/en-US/docs/Web/API/Response\n *\n * If a service endpoint has transformation functions defined, the fetch will be wrapped prior\n * and after to call those transformation functions.\n *\n * This is a BASE class wghich contains all PRIVATE methods; the public methods are in rest.js\n *\n * This instance is reusable and fetch can be called multiple times after it has been\n * configured.\n */\n class AbstractRestHelper {\n /**\n * Creates a new AbstractRestHelper instance.\n *\n * the 'endpointReference' is an opaque reference to an 'endpoint', and can be any type.\n * This abstract class must treat it as such; the endpointReference is interpreted by the EndpointProvider.\n *\n * endpointProvider is used internally, and is a path to a an object with a getEndpoint() method.\n *\n * @private\n * @param endpointReference {any}\n * @param endpointProvider {string} requirejs module to use for getting the endpoint implementation\n * @param container {Container|undefined}\n *\n */\n constructor(endpointReference, endpointProvider, container) {\n this.log = logger;\n\n this.endpointReference = (typeof endpointReference === 'string')\n ? new EndpointReference(endpointReference, container) : endpointReference;\n this.id = `${Utils.generateUniqueId()}`;\n this.initConf = {};\n this.params = {};\n this.bdy = null;\n this.transformRequestFuncMap = {};\n this.transformResponseFuncMap = {};\n this.transformRequestOptionsMap = {};\n this.initRequestMap = null;\n this.defaultRequestContentType = null;\n this.handler = null;\n this.url = null;\n this.retryCount = 0;\n\n this.endpointProvider = endpointProvider; // requirejs path to the endpoint provider.\n }\n\n /**\n * a default implementation\n * @returns {string}\n */\n getName() {\n return JSON.stringify(this.endpointReference);\n }\n\n\n /**\n * Stringify JSON body\n * @param body\n * @returns {*}\n * @private\n */\n stringifyBody(body) {\n if (Array.isArray(body) || (Utils.isObject(body) && Utils.isPrototypeOfObject(body))) {\n this.defaultRequestContentType = 'application/json';\n return JSON.stringify(body);\n }\n return body;\n }\n\n\n /**\n * do any last-minute header processing, just before we create the Request object\n * @param configHeaders\n * @returns {Headers}\n */\n static processFinalHeaders(configHeaders) {\n // if content-type is exactly \"multipart/form-data\" and the body is FormData, remove the header\n // so the browser sets the header with boundary markers correctly\n // use the Headers object for case-insensitivity of the name\n const headers = new Headers(configHeaders || {});\n const contentType = headers.get(Constants.Headers.CONTENT_TYPE);\n if (contentType === Constants.ContentTypes.MULTIPART) {\n headers.delete(Constants.Headers.CONTENT_TYPE);\n }\n\n return headers;\n }\n\n /**\n * Return the body of the response based on the content type.\n *\n * @private\n * @param response\n * @param bodyFormat optional, see @AbstractRestHelper.responseBodyFormat\n * @returns {Promise|*} Body data\n * @private\n */\n static getBody(response, bodyFormat) {\n if (!response) {\n return Promise.resolve(null);\n }\n\n const contentType = response.headers.get(Constants.Headers.CONTENT_TYPE);\n\n // an override for the content-type\n let conversionPromise;\n switch (bodyFormat) {\n case 'json':\n conversionPromise = response.json();\n break;\n case 'arrayBuffer':\n conversionPromise = response.arrayBuffer();\n break;\n case 'blob':\n conversionPromise = response.blob();\n break;\n case 'text':\n conversionPromise = response.text();\n break;\n case 'base64':\n // eslint-disable-next-line no-underscore-dangle\n conversionPromise = AbstractRestHelper._getBase64(response, 'readAsDataURL')\n .then((url) => url.split(',')[1]);\n break;\n case 'base64Url':\n // eslint-disable-next-line no-underscore-dangle\n conversionPromise = AbstractRestHelper._getBase64(response, 'readAsDataURL');\n break;\n case 'formData':\n conversionPromise = response.formData();\n break;\n default:\n // continue, look for content-type\n }\n\n if (conversionPromise) {\n return conversionPromise\n // eslint-disable-next-line max-len\n .catch((error) => Promise.reject(new Error(`An error occurred while using '${bodyFormat}' to convert the response (${contentType}):\\n${error.message || error}`)));\n }\n\n // if it is missing, assume text?\n if (!contentType) {\n return response.text();\n }\n\n // this is a slight hack since ADFm uses odd application/json type content types - we should\n // probably rationalize this by having some default registry somewhere (possibly constants)\n if (contentType.indexOf('json') > 0) {\n // if the response indicates an error, guard against bad (FA/RAMP) services that\n // have a 'json' content-type, but actually contain a text error (BUFP-21185).\n // Return the error from the response, unaltered (only cloning on !ok for performance)\n const clone = response.ok ? null : response.clone();\n\n return response.json().catch((e) => {\n const errMsg = clone\n // eslint-disable-next-line max-len\n ? `The response specifies content type ${contentType}, but unable to parse response as JSON. Reading response as text`\n : `Unable to parse response as JSON, content type ${contentType}`;\n const errMsgWithErr = `${errMsg} : ${e}`;\n\n logger.error(errMsg, e);\n return clone\n ? clone.text().then((text) => text || errMsgWithErr)\n : errMsgWithErr; // return the body text, if there is any\n }).catch((e) => {\n logger.error('error getting response as text', e);\n return `unable to get response as text: ${e}`;\n });\n }\n\n // simple check for 'image' types, return a Blob\n if (contentType === 'application/octet-stream' || contentType.startsWith('image/')) {\n return response.blob();\n }\n\n // TODO support additional content types\n return response.text();\n }\n\n /**\n * read the body as a Blob, and then use FileReader to convert the results\n * @param body from the fetch\n * @param methodName FileReader method to use, uses readAsArrayBuffer if no function by the specified name\n * @private\n * @return {Promise}\n */\n static _getBase64(body, methodName) {\n return body.blob().then((blob) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n // reject\n reader.onerror = reject;\n reader.onabort = reject;\n // resolve\n reader.onload = () => {\n resolve(reader.result);\n };\n if (typeof reader[methodName] === 'function') {\n reader[methodName](blob);\n } else {\n reader.readAsArrayBuffer(blob);\n }\n }));\n }\n\n /**\n * Gets the fetch configuration passed to transforms functions via the configuration parameter. Custom Rest\n * helpers may override this method to provide additional contextual information regarding the fetch call.\n * Otherwise this method is a noop.\n * Transforms functions can lookup fetch configuration under configuration.fetchConfiguration, where\n * configuration is the first parameter passed to the transform function.\n *\n * This is used internally; not a public API\n *\n * @package\n */\n // eslint-disable-next-line class-methods-use-this\n getFetchConfiguration() {\n return this.fetchConfiguration;\n }\n\n /**\n * fetch configuration that this Rest helper instance pertains to. Usually this object has the following\n * information:\n * - context: state of the SDP at the time fetch call was made\n * - externalContext: state of the external object, like a RestAction at the time the fetch call was made. This\n * may not be present or have meaningful information for implicit fetches made by the SDP\n * - fetchParameters: parameters passed into the fetch call by external callers, such as a component.\n * - capability: fetch capability being used. Example fetchFirst / fetchByKeys etc.\n *\n * This is used internally; not a public API\n *\n * @package\n */\n setFetchConfiguration(config) {\n this.fetchConfiguration = config;\n }\n\n /**\n * depending on capabilities not all transforms need to be run\n * @param configuration\n * @returns {string[]}\n */\n // eslint-disable-next-line no-unused-vars\n getRequestTransformsToRun(configuration) {\n const transformFuncKeys = Object.keys(this.transformRequestFuncMap);\n // call body last and exclude 'fetchByKeys' as these are not used by RestAction / RestHelper\n return transformFuncKeys\n .filter(TransformsUtils.excludeFetchByKeys)\n .sort(TransformsUtils.bodyTransformLast);\n }\n\n /**\n * Executes the request transformation functions in order.\n * @param {Object} transformsContext a context object that is passed to every transform\n * function to store/retrieve any contextual information for the current request lifecycle.\n *\n * @returns {*}\n * @private\n */\n _executeRequestTransformations(transformsContext) {\n let customTransformChangedUrl = false;\n\n let configuration = {\n url: this.url,\n readOnlyParameters: this.parameters, // todo: parameters is a method, this doesn't look right,\n endpointDefinition: this.endpointMetadata,\n initConfig: {},\n fetchConfiguration: this.getFetchConfiguration(),\n };\n Object.assign(configuration.initConfig, this.initRequestMap);\n\n // if there is a body set and it's a string and its Content-type is application/json then\n // JSON.parse it before passing to transforms\n const regexp = APP_JSON_CONTENT_TYPE_REGEX;\n if (regexp.test(this.defaultRequestContentType)) {\n const configBody = configuration.initConfig.body;\n let jsonBody;\n if (configBody) {\n try {\n jsonBody = typeof configBody === 'string' ? JSON.parse(configBody) : configBody;\n } catch (e) {\n this.log.error('AbstractRestHelper', this.id, 'error parsing JSON body', configBody,\n 'with content-type', this.defaultRequestContentType);\n }\n }\n\n configuration.initConfig.body = jsonBody || configBody;\n }\n\n if (this.transformRequestFuncMap) {\n const transformFuncKeys = this.getRequestTransformsToRun(configuration);\n transformFuncKeys.forEach((functionName) => {\n const func = this.transformRequestFuncMap[functionName];\n const options = this.transformRequestOptionsMap[functionName];\n if (func) {\n const urlBefore = configuration.url;\n\n configuration = func.call(null, configuration, options, transformsContext);\n\n // BUFP-30950 check if a non-built-in transform changed the URL, and if so, encode query params\n customTransformChangedUrl = customTransformChangedUrl\n || ((urlBefore !== configuration.url)\n && !AbstractRestHelper.transformDoesQueryEncoding(functionName, func));\n\n if (!configuration || !configuration.url || !configuration.initConfig) {\n throw new Error('Transformation function did not return a configuration.');\n }\n }\n });\n }\n\n // transforms could have changed the body, stringify it before returning\n const { body } = configuration.initConfig;\n if (body) {\n configuration.initConfig.body = this.stringifyBody(body);\n }\n\n if (customTransformChangedUrl) {\n logger.info(`custom transforms have changed the URL, encoding parameters: ${configuration.url}`);\n // we need to decode/encode query params\n configuration.url = UriTemplate.encode(configuration.url, false); // false: skip path encoding\n }\n\n // return the new transformed configuration\n return configuration;\n }\n\n /**\n * Executes the response transformation functions in order.\n *\n * @param response\n * @param body\n * @param transformsContext a context object that is provided to every transform functions to\n * store/retrieve any contextual information for the current request lifecycle.\n * @returns {{}}\n * @private\n */\n _executeResponseTransformations(response, body, transformsContext) {\n const configuration = {\n headers: response.headers,\n body,\n fetchConfiguration: this.getFetchConfiguration(),\n };\n\n const transformResults = {};\n\n if (this.transformResponseFuncMap) {\n const transformFuncKeys = Object.keys(this.transformResponseFuncMap);\n // call body at the very end\n transformFuncKeys.sort((a) => (a === REQUEST_TRANSFORMS_TYPE_BODY ? 1 : 0));\n transformFuncKeys.forEach((functionName) => {\n const func = this.transformResponseFuncMap[functionName];\n if (func) {\n const results = func.call(null, configuration, transformsContext);\n transformResults[functionName] = results;\n }\n });\n }\n\n return transformResults;\n }\n\n\n /**\n * returns a Promise that resolves to an object that implements getEndpoint(id).\n * Called internally, only once, to get the endpoint.\n * @returns {Promise<{ getEndpoint: {function} }>}\n * @package\n * @override\n */\n // eslint-disable-next-line class-methods-use-this\n _getEndpointProvider() {\n return Utils.getResource(this.endpointProvider);\n }\n\n\n /**\n * wrapper for ServicesManager.getEndpoint, set internal Promise\n * @returns {Promise|*}\n * @private\n */\n _getEndpoint() {\n if (!this._endpointPromise) {\n this._endpointPromise = this._getEndpointProvider()\n .then((provider) => provider.getEndpoint(this.endpointReference));\n }\n return this._endpointPromise;\n }\n\n /**\n * Called right before a fetch request is made, creates the initRequestMap, that is a clone\n * with headers, body, url. Also sets up\n * the transform functions, if they haven't been created yet.\n *\n * @private\n * @returns {Promise} resolved with this.initRequestMap\n */\n _initFetchRequestMapAndUrl() {\n let endpoint;\n if (!this.initRequestMap) {\n return this._getEndpoint()\n .then((ep) => {\n endpoint = ep;\n\n if (!endpoint) {\n throw Error(`unable to find endpoint '${JSON.stringify(this.endpointReference)}'`\n + 'attempted REST call failed');\n }\n\n // getting these early...\n this.requestTransformationFunctions(Object.assign({},\n endpoint.getRequestTransforms(), this.transformRequestFuncMap));\n this.responseTransformationFunctions(Object.assign({},\n endpoint.getResponseTransforms(), this.transformResponseFuncMap));\n\n return endpoint.getConfig(this.params);\n })\n .then((config) => {\n const headers = Object.assign({}, config.headers);\n\n // copy over custom headers from the endpoint configuration\n const defaults = {\n method: config.method,\n body: this.bdy,\n credentials: 'same-origin',\n headers,\n };\n\n const contentType = this._getRequestContentType(config, defaults.body);\n\n // make sure headers are a copy\n // clone request configuration\n this.initRequestMap = Object.assign({}, defaults, this.initConf);\n if (contentType) {\n // set only if we don't have one already; let Headers handle case-insensitivity\n if (!new Headers(headers).get(Constants.Headers.CONTENT_TYPE)) {\n headers[Constants.Headers.CONTENT_TYPE] = contentType;\n }\n }\n\n // TODO for everything that we want to merge, we will need to handle that specifically\n this.initRequestMap.headers = Object.assign({}, headers, this.initConf.headers || {});\n\n // Object.assign(this.initRequestMap.headers, defaults.headers, this.initConf.headers);\n\n // todo: should this be the encoded one?\n this.url = config.url;\n this.endpointMetadata = endpoint.getMetadata();\n\n return this.initRequestMap; // eslint consistent-return\n });\n }\n\n return Promise.resolve(this.initRequestMap);\n }\n\n /**\n * do some simple checks to try to figure out what content-type to use,\n * and honor the \"consumes\" from the OpenAPI 2.0, or the request bodies \"content\" types (3.0)\n *\n * if we have a body, and there is a \"requestContentTypes\" type array for the endpoint\n * - if the existing defaultRequestType is application*json\n * --- look for a requestContentTypes[x] that is also application*json, and use that\n *\n * - if we do not have an existing defaultContentType\n * --- just take the first \"requestContentTypes\", assuming the body matches the requestContentTypes[0]\n * (if the body was JSON, we should have set the defaultContentType)\n *\n * @param endpointConfig\n * @param body\n * @returns {string|null}\n * @private\n */\n _getRequestContentType(endpointConfig, body) {\n let contentType = this.defaultRequestContentType;\n // if we have a body, and the endpoint has a 'requestContentTypes' in the swagger,\n // (possibly) override the context-type\n if (this.bdy && endpointConfig.requestContentTypes && endpointConfig.requestContentTypes.length > 0) {\n if (contentType) {\n // if we already have a JSON type...\n const regexp = APP_JSON_CONTENT_TYPE_REGEX;\n if (regexp.test(this.defaultRequestContentType)) {\n endpointConfig.requestContentTypes.some((mediaType) => {\n const isJson = regexp.test(mediaType);\n if (isJson) {\n contentType = mediaType;\n }\n return isJson;\n });\n } else { // we have a default type, but its not a application*json type\n // use the first consume, since their content type could accept json but not have anything\n // to do with json in the name – and we have no choice.\n // note: at the time this method was created, this case would not happen; we only\n // ever have application/json as the default.\n contentType = endpointConfig.requestContentTypes[0];\n }\n } else if (body instanceof FormData\n && endpointConfig.requestContentTypes.indexOf(Constants.ContentTypes.MULTIPART) >= 0) {\n // we don't have a default media type, but we have a body of FormData\n contentType = Constants.ContentTypes.MULTIPART;\n } else {\n // if the body was JSON, the default media type should already have been set,\n // so assume that the body matches the first requestContentTypes, for now.\n // todo: just take the first one? what if there is more than one?\n contentType = endpointConfig.requestContentTypes[0];\n }\n }\n\n return contentType;\n }\n\n /**\n * checks if the transform is a rampTransform function\n * @param name\n * @param fn\n * @returns {boolean}\n */\n static transformDoesQueryEncoding(name, fn) {\n return fn && fn.doesQueryEncoding;\n }\n }\n\n return AbstractRestHelper;\n});\n\n","'use strict';\n\ndefine('vb/helpers/rest',[\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/log',\n 'vbc/private/logConfig',\n 'vb/private/services/uriTemplate',\n 'vb/private/monitoring/fetchRequestMonitorOptions',\n 'vb/private/monitoring/fetchResponseMonitorOptions',\n 'vbc/private/trace/tracer',\n 'vb/private/helpers/abstractRestHelper',\n 'urijs/URI',\n], (Constants, Utils, Log, LogConfig, UriTemplate,\n FetchRequestMonitorOptions, FetchResponseMonitorOptions,\n Tracer, AbstractRestHelper, URI) => {\n const logger = Log.getLogger('/vb/private/helpers/Rest', [\n // Register custom loggers\n {\n name: 'startRest',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.restHelperStart,\n },\n {\n name: 'endRest',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.restHelperEnd,\n },\n ]);\n\n\n // BUFP-25534, don't log the Request object, it goofed up Safari requests\n const canLogRequestObject = !Utils.isSafari();\n\n /**\n * Helper to make a REST call. This class is loosely based on the fetch API\n * proposal (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).\n *\n * The private methods are in AbstractRestHelper; this class represents the public API of the helper.\n *\n * @see {AbstractRestHelper}\n */\n class Rest extends AbstractRestHelper {\n /**\n * Creates a new reusable Rest instance.\n *\n * The second argument is typically the container in which this method is invoked, like a page, flow, or\n * application. More precisely, if specified, the object should have a string property extensionId\n * indicating the \"scope\" in which this method is being invoked. The \"scope\" can be the base application\n * (extensionId equals to 'base') or an extension. If not specified, 'base' is used as default.\n *\n * @param {string} endpointId - the identifier for the endpoint, like 'service1/fetch' or\n * 'myExtension:service2/create'\n * @param {string} [extensionId] - an optional string to identify the container in which this method is invoked.\n * @returns {Rest}\n * @throws {TypeError} if 'endpointId' is not a string\n */\n static get(endpointId, { extensionId } = {}) {\n if (typeof endpointId !== 'string') {\n throw new TypeError(`Invalid endpointId for Rest.get(): ${endpointId}`);\n }\n // base class constructor will create an EndpointReference from this\n return new Rest(endpointId, 'vb/private/services/servicesManager', { extensionId });\n }\n\n /**\n * Registers a hook handler to handle predefined hooks while making the fetch call.\n * See the RestHookHandler class for more information.\n *\n * @param restHookHandler The RestHookHandler implementation\n * @returns {AbstractRestHelper}\n */\n hookHandler(restHookHandler) {\n this.handler = restHookHandler;\n return this;\n }\n\n /**\n * Additional configuration to configure the request. This should be a map and is\n * described as 'init' here:\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * This will directly override any defaults from the system (for example headers that could\n * be automatically setup or a body that was set via the body() method could be overridden).\n * To set a body it's preferred the body() method be used.\n *\n * @param initConf\n * @returns {AbstractRestHelper}\n */\n initConfiguration(initConf) {\n this.initConf = initConf;\n return this;\n }\n\n /**\n * Sets query or path parameters that are configured on the URL.\n *\n * // TODO support multiple parameters of the same type - or just add another API\n * // TODO since that is an odd case and we want to have a nice API for parameters\n *\n * @param parameterMap Map of key to value of parameters\n * @returns {AbstractRestHelper}\n */\n parameters(parameterMap) {\n this.params = parameterMap;\n return this;\n }\n\n /**\n * Sets the transformsContext object that is passed into all transforms functions.\n *\n * @param {Object} transformsContext Map of key to value of parameters\n * @returns {AbstractRestHelper}\n */\n transformsContext(transformsContext) {\n this.transformsCtx = transformsContext;\n return this;\n }\n\n /**\n * Allows a transformation function to be applied before the request has been\n * made. The input should be in the form of a map, where the keys are the names of the\n * transformation functions and the value is the transformation function itself.\n *\n * The first input to the function will be the following:\n *\n * \n * {\n * url: full url of the request\n * readOnlyParameters: path and query parameters (not writable)\n * initConfig: Map of other configuration passed into the request (see below)\n * }\n * \n *\n * The 'initConfig' exactly matches the 'init' parameter of the request, as described here:\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * A transformation function must return the exact same object back or else an error will\n * occur. The object can have different values. For example a transformation function\n * can replace the URL value, but must still return the entire object.\n *\n * This newly formed configuration will then be passed to future transformation functions,\n * with the final result being used for the data fetch directly.\n *\n * A request transformation function can be passed additional information via the\n * 'requestTransformationOptions' method. Here, the options keyed by the same name of the\n * functions will be passed into the transformation function as a map. Thus, the pattern\n * of the function is:\n *\n * \n * function (configuration, options) { return configuration }\n * \n *\n * Note that in most cases transformation functions can be defined in the service, for this\n * reason the options for those functions can be passed in via 'requestTransformationOptions'.\n *\n * @param transformFunctionMap\n * @returns {AbstractRestHelper}\n */\n requestTransformationFunctions(transformFunctionMap) {\n if (transformFunctionMap) {\n this.transformRequestFuncMap = transformFunctionMap;\n }\n return this;\n }\n\n /**\n * Options for a request transformation function. If more information needs to be passed into\n * a request transformation function, a map can be provided where the key is the same name of\n * the transformation function and the value is a map. This map will then be passed into the\n * corresponding function when it is called.\n *\n * @param transformOptionMap\n */\n requestTransformationOptions(transformOptionMap) {\n if (transformOptionMap) {\n this.transformRequestOptionsMap = transformOptionMap;\n }\n return this;\n }\n\n /**\n * Allows a transformation function to be applied after the request has been\n * made. The input should be in the form of a map, where the keys are the names of the\n * transformation functions and the value is the transformation function itself.\n *\n * The first input to the function will be the following:\n *\n * \n * {\n * response: The response object\n * body: The body that corresponds to the requested content type\n * }\n * \n *\n * The 'response' exactly matches the the response object as described here:\n * https://developer.mozilla.org/en-US/docs/Web/API/Response\n *\n * A transformation can return data that is then returned as part of the 'fetch' result,\n * contained within the 'transformationResults' property.\n *\n * Note that in most cases transformation functions can be defined in the service, for this\n * reason the options for those functions can be passed in via 'requestTransformationOptions'.\n *\n * @param transformFunctionMap\n * @returns {AbstractRestHelper}\n */\n responseTransformationFunctions(transformFunctionMap) {\n if (transformFunctionMap) {\n this.transformResponseFuncMap = transformFunctionMap;\n }\n return this;\n }\n\n /**\n * Sets the body on the request. This can either be a string, a JSON object, or any body object\n * as described here:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Body\n *\n * @param body The body of the request\n * @returns {AbstractRestHelper}\n */\n body(body) {\n if (body) {\n this.bdy = this.stringifyBody(body);\n }\n return this;\n }\n\n /**\n * optional control for the Response method called to get the body.\n * one of:\n * arrayBuffer:\n * blob:\n * json:\n * text:\n * base64:\n * base64Url:\n *\n * to do:\n * formData\n * @param format\n * @returns {AbstractRestHelper}\n */\n responseBodyFormat(format) {\n this.resBodyFormat = format;\n return this;\n }\n\n /**\n * Makes the rest call given the configuration set on this object. Returns a response as\n * described here:\n * https://developer.mozilla.org/en-US/docs/Web/API/Response\n *\n * @returns {Promise}\n */\n fetch() {\n let restFetchTime;\n let transformsContext;\n let config;\n let message;\n // Best practice, use promise chain consistently rather than error\n // promise Promise constructor\n return Promise.resolve()\n .then(() => (this.handler && this.handler.handlePreFetchHook(this)) || Promise.resolve())\n .then(() => this._initFetchRequestMapAndUrl())\n .then(() => {\n // at this point run the transformation functions as provided. Fetch transformsContext here because\n // preFetch hook handler could have updated the rest instance state.\n transformsContext = this.transformsCtx || {};\n config = this._executeRequestTransformations(transformsContext);\n\n // build the request\n // the fetch() spec says GET cannot have a body; for now, remove empty 'body' property, because Edge chokes\n const initConfigBody = config.initConfig.body;\n if (config.initConfig && (initConfigBody === null || initConfigBody === undefined)) {\n delete config.initConfig.body;\n }\n\n /**\n * NOTE: AbstractRestHelper (Helper) used to encode the entire URL again, here.\n * Removing that, because it takes encoding control completely away from the transforms, which means\n * ultimately, away from the developer.\n * There is some risk that a custom transform, that relied on our post-encoding, would function\n * differently with this change. They can work around this by using the \"body\" transform\" to encode,\n * if needed.\n *\n * See BUFP-30950 for one justification; path parameters may have already been encoded here,\n * and if we encode/decode here, we could accidentally encode a \"/\" in a path param, so we need to be\n * more 'intelligent' about how to encode, closer to where we know what's in the original params.\n * We still encode the entire URL, but before AbstractRestHelper even gets the URL (done in Endpoint).\n * The transforms themselves can encode the additional params as they see fit.\n *\n * The built-in rampTransforms do their own encoding, so they should be fine.\n *\n */\n const url = config.url;\n\n // process the headers just before creating a Request\n config.initConfig.headers = AbstractRestHelper.processFinalHeaders(config.initConfig.headers);\n\n if (Utils.isSafari() && config.initConfig.body) {\n // dynamically load serviceWorkerManager instead of adding a hard dependency for this workaround\n return Utils.getResource('vbsw/private/serviceWorkerManager')\n // JET-37027: need to preload the local fetch handler here so we can load the OPT's workaround\n // for JET-37027 which overrides browser Request and replaces it with a wrapper\n .then((ServiceWorkerManager) => ServiceWorkerManager.getInstance().getLocalFetchHandler())\n .then(() => new Request(url, config.initConfig));\n }\n\n return new Request(url, config.initConfig);\n })\n // allow the hook to add modify the request\n .then((request) => (this.handler && this.handler.handleRequestHook(request)) || request)\n .then((request) => {\n logger.startRest('Starting native fetch with parameters:', canLogRequestObject ? request : config.url);\n message = `${this.id} ${canLogRequestObject ? request.url : config.url}`;\n const mo = new FetchRequestMonitorOptions('fetch', message, canLogRequestObject ? request : config.url);\n return this.log.monitor(mo, (finish) => {\n restFetchTime = finish;\n\n // BUFP-34920: This is a workaround for the issue with safari not supporting extraction of a request body\n // that can be used to create a proxy request. The body is directly attached to the request as originalBody.\n // A local fetchHandler is used to process the request by using the originalBody to create the proxy\n // request.\n if (Utils.isSafari() && config.initConfig.body) {\n // dynamically load serviceWorkerManager instead of adding a hard dependency for this workaround\n return Utils.getResource('vbsw/private/serviceWorkerManager')\n .then((ServiceWorkerManager) => {\n // We need to instruct the service worker to skip handling this request. Note that we use only\n // the path portion of the url for request matching because the final request could be proxied.\n const uri = new URI(request.url);\n const requestsToSkip = [{ url: uri.path(), method: request.method }];\n\n return ServiceWorkerManager.getInstance().addRequestsToSkip(requestsToSkip)\n .then(() => ServiceWorkerManager.getInstance().getLocalFetchHandler())\n .then((fetchHandler) => {\n // only use the VB workaround if there is no offline handler or OPT's workaround\n // is not available\n // eslint-disable-next-line no-underscore-dangle\n if (!fetchHandler.hasOfflineHandler || !request._browserRequest) {\n request.originalBody = config.initConfig.body;\n }\n\n return fetchHandler.handleRequest(request);\n })\n .finally(() => {\n ServiceWorkerManager.getInstance().removeRequestsToSkip(requestsToSkip);\n });\n });\n }\n\n // Inject trace context, if applicable\n // Note that this just a passthrough if the URL is blacklisted\n return Tracer.inject(request)\n // make the native request\n .then((req) => fetch(req))\n .catch((err) => {\n // May fail if Access-Control-Allowed-Headers isn't set correctly on the server\n // In this case, blacklist the URL and fetch with the original headers\n this.log.warn('injected fetch failed, blacklisting url and reverting to original request', err);\n\n // Don't try to inject again\n Tracer.blacklist(request);\n\n // Fetch the un-injected request\n return fetch(request);\n });\n })\n .then((rsp) => {\n logger.endRest('Ending native fetch with response', rsp,\n restFetchTime(new FetchResponseMonitorOptions('fetch', message, rsp)));\n const response = rsp;\n // allow the hook to modify the response\n return (this.handler && this.handler.handleResponseHook(response)) || response;\n });\n })\n .then((rsp) => {\n const response = rsp;\n // if the response is OK, use the passed-in responseBodyFormat.\n // otherwise, just get whatever format it returned (and ignore errors)\n const bodyPromise = (response && response.ok)\n ? AbstractRestHelper.getBody(response, this.resBodyFormat) // OK\n : AbstractRestHelper.getBody(response).catch(() => null); // some error\n\n // get the body for all stati; server can return a body with any response.\n return bodyPromise.then((body) => {\n // the finalResult - note that if the request fails, we will still resolve with the response\n // as per the fetch contract\n const result = {\n response,\n // capture the body in the return\n body,\n };\n\n // if the request is in the 200 range...\n if (response && response.ok) {\n // first run the transformation response functions\n const tr = this._executeResponseTransformations(response, body, transformsContext);\n result.transformResults = tr;\n if (tr.body) {\n result.body = tr.body;\n }\n\n // allow the hook to respond to after the fetch and transformation functions have run\n if (this.handler) {\n // set the transformsContext just so the hook handler can stash it somewhere\n const postFetchHookResult = Object.assign({}, result);\n postFetchHookResult.transformResults = postFetchHookResult.transformResults || {};\n postFetchHookResult.transformResults.transformsContext = transformsContext;\n // guard against hook handler implementations that don't return a Promise\n return Promise.resolve()\n .then(() => this.handler.handlePostFetchHook(postFetchHookResult)).then(() => postFetchHookResult);\n }\n } else if (this.handler) {\n // allow the hook to respond to error after the fetch; also guard against hook\n // handler implementations that don't return a Promise\n const postFetchErrorHookResult = Object.assign({}, result);\n return Promise.resolve()\n .then(() => this.handler.handlePostFetchErrorHook(result)).then(() => postFetchErrorHookResult);\n }\n return result;\n });\n });\n }\n\n /**\n * returns the endpoints full URL, with path/query parameters applied\n * url is not encoded\n * will resolve with empty string if no endpoint found\n *\n * example:\n * AbstractRestHelper.get('svc/endpoint').parameters({foo:'fooby'}).toUrl().then((url) => ...);\n *\n * @returns {Promise}\n *\n */\n toUrl() {\n return this._getEndpoint()\n .then((endpoint) => (endpoint ? endpoint.getConfig(this.params, { ignoreMissingParams: true }) : null))\n .then((config) => (config ? config.url : ''))\n .catch((e) => {\n this.log.error('AbstractRestHelper', this.id, 'error fetching full URL for endpoint',\n JSON.stringify(this.endpointReference), e);\n return '';\n });\n }\n\n /**\n * returns the endpoints relative URL, with path/query parameters applied.\n * this URL does not contain the services 'baseUri'\n * url is not encoded\n * will resolve with empty string if no endpoint found\n *\n * example:\n * AbstractRestHelper.get('svc/endpoint').parameters({foo:'fooby'}).toRelativeUrl().then((url) => ...);\n *\n * @returns {Promise}\n */\n toRelativeUrl() {\n let endpoint;\n return this._getEndpoint()\n .then((ep) => {\n endpoint = ep;\n return endpoint ? endpoint.getConfig(this.params, { ignoreMissingParams: true }) : null;\n })\n .then((config) => {\n if (config) {\n const metadata = endpoint.getMetadata();\n return config.url.substring(metadata.baseUri.length);\n }\n return '';\n })\n .catch((e) => {\n this.log.error('AbstractRestHelper', this.id, 'error fetching relative URL for endpoint',\n JSON.stringify(this.endpointReference), e);\n return '';\n });\n }\n }\n\n return Rest;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/restAction',[\n 'vb/private/constants',\n 'vb/action/action',\n 'vb/private/utils',\n 'vb/helpers/rest',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/action/assignmentHelper',\n 'vb/private/log',\n],\n(Constants, Action, Utils, Rest, StateUtils, AssignmentHelper, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/restAction');\n const DEFAULT_FILE_PART_NAME = 'file';\n\n /**\n * local utility function, to check if the body is an object with a File property\n * @param body\n * @returns {boolean}\n */\n function hasBlob(body) {\n if (body) {\n // eslint-disable-next-line no-prototype-builtins\n return Object.keys(body).some((prop) => Blob.prototype.isPrototypeOf(body[prop]));\n }\n return false;\n }\n\n\n /**\n *\n */\n class RestAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n *\n * @param parameters\n * @returns {Promise} Outcome {name:\"success\"}, or {name:\"failure\"} for error codes,\n * or simply rejects the Promise.\n *\n * @param parameters\n */\n perform(parameters) {\n let resolvedType;\n\n // deal with the body, as it's dependent on the contentType (or fallback to requestType)\n return RestAction.createBody(parameters.contentType, parameters.requestType, parameters.body,\n parameters.filePath, parameters.fileContentType, parameters.filePartName)\n .then((body) => {\n const endpointName = parameters.endpoint;\n const hookHandler = parameters.hookHandler;\n const responseType = parameters.responseType;\n const responseFields = RestAction.getResponseFields(parameters);\n\n // if the 'responseFields' IS assigned with a valid value\n // - responseType should be ignored; it should NOT coerce the result value, or build the \"?field=\" query.\n //\n // if the 'responseFields' IS assigned but undefined/null/empty\n // - if 'responseType' is NOT assigned, we should NOT do a fetch, and just return 'failure' result.\n // - if 'responseType' IS assigned, treat this as if 'responseFields' is not assigned, meaning,\n // do a normal fetch, using 'responseType' for both the 'fields=' query, and response shaping.\n //\n // if 'responseFields' is not assigned, do a normal fetch;\n // use 'responseType' for both the 'fields=' query, and response shaping.\n\n const responseTypeIsAssigned = Object.prototype.hasOwnProperty.call(parameters, 'responseType');\n const responseFieldsIsAssigned = Object.prototype.hasOwnProperty.call(parameters, 'responseFields');\n\n if (!responseTypeIsAssigned && responseFieldsIsAssigned && (!responseFields || !responseFields.length)) {\n return RestAction\n .createFailureOutcome(`RestAction: responseFields is assigned an invalid value: ${responseFields}`);\n }\n\n resolvedType = responseFieldsIsAssigned ? undefined : this.getResolvedType(responseType);\n\n const requestTransformOptions = RestAction.getRequestTransformOptions(parameters.requestTransformOptions,\n resolvedType, responseFields);\n\n // when a custom hookHandler is provided by caller, it can also provide the RestHelper to use. Use that\n // if available, if not revert to using the default RestHelper\n const container = this.context && this.context.container; // used when 'endpoint' does not use a namespace\n const restHelper = hookHandler && typeof hookHandler.getRestHelper === 'function'\n ? hookHandler.getRestHelper(endpointName) : Rest.get(endpointName, container);\n\n const call = restHelper\n .parameters(parameters.uriParams)\n .requestTransformationFunctions(parameters.requestTransformFunctions)\n .requestTransformationOptions(requestTransformOptions)\n .responseTransformationFunctions(parameters.responseTransformFunctions)\n .responseBodyFormat(parameters.responseBodyFormat);\n\n // register the hook handler if any\n if (hookHandler) {\n call.hookHandler(hookHandler);\n }\n\n // headers need to be added only if they exist\n const initConfiguration = {};\n const headers = RestAction.configureHeaders(parameters.headers, parameters.contentType);\n if (headers) {\n initConfiguration.headers = headers;\n }\n\n // signal used for aborting the request\n if (parameters.signal) {\n initConfiguration.signal = parameters.signal;\n }\n\n call.body(body);\n return call.initConfiguration(initConfiguration).fetch();\n })\n .then((result) => {\n // TODO handle non JSON response types\n let responseBody = result.body;\n\n // if we have a responseType, coerce the response body to that type\n if (result.response.ok && resolvedType) {\n // pick attributes from the return value into an object that matches the type\n const beforeCoercion = responseBody;\n responseBody = AssignmentHelper.coerceType(beforeCoercion, resolvedType);\n this.log.finer('Action', this.logLabel, 'response', beforeCoercion, 'was coerced to', responseBody);\n }\n\n const actionResult = {\n status: result.response.status,\n headers: result.response.headers,\n body: responseBody,\n };\n\n if (result.response.ok) {\n // same as Action, but adds a little extra\n return RestAction.createSuccessOutcome(actionResult);\n }\n\n return RestAction\n .createFailureOutcome('Error response during RestAction', result.error || null, actionResult);\n })\n .catch(err => RestAction.createFailureOutcome('Exception during RestAction', err, null));\n }\n\n /**\n * if responseFields is an array of arrays, flatten it;\n * this is a convenience for multiple forms, to allow an array of form render fields\n * @param parameters\n * @returns {Array}\n */\n static getResponseFields(parameters) {\n // response fields may be either\n // - a ComponentFieldsAttributes\n // - an Array of ComponentFieldsAttributes (to allow multiple forms)\n // the multiple-forms case\n\n const responseFields = (parameters.responseFields || []);\n\n // this was a convenience for the multiple-form case; revisit this\n // const onlyArrays = (parameters.responseFields || []).filter(a => a && Array.isArray(a));\n // if (onlyArrays.length && Array.isArray(onlyArrays[0])) {\n // // flatten the arrays into one array\n // responseFields = responseFields.reduce((flatten, arr) => [...flatten, ...arr]);\n // }\n return responseFields;\n }\n\n /**\n * if the responseType refers to a Type, find it. Otherwise, the responseType itself is the type definition.\n * @param responseType\n */\n getResolvedType(responseType) {\n return responseType ?\n StateUtils.getType(`${this.id}:response`, { type: responseType },\n this.context.container.scopeResolver) : undefined;\n }\n\n /**\n * need to pass information to the 'select' transform\n * @param options\n * @param resolvedResponseType\n * @param responseFields\n * @returns {*}\n */\n static getRequestTransformOptions(options, resolvedResponseType, responseFields) {\n // if the caller supplied a options.select.type, use it, and ignore everything else.\n if (options && options.select && options.select.type) {\n return options;\n }\n\n // if responseType and/or additionalFields are set, we will set the options.select.type as a merge of the two\n const requestTransformOptions = options || {};\n if (resolvedResponseType || responseFields) {\n requestTransformOptions.select = requestTransformOptions.select || {};\n requestTransformOptions.select.type = requestTransformOptions.select.type || resolvedResponseType || {};\n requestTransformOptions.select.attributes = requestTransformOptions.select.attributes || responseFields;\n }\n return requestTransformOptions;\n }\n\n /**\n * depending on the 'type', we may process the body to shape it to match the type.\n *\n * possible 'contentType' values: any (mime) type\n *\n * when 'multipart/form-data': - if there is a 'body', uses the properties as the parts. If 'filePath',\n * also adds that. and uses fileContentType (if provided), or tries it get the mime type from the file extension.\n *\n * contentType is used as the actual contentType header, unless one has not been set in the header parameters.\n *\n * if contentType is NOT set, but both the body is an object, and the filePath is set,\n * assume multipart/form-data (and ignore the deprecated 'requestType').\n *\n * If the body is a Blob/File object:\n * - if filePath is NOT set, just use the body as is, and do not set an explicit contentType;\n * use the one passed in, if any.\n * - if the filePath IS set, default the contentType to mutlipart/form-data, and put each in a \"filename\" part.\n * - if the contentType is set to something other than multipart/form-data, and the filePath is set,\n * IGNORE the body, and just use the filePath (and log a warning).\n *\n * If contentType is not set (and we're not inferring multipart/form-data from the use of 'filePath'),\n * look for the (deprecated) 'requestType'.\n * Possible 'requestType' values are:\n * 'json' - * deprecated * - leave body as-is\n * 'form' - * deprecated * - each property represents a section in a FormData\n * 'url' - * deprecated * 0 each property represents a section in a URLSearchParams\n *\n * note: if we decode we should use any of the deprecated 'requestType', the 'filePath is ignored.\n *\n * note 2: the checks for Blob.prototype.isPrototypeOf(body) appear to work on IE11 for File\n * (which uses the same fetch() polyfill we use on iOS)\n *\n * @param contentType actual mime type\n * @param requestType 'form', 'json', 'url', deprecated, kept for backward-compatibility\n * @param body\n * @param filePath\n * @param fileContentType optional, may be used used when contentType is multipart/form-data and filePath set\n * @returns {Promise}\n */\n static createBody(contentType, requestType, body, filePath, fileContentType, filePartName) {\n return Promise.resolve().then(() => {\n let useBodyAsIs = false;\n\n const partName = filePartName || DEFAULT_FILE_PART_NAME;\n\n if (body && Utils.isObject(body)) {\n // if no 'fileName' and no 'contentType', then use the body as-is\n if (!filePath && !contentType) {\n if (Blob.prototype.isPrototypeOf(body)) { // eslint-disable-line no-prototype-builtins\n useBodyAsIs = true;\n } else {\n // if we were not passed a Blob/File, also default to the deprecated type\n requestType = requestType || 'json'; // eslint-disable-line no-param-reassign\n }\n }\n\n // if the body is non-null, and filepath is used, and contentType isn't set, assume its multipart\n // note: this used to check for Object.keys(body).length\n if (filePath && body) {\n // eslint-disable-next-line no-param-reassign\n contentType = contentType || Constants.ContentTypes.MULTIPART;\n }\n\n // if content-type is 'mutipart/form-data', OR if we don't have a type, BUT we have a Blob/File property\n // create a FormData, UNLESS the body was passed as FormData;\n // if already FormData it should be complete, don't add anything to it; use it as-is. (bufp-31091)\n const createFormDataForType = contentType === Constants.ContentTypes.MULTIPART && !(body instanceof FormData);\n\n if (createFormDataForType || (!contentType && hasBlob(body))) {\n // same as 'form', but also add the file if present\n const data = new FormData();\n\n // note: this does NOT support ArrayBuffer in conjunction with a filePath; create your own body object!\n // eslint-disable-next-line no-prototype-builtins\n if (Blob.prototype.isPrototypeOf(body)) {\n // if we were passed a Blob as the Body, put it in the FormData with the same default name\n data.append(partName, body, body.name);\n } else if (Array.isArray(body)) {\n logger.warn('Rest Action: does not support \\'body\\' as an array for \\'multipart/form-data\\', skipping.');\n } else {\n // otherwise, each property on the body is added, using the property name as the part name\n Object.keys(body || {}).forEach((key) => {\n const val = body[key];\n const name = val.name;\n // this is to workaround an issue with the polyfill, where\n // it automatically sets the file name to 'Blob' when making\n // a POST request with the formData\n // eslint-disable-next-line no-prototype-builtins\n if (Blob.prototype.isPrototypeOf(val) && name) {\n data.append(key, val, name);\n } else {\n data.append(key, val);\n }\n });\n }\n\n if (filePath) {\n // use fileContentType as the file mime type, since contentType === multipart/form-data\n return Utils.readBlob(filePath, fileContentType)\n .then((filedata) => {\n if (filedata) {\n data.append(partName, filedata, RestAction.shortFileName(filePath));\n } else {\n logger.warn(`empty data for file: ${filePath}`);\n }\n return data;\n });\n }\n return data;\n } else\n // the 'old' types are 'json', 'url', 'form'... we should deprecate these in deference to a real type\n // these ignore the filename parameter for the 'old' types\n if (useBodyAsIs || requestType === 'json') {\n // just use the body we were given\n const bodyConverted = RestAction.convertFileIfNeeded(body);\n return Promise.resolve(bodyConverted);\n } else if (requestType === 'form') {\n const data = new FormData();\n\n Object.keys(body).forEach((key) => {\n const val = body[key];\n data.append(key, val);\n });\n\n return Promise.resolve(data);\n } else if (requestType === 'url') {\n const data = new URLSearchParams();\n\n Object.keys(body).forEach((key) => {\n const val = body[key];\n data.append(key, val);\n });\n\n return data;\n }\n }\n\n\n // if 'contentType' isn't one of the ones we looked for, assume its the file mime type if 'filePath' is passed\n // or if its undefined/null, try to get the type from the extension\n if (filePath) {\n if (contentType === Constants.ContentTypes.MULTIPART) {\n const data = new FormData();\n // use fileContentType as the file mime type, since contentType === multipart/form-data\n return Utils.readBlob(filePath, fileContentType)\n .then((filedata) => {\n data.append(partName, filedata, RestAction.shortFileName(filePath));\n return data;\n });\n }\n\n if (body) {\n logger.warn('Rest Action: \\'filePath\\' and \\'body\\' are set, but \\'contentType\\' is not set to',\n 'multipart/form-data, ignoring the \\'body\\' parameter');\n }\n // use contentType as the file mime type\n return Utils.readBlob(filePath, contentType)\n .then(file => RestAction.convertFileIfNeeded(file));\n }\n\n // no contentType, no filePath\n // TODO should we assert that the contentType is string?\n return body;\n });\n }\n\n\n /**\n * for Chrome, we need to convert to a Blob because of some Chrome issue in our service worker\n * that causes File reading to fail.\n *\n * This is only converted when NOT being put into FormData\n * @param file\n * @returns {*}\n */\n static convertFileIfNeeded(value) {\n // eslint-disable-next-line no-prototype-builtins\n if (File.prototype.isPrototypeOf(value) && !Utils.isIos() && !Utils.isAndroid()) {\n return Utils.fileToBlob(value);\n }\n return value;\n }\n\n /**\n *\n * @param headers\n * @param contentType\n */\n static configureHeaders(headers, contentType) {\n let h;\n if (headers) {\n h = headers;\n }\n // assume anything with a slash is a real mime type\n if (contentType && contentType.indexOf('/') > 0) {\n h = h || {};\n // do not override if already set. using Headers object to take care of header casing (same trick in rest.js)\n if (!new Headers(h).get(Constants.Headers.CONTENT_TYPE)) {\n h[Constants.Headers.CONTENT_TYPE] = contentType;\n }\n }\n return h;\n }\n\n static shortFileName(filePath) {\n return (filePath && filePath.substring(filePath.lastIndexOf('/') + 1));\n }\n\n setContext(context) {\n this.context = context;\n }\n\n /**\n * create a 'payload' for the success that matches the standard error 'payload' property,\n * so RestAction has a (somewhat) matching success/failure outcomes.\n * example outcome:\n * {\n * name: \"success\",\n * result: {\n * body: {object},\n * error: '', // empty, not meaningful, just a placeholder\n * message: {\n * summary: '', // empty, not meaningful, just a placeholder\n * },\n * headers: {Headers},\n * status: {number}\n * }\n * }\n * @param result\n * @returns {Object}\n */\n static createSuccessOutcome(result) {\n const newResult = Object.assign({ error: null, message: { summary: '' } }, result);\n return Action.createSuccessOutcome(newResult);\n }\n\n /**\n * utility method to allow all failure handlers to expect a meaningful 'payload' and 'payload.body'.\n *\n * top-level properties match the success outcome; also has a payload, for backward compatibility\n *\n * {\n * name: \"failure\",\n * result: {\n * error: {string},\n * status: {number},\n * body: {object},\n * headers: {object|Headers}\n * message: {\n * summary: {string},\n * },\n * payload: {\n * body: {object},\n * headers: {object|Headers},\n * status: {number}\n * }\n * }\n * }\n\n * @param summary\n * @param error\n * @param payload\n */\n static createFailureOutcome(summary, error, payload) {\n let pay = payload;\n const msg = (error && error.message) || error || summary || '';\n\n if (!pay) {\n // get the message from the JS Error; otherwise, try 'error' or 'summary'\n const body = msg;\n pay = {\n body,\n headers: {}, // @todo: revisit this, should this have a get(), like Headers?\n status: -1, // a non-HTTP status\n };\n } else {\n pay.body = pay.body || msg;\n }\n\n const outcome = Action.createFailureOutcome(summary, error, pay);\n outcome.result = Object.assign({\n status: pay && pay.status,\n headers: pay && pay.headers,\n body: pay && pay.body,\n }, outcome.result || {});\n\n return outcome;\n }\n }\n\n return RestAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/restartApplicationAction',[\n 'vb/action/action',\n 'vb/helpers/navigate',\n 'urijs/URI',\n], (Action, Navigate, URI) => {\n /**\n * Restarts the application. Provide optional path for alternative navigation into the app after restart.\n * If no path provided, the default root page is restarted\n *\n * @param {Object} parameters Parameters passed to the action\n * @param {String} parameters.restartPath the path of the page or flow to go to when login is successful\n *\n *\n * \"parameters\": {\n * \"restartPath\": \"app/customextension\"\n * }\n *\n * In the above example since the restartPath is provided, the application will reload and will take user to\n * 'customextension' page under root 'app' page\n *\n * NOTE: This action is only supported for mobile applications\n */\n class RestartApplicationAction extends Action {\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n // support this only for mobile applications\n if (this.context.application.isQueryStrategy()) {\n const restartPath = parameters.restartPath || '/';\n // Let the router calculate the correct URL from the page path\n const uri = (new URI(window.location.href)).search(Navigate.getUrlFromPath(restartPath))\n Navigate.toUrl({\n url: uri,\n // Use replace mode since we are restarting the app\n history: 'replace',\n });\n\n return Action.createSuccessOutcome(true);\n }\n\n return Action.createOutcome(this.Outcome.FAILURE, false);\n }\n\n setContext(context) {\n this.context = context;\n }\n }\n\n return RestartApplicationAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/returnAction',[\n 'vb/action/action',\n],\n(Action) => {\n /**\n *\n */\n class ReturnAction extends Action {\n perform(parameters) {\n return Action.createOutcome(parameters.outcome, parameters.payload);\n }\n }\n\n return ReturnAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/switchAction',[\n 'vb/action/action',\n],\n(Action) => {\n /**\n * outcome will be the condition as a string, or 'default' if the condition is undefined or null.\n *\n */\n class SwitchAction extends Action {\n /**\n * @param parameters\n * caseValue: expression, the resulting 'case'.\n * possibleValues {Array} optional, an array of possible values for 'caseValue', as strings. If provided,\n * the case will be 'default' if it does not appear in this list.\n * @returns {{name, result}|*}\n */\n perform(parameters) {\n const cases = parameters.possibleValues;\n const cse = parameters.caseValue;\n\n let caseStr = (cse === undefined || cse === null) ? 'default' : `${cse}`;\n\n if (cases && cases.length && cases.indexOf(caseStr) < 0) {\n caseStr = 'default';\n }\n\n return Action.createOutcome(caseStr);\n }\n }\n\n return SwitchAction;\n});\n\n","/* eslint no-underscore-dangle: 0 */\n/* global cordova:false */\n/* global FileError:false */\n\n'use strict';\n\ndefine('vb/private/mobile/fileIo',[], () => {\n class FileIo {\n /**\n * Saving a file within an application library.\n * @param dir directory where to save\n * @param fileName name of the file\n * @param stringContents contents of the file\n */\n static saveFileToLib(dir, fileName, stringContents) {\n return new Promise((resolve, reject) => {\n window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function (rootEntry) {\n rootEntry.getDirectory(dir, { create: true }, function (directoryEntry) {\n directoryEntry.getFile(fileName, { create: true }, function (fileEntry) {\n fileEntry.createWriter(function (writer) {\n const fileWriter = writer;\n\n fileWriter.onwriteend = function (e) { // eslint-disable-line no-unused-vars\n // ignore the error\n resolve();\n };\n\n fileWriter.onerror = reject;\n\n const blob = new Blob([stringContents], { type: 'text/plain' });\n fileWriter.write(blob);\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n });\n }\n\n /**\n * Reading a file from within an application library.\n * @param dir directory to read it from\n * @param fileName name of the file to read\n */\n static readFileFromLib(dir, fileName) {\n return new Promise((resolve, reject) => {\n window.resolveLocalFileSystemURL(`${cordova.file.dataDirectory}${dir}`, function (directoryEntry) {\n directoryEntry.getFile(fileName, {}, function (fileEntry) {\n fileEntry.file(function (file) {\n const fileReader = new FileReader();\n\n fileReader.onloadend = function (e) { // eslint-disable-line no-unused-vars\n // ignore the error\n resolve(this.result);\n };\n\n fileReader.onerror = reject;\n\n fileReader.readAsText(file);\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n });\n }\n\n /**\n * Renames the given file.\n * @param dir parent directory of the file to rename\n * @param originalFileName original file name\n * @param newFileName new file name\n */\n static renameFile(dir, originalFileName, newFileName) {\n return new Promise((resolve, reject) => {\n window.resolveLocalFileSystemURL(dir, function (directoryEntry) {\n directoryEntry.getFile(originalFileName, { create: false }, function (fileEntry) {\n fileEntry.moveTo(directoryEntry, newFileName, function () {\n resolve();\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n }, function (e) {\n reject(FileIo._decodeError(e));\n });\n });\n }\n\n /**\n * Utility function to create a dir inside a specific parent directory\n * @param parentDir {FileSystemDirectoryEntry} parent directory\n * @param dirName {String} name of the subdirectory to create\n * @return {FileSystemDirectoryEntry} newly created directory entry\n */\n static createDir(parentDir, dirName) {\n return new Promise((resolve, reject) => {\n parentDir.getDirectory(dirName, { create: true }, (newDir) => resolve(newDir), (e) => {\n reject(FileIo._decodeError(e));\n });\n });\n }\n\n /**\n * creates a file onto the device data directory\n * @param extDir {FileSystemDirectoryEntry} the extension directory under which to create the file path\n * @param filePath {String} file name with directories to create on the device\n * @param content {Blob|String|Object} content to be written for the given file\n */\n static createFileContentOnDevice(extDir, filePath, content) {\n return new Promise((resolve, reject) => {\n const paths = filePath.split('/');\n // serialize promises to create the subdirectories\n let dirPromise = Promise.resolve(extDir);\n if (paths.length > 1) {\n const subPaths = paths.splice(0, paths.length - 1);\n subPaths.forEach((subPath) => {\n dirPromise = dirPromise.then((dirEntry) => FileIo.createDir(dirEntry, subPath))\n .catch((e) => reject(FileIo._decodeError(e)));\n });\n }\n\n // finally create the file\n dirPromise.then((dirEntry) => dirEntry\n .getFile(paths[paths.length - 1], { create: true, exclusive: false }, (fileEntry) => {\n fileEntry.createWriter((fileWriter) => {\n // eslint-disable-next-line no-param-reassign\n fileWriter.onwriteend = () => resolve(filePath);\n\n if ((typeof content) === 'string' || (content instanceof Blob)) {\n fileWriter.write(content);\n } else {\n // assume json file\n fileWriter.write(JSON.stringify(content));\n }\n }, (e) => {\n reject(FileIo._decodeError(e));\n });\n }))\n .catch((e) => reject(FileIo._decodeError(e)));\n });\n }\n\n /**\n * Decodes errors into user friendly strings.\n */\n static _decodeError(e) {\n let msg = '';\n\n switch (e.code) {\n case FileError.QUOTA_EXCEEDED_ERR:\n msg = 'Storage quota exceeded';\n break;\n case FileError.NOT_FOUND_ERR:\n msg = 'File not found';\n break;\n case FileError.SECURITY_ERR:\n msg = 'Security error';\n break;\n case FileError.INVALID_MODIFICATION_ERR:\n msg = 'Invalid modification';\n break;\n case FileError.INVALID_STATE_ERR:\n msg = 'Invalid state';\n break;\n default:\n msg = 'Unknown error';\n break;\n }\n\n return msg;\n }\n }\n\n return FileIo;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/takePhotoAction',[\n 'knockout',\n 'vb/private/utils',\n 'vb/action/action',\n 'vb/private/log',\n 'vb/private/mobile/fileIo',\n 'ojs/ojhtmlutils',\n 'ojs/ojmenu',\n 'ojs/ojoption',\n],\n(ko, Utils, Action, Log, FileIo, HtmlUtils) => {\n\n const logger = Log.getLogger('/vb/action/builtin/takePhotoAction');\n\n const MEDIA_TYPES = ['image', 'video', 'audio'];\n\n const LOW_RESOLUTION = 0;\n const MEDIUM_RESOLUTION = 50;\n const HIGH_RESOLUTION = 100;\n const LIBRARY = 'PHOTOLIBRARY';\n const ALBUM = 'SAVEDPHOTOALBUM';\n const FRONT = 'FRONT';\n\n const ANDROID_MENU_CONTAINER_ID = 'vbInternalAndroidPhotoOptionsContainer';\n const ANDROID_MENU_ID = 'vbInternalAndroidPhotoOptionsMenu';\n const ANDROID_MENU_OPTION_CAMERA = 'androidCamera';\n const ANDROID_MENU_OPTION_BROWSE = 'androidBrowse';\n const ANDROID_MENU_OPTION_CANCEL = 'androidCancel';\n\n const ANDROID_PHOTO_SOURCE_MENU_HTML = ``;\n\n /**\n * Invokes the cordova-plugin-camera or HtmlMediaCapture API to take pictures and/or choose images from the system's\n * image library. The mediaType parameter controls whether to use cordova-pluin-camera or\n * {@link https://www.w3.org/TR/html-media-capture/ Html Media Cpature}\n *\n * The parameters to this action are as follows:\n * mediaType - Controls the type of media. Valid values are <empty> and "image". For backward\n * compatibility, not setting the media type or setting it to <empty> will use\n * cordova-plugin-camera API.\n * If this value is set to "image" then the MediaCapture APi is used.\n * quality - Quality of the saved image, expressed as a range of 0-100, where 100 is typically full resolution with\n * no loss from file compression. Default is 50. Optional.\n * Ignored if mediaType is not empty.\n * sourceType - Set the source of the picture. Default is CAMERA. Optional.\n * Ignored if mediaType is not empty.\n * targetWidth - Width in pixels to scale image. Must be used with targetHeight.\n * Aspect ratio remains constant. Optional.\n * Ignored if mediaType is not empty.\n * targetHeight - Height in pixels to scale image. Must be used with targetWidth.\n * Aspect ratio remains constant. Optional.\n * Ignored if mediaType is not empty.\n * cameraDirection - Choose the camera to use (front- or back-facing). Default is BACK. Optional.\n * Ignored if mediaType is not empty.\n *\n * Outcome from this action is filePath if mediaType is empty. Otherwise file.\n * filePath - A string giving file URI of the image taken.\n * file - A Blob that contains the "image".\n */\n class TakePhotoAction extends Action {\n constructor(id, label, { registrar }) {\n super(id, label);\n\n // register the cleanup callback\n registrar.setFinallyCallback('TakePhotoAction cleanup', () => {\n TakePhotoAction.cleanupCallback();\n // does nothing but register a cleanup method\n return Promise.resolve();\n });\n }\n\n /**\n * called by actionChain\n * @param availableContexts\n */\n setAvailableContexts(availableContexts) {\n if (Utils.isAndroid()) {\n this.availableContexts = availableContexts;\n\n // setup the menu and bindings\n this.setupAndroidPhotoOptionsMenu();\n }\n }\n\n /**\n * Utility method to setup oj-menu for android photo source options.\n * @private\n */\n setupAndroidPhotoOptionsMenu() {\n if (!document.getElementById(ANDROID_MENU_CONTAINER_ID)) {\n\n // Create menu element from HTML string and append to body\n const nodes = HtmlUtils.stringToNodeArray(ANDROID_PHOTO_SOURCE_MENU_HTML);\n document.body.appendChild(nodes[0]);\n\n ko.applyBindings({\n vbInternalAndroidPhotoOptionsAction: (e) => {\n // Retrieve the reference and resolve the Promise with selected option.\n const resolve = e.target.parentElement.getProperty('resolver');\n resolve(e.target.value);\n },\n getString: (property) => {\n const app = this.availableContexts.$application;\n return app.translations && app.translations.app && app.translations.app.take_photo &&\n app.translations.app.take_photo[property];\n },\n }, document.getElementById(ANDROID_MENU_CONTAINER_ID));\n }\n }\n\n /**\n * returned Promise is resolved with Outcome (success or failure), or rejected with a message.\n *\n * @param parameters\n * @returns {Promise}\n */\n perform(parameters) {\n if ((Utils.isIos() || Utils.isAndroid()) && (!parameters.mediaType)) {\n // if it is empty or not defined, execute legacy cordova code for mobile\n return TakePhotoAction.performLegacy(parameters);\n }\n\n // Use Html media Capture\n // FYI: https://www.w3.org/TR/html-media-capture/\n return TakePhotoAction.performHtmlMediaCapture(parameters);\n }\n\n /**\n * Uses cordova-plugin-camera to take pictures.\n *\n * @private\n * @deprecated This action uses HtmlMediaCapture implementation by default\n * @param parameters\n * @returns {Promise}\n */\n static performLegacy(parameters) {\n const camera = navigator.camera;\n const cameraOptions = {};\n\n if (parameters.quality && parameters.quality >= LOW_RESOLUTION && parameters.quality <= HIGH_RESOLUTION) {\n cameraOptions.quality = parameters.quality;\n } else {\n cameraOptions.quality = MEDIUM_RESOLUTION;\n }\n\n const sourceType = parameters.sourceType && parameters.sourceType.toUpperCase();\n if (sourceType === LIBRARY) {\n cameraOptions.sourceType = camera.PictureSourceType.PHOTOLIBRARY;\n } else if (sourceType === ALBUM) {\n cameraOptions.sourceType = camera.PictureSourceType.SAVEDPHOTOALBUM;\n } else {\n cameraOptions.sourceType = camera.PictureSourceType.CAMERA;\n }\n\n if (parameters.targetWidth && parameters.targetHeight &&\n parameters.targetWidth >= 0 && parameters.targetHeight >= 0) {\n // only set to passed parameters if both targetWidth and targetHeight have been provided\n cameraOptions.targetWidth = parameters.targetWidth;\n cameraOptions.targetHeight = parameters.targetHeight;\n }\n\n cameraOptions.cameraDirection =\n (parameters.cameraDirection && parameters.cameraDirection.toUpperCase() === FRONT) ?\n camera.Direction.FRONT : camera.Direction.BACK;\n\n // for now, don't expose these parameters and set these internally:\n cameraOptions.encodingType = camera.EncodingType.JPEG; // always choose jpg encoding\n cameraOptions.saveToPhotoAlbum = false; // default to false\n cameraOptions.correctOrientation = true; // rotate image to correct for orientation of the device during capture\n\n return new Promise((resolve) => {\n // take the photo\n camera.getPicture(\n // success\n (result) => {\n // get the real path:\n const questionMark = result.lastIndexOf('?');\n let photoPath = result;\n if (questionMark > -1) {\n photoPath = result.substring(0, questionMark);\n }\n\n // some webviews have a problem where the camera APIs always return the same filename,\n // and when applied to img.src, the image will not update because the url is the same.\n // even clearing out the image src prior to applying it again will not work. so here\n // we guarantee that the filename is always unique\n const lastSlash = photoPath.lastIndexOf('/');\n const imageDirectory = photoPath.substring(0, lastSlash);\n const originalFile = photoPath.substring(lastSlash + 1);\n const newFile = `${Utils.generateUniqueId()}.jpg`;\n\n FileIo.renameFile(imageDirectory, originalFile, newFile)\n .then(() => {\n resolve(Action.createSuccessOutcome({ filePath: `${imageDirectory}/${newFile}` }));\n })\n .catch((msg) => {\n resolve(Action.createFailureOutcome('Failed to take photo', new Error(msg)));\n });\n },\n // failure\n (msg) => {\n resolve(Action.createFailureOutcome('Failed to take photo', new Error(msg)));\n },\n cameraOptions);\n });\n }\n\n /**\n * Internal utility method to use cordova-plugin-camera for Android. Executes cordova-camera to take picture and\n * converts it into a Blob to resolve it as file outcome.\n *\n * @private\n * @param accept\n * @param params\n * @returns {Promise}\n */\n static androidUseCameraWithCordovaPlugin(accept, params) {\n return TakePhotoAction.performLegacy(params)\n .then(outcome => Utils.readBlob(outcome.result.filePath)\n .then(fileBlob => Action.createSuccessOutcome({ file: fileBlob })));\n }\n\n /**\n * Android needs special handling because Html file element does not offer Camera.\n * If mediaType is image,\n * This method shows oj-menu with three options Camera, Browse and Cancel.\n * If Camera is selected, cordova-plugin-camera is used to take picture from Camera.\n * If Browse option is selected Html file element is used to select a file.\n *\n * If mediaType is not image, then file selection screen appears directly to chose video files.\n *\n * @private\n * @param accept calculated values based on mediaType parameter. This is set as accept attribute of file element.\n * @param params\n * @returns {*}\n */\n static androidPerform(accept, params) {\n return new Promise((resolve) => {\n if (accept === 'image/*') {\n const menu = document.getElementById(ANDROID_MENU_ID);\n // save reference to resolve method so that this Promise will be resolved after\n // a selection is made from this menu.\n menu.setProperty('resolver', resolve);\n menu.open();\n } else {\n // for non-image, let it go to default file element click.\n resolve(ANDROID_MENU_OPTION_BROWSE);\n }\n }).then((option) => {\n switch (option) {\n case ANDROID_MENU_OPTION_CAMERA:\n return TakePhotoAction.androidUseCameraWithCordovaPlugin(accept, params);\n\n case ANDROID_MENU_OPTION_BROWSE:\n return TakePhotoAction.webPerform(accept);\n\n default:\n return Action.createFailureOutcome('Take Photo Action cancelled');\n }\n });\n }\n\n /**\n * Internal method to do image capture using HtmlMediaCapture. This creates an html input file element and triggers\n * the action by click() method. Once the File comes back from the open dialog, it is wrapped into a Blob and\n * resolved as "file" outcome.\n *\n * @private\n * @param accept - calculated values based on mediaType parameter. This is set as accept attribute of file element.\n * @returns {Promise}\n */\n static webPerform(accept) {\n return new Promise((resolve) => {\n // just invoke input element\n const fileElement = document.createElement('input');\n fileElement.type = 'file';\n fileElement.accept = accept;\n\n // For the file input element, onchange is not triggered if user cancels the file dialog. But the value is set\n // to null. The following onfocus() is a workaround to identify the cancel on file dialog.\n // In document.onfocus check if the file element value is null, if so the dialog was cancelled.\n // But there is some delay on setting the file element value by browsers. This 1000ms delay solves it.\n const bfocus = document.body.onfocus;\n document.body.onfocus = () => {\n setTimeout(() => {\n document.body.onfocus = bfocus; // restore document.body focus handler\n if (!fileElement.value) { // cancel clicked\n resolve(Action.createFailureOutcome('Take Photo Action cancelled'));\n }\n }, 1000);\n };\n\n fileElement.onchange = () => {\n document.body.onfocus = bfocus; // restore document.body focus handler\n // ServiceWorker thread cannot access File of Main thread. It needs to be converted into a Blob.\n const fileBlob = Utils.fileToBlob(fileElement.files[0]);\n resolve(Action.createSuccessOutcome({ file: fileBlob }));\n };\n\n fileElement.click();\n });\n }\n\n /**\n *\n * @private\n * @param params\n * @returns {Promise}\n */\n static performHtmlMediaCapture(params) {\n let mediaType = params.mediaType;\n if (!mediaType) {\n // WebApps or PWA did not have TakePhoto Action.\n // Either a MobileApp is getting executed in PWA mode or WebApp did not set mediaType.\n mediaType = 'image'; // Use default mediaType\n }\n mediaType = mediaType.toLowerCase();\n\n const accept = `${MEDIA_TYPES.includes(mediaType) ? mediaType : 'image'}/*`;\n\n // On Android HtmlMediaCapture does not support camera.\n // An oj-menu is displayed with Camera & Browse options\n if (Utils.isAndroid()) {\n return TakePhotoAction.androidPerform(accept, params);\n }\n\n return TakePhotoAction.webPerform(accept);\n }\n\n /**\n * Removes intermediate image files that are kept in temporary storage after calling camera.getPicture.\n * Applies only when the value of Camera.sourceType equals Camera.PictureSourceType.CAMERA and the\n * Camera.destinationType equals Camera.DestinationType.FILE_URI. Only applicable to iOS.\n *\n * @private\n */\n static cleanupCallback() {\n if (Utils.isIos()) {\n navigator.camera.cleanup(\n function onSuccess() {\n logger.log('Camera cleanup succeeded.');\n },\n function onFail(message) {\n logger.error('Failed to perform camera cleanup: ', message);\n }\n );\n }\n }\n }\n\n return TakePhotoAction;\n});\n\n","'use strict';\n\ndefine('vb/action/builtin/transformChartDataAction',[\n 'vb/private/utils',\n 'vb/action/action',\n 'vb/private/log'],\n (Utils, Action, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/TransformChartDataAction');\n const MAPPING_DEF_3D = {\n group: 'group',\n series: 'series',\n valueX: 'valueX',\n valueY: 'valueY',\n valueZ: 'valueZ',\n };\n\n const MAPPING_DEF_1D = {\n group: 'group',\n series: 'series',\n value: 'value',\n };\n\n /**\n * Transforms a JSON array into another JSON object in a form that chart components can\n * consume. The JSON object has 2 properties series and groups that are both arrays.\n */\n class TransformChartDataAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n * Performs the transformation to chart JSON data.\n *\n * returns a Promise, that is either:\n * - resolved with an Outcome, either success or failure\n * - rejected, no value\n *\n *\n * @param {Object} parameters that this action accepts.\n * - source: array, the source JSON array that needs to be transformed to chart data. The\n * source is always an array of objects, or data points, where each data point has\n * either of these structures. The first is used with charts that show groups of data for\n * one or more series. The latter used with charts that show 3 dimensions of data. group,\n * series and value* are the keys in the object.\n *\n * {\n * group: '',\n * series: '',\n * value: ''\n * }\n *\n * {\n * group: '',\n * series: '',\n * valueX: '',\n * valueY: '',\n * valueZ: ''\n * }\n *\n * @returns {*}\n */\n perform(parameters) {\n const source = parameters.source;\n let ret;\n\n if (source && !Array.isArray(source)) {\n this.log.error('Inputs to TransformChartDataAction should be an array, even if it is a single item.');\n return Promise.reject();\n }\n\n try {\n ret = TransformChartDataAction.transform(source);\n } catch (e) {\n const msg = `TransformChartDataAction: error transforming source data: ${source}`;\n this.log.error(msg, e);\n // messaging\n return Promise.resolve(Action.createFailureOutcome(msg, e));\n }\n\n return Promise.resolve(ret).then(\n result => Promise.resolve(Action.createSuccessOutcome(result)));\n }\n\n /**\n * Transforms the source values into the targetChartModel, where the source has a specific\n * structure.\n *\n * @param source {Array} the source data\n *\n * @returns {Object} a chartModel with 2 properties - series and groups as expected by\n * UI component. See JET oj-chart for details.\n * @static\n */\n static transform(source) {\n if (source && source.length > 0) {\n const mappingOrder = ['group', 'series', 'value'];\n let mappingDefs;\n const sampleRow = Array.isArray(source) && source[0] ? source[0] : {};\n if (sampleRow.valueX) {\n mappingDefs = MAPPING_DEF_3D;\n } else {\n mappingDefs = MAPPING_DEF_1D;\n }\n\n // (1) build a grid to hold the series and group data\n // - (a) get list of ordered and unique group names and series names\n const groupPositionList = []; // order of groupName (row position) in grid\n const seriesPositionList = [];// order of seriesName (col position) in grid\n\n mappingOrder.forEach((targetVar) => {\n if (targetVar === 'group') {\n source.forEach(($sourceRow) => {\n const groupName = $sourceRow[targetVar];\n if (groupName) {\n if (groupPositionList.indexOf(groupName) < 0) {\n groupPositionList.push(groupName);\n }\n } else {\n logger.info('TransformChartDataAction: there is no group set!');\n }\n });\n }\n\n if (targetVar === 'series') {\n source.forEach(($sourceRow) => {\n const seriesName = $sourceRow[targetVar];\n if (seriesName) {\n if (seriesPositionList.indexOf(seriesName) < 0) {\n seriesPositionList.push(seriesName);\n }\n } else {\n logger.info('TransformChartDataAction: there is no series set!');\n }\n });\n }\n });\n\n // - (b) fill grid with data by group and series\n const datagrid =\n TransformChartDataAction.fillGridData(seriesPositionList, groupPositionList,\n source, mappingDefs);\n\n // (2) generate chart data from data grid\n return TransformChartDataAction.generateChartData(datagrid);\n }\n return { groups: [], series: [] };\n }\n\n /**\n * Fill a grid so headers are the series names, and the first column the group names.\n * Populate rest of grid with series and group data values.\n *\n * cols: contain 'Group' header + one for every Series name\n * rows: contain group name + data for (group, series) pair in cell\n * So a populated grid will look like this\n *\n * || Group || Series 1 || Series 2 || Series N ||\n * | G1 | 1 | 3 | 5 |\n * | G1 | 4 | 6 | 8 |\n * | G1 | 2 | | 9 |\n *\n * @param seriesList\n * @param groupList\n * @param source\n * @param mapping\n *\n * @returns {{cols: Array, rows: Array}}\n * @static\n */\n static fillGridData(seriesList, groupList, source, mapping) {\n let startColIndex = 1;\n const groupDef = mapping.group;\n const seriesDef = mapping.series;\n const value3D = !!mapping.valueX;\n\n // if we have no series shove empty series header\n let cols = [];\n if (seriesList.length === 0) {\n seriesList.push('__series__');\n }\n cols = new Array(seriesList.length + 1);\n cols[0] = '__group__';\n\n // rows: initialize\n const rows = new Array(groupList.length);\n for (let i = 0; i < groupList.length; i += 1) {\n rows[i] = new Array(seriesList.length + 1);\n rows[i][0] = groupList[i];\n }\n\n seriesList.forEach((seriesName) => {\n cols[startColIndex] = seriesName;\n startColIndex += 1;\n });\n\n // (d) populate data values\n source.forEach((sourceRow) => {\n let $rowIndex;\n let $colIndex;\n\n // get the x,y position in grid to shove the value\n const $group = sourceRow[groupDef];\n if ($group) {\n $rowIndex = groupList.indexOf($group);\n } else {\n logger.error('TransformChartDataAction: need at least one group defined');\n }\n\n const $series = sourceRow[seriesDef];\n if ($series) {\n $colIndex = seriesList.indexOf($series);\n } else {\n $colIndex = 0; // no series assume first column\n }\n\n const $value = value3D ? { x: sourceRow[mapping.valueX],\n y: sourceRow[mapping.valueY],\n z: sourceRow[mapping.valueZ] } :\n sourceRow[mapping.value];\n if ($rowIndex !== undefined && $colIndex !== undefined) {\n rows[$rowIndex][$colIndex + 1] = $value;\n } else {\n logger.warn('TransformChartDataAction: unable to locate a series and group for the value', $value);\n }\n });\n\n return { cols, rows };\n }\n\n /**\n * Given a data grid returns a json model that chart expects.\n *\n * @param datagrid\n * @returns {{}}\n */\n static generateChartData(datagrid) {\n const result = {};\n const cols = datagrid.cols;\n const rows = datagrid.rows;\n if (cols && rows) {\n cols.forEach((colData, colIndex) => {\n if (colIndex === 0) {\n result.series = [];\n // build groups data\n const groupsData = [];\n rows.forEach((row) => {\n groupsData.push(row[colIndex]);\n });\n result.groups = groupsData;\n } else {\n // build series data\n const seriesData = { name: colData };\n result.series.push(seriesData);\n const itemsData = [];\n rows.forEach((row) => {\n itemsData.push(row[colIndex]);\n });\n seriesData.items = itemsData;\n }\n });\n }\n\n return result;\n }\n }\n\n return TransformChartDataAction;\n });\n\n","'use strict';\n\ndefine('vb/action/builtin/webShareAction',['vb/action/action', 'vb/private/log'], (Action, Log) => {\n const logger = Log.getLogger('/vb/action/builtin/webShareAction');\n\n /**\n * WebShareAction allows mobile applications to invoke the native sharing capabilities of the host platform and\n * share content with other applications, such as Facebook, Twitter, Slack, SMS, etc.\n * This action should only be invoked following a user gesture (such as a button click).\n * It is a good idea to only enable share UI based of feature detection:\n *
    \n   *   Share\n   * 
    \n * WebShareAction parameters correspond to\n * [Web Share API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share} options:\n *
  • title the title of the document being shared. May be ignored by the handler/target.\n *
  • text an arbitrary text that forms the body of the message being shared.\n *
  • url a URL string referring to a resource being shared.\n *

    \n * All parameters are individually optional, but at least one parameter has to be specified. Any url can be shared,\n * not just urls under website's current scope.\n * Text can be shared with or without a url.\n *
    \n * An example below illustrates action's parameters one would specify to share current page's title and url:\n *

    \n   *   \"parameters\": {\n   *   \"title\": [[ document.querySelector('h1').textContent ]],\n   *   \"url\": \"[[ document.querySelector('link[rel=canonical]') &&\n   *         document.querySelector('link[rel=canonical]').href || window.location.href ]]\",\n   *   },\n   * 
    \n * A success outcome is returned once user has completed a share action. A failure outcome is returned\n * when browser does not support Web Share API or a parameter error is detected.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share}\n * @see {@link https://caniuse.com/#search=web%20share}\n * @see {@link https://www.npmjs.com/package/cordova-plugin-web-share}\n */\n class WebShareAction extends Action {\n constructor(id, label) {\n super(id, label);\n this.log = logger;\n }\n\n /**\n * @param parameters\n * @returns {Promise} Outcome {name: \"success\"}, once a user has completed a share action or {name: \"failure\"},\n * when Web Share is not supported, or parameter error is detected.\n */\n // eslint-disable-next-line class-methods-use-this\n perform(parameters) {\n if (!(navigator.share)) {\n const msg = 'Web Share is not supported in the browser';\n return Action.createFailureOutcome(msg, new Error(msg));\n }\n const title = parameters.title; // eslint-disable-line prefer-destructuring\n const text = parameters.text; // eslint-disable-line prefer-destructuring\n const url = parameters.url; // eslint-disable-line prefer-destructuring\n\n // Make sure that parameters, if specified, are of correct types\n if (!(this.checkParam(title, 'title') && this.checkParam(text, 'text') && this.checkParam(url, 'url'))) {\n return Action.createFailureOutcome(this.errorMessage, new TypeError(this.errorMessage));\n }\n // Make sure that at least one parameter is specified\n if (!(title || text || url)) {\n const msg = 'At least one of the webShareAction\\'s parameters must be specified';\n return Action.createFailureOutcome(msg, new Error(msg));\n }\n const data = { };\n if (title) {\n // title of the document being shared. May be ignored by the handler/target\n data.title = title;\n }\n if (text) {\n // an arbitrary text that forms the body of the message being shared\n data.text = text;\n }\n if (url) {\n // a URL string referring to a resource being shared\n data.url = url;\n }\n return navigator.share(data)\n .then(() => Action.createSuccessOutcome())\n .catch((error) => {\n // Web and Cordova navigator.share support differs in terms of what is considered a share promise\n // rejection. For example, on Android, dismissing a native share UI results in a promise rejection for PWA,\n // but a resolved promise for a native application. For this reason, share promise rejection will not be\n // (initially) exposed as webShareAction failure.\n this.log.warn(`(${this.logLabel}): ${error.message}`);\n return Action.createSuccessOutcome();\n });\n }\n\n /**\n * Checks whether a parameter, if defined, is of a string type. Sets this.errorMessage on type mismatch\n * and logs an error. For example:\n * \n * (shareIncident_r65qq5d23): Invalid WebShareAction parameter 'title' : true\n * \n * @param param parameter value to check\n * @param paramName parameter name for error message\n * @returns {boolean} true, if no type errors are found, false otherwise.\n */\n checkParam(param, paramName) {\n if (param && typeof param !== 'string') {\n this.errorMessage = `Invalid WebShareAction parameter '${paramName}' : ${param}`;\n this.log.error(`(${this.logLabel}): ${this.errorMessage}`);\n return false;\n }\n return true;\n }\n }\n return WebShareAction;\n});\n\n","'use strict';\n\ndefine('vb/private/translations/bundleDefinition',[\n 'vb/private/log',\n 'vb/private/utils',\n 'vb/private/constants',\n 'vb/private/pathHandler',\n 'urijs/URI',\n 'vb/private/services/uriTemplate',\n 'ojs/ojtranslation',\n], (Log, Utils, Constants, PathHandler, URI, UriTemplate, ojTranslation) => {\n const logger = Log.getLogger('/vb/private/translations/bundleDefinition');\n /**\n * BundleDefinition\n */\n class BundleDefinition {\n /**\n * represents one translation bundle\n * @param name\n * @param evaluatedPath {string}\n * @param metadata {object} expressions are not evaluated\n * @param locale\n * @param relativePath\n * @param options\n */\n constructor(name, evaluatedPath, metadata, locale, relativePath = '', options = {}) {\n const replacementValues = options.replacementValues || {};\n\n // 'unrestrictedRelative' means, you can reach outside of your current folder (only app-flow)\n const isUnrestrictedRelative = options.isUnrestrictedRelative || false;\n // allowSelfRelative means, let the container JSON use \"./\" to mean 'relative to the same folder.\n const allowSelfRelative = (options.allowSelfRelative !== false); // default is true\n\n const template = new UriTemplate(evaluatedPath || '', undefined, true); // no param defs, and skip adding queries\n\n const replacements = Object.assign({ 'locale-name': locale }, replacementValues);\n const path = template.replace(replacements);\n\n this.log = logger;\n this.name = name;\n this.default = metadata.default || false;\n this.pathHandler = new PathHandler(path, relativePath,\n { allowParent: isUnrestrictedRelative, allowSelfRelative });\n this.map = null;\n }\n\n /**\n * don't allow use of '..' in path outside of the Application declaration\n * @returns {boolean}\n */\n isAllowed() {\n return this.pathHandler.isAllowed();\n }\n\n\n /**\n */\n load(runtimeEnvironment) {\n // return `ojL10n!${this.uri.toString()}`;\n let path = this.pathHandler.getResolvedPath();\n\n // workaround for JET requiring an '/nls' in the path\n if (BundleDefinition.useWorkaroundNlsMappingForFA(path)) {\n path = BundleDefinition.workaroundNlsMapping(path);\n }\n\n return runtimeEnvironment.getLocaleBundle(path)\n .then((stringMap) => {\n this.map = stringMap;\n return this;\n });\n }\n\n /**\n *\n * @returns {*}\n */\n format(key, ...params) {\n return BundleDefinition.format(this.map, key, ...params);\n }\n\n /**\n * This is a workaround for the FA use-case.\n * VB runtime used to use requirejs.toUrl() to do its paths mapping resolution BEFORE loading bundles using\n * the ojL10n plugin. But that didn't work when we started to bundle applications, because toUrl() returns\n * the path to the BUNDLE, and not the mapped module.\n *\n * So, we removed the use of requirejs.toUrl(), but that broke existing FA apps, because they included the\n * /nls/ segment in the mapping, BUT the JET plugin requires the /nls/ segment be in the path passed to the plugin.\n *\n * In other words, this wont work:\n * requirejs.config({ paths: { myPath: 'resources/nls/translations' } });\n *\n * require(['ojL10n!myPath'], (bundle) => // this throws an exception because the /nls/ isn't in the path\n *\n * So this workaround will basically do what we used to do - return the result of the requirejs.toUrl().\n * But this assumes ONLY the first segment of the bundle path is mapped, which is the FA use-case.\n *\n * In other words, this does NOT handle this case: {paths: 'some/map': 'somepath/nls'})\n *\n * But generally, we need to document that developers should NOT include the /nls in the mapping.\n */\n\n /**\n * if its FA and not bundled, or if the path doesn't have '/nls', use the hack\n * @returns {boolean}\n */\n static useWorkaroundNlsMappingForFA(path) {\n const mappingParts = requirejs.toUrl('app-flow').split(Constants.PATH_SEPARATOR);\n\n // 'bundles' would be the second-to-last segment\n const isBundled = mappingParts.length > 1 && mappingParts[mappingParts.length - 2] === 'bundles';\n const isFA = !!window.faConfig || !!window.FAEndPoints;\n\n const missingNls = (path.indexOf('/nls') === -1);\n if (missingNls) {\n logger.warn(`translation bundle paths without \"\\\\nls\" are deprecated, and must be updated: ${path}`);\n }\n\n return (isFA && !isBundled) || missingNls;\n }\n\n /**\n * expand the url mapping before handing the path to the JET translation bundle\n * @todo: remove this eventually, after FA updates their bundle paths\n * @param path\n * @returns {*}\n */\n static workaroundNlsMapping(path) {\n let newPath = path;\n const parts = path.split(Constants.PATH_SEPARATOR);\n\n // assume the first segment is the 'paths' map key\n const mapkey = parts[0];\n\n // need something that would not be a bundle file name, so that when we call requirejs.toUrl(),\n // we do not get the bundle path.\n const uniqueSuffix = '__un1que__';\n\n const mappedPath = requirejs.toUrl(`${mapkey}/${uniqueSuffix}`);\n\n parts.shift(); // remove the first segment\n newPath = mappedPath.replace(uniqueSuffix, parts.join(Constants.PATH_SEPARATOR));\n\n // BUFP-31158: if the mapkey isn't actually a bundle mapping, just return the original\n if (mappedPath === `${requirejs.toUrl('')}${mapkey}/${uniqueSuffix}`) {\n return path;\n }\n\n\n const isAbsolute = (newPath.startsWith(Constants.PATH_SEPARATOR) || new URI(newPath).is('absolute'));\n\n // need to add/remove the .js based on whether the url is absolute\n if (isAbsolute) {\n if (!newPath.endsWith('.js')) {\n newPath = `${newPath}.js`;\n }\n } else if (newPath.endsWith('.js')) {\n newPath = newPath.substring(0, newPath.length - 3);\n }\n // FA paths have a lot of double-slashes, and i think it confuses the requireJS cache when\n // loading the same file with paths that differ only with slashes\n newPath = newPath.replace(/(:\\/\\/)|(\\/)+/g, '$1$2');\n\n return newPath;\n }\n\n /**\n * find the string for the given key in the given (l10n) bundle, and format any string replacements.\n *\n * ex: \"{{ $application.translations.format('mybundle', 'titlekey', {appname: 'text'}) }}\"\n *\n * @param bundle L10n bundle (not Bundle definition object).\n * @param key\n * @param params and object with named substitutions\n * @returns {string|null}\n */\n static format(bundle, key, ...params) {\n // first, try the key as-is\n let str = bundle[key];\n\n // else, try to split it\n if (!str) {\n const keys = key ? key.split('.') : [];\n if (keys.length > 1) {\n let value = bundle;\n\n for (let index = 0; index < keys.length && value; index += 1) {\n // if we have a key like a.b.c\n value = value[keys[index]];\n }\n\n str = value || null;\n }\n }\n // fallback to the key\n if (!str) {\n str = key;\n }\n\n return ojTranslation.applyParameters(str, ...params);\n }\n }\n\n return BundleDefinition;\n});\n\n","'use strict';\n\ndefine('vb/private/translations/bundleV2Definition',[\n 'vb/private/log',\n 'vb/private/pathHandler',\n], (Log, PathHandler) => {\n const logger = Log.getLogger('/vb/private/translations/bundleV2Definition');\n /**\n * BundleV2Definition\n *\n * differences between this, and the original BundleDefinition\n *\n * - relative-to-container paths (starting with \"./\") are not supported; all paths are relative to the application,\n * or absolute\n *\n * - path templates are not supported. this was never really used, but officially dropping support in new bundles.\n *\n * @todo: as of 09/29/2020, JET is not generating this format yet: JET-39285\n * simple example:\n * define(() => ({\n * \"greeting\": function (p){return \"Hello, \"+p[\"person\"];},\n * \"heading\": function (p){return \"This is \"+p[\"0\"];},\n * });\n *\n */\n class BundleV2Definition {\n /**\n * represents one translation bundle\n * @param name\n * @param evaluatedPath {string}\n * @param metadata {object} expressions are not evaluated\n * @param locale\n * @param relativePath\n */\n constructor(name, evaluatedPath, metadata, locale, relativePath = '') {\n //\n this.path = evaluatedPath;\n this.declaration = Object.assign({}, metadata);\n\n this.log = logger;\n this.name = name;\n this.default = metadata.default || false;\n\n // allow \"./somepath\", but not \"../somepath\".\n this.pathHandler = new PathHandler(this.path, relativePath, { allowParent: false, allowSelfRelative: true });\n this.map = null;\n\n this.stringFunctions = {}; // these will come directly from the JET-generated string bundle\n }\n\n /**\n * Whether or not the path is allowed based on the PathHandler config above;\n * Allow \"./some/path\", but don't allow \"../some/path\"\n * { allowParent: false, allowSelfRelative: true }\n * @returns {boolean}\n */\n isAllowed() {\n return this.pathHandler.isAllowed();\n }\n\n\n /**\n */\n load(runtimeEnvironment) {\n return runtimeEnvironment.getV2Strings(this.pathHandler.getResolvedPath(), this.declaration)\n .then((v2Objects) => {\n Object.defineProperties(this, {\n map: {\n get: () => v2Objects.wrappers, // non-function accessors\n },\n stringFunctions: {\n get: () => v2Objects.functions, // the unaltered JET functions\n },\n });\n return this;\n });\n }\n\n /**\n * Called by TranslationContext, for the '$translations.format' EL function\n * @returns {*}\n */\n format(key, ...params) {\n if (this.stringFunctions[key]) {\n return this.stringFunctions[key](...params);\n }\n logger.warn(`Key ${key} not found in bundle ${this.name}, returning empty string`);\n return '';\n }\n }\n\n return BundleV2Definition;\n});\n\n","'use strict';\n\ndefine('vb/private/translations/bundlesModel',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/private/translations/bundleDefinition',\n 'vb/private/translations/bundleV2Definition',\n 'vb/binding/expression',\n 'ojs/ojconfig',\n], (Constants, Log, BundleDefinition, BundleV2Definition, Expression, ojConfig) => {\n const logger = Log.getLogger('vb/private/translations/bundlesModel');\n\n // we use the convention that V2 files are named \"*-i18n\".\n // requireJS requires the .js when the path includes protocol, and the file is not in a bundle.\n // Otherwise, the JS must be omitted.\n const REGEXP_V2 = /-i18n(\\.js)?$/;\n /**\n *\n */\n class BundlesModel {\n /**\n * create an array of (non-null) BundleDefinition.\n * Falsy paths should be ignored/skipped (VBS-2097)\n *\n * @param metadata\n * @param runtimeEnv\n * @param requirePath\n * @param options {isUnrestrictedRelative, replacementValues}\n */\n constructor(metadata = {}, runtimeEnv, requirePath = '', options = {}) {\n this.log = logger;\n this.relativePath = requirePath;\n this.bundleMap = {};\n this.runtimeEnvironment = runtimeEnv;\n\n // using JET to get locale\n const locale = ojConfig.getLocale();\n\n this.bundleDefinitionsMap = {};\n\n this.bundleDefinitions = Object.keys(metadata || {})\n .map((name) => {\n const decl = metadata[name];\n\n const path = decl && decl.path && Expression\n .getEvaluatedSafe(decl.path, {\n [Constants.ContextName.INIT_PARAMS]: options.initParams || {},\n });\n\n if (path) {\n const Clazz = (this.isV2(path)) ? BundleV2Definition : BundleDefinition;\n\n const def = new Clazz(name, path, decl, locale, requirePath, options);\n this.bundleDefinitionsMap[name] = def;\n return def;\n }\n\n logger.error('No path declared for translation bundle', name);\n return null;\n })\n .filter((bundle) => !!bundle); // remove nulls\n }\n\n /**\n * path (file name) is used to determine which bundle version we have ('*-i18n')\n * @param path\n * @returns {*|boolean}\n */\n // eslint-disable-next-line class-methods-use-this\n isV2(path) {\n return path && REGEXP_V2.test(path);\n }\n\n\n /**\n * load all bundles, and map a map of name - to - string map\n * @returns {Promise}\n */\n load() {\n if (!this.loadPromise) {\n const promises = this.bundleDefinitions.filter((bundle) => bundle.isAllowed())\n .map((bundle) => bundle.load(this.runtimeEnvironment));\n\n this.loadPromise = Promise.all(promises)\n .then((bundles) => {\n // for the set of definitions, map a 'master' map of bundle name -> bundle strings\n bundles.forEach((bundle) => {\n this.bundleMap[bundle.name] = bundle.map;\n });\n return this;\n });\n }\n\n return this.loadPromise;\n }\n\n\n /**\n * @returns {{}}\n */\n getStringMap() {\n return this.bundleMap;\n }\n }\n\n return BundlesModel;\n});\n\n","'use strict';\n\ndefine('vb/private/helpers/eventHelper',[\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/stateManagement/router',\n 'vb/action/eventAction',\n 'vb/action/builtin/fireNotificationEventAction',\n 'vb/action/builtin/fireCustomEventAction',\n], (Constants, Utils, Router, EventAction, FireNotificationEventAction, FireCustomEventAction) => {\n /**\n * A set of helper routines that require a context and are used by built-in actions.\n * The context is hidden using a closure.\n *\n */\n class EventHelper {\n /**\n * @param context passed from Container.\n */\n constructor(context) {\n this.target = null; // default behavior for no target is 'current'\n\n // context is private via closure\n Object.assign(this, {\n /**\n * Fire a custom event, with the given payload\n * @param name\n * @param payload\n * @returns {Promise} resolves immediately, does not wait for event propagation. or rejects on error\n */\n fireCustomEvent: (name, payload) => Promise.resolve()\n .then(() => {\n if (!context || !context.container) {\n throw new Error('unable to fire event; no active container context');\n }\n\n if (!FireCustomEventAction.isValid(name)) {\n throw new Error(`attempt to raise invalid event: ${name}`);\n }\n\n const promiseOrNull = EventAction.fireEvent(context.container, name, payload, { target: this.target });\n return promiseOrNull || Promise.reject(new Error(`Unable to find target: ${this.target}`));\n }),\n\n /**\n * @param options { summary, message, displayMode, type, key }\n * these are the same as the parameters to the FireEventNotificationAction\n * - summary: {string} event title/summary\n * - message: {string}event text\n * - displayMode: {string} 'persist', 'transient'\n * - type: {string} 'error', 'warning', 'confirmation', 'info'\n * - key: {string} optional, if not provided, a 9 character alphanumeric UID is generated randomly.\n * @returns {*|Promise.}\n */\n fireNotificationEvent: (options) => {\n const payload = FireNotificationEventAction.createPayload(options);\n return this.fireCustomEvent(Constants.NOTIFICATION_EVENT, payload);\n },\n\n /**\n * set the 'target' container, for the start of event propagation (events bubble 'up' the containment).\n * @param target current/leaf, specifies which container the event should 'start' bubbling from\n * @returns {EventHelper} for chaining\n */\n target: (target) => {\n this.target = target;\n return this;\n },\n });\n }\n }\n\n return EventHelper;\n});\n\n","'use strict';\n\n/**\n * note: this has a dependency on Router; dependencies on classes that are dependant on JET can\n * cause circular requireJS dependencies, if not used carefully!!\n *\n */\n\ndefine('vb/private/model/modelUtils',[\n 'vb/private/helpers/eventHelper',\n 'vb/private/stateManagement/router',\n 'vb/private/log',\n 'vb/private/utils',\n], (EventHelper, Router, Log, Utils) => {\n const logger = Log.getLogger('/vb/private/models/ModelUtils');\n\n // for backward compatibility in 20.10\n // JET was binding the data-description-overlay.json to the Layout model, and apps were using it.\n // the fix to bind to the right model was late in the release, so we need to support the unintended functionality\n // (for one release).\n\n // eslint-disable-next-line func-names\n /**\n * @param model\n * #returns {boolean}\n */\n function hasEmptyFunctions(model) {\n if (model.$functions) {\n // build a list of property names\n const props = Object.getOwnPropertyNames(model.$functions);\n if (props.length) {\n return false;\n }\n\n let noProps = true;\n // eslint-disable-next-line guard-for-in,no-restricted-syntax,no-unused-vars\n for (const prop in model.$functions) {\n noProps = false;\n }\n return noProps;\n }\n return true;\n }\n\n\n class ModelUtils {\n /**\n * if a JS module has a constructor, the constructor is called, and passed an object that contains accessors\n * for helpers.\n *\n * Currently, the only accessor is getEventHelper() => EventHelper.\n *\n * @param Module if falsy, returns null\n * @param container if undefined, the context should still contain valid accessors for 'helpers', but the helpers\n * should handle the lack of a container (throw exception, log error, etc.).\n * If null, there will be no context, but that should not happen.\n * @returns {Object|null}\n */\n static initializeJsModule(Module, container) {\n let newModule = null;\n if (Module) {\n newModule = Module;\n if (typeof newModule === 'function') {\n // use the 'current' page for the context when constructing the metadata provider\n const cont = (container !== undefined) ? container : Router.getCurrentPage();\n\n if (!cont) {\n logger.warn('No container context for initializing module helpers');\n }\n\n const moduleContext = this.createModuleContext(cont);\n\n newModule = new Module(moduleContext);\n }\n }\n\n return newModule;\n }\n\n\n /**\n * passed to the module constructor; has an accessor to the EventHelper\n * The container is assumed to be valid; if somehow, if it is not, the helper should still be\n * accessible by the JS, but it should fail will logging, minimally.\n *\n * @param container can be null/undefined; EventHelper will throw errors when used if not defined.\n * @returns {{getEventHelper: (function(): *)}}\n * @private\n */\n static createModuleContext(container) {\n return {\n getEventHelper: () => new EventHelper({ container }),\n };\n }\n\n /**\n * workaround for a bug in 20.10 (BUFP-39805), that apps exploited; JSON was bound to the wrong model for $function.\n * Look in the correct model; if it is empty, use the layout.js model.\n *\n * @param rootModel {object}\n * @param layoutModel {object}\n * @param fileNameForLog optional\n * @returns {object} either clone of rootModel with $functions = layout.$functions, if rootModel.$functions\n * has no properties & functions,\n * or the original rootModel if rootModel.$functions has functions or properties\n *\n */\n static chooseCorrectFunctionsModel(rootModel, layoutModel, fileNameForLog) {\n let rootModelDollarName;\n if (fileNameForLog) {\n // convert filename to model name. ex: \"data-description.json\" to \"$dataDescription\"\n rootModelDollarName = `$${Utils.hyphenatedToCamelCase(fileNameForLog)}`;\n } else {\n // otherwise, just come up with something reasonable for the log\n // eslint-disable-next-line no-param-reassign\n fileNameForLog = 'appropriate data-description(*).js';\n }\n\n // if the rootModel doesn't exist, or has no properties or functions, use the layoutModel\n if (hasEmptyFunctions(rootModel)) {\n logger.warn('the metadata functions are empty, using layout.js functions instead. '\n + `You should move your functions to the ${fileNameForLog} source file`);\n\n // need to 'clone' because $functions is a getter in the original, so we can't assign it\n const newModel = Object.assign({}, rootModel);\n // eslint-disable-next-line no-param-reassign\n newModel.$functions = (layoutModel && layoutModel.$functions);\n\n // rootModelDollarName should not be undefined (except during test automation, for convenience).\n if (rootModelDollarName && newModel[rootModelDollarName]) {\n newModel[rootModelDollarName].functions = newModel.$functions;\n }\n\n return newModel;\n }\n return rootModel;\n }\n }\n\n return ModelUtils;\n});\n\n","'use strict';\n\ndefine('vb/private/events/eventMonitorOptions',[\n 'vbc/private/monitorOptions',\n], (MonitorOptions) => {\n /**\n * Represents a log monitor options for a VB component and variable events. These options are used in\n * custom VB performance measures and open trace spans, if enabled.\n */\n class EventMonitorOptions extends MonitorOptions {\n constructor(eventType, eventName, eventPayload, container) {\n super(eventType);\n this.addMessage(eventName);\n this.addStartFields(() => ({\n trigger: eventPayload, // Tracer will parse into trigger.* fields\n container,\n eventName,\n }));\n this.addEndFields(() => ({\n trigger: eventPayload, // Tracer will parse into trigger.* fields\n container,\n eventName,\n }));\n }\n }\n\n return EventMonitorOptions;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/container',[\n 'ojs/ojcontext',\n 'vb/private/action/actionChain',\n 'vb/private/action/assignmentHelper',\n 'vb/private/stateManagement/redux/storeManager',\n 'vb/private/stateManagement/scope',\n 'vb/private/stateManagement/router',\n 'vb/private/stateManagement/navigationContext',\n 'vb/private/log',\n 'vbc/private/logConfig',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/translations/bundlesModel',\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/errors/httpError',\n 'vb/private/helpers/eventHelper',\n 'vb/private/history',\n 'vb/private/stateManagement/scopeResolver',\n 'vb/private/model/modelUtils',\n 'vb/private/events/eventRegistry',\n 'vb/private/debug/applicationDebugStream',\n 'vbc/private/performance/performance',\n 'vb/private/events/eventMonitorOptions',\n 'urijs/URI',\n], (ojContext, ActionChain, AssignmentHelper, StoreManager, Scope,\n Router, NavigationContext, Log, LogConfig, StateUtils,\n BundlesModel, Constants, Utils, HttpError, EventHelper, History, ScopeResolver,\n ModelUtils, EventRegistry, ApplicationDebugStream, Performance,\n EventMonitorOptions, URI) => {\n const logger = Log.getLogger('/vb/stateManagement/container', [\n // Register custom loggers\n {\n name: 'beforeHandleEvent',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.containerStart,\n },\n {\n name: 'afterHandleEvent',\n severity: Constants.Severity.INFO,\n style: LogConfig.FancyStyleByFeature.containerEnd,\n },\n ]);\n\n /**\n * A base class for containers that require variable and action chain support.\n *\n * Container\n * |\n * +-----------------------+-----------------------+-----------------------+\n * | | | |\n * Flow Page ContainerExtension Layout\n * | | |\n * +-----+-----+ packagePage |\n * | | |\n * | | +----------------+----------------+\n * Application packageFlow | | |\n * FlowExtension PageExtension LayoutExtension\n *\n */\n class Container {\n constructor(id, parent, className = 'Container') {\n Object.defineProperties(this, {\n // Make id, className and parent readonly properties for safety\n id: {\n value: id,\n enumerable: true,\n },\n // Hold the class name, 'application', 'flow', 'page'\n className: {\n value: className,\n enumerable: true,\n },\n /**\n * Sets the parent container. For a page, it's a flow, for a flow\n * it's a flow, for Application it is null.\n * @type {Container} parent the parent container\n */\n parent: {\n value: parent,\n enumerable: true,\n },\n /**\n * Use \"base\" for the id of the potential extension of this container\n * @type {String}\n */\n extensionId: {\n value: Constants.ExtensionFolders.BASE,\n enumerable: true,\n writable: true,\n },\n });\n\n /**\n * The scope resolver is an object to retrieve scope instances given their names.\n * This is used to resolve the scope name of expressions like scopeName:typeName.\n * When defined, possible scope names are: \"this\", \"page\", \"flow\" or \"application\".\n */\n Object.defineProperty(this, 'scopeResolver', {\n // Uses the lazy value pattern. The scope resolver is initialized only the first time\n // it is accessed then the getter becomes read-only with the finalValue.\n get() {\n // Merge the 'this' property with the scope resolver map\n const finalValue = new ScopeResolver(\n Object.assign({ [Constants.THIS_PREFIX]: this }, this.getScopeResolverMap()),\n );\n\n // Once the final value is calculated, redefine the property as a value, so the\n // next time it is read, the value will be returned immediately.\n Object.defineProperty(this, 'scopeResolver', {\n value: finalValue,\n });\n\n return finalValue;\n },\n configurable: true,\n });\n\n this.name = id;\n\n /**\n * baseUrl is always relative to the require.baseUrl\n * Overridden by packageFlow and packagePage\n */\n this.baseUrl = '';\n\n // Initialize a variable with the page path so we don't recalculate it all the time\n this.fullPath = this.getPath();\n\n /**\n * The path of the resource to this container relative to the application,\n * something like: 'flows/main/pages/main-start'\n * Each container implementation is responsible to set this property.\n * @type {String}\n */\n this.requirePath = null;\n\n // By default the event prefix is the class\n this.eventPrefix = className.toLowerCase();\n\n this.scope = null; // The scope used to store variables\n this.availableContexts = null; // the entire set of Context objects, ($application, and $page, and $flow, etc)\n this.expressionContext = null; // the single Context object, for expressions ($page OR $flow OR $chain, etc)\n this.functions = null;\n this.variablesListeners = [];\n this.chains = null;\n this.lifecycleState = Constants.ContainerState.CREATED;\n this.log = logger;\n this.eventListeners = {};\n\n this.bundles = undefined; // we will set this to null if we load the descriptor, nd none are defined\n\n this.loadFunctionsPromise = null;\n this.loadMetadataPromise = null;\n this.loadDescriptorPromise = null;\n this.loadBundlesPromise = null;\n\n // The array of all extension object that apply to this container\n this.extensionsArray = [];\n // A map of all extension that apply to this container\n this.extensions = {};\n\n // A map of all imports that apply to this container\n this.imports = {};\n }\n\n /**\n * this base implementation should not be called; make it obvious if it happens during development\n * @returns {string}\n */\n // eslint-disable-next-line class-methods-use-this\n get fullName() {\n // if this happens, we may need to implement a meaningful name for the appropriate container type.\n throw Error('fullName should only be referenced for a page, flow, or application');\n }\n\n /**\n * Load the descriptor using the loader in the RuntimeEnvironment\n *\n * @return {Object} the descriptor object\n */\n descriptorLoader(resourceLocator) {\n return this.application.runtimeEnvironment[this.descriptorLoaderName](resourceLocator);\n }\n\n /**\n * Load the module functions using the loader in the RuntimeEnvironment\n *\n * @return {Object} the module object\n */\n functionsLoader(resourceLocator) {\n return this.application.runtimeEnvironment[this.functionsLoaderName](resourceLocator, this.needsExtension);\n }\n\n /**\n * Load the html content using the loader in the RuntimeEnvironment\n *\n * @return {Object} the module object\n */\n templateLoader(resourceLocator) {\n return this.application.runtimeEnvironment[this.templateLoaderName](resourceLocator);\n }\n\n /**\n * used by events, overridden by containerExtension\n * @returns {boolean}\n */\n // eslint-disable-next-line class-methods-use-this\n isExtension() {\n return false;\n }\n\n /**\n * Return the path to the folder that contains the resource.\n * @return {String} the page/flow/application folder\n */\n // eslint-disable-next-line class-methods-use-this\n getResourceFolder() {\n return `${this.baseUrl}${this.requirePath}`;\n }\n\n /**\n * Return the require path to the resource\n * @return {String} the require resource location\n */\n // eslint-disable-next-line class-methods-use-this\n getResourcePath() {\n return `${this.getResourceFolder()}${this.name}`;\n }\n\n /**\n * returns a Services object specific to this flow\n * @return {Services}\n */\n // eslint-disable-next-line class-methods-use-this\n getServices() {\n throw new Error('containers must implement getServices');\n }\n\n /**\n * returns a list of Services, in priority order, high to low\n * Containers may override to provide different access to containers services, if needed\n *\n * We call application.getAllServices to include extensions\n * @return {Array}\n */\n getAllServices() {\n return Utils.toFlatUniqueArray(this.getServices(), this.application.getAllServices());\n }\n\n /**\n * Create a child router of the parent container router.\n * Uses the id for the router name and for the parent state id. This will\n * allow the traversal of the router hierarchy to retrieve the leaf page.\n *\n * @return {ojRouter} the router for this container\n */\n createRouter(parent) {\n if (!parent.router) {\n return this.createRouter(parent.parent);\n }\n return parent.router.createChildRouter(this.id, this.id);\n }\n\n initRouter() {\n if (this.router) {\n return;\n }\n const router = this.createRouter(this.parent);\n if (router) {\n // Make the router property readonly\n Object.defineProperty(this, 'router', {\n value: router,\n enumerable: true,\n configurable: true,\n });\n // Configure the router using a \"state from id\" callback\n this.router.configure(this.getRouterConfigureCallBack());\n }\n }\n\n /**\n * The enter callback for ojRouter state transition used the\n * getRouterConfigureCallBack below\n * @param {String} stateId\n * @return {Promise}\n */\n routerStateEnterCallback(stateId) {\n return Promise.resolve().then(() => {\n let cont;\n\n if (this.staticPageId) {\n const staticPage = this.pages[this.staticPageId];\n\n staticPage.enter();\n cont = staticPage.getContainer(stateId);\n } else {\n // Call getContainer instead of loadContainer because the container has\n // been created in canEnter.\n cont = this.getContainer(stateId);\n }\n return cont && cont.enter();\n });\n }\n\n /**\n * The exit callback for ojRouter state transition used the\n * getRouterConfigureCallBack below\n * @param {String} stateId\n * @return {Promise}\n */\n routerStateExitCallback(stateId) {\n return Promise.resolve().then(() => {\n const cont = this.getContainer(stateId);\n\n return cont && cont.exit();\n });\n }\n\n /**\n * Returns the callback to be used to configure the ojRouter of this container.\n * The callback provides a way for each router state to handle their state transition (enter/exit)\n * See http://jet.us.oracle.com/jsdocs/oj.Router.html#configure\n * @return {(id:string) => Object} the \"state from id\" callback\n */\n getRouterConfigureCallBack() {\n return (stateId) => {\n let state;\n\n if (stateId) {\n state = {\n // This is the canEnter called during router transition. It is used to\n // attempt to load the page.\n // canEnter expect a Promise that resolves as true to continue or false to veto\n // the navigation.\n canEnter: () => this.loadContainer(stateId).then((nested) => !!nested),\n // canExit expect a Promise that resolves as true to continue or false to veto\n // the navigation.\n canExit: () => this.getContainer(stateId).canExit(),\n // A way to call the page or flow when the router enter this state.\n enter: () => this.routerStateEnterCallback(stateId),\n // A way to call the page of the flow when the router exit this state.\n // This is earlier than the ojModule handleDeactivated.\n exit: () => this.routerStateExitCallback(stateId),\n value: this,\n };\n }\n\n return state;\n };\n }\n\n /**\n * Return the first flow up in the parent hierarchy.\n * For flow, it's this.parent.parent, for page it's this.parent for\n * application it's null.\n *\n * @return {Flow} the first flow in the parent hierarchy\n */\n // eslint-disable-next-line class-methods-use-this\n getParentFlow() {\n throw new Error('Containers must implement getParentFlow');\n }\n\n /**\n * Return true if this container should be hidden from the Url\n * Always false by default. Subclass can overwrite this behavior\n *\n * @return {boolean} true if it should be hidden from the Url\n */\n // eslint-disable-next-line class-methods-use-this\n hideFromUrl() {\n return false;\n }\n\n /**\n * Retrieve the path of the container relative to the application\n * Something like shellPage/flow/pageId.\n *\n * @return {String} the path\n */\n getPath() {\n if (this.parent) {\n const parentId = this.parent.getPath();\n return parentId ? `${parentId}${Constants.PATH_SEPARATOR}${this.id}` : this.id;\n }\n\n return '';\n }\n\n /**\n * Return the path to use to navigate to this page using the router.\n * This is different than getPath because this one take into account the\n * hidden flow/page, so instead of the path being shellPage/flow/page, the path\n * will just be flow/page.\n *\n * @return {String}\n */\n getNavPath() {\n if (this.parent) {\n const parentId = this.parent.getNavPath();\n if (this.hideFromUrl()) {\n return parentId;\n }\n return parentId ? `${parentId}/${this.id}` : this.id;\n }\n\n return '';\n }\n\n /**\n * Generate a unique name to be used for the scope.\n * The name is unique and has the name of the class and the path to make it easier to\n * find the scope owner when debugging.\n *\n * @return {String} a new scope name\n */\n getNewScopeName() {\n return `${this.className}/${this.fullPath}`;\n }\n\n loadMetadata() {\n this.loadMetadataPromise = this.loadMetadataPromise || this.descriptorLoader(this.getResourcePath())\n .then((definition) => {\n // send the descriptor to the debugger\n ApplicationDebugStream.descriptorLoaded(this.getResourcePath(), definition, this);\n\n // Initialize the context object, for expressions ($page OR $flow OR $chain, etc)\n this.expressionContext = new (this.constructor.ContextType)(this);\n\n // Initialize all the default values of the descriptor\n this.initDefault(definition);\n\n return this.definition;\n });\n\n return this.loadMetadataPromise;\n }\n\n /**\n * This method returns a promise to load the container definition. It uses the runtime environment\n * and the resource locator provided by each subclass the load the appropriate parts.\n * @return {Promise.} a promise that resolves when the file is loaded with the page definition object,\n * and any other dependencies (translations, imports).\n */\n loadDescriptor() {\n this.loadDescriptorPromise = this.loadDescriptorPromise || this.loadMetadata()\n // First check if we can enter the page, no point loading components or translation bundle\n // if the page cannot be accessed by the user.\n .then(() => this.checkAccess())\n // now, load anything that the JSON model requires, in parallel, and wait for all of the promises.\n // Import any JET components declared in imports.components, and resolve with the descriptor\n // and also, in parallel, load translation bundles and the extensions\n .then(() => Promise.all([this.loadExtensions(), this.loadImports(), this.loadTranslationBundles()]))\n // Merge the content on top of the base object\n .then(() => {\n this.combineExtensions();\n return this.definition;\n });\n\n return this.loadDescriptorPromise;\n }\n\n /**\n * Return a promise to load the .html for this container. Only used for page and layout.\n *\n * @returns {Promise.|*|Promise|Promise.|*}\n */\n loadTemplate() {\n // Keep a reference of the loading promise so that multiple function can wait\n // on the same promise to be resolved.\n this.loadHtmlPromise = this.loadHtmlPromise || this.templateLoader(this.getResourcePath());\n\n return this.loadHtmlPromise;\n }\n\n /**\n * Return the promise to load the functions module using the name of a functions loader.\n * @return {Promise.} the promise of a constructor a singleton object\n */\n loadFunctionModule() {\n if (this.loadFunctionsPromise) {\n return this.loadFunctionsPromise;\n }\n\n const promises = [];\n // Keep a reference of the loading promise so that multiple function can wait\n // on the same promise to be resolved.\n const loadFunctionsPromise = this.functionsLoader(this.getResourcePath())\n .then((FunctionModule) => {\n this.functions = ModelUtils.initializeJsModule(FunctionModule, this);\n return this.functions;\n })\n .catch((e) => {\n // swallow errors for missing files, log the rest\n if (!e.requireType || e.requireType !== 'scripterror') {\n this.log.error('Error loading module', this.getResourcePath(), e);\n }\n return Promise.resolve();\n });\n\n promises.push(loadFunctionsPromise);\n // Propagate the loadFunctionModule call to all extensions\n promises.push(...this.traverseExtensions('loadFunctionModule'));\n this.loadFunctionsPromise = Promise.all(promises);\n\n return this.loadFunctionsPromise;\n }\n\n /**\n * For app, flows, etc, the name of the chain folder is chains.\n */\n // eslint-disable-next-line class-methods-use-this\n get chainsFolderName() {\n return 'chains';\n }\n\n /**\n * Returns the name of the function used to load the chain file.\n *\n * @returns {string}\n */\n // eslint-disable-next-line class-methods-use-this\n get chainLoaderName() {\n return 'getTextResource';\n }\n\n /**\n * Dynamically load a file-based action chain identified by the given chainId.\n *\n * @param chainId the id for the chain load\n * @returns {Promise}\n */\n loadChain(chainId) {\n return Promise.resolve().then(() => {\n this.chains = this.chains || {};\n\n // If the chain is already defined in the container descriptor, it will take precedence over\n // file-based chain.\n const chain = this.chains[chainId];\n if (chain !== undefined) {\n return chain;\n }\n\n const chainPath = `${this.getResourceFolder()}${this.chainsFolderName}/${chainId}.json`;\n\n return this.application.runtimeEnvironment[this.chainLoaderName](chainPath)\n .then((chainJson) => {\n this.chains[chainId] = Utils.parseJsonResource(chainJson);\n\n // need to resend the descriptor to the debugger to update the newly loaded chain\n ApplicationDebugStream.descriptorLoaded(this.getResourcePath(), this.definition, this);\n\n return this.chains[chainId];\n })\n .catch((err) => {\n logger.error('Failed to load action chain', chainId, err);\n\n // set the chain to null so we don't try to load it again.\n this.chains[chainId] = null;\n\n return null;\n });\n });\n }\n\n /**\n * Merge the content of the extension to the base object.\n * This is done on the definition of the base object before the constants are created.\n * @param extendedConstants\n * @param extension\n */\n combineExtensionConstants(extendedConstants, extension) {\n // This is the list of constants that are allowed to be modified by extensions\n const { constants } = this.definition.interface;\n\n // Traverse all extended constants of this extension and apply the new value to the\n // base constants definition.\n Object.keys(extendedConstants)\n .forEach((constName) => {\n const constant = constants[constName];\n if (constant) {\n // Override the value of the constant with the value from the extension\n constant.defaultValue = extendedConstants[constName];\n // Add a reference to the extension extending the constant, this will be\n // used to retrieve in order to evaluate the expression\n constant.extension = extension;\n } else {\n this.log.warn('Constant', constName, 'is not part of the interface of', this.className, this.name);\n }\n });\n }\n\n /**\n * Merge the content of all extensions in the base.\n * At the moment only merging constants.\n */\n combineExtensions() {\n // Traverse all the extensions\n this.extensionsArray.forEach((extension) => {\n const extensionDef = extension.definition;\n if (extensionDef) {\n // This points to the extensions definition, extensions is already initialized in initDefault()\n const extendedConstants = extensionDef.extensions.constants;\n if (extendedConstants) {\n this.combineExtensionConstants(extendedConstants, extension);\n }\n }\n });\n }\n\n /**\n * Invoke the function func on each of the extensions\n * @param {string} func the name of the function to invoke\n * @param {*} args optional arguments, passed directly to the function.\n * @return {Array} an array where each element is the result of the function called\n */\n traverseExtensions(func, ...args) {\n const results = [];\n this.extensionsArray.forEach((extension) => {\n results.push(extension[func](...args));\n });\n\n return results;\n }\n\n /**\n * The export property is an object with the variables, constants and events that are\n * exported by this container. It corresponds to the object declared in the interface.\n * section of the json file.\n * See baseContext.js for usage.\n * @return {Object}\n */\n get export() {\n if (!this.exported) {\n this.exported = {\n constants: {},\n variables: {},\n };\n\n const { constants } = this.definition.interface;\n\n if (constants) {\n Object.keys(constants).forEach((name) => {\n this.exported.constants[name] = this.scope.variableNamespaces[Constants.VariableNamespace.CONSTANTS][name];\n });\n // Protects export.constants from being modified. Constants cannot be added, removed or modified.\n Object.freeze(this.exported.constants);\n }\n\n // Only add getter to variables defined in the interface section\n const variableDefs = this.definition.interface.variables;\n if (variableDefs) {\n const vars = this.scope.variableNamespaces[Constants.VariableNamespace.VARIABLES];\n Object.keys(variableDefs).forEach((name) => {\n const descriptor = {\n get() {\n return vars[name];\n },\n enumerable: true,\n };\n\n // If the variable is writable, defines a setter. The absence of setter makes it read-only.\n if (variableDefs[name].mode === 'readWrite') {\n descriptor.set = (value) => {\n vars[name] = value;\n };\n }\n\n Object.defineProperty(this.exported.variables, name, descriptor);\n });\n // Protects export.variables from being modified. Variables cannot be added, removed or modified.\n Object.preventExtensions(this.exported.variables);\n }\n }\n\n return this.exported;\n }\n\n /**\n * Loads all the extensions that apply to this container. It resolves once the extensions are loaded\n * and stored in the base container.\n * @return {Promise} a promise resolving when each extension for this container is loaded and stored\n */\n loadExtensions() {\n return Promise.resolve().then(() => {\n const extensionPath = this.requirePath.replace(this.application.requirePath, '');\n return this.application.extensionRegistry.loadContainerExtensions(extensionPath, this)\n .then((exts) => this.storeExtensions(exts));\n });\n }\n\n /**\n * storeExtensions\n */\n storeExtensions(extensionsArray) {\n this.extensionsArray = this.extensionsArray.concat(extensionsArray);\n\n extensionsArray.forEach((extension) => {\n this.extensions[extension.extensionId] = extension;\n });\n }\n\n /**\n * Initialize the descriptor object default value\n */\n initDefault(definition) {\n const def = definition;\n\n def.types = def.types || {};\n def.variables = def.variables || {};\n def.metadata = def.metadata || {};\n def.constants = def.constants || {};\n def.events = def.events || {};\n def.eventListeners = def.eventListeners || {};\n def.interface = def.interface || {};\n def.interface.events = def.interface.events || {};\n def.interface.constants = def.interface.constants || {};\n def.interface.variables = def.interface.variables || {};\n def.interface.types = def.interface.types || {};\n\n // Initialize the security entry with non-empty values\n def.security = def.security || {};\n const { security } = def;\n if (!security.access) {\n security.access = {};\n }\n\n // filter decorators\n Utils.removeDecorators(def.constants);\n Utils.removeDecorators(def.interface.constants);\n Utils.removeDecorators(def.variables);\n Utils.removeDecorators(def.interface.variables);\n Utils.removeDecorators(def.eventListeners);\n Utils.removeDecorators(def.types);\n Utils.removeDecorators(def.interface.types);\n Utils.removeDecorators(def.chains);\n\n // Make definition a readonly properties for safety\n Object.defineProperty(this, 'definition', {\n value: def,\n configurable: true,\n enumerable: true,\n });\n }\n\n /**\n * Save the parameters to the runtimeEnvironment\n * This is used by the DT to pass parameters between pages shown in different iframes\n * @param {Object} params\n */\n saveNavigateParamsInDt(params) {\n if (params) {\n this.application.runtimeEnvironment.saveInputParameters({\n get plainParams() {\n // make sure we clone the parameters to remove getters and setters so it's a plain object\n return Utils.cloneObject(params);\n },\n });\n }\n }\n\n /**\n * Prepares the arguments and calls canNavigateToPage. This is only needed for DT to\n * be able cancel navigation.\n * @param {Object} options the object with all the navigateToPage option\n * @return {Promise} a promise resolving to true when navigation is allowed\n */\n validateNavigationInDt(options) {\n const rtEnv = this.application.runtimeEnvironment;\n // For DT environment, retrieve current and destination page then invoke the\n // canNavigatePage to give a chance to DT to cancel navigation.\n const currentPath = this.application.getCurrentPagePath();\n\n if (options.operation === 'navigateToPage' || options.operation === 'oldNavigateToPage') {\n let destinationPath = options.page || '';\n\n // Build the destination full path\n if (destinationPath[0] !== '/' && this.parent) {\n const parentPath = this.parent.getPath();\n if (parentPath) {\n destinationPath = `${parentPath}/${destinationPath}`;\n }\n }\n\n this.saveNavigateParamsInDt(options.params);\n return rtEnv.canNavigateToPage(currentPath, destinationPath);\n }\n\n this.saveNavigateParamsInDt(options.params);\n return rtEnv.canNavigate(currentPath, options);\n }\n\n /**\n * Navigate to a page of the application with given input parameters.\n *\n * @param {Object} options The navigation options\n * @param {String} options.page The destination page path relative to this flow (required)\n * @param {Object} options.params A map of URL parameters (optional)\n * @param {String} options.history Effect on the browser history. Allowed value are 'replace', 'skip' or 'push'.\n * If the value is 'replace', the current browser history entry is replace,\n * meaning that back button will not go back to it.\n * If the value is 'skip', the URL is left untouched.\n * (optional and default is push)\n * @param {Object} navContext the navigation context (See NavigationContext)\n * @returns {Promise} a promise that resolves to an object with a property named 'navigated' which\n * value is true or false depending if the navigation reaches the target page\n */\n navigateOperation(options, navContext) {\n return Promise.resolve().then(() => {\n let getLeafPageInstance;\n let destination;\n let message = '';\n let target;\n\n switch (options.operation) {\n case 'navigateToPage':\n destination = options.page;\n message = 'page';\n getLeafPageInstance = this.getLeafPageInstance.bind(this);\n break;\n\n case 'navigateToFlow':\n destination = options.flow;\n message = 'flow';\n // Changing the parent flow consist of change the flow of the parent page\n target = options.target === 'parent' ? this.parent.parent : this;\n getLeafPageInstance = this.getLeafPageInstanceFromFlowId.bind(target);\n break;\n\n case 'navigateToPackage':\n destination = options.package;\n message = 'app-package';\n // Navigation to an app-flow is always done by application\n getLeafPageInstance = this.getLeafPageInstanceFromFlowId.bind(this.application);\n break;\n\n case 'oldNavigateToPage':\n destination = options.page;\n message = 'path';\n getLeafPageInstance = this.getLeafPageInstance.bind(this);\n break;\n\n default:\n break;\n }\n\n this.log.info('Starting navigation to', message, destination);\n\n const oldInputParams = Utils.cloneObject(History.getInputParameters());\n const newInputParams = options.params || {};\n\n // diffInputParam is defined if the input parameters are different from what's on the browser history.\n const diffInputParam = Utils.diff(newInputParams, oldInputParams);\n if (diffInputParam) {\n // Store a copy of the new input parameters to the history state\n History.setInputParameters(newInputParams);\n }\n\n return getLeafPageInstance(destination, navContext).then((page) => {\n // Page can be undefined when navigation is cancelled\n if (page) {\n // If the destination is in an other package, check if the page is navigable\n if (navContext.container.package !== page.package) {\n // The following function throws if the page is not navigable\n page.checkNavigable();\n }\n return this.navigate(page, options, diffInputParam, oldInputParams);\n }\n\n // Clean up any created page during the cancelled/aborted navigation\n navContext.clean();\n\n return { navigated: false };\n });\n });\n }\n\n /**\n * Given a path, returns a promise that resolves with the page instance nested the deepest.\n * The page path can be a page id or a path of ids starting with a page id like:\n * pageId/flowId/pageId...\n * When done traversing the given path, continue drilling in the default page\n * or default container up to the point where the leaf page is reached which is\n * a page without a default flow.\n *\n * Called by navigateOperation\n *\n * @param {String} pagePath the navigation path\n * @param {Object} navContext the navigation context\n * @returns {Promise} a Promise resolving to the leaf page instance\n */\n getLeafPageInstance(pagePath, navContext) {\n // If the path starts with /, starts the navigation relative to\n // the default page of the application\n if (pagePath.startsWith('/')) {\n return this.application.getLeafPageInstance(pagePath.substr(1), navContext);\n }\n\n if (pagePath === '') {\n // With the navigate action, an empty path means navigate to the default page of the parent flow\n return this.parent.loadDefaultContainers(navContext);\n }\n\n // 3 phases:\n // * Load the container for the first segment of the path\n // * Load any other segment in the path\n // * Load default containers\n\n const segments = pagePath.split('/');\n\n // Load the first segment\n return this.loadFirstPathSegment(segments.shift(), navContext)\n .then((nestedContainer) => {\n // It is possible firstSegment return undefined when beforeEnter return false or\n // when the page is not found.\n // In that case, the navigation is cancelled so no point drilling in nested page,\n // just return undefined.\n if (!nestedContainer) {\n return Promise.resolve();\n }\n\n // Loads other segments in the path\n return nestedContainer.loadPathSegments(segments, navContext);\n })\n .then((nestedContainer) => {\n if (!nestedContainer) {\n return Promise.resolve();\n }\n\n // Now that we loaded the container of the last segment of the path,\n // drill in the default to reach the leaf page.\n return nestedContainer.loadDefaultContainers(navContext);\n })\n .catch((error) => {\n if (HttpError.isFileNotFound(error)) {\n this.fireNotificationEvent(`${Utils.formatLoadError(error)} while loading path \"${pagePath}\".`);\n } else {\n throw error;\n }\n });\n }\n\n /**\n * Fire a notification event using a message.\n * The event uses the default setting: empty summary, persist display mode and error type\n *\n * @param {String} message the message to put in the payload of the event\n */\n fireNotificationEvent(message) {\n const eventHelper = new EventHelper({ container: this });\n return eventHelper.fireNotificationEvent({ message });\n }\n\n /**\n * Given a path, return a promise that resolves with the page instance nested the deepest.\n * When done traversing the given path, continue drilling in the default page\n * or default container up to the point where the leaf page is reached, which is\n * a page without a default flow.\n *\n * Called by navigateOperation\n *\n * @param {String} flowId the id of the flow the content is changed to\n * @param {Object} navContext\n * @return {Promise} a Promise resolving to the leaf page instance\n */\n getLeafPageInstanceFromFlowId(flowId, navContext) {\n const { page } = navContext.options;\n // An empty flow id without a page means navigate to the default page\n if (!flowId && (!page || page === '')) {\n return this.loadDefaultContainers(navContext);\n }\n\n // Load the flow/app-package\n return this.loadContainer(flowId, navContext)\n // Now that we loaded the container of the last segment of the path,\n // drill in the default to reach the leaf page.\n .then((nestedContainer) => {\n let promise;\n if (nestedContainer) {\n if (!page || page === '') {\n promise = nestedContainer.loadDefaultContainers(navContext);\n } else {\n promise = nestedContainer.getLeafPageInstance(page, navContext);\n }\n }\n\n return promise;\n })\n .catch((error) => {\n if (HttpError.isFileNotFound(error)) {\n this.fireNotificationEvent(`${Utils.formatLoadError(error)} while loading flow \"${flowId}\".`);\n } else {\n throw error;\n }\n });\n }\n\n /**\n * From the current container this method drills into the defaults to\n * get to the leaf page.\n * @return {Promise} a promise that resolves to the leaf page or undefined\n */\n loadDefaultContainers(navContext) {\n const id = this.router.defaultStateId;\n if (id) {\n return this.loadContainer(id, navContext)\n .then((nestedContainer) => (nestedContainer\n ? nestedContainer.loadDefaultContainers(navContext)\n : undefined));\n }\n // If there is no default, we reached the leaf page\n return Promise.resolve(this);\n }\n\n /**\n * Loads the container for the first segment of a navigation path\n * The default is to load the container directly. The Page object has a\n * different implementation\n *\n * @param {String} id\n * @param {Object} navContext\n * @return {Promise}\n */\n loadFirstPathSegment(id, navContext) {\n return this.loadContainer(id, navContext);\n }\n\n /**\n * Traverse the path segment and load the containers\n * @param {Array} segments array of path segments\n * @param {Object} navContext\n * @return {Promise} a promise that resolves to a container or undefined\n */\n loadPathSegments(segments, navContext) {\n if (segments.length > 0) {\n // Loads the container recurse with what is left of the array.\n return this.loadContainer(segments.shift(), navContext)\n .then((nestedContainer) => (nestedContainer\n ? nestedContainer.loadPathSegments(segments, navContext)\n : undefined));\n }\n\n return Promise.resolve(this);\n }\n\n /**\n * Given a page object, navigate to this page\n * @param {Page} page the page object\n * @param {Object} options the navigateToPage action parameters\n * @param {Object} diffInputParam an object truthy if old an new input parameters are different\n * @param {Object} oldInputParams an object representing the old input parameter values\n */\n navigate(page, options, diffInputParam, oldInputParams) {\n // set the historyUpdate = 'skip' on the router instance so that we do not update the browser history\n // before the 'vbPageEnter' event\n const owningRouter = page.parent.router;\n if (owningRouter) {\n if (options.history === 'skip') {\n Object.defineProperty(owningRouter, 'historyUpdate', {\n value: options.history,\n enumerable: true,\n configurable: true,\n });\n } else {\n // clean up any previous state if any\n delete owningRouter.historyUpdate;\n }\n }\n\n const navigationPath = page.getNavPath();\n\n // When navigation is to the same page, simply update the input parameters. We don't\n // want to call Router.go so we can detect popstate event case in the navigated event\n const navigateToSamePage = () => {\n let navigated = { navigated: true };\n let resultMsg = 'cancelled';\n let reasonMsg = 'because it is the current page and input parameters';\n\n // If input params are the same as what is on the browser history,\n // there is no state change so nothing to do\n if (!diffInputParam) {\n reasonMsg += ' are the same';\n navigated = { navigated: false };\n } else if (!options.params) {\n // Navigating to the same page without param is no-op, so restore the original\n // input param and bail out like nothing happen.\n History.setInputParameters(oldInputParams);\n reasonMsg += ' are undefined';\n navigated = { navigated: false };\n } else {\n // Update the each flow/page in the current hierarchy with the new parameters\n page.refreshInputParameters();\n // Push the new state to the browser history\n History.pushState();\n\n // There are 2 types of path for a page, one with the hidden shell page id (fullPath)\n // looking like shell/main/start and one without (getNavPath) looking like main/start.\n // Make sure to update the browser history with fullPath, not navigationPath. This is\n // because when the router handle the popState event in popStateEventListener, it\n // compares the fullPath of the current page, not the navigation path. Also note\n // that fullPath is also the value used when calling Router.updateState in page.run()\n Router.updateState(page.fullPath);\n History.sync();\n\n this.application.previousPagePath = navigationPath;\n this.application.currentPageParams = Utils.cloneObject(History.getInputParameters());\n\n // Invoke the after navigate event\n page.invokeEventWithBubbling(Constants.AFTER_NAVIGATE_EVENT, {\n previousPage: navigationPath,\n previousPageParams: oldInputParams,\n currentPage: navigationPath,\n currentPageParams: this.application.currentPageParams,\n });\n resultMsg = 'done';\n reasonMsg = '';\n Router.clearBusyState();\n }\n\n this.log.info('Navigation to', navigationPath, 'is', resultMsg, reasonMsg);\n return navigated;\n };\n\n const navigateToOtherPage = () => {\n const goOptions = {};\n if (options.history === 'replace' || options.history === 'skip') {\n goOptions.historyUpdate = options.history;\n }\n\n // Before initiating the router navigation, clear up the current search because of the\n // possible fromUrl input parameter. Make a copy of the search in case the navigation does\n // not succeed.\n const oldSearch = History.getSearch();\n History.resetUrlParameters();\n\n // Because of default page defined using flow, the navigation path might be different\n // from original path so use the page fullPath.\n // Launch the navigation and return the outcome immediately without waiting for the\n // navigation to complete.\n Router.go(navigationPath, goOptions)\n .then((result) => {\n if (result.hasChanged === false) {\n // If the navigated was vetoed by a beforeExit event, we need to clear the busy state\n Router.clearBusyState();\n // Restore search and input params if navigation was cancelled.\n History.setSearch(oldSearch);\n History.setInputParameters(oldInputParams);\n } else {\n // If the window is currently scrolled, the browser behavior is to keep the scrolled\n // position. This is not desired when navigating, so scroll to the top.\n window.scroll(0, 0);\n // Remove existing hash from URL since JET router does not\n History.setHash();\n // Update the page parents with the new parameters. No need to do the page which\n // has been initialized with the correct input parameters.\n page.parent.refreshInputParameters(true);\n }\n })\n .catch((obj) => {\n page.parent.deletePage(page.id);\n // Restore search and input params if navigation failed.\n History.setSearch(oldSearch);\n History.setInputParameters(oldInputParams);\n delete owningRouter.historyUpdate;\n throw obj;\n });\n\n return { navigated: true };\n };\n\n return (this.application.getCurrentPagePath() === navigationPath)\n ? navigateToSamePage()\n : navigateToOtherPage();\n }\n\n /**\n * Returns an Array of objects that contain a (curried) this.callActionChain function.\n *\n * @param eventListener either (new) contains an 'actions' array, or (old) is an array, of objects with 'chainId'\n * @return {Array<{chainId: string, fnc: function}>}\n *\n */\n createListenerChainFunctions(eventListener) {\n const functionWrappers = [];\n\n const listenerChains = eventListener.chains || [];\n\n listenerChains.forEach((listenerAction) => {\n // setup the action chain and execute\n const { chainId, parameters } = listenerAction;\n // curry a function that will invoke the action chain with the parameters\n // the function still requires the 'expressionContexts' argument\n const fnc = this.callActionChain.bind(this, chainId, parameters || {});\n functionWrappers.push({ chainId, fnc });\n });\n return functionWrappers;\n }\n\n /**\n * call the functions returned from createListenerChainFunctions in parallel\n * this is the original behavior, for older non-declared events, and VB events\n *\n * @param chainFunctionWrappers {Array<{chainId: string, fnc: function}>}\n * @param expressionContexts\n * @returns {Promise}\n */\n callListenerChainFunctionsInParallel(chainFunctionWrappers, expressionContexts) {\n // swallow the error here and defer to the action chains to report errors\n // todo: exception was being swallowed with no reporting;\n // reason for this change was user error, example used $page.functions in a\n // module calling callModuleFunctionAction ($page not defined).\n const promises = chainFunctionWrappers.map((wrapper) => wrapper.fnc(expressionContexts));\n return Promise.all(promises).catch((err) => {\n this.log.error(err);\n\n // alwaysRethrowException is set by functional test to allow checking for failure cases\n if (this.application.alwaysRethrowException) {\n throw err;\n }\n\n return Promise.resolve();\n });\n }\n\n /**\n * Call the onVariableChange event listeners.\n *\n * NOTE: this method matches the functionality of the original 'callEventListeners', which was removed,\n * and split into createListenerChainFunctions/callListenerChainFunctionsInParallel.\n *\n * The name is changed because it is now called specifically for variables, and should not be used for\n * general event processing.\n * Events can now have 'behavior', which may determine how the chains should be called (serially, parallel, etc).\n *\n * @param variableName\n * @param eventListener\n * @param expressionContexts\n * @returns {Promise}\n */\n callVariableEventListeners(variableName, eventListener, expressionContexts) {\n const promises = [];\n const chainFunctionWrappers = this.createListenerChainFunctions(eventListener);\n promises.push(this.callListenerChainFunctionsInParallel(chainFunctionWrappers, expressionContexts));\n\n // determine whether the current variable is from the interface and therefore extendable:\n const { variables } = this.definition.interface;\n const variable = variables[variableName];\n if (variable) {\n // since this variable is defined in the interface, we now need to check\n // whether it has been extended by any extensions\n const eventPayload = expressionContexts[Constants.ContextName.EVENT];\n const extPromises = this.traverseExtensions('callExtensionVariableEventListeners', variableName, eventPayload);\n promises.push(...extPromises);\n }\n\n return Promise.all(promises);\n }\n\n /**\n * Call the onVariableChange event listeners for extensions.\n * @param variableName variable for which the onValueChanged listener is being called\n * @param eventPayload the payload of the event\n * @returns {Promise|*}\n */\n callExtensionVariableEventListeners(variableName, eventPayload) {\n // determine whether the extensions variables are defined\n const { variables } = this.definition.extensions;\n if (variables) {\n // now determine whether the given variable has been extended by this extension container\n // and has the onValueChanged listener defined\n const extendedVariable = variables[variableName];\n if (extendedVariable && extendedVariable.onValueChanged) {\n // the extension container has the onValueChanged listener defined in this extension container\n\n // get the expression context variables\n const context = this.getAvailableContexts().clone();\n // and add the $event\n context[Constants.ContextName.EVENT] = eventPayload;\n\n return this.callVariableEventListeners(variableName, extendedVariable.onValueChanged, context);\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Invokes an action chain with the given ID. The ID may include qualifiers to invoke\n * an action chain in different contexts.\n *\n * The parameters will be passed directly into the chain and may be expressions.\n *\n * A promise will be returned containing the name of the outcome and result from calling\n * that chain. Errors occurring during the chain will result in this promise being rejected.\n *\n * @final\n * @param id The id of the chain to invoke\n * @param params The parameters to the chain\n * @param expressionContexts An optional set of contexts that form the expression context for the chain.\n * If not specified, will use the container's\n * @returns {Promise.<*>} The result of calling the action chain\n */\n callActionChain(id, params = {}, expressionContexts = this.getAvailableContexts()) {\n const context = {\n application: this.application,\n parent: this.parent,\n container: this,\n chains: this.chains,\n };\n\n if (expressionContexts && expressionContexts[Constants.ContextName.EVENT]) {\n const e = expressionContexts[Constants.ContextName.EVENT];\n logger.finer('action chain', id, 'called with params', params, 'for event', e);\n }\n\n return ActionChain.startChain(id, params, expressionContexts, context);\n }\n\n /**\n * The complete set of variables {Context} for expression evaluation of variable default values during\n * variable initialization.\n *\n * This method is used by createVariable and invokeEvent in container.js.\n *\n * The container subclass should create the availableContexts object\n *\n * @return {Object} a map of expression contexts, mapped by $\n */\n getAvailableContexts() {\n if (!this.availableContexts) {\n // Call the static getAvailableContexts method on the context object (pageContext, flowContext, etc)\n // and returns the set of $xxxx variables available for binding and expressions\n this.availableContexts = this.constructor.ContextType.getAvailableContexts(this);\n // Propagate the getAvailableContexts call to all extensions\n this.traverseExtensions('getAvailableContexts');\n }\n return this.availableContexts;\n }\n\n /**\n * returns the ContextType constructor used to create the '$' expression context\n * @return {ContainerContext.constructor} constructor of type ContainerContext\n * @see loadMetadata\n */\n static get ContextType() {\n throw Error('need to override ContextType');\n }\n\n /**\n * the definition has been loaded, now create any event-related constructs\n */\n initializeEvents() {\n this.initializeEventDefinitions();\n this.initializeComponentListeners();\n\n // Propagate the initializeEvents call to all extensions\n this.traverseExtensions('initializeEvents');\n }\n\n /**\n * look at \"events\" and \"componentEvents\" and register the declarations\n */\n initializeEventDefinitions() {\n // process \"events\" and \"componentEvents\", at top level and in \"interface\"\n const interfaceEvents = this.definition.interface.events || {};\n Object.keys(interfaceEvents)\n .forEach((eventName) => {\n const def = interfaceEvents[eventName];\n // 'listenable' is the default for interface events\n if (!def.mode) {\n def.mode = Constants.EventMode.LISTENABLE;\n }\n });\n\n // Events defined in interface have precedence. There is an audit in DT to catch duplicates\n const allDefs = Object.assign({}, this.definition.events, interfaceEvents);\n\n Object.keys(allDefs)\n .forEach((eventName) => {\n const def = allDefs[eventName];\n const isInterface = !!interfaceEvents[eventName];\n EventRegistry.register(this, eventName, def, isInterface);\n });\n }\n\n /**\n *\n */\n initializeComponentListeners() {\n const listeners = this.definition.eventListeners || {};\n\n // Setup the component event listeners\n Object.keys(listeners).forEach((eventName) => {\n this.eventListeners[eventName] = this.createComponentEventFunction(eventName, listeners[eventName]);\n });\n }\n\n /**\n * creates a method for the $listeners function map.\n * Invokes the action chain listener asynchronously, and evaluates some synchronous, optional, expression\n * properties (stopPropagation, preventDefault) to control DOM event behavior.\n * The synchronous properties do not affect calling the listener action chains, they only affect the behavior of\n * the DOM event.\n * @param eventListenerName\n * @param eventListener\n * @returns {function(*=, *)}\n */\n createComponentEventFunction(eventListenerName, eventListener) {\n return (event, current, bindingContext) => {\n // clone the event; methods won't work, but they don't work asynchronously, anyway.\n // this means 'currentTarget' will stick around\n // todo: revisit cloneObject(event)\n // when discussed, (cds) said just pass it as is, but with the previous 'ui' hack below, that seems\n // strange to modify the actual event. also, I (mjb) would like to do a similar hack for the 'currentTarget',\n // which becomes null after the sync listener, but can be useful when sharing event listeners.\n const newEvent = Utils.cloneObject(event, {});\n\n // async, don't wait\n this.invokeComponentEvent(eventListenerName, newEvent, current, bindingContext);\n\n const expressionContexts = this.getAvailableContexts().clone();\n expressionContexts[Constants.ContextName.EVENT] = newEvent;\n\n // now, look at the listener, to see if it has a 'stopPropagation' expression.\n // NOTE: this expression cannot reference the current listeners result, since it is running asynchronously.\n // NOTE: the action chains have already been called at this point; these expressions do not prevent that\n const stopPropagation = this.evaluateSynchronousHandlerProperty(eventListener.stopPropagation,\n expressionContexts);\n\n // if 'stopPropagation' expression is true, call event.stopPropagation\n if (stopPropagation) {\n if (typeof event.stopPropagation === 'function') {\n this.log.info('stopping event propagation in', eventListenerName, 'event listener');\n event.stopPropagation();\n } else {\n this.log.warn(eventListenerName,\n 'event listener has a true \\'stopPropagation\\' expression,',\n ' but listener argument does not have \\'stopPropagation\\' method');\n }\n }\n\n // and look at the listener, to see if it has a 'preventDefault' expression\n const preventDefault = this.evaluateSynchronousHandlerProperty(eventListener.preventDefault,\n expressionContexts);\n\n // likewise, if 'preventDefault' expression is true, call event.preventDefault\n if (preventDefault) {\n if (typeof event.preventDefault === 'function') {\n this.log.info('preventing default behavior for event in', eventListenerName, 'event listener');\n event.preventDefault();\n } else {\n this.log.warn(eventListenerName, 'event listener has a true \\'preventDefault\\' expression,',\n 'but listener argument does not have \\'preventDefault\\' method');\n }\n }\n };\n }\n\n /**\n * Invoke a page event listener using its name.\n * @param {string} eventName the name of the event listener array\n * @param {*} eventPayload the payload of the event\n * @param {*} current the payload (if available) of the event (i.e. the iterable of a foreach)\n * @param {*} bindingContext binding context of the event\n * @return {Promise} a promise that resolves when every listener in the array is done\n */\n invokeComponentEvent(eventName, eventPayload, current, bindingContext) {\n const eventListener = this.definition.eventListeners[eventName];\n\n if (eventListener) {\n // collect the variables\n const expressionContexts = this.getAvailableContexts().clone();\n\n // and add the $event, $current, and $eventContext properties\n expressionContexts[Constants.ContextName.EVENT] = eventPayload;\n expressionContexts[Constants.ContextName.CURRENT] = current;\n expressionContexts[Constants.ContextName.BINDING_CONTEXT] = bindingContext;\n\n logger.beforeHandleEvent(this.className, this.id,\n 'handling component event', eventName, 'with payload:', eventPayload, 'and current:', current);\n\n const mo = new EventMonitorOptions('componentEvent', eventName, eventPayload, this);\n return this.log.monitor(mo, (eventTime) => {\n // Set the busy context so the webdriver test know to wait on the event to be handled\n const busyContext = ojContext.getPageContext().getBusyContext();\n const busyStateResolver = busyContext.addBusyState({ description: eventName });\n const chainFunctionWrappers = this.createListenerChainFunctions(eventListener);\n // callListenerChainFunctionsInParallel is the original behavior, that calls chains in parallel\n return this.callListenerChainFunctionsInParallel(chainFunctionWrappers, expressionContexts)\n .then(() => {\n logger.afterHandleEvent(this.className, this.id,\n 'handled component event', eventName, 'successfully', eventTime());\n })\n .catch((error) => {\n logger.afterHandleEvent('Failed to handle component event', eventName, eventTime(error));\n this.log.error(error);\n })\n .finally(() => {\n busyStateResolver();\n });\n });\n }\n\n return Promise.resolve(null); // todo: what should we really use?\n }\n\n /**\n * for the event listener, look for an optional property of the given name, and create an\n * expression from its value.\n * If the expression evaluates to true, this method returns true.\n *\n * @param expressionString expression. Return 'defaultValue' value if null\n * @param expressionContexts normal page expression context, plus $event\n * @param defaultValue optional value to return when the expression is null or undefined. defaults to false.\n * @returns {*|boolean}\n */\n // eslint-disable-next-line class-methods-use-this\n evaluateSynchronousHandlerProperty(expressionString, expressionContexts, defaultValue = false) {\n if (expressionString) {\n const expr = StateUtils.getValueOrExpression(expressionString, expressionContexts);\n return Utils.resolveIfObservable(expr);\n }\n return defaultValue;\n }\n\n /**\n * Called by the router to give the opportunity to the container to cancel navigation\n * on exit. The default implementation is to return true to accept the router transition.\n * @return {Promise} a promise that resolves to a boolean.\n */\n // eslint-disable-next-line class-methods-use-this\n canExit() {\n return Promise.resolve(true);\n }\n\n /**\n * Invoke an event using the current expression contexts\n *\n * @param {string} eventName the name of the event listener array\n * @param {*} eventPayload the payload of the event\n * @param {EventBehavior} eventBehavior optional, only provided when the caller is EventBehavior\n * @param {*} previousResult only valid for events of type \"transform\"; the previous listener result\n * @return {Promise} a promise that resolves when every listener in the array is done\n */\n invokeEvent(eventName, eventPayload, eventBehavior, previousResult) {\n if (eventName.startsWith(Constants.VB_EVENT_MARKER)) {\n Performance.timestamp(this.id, eventName);\n }\n const mo = new EventMonitorOptions('runtimeEvent', eventName, eventPayload, this);\n return this.log.monitor(mo, (finish) => Promise.resolve()\n .then(() => {\n const lifecycleEventPromises = [];\n\n const eventListener = this.findEventListener(eventName);\n\n if (eventListener) {\n // get the expression context variables\n const expressionContexts = this.getAvailableContexts().clone();\n // and add the $event\n expressionContexts[Constants.ContextName.EVENT] = eventPayload;\n\n // $parameters only meaningful for vbBeforeEnter\n // TODO: Instead of checking for the beforeEnter event, there should be\n // an event class on which we would invoke preHandling and postHandling\n // tasks. The beforeEnter event implementation would do the parameter\n // building there.\n if (eventName === Constants.BEFORE_ENTER_EVENT) {\n expressionContexts[Constants.ContextName.PARAMETERS] = this.buildAllParameters();\n }\n\n const chainFunctionWrappers = this.createListenerChainFunctions(eventListener);\n let promise;\n\n if (eventBehavior) {\n promise = eventBehavior\n .callChainFunctions(this, chainFunctionWrappers, expressionContexts, previousResult);\n // because vbAfterNavigate is a bubbling event we also need to\n // traverse extensions so that their listeners are fired as well\n if (eventName !== Constants.AFTER_NAVIGATE_EVENT) {\n return promise;\n }\n } else {\n // this is used for internal ('vbXXX').\n promise = this.callListenerChainFunctionsInParallel(chainFunctionWrappers, expressionContexts);\n }\n\n lifecycleEventPromises.push(promise);\n }\n\n // VBS-1792 support vbEnter events for extensions\n // VBS-2088 support vbExit and vbAfterNavigate for extensions\n // @todo support vbBeforeEnter and vbBeforeExit\n if (eventName === Constants.ENTER_EVENT\n || eventName === Constants.EXIT_EVENT\n || eventName === Constants.AFTER_NAVIGATE_EVENT) {\n const promises = this\n .traverseExtensions('invokeEvent', eventName, eventPayload, eventBehavior, previousResult);\n lifecycleEventPromises.push(...promises);\n }\n\n // don't return array, keep pre VBS-1792 behavior, just in case\n return Promise.all(lifecycleEventPromises).then((results) => {\n const listenerResults = results.filter((r) => r !== Constants.NO_EVENT_LISTENER_RESPONSE);\n\n // if no listeners, return the marker; used when collecting (transform event) results.\n return (listenerResults.length > 0) ? listenerResults[0] : Constants.NO_EVENT_LISTENER_RESPONSE;\n });\n })\n .then((outcome) => {\n finish();\n return outcome;\n })\n .catch((err) => {\n finish(err);\n throw err;\n }));\n }\n\n /**\n * find a listener, if it exists, for the event name\n * @param eventName may (or may not) be qualified\n * @returns {*}\n * @private\n */\n findEventListener(eventName) {\n return EventRegistry.findListener(this, eventName);\n }\n\n /**\n * Return all the variable definitions, from top level and from interface\n * @return {Object}\n */\n getAllVariablesDefinition() {\n // Variables defined in interface have precedence. There is an audit in DT to catch duplicates\n return Object.assign({}, this.definition.variables, this.definition.interface.variables);\n }\n\n /**\n * Invoke a (page) event listener using its name.\n *\n * NOTE: this is currently implemented to allow either DECLARED or UNDECLARED events (the original events,\n * like lifecycle events, or custom and notification events).\n *\n * If the current page/flow does not have a listener, or the listener explicitly returns an outcome\n * to indicate bubbling should continue (see 'shouldBubble'),\n * then, traverse up the containment, looking for additional listeners, as:\n *\n * a) this.parent (flows and pages can both have listeners).\n * b) continue to recurse to (a) where 'this' is the current flow 'this.parent' from (b)\n *\n * this method is called once; the recursion happens in EventBehavior.recurseContainmentAndCreateFunctions()\n *\n * @param {string} eventName\n * @param {*} eventPayload\n *\n * @returns {Promise} resolved value depends on the event behavior (if any). only used for 'transform' behavior\n */\n invokeEventWithBubbling(eventName, eventPayload) {\n return Promise.resolve()\n .then(() => {\n /**\n * start the actual recursion, looking for listeners, and optionally continuing up the containment\n */\n const expressionContexts = this.getAvailableContexts().clone();\n expressionContexts[Constants.ContextName.EVENT] = eventPayload;\n\n const eventModel = EventRegistry.get(this, this, eventName);\n\n // This is the container where we start the event propagation.\n // For declared events, we always start with the 'leaf' page in the containment chain.\n // For (legacy) undeclared custom events, we start with the container firing the event.\n // This difference is handled by the EventBehavior.\n\n if (!eventModel) {\n // this means the event was declared , but is not usable by us (declared in a child container).\n throw new Error(`Event registry returned null for event ${eventName}`);\n }\n\n // finding an eventModel without a behavior should not happen here, but check, just in case\n if (!eventModel.behavior) {\n throw new Error(`No behavior found for event ${eventName}`);\n }\n\n if (!eventModel.behavior.triggerableBy(this)) {\n throw new Error(`Event '${eventName}' is not triggerable from container '${this.id}'`);\n }\n\n return eventModel.behavior.start(this, eventName, eventPayload, expressionContexts);\n });\n }\n\n /**\n * Initializes action chains from metadata.\n *\n */\n initializeActionChains() {\n this.chains = this.definition.chains;\n // Propagate the initializeActionChains call to all extensions\n this.traverseExtensions('initializeActionChains');\n }\n\n /**\n * Initialize variables of a specific namespace\n * @param {Object} variablesDef the definition of the variables loaded from the container json\n * @param {String} namespace the namespace, \"variables\", \"metadata\", See Constants.VariableNamespace\n * @param {Object} descriptor an object with additional option to be applied to the variable\n * @return {Promise} a promise that resolves when all variables are initialized\n */\n initializeVariableByNamespace(variablesDef, namespace, descriptor) {\n const promises = [];\n\n if (!variablesDef) {\n return Promise.resolve();\n }\n\n // build variable dependency graph\n // TODO: as a performance optimization this can be cached for the page so it's not recalculated every time the\n // page is visited\n const variablesDepsMap = StateUtils.buildVariablesDependenciesGraph(variablesDef, this.scopeResolver);\n\n // go through the variables and create each one.\n // this assumes the variable definition has been filtered by initDefault()\n Object.keys(variablesDef).forEach((variableName) => {\n const variableDef = variablesDef[variableName];\n const d = descriptor || {};\n d.dependencies = variablesDepsMap && variablesDepsMap[variableName];\n\n // metadata variables are not persisted, and don't come from the URL\n if (namespace === Constants.VariableNamespace.METADATA) {\n delete variableDef.input;\n delete variableDef.persisted;\n delete variableDef.rateLimit;\n }\n\n promises.push(this.createVariable(variableName, variableDef, namespace, d));\n });\n\n // return when all the variables have been created\n return Promise.all(promises);\n }\n\n /**\n * Create a scope to store the variables of this container\n */\n initVariableScope() {\n // For page scopes, the name used is the name of the page, not 'page' since there is a\n // point during the transition between page where both page scope exist.\n this.scope = Scope.createScope(this.getNewScopeName(), this);\n\n // create the scope Context, which contains facades, if it hasn't been created yet\n this.getAvailableContexts();\n\n // Propagate the initVariableScope call to all extensions\n this.traverseExtensions('initVariableScope');\n }\n\n /**\n * Initialize variables in each namespace\n * @return {Promise} a promise that resolves when all variables are initialized.\n */\n initAllVariableNamespace() {\n if (this.scope) {\n this.log.error('Scope already created');\n this.disposeScope();\n }\n this.initVariableScope();\n\n // Order of initialization is:\n // 1) constants\n // 2) builtins\n // 3) variables\n // 4) metadata\n this.initializeConstants();\n this.initializeBuiltins();\n\n // Return a promise so that the router will not enter the nested page until\n // the flow enter event is done executing. This is so the flow variables are\n // initialized with their final value before the page access them.\n return this.initializeVariables()\n .then(() => this.initializeMetadata())\n .then(() => {\n this.addScopeToStore();\n this.subscribeVariablesToStore();\n })\n .then(() => this.activateVariables());\n }\n\n addScopeToStore() {\n // this will add the scope to the redux store\n // Create a local store\n StoreManager.addScopeToStore(this.scope);\n // Extension store need to be created before subscribing variables\n this.traverseExtensions('addScopeToStore');\n }\n\n subscribeVariablesToStore() {\n this.scope.subscribeVariablesToStore();\n this.traverseExtensions('subscribeVariablesToStore');\n }\n\n /**\n * Activate all variables for the current container.\n * @return {Promise} that resolves when all variables are active\n * @private\n */\n activateVariables() {\n const availableContexts = this.getAvailableContexts();\n return Promise.resolve().then(() => this.scope.activateVariables(availableContexts)\n .then(() => this.traverseExtensions('activateVariables')));\n }\n\n /**\n * Initialize built-in variables.\n */\n // eslint-disable-next-line class-methods-use-this\n initializeBuiltins() {\n // Create a constant for the \"info\" builtins. For flows, the info object has 2 properties,\n // id and description\n const varDef = this.defineInfoBuiltinVariable();\n if (varDef) {\n this.createConstant(Constants.INFO_CONTEXT, {\n type: 'object',\n defaultValue: this.defineInfoBuiltinVariable(),\n },\n Constants.VariableNamespace.BUILTIN);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n defineInfoBuiltinVariable() {\n return null;\n }\n\n /**\n * Initialize constants from declaration.\n */\n initializeConstants() {\n // Constants defined in interface have precedence. There is an audit in DT to catch duplicates\n const allDefs = Object.assign({}, this.definition.constants, this.definition.interface.constants);\n\n // go through the constants and create each one.\n // this assumes the constant definition has been filtered by initDefault()\n Object.keys(allDefs).forEach((constantName) => {\n this.createConstant(constantName, allDefs[constantName]);\n });\n\n // Propagate the initializeConstants call to all extensions\n this.traverseExtensions('initializeConstants');\n }\n\n /**\n * Create a constant and store it in the scope\n * @param {String} constantName the name of the constant\n * @param {Object} constantDef the definition of the constant\n * @param {String} namespace the variable namespace, either \"constants\" or \"builtin\"\n */\n createConstant(constantName, constantDef, namespace = Constants.VariableNamespace.CONSTANTS) {\n // Constants cannot be of a VB type\n if (Utils.isInstanceType(constantDef.type)) {\n throw new Error(`Type cannot be a built-in type for constant ${constantName} in`\n + `${this.className} ${this.fullPath || this.definition.id}.`);\n }\n\n // If the constant has been extended, the availableContexts is coming from the extension\n // so that the potential expression in defaultValue is evaluated in the context of the extension.\n const contextSource = constantDef.extension || this;\n\n const defaultValue = StateUtils.createNonInstanceTypeDefaultValue(constantName, constantDef,\n this.scopeResolver, contextSource.getAvailableContexts());\n\n // Input Value management: \"fromCaller\" or \"fromUrl\"\n const inputParameterValue = this.manageInputParameter(constantName, constantDef, defaultValue);\n if (inputParameterValue !== undefined) {\n this.log.info('Loaded', constantDef.input, 'constant', Utils.getWebStorageItemName(this.application.id,\n this.scope.name, Constants.VariableNamespace.CONSTANTS, constantName), 'value:', inputParameterValue);\n }\n\n this.scope.createConstant(constantName, namespace,\n constantDef.type, defaultValue, inputParameterValue, constantDef.persisted);\n }\n\n /**\n * Initializes variables from declarations.\n *\n * @returns {Promise} A promise that resolves when all variables are initialized\n */\n initializeVariables() {\n const allDefs = this.getAllVariablesDefinition();\n const promises = [];\n promises.push(this.initializeVariableByNamespace(allDefs, Constants.VariableNamespace.VARIABLES));\n promises.push(...this.traverseExtensions('initializeVariables'));\n\n return Promise.all(promises);\n }\n\n /**\n * Initializes metadata declarations.\n *\n * @returns {Promise} A promise that resolves when complete\n */\n initializeMetadata() {\n const promises = [];\n promises.push(this.initializeVariableByNamespace(this.definition.metadata,\n Constants.VariableNamespace.METADATA,\n { writable: false }));\n promises.push(...this.traverseExtensions('initializeMetadata'));\n\n return Promise.all(promises);\n }\n\n /**\n * Creates a new variable with the proper default value, input handling, and persistence handling.\n *\n * @private\n * @param variableName The name of the variable\n * @param variableDef The structure of the variable definition in the page model\n * @param namespace optional, defaults to \"variables\"\n * @param descriptor optional, example: {writable: false}. overrides other values.\n * - dependencies, a Map of dependencies (on other variables) for the current variable.\n * See StateUtils.buildVariablesDependenciesGraph\n * @returns {Promise} A promise that resolves to a new variable\n */\n createVariable(variableName, variableDef, namespace = Constants.VariableNamespace.VARIABLES, descriptor) {\n const availableContexts = this.getAvailableContexts();\n\n // determine the default value for this variable then create the variable\n return StateUtils.createVariableDefaultValue(variableName, variableDef, this.scopeResolver,\n this.scope, availableContexts, namespace)\n .then((defaultValue) => {\n // Input Value management: \"fromCaller\" or \"fromUrl\"\n // TODO: pavi: input parameter reconciliation does not work for defaultValue that is an instance -\n // extendedType, factoryType, or 'any' random type today.\n // - For instance factory type the caller should be able to pass in value for 'constructorParams'\n // - For extended type the caller should be able to pass in value for 'defaultValue'\n // - random type instances use default constructor, so no input parameter can be passed in!\n const inputParameterValue = this.manageInputParameter(variableName, variableDef, defaultValue);\n if (inputParameterValue !== undefined) {\n this.log.info('Loaded', variableDef.input, 'variable',\n Utils.getWebStorageItemName(this.application.id, this.scope.name, namespace, variableName),\n 'value:', inputParameterValue);\n }\n\n // get the type\n const type = StateUtils.getType(variableName, variableDef, this.scopeResolver);\n\n // use 'descriptor', if provided. values in 'descriptor' override others\n const varDescriptor = Object.assign({}, {\n persisted: variableDef.persisted,\n input: variableDef.input,\n rateLimit: variableDef.rateLimit,\n }, descriptor);\n\n // create the variable\n const newVariable = this.scope.createVariable(variableName, namespace,\n type, defaultValue, inputParameterValue, varDescriptor, variableDef);\n\n // handle variable eventing\n this.addVariableValueChangedListeners(newVariable, variableDef, availableContexts);\n\n return newVariable;\n });\n }\n\n /**\n * Add valueChanged listeners for the variable if explicitly configured.\n * Note: This is also called for internal variables setup for builtin types.\n * @see StateUtils.instantiateType\n * @param newVariable\n * @param variableDef\n * @param availableContexts\n */\n addVariableValueChangedListeners(newVariable, variableDef, availableContexts) {\n const { onValueChanged } = variableDef;\n if (onValueChanged) {\n const varChangeTracker = {\n eventSource: newVariable.onValueChanged,\n eventListener: (e) => {\n const context = availableContexts.clone();\n context[Constants.ContextName.EVENT] = e; // capture event payload on the scope\n const eventName = e.type; // vb event type and name is the same\n logger.beforeHandleEvent(this.className, this.id,\n 'handling variable event', eventName, 'with payload:', e);\n const mo = new EventMonitorOptions('variableEvent', eventName, e, this);\n return this.log.monitor(mo, (eventTime) => {\n this.callVariableEventListeners(newVariable.name, onValueChanged, context).then(() => {\n logger.afterHandleEvent(this.className, this.id,\n 'handled variable event', eventName, 'successfully', eventTime());\n }).catch((error) => {\n logger.afterHandleEvent('Failed to handle variable event', eventName, eventTime(error));\n this.log.error(error);\n });\n });\n },\n };\n newVariable.onValueChanged.add(varChangeTracker.eventListener, this);\n this.variablesListeners.push(varChangeTracker);\n }\n }\n\n /**\n * if there is an imports declaration, load the (requireJS) modules.\n * This is how JET components, jetmodules and css modules are imported declaratively:\n *\n * \"imports\": {\n * \"components\": {\n * \"oj-button\": {\n * \"path\": \"ojs/ojbutton\"\n * }\n * },\n * \"modules\" : {\n * \"converterutilsI18n\": {\n * \"path\": \"ojs/ojconverterutils-i18n\"\n * }\n * },\n * \"css\" : [\n * \"/pages/resources/css/shell.css\",\n * \"./resources/css/shell2.css\",\n * \"https://static.oracle.com/cdn/fnd/gallery/2007.0.0/images/iconfont/ojuxIconFont.min.css\"\n * ]\n * }\n * @returns {Promise}\n */\n loadImports() {\n return Promise.resolve().then(() => {\n const imports = this.definition.imports;\n if (imports) {\n const promises = [];\n\n // initialize any components (JET or CCAs)\n if (imports.components) {\n const promise = this.importModule(imports.components);\n\n if (promise) {\n promises.push(promise);\n }\n }\n\n // load any modules\n if (imports.modules) {\n const promise = this.importModule(imports.modules, true);\n\n if (promise) {\n promises.push(promise);\n }\n }\n\n // load any css\n if (imports.css) {\n promises.push(this.importCss(imports.css));\n }\n return Promise.all(promises);\n }\n\n return undefined;\n });\n }\n\n /**\n * initialize any translation bundles\n * overridden by application to set a flag that it is declared in the app, and not a flow/page\n * @returns {Promise}\n */\n loadTranslationBundles() {\n if (!this.loadBundlesPromise) {\n // todo : define system vars, for substitutions in path\n this.bundles = new BundlesModel(this.definition.translations, this.application.runtimeEnvironment,\n this.getResourceFolder(), { initParams: this.application.initParams });\n this.loadBundlesPromise = this.bundles.load();\n }\n return this.loadBundlesPromise;\n }\n\n getInputParameterValue(variableName, variableDef) {\n let paramValue;\n\n // first load the value from runtimeEnvironment which takes precedence over everything else\n // NOTE: This is used by the DT to pass parameters between pages shown in different iframes\n let inputParams = this.application.runtimeEnvironment.loadInputParameters();\n let fromCallerValue = inputParams && inputParams[variableName];\n\n if (fromCallerValue === undefined) {\n inputParams = History.getInputParameters();\n fromCallerValue = inputParams && inputParams[variableName];\n }\n\n // If the page variable is 'fromCaller' return the input param\n if (variableDef.input === 'fromCaller') {\n paramValue = fromCallerValue;\n // If the page variable is 'fromUrl' and a URL parameter with this name exist,\n // replace the variable default value with input parameter value.\n } else if (variableDef.input === 'fromUrl') {\n // 'fromCaller' has precedence over 'fromUrl'\n if (fromCallerValue !== undefined) {\n paramValue = fromCallerValue;\n } else {\n const fromUrlValue = History.getUrlParameter(variableName);\n if (fromUrlValue !== undefined) {\n paramValue = fromUrlValue;\n }\n }\n }\n\n return paramValue;\n }\n\n /**\n * Retrieve the input parameter value for a variable of type 'fromCaller' or 'fromUrl'.\n * This method does two things:\n * 1) return the variable value if one can be found using input parameter or URL.\n * 2) for variable of input type fromUrl, save the possible value on the URL.\n * For a variable with input fromUrl, the fromCaller value has precedence.\n *\n * @param {string} variableName name of the variable\n * @param {object} variableDef definition of the variable from descriptor\n * @param {object|function} defaultValue the default value\n * @return {object} the input parameter value for this variable or undefined\n */\n manageInputParameter(variableName, variableDef, defaultValue) {\n let paramValue = this.getInputParameterValue(variableName, variableDef);\n\n // Append fromUrl variable to the URL only if different from defaultValue\n if (variableDef.input === 'fromUrl') {\n // paramValue might need to be coerce to the right type because the value\n // is a string if it's coming from the URL\n paramValue = AssignmentHelper.coerceType(paramValue, variableDef.type);\n\n const defValue = Utils.resolveIfObservable(defaultValue);\n if (paramValue !== defValue) {\n History.setUrlParameter(variableName, paramValue);\n }\n }\n\n return paramValue;\n }\n\n /**\n * Refresh the container and its parent with new input parameters.\n *\n * @param {boolean} noReset a flag indicating if variable should not be updated to its default\n * value when the input parameter is not specified.\n * @return {Promise} a promise resolving when the container is refreshed\n */\n refreshInputParameters(noReset) {\n if (this.parent) {\n this.parent.refreshInputParameters(noReset);\n }\n if (this.scope) {\n this.scope.variablesDef.forEach((variable) => {\n if (variable.namespace === Constants.VariableNamespace.VARIABLES) {\n const input = variable.descriptor && variable.descriptor.input;\n if (input === 'fromCaller' || input === 'fromUrl') {\n const allDefs = this.getAllVariablesDefinition();\n const variableDef = allDefs[variable.name];\n let value = this.manageInputParameter(variable.name, variableDef, variable.defaultValue);\n\n // When the noReset flag is on, only update the variable if the value is defined.\n // This is so flow input vars are not updated when navigating to an other page\n // without specifying them.\n if (noReset) {\n if (value !== undefined) {\n variable.setValue(value);\n }\n } else {\n // If the input parameter is not defined, set the value to the default\n if (value === undefined) {\n value = variable.defaultValue;\n }\n variable.setValue(value);\n }\n }\n }\n });\n }\n }\n\n /**\n * Build the title that will be used for this page.\n * Walk up the flow hierarchy and gather all the title\n *\n * @param {String} title the base of the title\n * @return {String} the title\n */\n // eslint-disable-next-line no-unused-vars,class-methods-use-this\n buildTitle(title) {\n // No-op, for subclass to implement\n return '';\n }\n\n /**\n * true if the types defines the type\n * @param name\n * @return {*}\n */\n hasType(name) {\n // types defined in interface have precedence. There is an audit in DT to catch duplicates\n return this.definition.interface.types[name] || this.definition.types[name];\n }\n\n /**\n * true if the type is defined in the interface section of the current container.\n * @param name type name\n * @returns {*}\n */\n isInterfaceType(name) {\n return this.definition.interface.types[name];\n }\n\n /**\n * Returns type information for the given type. This will only return information on\n * structure types, collections, or special types (i.e. ServiceDataProvider/ArrayDataProvider).\n *\n * For these, the structure of the type is defined within the 'structure' property, which\n * itself could also contain types.\n *\n * Since this method is implemented in the container base class, 'types' can be defined in\n * application, flow or page.\n *\n * @param name The name of the types\n * @return {TypeDef} the type definition for a give 'type' in 'types' meta-data\n */\n getType(name) {\n const typeDef = this.hasType(name);\n\n if (!typeDef) {\n throw new TypeError(`Type \"${name}\" does not exist in `\n + `${this.className} ${this.fullPath || this.definition.id}`);\n }\n\n // legacy type definition\n // Note: If you have a legacy type definition as follow:\n // types: {\n // foo: {\n // type: \"string\"\n // }\n // }\n // we will favor the new syntax over the legacy syntax so in the above example,\n // type foo will be resolved to an object with a string property called type.\n // We believe it is very unlikely to have a legacy type definition that is simply an\n // alias for a primitive type.\n if ((typeDef.type === 'object' || typeDef.type === 'array')\n && (typeDef.definition === '*' || Utils.isObject(typeDef.definition))) {\n return typeDef;\n }\n\n // make it consistent with type definition on a variable\n return {\n type: typeDef,\n };\n }\n\n /**\n * @param prefix\n * @param variableDefinitions\n * @returns {Array}\n */\n // eslint-disable-next-line class-methods-use-this\n getTypeReferencesByPrefix(prefix = '', variableDefinitions) {\n // pure function\n function recurse(obj, callback) {\n if (obj && typeof callback === 'function') {\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] === 'string') {\n callback(key, obj[key]);\n } else if (typeof obj[key] === 'object') {\n recurse(obj[key], callback);\n }\n });\n }\n }\n\n const types = [];\n function getTypeNames(key, value) {\n if ((key === 'type' || key === 'definition') && value.startsWith(prefix)) {\n types.push(value.substring(prefix.length));\n }\n }\n\n recurse(variableDefinitions, getTypeNames);\n\n return types;\n }\n\n /**\n * Give a chance to the Security Provider to handle the error in order to possibly\n * redirect to a login page.\n * An error is thrown if the error is handled.\n *\n * @param {Error} error the error to handle\n */\n callSecurityProvider(error) {\n const secProv = this.application.securityProvider;\n\n // Let the security provider handle the error. If it does there will be a\n // redirect, so re-throw the error so that the page is properly disposed,\n // otherwise swallow the exception.\n if (secProv && secProv.handleLoadError && secProv.handleLoadError(error, this.fullPath)) {\n throw error;\n }\n }\n\n /**\n * Walk the hierarchy of container until one has requiresAuthentication defined and returns\n * its value. The application default value is false.\n *\n * @return {Boolean} true if the authentication is required for this artifact, false otherwise\n */\n isAuthenticationRequired() {\n // security.access is initialized to non-null value in initDefault.\n const { requiresAuthentication } = this.definition.security.access;\n\n // if requiresAuthentication is defined, it takes precedence over the parent value\n if (requiresAuthentication !== undefined) {\n return requiresAuthentication;\n }\n\n // Default to true if not defined in app-flow.json (case when this.parent is falsy)\n return this.parent ? this.parent.isAuthenticationRequired() : true;\n }\n\n /**\n * Check if the access is allowed to this page or flow by calling the Security provider\n * Throw a 403 HttpError is the artifact require authentication and the user roles or\n * permissions don't satisfy the page security settings.\n */\n checkAccess() {\n return Promise.resolve().then(() => {\n // bypass security check when running in action chain test mode\n const vbConfig = window.vbInitConfig || {};\n if (vbConfig.TEST_MODE === Constants.TestMode.ACTION_CHAIN) {\n return;\n }\n\n // security.access is initialized to non-null value in initDefault.\n const accessInfo = this.definition.security.access;\n\n accessInfo.roles = accessInfo.roles || [];\n accessInfo.permissions = accessInfo.permissions || [];\n\n // Walk up the parent hierarchy to retrieve the requiresAuthentication flag\n accessInfo.requiresAuthentication = this.isAuthenticationRequired();\n\n if (accessInfo.requiresAuthentication === false) {\n // This is the case where the security definition is inconsistent, the\n // authentication is not required but a role or a permission is defined.\n if (accessInfo.roles.length > 0 || accessInfo.permissions.length > 0) {\n throw new Error(`Incorrect security configuration for ${this.className} ${this.fullPath}`);\n }\n\n // Authentication is not required, nothing else to do\n return;\n }\n\n const secProv = this.application.securityProvider;\n\n // This is the case where authentication is required but the Security Provider\n // is missing.\n if (!secProv) {\n throw new Error('A Security Provider is required to enforce access restriction'\n + ` for ${this.className} ${this.fullPath || this.definition.id}.`);\n }\n\n // For artifact level security, ask the security provider if the artifact access\n // info match this user. If not, throw a 403\n if (!secProv.isAccessAllowed(this.className, this.fullPath, accessInfo)) {\n // Throw a HTTP error with the 403 status \"Forbidden\" that will handled by the\n // Security Provider.\n throw new HttpError(403, null, `${this.fullPath} HTTP status: 403 Forbidden`);\n }\n });\n }\n\n /**\n * Check if there is any restriction to navigation to this container\n * By default, there isn't. See PackagePage class for a checkNavigable that\n * can throws an error\n */\n // eslint-disable-next-line class-methods-use-this\n checkNavigable() {\n // no-op\n }\n\n /**\n * Dispose the scope and variable listeners. This can be called directly by the RuntimeManager at DT before\n * refreshing a page instance.\n */\n disposeScope() {\n // Dispose need to called be removeScopeFromStore so that no state\n // listener get invoked when removing from store.\n if (this.scope) {\n this.scope.dispose();\n\n StoreManager.removeScopeFromStore(this.scope);\n this.scope = null;\n }\n\n // clean up variables listeners\n this.variablesListeners.forEach((tracker) => {\n tracker.eventSource.remove(tracker.eventListener);\n });\n this.variablesListeners = [];\n }\n\n dispose() {\n // Propagate the dispose call to all extensions\n this.traverseExtensions('dispose');\n\n this.disposeScope();\n }\n\n /**\n * utility method to load a css file from url, absolute path or container relative path\n *\n * @param {Array} paths\n * @return {Promise}\n * @private\n */\n importCss(paths) {\n return Promise.resolve()\n .then(() => {\n const cssPaths = [];\n\n paths.forEach((path) => {\n let cssPath = path.trim();\n const uri = URI.parse(cssPath);\n\n // local url\n if (!uri.protocol) {\n // absolute url\n if (cssPath[0] === '/') {\n cssPath = cssPath.substring(1);\n } else { // relative path\n const resourceFolder = this.getResourceFolder();\n cssPath = `${resourceFolder}${cssPath}`;\n }\n }\n\n cssPaths.push(`css!${cssPath}`);\n });\n\n return Utils.getResources(cssPaths);\n })\n .catch((reason) => {\n logger.error('Unable to load css:', reason);\n // swallow errors, just report them\n });\n }\n\n /**\n * used by event propagation; when trying to start the event, we typically need to know the 'lowest'\n * container in the 'tree' (a.k.a. leaf); we start from there, and bubble up.\n * But this may be different depending on the container type; for example, Layout doesn't participate the same way.\n *\n * Usually a Page, but can be a Flow if we're processing vb system events before the Page is created.\n *\n * @returns {Container}\n */\n // eslint-disable-next-line class-methods-use-this\n getLeafContainer() {\n return Router.getCurrentPage();\n }\n\n /**\n * Utility method to load a module, and log errors\n *\n * @param {Object} components\n * @param {Boolean} storeImport true when the module should be stored in this.imports\n * @return {Promise|undefined} a promise to load module if there are module to import\n * @private\n */\n importModule(components, storeImport) {\n const allPaths = [];\n const keys = [];\n let promise;\n\n Object.keys(components).forEach((key) => {\n const loaderDef = components[key];\n const path = loaderDef.path.trim();\n if (path) {\n allPaths.push(path);\n keys.push(key.trim());\n }\n });\n\n if (allPaths.length > 0) {\n // Load all components in one getResources call\n promise = Utils.getResources(allPaths)\n .then((results) => {\n if (storeImport) {\n for (let index = 0; index < results.length; index += 1) {\n this.imports[keys[index]] = results[index];\n }\n }\n })\n .catch((reason) => {\n logger.error('Unable to load component:', reason.message);\n // swallow errors, just report them\n });\n }\n\n return promise;\n }\n }\n\n return Container;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/stateMonitor',[], () => {\n /**\n * This class is used to monitor the state changes in the runtime.\n */\n class StateMonitor {\n constructor() {\n // define the runtime states\n this.RuntimeState = {\n PAGE_ACTIVATED: 'vbPageActivated',\n PAGE_DEACTIVATED: 'vbPageDeactivated',\n CONTAINER_ACTIVATED: 'vbContainerActivated',\n CONTAINER_DEACTIVATED: 'vbContainerDeactivated',\n };\n\n this.stateChangeListeners = [];\n }\n\n /**\n * Record a state change. It will also invoke the listeners registered with the StateMonitor.\n *\n * @param state state to record\n */\n recordStateChange(state, container) {\n // for now, just inform the listeners about the state change\n this.stateChangeListeners.forEach((listener) => {\n listener(state, container);\n });\n }\n\n /**\n * Register a state change listener. The listener will be invoked whenever recordStateChange is called.\n *\n * @param listener the listener to add\n */\n addStateChangeListener(listener) {\n this.stateChangeListeners.push(listener);\n }\n\n /**\n * Remove the listener.\n *\n * @param listener the listener to remove.\n */\n removeStateChangeListener(listener) {\n const index = this.stateChangeListeners.indexOf(listener);\n if (index >= 0) {\n this.stateChangeListeners.splice(index, 1);\n }\n }\n }\n\n return new StateMonitor();\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/baseContext',[\n 'vb/private/constants'],\n(Constants) => {\n const symbol = Symbol('base-accessor');\n /**\n * Set of properties to expose in $base\n */\n class BaseContext {\n /**\n * @param extension\n */\n constructor(container) {\n Object.defineProperty(this, symbol,\n {\n value: {\n get export() {\n return container.export;\n },\n get applicationBaseContext() {\n return container.application.expressionContext.baseContext;\n },\n get scope() {\n return container.scope;\n },\n },\n });\n }\n\n /**\n * $base.application\n */\n get application() {\n return this[symbol].applicationBaseContext;\n }\n\n /**\n * $base.variables\n */\n get [Constants.VariableNamespace.VARIABLES]() {\n return this[symbol].export[Constants.VariableNamespace.VARIABLES];\n }\n\n /**\n * $base.constants\n */\n get [Constants.VariableNamespace.CONSTANTS]() {\n return this[symbol].export[Constants.VariableNamespace.CONSTANTS];\n }\n\n /**\n * $base.events\n */\n get events() {\n return this[symbol].export.events;\n }\n\n // The getVariable function is needed for the assignVariable action to work\n getVariable(name, namespace) {\n let variable;\n // only expose variables that are defined in the interface section.\n if (this[namespace]) {\n const properties = Object.keys(this[namespace]);\n if (properties.indexOf(name) >= 0) {\n variable = this[symbol].scope.getVariable(name, namespace);\n }\n }\n return variable;\n }\n }\n\n\n return BaseContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/pageBaseContext',[\n 'vb/private/stateManagement/context/baseContext'],\n(BaseContext) => {\n const symbol = Symbol('page-base-accessor');\n /**\n * set of properties to expose in $base for page extension\n */\n class PageBaseContext extends BaseContext {\n /**\n * @param extension\n */\n constructor(extension) {\n super(extension);\n\n Object.defineProperty(this, symbol,\n {\n value: {\n get flowBaseContext() {\n return extension.parent.expressionContext.baseContext;\n },\n },\n });\n }\n\n /**\n * $base.flow\n */\n get flow() {\n return this[symbol].flowBaseContext;\n }\n\n /**\n * $base.page\n */\n get page() {\n return this;\n }\n }\n\n return PageBaseContext;\n});\n\n","'use strict';\n\ndefine('vb/helpers/componentFinder',['vb/private/log'], (Log) => {\n const logger = Log.getLogger('/vb/helpers/componentFinder');\n\n\n // removing this; see JET-20231. unnecessary with modern custom elements/CCAs,\n // and does not work with new currently\n // this may break use with older data-bind JET components, where the 'bound' element is not the\n // element where the methods are exposed.\n\n // function getCompWithCheck(element) {\n // if (element) {\n // try {\n // const component = oj.Components.getComponentElementByNode(element);\n // if (!component) {\n // logger.info(`no component found for element: '${element}`);\n // }\n // return component;\n // } catch (e) {\n // const detail = element.id ? `id = ${element.id}` : `${element}`;\n // logger.error('cannot find a JET component for the found element. ' +\n // `Consider using document.getElementById/querySelector, or similar: (${element.tagName} ${detail})`);\n // }\n // }\n // return null;\n // }\n\n\n /**\n * now, this just wraps document.getElementById/Name. see (commented) getCompWithCheck above.\n *\n * OLD DESCRIPTION\n * wrapper for document.getElementById / oj.Components.getComponentElementByNode\n *\n * This is useful for finding JET components\n * Users have scope access to this via the variable: $page.components\n *\n * @deprecated use document.getElementById, document.querySelector, instead.\n */\n class ComponentFinder {\n /**\n * @param id id of the component element\n * @returns {Element}\n */\n static byId(id) {\n const element = document.getElementById(id);\n if (!element) {\n logger.info('unable to find element by id:', id);\n }\n\n // return getCompWithCheck(element);\n return element;\n }\n\n /**\n *\n * @param selector to find the component element\n * @returns {Element}\n */\n static bySelector(selector) {\n const element = document.querySelector(selector);\n if (!element) {\n logger.info('unable to find element by selector:', selector);\n }\n\n // return getCompWithCheck(element);\n return element;\n }\n }\n\n return ComponentFinder;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/pageContext',[\n 'vb/private/constants',\n 'vb/private/stateManagement/context/containerContext',\n 'vb/private/stateManagement/context/pageBaseContext',\n 'vb/helpers/componentFinder'],\n(Constants, ContainerContext, PageBaseContext, ComponentFinder) => {\n const symbol = Symbol('page-accessor');\n /**\n * set of properties to expose in $page\n */\n class PageContext extends ContainerContext {\n /**\n * @param page\n */\n constructor(page) {\n super(page);\n\n const accessors = {\n [Constants.COMPONENTS_CONTEXT]: () => ComponentFinder,\n };\n\n Object.keys(accessors).forEach((accessorName) => {\n Object.defineProperty(this, accessorName, {\n enumerable: true,\n configurable: true,\n get: accessors[accessorName],\n });\n });\n\n Object.defineProperty(this, symbol,\n {\n value: {\n /**\n * Shortcut to retrieve the builtins variable map\n */\n get builtins() {\n return page.scope.variableNamespaces[Constants.VariableNamespace.BUILTIN];\n },\n },\n });\n }\n\n static get BaseContextType() {\n return PageBaseContext;\n }\n\n /*\n * $page.currentFlow\n */\n get [Constants.CURRENT_FLOW_VARIABLE]() {\n return this[symbol].builtins[Constants.CURRENT_FLOW_VARIABLE];\n }\n\n /*\n * $page.info\n */\n get [Constants.INFO_CONTEXT]() {\n return this[symbol].builtins[Constants.INFO_CONTEXT];\n }\n\n /**\n * see ContainerContext\n *\n * @param page\n * @returns {{$application: *, $variables, $metadata}}\n */\n static getAvailableContexts(page) {\n const availableContexts = super.getAvailableContexts(page);\n\n Object.defineProperties(availableContexts, {\n $flow: {\n enumerable: true,\n configurable: true,\n get: () => page.parent.expressionContext,\n },\n // everything from here down used to only be created when the Page's Scope was created\n // now, we create the object once, up front, and rely on getters to allow deferred assignment\n // of the expressionContext. But, because Expression reads all the values, regardless of what is used\n // in the current expression, the properties may be read before expressionContex is created,\n // so we guard against expressionContex being null. Should not be a problem,\n // since the null pre-Scope values cannot be meaningfully referenced anyway.\n $page: {\n enumerable: true,\n configurable: true,\n get: () => page.expressionContext,\n },\n });\n\n return availableContexts;\n }\n }\n\n\n return PageContext;\n});\n\n","'use strict';\n\ndefine('vb/private/monitoring/loadMonitorOptions',[\n 'vbc/private/monitorOptions',\n], (MonitorOptions) => {\n /**\n * Monitor options for page load event\n */\n class LoadMonitorOptions extends MonitorOptions {\n constructor(eventType, msg, container) {\n super(eventType, msg);\n this.addStartFields(() => ({\n container,\n }));\n this.addEndFields(() => ({\n container,\n }));\n }\n }\n\n return LoadMonitorOptions;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/containerExtension',[\n 'vb/private/stateManagement/container',\n 'vb/private/log',\n 'vb/private/constants',\n 'vb/private/monitoring/loadMonitorOptions',\n], (Container, Log, Constants, LoadMonitorOptions) => {\n const logger = Log.getLogger('/vb/stateManagement/containerExtension', [\n // Register a custom logger\n {\n name: 'greenInfo',\n severity: 'info',\n style: 'green',\n },\n ]);\n /**\n * ContainerExtension class\n */\n class ContainerExtension extends Container {\n constructor(extension, parent, path, base, className = 'ContainerExtension') {\n super(base.name, parent, className);\n\n // Make base and extensionId readonly properties for safety\n Object.defineProperties(this, {\n // a reference to the base object\n base: {\n value: base,\n enumerable: true,\n },\n extensionId: {\n value: extension.id,\n enumerable: true,\n },\n needsExtension: {\n value: !extension.isOptimized,\n enumerable: true,\n },\n });\n\n this.baseUrl = `${Constants.EXTENSION_PATH}${this.extensionId}/`;\n\n // The path to resources inside the self section (new artifacts) of the extension\n // Cannot use the require mapping because images are not loaded using requirejs\n // Used to define the value of the path variable on $extension\n this.absoluteUrl = `${extension.ui.baseUrl}/${Constants.ExtensionFolders.SELF}/`;\n\n this.fullPath = this.base.fullPath;\n\n this.requirePath = path;\n this.view = {};\n this.log = logger;\n }\n\n /**\n * Returns the name of the function used to load the chain file.\n *\n * @returns {string}\n */\n // eslint-disable-next-line class-methods-use-this\n get chainLoaderName() {\n return 'getExtensionTextResource';\n }\n\n /**\n * Used by events.\n * @returns {boolean}\n * @override\n */\n // eslint-disable-next-line class-methods-use-this\n isExtension() {\n return true;\n }\n\n /**\n * The router path is the same for base and extension.\n * @return {String} the path\n */\n getPath() {\n return this.base && this.base.fullPath;\n }\n\n /**\n * Add the extension id as part of the name to make it unique between\n * multiple extensions.\n * @return {String} a new scope name\n */\n getNewScopeName() {\n return `${this.className}/${this.extensionId}/${this.fullPath}`;\n }\n\n initDefault(definition) {\n const def = definition;\n\n def.extensions = def.extensions || {};\n\n super.initDefault(definition);\n }\n\n load() {\n const mo = new LoadMonitorOptions(`${this.className}Load`, `${this.className} load ${this.fullPath}`, this);\n // eslint-disable-next-line arrow-body-style\n return this.log.monitor(mo, (extensionLoadTimer) => {\n return this.loadDescriptor()\n .then(() => {\n this.log.greenInfo(this.className, this.fullPath, 'LOADED.', extensionLoadTimer());\n })\n .catch((error) => {\n extensionLoadTimer(error);\n throw error;\n });\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n checkAccess() {\n return Promise.resolve();\n }\n }\n\n return ContainerExtension;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/extensionContext',[\n 'vb/private/stateManagement/context/containerContext',\n], (ContainerContext) => {\n const symbol = Symbol('extension-accessor');\n /**\n * Set of properties common for pageExtension and flowExtension\n */\n class ExtensionContext extends ContainerContext {\n /**\n * @param extension the extension container\n */\n constructor(extension) {\n super(extension);\n\n Object.defineProperty(this, symbol,\n {\n value: {\n extension,\n get application() {\n const appExpressionContext = {};\n const extensionApplication = extension.base.application.extensions[extension.extensionId];\n if (extensionApplication) {\n // For every extension container, the application object is a combination of the properties\n // in the application extension and the properties exposed in the base application interface\n const extensionExpressionContext = extensionApplication.expressionContext;\n const baseExpressionContext = extensionExpressionContext.base;\n\n // variables, constants and events are the only properties in interface\n ['variables', 'constants', 'events'].forEach((scope) => {\n appExpressionContext[scope] = {};\n\n let ctx = extensionExpressionContext[scope] || [];\n Object.keys(ctx).forEach((name) => {\n const def = Object.getOwnPropertyDescriptor(ctx, name);\n Object.defineProperty(appExpressionContext[scope], name, def);\n });\n\n appExpressionContext.getVariable = (...args) => {\n return extensionApplication.expressionContext.getVariable(...args);\n };\n\n ctx = baseExpressionContext[scope] || [];\n Object.keys(ctx).forEach((name) => {\n const def = Object.getOwnPropertyDescriptor(ctx, name);\n Object.defineProperty(appExpressionContext[scope], name, def);\n });\n });\n }\n\n // and redefine the property as a value for immediate access on the next get\n Object.defineProperty(this, 'application', {\n value: appExpressionContext,\n enumerable: true,\n });\n\n return appExpressionContext;\n },\n },\n });\n }\n\n /**\n * BaseContextType property: The type of the baseContext object used for $base in expression.\n * This is used by super class ContainerContext to construct the baseContext object.\n *\n * Implemented by subclass pageExtensionContext and flowExtensionContext\n */\n static get BaseContextType() {\n throw new Error('Base context constructor indefined');\n }\n\n /**\n * base property\n * The object returned when an expression has $base (See $base property in getAvailableContexts)\n * @return {BaseContext}\n */\n get base() {\n return this[symbol].extension.base.expressionContext.baseContext;\n }\n\n /**\n * extension property\n * The object returned when an expression has $extension (See $extension property in getAvailableContexts)\n * @return {BaseContext}\n */\n get extension() {\n return {\n base: this.base,\n path: this[symbol].extension.absoluteUrl,\n };\n }\n\n /**\n * Accessor for the application\n * @return {Object}\n */\n get application() {\n return this[symbol].application;\n }\n\n /**\n * see ContainerContext\n *\n * @param extension\n * @returns {{$variables, $base.variables, ...}}\n */\n static getAvailableContexts(extension) {\n // This part populate $variables, $constants, etc...\n const availableContexts = super.getAvailableContexts(extension);\n\n Object.defineProperties(availableContexts, {\n $extension: {\n enumerable: true,\n configurable: true,\n get: () => extension.expressionContext.extension,\n },\n $base: {\n enumerable: true,\n configurable: true,\n get: () => extension.expressionContext.base,\n },\n });\n\n return availableContexts;\n }\n }\n\n return ExtensionContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/pageExtensionContext',[\n 'vb/private/stateManagement/context/extensionContext',\n 'vb/private/stateManagement/context/pageBaseContext',\n], (ExtensionContext, PageBaseContext) => {\n /**\n * Set of properties to expose in page extension container\n */\n class PageExtensionContext extends ExtensionContext {\n /**\n * BaseContextType property: The type of the baseContext object used for $base in expression.\n * This is used by super class ContainerContext to construct the baseContext object.\n */\n static get BaseContextType() {\n return PageBaseContext;\n }\n\n /**\n * see ContainerContext\n *\n * @param extension\n * @returns {{$variables, $base.variables, ...}}\n */\n static getAvailableContexts(extension) {\n // This part populate $variables, $constants, etc...\n const availableContexts = super.getAvailableContexts(extension);\n\n // Remove whatever part of the context that we don't want to expose here\n // delete availableContexts.\n\n Object.defineProperties(availableContexts, {\n $page: {\n enumerable: true,\n configurable: true,\n get: () => extension.expressionContext,\n },\n $flow: {\n enumerable: true,\n configurable: true,\n // Retrieve the flow extension with the same extension id\n get: () => {\n const extensionFlow = extension.base.parent.extensions[extension.extensionId];\n return extensionFlow && extensionFlow.expressionContext;\n },\n },\n });\n\n return availableContexts;\n }\n }\n\n return PageExtensionContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/pageExtension',[\n 'vb/private/stateManagement/containerExtension',\n 'vb/private/stateManagement/context/pageExtensionContext',\n 'vb/private/constants',\n], (ContainerExtension, PageExtensionContext, Constants) => {\n /**\n * PageExtension class\n */\n class PageExtension extends ContainerExtension {\n constructor(extension, path, base, className = 'PageExtension') {\n // parent of the pageExtension is the potential extension of the base page parent flow\n super(extension, base.getParentFlow().extensions[extension.id], path, base, className);\n\n this.extensionClass = PageExtension;\n }\n\n static get resourceSuffix() {\n return '-page-x.json';\n }\n\n /**\n * The name of the runtime environment function to be used to load the descriptor.\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getPageExtensionDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions.\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getPageExtensionFunctions';\n }\n\n /**\n * The name of the chain folder is the page name with '-page-x-chains' appended.\n * @returns {string}\n */\n get chainsFolderName() {\n return `${this.id}-page-x-chains`;\n }\n\n /**\n * Returns the ExtensionContext constructor used to create the '$' expression context.\n * @return {ExtensionContext.constructor}\n * @override\n */\n static get ContextType() {\n return PageExtensionContext;\n }\n\n /**\n *\n * @returns {*}\n */\n getViewModel() {\n return this.getAvailableContexts();\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n const map = {\n [Constants.PAGE_PREFIX]: this,\n };\n\n // if the parent of the pageExtension is defined we need to merge scope resolvers\n // so that the pageExtension has access to its parent's scopes\n if (this.parent) {\n return Object.assign(map, this.parent.getScopeResolverMap());\n }\n\n return map;\n }\n }\n\n return PageExtension;\n});\n\n","/* eslint-disable max-classes-per-file */\n'use strict';\n\ndefine('vb/private/stateManagement/page',[\n 'knockout', 'vb/private/stateManagement/container',\n 'vb/private/stateManagement/router',\n 'vb/private/stateManagement/stateUtils',\n 'vb/private/utils', 'vb/private/log',\n 'vb/private/constants', 'vb/private/stateManagement/stateMonitor',\n 'vb/private/stateManagement/context/pageContext',\n 'vb/private/stateManagement/pageExtension',\n 'vb/private/history', 'vb/errors/httpError',\n 'vbc/private/performance/performance',\n 'vb/private/monitoring/loadMonitorOptions',\n], (ko, Container, Router, StateUtils, Utils, Log, Constants, StateMonitor, PageContext,\n PageExtension, History, HttpError, Performance, LoadMonitorOptions) => {\n const logger = Log.getLogger('/vb/stateManagement/page', [\n // Register a custom logger\n {\n name: 'greenInfo',\n severity: 'info',\n style: 'green',\n },\n ]);\n\n /**\n * Page class\n */\n class Page extends Container {\n constructor(id, parent, requirePath = parent.requirePath, className = 'Page') {\n super(id, parent, className);\n\n this.requirePath = `${requirePath}pages/`;\n\n // Hold the extension class. It's writable to test can mock the extension class\n this.extensionClass = PageExtension;\n\n /**\n * The instances of the loaded flows used by this page\n * @type {Flow}\n */\n this.flows = {};\n\n this.moduleConfig = ko.observable(Constants.blankModuleConfig);\n\n this.loadPagePromise = null;\n this.loadAndStartPromise = null;\n this.initializePromise = null;\n this.enterPromise = null;\n this.viewModelPromise = null;\n\n this.eventPrefix = 'page';\n\n this.inBeforeEvent = false;\n this.deactivated = false;\n\n this.log = logger;\n }\n\n /**\n * @returns {string}\n */\n get fullName() {\n return `${this.id}-page`;\n }\n\n\n /**\n * The name of the runtime environment function to be used to load the descriptor\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getPageDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getPageFunctions';\n }\n\n /**\n * The name of the runtime environment function to be used to load the html\n *\n * @return {String} the template loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get templateLoaderName() {\n return 'getPageTemplate';\n }\n\n /**\n * The name of the chain folder is the page name with '-page-chains' appended.\n * @returns {string}\n */\n get chainsFolderName() {\n return `${this.fullName}-chains`;\n }\n\n /**\n * Return the first flow up in the parent hierarchy.\n * For flow, it's this.parent.parent, for page it's this.parent for\n * application it's null.\n *\n * @return {Flow} the first flow in the parent hierarchy\n */\n getParentFlow() {\n return this.parent;\n }\n\n isDefault() {\n return this.parent.definition.defaultPage === this.id;\n }\n\n /**\n * returns the Flow's Services, if any\n * @returns {Services}\n */\n getServices() {\n return this.parent.getServices();\n }\n\n /**\n * Retrieve a flow instance. If it doesn't exist, create and load it but never returns\n * undefined.\n *\n * @param {String} id the flow id\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise which resolve with the flow instance\n */\n loadFlow(id, navContext) {\n return Promise.resolve().then(() => {\n let flow = this.flows[id];\n\n if (flow) {\n return flow;\n }\n\n flow = this.parent.createFlow(id, this);\n\n return flow.load()\n .then(() => flow.processDefaultPage())\n .then(() => {\n if (!navContext) {\n // A child Router was just created in the flow so if the load was triggerred by the\n // router (which is the case navContext is not defined) then we need to call sync on\n // the JET router to synchronize the state of the routers with the URL.\n // This can happen in 2 cases:\n // 1) when the page is refreshed\n // 2) when going back or forward in the browser history.\n Router.sync();\n }\n\n this.flows[id] = flow;\n\n return flow;\n });\n });\n }\n\n /**\n * Load the nested flow given its id\n *\n * @param {String} id the id of the flow\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise that resolve to a Flow instance\n */\n loadContainer(id, navContext) {\n if (navContext && navContext.isCancelled()) {\n return Promise.resolve();\n }\n\n return this.loadFlow(id, navContext);\n }\n\n /**\n * Retrieve the cached instance of the nested container.\n * For page, the return value is a flow instance.\n * @param {String} id the id of the page to retrieve\n * @return {Container} the flow instance\n */\n getContainer(id) {\n return this.flows[id];\n }\n\n /**\n * Load a nested container using the id\n *\n * When a page is loading the first segment of a path, it is assumed it is\n * the id of a page.\n *\n * @param {String} id\n * @param {NavigationContext} navContext\n * @return {Promise}\n */\n loadFirstPathSegment(id, navContext) {\n const { operation } = navContext.options;\n\n // When using the old navigateToPage, the behavior is to attempt to load a flow\n // first, then if it fails, load a sibling page\n if (operation === 'oldNavigateToPage') {\n return this.loadContainer(id, navContext).catch((error) => {\n // If the flow doesn't exist, try to load a sibling page.\n if (HttpError.isFileNotFound(error)) {\n return this.parent.loadContainer(id, navContext)\n .then((result) => {\n this.log.warn(`Invalid navigation to page \"${id}\".`,\n 'Using navigateToPage action is deprecated.',\n 'Use the navigate action with the \\'page\\' parameter.');\n return result;\n });\n }\n\n throw error;\n });\n }\n\n // Load a sibling page by asking the parent flow to load the page\n return this.parent.loadContainer(id, navContext);\n }\n\n /**\n * Retuns the ojModule configuration for the nested flow\n * @param {{default: string}} options A set of options including default for the default flow\n * @return {Object} the flow moduleConfig\n */\n [Constants.flowModuleConfigFunctionName](options) {\n // if (!options || !options.default) {\n\n // }\n const moduleConfig = this.moduleConfig;\n // The moduleConfig is initialized lazyly the first time the ojModule binding is\n // resolved. This is because the page might not have any ojModule, so no point\n // creating one until it's needed.\n if (moduleConfig().viewModel === null) {\n this.loadFlow(options.default).then((flow) => {\n // \"Bind\" the nested flow moduleConfig to ojModule. This is done by\n // replacing the nested flow moduleConfig observable with the observable\n // used in the ojModule binding. The result is when the flow module config\n // mutates on enter, it will refresh ojModule.\n flow.pagesModuleConfig = moduleConfig;\n });\n }\n\n return moduleConfig;\n }\n\n\n /**\n * Invoke a before event, (either beforeEnter or beforeExit) and return\n * a promise the resolve to true or false depending on the action chain results.\n * @param {String} eventName the type of event, either Constants.BEFORE_ENTER_EVENT\n * or Constants.BEFORE_EXIT_EVENT.\n * @return {Promise} a promise that resolve to a boolean true if not cancelled\n */\n invokeBeforeEvent(eventName) {\n // Return the promise so that the outcome can be used to cancel navigation\n return this.invokeEvent(eventName).then((results) => {\n // Traverse the array of result from the execution of all the event\n // promises and look for cancelled result.\n // Check if the type is an array because sometime it returns Constants.NO_EVENT_LISTENER_RESPONSE\n if (Array.isArray(results)) {\n for (let i = 0; i < results.length; i += 1) {\n const { result } = results[i];\n if (result && result.cancelled === true) {\n this.log.info('Navigation to page', this.fullPath, 'was cancelled by', eventName);\n // Because on back/forward button, the browser changes the URL immediately, make sure\n // to restore the previous state when the navigation is cancelled.\n return History.restoreStateBeforeHistoryPop().then(() => false);\n }\n }\n }\n\n return true;\n });\n }\n\n /**\n * Traverse a set of definitions (variables or constants) and build new parameters\n * If the input parameter is already in the map, overwrite the existing definition\n * @param {String} propertyName Either 'variables' or 'constants'\n * @param {Object} allParameters the map of all the parameters\n */\n buildParameters(defName, allParameters) {\n const parameters = allParameters;\n const defs = this.definition[defName];\n Object.keys(defs).forEach((name) => {\n if (parameters[name]) {\n this.log.warn(`Input parameter ${name} is already defined. Using the definition in ${defName}.`);\n }\n const def = defs[name];\n const inputParameterValue = this.getInputParameterValue(name, def);\n parameters[name] = inputParameterValue;\n this.log.info(\n `Input parameter ${name}[input='${def.input}'] value:`, inputParameterValue);\n });\n }\n\n /**\n * Build a map of all possible input parameters\n * @return {Object} a map of parameters\n */\n buildAllParameters() {\n // Add variables input parameters\n const parameters = {};\n this.buildParameters('variables', parameters);\n // Add constants input parameters\n // If an input parameter is already defined as a variable, the constant is used.\n this.buildParameters('constants', parameters);\n return parameters;\n }\n\n /**\n * Build an error page from the list of loading error\n * @param {Error} error an object\n * @return {String} the markup for the error page\n */\n buildErrorPage(error) {\n // If it's a HTTP error return by requirejs, format the status and display it with failing page id\n // sanitize fullPath by not using innerHtml, instead use innerText or textContent. This is\n // the right way to re-mediate DOM based XSS vulnerabilities.\n const divDom = document.createElement('div');\n const headingDom = document.createElement('h1');\n headingDom.textContent = Utils.formatLoadError(error);\n divDom.appendChild(headingDom);\n const textDom = document.createElement('p');\n textDom.textContent = `while loading page \"${this.fullPath}\".`;\n divDom.appendChild(textDom);\n return divDom.outerHTML; // we have sanitized the content of
    so ok to use outerHTML\n // return `

    ${Utils.formatLoadError(error)}

    while loading page\n // \"${this.fullPath}\".

    `;\n }\n\n /**\n * Load both the descriptor and the markup and deals with loading errors from both\n * resource.\n * When any of the descriptor of the markup fail loading, a dummy page showing the\n * reason of the failure is displayed.\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise resolving with an array where the first element is the\n * markup and the second element is the page definition.\n */\n loadPage(navContext) {\n // Keep a reference of the loading promise so that multiple function can wait\n // on the same promise to be resolved.\n this.loadPagePromise = this.loadPagePromise || Promise.all([this.loadTemplate(), this.loadDescriptor()])\n .catch((error) => {\n // If the security provider handles the error, it will throw\n this.callSecurityProvider(error);\n\n // If the security provider doesn't handles the error, display the error\n // using an error page and descriptor.\n if (!this.application.started\n || (navContext && navContext.options && navContext.options.operation === 'oldNavigateToPage')) {\n // Initialize the context object, for expressions ($page OR $flow OR $chain, etc)\n this.expressionContext = new (this.constructor.ContextType)(this);\n\n this.initDefault(Constants.errorPageDescriptor);\n\n return [this.buildErrorPage(error), this.definition];\n }\n throw error;\n });\n\n return this.loadPagePromise;\n }\n\n /**\n * Return true if this page should be hidden from the Url\n * @return {boolean} true if it should be hidden from the Url\n */\n hideFromUrl() {\n return this.parent.staticPageId === this.id;\n }\n\n /**\n * Load this page\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise that resolves in the loaded page metadata\n */\n load(navContext) {\n return this.loadPage(navContext)\n .then(() => {\n const pageDef = this.definition;\n\n // Only create the router when the parent defaultPage is a not flow since in that\n // case we need hide the page from the URL.\n if (!this.hideFromUrl()) {\n this.initRouter();\n this.router.defaultStateId = pageDef.routerFlow;\n\n // A child Router was just created in the flow so if the load was triggerred by the\n // router (which is the case navContext is not defined) then we need to call sync on\n // the JET router to synchronize the state of the routers with the URL.\n // This can happen in 2 cases:\n // 1) when the page is refreshed\n // 2) when going back or forward in the browser history.\n if (!navContext) {\n Router.sync();\n }\n }\n\n // create the facadeContext early, even before the facade; this requires getters\n this.getAvailableContexts();\n\n // Setup the component event listeners\n this.initializeEvents();\n\n // initialize action chains\n this.initializeActionChains();\n\n return pageDef;\n })\n // make sure that the functions are loaded so that they can be used in 'vbBeforeEnter' event\n .then((pageDef) => this.loadFunctionModule().then(() => pageDef));\n }\n\n /**\n * Load the page and start it by calling the beforeEnter event.\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise that resolve to a page instance or undefined if the navigation was cancelled\n */\n loadAndStart(navContext) {\n // Prevent recursion when navigating to same page from inside the beforeEnterEvent\n if (this.inBeforeEvent === true) {\n this.log.warn('Recursive navigation to page', this.id, 'detected.');\n return Promise.resolve(this);\n }\n\n this.loadAndStartPromise = this.loadAndStartPromise || Promise.resolve().then(() => {\n // Start the page load timer\n const mo = new LoadMonitorOptions('pageLoad', `page load ${this.id}`, this);\n return this.log.monitor(mo, (pageLoadTimer) => this.load(navContext)\n .then(() => {\n\n if (navContext && navContext.isCancelled()) {\n return undefined;\n }\n\n this.inBeforeEvent = true;\n\n return this.invokeBeforeEvent(Constants.BEFORE_ENTER_EVENT)\n .then((result) => {\n let message = 'LOADED.';\n let returnValue = this;\n\n // result is false when the beforeEnter event cancelled the navigation\n if (result === false || (navContext && navContext.isCancelled())) {\n message = 'CANCELLED.';\n returnValue = undefined;\n }\n\n this.log.greenInfo('Page', this.id, 'of flow', this.parent.id, message, pageLoadTimer());\n return returnValue;\n })\n .finally(() => {\n this.inBeforeEvent = false;\n });\n })\n .catch((error) => {\n const message = (error && error.message) || 'Unknown error';\n\n this.log.greenInfo('Page', this.id, 'of flow', this.parent.id, ' NOT LOADED.',\n message, pageLoadTimer(error));\n\n this.dispose();\n\n throw error;\n })\n .then((result) => {\n // Make sure to clean up the page and scope if navigation was cancelled or because of an error\n if (!result) {\n this.dispose();\n }\n return result;\n }));\n });\n\n return this.loadAndStartPromise;\n }\n\n /**\n * returns the PageContext constructor used to create the '$' expression context\n * @return {PageContext.constructor}\n * @override\n */\n static get ContextType() {\n return PageContext;\n }\n\n /**\n * Initializes the variables defined in the page model into the page scope, then sets up the context for the\n * page.\n *\n * @returns {Promise} A promise that resolves when complete\n */\n initializePageScopeAndContextVariables() {\n // Create the page variables using the page metadata\n return this.loadPage()\n .then(() => this.initAllVariableNamespace());\n }\n\n /**\n * The place to initialize builtins variables.\n */\n initializeBuiltins() {\n super.initializeBuiltins();\n\n // Create the built-in selectedFlow variable\n this.scope.createVariable(Constants.CURRENT_FLOW_VARIABLE, Constants.VariableNamespace.BUILTIN,\n 'string', null, undefined, { writable: false });\n\n // Create a constant for the \"info\" builtins. For pages, the info object has 2 properties,\n // title and description.\n this.createConstant(Constants.INFO_CONTEXT, {\n type: 'object',\n defaultValue: {\n title: this.definition.title,\n description: this.definition.description,\n },\n },\n Constants.VariableNamespace.BUILTIN);\n }\n\n defineInfoBuiltinVariable() {\n return {\n title: this.definition.title,\n description: this.definition.description,\n };\n }\n\n /**\n * called once from getViewModel(), may be overridden by subclasses\n * utility for adding the necessary methods to the view model. This include createView and\n * the lifecycle callback for ojModule.\n * assumes that the availableContexts object has already been created for the page\n * @returns {Object} the viewModel\n */\n createViewModelFromContext() {\n const viewModel = {};\n const availableContexts = this.getAvailableContexts();\n // cannot use Object.assign, need to copy getter; some values might not have been created yet, like page.pageScope\n Object.getOwnPropertyNames(availableContexts).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(availableContexts, key);\n Object.defineProperty(viewModel, key, descriptor);\n });\n\n // because we are also using this for the ViewModel as well,\n // and any (possible) lifecycle methods the mode may implement.\n const viewModelFncNames = ['connected', 'disconnected'];\n\n viewModelFncNames.forEach((name) => {\n if (this[name]) {\n viewModel[name] = this[name].bind(this);\n }\n });\n\n // Copy function to retrieve the moduleConfig for a flow on the viewModel.\n // This allows to do [[flowModuleConfig({ default: 'main' })]] in the html.\n viewModel[Constants.flowModuleConfigFunctionName] = this[Constants.flowModuleConfigFunctionName].bind(this);\n\n // Copy the moduleConfig to the viewModel.\n // This allows to do [[vbRouterFlow]] in the html.\n viewModel[Constants.routerModuleConfig] = this.moduleConfig;\n\n return viewModel;\n }\n\n getInitializePromise() {\n this.initializePromise = this.initializePromise || this.loadFunctionModule()\n // Need to be first to populate the context\n .then(() => this.initializePageScopeAndContextVariables());\n\n return this.initializePromise;\n }\n\n // Router state callback (see Container.js, getRouterConfigureCallBack)\n enter() {\n // As soon as we are done with canEnter, we mark the application started\n this.application.started = true;\n\n this.getInitializePromise();\n\n let newModuleConfig;\n\n if (this.parent.pagesModuleConfig().params !== this.fullPath) {\n newModuleConfig = this.createModuleConfig();\n // Mutate the observable for ojModule to display the new page\n this.parent.pagesModuleConfig(newModuleConfig);\n }\n\n if (this.parent.parent && this.parent.parent.moduleConfig().params !== this.fullPath) {\n newModuleConfig = newModuleConfig || this.createModuleConfig();\n this.parent.parent.moduleConfig(newModuleConfig);\n }\n\n this.lifecycleState = Constants.ContainerState.ENTERED;\n\n // return this.initializePromise;\n }\n\n /**\n * Invoke the beforeExit event on the page. This function is called by the router\n * and if it returns a promise that resolve to false, the navigation is cancelled.\n * @return {Promise} a promise that resolve to a boolean.\n */\n canExit() {\n return this.invokeBeforeEvent(Constants.BEFORE_EXIT_EVENT)\n // Only clear the busy state when the navigation is cancelled or in case of error.\n // When not cancelled the busy state will be cleared on the run() of the leaf page.\n .then((result) => {\n if (!result) {\n Router.clearBusyState();\n }\n return result;\n })\n .catch((error) => {\n Router.clearBusyState();\n throw error;\n });\n }\n\n // Router state callback (see Router.js)\n exit() {\n return this.invokeEvent(Constants.EXIT_EVENT).then(() => {\n this.lifecycleState = Constants.ContainerState.EXITED;\n\n // Update the previous page path value\n this.application.previousPagePath = this.getNavPath();\n });\n }\n\n // oj-module lifecycle callback\n connected() {\n // this.run();\n }\n\n // oj-module lifecycle callback\n disconnected() {\n // record a page deactivated state change\n StateMonitor.recordStateChange(StateMonitor.RuntimeState.PAGE_DEACTIVATED);\n StateMonitor.recordStateChange(StateMonitor.RuntimeState.CONTAINER_DEACTIVATED, this);\n this.deactivated = true;\n this.dispose();\n }\n\n /**\n * Run the page and return a promise that resolve when the page is done.\n * This consist of the following steps:\n * initialize the scope and variables\n * update the router state\n * invoke the enter event\n * Depending on the resolvesAfterEnter argument, the promise returned\n * resolves when the enter event is done.\n *\n * @param {boolean} resolvesAfterEnter if true, the promise returned does not\n * resolve until the ENTER event is done.\n * @return {Promise} a promise that resolve when the page is done running.\n */\n run(resolvesAfterEnter) {\n return this.getInitializePromise().then(() => {\n const owningRouter = this.parent.router;\n const skipUpdateWithRouter = owningRouter && owningRouter.historyUpdate === 'skip';\n // Now that the URL is the one for this page, save the \"fromUrl\" variables\n // on the URL to make the page bookmarkable and store the input parameters\n // on the browser history\n Router.updateState(this.fullPath, skipUpdateWithRouter);\n\n // delete the property so that it does not stick around for further navigation\n if (skipUpdateWithRouter) {\n delete owningRouter.historyUpdate;\n }\n // Assign the $flow.currentPage variable\n // Uses the variable setValueInternal because it's a readonly variable and the regular\n // assignment will fail.\n this.parent.updateCurrentPageVariable(this.id);\n\n let promise;\n\n // Only replace the history state once we are on the leaf page\n const isLeafPage = this.isLeafPage();\n if (isLeafPage) {\n promise = History.sync();\n } else {\n promise = Promise.resolve();\n }\n\n this.application.currentPageParams = Utils.cloneObject(History.getInputParameters());\n\n // If needed, update the browser state before executing vb_enter so that the URL is correct\n this.enterPromise = promise\n .then(() => this.invokeEvent(Constants.ENTER_EVENT))\n .then(() => this.invokePwaEvents())\n .then(() => {\n if (Utils.isMobile()) {\n this.invokePauseResumeEvent(this.application.pauseResumeEvent);\n }\n })\n .then(() => {\n // record a container activated state change\n StateMonitor.recordStateChange(StateMonitor.RuntimeState.CONTAINER_ACTIVATED, this);\n\n // // A page is active as soon as its enter and navigated event is done executing.\n // StateMonitor.recordStateChange(StateMonitor.RuntimeState.PAGE_ACTIVATED, this);\n })\n .then(() => {\n if (isLeafPage) {\n // clear any outstanding busy state on the router\n Router.clearBusyState();\n\n const perf = window.vb.perf; // eslint-disable-line prefer-destructuring\n if (perf) {\n // Log VB specific entries that have been added so far\n perf.logVB();\n // TODO: eventually, force analytics trace before marks are cleared\n Performance.clear();\n }\n }\n });\n return resolvesAfterEnter ? this.enterPromise : promise;\n });\n }\n\n\n /**\n * @returns {boolean} true, if this page is a leaf page (as opposed to shell page, for example)\n */\n isLeafPage() {\n const currentPage = Router.getCurrentPage();\n return (currentPage && currentPage.fullPath === this.fullPath);\n }\n\n /**\n * 'vbBeforeAppInstallPrompt' event is fired as a response to browser BeforeInstallPromptEvent event,\n * before a user is prompted to \"install\" a PWA application to a home screen.\n * As such, this event will only be fired when VB application has been configured to run as a PWA,\n * and it is running on a browser that supports BeforeInstallPromptEvent event.\n * For testing purposes, the event can be fired from Chrome Dev Tools.\n * Event payload contains one function, getInstallPromptEvent(), that returns\n * BeforeInstallPromptEvent object. To show the native \"add to home screen\" prompt,\n * BeforeInstallPromptEvent.prompt() must be called (once) as a response to user gesture.\n * Calling BeforeInstallPromptEvent.prompt() on the same event will result in a DOMException.\n *\n * @see {@link https://developers.google.com/web/fundamentals/app-install-banners/}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/BeforeInstallPromptEvent}\n * @param e\n * @returns {Promise} a promise to fire vbInstallPrompt event, or an empty promise if BeforeInstallPromptEvent\n * was not fired for this application.\n */\n invokeAppInstallPromptEvent(e) {\n if (e) {\n return Promise.resolve()\n .then(() => {\n const payload = {};\n // Wrap native event object inside a function, so that it does not get cloned.\n // Executing BeforeInstallPromptEvent.prompt() on a proxy object causes TypeError: Illegal invocation\n payload.getInstallPromptEvent = () => e;\n return this.invokeEventWithBubbling(Constants.INSTALL_PROMPT_EVENT, payload);\n })\n .then(() => {\n // delete stored event\n delete this.application.beforeInstallPromptEvent;\n return null;\n });\n }\n return Promise.resolve();\n }\n\n invokeNewContentAvailable(e) {\n if (e) {\n // delete stored event\n delete this.application.newContentAvailableEvent;\n return this.invokeEventWithBubbling(Constants.NEW_CONTENT_AVAILABLE, e);\n }\n return Promise.resolve();\n }\n\n invokePwaEvents() {\n // TODO: which event should be delivered first? Should they even be delivered together?\n return this.invokeAppInstallPromptEvent(this.application.beforeInstallPromptEvent)\n .then(() => this.invokeNewContentAvailable(Utils.cloneObject(this.application.newContentAvailableEvent)));\n }\n\n /**\n * 'vbPause' or 'vbResume' events will be fired as a response to cordova's pause or resume events.\n * The pause event fires when the native platform puts the application into the background, typically\n * when the user switches to a different application.\n * The resume event fires when the native platform pulls the application out from the background.\n *\n * @see {@link https://cordova.apache.org/docs/en/latest/cordova/events/events.html#pause}\n * @see {@link https://cordova.apache.org/docs/en/latest/cordova/events/events.html#resume}\n * @param e\n * @returns {Promise} a promise to fire vbPause or vbResume event, or an empty promise if neither\n * of these events were fired for this application\n */\n invokePauseResumeEvent(e) {\n if (e) {\n let eventName;\n switch (e.type) {\n case 'resume':\n eventName = Constants.RESUME_EVENT;\n break;\n case 'pause':\n eventName = Constants.PAUSE_EVENT;\n break;\n default:\n // currently only pause and resume events are supported\n return Promise.resolve();\n }\n\n return this.invokeEventWithBubbling(eventName, e)\n .then(() => {\n // delete the stored event\n delete this.application.pauseResumeEvent;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Build the title that will be used for this page.\n * Walk up the flow hierarchy\n *\n * @param {String} title the current title being constructed\n * @return {String} the title\n */\n buildTitle(title) {\n let newTitle = this.expressionContext[Constants.INFO_CONTEXT].title;\n\n if (newTitle) {\n if (title) {\n newTitle = `${title} - ${newTitle}`;\n }\n } else {\n newTitle = title;\n }\n\n return this.parent.buildTitle(newTitle);\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n return Object.assign({ [Constants.PAGE_PREFIX]: this }, this.parent.getScopeResolverMap());\n }\n\n createModuleConfig() {\n return {\n // initialize the variables before returning the viewModel\n viewModel: this.getViewModel(),\n // params is only used to know which page is represented\n params: this.fullPath,\n view: this.getView(),\n };\n }\n\n resetParentModuleConfig() {\n // This is to support refreshPage where dispose is called on an active page.\n // In case of navigation, dispose is called by ojModule after the navigation is\n // done, that's why we need to check if the moduleConfig is matching the fullPath\n if (this.parent.pagesModuleConfig().params === this.fullPath) {\n this.parent.pagesModuleConfig().params = null;\n }\n\n if (this.parent.parent && this.parent.parent.moduleConfig().params === this.fullPath) {\n this.parent.parent.moduleConfig().params = null;\n }\n }\n\n\n /**\n * creates the viewModel. (may be called externally for dynamic container).\n * only creates the model once (unless runtimeManager clears the promise).\n * @see Page.createModuleConfig\n * @see ConfigurableMetadataProviderHelper\n * @returns {Promise}\n */\n getViewModel() {\n if (!this.viewModelPromise) {\n // Initialize the variables before returning the viewModel\n this.viewModelPromise = this.run()\n .then(() => this.createViewModelFromContext());\n }\n return this.viewModelPromise;\n }\n\n /**\n * creates the view\n * @see Page.createModuleConfig\n * @returns {Promise}\n */\n getView() {\n return this.loadPage().then((results) => results[0]);\n }\n\n\n dispose() {\n // do not dispose the page if it's being refreshed\n if (this.lifecycleState === Constants.ContainerState.REFRESHING) {\n this.lifecycleState = Constants.ContainerState.ENTERED;\n return;\n }\n\n // record a page deactivated state change\n // When the parent is being disposed, the child doesn't receive the deactivate,\n // only the dispose.\n if (!this.deactivated) {\n StateMonitor.recordStateChange(StateMonitor.RuntimeState.PAGE_DEACTIVATED);\n }\n\n // Mutates ojModule in order to release inner ko bindings\n this.moduleConfig(Constants.blankModuleConfig);\n\n // reset the parent module config\n this.resetParentModuleConfig();\n\n Object.keys(this.flows).forEach((flowId) => {\n const flow = this.flows[flowId];\n flow.dispose();\n });\n\n if (this.router) {\n this.router.dispose();\n }\n\n this.parent.deletePage(this.id);\n\n if (this.hideFromUrl()) {\n delete this.parent.staticPageId;\n }\n\n delete this.definition;\n\n this.initializePromise = null;\n\n this.enterPromise = null;\n this.viewModelPromise = null;\n\n super.dispose();\n }\n }\n\n return Page;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/flowBaseContext',[\n 'vb/private/stateManagement/context/baseContext'],\n(BaseContext) => {\n /**\n * set of properties to expose in $base for flow extension\n */\n class FlowBaseContext extends BaseContext {\n /**\n * $base.flow\n */\n get flow() {\n return this;\n }\n }\n\n return FlowBaseContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/flowContext',[\n 'vb/private/constants',\n 'vb/private/stateManagement/context/containerContext',\n 'vb/private/stateManagement/context/flowBaseContext',\n], (Constants, ContainerContext, FlowBaseContext) => {\n const symbol = Symbol('flow-accessor');\n\n class FlowContext extends ContainerContext {\n /**\n *\n * @param flow\n */\n constructor(flow) {\n super(flow);\n\n Object.defineProperty(this, symbol,\n {\n value: {\n /**\n * Shortcut to retrieve the builtins variable map\n */\n get builtins() {\n return flow.scope.variableNamespaces[Constants.VariableNamespace.BUILTIN];\n },\n },\n });\n }\n\n static get BaseContextType() {\n return FlowBaseContext;\n }\n\n /*\n * $flow.path (or $application.path)\n */\n get [Constants.PATH_VARIABLE]() {\n return this[symbol].builtins[Constants.PATH_VARIABLE];\n }\n\n /*\n * $flow.currentPage\n */\n get [Constants.CURRENT_PAGE_VARIABLE]() {\n return this[symbol].builtins[Constants.CURRENT_PAGE_VARIABLE];\n }\n\n /*\n * $flow.info\n */\n get [Constants.INFO_CONTEXT]() {\n return this[symbol].builtins[Constants.INFO_CONTEXT];\n }\n\n static getAvailableContexts(flow) {\n const availableContexts = super.getAvailableContexts(flow);\n\n Object.defineProperties(availableContexts, {\n $flow: {\n enumerable: true,\n configurable: true,\n get: () => flow.expressionContext,\n },\n });\n\n\n return availableContexts;\n }\n }\n\n return FlowContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/flowExtensionContext',[\n 'vb/private/stateManagement/context/extensionContext',\n 'vb/private/stateManagement/context/flowBaseContext',\n], (ExtensionContext, FlowBaseContext) => {\n /**\n * Set of properties to expose in flow extension container\n */\n class FlowExtensionContext extends ExtensionContext {\n /**\n * BaseContextType property: The type of the baseContext object used for $base in expression.\n * This is used by super class ContainerContext to construct the baseContext object.\n */\n static get BaseContextType() {\n return FlowBaseContext;\n }\n\n /**\n * see ContainerContext\n *\n * @param extension\n * @returns {{$variables, $base.variables, ...}}\n */\n static getAvailableContexts(extension) {\n // This part populate $variables, $constants, etc...\n const availableContexts = super.getAvailableContexts(extension);\n\n // Remove whatever part of the context that we don't want to expose here\n // delete availableContexts.\n\n Object.defineProperties(availableContexts, {\n $flow: {\n enumerable: true,\n configurable: true,\n get: () => extension.expressionContext,\n },\n });\n\n return availableContexts;\n }\n }\n\n return FlowExtensionContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/flowExtension',[\n 'vb/private/stateManagement/containerExtension',\n 'vb/private/stateManagement/context/flowExtensionContext',\n 'vb/private/constants',\n], (ContainerExtension, FlowExtensionContext, Constants) => {\n /**\n * FlowExtension class\n */\n class FlowExtension extends ContainerExtension {\n constructor(extension, path, base, className = 'FlowExtension') {\n super(extension, null, path, base, className);\n\n this.extensionClass = FlowExtension;\n }\n\n static get resourceSuffix() {\n return '-flow-x.json';\n }\n\n /**\n * The name of the runtime environment function to be used to load the descriptor.\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getFlowExtensionDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions.\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getFlowExtensionFunctions';\n }\n\n /**\n * Returns the ExtensionContext constructor used to create the '$' expression context.\n * @return {ExtensionContext.constructor}\n * @override\n */\n static get ContextType() {\n return FlowExtensionContext;\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n return {\n [Constants.FLOW_PREFIX]: this,\n [Constants.APP_PACKAGE_PREFIX]: this.package,\n [Constants.APPLICATION_PREFIX]: this.base.getParentFlow().extensions[this.extensionId],\n };\n }\n }\n\n return FlowExtension;\n});\n\n","'use strict';\n\ndefine('vb/private/services/serviceProvider',[],\n () => {\n /**\n * Class representing a Service definition that can be registered via code.\n * Usage - Services.addServiceProvider\n */\n class ServiceProvider {\n constructor(serviceName, servicePath, definition) {\n this.serviceName = serviceName;\n this.servicePath = servicePath;\n this.definition = definition;\n }\n\n /**\n * Returns the service name\n * @returns {String}\n */\n getServiceName() {\n return this.serviceName;\n }\n\n /**\n * Symbolic path now, not used to resolve the file.\n * @returns {String}\n */\n getServiceFilePath() {\n return this.servicePath;\n }\n\n /**\n * Should return the JSON representation of the service swagger/openApi3 file\n */\n getDefinition() {\n return this.definition;\n }\n }\n\n return ServiceProvider;\n });\n\n","'use strict';\n\ndefine('vb/private/services/serviceUtils',[\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/services/serviceConstants',\n 'vb/private/configLoader',\n 'vbc/private/constants',\n 'urijs/URI',\n], (Constants, Utils, ServiceConstants, ConfigLoader, CommonConstants, URI) => {\n const HAS_SCHEME_REGEX = /^[A-Za-z][A-Za-z0-9+.-]*:.+/;\n\n /**\n *\n */\n class ServiceUtils {\n /**\n * https://confluence.oraclecorp.com/confluence/pages/viewpage.action?pageId=936840736\n * https://jira.oraclecorp.com/jira/browse/BUFP-26454\n * https://jira.oraclecorp.com/jira/browse/BUFP-27537\n */\n /**\n * Augment the extension with information that can be used to construct the proxy url and token relay url.\n *\n * For the name used in the proxy, use the first \"services\" name from the catalog, if any.\n * Otherwise, use the normal service name (from the app-flow key).\n *\n * @param name name of the service; this must be the name used for the PROXY url.\n * @param catalogInfoChain optional, array from additional info from resolving a vb-catalog:// path, if any\n * @param extensions extension to augment\n * @private\n */\n static augmentExtension(name, catalogInfoChain, extensions) {\n // if the catalog was used, use the first service name for the proxy; otherwise, use the normla service name\n const firstInChain = catalogInfoChain && catalogInfoChain[0];\n const nameForUrl = (firstInChain && firstInChain.type === 'services' && firstInChain.name) || name;\n\n if (extensions) {\n const ext = Utils.cloneObject(extensions);\n\n // same base for proxy & token relay\n ext.baseUrl = Utils.getBaseUrlForProxy(ConfigLoader.activeProfile);\n ext.serviceName = nameForUrl;\n\n return ext;\n }\n return extensions;\n }\n\n /**\n * this was originally in endpoint.js\n *\n * first, check if the URL is 'http', and if so, switch to https, because we use the actual url to make the fetch,\n * and it has to bee https when the app is served from https. We put the original protocol in a special header.\n * When we construct the proxy in the fetch plugins, we look for the special header, and use that protocol instead.\n *\n * next, look to see if the currentPage needs auth, and add another header flag if so.\n *\n * @todo: this should be adding this information in the special 'vb-info-extension' header\n * to keep ALL information passed to the preprocessor in ONE header.\n *\n * note that we need the auth for the current page, but we do not want static dependency on Router in this file\n *\n * @param headers\n * @param url\n * @param isAnonymousPageAccessAllows Router.getCurrentPage() && !Router.getCurrentPage().isAuthenticationRequired()\n * @returns {string} the current URL, or a new URL if a protocol override is needed\n */\n static getHeadersAndUrlForPreprocessing(headers, url, isAnonymousAllowed) {\n const hdrs = headers;\n let newUrl = url;\n\n let added = false;\n\n if (ServiceUtils.isProtocolOverrideRequired(url)) {\n const uri = new URI(url);\n uri.protocol('https');\n hdrs[CommonConstants.Headers.PROTOCOL_OVERRIDE_HEADER] = 'http';\n newUrl = uri.toString();\n added = true;\n }\n\n if (isAnonymousAllowed) {\n hdrs[CommonConstants.Headers.ALLOW_ANONYMOUS_ACCESS_HEADER] = true;\n added = true;\n }\n\n // if we already created the 'vb-info-extension' header, update it with the new headers\n const infoExtension = added && headers[CommonConstants.Headers.VB_INFO_EXTENSION];\n if (infoExtension) {\n const extensions = JSON.parse(infoExtension);\n extensions.headers = Object.assign({}, hdrs);\n headers[CommonConstants.Headers.VB_INFO_EXTENSION] = JSON.stringify(extensions);\n }\n\n return newUrl;\n }\n\n /**\n * used to be in endpoint.js\n *\n * @returns {boolean} True if the protocol of the window is http but the requested url is http\n */\n static isProtocolOverrideRequired(url) {\n return window.location.protocol.indexOf('https') === 0 && url.indexOf('http:') === 0;\n }\n\n\n /**\n * note, this is different than DefinitionObject._mergeExtensions;\n * here, everything in extensionB takes precedence over extensionsA\n *\n * @param extensionA\n * @param extensionB\n * @returns {*}\n * @private\n */\n static mergeExtensions(extensionA, extensionB) {\n const extA = extensionA || {};\n const extB = extensionB || {};\n\n const headers = Object.assign({}, extA.headers || {}, extB.headers || {});\n\n const authentication = Object.assign({}, extB.authentication || extA.authentication || {});\n\n const merged = Object.assign({}, extA, extB, { headers });\n\n // don't add an empty 'authorization' object, just to keep it clean-ish, and keep the 'clutter' low\n if (Object.keys(authentication).length) {\n merged[ServiceConstants.AUTH_DECL_NAME] = authentication;\n }\n return merged;\n }\n\n /**\n * \"metadata\" in this context refers to the use of an \"openapi\" fragment in a catalog.json \"services\" object.\n *\n * used when catalog.json uses the \"paths\" syntax for referencing a service definition;\n * (this is NOT used for normal data fetch; only live swagger/openapi3).\n *\n * the object returned from here may also me used as an \"init\" object for a Request/fetch, since it contains the\n * headers for the metadata.\n *\n * @param serverUrl\n * @param metadata created by CatalogHandler.createOpenApiMetadata\n * @param requestInit for Request/fetch API. typically contains \"headers\" object (and other unused values).\n * @returns {{headers: *, method: *, url: *, transforms: { path: {string} }}}\n * @private\n */\n static getExtensionsFromMetadata(serverUrl, metadata, requestInit) {\n const uri = new URI(serverUrl).segment(metadata.path || '');\n\n // the 'metadata' is populated by the new openapi3 syntax in catalog, if the URL has a query in \"paths/get\".\n // note that the serverUrl may also have a query.\n if (metadata.query) {\n if (uri.query()) {\n uri.addQuery(URI.parseQuery(metadata.query));\n } else {\n uri.query(metadata.query);\n }\n }\n\n const url = uri.normalize().toString();\n\n const method = metadata.method.toUpperCase();\n const metadataExtensions = metadata.extensions || {};\n const initHeaders = requestInit.headers || {};\n const serverExtensions = JSON.parse(initHeaders[CommonConstants.Headers.VB_INFO_EXTENSION] || '{}');\n\n const mergedHeaders = Object.assign({}, requestInit.headers || {}, metadataExtensions.headers || {});\n delete mergedHeaders[CommonConstants.Headers.VB_INFO_EXTENSION];\n\n // extensions in the \"paths\" override conflicts with \"server\" extensions\n // note: we keep url & method here, so this can be used as an init\n const mergedExtensions = Object\n .assign({ url, method }, serverExtensions, metadataExtensions, { headers: mergedHeaders });\n\n mergedExtensions.headers = mergedHeaders;\n\n // create an cleaner object for the 'vb-info-extension' header\n const extForHeader = Object.assign({}, mergedExtensions);\n delete extForHeader.url;\n delete extForHeader.method;\n\n // set a new, combined, vb-info-extension headers\n mergedHeaders[CommonConstants.Headers.VB_INFO_EXTENSION] = JSON.stringify(extForHeader);\n\n return mergedExtensions;\n }\n\n /**\n * @param resolved\n * @param name\n * @param url\n * @param existingServiceDefHeaders\n * @returns {{metadata: *, chain: (*|Array), services: {extensions: {headers: *}, metadata: *},\n * backends: {extensions: (*|{})}, url: *}}\n */\n static transformResolvedCatalogObject(resolved, name, url, existingServiceDefHeaders) {\n // convert the 'resolved' object to something a little easier for the runtime to consume right now\n // reach into the metadata & headers, and separate the top-level by services & backends\n // BEFORE: metadata: {services: {}}, headers: { services: {}, backends: {} }...\n // AFTER: services: { metadata: {}, headers: {} }, backends: { headers: {} }\n\n // get the 'services' header\n const extensions = (resolved && resolved.extensions) || {};\n\n // merge the 'backends' extensions _into_ the 'services' extensions\n // the catalogHandler/protocolRegistry keeps the 'services' and 'backends' data separate;\n // its up to the caller to decide how to interpret those in relation to each other.\n // VB considers any referenced 'backends' extension info to be part of the 'services' that references it,\n // so merge the backends into the services, giving the services conflicts priority.\n // This means, a services will inherit references backends' auth block, headres, etc.\n let mergedExtensions = ServiceUtils\n .mergeExtensions(extensions.backends || {}, extensions.services || {});\n\n const headers = mergedExtensions.headers || {};\n // similiar to endpoint.js, we need to communicate some 'x-vb' information to the service worker plugins\n // BUFP-25539: need to pass proxyUrls to the plugins, if defined in the catalog 'services' object\n // so the fetch of the service definition goes through the proxy\n\n const serviceNameForProxy = ServiceUtils.getNameForProxy(name, url, resolved.chain);\n\n // @todo: is the chain right?\n mergedExtensions = ServiceUtils\n .augmentExtension(serviceNameForProxy, resolved.chain, mergedExtensions);\n\n headers[CommonConstants.Headers.VB_INFO_EXTENSION] = JSON.stringify(mergedExtensions);\n\n // any catalog 'headers' are merged with existing (declared) headers (declared ones take precedence).\n const mergedHeaders = Object.assign({}, headers || {}, existingServiceDefHeaders || {});\n\n const metadata = resolved.metadata || {};\n\n return {\n url: resolved.url,\n namespace: resolved.namespace, // 'base' or \n services: {\n extensions: {\n headers: mergedHeaders, // only 'headers' are used for service def loads\n },\n metadata: metadata.services,\n },\n backends: {\n extensions: extensions.backends || {},\n // no backend metadata currently; metadata: metadata.backends,\n },\n metadata: resolved.metadata,\n chain: resolved.chain || [],\n mergedExtensions, // @todo: better name? adding this only for mappper\n };\n }\n\n /**\n *\n * @param path\n * @returns {boolean | *}\n */\n static isAbsolute(path = '') {\n return path.startsWith('/') || new URI(path).is('absolute');\n }\n\n /**\n * @param {string} value\n * @return {boolean} true if value starts with a valid URI scheme\n */\n static hasScheme(value) {\n return HAS_SCHEME_REGEX.test(value);\n }\n\n /**\n * Returns an absolute URL by resolving 'url' against 'baseUrl' if necessary, i.e. if url is a relative URL.\n * Returns 'url' in case of errors.\n *\n * @param {string} baseUrl - the base URL\n * @param {string} url - the URL to be turned into an absolute URL\n * @return {string} an absolute URL or 'url' in case of errors\n */\n static toAbsoluteServerUrl(baseUrl, url) {\n // ensures that the resolution only happens if 'baseUrl' is absolute and 'url' is relative\n return ServiceUtils.hasScheme(baseUrl) && !ServiceUtils.hasScheme(url) ? new URI(url, baseUrl).href() : url;\n }\n\n /**\n *\n * @param name the 'name' of the service, from the declaration key\n * @param path file path, could be absolute or relative, and could use a custom protocol (vb-catalog).\n * @param chain the trail derived from custom protocol resolution (aka 'vector through the catalog.json')\n * @returns {*|boolean}\n */\n static getNameForProxy(name, path, chain) {\n const firstInChain = chain && chain[0];\n\n // first, use the name of any referenced \"services\" object from the catalog (if any)\n // \"services\": { \"wrongname\": { \"path\": \"vb-catalog://services/rightname/blah/blah\" } }\n // the 'chain keeps track of how we followed custom protocol indirections (\"vb-catalog\")\n // vb-catalog://services/foo -> vb-catalog://backends/a -> vb-catalog://backends/b, etc.\n let proxyName = (firstInChain && firstInChain.type === 'services' && firstInChain.name);\n\n // next, look at the file path, if the catalog was not used (no chain) and the path is relative\n // example: \"./services/myname/openapi3.json\". must have a /services/ followed by another folder name.\n if (!proxyName && (!chain || !chain.length) && !ServiceUtils.isAbsolute(path)) {\n const parts = path.split('/');\n const idx = parts.indexOf('services');\n if (idx >= 0 && idx === parts.length - 3) {\n proxyName = parts[idx + 1];\n }\n }\n\n return proxyName || name;\n }\n\n /**\n * Returns a simple map-like object, that enforces key = ID + namespace.\n * @returns {{set: set, getValues: (function(): unknown[]),\n * get: (function(*, *): *), has: (function(*, *): boolean), getKeys: (function(): string[]), delete: delete}}\n */\n static createNamespaceMap(defaultNamespace = Constants.ExtensionNamespaces.BASE) {\n const m = {};\n return {\n get: (id, namespace) => m[`${id}:${namespace || defaultNamespace}`],\n set: (id, namespace, value) => {\n m[`${id}:${namespace || defaultNamespace}`] = value;\n },\n has: (id, namespace) => !!m[`${id}:${namespace || defaultNamespace}`],\n\n getKeys: () => Object.keys(m),\n getValues: () => Object.values(m),\n\n // delete entries when the callback returns true\n // @returns {function : boolean}\n delete: (fn) => {\n const toDelete = [];\n Object.keys(m).forEach((k) => {\n const parts = k && k.split(':');\n if (fn(parts[0], parts[1])) {\n toDelete.push(k);\n }\n });\n toDelete.forEach((k) => {\n delete m[k];\n });\n },\n };\n }\n }\n\n return ServiceUtils;\n});\n\n","/* eslint-disable class-methods-use-this,no-underscore-dangle */\n\n'use strict';\n\ndefine('vb/private/services/definitionObject',['vb/private/log', 'vb/private/services/serviceProvider',\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/services/serviceUtils',\n 'vb/private/services/serviceConstants'],\n(Log, ServiceProvider, Constants, Utils, ServiceUtils, ServiceConstants) => {\n const logger = Log.getLogger('/vb/private/services/services');\n\n // names for x-vb extensions\n const VB_TRANSFORMS = 'transforms';\n const VB_TRANSFORMS_PATH = 'path';\n const VB_DISABLED = 'disabled';\n\n const COMMON_TRANSFORM_NAMES = {\n request: ['sort', 'filter', 'query', 'paginate'],\n response: ['paginate'],\n metadata: ['capabilities'],\n };\n\n /**\n * map of transform functions created from in-line strings.\n * two maps are created, for request and response.\n * These may be overridden by the optional 'transforms.path' extension\n *\n */\n\n function getTransformMaps(transformsDef = {}) {\n const transforms = {\n request: {},\n response: {},\n metadata: {},\n };\n\n ['request', 'response', 'metadata'].forEach((key) => {\n if (transformsDef[key]) {\n Object.keys(transformsDef[key]).forEach((xformKey) => {\n if (transformsDef[key][xformKey]) {\n const code = transformsDef[key][xformKey];\n try {\n // eslint-disable-next-line no-new-func\n transforms[key][xformKey] = code ? new Function('configuration', 'options', code) : null;\n } catch (err) {\n logger.error(err);\n }\n }\n });\n }\n });\n\n return transforms;\n }\n\n\n /**\n * a base class for Service and Endpoint, for assigning private properties based on the 'x-vb' extension.\n * provides a load() method for asynchronously loading anything required by the extension\n *\n * about 'parent':\n * Extensions (\"x-vb\") are really only realized on the Endpoints; the Service has properties for the extensions\n * defined at the service level, but its really only through inheritance in the Endpoint that the extensions\n * are applied. Meaning, the Endpoint '_extensions' represent the merge of extensions defined both\n * on the Service and Endpoint.\n */\n class DefinitionObject {\n /**\n * @param name\n * @param openApi\n * @param parent for Service, this is null. For Endpoint, this is the Service, to allow extension inheritance.\n * @param namespace {string}\n * @param relativePath container's path\n * @param catalogInfo possible additions/overrides, local to the app\n * @param isUnrestrictedRelative true means, allow using parent folders in paths (only Application)\n */\n constructor(name, openApi, parent, namespace, relativePath, catalogInfo, isUnrestrictedRelative) {\n this.name = name;\n // extensions metadata; the 'x-vb' object from the JSON, merged with anything from the catalog\n // ignore anything in the 'catalogInfo.services'; that's only used for getting the service def, itself\n const backendExtensions = (catalogInfo && catalogInfo.backends && catalogInfo.backends.extensions) || {};\n\n // combine the 'pure' swagger/openapi3 model extensions with any we layer on from the catalog (or 'other').\n const thisExtensions = openApi.getExtensions();\n\n // First, flatten (merge) the x-vb info ext\n //\n // merge the catalog.json with the x-vb for this object.\n // If this object is an endpoint, the x-vb has already been flattened with its parent serviceDev.\n this._extensions = DefinitionObject._mergeExtensions(thisExtensions, backendExtensions);\n\n this._loadExtensionsPromise = null;\n this._relativePath = relativePath || '';\n\n this._catalogInfo = catalogInfo || { chain: [] };\n\n this.isUnrestrictedRelative = isUnrestrictedRelative;\n\n this._parent = parent;\n this._namespace = namespace;\n\n const transformDefs = this._extensions[VB_TRANSFORMS] || {};\n\n this._transformsFile = transformDefs[VB_TRANSFORMS_PATH];\n\n const transforms = getTransformMaps(transformDefs);\n\n // set the transforms for the in-line string functions now; may be overridden later by module transforms\n // this also merges in any from the parent (for Endpoint, the 'parent' is Service)\n // todo: would be nice if this was more generic, to allow for more than request and response, but leave for now\n this._transforms = {\n request: {},\n response: {},\n metadata: {},\n };\n\n // don't merge parent transforms in until load() is called\n this._setRequestTransforms(transforms.request);\n this._setResponseTransforms(transforms.response);\n this._setMetadataTransforms(transforms.metadata);\n\n // merge in the parent ones when we filter\n this._disabledTransforms = transformDefs[VB_DISABLED] || {};\n }\n\n getRelativePath(filename) {\n // TODO: HAD TO special-case paths that start with this prefix\n if (filename && filename.startsWith('vb/')) {\n return filename;\n }\n return filename ? this._relativePath + filename : '';\n }\n\n\n /**\n * first time called, will check for the 'transforms.path' extension, and initialize\n * transformations from the JS module.\n * With or without a transforms.path, the Promise is resolved with 'this'.\n * Subsequent calls return the previous promise.\n * @returns {Promise} resolved with 'this'\n */\n load() {\n // make sure the parent has been loaded already\n return Promise.resolve(this._parent && this._parent.load())\n .then(() => {\n this._loadExtensionsPromise = this._loadExtensionsPromise\n || this._loadTransformsAndMerge(this._transformsFile).then(() => this);\n\n return this._loadExtensionsPromise;\n });\n }\n\n _setRequestTransforms(...requestMaps) {\n Object.assign(this._transforms.request, ...requestMaps);\n }\n\n _setResponseTransforms(...responseMaps) {\n Object.assign(this._transforms.response, ...responseMaps);\n }\n\n _setMetadataTransforms(...metadataMaps) {\n Object.assign(this._transforms.metadata, ...metadataMaps);\n }\n\n /**\n * @param pathJs if path is false, this returns an empty resolved promise.\n * Otherwise, calls Utils.getResources.\n *\n * NOTE: this uses requireJS to load the script because they are JavaScript, and require modules.\n * If we use fetch(), we need to execute those somehow.\n *\n * @returns {Promise}\n * @private\n */\n _loadTransformModule(pathJs) {\n return Promise.resolve()\n .then(() => {\n // need to remove the '.js' extension, or requireJS will not do any possible mapping\n let path = pathJs;\n\n if (pathJs) {\n const useJsExt = ServiceUtils.isAbsolute(pathJs);\n const hasJsExt = pathJs.endsWith('.js');\n\n if (useJsExt && !hasJsExt) {\n path = `${pathJs}.js`;\n } else if (!useJsExt && hasJsExt) {\n path = pathJs.substring(0, pathJs.length - 3);\n }\n }\n\n if (path) {\n return Utils.getRuntimeEnvironment()\n .then(rtEnv => rtEnv.getTransformsSource(path));\n }\n\n return {};\n });\n }\n\n\n /**\n * 1) load our JS transforms, if any\n * 2) merge the parents transforms, our existing inline transforms, and any JS transforms\n *\n * Before calling this, make sure parent.load() has been called, so its transforms are ready to beinherited.\n *\n * @param filepath\n * @returns {Promise}\n */\n _loadTransformsAndMerge(filepath) {\n let path = filepath;\n\n const transforms = {\n request: {},\n response: {},\n metadata: {},\n };\n\n return Promise.resolve()\n .then(() => {\n // need to figure out if its relative to service, or application\n // two cases that might come form design-time, initially:\n // -- './transform.js' - relative to SERVICE def file\n // -- 'vb/ServiceRampTransforms' - relative to normal requireJS baseUri\n\n // do not allow Flows to use '..' paths\n if (path && path.indexOf(Constants.PARENT_FOLDER) >= 0 && !this.isUnrestrictedRelative) {\n logger.error('found', Constants.PARENT_FOLDER,\n 'in Flow transform path, which is not allowed. skipping:', path);\n return transforms;\n }\n\n if (path) {\n // if the transform starts with the RELATIVE_FOLDER_PREFIX (a dot),\n // it means we want to interpret th path as relative to the service def.\n // in that case, add the service path prefix to the transform path\n if (path.startsWith(Constants.RELATIVE_FOLDER_PREFIX)) {\n // either or our parent has a filename (parent is a Service), or we do (we are a Service)\n const servicePath = (this._parent && this._parent._catalogInfo && this._parent._catalogInfo.url)\n || (this._catalogInfo && this._catalogInfo.url);\n\n // use the service path for the transform path\n if (servicePath) {\n // get the path part of the service def path, without the file name\n const index = servicePath.lastIndexOf(Constants.PATH_SEPARATOR);\n const prefix = (index <= 0) ? '' : (servicePath.substring(0, index + 1));\n // and prepend it to the transform file path (including transform file name)\n path = `${prefix}${path}`;\n }\n } else if (this.isUnrestrictedRelative) {\n // if there is no dot, we want this to be app-relative, not container relative\n path = this.getRelativePath(path);\n }\n }\n\n return this._loadTransformModule(path);\n })\n .then((module) => {\n try {\n // the module should return an object with this form; there is no restriction on transform name,\n // since restAction, and the Rest helper, simply apply all transforms.\n // but standard names should be used since they have meaning in other contexts, like ServiceDataProvider\n /**\n * {\n * request: {\n * sort: fn(),\n * paginate: fn(),\n * ...\n * },\n * response: {\n * paginate: fn()\n * ...\n * }\n */\n Object.keys(module).forEach((category) => {\n // each property of the module object can either be a constructor or a singleton\n const instance = (typeof module[category] === 'function') ?\n new module[category]() : module[category]; // eslint-disable-line new-cap\n\n // walk prototype chain, get properties of the instance, and its prototype (not the chain).\n const propertyNames = [];\n propertyNames.push(...Object.getOwnPropertyNames(instance));\n let proto = Object.getPrototypeOf(instance);\n const protoObj = Object.getPrototypeOf({});\n while (proto && proto !== protoObj) {\n propertyNames.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(instance)));\n proto = Object.getPrototypeOf(proto);\n }\n // use default names to make sure we look for the common ones, regardless of module structure\n COMMON_TRANSFORM_NAMES[category].forEach((commonName) => {\n if (propertyNames.indexOf(commonName) === -1) {\n propertyNames.push(commonName);\n }\n });\n\n // filter '_' and constructor\n propertyNames.filter(name => name !== 'constructor' && name[0] !== '_').forEach((functionName) => {\n if (instance[functionName] && typeof instance[functionName] === 'function') {\n transforms[category][functionName] = instance[functionName].bind(instance);\n // this boolean is our clue that this transform fnc one of ours, and will do its own transforms\n // so we need to copy the value over, after the bind()\n if (instance[functionName].doesQueryEncoding) {\n transforms[category][functionName].doesQueryEncoding = true;\n }\n }\n });\n });\n\n\n // here we finally inherit transforms from our parent. precedence is, from lowest to highest:\n // - all parent transforms, if any\n // - our own JS module transforms\n // - our own (existing) inline transforms\n\n // prior to calling the next code, we only have 'inline' transforms\n\n // eslint-disable-next-line no-underscore-dangle\n const parentTransforms = (this._parent && this._parent._transforms) || {};\n\n const inlineRequest = Object.assign({}, this._transforms.request);\n this._setRequestTransforms(parentTransforms.request, transforms.request, inlineRequest);\n\n const inlineResponse = Object.assign({}, this._transforms.response);\n this._setResponseTransforms(parentTransforms.response, transforms.response, inlineResponse);\n\n const inlineMetadata = Object.assign({}, this._transforms.metadata);\n this._setMetadataTransforms(parentTransforms.metadata, transforms.metadata, inlineMetadata);\n\n\n return transforms;\n } catch (e) {\n // just rethrow for now\n throw e;\n }\n });\n }\n\n\n /**\n * merge the headers; otherwise, catalog overrides the definition\n * @param extensionsFromOpenApi\n * @param extensionsFromCatalog\n * @returns {*}\n * @private\n */\n static _mergeExtensions(extensionsFromOpenApi, extensionsFromCatalog) {\n const openApiExt = extensionsFromOpenApi || {};\n const catalogExt = extensionsFromCatalog || {};\n\n // for headers, the catalog will override anything in the servers\n // @todo: should headers in catalog override the service def?\n const headers = Object.assign({}, openApiExt.headers || {}, catalogExt.headers || {});\n\n // otherwise, the service def takes precedence over catalog (auth block, etc).\n\n // take the (atomic) auth block from either the openapi3, or the catalog\n const authentication = Object.assign({}, openApiExt.authentication || catalogExt.authentication || {});\n\n const merged = Object.assign({}, catalogExt, openApiExt, { headers });\n // don't add an empty 'authorization' object, just to keep it clean-ish, and keep the 'clutter' low\n if (Object.keys(authentication).length) {\n merged[ServiceConstants.AUTH_DECL_NAME] = authentication;\n }\n return merged;\n }\n }\n\n return DefinitionObject;\n});\n\n","'use strict';\n\n/**\n * Do not statically require Router. this is used by runtimeEnvironment, and must not load JET until needed.\n * One reason is, the translation bundle loads are funnelled through runtimeEnvironment,\n * and the (requireJS) configuration for bundles must be done before JET is loaded.\n * If anything in runtimeEnvironment loads JET through a module dependency,\n * it will be loaded before the bootstrap has had a chance to initialize ConfigLoader (which config the bundles).\n */\ndefine('vb/private/services/servicesLoader',['vb/private/utils',\n 'vb/private/log',\n 'vb/private/constants',\n 'vbc/private/constants',\n 'urijs/URI',\n 'vb/private/services/serviceUtils',\n 'signals',\n],\n(Utils, Log, Constants, CommonConstants, URI, ServiceUtils, signals) => {\n const logger = Log.getLogger('/vb/private/services/servicesLoader');\n\n const EXTENSION_PREFIX = `${Constants.EXTENSION_PATH_NAME}/`;\n\n class ServicesLoader {\n /**\n * This method is used (instead of requireJS) for two cases:\n * 1) we need additional Request configuration, like headers, to make the request (not supportedby requireJS)\n * 2) using requireJS has failed, for some reason; this is only used as a fallback in this case.\n *\n * note: 'path' used to have to be prepended with Router.baseUrl by the caller;\n * this has changed for 19.1.3, we will prepend it here\n *\n * @param path\n * @param requestInit an object usable as the 'init' for a Request constructor\n * @returns {Promise} resolved with the the definition (as an object), or rejected\n */\n static loadWithFetchOrXHR(path, requestInit = {}) {\n return Utils.getResource('vb/private/stateManagement/router')\n .then((Router) => {\n // if we are using fetch() and the path is NOT absolute, we need to prepend the Router.baseUrl\n const isAbsolutePath = ServiceUtils.isAbsolute(path);\n const url = isAbsolutePath ? path : Router.baseUrl + path;\n\n // eslint-disable-next-line no-param-reassign\n requestInit.resolvedUrl = url;\n\n // only use XMLHttpRequest for local files on native mobile, for all other usecases stick to fetch()\n if (Utils.isMobile() && !isAbsolutePath) {\n return new Promise((resolve) => {\n const xhr = new XMLHttpRequest();\n // workaround for the persistence toolkit until they add support for the onload event (see JET-20785)\n // xhr.onload = function () {\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n resolve(new Response(xhr.responseText, { status: xhr.status }));\n }\n };\n xhr.onerror = () => {\n console.error('Failed to fetch request: ', url);\n };\n const method = requestInit.method || 'GET';\n xhr.open(method, url, true);\n xhr.send(null);\n });\n }\n\n const init = Object.assign({}, requestInit, { credentials: 'same-origin' });\n const request = new Request(url, init);\n\n return fetch(request);\n })\n .then((response) => {\n if (response.ok) {\n return response.json();\n }\n throw Error(`service fetch failed: ${path} : ${response.status} ${response.statusText}`);\n });\n }\n\n /**\n * changed for 18.4.3\n *\n * this method will use either fetch() or require().\n *\n * requireJS will be used if\n * a) there is no additional request configuration (which currently means no 'headers') for the service def, AND\n * b) the path to the service does not include an explicit protocol.\n *\n * Example of (a)...it is possible to get OpenAPI 3 for a Business Object using:\n * Accept: application/vnd.oracle.openapi3+json\n *\n * So, if there are no headers or additional Request properties, and no protocol, use requireJS.\n * Otherwise, use fetch().\n *\n * if requireJS is used, the timeout is ignored, and the requireJS timeout applies (typically 7 seconds).\n *\n * fetch isn't cancelled when elapsed time reached 'timeout', we just don't wait anymore, and Promise rejects.\n *\n * (originally introduced with the change to use fetch() to get service definitions, because of timeouts)\n *\n * originally tried to put into Utils, but that caused a dependency loop:\n * Utils -> Router -> Log -> Utils -> ...\n * @param url\n * @param requestInit\n * @param timeout defaults to Constants.defaultFetchTimeout (30 secs)\n * @returns {Promise|Promise.<*>}\n */\n // NOTE: this is used by DT: DtRuntimeEnvironment. see BUFP-34538\n static loadWithTimeout(url, requestInit, timeout = Constants.Services.definitionTimeout) {\n // don't count vb-info-extension as a header\n const hasInfoExtensionHeader = requestInit.headers\n && requestInit.headers[CommonConstants.Headers.VB_INFO_EXTENSION];\n\n const hasHeaders = requestInit.headers &&\n Object.keys(requestInit.headers).length > (hasInfoExtensionHeader ? 1 : 0);\n\n // 'hasInitProps' means, there are additional properties for the Request, other than headers\n const hasInitProps = (Object.keys(requestInit).length > (requestInit.headers ? 1 : 0));\n\n function loadNotUsingRequireJS() {\n const timeoutError = new Error(`Service definition loading timed out: ${timeout}`);\n return Utils.promiseRaceWithTimeout(ServicesLoader.loadWithFetchOrXHR(url, requestInit), timeout, timeoutError);\n }\n\n if (!hasHeaders && !hasInitProps) {\n const urlInfo = URI.parse(url);\n if (!urlInfo.protocol) {\n return ServicesLoader.loadWithRequireJs(url, requestInit)\n .catch((err) => {\n // if requireJS fails with a timeout, use fetch()\n if (err && err.requireType === 'timeout') {\n logger.warn('Fetching service with requireJS timed out, trying fetch:', url, err);\n return loadNotUsingRequireJS();\n }\n throw err;\n });\n }\n }\n\n return loadNotUsingRequireJS();\n }\n\n /**\n * use require 'text' plugin (which we have configured to use XHR)\n * @param url\n * @param requestInit\n */\n static loadWithRequireJs(url, requestInit = {}) {\n // eslint-disable-next-line no-param-reassign\n requestInit.resolvedUrl = url;\n\n // need to determine if its an extension\n const loadPromise = url.startsWith(EXTENSION_PREFIX)\n ? Utils.getRuntimeEnvironment().then((re) => re.getExtensionTextResource(url))\n : Utils.getResource(`text!${url}`);\n\n return loadPromise\n .then((def) => JSON.parse(def));\n }\n\n\n /**\n * look up the url in the catalog, and return an object with any extension information found:\n * {\n * url: the resolved url to use\n * services: {\n * - an object to use for initializing a Request object for fetch()ing the service def.\n * - may be empty, the caller may decide to use something other than fetch().\n * - note: this is for getting the service def, and NOT for calls made to the\n * extensions: {\n * headers: {\n * - Currently only contains headers, and is merged with the 'existingHeaders' param.\n * - endpoints in the def, a.k.a 'backends'.\n * }\n * }\n * },\n * backends: {\n * extensions: {\n * - any additional properties that should override or merge with any existing 'x-vb' extensions\n * - for the 'backend' calls (and NOT for the call to get the the service def itself).\n * }\n * }\n * }\n * @param protocolRegistry\n * @param url\n * @param serviceName typically the service name; added to the vb-info-extension, and used by the plugins\n * to construct a proxy url, if needed.\n * @param namespace {string}\n * @param existingServiceDefHeaders any headers associated with the service declaration\n * before catalog resolution, if any. unused for endpoint resolution.\n * @returns {Promise} { url, services: { extensions }, backends: { extensions } }\n */\n static getCatalogExtensions(protocolRegistry, url, serviceName, namespace, existingServiceDefHeaders = {}) {\n return protocolRegistry.getResolvedInfoOrDefault(url, namespace)\n .then((resolved) => ServiceUtils\n .transformResolvedCatalogObject(resolved, serviceName, url, existingServiceDefHeaders));\n }\n\n /**\n *\n * @param id\n * @param serviceDefinition\n * @param openApi\n * @returns {*}\n */\n static notify(serviceDefinition) {\n const id = serviceDefinition.name;\n const nameForProxy = serviceDefinition.nameForProxy || id;\n // eslint-disable-next-line no-underscore-dangle\n const openApi = serviceDefinition._openApi;\n const servers = openApi.getServers();\n\n // eslint-disable-next-line no-underscore-dangle\n const ext = serviceDefinition._extensions;\n\n // eslint-disable-next-line no-underscore-dangle\n const catalogInfo = serviceDefinition._catalogInfo;\n // include the 'metadata', for when the service is really coming from the catalog indirection.\n const metadata = (catalogInfo && catalogInfo.services && catalogInfo.services.metadata) || {};\n\n const urlInfos = servers.map((server) => {\n return Object.assign({\n url: server.url,\n id,\n nameForProxy,\n metadata,\n }, ext);\n });\n\n // eslint-disable-next-line no-underscore-dangle\n return ServicesLoader.opened.dispatch(id, urlInfos, serviceDefinition._namespace);\n }\n }\n\n ServicesLoader.opened = new signals.Signal();\n\n return ServicesLoader;\n});\n\n","/* eslint-disable no-underscore-dangle,max-len */\n\n'use strict';\n\ndefine('vb/private/services/endpointMetadata',[\n 'vb/private/utils',\n], (Utils) => {\n class EndpointMetadata {\n /**\n *\n * @param endpoint\n * @returns {{headers: (*|null), method: *, requestContentTypes: *, responseContentTypes: *, proxyUrl: *, staticQueryParameters: (*|null), baseUri: *, name: *, description: *, serviceId: *, parameters: (*|null), url: *}}\n */\n constructor(endpoint, operationObject) {\n this.url = endpoint.url;\n\n const requestContentTypes = operationObject.getRequestContentTypes();\n const responseContentTypes = operationObject.getResponseContentTypes();\n\n this.name = endpoint.name;\n this.serviceId = endpoint.service.name;\n this.method = endpoint.method;\n this.description = endpoint.description;\n this.baseUri = endpoint.baseUri;\n this.proxyUrl = endpoint.proxyUrl;\n this.parameters = endpoint.parameters ? Utils.cloneObject(endpoint.parameters) : null;\n this.headers = endpoint.headers ? Utils.cloneObject(endpoint.headers) : null;\n this.staticQueryParameters = endpoint.staticQueryParams ? Utils.cloneObject(endpoint.staticQueryParams) : null;\n this.requestContentTypes = requestContentTypes ? requestContentTypes.slice() : null;\n this.responseContentTypes = responseContentTypes ? responseContentTypes.slice() : null;\n\n // create getters for lazily-expanded properties\n Object.defineProperties(this, {\n responses: {\n enumerable: true,\n configurable: false,\n get: () => operationObject.getExpandedResponses(),\n },\n });\n }\n\n /**\n * this must be called by Endpoint.load(), after the URL is resolved.\n * the original endpoint may use a special protocol (ex: vb-catalog://) to indicate an indirection which\n * needs to be calculated on-demand by Endpoint.load().\n * @param url\n */\n setUrl(url) {\n this.url = url;\n }\n\n /**\n * this should be used to access the object, to validate that the url has been set\n * @returns {EndpointMetadata}\n * @throws {Error}\n */\n get() {\n if (!this.url) {\n // this should never happen, this error is to make sure its not even possible\n throw new Error(`getMetadata called for endpoint ${this.name} before loading`);\n }\n return this;\n }\n }\n\n return EndpointMetadata;\n});\n\n","/* eslint-disable no-underscore-dangle */\n\n'use strict';\n\ndefine('vb/private/services/endpoint',['vb/private/log',\n 'vb/private/services/serviceProvider',\n 'vb/private/services/uriTemplate',\n 'vb/private/services/swaggerUtils',\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/services/definitionObject',\n 'vb/private/services/servicesLoader',\n 'vb/private/services/endpointMetadata',\n 'urijs/URI',\n 'vb/private/stateManagement/router',\n 'vbc/private/constants',\n 'vb/private/services/serviceUtils'],\n(Log, ServiceProvider, UriTemplate, SwaggerUtils, Constants, Utils, DefinitionObject, ServicesLoader, EndpointMetadata,\n URI, Router, CommonConstants, ServiceUtils) => {\n /**\n * Endpoint\n *\n * example access:\n * ServicesManager.getServices().then((services) => {\n * const endpoint = service.getEndpoint('servicename/endpointname');\n * ...\n * });\n */\n\n class Endpoint extends DefinitionObject {\n constructor({\n name,\n service,\n protocolRegistry,\n pathKey,\n pathObject, // eslint-disable-line no-unused-vars\n operationKey,\n operationObject,\n isUnrestrictedRelative,\n }) {\n // for now, no catalogInfo\n super(name, operationObject, service, service._namespace,\n (service ? service._relativePath : ''), null, isUnrestrictedRelative);\n\n this.service = service || { name: '', _catalogInfo: { chain: [] } }; // provide a stub if undefined/null\n\n this._protocolRegistry = protocolRegistry;\n\n this.method = (operationKey && operationKey.toUpperCase()) || 'GET';\n this.description = operationObject.description || '';\n\n // full url is the service's baseUri, plus the (swagger) Path Object key\n let baseUri = (service && service.baseUri) || '';\n if (baseUri.endsWith('/')) {\n baseUri = baseUri.substring(0, baseUri.length - 1);\n }\n\n this.baseUri = baseUri;\n this.urlUnresolved = baseUri + pathKey || '';\n\n // parameters.path, parameters.query, parameters.body, etc.\n // note: header parameters are currently unused; to define a header, use the x-vb.headers extension\n // swagger headers only allow specifying the server default for a value, and not the value the client should use\n\n // array of parameter definitions (swagger/openapi)\n this.parameterDefs = operationObject.parameters.slice();\n\n // an object, with parameters separated by type (path, query, etc)\n this.parameters = SwaggerUtils.separateParameters(this.parameterDefs);\n\n // this EndpointMetadata is not usable until load() has been called, to resolve the url\n this._metadata = new EndpointMetadata(this, operationObject);\n\n // create a parameter validation method; definitionObject does not currently keep a reference to the\n // pathObject or operationObject, to try to limit the dependencies.\n\n // this is a merge of the application-level header extensions with the operation header extensions\n // this.headers = Object.assign({}, this._parentExtensions[VB_HEADERS], this._extensions[VB_HEADERS]);\n const openApiHeaders = operationObject.getStaticHeaderValues();\n\n // no need to merge with parent (Service), this is only valid at the operationId (endpoint) level\n // this.staticQueryParams = this._extensions[VB_STATIC_QUERY_PARAMS] || {};\n const openApiStaticQueryParams = operationObject.getStaticQueryParameterValues();\n\n // a simple combination of 'info' level extensions, overridden by 'endpoint' extensions.\n // note, this is not a 'deep' merge of inner objects; its just using Object.assign.\n const openApiCombinedExtensions = operationObject.getCombinedExtensions();\n\n // now merge the ones from the service definition (openApi) with any we might have gotten from the catalog\n const parentExtensions = (this._parent && this._parent._extensions) || {};\n const extensions = this._extensions || {};\n\n this.staticQueryParams = Object.assign({}, openApiStaticQueryParams,\n parentExtensions.queryParameters || {}, extensions.queryParameters || {});\n\n // note: this is before catalog resolution; when we load the endpoint,\n // we may get more headers and extensions from the catalog.\n this.headers = Object.assign({}, openApiHeaders, parentExtensions.headers || {}, extensions.headers || {});\n this.combinedExtensions = Object.assign({}, openApiCombinedExtensions,\n parentExtensions, extensions, { headers: this.headers }); // headers are merged\n }\n\n load() {\n // ask the runtime environment for any extension override\n // TODO: ideally, this should be handled by the deployment profile specific for the page designer\n if (!this._loadPromise) {\n this._loadPromise = Utils.getRuntimeEnvironment()\n .then((rtEnv) => rtEnv.getServiceExtensionOverride())\n .then((extOverride) => {\n if (extOverride) {\n this.combinedExtensions = Object.assign(this.combinedExtensions, extOverride);\n }\n return ServicesLoader\n .getCatalogExtensions(this._protocolRegistry, this.urlUnresolved, this.service.nameForProxy,\n this._namespace);\n })\n .then((catalogInfo) => {\n this._catalogInfo = catalogInfo; // this was set to null in the constructor, update it\n\n // the original URL, or the resolved url if the protocol was 'vb-catalog'\n this.url = catalogInfo.url || this.urlUnresolved;\n\n // now, merge extension info\n const catalogExtensions = (catalogInfo.backends && catalogInfo.backends.extensions) || {};\n // merge headers, and merge/override the rest.\n // service def extensions take precedence over catalog extensions,\n // and the 'closest' catalog object in the chain has highest precedence.\n // service def and catalog 'headers' are merged with container model declaration (app-flow) 'headers'.\n const catalogBackendHeaders = (catalogExtensions && catalogExtensions.headers) || {};\n const mergedHeaders = Object.assign({}, catalogBackendHeaders, this.combinedExtensions.headers || {});\n this.combinedExtensions = Object.assign({},\n catalogExtensions, this.combinedExtensions, { headers: mergedHeaders });\n this.headers = this.combinedExtensions.headers;\n\n return super.load();\n })\n .then((ep) => {\n // create our replacement utility early\n this.uriTemplate = new UriTemplate(this.url, this.parameters);\n\n // complete/resolve the metadata\n this._metadata.setUrl(this.url);\n\n return ep;\n });\n }\n return this._loadPromise;\n }\n\n /**\n * gets the url, method, and headers defined in the endpoint.\n *\n * @param {object} uriVariables, map of parameter values.\n * @param options {Object} optional. possible properties:\n * - ignoreMissingParams: {boolean} if true, URL can have unreplaced templates.\n * otherwise, rejects when params are missing\n * @returns {Promise}\n * @private\n */\n getConfig(uriVariablesArg = {}, options = {}) {\n return this.load()\n .then(() => {\n if (!this.url || !this.uriTemplate) {\n // this should never happen, this error is to make sure its not even possible\n throw new Error(`getConfig called for endpoint ${this.name} before loading`);\n }\n\n const uriVariables = (typeof uriVariablesArg === 'object' && !Array.isArray(uriVariablesArg))\n ? uriVariablesArg : {};\n\n // check for all required params, and throw an error if any are missing (new to 19.1.1)\n // unless options.ignoreMissingParams is true (used for toUrl()/toRelativeUrl())\n if (!options.ignoreMissingParams) {\n let missingParams = this.uriTemplate.getMissingRequiredParameters(uriVariables, this.parameters);\n // ignore missing query params here: BUFP-32240\n missingParams = missingParams.filter((def) => def.type !== 'query');\n if (missingParams.length) {\n const names = missingParams.map((def) => def.name).join('\", \"');\n throw new Error(`getConfig() for \"${this.name}\" is missing required parameters: \"${names}\"`);\n }\n }\n\n // uriVariables (passed in) will overwrite static query parameters with the same name\n const variables = Object.assign({}, this.staticQueryParams, uriVariables || {});\n\n // the ignoreMissingParams is true for Rest.toUrl()/toRelativeUrl(), and makes sure the behavior\n // is the same as it was before BUFP-30950\n let url = this.uriTemplate.replace(variables, options.ignoreMissingParams);\n const headers = this.getAllHeaders(variables);\n\n // We might need to override the protocol, because you cannot call a http URL from\n // a https page, but we need this workaround for legacy purposes, so we use a header\n // to pass this information onto the service worker\n //\n // bufp-25294\n // @TODO: abstract the use of router, so services may be used without\n // pulling in JET by replacing the implementation of the abstraction.\n\n const page = Router.getCurrentPage();\n // headers may be modified\n url = ServiceUtils.getHeadersAndUrlForPreprocessing(headers, url, page && !page.isAuthenticationRequired());\n\n // Return configuration\n\n return {\n url,\n method: this.method,\n headers,\n requestContentTypes: this._metadata.requestContentTypes,\n responseContentTypes: this._metadata.responseContentTypes,\n };\n });\n }\n\n /**\n * get all headers; includes headers defined by x-vb extension, and parameters defined as in: \"header\"\n * @param variables\n * @returns {*}\n */\n getAllHeaders(variables) {\n // the pre-defined ones\n const headers = Object.assign({}, this.headers);\n\n // now check for header parameters\n const headerParamDefs = this.parameters.header || {};\n Object.keys(headerParamDefs).forEach((name) => {\n const headerParamDef = headerParamDefs[name];\n const defaultValue = SwaggerUtils.getParameterDefault(headerParamDef);\n\n if (defaultValue || Object.prototype.hasOwnProperty.call(variables, name)) {\n // replace any existing one\n headers[name] = variables[name] || defaultValue || '';\n }\n });\n\n // add the service's name and baseUrl to the vb-info-extension header,\n // in case the \"authorization\" block indicates we need a proxy or token relay url.\n // but first, make a chain that has only services in the endpoint chain (if any), followed by\n // only services in the service chain (if any); the first service in that list is the name for the proxy URL.\n const wholeChain = this._catalogInfo.chain.slice().concat(this.service._catalogInfo.chain)\n .filter((chainLink) => chainLink && chainLink.type === 'services');\n\n this.combinedExtensions = ServiceUtils\n .augmentExtension(this.service.nameForProxy, wholeChain, this.combinedExtensions);\n\n // Pass on the extension information to the service worker.\n headers[CommonConstants.Headers.VB_INFO_EXTENSION] = JSON.stringify(this.combinedExtensions);\n\n return headers;\n }\n\n\n /**\n * map of transforms applied to the request, with disabled transforms filtered\n */\n getRequestTransforms() {\n return this._getFilteredTransforms('request');\n }\n\n /**\n * map of transforms applied to the response\n */\n getResponseTransforms() {\n return this._getFilteredTransforms('response');\n }\n\n /**\n * map of transforms relevant to the endpoint. called once before the first request made to an endpoint\n */\n getMetadataTransforms() {\n return this._getFilteredTransforms('metadata');\n }\n\n /**\n * get a public copy of the endpoint metadata\n * @returns {EndpointMetadata}\n * @throws {Error}\n */\n getMetadata() {\n return this._metadata.get();\n }\n\n\n /**\n * return an object that contains all transforms, except the disabled ones, for a category\n * example syntax:\n * \"x-vb\": {\n \"transforms\": {\n \"path\": \"\"tests/test-transforms\",\n \"disabled\": {\n \"request\": [\"paginate\", \"sort\", \"filter\"],\n \"response\": [\"paginate\"]\n }\n }\n },\n * @param category 'request', 'response'.\n * @returns {*}\n * @private\n */\n _getFilteredTransforms(category) {\n const disabled = this._disabledTransforms[category] || [];\n // note: this only supports one level of containment; doesn't walk parents\n const parentDisabled = (this._parent && this._parent._disabledTransforms\n && this._parent._disabledTransforms[category]) || []; // eslint-disable-line no-underscore-dangle, max-len\n const transforms = Object.assign({}, this._transforms[category]);\n const allDisabled = disabled.slice();\n allDisabled.push(...parentDisabled);\n allDisabled.forEach((name) => {\n delete transforms[name];\n });\n return transforms;\n }\n\n /**\n * utility method for creating a 'stub' service when creating an Endpoint without a Service context,\n * as we do when creating an Endpoint for catalog.json \"paths\".\n *\n * Endpoint knows what it needs for a 'parent' service, at a minimum\n * @param name\n * @returns {{_catalogInfo: {chain: []}, name: *}}\n */\n static createEmptyService(name) {\n return {\n name,\n nameForProxy: name,\n _catalogInfo: {\n chain: [],\n },\n load: () => Promise.resolve(),\n };\n }\n }\n\n return Endpoint;\n});\n\n","'use strict';\n\ndefine('vbsw/private/constants',[], () => {\n const Constants = {};\n\n // constants for all the supported authentication type\n Constants.AuthenticationType = {\n ORACLE_CLOUD: 'oraclecloud', // default\n BASIC: 'basic',\n OAUTH: 'oauth',\n IMPLICIT: 'implicit',\n TOKEN_RELAY: 'tokenRelay',\n DIRECT: 'direct',\n NONE: 'none',\n HTTP_SIGNATURE_OCI: 'http_signature_oci',\n };\n\n // header for the authentication type\n Constants.AUTHENTICATION_TYPE_HEADER = 'vb-authentication-type';\n\n // constants related to token relay\n Constants.TOKEN_RELAY_URL_HEADER = 'vb-token-relay-url';\n Constants.TOKEN_RELAY_AUTH_HEADER = 'vb-token-relay-authentication';\n\n // used when using the new V1.1 proxy; preprocessor may add this; postprocessor will prefix headers if present.\n // stripped before request.\n Constants.PROXY_HEADERNAME_HEADER = 'vb-proxy11-headers';\n\n // when using the proxy, all headers that are not meant for the proxy should have prefixed names\n // and when we strip headers, we should NOT remove proxy headers\n Constants.HEADER_PROXY_PREFIX = 'vb-proxy-';\n Constants.HEADER_PROXY_HEADER_PREFIX = `${Constants.HEADER_PROXY_PREFIX}header-`;\n\n // for 'passthrough' support: BUFP-39984\n Constants.HEADER_PASSTHROUGH = 'vb-auth-settings';\n\n // header for specifying an alternate header name for the authorization header\n Constants.ALT_AUTHORIZATION_HEADER_NAME = 'vb-alt-authorization-header-name';\n\n // special header for using cached response when offline using the offline toolkit, e.g.,\n // currentuser request uses it to cache its response\n Constants.USE_CACHED_RESPONSE_WHEN_OFFLINE = 'vb-use-cached-response-when-offline';\n\n Constants.PATH_SEPARATOR = '/';\n\n /**\n * A mode to force cache lookup for index.html even when online\n */\n Constants.LOOKUP_INDEX_MODE = 'lookupIndex';\n\n return Constants;\n});\n\n","'use strict';\n\ndefine('vb/private/services/serviceDefinition',[\n 'vb/private/log',\n 'vb/private/services/serviceProvider',\n 'vb/private/services/swaggerUtils',\n 'vb/private/constants',\n 'vb/private/utils',\n 'vb/private/configLoader',\n 'vb/private/services/definitionObject',\n 'vb/private/services/endpoint',\n 'vb/private/services/serviceConstants',\n 'vbsw/private/constants',\n 'vb/private/services/serviceUtils',\n],\n(Log, ServiceProvider, SwaggerUtils, Constants, Utils, ConfigLoader, DefinitionObject,\n Endpoint, ServiceConstants, SWConstants, ServiceUtils) => {\n // const logger = Log.getLogger('/vb/private/services/services');\n\n /**\n * ServiceDefinition\n */\n class ServiceDefinition extends DefinitionObject {\n /**\n *\n * @param name\n * @param path\n * @param protocolRegistry utility that handles vb-specific protocols\n * @param catalogInfo catalog.json information, if any\n * @param openApi abstract definition model, implementation is either OpenApi 2 or OpenApi 3\n * @param relativePath container path, relative to requirejs root\n * @param requestInit fetch options\n * @param namespace {string}\n * @param isUnrestrictedRelative true for application; flows/pages may not load from parent folders (app may).\n */\n constructor(name,\n path, protocolRegistry, catalogInfo, openApi, relativePath, requestInit, namespace, isUnrestrictedRelative) {\n //\n super(name, openApi, null, namespace, relativePath, catalogInfo, isUnrestrictedRelative);\n\n this._openApi = openApi;\n this._requestInit = requestInit;\n\n this._protocolRegistry = protocolRegistry;\n\n this._namespace = namespace;\n\n const chosenServer = openApi.getServerForProfile(ConfigLoader.activeProfile);\n this.baseUri = chosenServer.url;\n\n this.nameForProxy = ServiceUtils.getNameForProxy(name, path, catalogInfo.chain);\n\n // merge chosen server's \"x-vb\" info into the global (\"info\"-level) one\n if (chosenServer[ServiceConstants.VB_EXTENSIONS]) {\n // the server ones will take precedence\n const mergedExtensions = ServiceUtils\n .mergeExtensions(this._extensions, chosenServer[ServiceConstants.VB_EXTENSIONS]);\n\n\n this._extensions = ServiceUtils.augmentExtension(this.nameForProxy, catalogInfo.chain, mergedExtensions);\n } else {\n // we need the augmented info for the 'legacy' syntax, also, for http/https promotion via proxy\n this._extensions = ServiceUtils.augmentExtension(this.nameForProxy, catalogInfo.chain, this._extensions);\n }\n\n\n this._endpoints = {};\n\n // hack for BUFP-25774 - for business objects; this replaces regex for 'ic/builder' in the plugins\n // @todo: remove business object hack when 'x-vb:authentication' handling is implemented in the runtime\n if (name === 'businessObjects' || path.endsWith('businessObjects/service.json')) {\n this._extensions.authenticationType = SWConstants.AuthenticationType.ORACLE_CLOUD;\n }\n\n openApi.getPathObjects().forEach((pathObject) => {\n const pathKey = pathObject.path;\n\n pathObject.getOperationObjects().forEach((operationObject) => {\n const operationKey = operationObject.name;\n\n const endpointId = SwaggerUtils.getEndpointId(pathKey, pathObject, operationObject.name, operationObject);\n\n this._endpoints[endpointId] = new Endpoint({\n name: endpointId,\n service: this,\n protocolRegistry,\n pathKey,\n pathObject,\n operationKey,\n operationObject,\n isUnrestrictedRelative: this.isUnrestrictedRelative,\n });\n });\n });\n }\n\n isDefined() {\n return !!this.url;\n }\n\n /**\n * @return {boolean} true if this service definition is visible outside the container that defines it\n * (i.e., if an extension can use it).\n */\n isExtensionAccessible() {\n const definitionExtension = this._openApi && this._openApi.getExtensions();\n if ((definitionExtension && definitionExtension.extensionAccess) === true) {\n return true;\n }\n\n const mergedExtensions = this._catalogInfo && this._catalogInfo.mergedExtensions;\n return (mergedExtensions && mergedExtensions.extensionAccess) === true;\n }\n\n _getEndpoints() {\n return this._endpoints;\n }\n\n getRequestTransforms() {\n return this._transforms.request;\n }\n\n getResponseTransforms() {\n return this._transforms.response;\n }\n\n getMetadataTransforms() {\n return this._transforms.metadata;\n }\n }\n\n return ServiceDefinition;\n});\n\n","'use strict';\n\ndefine('vb/private/services/readers/openApiObjectCommon',['vb/private/services/swaggerUtils',\n 'vb/private/log',\n 'vb/private/services/serviceConstants',\n],\n(SwaggerUtils, Log, ServiceConstants) => {\n // const swaggerEndpointOperationObjects = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'];\n const VB_HEADERS = 'headers';\n const VB_STATIC_QUERY_PARAMS = 'queryParameters';\n\n const logger = Log.getLogger('/vb/private/services/readers/openApiObjectCommon');\n\n\n /**\n * utility to merge an array of parameters.\n * used to merge Path Objects params with Operation Object params.\n * @param paramArrays\n * @returns {Array}\n */\n function mergeParameters(...paramArrays) {\n const maps = [];\n // turn each array into a map, to merge and replace by name\n paramArrays.forEach((paramArray) => {\n const mapParams = {};\n if (paramArray) {\n if (Array.isArray(paramArray)) {\n paramArray.forEach((param) => {\n const key = `${param.name}-${param.in}`;\n mapParams[key] = param;\n });\n } else {\n logger.error(`invalid parameter definition: ${JSON.stringify(paramArray)}`);\n }\n }\n maps.push(mapParams);\n });\n\n const mergedMap = Object.assign(...maps);\n const mergedArray = Object.values(mergedMap);\n\n return mergedArray;\n }\n\n\n /**\n *\n * @type {OperationObject}\n */\n class OperationObject {\n constructor(name, pathObject, operationObjectDef, openApi) {\n this.name = name;\n this.method = name;\n\n this.openApi = openApi;\n\n // for anything we expand lazily, put it in here when we do\n this.expanded = {};\n\n\n Object.assign(this, operationObjectDef);\n\n // now, replace the 'parameters' with a merged version, combining the PathObject and OperationObject parameters\n this.parameters = mergeParameters(pathObject.parameters, this.parameters);\n\n // return OperationObjectObject.x-vb.headers for now\n this.staticHeaders = Object.assign({},\n this.openApi.getExtensions()[VB_HEADERS] || {},\n this.getExtensions()[VB_HEADERS] || {});\n }\n\n getExtensions() {\n return this[ServiceConstants.VB_EXTENSIONS] || {};\n }\n\n /**\n * creates an object with the 'info' level extensions, with top-level properties overridden by the\n * endpoint-level extensions. In other words, a 'shallow' merge.\n * @todo: consider either a real merge, or a more targeted method, in the future;\n * this is currently used for authentication, and really just for the 'info' level exensions.\n * @returns {*}\n */\n getCombinedExtensions() {\n return Object.assign({}, this.getExtensions(), this.openApi.getExtensions());\n }\n\n /*\n todo: do we want to keep the same extension sytnax, which is a property in the OperationObject Object,\n or do we want to put an extension in the Header Object?\n */\n\n getStaticHeaderValues() {\n return this.staticHeaders;\n }\n\n /**\n * replaced by proxyUrls (currently not abstracted here)\n * @deprecated\n * @returns {*}\n */\n getProxy() {\n return this.getExtensions()[ServiceConstants.VB_PROXY] || this.openApi.getExtensions()[ServiceConstants.VB_PROXY];\n }\n\n getTokenRelayUrls() {\n return this.getExtensions()[ServiceConstants.AuthUrlNames.TOKEN_RELAY] ||\n this.openApi.getExtensions()[ServiceConstants.AuthUrlNames.TOKEN_RELAY];\n }\n\n getStaticQueryParameterValues() {\n return this.getExtensions()[VB_STATIC_QUERY_PARAMS];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getResponseContentTypes() {\n throw new Error('getResponseContentTypes must be implemented!');\n }\n\n // eslint-disable-next-line class-methods-use-this\n getRequestContentTypes() {\n throw new Error('getRequestContentTypes must be implemented!');\n }\n\n /**\n * lazy-expansion of responses metadata, which includes JSON Schema\n * only does single-file expansion, no external file/url $ref resolution\n *\n * @returns {object}\n */\n getExpandedResponses() {\n if (!this.expanded.responses) {\n this.expanded.responses = SwaggerUtils.resolveReferences(this.openApi.definition, null, this.responses);\n }\n return this.expanded.responses;\n }\n }\n\n /**\n *\n * @type {PathObject}\n */\n class PathObject {\n constructor(name, pathObjectDef, openApi) {\n Object.assign(this, pathObjectDef);\n\n this.name = name;\n this.path = name;\n this.operationObjects = [];\n\n Object.keys(pathObjectDef || {}).forEach((oprationKey) => {\n this.operationObjects.push(openApi.createOperationObjectObject(oprationKey, pathObjectDef, oprationKey));\n });\n }\n\n getOperationObjects() {\n return this.operationObjects;\n }\n }\n\n /**\n *\n */\n class OpenApiObjectCommon {\n constructor(def) {\n // 'definition' ill have $refs in parameters resolved (to some reasonable extent).\n const definition = OpenApiObjectCommon.resolveSomeReferences(def);\n\n this.definition = definition || {};\n this.pathObjects = [];\n const pathObjects = (this.definition.paths) || {};\n\n Object.keys(pathObjects).forEach((PathObjectName) => {\n this.pathObjects.push(this.createPathObjectObject(PathObjectName, pathObjects[PathObjectName]));\n });\n }\n\n /**\n * factory method; version sepcific implementations should override as necessary\n * @param name\n * @param PathObjectObjectDefinition\n * @returns {PathObject}\n */\n createPathObjectObject(name, PathObjectObjectDefinition) {\n return new PathObject(name, PathObjectObjectDefinition, this);\n }\n\n /**\n * factory method; version sepcific implementations should override as necessary\n * @param name\n * @param pathObject\n * @param operationObjectKey\n * @returns {OpenApi3OperationObject}\n */\n createOperationObjectObject(name, pathObject, operationObjectKey) {\n const operationObjectDefinition = pathObject[operationObjectKey];\n return new OperationObject(name, pathObject, operationObjectDefinition, this);\n }\n\n\n getInfo() {\n return this.definition.info || {};\n }\n\n getExtensions() {\n return this.getInfo()[ServiceConstants.VB_EXTENSIONS] || {};\n }\n\n // eslint-disable-next-line class-methods-use-this\n getServers() {\n throw Error('must be implemented by subclass');\n }\n\n /**\n * return the last server for swagger 2.0; matches the old associated:// behavior\n * this is actually passed 'profile', but doesn't use it\n * @returns {Object} Server Object\n */\n getServerForProfile() {\n const servers = this.getServers();\n // for the old swagger 2.0, needs to be the resolved server URI which is always the last\n return servers[servers.length - 1];\n }\n\n getPathObjects() {\n return this.pathObjects;\n }\n\n\n /**\n * resolve $refs in the Swagger only in some specific areas;\n * resolve all Path Item Objects to one level, then all Operation Object \"parameters\",\n * but NOT parameter responses or request bodies\n * @param swagger\n * @returns {*}\n */\n static resolveSomeReferences(definition) { // eslint-disable-line class-methods-use-this\n const newSwagger = Object.assign({}, definition);\n\n // in the 'paths' object, only expand 'parameters', but not 'parameters.schema' (swagger 2.0)\n const filter = (node, context) => {\n // 0 is 'paths', 1 is the actual path\n if (context.names.length === 3) {\n return context.names[2] === 'parameters';\n }\n if (context.names.length === 4) {\n return !(context.names[2] === 'parameters' && context.names[3] === 'schema');\n }\n\n return true;\n };\n\n newSwagger.paths = SwaggerUtils.resolveReferences(definition, filter, definition.paths || {});\n\n return newSwagger;\n }\n }\n\n // expose these, so subclasses can override\n OpenApiObjectCommon.PathObject = PathObject;\n OpenApiObjectCommon.OperationObject = OperationObject;\n\n OpenApiObjectCommon.Protocol = {\n HTTP: 'http',\n HTTPS: 'https',\n };\n\n\n return OpenApiObjectCommon;\n});\n\n","'use strict';\n\ndefine('vb/private/services/readers/openApi2Object',['./openApiObjectCommon', 'vb/private/constants'], (OpenApiObjectCommon, Constants) => {\n /**\n * Swagger 2.0 ('Swagger' is really meant to refer to the UI tooling\n */\n class OpenApi2OperationObject extends OpenApiObjectCommon.OperationObject {\n /**\n * abstraction of 2.0 \"produces\"\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object\n * @returns {*|Array}\n */\n getResponseContentTypes() {\n return this.produces || this.openApi.definition.produces || [];\n }\n\n /**\n * abstraction of 2.0 \"consumes\"\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object\n * @returns {*|Array}\n */\n getRequestContentTypes() {\n return this.consumes || this.openApi.definition.consumes || [];\n }\n }\n\n /**\n *\n */\n class OpenApi2Object extends OpenApiObjectCommon {\n constructor(definition, context = {}) {\n super(definition);\n this.definitionUrl = context.definitionUrl;\n }\n\n /**\n * factory method for v2 Operation Object\n * @param name\n * @param pathObject\n * @param operationObjectKey\n * @returns {OpenApi3OperationObject}\n * @override\n */\n createOperationObjectObject(name, pathObject, operationObjectKey) {\n const operationObjectDefinition = pathObject[operationObjectKey];\n return new OpenApi2OperationObject(name, pathObject, operationObjectDefinition, this);\n }\n\n /**\n * abstract the VBCS 'servers' extension, which was introduced early to help with the eventual 3.0 support.\n * @returns {*}\n */\n getServers() {\n if (!this.resolvedServers) {\n const servers = this.getExtensions().servers;\n\n if (servers && servers.length > 0) {\n return servers;\n }\n\n const basePath = (this.definition.basePath === Constants.PATH_SEPARATOR) ? '' : this.definition.basePath;\n\n let preferredScheme;\n if (Array.isArray(this.definition.schemes)) {\n const schemesToLower = this.definition.schemes.map((scheme) => scheme.toLowerCase());\n\n // 1) if there is an HTTPS in “schemes”, use that. otherwise,\n // 2) if there is an HTTP in “schemes”, use that. otherwise,\n // 3) we still have the first protocol, OR we default to HTTP is there was no first one\n if (schemesToLower.indexOf(OpenApiObjectCommon.Protocol.HTTPS) >= 0) {\n preferredScheme = OpenApiObjectCommon.Protocol.HTTPS;\n } else if (schemesToLower.indexOf(OpenApiObjectCommon.Protocol.HTTP) >= 0) {\n preferredScheme = OpenApiObjectCommon.Protocol.HTTP;\n } else {\n preferredScheme = schemesToLower[0];\n }\n }\n // ... and default to http\n preferredScheme = preferredScheme || OpenApiObjectCommon.Protocol.HTTP;\n\n this.resolvedServers = [{\n url: `${preferredScheme}://${this.definition.host}${basePath}`,\n }];\n }\n return this.resolvedServers;\n }\n }\n\n return OpenApi2Object;\n});\n\n","'use strict';\n\ndefine('vb/private/services/readers/openApiUtils',[\n 'vb/private/services/serviceConstants',\n],\n(ServiceConstants) => {\n /**\n * return the profiles array for the server object, if there is one\n * @param item\n * @returns {*|arg is Array|[string]|[string, string]|Array}\n */\n function profiles(item) {\n return (item && item[ServiceConstants.VB_EXTENSIONS]\n && Array.isArray(item[ServiceConstants.VB_EXTENSIONS].profiles)\n && item[ServiceConstants.VB_EXTENSIONS].profiles) || [];\n }\n\n /**\n *\n */\n class OpenApiUtils {\n /**\n * find the server in an array for the chosen profile\n * @param servers\n * @param profile\n * @returns {*|{url: string}}\n */\n static findServerForProfile(servers = [], profile) {\n let server;\n\n // find the first match\n if (profile) {\n server = servers.find((item) => profiles(item) && profiles(item).indexOf(profile) !== -1);\n }\n // if nothing found, use the first one\n server = server || servers[0] || { url: '' };\n\n return server;\n }\n }\n\n return OpenApiUtils;\n});\n\n","'use strict';\n\ndefine('vb/private/services/readers/openApi3Object',[\n './openApiObjectCommon',\n './openApiUtils',\n 'vb/private/services/serviceUtils',\n 'vb/private/services/swaggerUtils',\n 'vb/private/services/uriTemplate',\n], (OpenApiObjectCommon, OpenApiUtils, ServiceUtils, SwaggerUtils, UriTemplate) => {\n /**\n * local utility, find the very first entry name/value pair.\n * Used as fallback for finding a response.\n * @param obj\n * @returns {*}\n */\n function anyProperty(obj) {\n const entries = Object.entries(obj);\n return (entries.length) ? { name: entries[0][0], value: entries[0][1] } : { name: null, value: {} };\n }\n /**\n *\n */\n class OpenApi3OperationObject extends OpenApiObjectCommon.OperationObject {\n /**\n * abstract and simplify Request Body Object (or $ref) 'content'\n * @returns {Array}\n */\n getResponseContentTypes() {\n // we don't use anything in the definition, we just want a list of media types (for now)\n const responses = this.responses || {};\n let response = responses.default || responses['200'] || anyProperty(responses).value;\n response = SwaggerUtils.resolveReferences(this.openApi.definition, null, response);\n\n return Object.keys(response.content || {});\n }\n\n\n /**\n * abstract and simplify Response Object (or $ref) 'content'\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject\n * @returns {Array}\n */\n getRequestContentTypes() {\n let requestBody = this.requestBody || this.openApi.requestBody || {};\n\n requestBody = SwaggerUtils.resolveReferences(this.openApi.definition, null, requestBody);\n // we don't use anything in the definition, we just want a list of media types (for now)\n return Object.keys(requestBody.content || {});\n }\n }\n\n /**\n *\n */\n class OpenApi3Object extends OpenApiObjectCommon {\n constructor(definition, context = {}) {\n super(definition);\n this.initParams = context.initParams || {};\n this.definitionUrl = context.definitionUrl;\n }\n\n /**\n * abstract OpenAPI 3.0 Server Objects\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#serverObject\n * @returns {Array|*}\n */\n getServers() {\n return this.resolveServerTemplates();\n }\n\n\n /**\n * return Server Object for the chosen profile\n * @param profile\n * @return {Object} Server Object\n */\n getServerForProfile(profile) {\n return OpenApiUtils.findServerForProfile(this.getServers(), profile);\n }\n\n\n /**\n * factory method for v3 Operation Object\n * @param name\n * @param pathObject\n * @param operationObjectKey\n * @returns {OpenApi3OperationObject}\n * @override\n */\n createOperationObjectObject(name, pathObject, operationObjectKey) {\n const operationObjectDefinition = pathObject[operationObjectKey];\n return new OpenApi3OperationObject(name, pathObject, operationObjectDefinition, this);\n }\n\n\n /**\n * internal, replace template parameters in server paths\n * @returns {Array|*}\n */\n resolveServerTemplates() {\n if (!this.resolvedServers) {\n const servers = this.definition.servers || [];\n this.resolvedServers = servers.map((server) => {\n const newServer = OpenApi3Object.replaceServerVariables(server, this.initParams);\n if (this.definitionUrl) {\n newServer.url = ServiceUtils.toAbsoluteServerUrl(this.definitionUrl, newServer.url);\n }\n return newServer;\n });\n }\n return this.resolvedServers;\n }\n\n /**\n * for a Server Object, replace path templates with Server Variable Object 'default's\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#serverVariableObject\n * @param serverObj\n * @param initParams optional, declared values in app-flow.json\n * @returns {*}\n */\n static replaceServerVariables(serverObj, initParams) {\n const newServerObj = Object.assign({}, serverObj);\n\n // for now, just use the 'variables' 'default' value\n const vars = serverObj.variables || {};\n const parameters = {};\n Object.keys(vars).forEach((name) => {\n parameters[name] = vars[name].default;\n });\n\n // merge in any declared values\n Object.assign(parameters, initParams || {});\n\n const uriTemplate = new UriTemplate(serverObj.url || '', {}, true); // don't add extras\n newServerObj.url = uriTemplate.replace(parameters);\n return newServerObj;\n }\n }\n\n return OpenApi3Object;\n});\n\n","'use strict';\n\ndefine('vb/private/services/readers/openApiObjectFactory',['./openApi2Object', './openApi3Object'],\n(OpenApi2Object, OpenApi3Object) => {\n /**\n *\n */\n class OpenApiObjectFactory {\n /**\n * return a model for the definition\n * @param definition the JSON object\n * @param context abstraction of Application context. optional, used for variables substitution.\n * One of the used properties for context is 'definitionUrl' whose value should be the\n * url (or path) from which the definition was obtained.\n * @returns {OpenApiObjectCommon}\n */\n static get(definition, context) {\n if (definition.openapi) {\n return new OpenApi3Object(definition, context);\n }\n return new OpenApi2Object(definition, context);\n }\n }\n\n return OpenApiObjectFactory;\n});\n\n","/* eslint-disable no-underscore-dangle */\n\n'use strict';\n\ndefine('vb/private/services/services',['vb/private/log',\n 'vb/private/services/serviceProvider',\n 'vb/private/constants',\n 'vb/private/services/serviceConstants',\n 'vb/private/utils',\n 'vb/binding/expression',\n 'vb/private/services/serviceDefinition',\n 'vb/private/services/readers/openApiObjectFactory',\n 'vb/private/configLoader',\n 'vb/private/services/servicesLoader',\n 'vb/private/services/serviceUtils',\n 'vb/private/services/endpointReference',\n 'urijs/URI'],\n(Log, ServiceProvider, Constants, ServiceConstants, Utils, Expression, ServiceDefinition,\n OpenApiObjectFactory, ConfigLoader, ServicesLoader, ServiceUtils, EndpointReference, URI) => {\n const logger = Log.getLogger('/vb/private/services/services');\n\n /**\n * Services\n */\n class Services {\n /**\n * @param options, contains the following properties (all required, except where noted):\n * - relativePath\n * - serviceFileMap map (plain js obj) of service name to service definition file\n * { myService: 'my-service.json', anotherService: 'blah.json', }\n * - expressionContext (also known as 'scope') the dollar vars available to path expressions\n * - protocolRegistry {ProtocolRegistry} handing 'vb-catalog', for layering local metadata on service defs\n * - isUnrestrictedRelative: optional, defaults to false\n */\n constructor({\n relativePath,\n serviceFileMap,\n expressionContext,\n protocolRegistry,\n isUnrestrictedRelative,\n namespace,\n }) {\n this._relativePath = relativePath || '';\n\n const fileMap = serviceFileMap || {};\n Utils.removeDecorators(fileMap);\n\n // paths now support expressions\n this._serviceFileMap = fileMap;\n this._expressionContext = expressionContext;\n\n this._serviceProviderMap = {};\n this._pendingProviders = [];\n\n this._protocolRegistry = protocolRegistry;\n\n // means this is declared in the Application, and treats paths differently\n this.isUnrestrictedRelative = !!isUnrestrictedRelative;\n\n this.namespace = namespace || Constants.ExtensionNamespaces.BASE;\n // ServiceUtils.createNamespaceMap() return a simple map-like data structure,\n // that takes 'id' and 'namespace' as params for the 'key'.\n this._loadedServicePromises = ServiceUtils.createNamespaceMap(this.namespace);\n this._endpointMap = ServiceUtils.createNamespaceMap(this.namespace);\n\n\n // create a warning for deprecated expressions\n Services.checkForDeprecatedPathExpressions(this._serviceFileMap);\n }\n\n /**\n * @param endpointReference {EndpointReference}\n * @returns {Promise} true, means the given ID is declared\n */\n containsDeclaration(endpointReference) {\n return this.isNamespaceMatch(endpointReference.namespace)\n ? this.findDeclaration(endpointReference.serviceId, endpointReference).then((declaration) => !!declaration)\n : Promise.resolve(false);\n }\n\n /**\n * Default impl looks in the map and maybe at the delegate services. Can be overridden to provide a\n * default declaration, when there isn't one.\n *\n * @param {string} name {string} service name\n * @param {EndpointReference} [endpointReference] optional\n * @returns {Promise}\n */\n // eslint-disable-next-line no-unused-vars\n findDeclaration(name, endpointReference) {\n const path = this._serviceFileMap[name] || null;\n if (path || !name) {\n return Promise.resolve(path);\n }\n\n // if we the serviceName is not in _serviceFileMap and this is a base services, try to find it in the\n // delegateServices if any. But, specifically because typically the delegateServices is the fallbackServices,\n // we need to make sure that serviceName exists because, otherwise, we'd be returning \"found\" for a\n // service that does not exist.\n const delegateServices = this.delegateServices;\n if (delegateServices && this.namespace === Constants.ExtensionNamespaces.BASE) {\n return delegateServices.load([name], false, endpointReference)\n .then((result) => (result[0] && result[0].name === name\n ? delegateServices.findDeclaration(name, endpointReference)\n : null))\n .catch((error) => {\n logger.error(`Delegate services failed to load service ${name}: ${error}`, error);\n return null;\n });\n }\n\n return Promise.resolve(null);\n }\n\n /**\n * Add an instance of ServiceProvider that needs to be registered to provide the service\n * @param serviceProvider\n */\n addServiceProvider(serviceProvider) {\n if (serviceProvider instanceof ServiceProvider) {\n const serviceName = serviceProvider.getServiceName();\n if (!serviceName) {\n const error = new Error('The serviceProvider does not provide a service name.');\n logger.error(error);\n throw error;\n }\n if (!serviceProvider.getServiceFilePath()) {\n const error = new Error('The serviceProvider does not provide a service file path.');\n logger.error(error);\n throw error;\n }\n if (!serviceProvider.getDefinition()) {\n const error = new Error('The serviceProvider does not provide a service definition.');\n logger.error(error);\n throw error;\n }\n\n // if the provider or the service def has already been registered or loaded...\n if (this._serviceProviderMap[serviceName]) {\n const error = new Error(`The serviceProvider with name ${serviceName} is already registered.`);\n logger.error(error);\n throw error;\n }\n\n // use our namespace\n if (this._loadedServicePromises.has(serviceName, this.namespace)) {\n const error = new Error(`A service with name ${serviceName} is already registered.`);\n logger.error(error);\n throw error;\n }\n\n this._serviceProviderMap[serviceName] = serviceProvider;\n\n // queue it for load on the next load() call\n this._pendingProviders.push(serviceProvider);\n } else {\n logger.error('Given serviceProvider is not an instance of ServiceProvider');\n }\n }\n\n /**\n * loads the service specified by the provider\n * @param serviceProvider\n * @returns {Promise}\n */\n loadServiceProvider(serviceProvider) {\n const serviceName = serviceProvider.getServiceName();\n\n // use a stubbed catalogInfo (chain: []), and use our namespace\n if (!this._loadedServicePromises.has(serviceName, this.namespace)) {\n if (this.isPathAllowed(serviceProvider.getServiceFilePath())) {\n this._loadedServicePromises.set(serviceName, this.namespace, Promise.resolve()\n // We don't need the catalog info and requestInit for service providers right now.\n .then(() => this\n .createServiceDefinition(serviceName, serviceProvider.getServiceFilePath(),\n { chain: [] }, Services.getOpenApi(serviceProvider.getDefinition()),\n null, this.namespace)));\n }\n }\n\n return this._loadedServicePromises.get(serviceName, this.namespace);\n }\n\n /**\n * @param namesToLoad optional array of keys/names. if passed, limit loading to only these\n * @param forceReload optional. by default, services are not reloaded if previously loaded\n * @param endpointReference {EndpointReference}\n * @returns {Promise} resolved to an Array of ServiceDefinition objects, for only the 'namesToLoad'\n */\n load(namesToLoad, forceReload, endpointReference) {\n // if new providers have been added, make sure we load those\n return Promise.resolve()\n .then(() => {\n // filtering empty names to avoid unnecessary work.\n const servicesToLoad = (namesToLoad || Object.keys(this._serviceFileMap)).filter((n) => !!n);\n\n const filteredMap = {};\n const promises = servicesToLoad.map((name) => this.findDeclaration(name, endpointReference)\n .then((declaration) => {\n if (declaration) {\n // convert 'string' declaration to objects\n if (typeof declaration === 'string') {\n // eslint-disable-next-line no-param-reassign\n declaration = { path: declaration };\n }\n\n if (declaration.path) {\n filteredMap[name] = declaration;\n }\n } else {\n logger.info('service:', name, 'not found in container', this._relativePath, 'continuing');\n }\n }));\n\n return Promise.all(promises).then(() => filteredMap);\n })\n .then((filteredMap) => {\n // fileInfos will be { path: '...', }\n const fileInfos = Object.values(filteredMap);\n const serviceNames = Object.keys(filteredMap);\n\n // even if they've already been loaded, add the promise to the map. this includes provider promises.\n fileInfos.forEach((fileInfo, index) => {\n // path might be an expression, evaluate it\n const fileName = this.evaluatePathDeclaration(fileInfo.path);\n\n // allow for an alternate 'proxyName' as an internal workaround for when the declaration name\n // does not match the name of the service in the proxy url.\n const serviceName = serviceNames[index];\n\n // would not expect to have to use the default here\n // eslint-disable-next-line max-len\n const namespace = (endpointReference && endpointReference.derivedNamespace)\n || Constants.ExtensionNamespaces.BASE;\n\n if (this.isPathAllowed(fileName)) {\n // skip if not forReload and its already in the map\n if (forceReload || !this._loadedServicePromises.has(serviceName, namespace)) {\n // open and validate the swagger\n this._loadedServicePromises.set(serviceName, namespace,\n this.loadService(serviceName, fileName, fileInfo.headers, namespace));\n }\n }\n });\n\n // add any new ones\n this._pendingProviders.forEach((provider) => {\n // this puts it in _loadedServicePromises map\n this.loadServiceProvider(provider);\n });\n this._pendingProviders = [];\n\n // all the pending promises\n const promises = this._loadedServicePromises.getValues();\n\n // recursive; by the time all the loads resolve, we may have registered and loaded more providers.\n // so, when resolved, get the map count, and make a new list of promises if needed.\n // return Promise.all(all loaded services)\n const allLoadedPromises = (promisesArray) => {\n const currentCount = this._loadedServicePromises.getKeys();\n\n return Promise.all(promisesArray)\n .then((results) => {\n // check for new ones\n const newCount = this._loadedServicePromises.getKeys();\n if (newCount > currentCount) {\n return allLoadedPromises(this._loadedServicePromises.getValues());\n }\n return results;\n });\n };\n\n // wait for the current loads, and then keep waiting for any new loads, if needed\n return allLoadedPromises(promises);\n })\n // 'loaded' is ALL the service promises, so far. resolve with ONLY the services we asked for.\n .then((loaded) => {\n if (namesToLoad) {\n const mapped = {};\n loaded.filter((def) => def).forEach((def) => {\n mapped[def.name] = def;\n });\n return namesToLoad.map((name) => mapped[name] || {});\n }\n return [];\n });\n }\n\n /**\n * Clients should not invoke this method directly.\n *\n * @param serviceName\n * @param fname\n * @param declaredHeaders optional. will be merged with the catalog headers, if any (catalog takes precedence)\n * @param namespace optional, from endpoint ID reference\n * @protected\n */\n loadService(serviceName, fname, declaredHeaders, namespace) {\n // offset by the location of the container\n let catalogInfo;\n let requestInit;\n let fileName;\n\n return Promise.resolve()\n .then(() => {\n fileName = this.getDefinitionPath(fname, namespace);\n\n return ServicesLoader\n .getCatalogExtensions(this._protocolRegistry, fileName, serviceName, namespace, declaredHeaders);\n })\n .then((catInfo) => {\n catalogInfo = catInfo;\n\n // used by Services, and merges with \"backends\" extensions in the Endpoint\n // services.extensions only contains headers currently, so we can use in Request construction directly\n requestInit = (catalogInfo.services && catalogInfo.services.extensions);\n\n const metadata = (catalogInfo.services && catalogInfo.services.metadata);\n\n if (metadata) {\n // if the catalog has a \"paths\" to declare how to fetch the openapi3, use that\n return Services.getOpenApiObjectUsingMetadata(serviceName, catalogInfo.url, metadata, requestInit);\n }\n return Services.getOpenApiObject(serviceName, catalogInfo.url, requestInit);\n })\n .then((openApi) => this\n .createServiceDefinition(serviceName, fileName, catalogInfo, openApi, requestInit, namespace))\n .catch((e) => {\n logger.error('service load error: ', e);\n // throw e;\n return null; // allow the rest of the loads to pass\n });\n }\n\n /**\n * construct a ServiceDefinition\n * @param serviceName name of the service; the property name from the app-flow.json declaration\n * @param fileName service metadata (openapi/swagger) path\n * @param catalogInfo services/backends information from any vb-catalog references\n * @param openApi service metadata object (OpenApiCommonObject)\n * @param requestInit additional config for a Request object (headers, etc).\n * @param namespace {string}\n * @returns {ServiceDefinition}\n * @private\n */\n createServiceDefinition(serviceName, fileName, catalogInfo, openApi, requestInit, namespace) {\n const service = new ServiceDefinition(serviceName, fileName, this._protocolRegistry, catalogInfo, openApi,\n this._relativePath, requestInit, namespace, this.isUnrestrictedRelative);\n\n // notify listeners\n try {\n ServicesLoader.notify(service);\n } catch (e) {\n logger.error(e);\n }\n\n Object.keys(service._getEndpoints()).forEach((endpointName) => {\n const key = `${service.name}/${endpointName}`;\n // don't use getEndpoint(), we don't need to load transform modules at this point\n this._endpointMap.set(key, namespace, service._endpoints[endpointName]);\n });\n return service;\n }\n\n /**\n * if we're using a \"paths\" object from the catalog,\n * we need to merge the 'x-vb' from the \"servers\" object with the 'x-vb' from both the\n * \"info\" object for the openapi3 \"services\" fragment, and its operation (ex. \"get\") object.\n *\n * for example, use the proxy when fetching the /describe below, use the \"accepts\" for the fetch,\n * and apply \"some/transforms\" to the result.\n *\n * this is analogous to what we do today in just swagger/openapi3 with no catalog.json involved; we\n * look at \"info\", \"services\", and \"paths\", when we construct a merged \"x-vb\" (listed least-to-most precedence).\n *\n *\n * \"services\": {\n * \"demo\": {\n * \"openapi\": \"3.0\",\n * \"info\": {\n * \"title\": \"uses new inner-service-openapi3-metadata syntax\",\n * \"x-vb\": {\n * \"transforms\": {\n * \"path\": \"some/transforms\"\n * }\n * }\n * },\n * \"servers\": [\n * {\n * \"url\": \"vb-catalog://services/demolevel2\",\n * \"x-vb\": {\n * \"authentication\": {\n * \"forceProxy\": \"cors\"\n * }\n * }\n * }\n * ],\n * \"paths\": {\n * \"somepath/describe\": {\n * \"get\": {\n * \"x-vb\": {\n * \"headers\": {\n * \"Accepts\": \"application/vnd.oracle.adf.openapi3+json\"\n * }\n * }\n * }\n * }\n * }\n * },\n *\n * @param serviceName\n * @param serverUrl typically, from the resolved \"servers\" object\n * @param metadata the 'paths.get\" path (and query) will be appended to the url, and the extensions merged.\n * @param requestInit\n * @returns {Promise}\n *\n * @private\n */\n\n static getOpenApiObjectUsingMetadata(serviceName, serverUrl, metadata, requestInit) {\n let mergedExtensions;\n return Promise.resolve()\n .then(() => {\n mergedExtensions = ServiceUtils.getExtensionsFromMetadata(serverUrl, metadata, requestInit);\n\n const { url } = mergedExtensions;\n delete mergedExtensions.url;\n\n return Services.getOpenApiObject(serviceName, url, mergedExtensions);\n });\n }\n\n /**\n * @param {Services} services\n */\n set delegateServices(services) {\n this._delegateServices = services;\n }\n\n /**\n * @return {Services}\n */\n get delegateServices() {\n return this._delegateServices;\n }\n\n\n /**\n * first, loads the service definition (swagger/openapi) referenced by the endpoint ID.\n * then finds the endpoint, and calls endpoint.load(), to load any extensions (transforms).\n * returns the Endpoint if found, even when the transforms module is not loaded properly\n * @param endpointReference {EndpointReference}}\n * @returns {Promise}\n */\n getEndpoint(endpointReference) {\n let endpoint;\n\n // if we get a string for some reason, convert it\n if (typeof endpointReference === 'string') {\n // eslint-disable-next-line no-param-reassign\n endpointReference = new EndpointReference(endpointReference);\n }\n\n // only load the requested service\n return Promise.resolve()\n .then(() => {\n if (!this.isNamespaceMatch(endpointReference.namespace)) {\n return false;\n }\n\n const servicesToLoad = [endpointReference.serviceId];\n return this.load(servicesToLoad, false, endpointReference)\n .then(() => true);\n })\n .then((match) => {\n if (match) {\n const endpointKey = `${endpointReference.serviceId}/${endpointReference.operationId}`; // no the namespace\n endpoint = this._endpointMap.get(endpointKey, endpointReference.namespace);\n if (!endpoint) {\n endpoint = this._endpointMap.get(endpointKey, endpointReference.containerNamespace);\n }\n\n // can only use the endpoint if...\n // - it exists\n // - And one of the following\n // -- the extension of this services is the same one using the endpoint\n // -- the endpoint does not have a service (should not be here but...)\n // __ the service definition of the endpoint indicates that it's accessible to other extensions\n\n if (endpoint\n && (this.namespace === endpointReference.containerNamespace\n || !endpoint.service\n || endpoint.service.isExtensionAccessible())) {\n return endpoint.load();\n }\n }\n\n return this.delegateServices ? this.delegateServices.getEndpoint(endpointReference) : null;\n })\n .catch((e) => {\n logger.error('Error loading endpoint', endpointReference, e);\n return endpoint;\n })\n .then((ep) => ep);\n }\n\n /**\n * we match if EITHER:\n * - there's no namespace in the endpoint ID\n * - there is a namespace in the endpoint ID, and it matches ours\n * @param namespace\n * @returns {boolean}\n */\n isNamespaceMatch(namespace) {\n return this.namespace === namespace || !namespace;\n }\n\n\n /**\n * create a path relative to the container, if needed.\n * We will only prepend the container path if either:\n * - (a) we are loaded by the Application, OR\n * - (b) we start with a '.' (dot)\n *\n * case (a) insures that Application service paths work they always have - they are always prepended\n * (which for an app-level service, should be a no-op, but just in case. it comes up in unit tests).\n * @param fname {string}}\n * @param namespace {string} unused\n * @returns {string}\n */\n // eslint-disable-next-line no-unused-vars\n getDefinitionPath(fname, namespace) {\n // allow requireJS to map the path, if applicable\n // first, figure out what it will add as the baseUrl\n const base = requirejs.toUrl('.');\n\n let filename = fname;\n\n let path;\n\n // check if its mapped, by seeing if requireJS gives us some new url, or just puts the base on it\n if (!ServiceUtils.isAbsolute(filename) && !filename.startsWith(Constants.RELATIVE_FOLDER_PREFIX)) {\n const testPath = requirejs.toUrl(filename);\n if (!testPath.startsWith(base)) {\n filename = testPath;\n }\n }\n\n // for relative paths (not absolute, not protocol/host), that path doesn't start with a '/',\n // add the current container prefix.\n //\n // here, 'absolute' means 'protocol and host', because both paths that start with \"/\", and paths that do NOT,\n // are relative to the context (either requireJS, or browser/app).\n //\n // for example, the flow's path will be prefixed to one, two, and three below. And NOT to four, five.\n // also note that for a flow other than app-flow, \"three\" would have been rejected earlier.\n // All but \"five\" are relative.\n // \"services\": {\n // \"one\": \"x/y/z/service.json\",\n // \"two\": \"./x/y/z/service.json\",\n // \"three\": \"../../x/y/z/service.json\",\n // \"four\": \"/x/y/z/service.json\",\n // \"five\": \"https://x/y/z/service.json\",\n // }\n if (!ServiceUtils.isAbsolute(filename) && !filename.startsWith(Constants.PATH_SEPARATOR)) {\n // log a warning when a (non-app-flow) flow uses a path without a \"./\";\n // using a path like \"some/path/service.json\" is strange within a flow, because flow's can't\n // reach outside of themselves, but the meaning of that path is ambiguous\n if (!this.isUnrestrictedRelative && !filename.startsWith(Constants.RELATIVE_FOLDER_PREFIX)) {\n logger\n .warn(`deprecated: service definition path without current folder prefix is ambiguous: ${filename}`);\n }\n\n // don't use a relative container path that is a lonely slash ('/') as a prefix (not sure this happens).\n const prefix = this._relativePath !== Constants.PATH_SEPARATOR ? (this._relativePath || '') : '';\n path = `${prefix}${filename}`;\n } else {\n path = filename;\n }\n\n return path;\n }\n\n /**\n * don't allow dot-dot in paths unless its declared in the Application\n * @param filePath\n * @returns {*}\n */\n isPathAllowed(filePath) {\n const allowed = (this.isUnrestrictedRelative || filePath.indexOf(Constants.PARENT_FOLDER) === -1);\n if (!allowed) {\n logger.error('Found invalid service definition path (use of', Constants.PARENT_FOLDER, '):', filePath);\n }\n return allowed;\n }\n\n\n /**\n * get the service definition, and treat as JSON (no swagger parsing)\n * Will timeout (reject) after Constants.Services.definitionTimeout (30) seconds\n *\n * @param serviceName\n * @param url this method prepends this parameter with the current Router.baseUrl\n * @param additionalExtensions { headers: , transforms: { path: } }\n * @returns {Promise} resolved with service definition object\n *\n * @private\n *\n * @todo: Services should have its own protocolRegistry, and a parent-fallback similar to flow/app service defs.\n */\n // eslint-disable-next-line class-methods-use-this\n static getOpenApiObject(serviceName, url, additionalExtensions) {\n return Utils.getRuntimeEnvironment()\n .then((env) => {\n // loading Router on-demand to avoid loading JET earlier than necessary\n // remove 'dots' in the middle of the path\n const path = URI(url).normalizePath().toString();\n // 'additionalExtensions' has VB properties that we define for extensions, which includes 'headers';\n // Because it has a 'headers' property, it resembles an 'init param for a fetch() call, so we can use it as\n // an 'init param, and fetch/Request will ignore what it does not care about.\n const initParam = Object.assign({}, additionalExtensions);\n return env.getServiceDefinition(path, initParam)\n .then((def) => {\n const context = initParam.resolvedUrl && { definitionUrl: initParam.resolvedUrl };\n return Services.getOpenApi(def, context);\n });\n });\n }\n\n /**\n * creates the appropriate model for swagger (2) or openapi3 (3+)\n * @param def\n * @param {object} [context] abstraction of Application context. optional, used for variables substitution.\n * @returns {Promise}\n * @private\n */\n static getOpenApi(def, context) {\n try {\n const config = context\n ? Object.assign({}, context, { initParams: ConfigLoader.initParams })\n : { initParams: ConfigLoader.initParams };\n return OpenApiObjectFactory.get(def, config);\n } catch (ex) {\n const msg = `unable to resolve service references: ${ex}`;\n logger.error(msg);\n return Promise.reject(ex); // reject(), instead of throw, in case caller doesn't use .catch()\n }\n }\n\n /**\n * used by runtimeManager to remove a service, so it can be reloaded\n * @param serviceName\n */\n disposeService(serviceName) {\n this._loadedServicePromises.set(serviceName, this.namespace, null); // todo: namespace?\n // delete any endpoint that has a key like \"/< * >\", ignore namespace for now\n this._endpointMap.delete((id) => id.startsWith(`${serviceName}${Constants.PATH_SEPARATOR}`));\n }\n\n /**\n * used to evaluate path expressions, on-demand (we used to evaluate them all at once, initially)\n *\n * @param path\n * @returns {*}\n */\n evaluatePathDeclaration(path) {\n return Expression.getEvaluated(path, this._expressionContext);\n }\n\n\n /**\n * log a message about service paths expressions that use anything _other_ than $initParams should\n * be removed (unless someone can present a reasonable use-case).\n *\n * There are cases where we would like to load services before the Application is created, so expressions\n * that reference variables, etc, cannot be evaluated.\n *\n * only $initParams (ConfigLoader) exist before Application, so only expressions limited to those\n * can be consistent between pre-Application and post-Application access.\n * @param serviceMap\n * @private\n */\n static checkForDeprecatedPathExpressions(serviceMap) {\n // check for any expression references using $application, $flow, etc. and log an error.\n // we want to nudge devs toward using ONLY $initParams in expressions, so we can be consistent\n // between what is allowed in service path expressions before and after Application is created.\n const invalidReferences = [];\n Object.keys(serviceMap || {}).forEach((key) => {\n const pathOrObject = serviceMap[key];\n\n const path = (typeof pathOrObject === 'string') ? pathOrObject : pathOrObject.path;\n if (path && Expression.isExpression(path)) {\n const re = /\\$(application|flow|page|variables|metadata)/g;\n const match = re.exec(path);\n if (match) {\n invalidReferences.push(path);\n }\n }\n });\n if (invalidReferences.length) {\n logger.warn('DEPRECATED: Application \"services\" contains expressions with '\n + `references other than \"$initParams\". These should be changed: ${JSON.stringify(invalidReferences)}`);\n }\n }\n }\n\n return Services;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/flow',[\n 'knockout', 'vb/private/stateManagement/container', 'vb/private/stateManagement/page',\n 'vb/private/stateManagement/redux/storeManager',\n 'vb/private/stateManagement/router', 'vb/private/utils', 'vb/private/constants',\n 'vb/private/stateManagement/context/flowContext',\n 'vb/private/stateManagement/flowExtension',\n 'vb/private/services/services',\n 'vb/private/stateManagement/stateMonitor', 'vb/errors/httpError',\n], (ko, Container, Page, StoreManager, Router, Utils, Constants, FlowContext, FlowExtension,\n Services, StateMonitor, HttpError) => {\n class Flow extends Container {\n constructor(id, parent, requirePath, className = 'Flow') {\n super(id, parent, className);\n\n if (requirePath) {\n // used for directly loading the flow from its physical file location\n this.requirePath = requirePath;\n } else if (parent) {\n // Use the parent flow to calculate the requirePath\n const rPath = this.getParentFlow().calculateRequirePath(id);\n\n // id is an alias so deduce the real flow id from requirePath\n const name = rPath.substr(0, rPath.length - 1);\n const index = name.lastIndexOf(Constants.PATH_SEPARATOR);\n this.name = index < 0 ? name : name.substr(index + 1);\n\n this.requirePath = rPath;\n } else {\n // app flow don't have a require path and the name is the same as id which is 'app'.\n this.requirePath = '';\n }\n\n // this is used to defined the value of the path builtins variable\n this.absoluteUrl = Router.baseUrl;\n\n this.eventPrefix = 'flow';\n\n this.extensionClass = FlowExtension;\n\n this.loadedPromise = null;\n this.pages = {};\n\n // Use an observable to hold the ojModule configuration because it changes on each\n // navigation and ojModule depends on the mutation of the configuration to update its content.\n // By default the content is a blank ojModule. This will be modified by the nested flow\n // when it is created.\n this.pagesModuleConfig = ko.observable(Constants.blankModuleConfig);\n }\n\n /**\n * @returns {string}\n */\n get fullName() {\n return `${this.id}-flow`;\n }\n\n /**\n * Given a flow id, calculate the require path for this flow\n *\n * @param {string} id a flow id\n * @return {string} the flow require path\n */\n calculateRequirePath(id) {\n // Defining a flow alias is optional. If the flow id is not in flows,\n // look for it in the parent flow 'flows' folder.\n let requirePath = this.definition.flows[id] || `flows/${id}`;\n\n // Make sure it is terminated with '/'\n if (requirePath.slice(-1) !== Constants.PATH_SEPARATOR) {\n requirePath = `${requirePath}${Constants.PATH_SEPARATOR}`;\n }\n\n // If the path is an URL just use it otherwise\n // if the path starts with /, it's relative to the application, otherwise\n // it's relative to the parent flow location.\n if (requirePath.startsWith('http')) {\n // no-op\n } else if (requirePath.charAt(0) === Constants.PATH_SEPARATOR) {\n requirePath = `${this.application.requirePath}${requirePath.substr(1)}`;\n } else {\n requirePath = `${this.requirePath}${requirePath}`;\n }\n\n return requirePath;\n }\n\n // eslint-disable-next-line class-methods-use-this\n createFlow(id, page) {\n return new Flow(id, page);\n }\n\n /**\n * The name of the runtime environment function to be used to load the descriptor\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getFlowDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getFlowFunctions';\n }\n\n /**\n * Return the first flow up in the parent hierarchy.\n * For flow, it's this.parent.parent, for page it's this.parent for\n * application it's null.\n *\n * @return {Flow} the first flow in the parent hierarchy\n */\n getParentFlow() {\n return this.parent.parent;\n }\n\n isDefault() {\n return this.parent.definition.routerFlow === this.id;\n }\n\n /**\n * Load the flow when the defaultPage property is not a page id but a flow id.\n * In that case the default page of the flow is used as the default page of the application.\n * If the defaultFlowId is specified, it is used as the starting flow in the shell.\n *\n * @param {String} flowId the id of the flow to use for shell\n * @param {String} defaultFlowId the id of the flow to use in the shell page\n * @return {Promise} a promise of a shell page\n */\n processFlowDefaultPage(flowId, defaultFlowId) {\n if (!flowId) {\n return Promise.reject(new Error(`Invalid application defaultPage \"${this.definition.defaultPage}\"`));\n }\n // If the page is not found, it could be a fow, so remove the tentative page.\n // When the defaultPage is of the form shellFlowId/shellFlow, the page is not created and\n // calling deletePage does nothing.\n this.deletePage(flowId);\n\n // The id can be a flowId, in which case the page is the default page of the flow\n const flowRequirePath = this.calculateRequirePath(flowId);\n\n // Load the metadata using the Flow descriptor loader, not \"this\" which is the application.\n return Flow.prototype.descriptorLoader(`${flowRequirePath}${flowId}`).then((definition) => {\n const pageId = definition.defaultPage;\n if (!pageId) {\n throw new Error(`The default page for flow ${flowId} is not defined.`);\n }\n\n const page = this.createPage(pageId, flowRequirePath);\n return page.loadDescriptor().then((pageDef) => {\n this.staticPageId = pageId;\n // Give precedence to a routerFlow defined as the 2nd segment of the defaultPage property\n this.router.defaultStateId = defaultFlowId || pageDef.routerFlow;\n\n return page.loadAndStart();\n });\n });\n }\n\n /**\n * Depending on the value of the flow defaultPage property, the default page\n * could be a page \"pageId\" or a flow \"flowId\" or a shellFlow id with a flowId\n * \"shellFlowId/flowId\"\n *\n * @return {Promise} a Promise of a Page\n */\n processDefaultPage() {\n if (!this.definition.defaultPage) {\n return Promise.resolve();\n }\n\n // Set the default page as the router default state so this page is loaded\n // when no pages are defined in the URL.\n const segments = this.definition.defaultPage.split('/');\n const id = segments[0];\n\n // If the path is of the form flowId/pageId, the first segment can only be a flow\n // so don't bother trying to load a page that doesn't exist, it speeds up the\n // loading if the fndShell.\n if (segments.length > 1) {\n return this.processFlowDefaultPage(id, segments[1]);\n }\n\n // Try to load a page with this id first\n return this.createPage(id).loadDescriptor().then((definition) => {\n let promise;\n // When app packages are available, skips the shell page in the URL\n // This is only for the application object\n if (this.appPackages && this.appPackages.length > 0) {\n this.staticPageId = id;\n this.router.defaultStateId = definition.routerFlow;\n\n promise = this.pages[id].loadAndStart();\n } else {\n // Update the router default state to the new page id\n this.router.defaultStateId = id;\n }\n\n return promise;\n }).catch((error) => {\n let promise;\n // If the page doesn't exist, the defaultPage might be a flow\n if (HttpError.isFileNotFound(error)) {\n promise = this.processFlowDefaultPage(id, segments[1]);\n } else {\n // Other type of errors mean the page is available but cannot be accessed like\n // by example if the page is secured.\n this.router.defaultStateId = id;\n }\n\n return promise;\n });\n }\n\n loadFlow() {\n this.loadedPromise = this.loadedPromise || this.loadDescriptor()\n .catch((error) => {\n this.callSecurityProvider(error);\n throw error;\n });\n\n return this.loadedPromise;\n }\n\n /**\n * Fully loads the flow, including variable definitions, chains, etc.\n *\n * @returns {Promise} A promise when application loading completes\n */\n load() {\n // Starts loading metadata, the module functions and extensions simultaneously\n return this.loadFlow()\n .then(() => this.loadFunctionModule())\n .then(() => {\n this.initializeActionChains();\n\n // Setup the component event listeners\n this.initializeEvents();\n\n this.initRouter();\n\n // record an application activated state change\n StateMonitor.recordStateChange(StateMonitor.RuntimeState.CONTAINER_ACTIVATED, this);\n\n return this.createServices();\n })\n .catch((error) => {\n // In case or error loading, by example when the flow doesn't exist,\n // remove the flow\n this.dispose();\n throw error;\n });\n }\n\n /**\n * Returns the model object for the layout container. The model contains all the accessible $ properties\n * of the layout container. All properties are initialized and ready to be evaluated in expressions.\n * Extensions have also been applied to the layout.\n * The model is bound to the layout view by the JET dynamic component.\n *\n * {\n * $variables: {}\n * $constants: {}\n * $chains: {}\n * $functions: {}\n * $listeners: {}\n * $layout: {}\n * }\n *\n * @return {Promise} a promise that resolve with the model object.\n * @see ConfigurableMetadataProviderHelper.getLayoutModel\n */\n getViewModel() {\n return Promise.all([\n this.load(), this.loadFunctionModule(),\n ])\n .then(() => {\n const viewModel = {};\n const availableContexts = this.getAvailableContexts();\n\n Object.getOwnPropertyNames(availableContexts).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(availableContexts, key);\n Object.defineProperty(viewModel, key, descriptor);\n });\n\n return viewModel;\n });\n }\n\n /**\n * initialize the services object, but don't load (this is overridden by Application to set a flag)\n * @returns {Promise}\n *\n * @private\n */\n createServices() {\n return Promise.resolve()\n .then(() => {\n const serviceFileMap = this.definition.services || {};\n const options = {\n relativePath: this.requirePath,\n serviceFileMap,\n expressionContext: this.getAvailableContexts(),\n protocolRegistry: this.application.protocolRegistry,\n };\n\n this.services = new Services(options);\n });\n }\n\n /**\n * Initialize the descriptor object default value\n */\n initDefault(definition) {\n const def = definition;\n def.flows = def.flows || {};\n super.initDefault(def);\n }\n\n /**\n * returns the FlowContext constructor used to create the '$' expression context\n * @return {FlowContext.constructor}\n * @override\n */\n static get ContextType() {\n return FlowContext;\n }\n\n enter() {\n return this.initAllVariableNamespace()\n .then(() => this.invokeEvent(Constants.ENTER_EVENT));\n }\n\n /**\n * The place to initialize builtins variables.\n */\n initializeBuiltins() {\n super.initializeBuiltins();\n\n if (this.parent) {\n // Create the built-in currentPage variable except for application. That why we only do it\n // if parentPage exist.\n this.scope.createVariable(Constants.CURRENT_PAGE_VARIABLE, Constants.VariableNamespace.BUILTIN,\n 'string', null, undefined, { writable: false });\n }\n\n // Create the built-in path to store the base URL for this flow\n this.createConstant(Constants.PATH_VARIABLE, {\n type: 'string',\n defaultValue: `${this.absoluteUrl}${this.requirePath}`,\n }, Constants.VariableNamespace.BUILTIN);\n }\n\n defineInfoBuiltinVariable() {\n return {\n id: this.definition.id,\n description: this.definition.description,\n };\n }\n\n initializeVariables() {\n const parentPage = this.parent;\n if (parentPage) {\n // Assign the parent page selectedFlow variable\n // Uses the variable setValueInternal because it's a readonly variable and the regular\n // assignment will fail.\n parentPage.initializePromise.then(() => {\n // The action chain tester creates a fake shell page that doesn't have a scope and will cause the following\n // code to throw an exception during test execution so we need to guard against it.\n if (parentPage.scope) {\n const currentFlowVar = parentPage.scope.getVariable(Constants.CURRENT_FLOW_VARIABLE,\n Constants.VariableNamespace.BUILTIN);\n currentFlowVar.setValueInternal(this.id);\n }\n });\n }\n\n return super.initializeVariables();\n }\n\n exit() {\n return this.invokeEvent(Constants.EXIT_EVENT).then(() => {\n // When a flow exit and this flow does not have a default flow to fallback on,\n // refresh the parent page so the nested content become empty.\n // Check for parent since it can be null when the flow is the application.\n // Note that this shouldn't be in dispose, since dispose can be called when the\n // flow has not been entered yet, like in the load error case.\n const parentPage = this.parent;\n if (parentPage && parentPage.router && !parentPage.router.defaultStateId) {\n parentPage.moduleConfig(Constants.blankModuleConfig);\n if (parentPage.scope) {\n const currentFlowVar = parentPage.scope.getVariable(Constants.CURRENT_FLOW_VARIABLE,\n Constants.VariableNamespace.BUILTIN);\n currentFlowVar.setValueInternal(null);\n\n // clear any outstanding busy state on the router\n Router.clearBusyState();\n }\n }\n this.dispose();\n });\n }\n\n createPage(pageId, requirePath) {\n const page = new Page(pageId, this, requirePath);\n this.pages[pageId] = page;\n return page;\n }\n\n /**\n * Load a nested page given its id.\n *\n * @param {String} id the id of the page\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise that resolve to a Page instance\n */\n loadContainer(id, navContext) {\n if (navContext && navContext.isCancelled()) {\n return Promise.resolve();\n }\n\n if (this.staticPageId && this.staticPageId !== id) {\n return this.pages[this.staticPageId].loadContainer(id, navContext);\n }\n\n return this.loadPageFromId(id, navContext);\n }\n\n /**\n * Retrieve the cached instance of the nested container.\n * For flows, the return value is a page instance.\n * @param {String} id the id of the page to retrieve\n * @return {Container} the page instance\n */\n getContainer(id) {\n if (this.staticPageId) {\n return this.pages[this.staticPageId].getContainer(id);\n }\n return this.pages[id];\n }\n\n /**\n * Load a page given its id.\n *\n * @param {String} pageId the id of the page to load\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Promise} a promise that resolve to a page instance or undefined if the navigation was cancelled\n */\n loadPageFromId(pageId, navContext) {\n const page = this.getOrCreatePageFromId(pageId, navContext);\n\n // Load the page\n return page.loadAndStart(navContext);\n }\n\n /**\n * Delete a page from the cache given its id\n * @param {String} pageId the id of the page to delete\n */\n deletePage(pageId) {\n delete this.pages[pageId];\n }\n\n /**\n * Get the page instance from its id. If the page is not already in the cache, creates it.\n *\n * @param {String} pageId the id of the page to get\n * @param {NavigationContext} navContext the context of the current navigation chain\n * @return {Page} a page instance\n */\n getOrCreatePageFromId(pageId, navContext) {\n let page = this.pages[pageId];\n if (!page) {\n // TODO: We might need to check if the page exist in the definition here\n // and throw an error if it doesn't.\n // if (!this.containsPage(pageId)) {\n // throw new Error(`Page ${pageId} does not exist in flow ${flow.id}.`);\n // }\n page = this.createPage(pageId);\n // Keep track of created pages during the navigation process.\n // This is to know which pages to dispose if the navigation is cancelled.\n if (navContext) {\n navContext.pages.push(page);\n }\n }\n\n return page;\n }\n\n /**\n * Build the title that will be used for this page.\n * Walk up the flow hierarchy and gather the title of all pages.\n *\n * @param {String} the base of the title\n * @return {String} the title\n */\n buildTitle(title) {\n return this.parent.buildTitle(title);\n }\n\n updateCurrentPageVariable(pageId) {\n const currentPageVar = this.scope.getVariable(Constants.CURRENT_PAGE_VARIABLE,\n Constants.VariableNamespace.BUILTIN);\n currentPageVar.setValueInternal(pageId);\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n return {\n [Constants.FLOW_PREFIX]: this,\n [Constants.APP_PACKAGE_PREFIX]: this.package,\n [Constants.APPLICATION_PREFIX]: this.application,\n };\n }\n\n /**\n *\n * @returns {Services}\n */\n getServices() {\n return this.services;\n }\n\n /**\n * From an application hierarchy point of view the parent of a flow is not a page\n * but the parent flow, so skip the parent page and go directly to the parent flow.\n *\n * @return {Boolean} true if the authentication is required, false otherwise\n */\n isAuthenticationRequired() {\n // security.access is initialized to non-null value in initDefault.\n const { requiresAuthentication } = this.definition.security.access;\n\n // if requiresAuthentication is defined, it takes precedence over the parent value\n if (requiresAuthentication !== undefined) {\n return requiresAuthentication;\n }\n\n return this.parent ? this.getParentFlow().isAuthenticationRequired()\n : super.isAuthenticationRequired();\n }\n\n dispose() {\n // Mutates ojModule in order to disconnect and release inner ko bindings.\n this.pagesModuleConfig(Constants.blankModuleConfig);\n\n Object.keys(this.pages).forEach((pageId) => {\n const page = this.pages[pageId];\n page.dispose();\n });\n\n delete this.staticPageId;\n\n super.dispose();\n }\n }\n\n return Flow;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/redux/reduxRouter',[\n 'ojs/ojrouter', 'signals',\n], (ojRouter, signals) => {\n const ROUTER_ACTION_TYPE = '@@oj/TRANSITIONED';\n const ROUTER_PROPERTY_NAME = 'routerId';\n const ROUTER_ID = 'router';\n\n class ReduxRouter {\n constructor(router) {\n this.router = router;\n\n // Higher order reducer to incorporate the router state\n this.reducer = (initialState, action) => {\n initialState = initialState || {};\n\n if (action.type === ROUTER_ACTION_TYPE) {\n const state = {};\n state[ROUTER_PROPERTY_NAME] = router.stateId();\n return Object.assign({}, initialState, state);\n }\n\n return initialState;\n };\n }\n\n syncRouterWithStore(store) {\n this.store = store;\n\n /**\n * A signal dispatched after navigation occured.\n * @type {signals}\n */\n this.navigated = new signals.Signal();\n\n /* Disable Time Travel support for the router until there is a better way\n then checking the stateId to detect a state change. This doesn't work\n when a new scope is created (by example in an action chain) during\n navigation.\n\n // Subscribe to state changes in order to navigate during time travel\n this.stateSubscription = this.store.subscribe(() => {\n let routerId = this.getRouterId();\n\n // Only navigates if state is different\n // This is for the case where the state is changed because of time travel.\n if (routerId !== this.router.stateId()) {\n this.router.navigateToPage(routerId);\n }\n }); */\n\n // Register a listener on signal transitionedToState\n this.signal = ojRouter.transitionedToState.add((result) => {\n if (result.hasChanged) {\n this.store.dispatch({ type: ROUTER_ACTION_TYPE });\n }\n\n this.navigated.dispatch(result.hasChanged);\n });\n }\n\n getState() {\n if (this.store) {\n return this.store.getState()[ROUTER_ID];\n }\n }\n\n /**\n * Return the current router id\n * @return {string} the current state id of the router\n */\n getRouterId() {\n let state = this.getState();\n if (state) {\n return state[ROUTER_PROPERTY_NAME];\n }\n }\n\n static get KEY() {\n return ROUTER_ID;\n }\n\n dispose() {\n if (this.signal) {\n this.signal.detach();\n }\n\n if (this.stateSubscription) {\n this.stateSubscription();\n }\n\n if (this.navigated) {\n this.navigated.removeAll();\n }\n }\n }\n\n return ReduxRouter;\n});\n\n","'use strict';\n\ndefine('vb/private/ui/responsiveUtils',[\n 'vb/private/log',\n 'ojs/ojresponsiveutils',\n 'ojs/ojresponsiveknockoututils',\n], (Log, ojResponsiveUtils, ojResponsiveKnockoutUtils) => {\n const logger = Log.getLogger('/vb/private/responsiveUtils');\n\n /**\n * utilities for responsive UI related APIs that we expose in the binding syntax\n */\n class ResponsiveUtils {\n /**\n * expose some media query observables, created using JET utilities\n * @returns {Object} contains map of query keys to observables, plus 'screenRange'\n */\n static getResponsiveObservablesInterface() {\n const responsiveUtilsInterface = {};\n\n // add the JET queries, by keys in FRAMEWORK_QUERY_KEY\n Object.keys(ojResponsiveUtils.FRAMEWORK_QUERY_KEY).forEach((queryKeyId) => {\n const queryKey = ojResponsiveUtils.FRAMEWORK_QUERY_KEY[queryKeyId];\n const query = ojResponsiveUtils.getFrameworkQuery(queryKey);\n if (query) {\n const observable = ojResponsiveKnockoutUtils.createMediaQueryObservable(query);\n\n // expose the raw observable\n responsiveUtilsInterface[queryKeyId] = observable;\n } else {\n logger.fine('unable to create media query observable for',\n 'ojResponsiveUtils.FRAMEWORK_QUERY_KEY', queryKeyId);\n }\n });\n\n // @deprecated - kept for backward compatibility\n // try/catch added for unit tests, JET throws an exception if all media queries return false (seems excessive).\n try {\n responsiveUtilsInterface.screenRange = ojResponsiveKnockoutUtils.createScreenRangeObservable();\n } catch (e) {\n logger.warn('error calling ojResponsiveKnockoutUtils.createScreenRangeObservable:', e);\n }\n\n const nameMap = {\n SM_UP: 'smUp',\n MD_UP: 'mdUp',\n LG_UP: 'lgUp',\n XL_UP: 'xlUp',\n SM_ONLY: 'smOnly',\n MD_ONLY: 'mdOnly',\n LG_ONLY: 'lgOnly',\n };\n\n Object.keys(nameMap).forEach((key) => {\n // wrap the existing observable with accessors, so parentheses are not needed in expressions\n // make sure it exists; guard against name changes\n if (responsiveUtilsInterface[key]) {\n Object.defineProperty(responsiveUtilsInterface, nameMap[key], {\n get: () => responsiveUtilsInterface[key](),\n enumerable: true,\n configurable: true,\n });\n }\n });\n\n\n // prevent '$application.responsive' from being modified, but allow the observables to change\n Object.seal(responsiveUtilsInterface);\n\n return responsiveUtilsInterface;\n }\n }\n\n return ResponsiveUtils;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/applicationContext',['vb/private/constants',\n 'vb/private/stateManagement/context/flowContext',\n 'vb/private/ui/responsiveUtils',\n 'vb/private/log'],\n(Constants, FlowContext, ResponsiveUtils, Log) => {\n const symbol = Symbol('application-accessor');\n\n\n // lazy-initialization of JET responsive query observables;\n // only create the observables if someone uses $application.responsive\n let responsiveUtilsInterface = null;\n\n // const logger = Log.getLogger('/vb/private/stateManagement/context/applicationContext');\n\n class ApplicationContext extends FlowContext {\n /**\n * @param application\n */\n constructor(application) {\n super(application);\n\n Object.defineProperty(this, symbol,\n {\n value: {\n application,\n get scope() {\n return application.scope;\n },\n get bundles() {\n return application.bundles;\n },\n get initParams() {\n return application.initParams;\n },\n /**\n * Shortcut to retrieve the builtins variable map\n */\n get builtins() {\n return application.scope.variableNamespaces[Constants.VariableNamespace.BUILTIN];\n },\n },\n // translations: null,\n });\n }\n\n /**\n * $application.user\n * @returns {*}\n */\n get [Constants.APPLICATION_USER_VARIABLE]() {\n return this[symbol].builtins[Constants.APPLICATION_USER_VARIABLE];\n }\n\n\n /**\n * Accessor for the application builtin utils\n * @return {Object}\n */\n get builtinUtils() {\n return this[symbol].application.builtinUtils;\n }\n\n /**\n * $application.responsive.XXXX, eg. responsive.SM_UP\n * @returns {*}\n */\n get [Constants.RESPONSIVE_CONTEXT]() {\n if (!responsiveUtilsInterface) {\n responsiveUtilsInterface = ResponsiveUtils.getResponsiveObservablesInterface();\n }\n return responsiveUtilsInterface;\n }\n\n\n /**\n * $application.profile, the active app profile\n * @returns {*}\n */\n get [Constants.PROFILE_CONSTANT]() {\n return this[symbol].builtins[Constants.PROFILE_CONSTANT];\n }\n\n /**\n * $application.deployment\n * @returns {*}\n */\n get [Constants.DEPLOYMENT_CONSTANT]() {\n return this[symbol].builtins[Constants.DEPLOYMENT_CONSTANT];\n }\n\n /**\n * $application.initParams.XXXX. comes from window.vbInitParams or \"configuration\" declaration.\n * @todo: remove support for window.vbInitParams\n *\n * @returns {*}\n */\n get [Constants.INIT_PARAM_CONTEXT]() {\n return this[symbol].initParams;\n }\n\n\n /**\n * get all dollar-vars available to expression binding\n * @param application\n * @returns {*}\n */\n static getAvailableContexts(application) {\n const availableContexts = super.getAvailableContexts(application);\n\n // Delete the $flow not needed for $application. Also this is not to avoid a conflict\n // between $application.currentPage and @flow.currentPage which are of different type.\n delete availableContexts.$flow;\n\n delete availableContexts.$package;\n\n // re-defining this, from ContainerContext\n Object.defineProperties(availableContexts, {\n $application: {\n enumerable: true,\n configurable: true,\n get: () => application.expressionContext,\n },\n $builtinUtils: {\n enumerable: true,\n configurable: true,\n get: () => application.expressionContext.builtinUtils,\n },\n [Constants.ContextName.INIT_PARAMS]: {\n enumerable: true,\n configurable: true,\n get: () => application.initParams,\n },\n });\n\n return availableContexts;\n }\n }\n\n return ApplicationContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/applicationExtension',[\n 'vb/private/stateManagement/flowExtension',\n 'vb/private/configLoader',\n 'vb/private/constants',\n 'vb/private/log',\n], (FlowExtension,\n ConfigLoader,\n Constants,\n Log) => {\n const logger = Log.getLogger('/vb/private/stateManagement/applicationExtension');\n\n class ApplicationExtension extends FlowExtension {\n /**\n * @param extension\n * @param path\n * @param base\n * @param className\n */\n constructor(extension, path, base, className = 'ApplicationExtension') {\n super(extension, path, base, className);\n\n // get the extension files, to check against requested services\n this.files = extension.files.slice();\n }\n\n /**\n * Override, to support \"requirejs\" declaration.\n *\n * @returns {*}\n * @override\n */\n load() {\n return super.load()\n .then(() => this.initializePathMappings());\n }\n\n /**\n * Return an array of all Services objects; currently only one.\n *\n * @returns {Array}\n */\n getAllServices() {\n return [this.services];\n }\n\n /**\n * This is called by Application, during its createServices.\n * Cannot be called in load(), because load() is only called when the app-flow-x file exists.\n *\n * @returns {Promise}\n * @override\n */\n createServices() {\n return Promise.resolve()\n .then(() => {\n // converts 'base/someId/app' to 'base/someId'\n const relativePath = `${this.fullPath.substring(0, this.fullPath.length - this.id.length)}`;\n\n const serviceFileMap = this.definition.services || {};\n\n const options = {\n namespace: this.extensionId,\n relativePath,\n expressionContext: this.getAvailableContexts(),\n protocolRegistry: this.application.protocolRegistry,\n serviceFileMap,\n };\n\n // creates an ExtensionService\n return this.application.extensionRegistry.loadServicesModel(this.extensionId, options);\n })\n .then((servicesModel) => {\n this.services = servicesModel;\n });\n }\n\n /**\n * For \"requirejs\" declaration, allow adding new \"paths\" to requireJS.\n */\n initializePathMappings() {\n const requirejsDecl = this.definition && this.definition.requirejs;\n if (requirejsDecl) {\n if (!requirejsDecl.paths || Object.keys(requirejsDecl) > 1) {\n // only allow configs with only \"paths\" in app-flow-x extensions\n logger.error('Application Extension \"requirejs\" only supports \"paths\".', requirejsDecl);\n } else {\n ConfigLoader.addRequirejsPathsFromExtension(requirejsDecl);\n }\n }\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n return {\n [Constants.APPLICATION_PREFIX]: this,\n };\n }\n }\n\n return ApplicationExtension;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/packagePage',[\n 'vb/private/stateManagement/page',\n], (Page) => {\n /**\n * PackagePage class\n * A class for page object defined in an app-package\n */\n class PackagePage extends Page {\n constructor(id, parent, requirePath, className = 'PackagePage') {\n super(id, parent, requirePath, className);\n\n this.package = parent.package;\n\n /**\n * baseUrl is always relative to the require.baseUrl except when in an app-package.\n * When loading artifacts in an app-package, the require resource need to be prefixed\n * with the app-package base url (something like vx/...)\n */\n this.baseUrl = this.package.baseUrl;\n\n // app-package redefines this value with the absolute path of the resource in\n // the extension manager.\n this.absoluteUrl = this.package.absoluteUrl;\n }\n\n descriptorLoader(resourceLocator) {\n return Promise.resolve().then(() => {\n // app-package are using extension with a manifest containering a list of files,\n // so we can check if the file exist before doing a fetch that may fail.\n this.package.checkFileExist(`${this.requirePath}${this.fullName}.json`);\n return super.descriptorLoader(resourceLocator);\n });\n }\n\n functionsLoader(resourceLocator) {\n return Promise.resolve().then(() => {\n this.package.checkFileExist(`${this.requirePath}${this.fullName}.js`);\n return super.functionsLoader(resourceLocator);\n });\n }\n\n templateLoader(resourceLocator) {\n return Promise.resolve().then(() => {\n this.package.checkFileExist(`${this.requirePath}${this.fullName}.html`);\n return super.templateLoader(resourceLocator);\n });\n }\n\n /**\n * Return true if this page can be navigated to from the outside\n * @return {Boolean}\n */\n isNavigable() {\n const { navigation } = this.definition;\n if (navigation && navigation.fromExternal === 'enabled') {\n return true;\n }\n if (this.isDefault() && this.parent.isNavigable()) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if there is any restriction to navigate to this page\n * @throws an error id the page is not navigable\n */\n checkNavigable() {\n if (!this.isNavigable()) {\n throw new Error(`Navigation to page ${this.getNavPath()} is not enabled.`);\n }\n }\n }\n\n return PackagePage;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/packageFlow',[\n 'vb/private/stateManagement/flow',\n 'vb/private/stateManagement/packagePage',\n], (Flow, PackagePage) => {\n /**\n * PackageFlow class\n * A class for flow object defined in an app-package\n */\n class PackageFlow extends Flow {\n constructor(id, parent, requirePath, className = 'PackageFlow') {\n super(id, parent, requirePath, className);\n\n // AppPackage extends PackageFlow but their package property is defined later\n const appPackage = parent.package;\n if (appPackage) {\n this.package = appPackage;\n\n /**\n * baseUrl is always relative to the require.baseUrl except when in an app-package.\n * When loading artifacts in an app-package, the require resource need to be prefixed\n * with the app-package base url (something like vx/...)\n * @return {String}\n */\n this.baseUrl = appPackage.baseUrl;\n\n\n /**\n * app-package redefines this value with the absolute path of the resource in\n * the extension manager.\n * @return {String}\n */\n this.absoluteUrl = appPackage.absoluteUrl;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n createFlow(id, page) {\n return new PackageFlow(id, page);\n }\n\n createPage(pageId, requirePath) {\n const page = new PackagePage(pageId, this, requirePath);\n this.pages[pageId] = page;\n return page;\n }\n\n descriptorLoader(resourceLocator) {\n return Promise.resolve().then(() => {\n // app-package are using extension with a manifest containering a list of files,\n // so we can check if the file exist before doing a fetch that may fail.\n this.package.checkFileExist(`${this.requirePath}${this.fullName}.json`);\n return super.descriptorLoader(resourceLocator);\n });\n }\n\n functionsLoader(resourceLocator) {\n return Promise.resolve().then(() => {\n this.package.checkFileExist(`${this.requirePath}${this.fullName}.js`);\n return super.functionsLoader(resourceLocator);\n });\n }\n\n /**\n * Return true if this page can be navigated to from the outside\n * @return {Boolean}\n */\n isNavigable() {\n const { navigation } = this.definition;\n if (navigation && navigation.fromExternal === 'enabled') {\n return true;\n }\n if (this.isDefault() && this.parent.isNavigable()) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if there is any restriction to navigate to this page\n * @throws an error id the page is not navigable\n */\n checkNavigable() {\n if (!this.isNavigable()) {\n throw new Error(`Navigation to page ${this.getNavPath()} is not enabled.`);\n }\n }\n }\n\n return PackageFlow;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/context/appPackageContext',[\n 'vb/private/constants',\n 'vb/private/stateManagement/context/flowContext',\n], (Constants, FlowContext) => {\n const symbol = Symbol('app-package-accessor');\n\n class AppPackageContext extends FlowContext {\n /**\n *\n * @param package\n */\n constructor(appPackage) {\n super(appPackage);\n\n Object.defineProperty(this, symbol,\n {\n value: {\n /**\n * Shortcut to retrieve the builtins variable map\n */\n get builtins() {\n return appPackage.scope.variableNamespaces[Constants.VariableNamespace.BUILTIN];\n },\n },\n });\n }\n\n static getAvailableContexts(appPackage) {\n const availableContexts = super.getAvailableContexts(appPackage);\n\n delete availableContexts.$flow;\n\n Object.defineProperties(availableContexts, {\n // Override the $application defined in ContainerContext to point to the extension application\n $application: {\n enumerable: true,\n configurable: true,\n // Retrieve the application extension with the same extension id\n get: () => {\n // return appPackage.application.expressionContext;\n const extensionApplication = appPackage.application.extensions[appPackage.extensionId];\n return extensionApplication && extensionApplication.expressionContext;\n },\n },\n $package: {\n enumerable: true,\n configurable: true,\n get: () => appPackage.expressionContext,\n },\n });\n\n\n return availableContexts;\n }\n }\n\n return AppPackageContext;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/appPackageExtension',[\n 'vb/private/stateManagement/flowExtension',\n 'vb/private/constants',\n], (FlowExtension, Constants) => {\n /**\n * AppPackageExtension class\n */\n class AppPackageExtension extends FlowExtension {\n constructor(extension, path, base, className = 'AppPackageExtension') {\n super(extension, path, base, className);\n\n this.extensionClass = AppPackageExtension;\n }\n\n static get resourceSuffix() {\n return '-x.json';\n }\n\n /**\n * The name of the runtime environment function to be used to load the descriptor.\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getAppPackageExtensionDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions.\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getAppPackageExtensionFunctions';\n }\n\n /**\n * Returns a scope resolver map where keys are scope name (\"page\", \"flow\" or \"application\")\n * and value the matching objects. This is used to build the scopeResolver object.\n *\n * @private\n * @return {Object} an object which properties are scope\n */\n getScopeResolverMap() {\n return {\n [Constants.APP_PACKAGE_PREFIX]: this,\n [Constants.APPLICATION_PREFIX]: this.application,\n };\n }\n }\n\n return AppPackageExtension;\n});\n\n","'use strict';\n\ndefine('vb/private/stateManagement/appPackage',[\n 'vb/private/stateManagement/packageFlow',\n 'vb/private/stateManagement/context/appPackageContext',\n 'vb/private/stateManagement/appPackageExtension',\n 'vb/private/services/services',\n 'vb/private/utils',\n 'vb/errors/httpError',\n 'vb/private/constants',\n], (PackageFlow, AppPackageContext, AppPackageExtension, Services, Utils, HttpError, Constants) => {\n /**\n * AppPackage class\n */\n class AppPackage extends PackageFlow {\n /**\n * AppPackage constructor\n *\n * @param {String} id a string id to identify the appPackage\n * @param {Page} page the page that contain this appPackage\n * @return {AppPackage} appPackage object\n */\n constructor(extension, id, page, className = 'AppPackage') {\n super(id, page, `app-packages/${id}/`, className);\n\n // Make extensionId readonly properties for safety\n Object.defineProperties(this, {\n extensionId: {\n value: extension.id,\n enumerable: true,\n },\n needsExtension: {\n value: !extension.isOptimized,\n enumerable: true,\n },\n package: {\n value: this,\n enumerable: true,\n },\n // The name is always app-pack, app-pack.json, app-pack.js\n name: {\n value: 'app-pack',\n enumerable: true,\n },\n });\n\n // app-package always come from extension, so override the baseUrl\n this.baseUrl = `${Constants.EXTENSION_PATH}${this.extensionId}/${Constants.ExtensionFolders.SELF}/`;\n\n // Override the absoluteUrl value defined in the Flow class.\n // this is needed for setting the path builtins variable used to access images resource that are\n // not bundled with the extension.\n this.absoluteUrl = `${extension.ui.baseUrl}/${Constants.ExtensionFolders.SELF}/`;\n\n this.extensionClass = AppPackageExtension;\n }\n\n /**\n * The name of the runtime environment function to be used to load the descriptor\n *\n * @return {String} the descriptor loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get descriptorLoaderName() {\n return 'getAppPackageDescriptor';\n }\n\n /**\n * The name of the runtime environment function to be used to load the module functions\n *\n * @return {String} the module loader function name\n */\n // eslint-disable-next-line class-methods-use-this\n get functionsLoaderName() {\n return 'getAppPackageFunctions';\n }\n\n /**\n * returns the LayoutContext constructor used to create the '$' expression context\n * @return { LayoutContext.constructor }\n * @override\n */\n static get ContextType() {\n return AppPackageContext;\n }\n\n createServices() {\n return Promise.resolve()\n .then(() => {\n const serviceFileMap = this.definition.services || {};\n const options = {\n namespace: this.extensionId,\n relativePath: this.requirePath,\n serviceFileMap,\n expressionContext: this.getAvailableContexts(),\n protocolRegistry: this.application.protocolRegistry,\n };\n\n this.services = new Services(options);\n });\n }\n\n /**\n * @returns {string}\n */\n get fullName() {\n return this.name;\n }\n\n // eslint-disable-next-line class-methods-use-this\n isNavigable() {\n // App-package are always navigable\n return true;\n }\n\n /**\n * Generate a unique name to be used for the scope.\n * The name is unique and has the name of the class and the path to make it easier to\n * find the scope owner when debugging.\n *\n * @return {String} a new scope name\n */\n getNewScopeName() {\n return `${this.className}/${this.id}`;\n }\n\n initDefault(definition) {\n const def = definition;\n\n return super.initDefault(def);\n }\n\n getScopeResolverMap() {\n return {\n [Constants.APP_PACKAGE_PREFIX]: this,\n [Constants.APPLICATION_PREFIX]: this.application,\n };\n }\n\n /**\n * Check that a file exist in the this app-package\n * Use the files list provided by he extension\n * Throws a HttpError if the file does not exist\n *\n * @param {String} path\n */\n checkFileExist(path) {\n const fullPath = `${Constants.ExtensionFolders.SELF}/${path}`;\n\n // app-package are using extension with a manifest containing a list of files,\n // so we can check if the file exist before doing a fetch that may fail.\n if (!this.application.fileExistsInExtension(this.extensionId, fullPath)) {\n throw new HttpError(404, null, `${fullPath} not found.`);\n }\n }\n }\n\n return AppPackage;\n});\n\n","'use strict';\n\ndefine('vb/private/urlMapper',[\n 'vb/private/constants',\n 'vb/private/log',\n 'vb/private/utils',\n 'vb/private/services/serviceUtils',\n 'vb/private/services/servicesLoader',\n 'vb/private/services/serviceConstants',\n 'vbc/private/constants',\n 'urijs/URI',\n], (Constants, Log, Utils, ServiceUtils, ServicesLoader, ServicesConstants, CommonConstants, URI) => {\n const logger = Log.getLogger('/vb/private/urlMapper');\n\n const DEFAULT_SKIP_CATALOG_TYPES = ['ics'];\n\n const CATALOG_OBJECTS_TO_SKIP = ['backends']; // don't map to 'backends', only 'services'\n\n const ADF_BC_DESCRIBE_SUFFIX = '/describe';\n\n // fewest number of segments that we need for a match, when doing sub-mapping, where we remove segments to allow\n // for more permissive matching (FA services may reference other services that require this, for the dyn ui case).\n // if the 'segmentMinimum' configuration is lower than this, it will use a minimum of 1.\n // note that, if the service is defined with a base URL with fewer segments than this, it will still match;\n // this minimum only limits the sub-mappings.\n const SEGMENT_MINIMUM_MATCH = 2;\n\n\n /**\n * this is to handle the Dynamic UI case where it is fetching service metadata (via operationRef/x-link).\n * When matching to \"services\", we don't normally include the information in its \"paths\" object, if any.\n * But if we intercept a /describe fetch, we should merge the \"paths\" headers, stored in the 'metadata' object,\n * with the normal services headers.\n *\n * @todo: JET should be able to add the proper 'accept' header to /describe fetch, but there could be other stuff\n *\n * @param m the mapping data; this is modified\n * @returns {{metadata}|*} the passed in mapping data, possibly modified\n */\n function useMetadata(m) {\n const mapping = m; // eslint\n if (mapping && mapping.metadata) {\n /**\n * only apply the metadata for a /describe if\n * 1) the \"paths\" operation also ends with \"/describe\"\n * 2) there are static headers in the x-vb.headers\n */\n const requestInit = mapping || {};\n if (mapping.metadata.path && mapping.metadata.path.endsWith(ADF_BC_DESCRIBE_SUFFIX)) {\n const mdHeaders = (mapping.metadata.extensions && mapping.metadata.extensions.headers) || {};\n // if we have at ;least one static header\n if (Object.keys(mdHeaders).length > 0) {\n const metadata = ServiceUtils.getExtensionsFromMetadata('', mapping.metadata, requestInit);\n\n delete metadata.headers[CommonConstants.Headers.VB_INFO_EXTENSION]; // unnecessary, reconstructed by requester\n // just take the headers, we dont need anything else\n mapping.headers = metadata.headers;\n }\n }\n }\n return mapping;\n }\n\n const SPECIAL_CASE_MAP = {\n [ADF_BC_DESCRIBE_SUFFIX]: {\n // this uses the \"paths\" (metadata) x-vb section if it ends with /describe (in addition to server object x-vb)\n augmentMapping: useMetadata,\n },\n };\n\n\n /**\n * for sorting mappings, using:\n * - all 'submapping' mappings should appear after non-submapping (note 1)\n * - urls with an equal number of segment are sorted by namespace (note 2)\n * - urls with an equal number of segments and equal namespaces are sorted alphabetically\n * - urls with more segments appear before urls with fewer (more exact match)\n *\n * (this function needs to be bound to the UrlMapper, see UrlMapper constructor)\n * note 1:\n * \"submappings\" are the URLs we create by removing segments from what we have from a fully resolved URL.\n * For example, if the resolution of a service and backends results in:\n * https://some/backend/another/backend/service/stuff\n * submappings would include\n * https://some/backend/another/backend/service\n * https://some/backend/another/backend/\n * etc...\n *\n * note 2:\n * When an extension adds a one granular mapping for a URL, use it in preference to the base's.\n * Otherwise, prefer base for equal-length segment matches.\n *\n * @param a\n * @param b\n * @returns {number}\n */\n function compareMappingsByUrl(a, b) {\n const asegs = a.url.split(Constants.PATH_SEPARATOR).length - 1; // don't count both '//'\n const bsegs = b.url.split(Constants.PATH_SEPARATOR).length - 1;\n // submappings should have lower priority\n if (a.submapping || b.submapping) {\n if (a.submapping && !b.submapping) {\n return 1;\n }\n if (b.submapping && !a.submapping) {\n return -1;\n }\n }\n\n if (asegs === bsegs) {\n // sort by namespaces if they have the same number of segments\n const aNS = this.namespaces.indexOf(a.namespace);\n const bNS = this.namespaces.indexOf(b.namespace);\n const aWeight = (aNS >= 0) ? this.namespaces.length - aNS : aNS;\n const bWeight = (bNS >= 0) ? this.namespaces.length - bNS : bNS;\n if (aWeight !== bWeight) {\n return Math.sign(aWeight - bWeight);\n }\n\n // sort alphabetically, if the have the same number of segments and namespace\n // eslint-disable-next-line no-nested-ternary\n return a.url === b.url ? 0 : (a.url < b.url ? -1 : 1);\n }\n return bsegs - asegs;\n }\n\n\n /**\n * utility for mapping intercepted URLs that do not already have 'vb-info-extension' information.\n *\n * those can be either:\n * - requireJS-loaded URLs, via XHR or \n *\n * OR in app-flow.json\n *\n * \"configuration\": {\n * \"initParams\": {\n * \"services.security.handlers.passthroughs\": [\"propagate\"]\n * }\n * }\n *\n * @param authentication\n * @returns {*|boolean}\n */\n isPassthrough(authentication) {\n return authentication && this.passthroughs.indexOf(authentication.type) >= 0;\n }\n\n /**\n * Interpret the authentication configuration\n *\n * @param request the request to which to modify\n * @param client\n * @returns {Promise}\n */\n handleRequestHook(request, client) {\n return Promise.resolve()\n .then(() => {\n // first check if the request came from VB; all data requests have this header when sent from main thread.\n const infoExtensionHeader = request.headers.get(CommonConstants.Headers.VB_INFO_EXTENSION);\n // if the header is not set (should return null, but check for undefined just in case)\n if (infoExtensionHeader === null || infoExtensionHeader === undefined) {\n return this.getExtensionFromMapping(request, client);\n }\n return JSON.parse(infoExtensionHeader);\n })\n .then((infoExtension) => {\n // bail if nothing found\n if (!infoExtension) {\n return request;\n }\n\n const {\n authenticationType,\n proxyUrl,\n tokenRelayUrl,\n authentication,\n isLegacy,\n passthroughProperties,\n } = this.processInfoExtension(infoExtension, request);\n\n // if passthrough, copy auth values to simple headers, and exit; don't interpret\n if (passthroughProperties) {\n return this.setPassthroughHeaders(request, passthroughProperties);\n }\n\n // get the list of header names before we start adding headers\n const headersBeforeProcessing = [];\n if (!isLegacy && authenticationType === Constants.AuthenticationType.ORACLE_CLOUD && proxyUrl) {\n for (const name of request.headers.keys()) {\n headersBeforeProcessing.push(name);\n }\n }\n\n // set the authentication type header on the request so it can be processed by the corresponding plugin\n request.headers.set(Constants.AUTHENTICATION_TYPE_HEADER, authenticationType);\n\n if (authenticationType === Constants.AuthenticationType.TOKEN_RELAY) {\n request.headers.set(Constants.TOKEN_RELAY_URL_HEADER, tokenRelayUrl);\n\n // Provide override for manual configuration of authentication\n if (authentication) {\n request.headers.set(Constants.TOKEN_RELAY_AUTH_HEADER, JSON.stringify(authentication));\n }\n } else if (authenticationType === Constants.AuthenticationType.ORACLE_CLOUD && proxyUrl) {\n // create a new proxied version of the request\n const proxyPrefix = proxyUrl.endsWith('/') ?\n proxyUrl.substring(0, proxyUrl.length - 1) :\n proxyUrl;\n\n let suffix = request.url.replace(':/', '');\n const protocol = request.headers.get(CommonConstants.Headers.PROTOCOL_OVERRIDE_HEADER);\n if (protocol) {\n suffix = suffix.replace(VB_HTTPS_PREFIX, protocol);\n }\n\n return FetchHandlerPlugin.getRequestConfig(request, this.fetchHandler).then((config) => {\n // prefix headers that the proxy should pass along\n if (!isLegacy) {\n // only do this for the new proxy\n AuthPreprocessorHandlerPlugin.addPostProcessingHeader(config, headersBeforeProcessing);\n }\n\n return this.fetchHandler.createRequest(`${proxyPrefix}/${suffix}`, config);\n });\n }\n\n return request;\n });\n }\n\n /**\n * set a header with JSON string with the current \"authentication\" block properties\n * @param request\n * @param properties\n * @returns {*}\n */\n // eslint-disable-next-line class-methods-use-this\n setPassthroughHeaders(request, properties) {\n if (properties) {\n request.headers.set(Constants.HEADER_PASSTHROUGH, JSON.stringify(properties));\n }\n return request;\n }\n\n\n /**\n * delegate to the UrlMapperClient to look up addition URL config.\n * this also adds the 'vb-info-extension' to the request\n * @param request\n * @param client\n * @returns {Promise()} the value of the vb-info-extensions header form the mapping, if any\n */\n getExtensionFromMapping(request, client) {\n return this.urlMapperClient ? this.urlMapperClient.getMapping(request, client)\n .then((mapping) => {\n if (mapping) {\n this.applyMapping(request, mapping);\n }\n return mapping;\n }) : Promise.resolve(null);\n }\n\n /**\n * add headers from the mapping to the request, but do not overwrite existing headers.\n *\n * the mapping object is\n * {\n * headers: ,orkwe\n * serviceName: ,\n * baseUrl: \n * }\n *\n * this will add all the headers, and a special 'vb-info-extension ' header,\n * which is a string-ified version of this structure\n *\n * @param request the headers will be modified if there is a mapping\n * @param mapping if null, simply returns the request\n * @returns {Request}\n * @private\n */\n // eslint-disable-next-line class-methods-use-this\n applyMapping(request, mapping) {\n if (mapping) {\n const mappingStr = JSON.stringify(mapping);\n\n logger.info('UrlMapper found mapping for: ', request.url, mappingStr);\n\n // only add headers that don't already exist\n Object.keys(mapping.headers).forEach((header) => {\n const existing = request.headers.get(header);\n // should return null for headers that aren't set, but check for undefined just in case\n if (existing === null || existing === undefined) {\n request.headers.set(header, mapping.headers[header]);\n }\n });\n\n // and add the vb-info-header extension\n request.headers.set(CommonConstants.Headers.VB_INFO_EXTENSION, mappingStr);\n }\n // return the (original, possibly modified) Request\n return request;\n }\n\n\n /**\n * this is used by the authPostProcessorHandlerPLugin\n *\n * the PRESENCE of the header means we are using the new 1.1 proxy, and need to prefix certain headers.\n * the VALUE of the header is a list of original header names, before we add other plugins-specific headers.\n * (note, other plugins may add other headers later)\n *\n * @param config\n * @param headersBeforeProcessing\n */\n static addPostProcessingHeader(c, headersBeforeProcessing) {\n const config = c; // avoiding lint error\n config.headers[Constants.PROXY_HEADERNAME_HEADER] = JSON.stringify(headersBeforeProcessing || []);\n }\n }\n\n return AuthPreprocessorHandlerPlugin;\n});\n\n","'use strict';\n\ndefine('vbsw/private/plugins/authPublicHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'urijs/URI'], (FetchHandlerPlugin, URI) => {\n // regular expressions for DT and RT\n const DT_REGEX = /\\/ic\\/builder\\/(design|deployment)\\/[\\w\\d]+\\/(((\\d+\\.)+\\d+)|(\\d+))\\/resources\\/(data(mgr)?|vbprocess)(\\/.+)?/; // eslint-disable-line max-len\n const RT_REGEX =\n /\\/ic\\/builder\\/rt\\/[\\w\\d]+\\/(((\\d+\\.)+\\d+)|(\\d+)|(live))(\\/resources\\/(data|vbprocess)|(\\/resources)?\\/services)(\\/.+)?/; // eslint-disable-line max-len\n\n /**\n * Handler plugin for appending Authorizaton:Public header.\n */\n class AuthPublicHandlerPlugin extends FetchHandlerPlugin {\n /**\n * Append the Authorization:Public header.\n *\n * @param request the request to which to append the header\n */\n handleRequestHook(request) {\n // only add the header for url matching the following patterns\n let isMatch = request.url.match(RT_REGEX) || request.url.match(DT_REGEX);\n\n // in IE11, the path comes through with the service double-dots, and flunks the regex\n if (!isMatch && request.url.indexOf('../') >= 0) {\n const altUrl = new URI(request.url).normalize().toString();\n isMatch = altUrl.match(RT_REGEX) || altUrl.match(DT_REGEX);\n }\n\n if (isMatch) {\n request.headers.set('Authorization', 'Public');\n }\n\n return Promise.resolve();\n }\n }\n\n return AuthPublicHandlerPlugin;\n});\n\n\n","'use strict';\n\ndefine('vbsw/private/plugins/authSessionHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'urijs/URI'], (FetchHandlerPlugin, URI) => {\n // regular expressions for DT and RT\n const DT_REGEX = /\\/ic\\/builder\\/(design|deployment)\\/[\\w\\d]+\\/(((\\d+\\.)+\\d+)|(\\d+))\\/resources\\/(data(mgr)?|vbprocess)(\\/.+)?/; // eslint-disable-line max-len\n const RT_REGEX =\n /\\/ic\\/builder\\/rt\\/[\\w\\d]+\\/(((\\d+\\.)+\\d+)|(\\d+)|(live))(\\/resources\\/(data|vbprocess)|(\\/resources)?\\/services)(\\/.+)?/; // eslint-disable-line max-len\n\n /**\n * Handler plugin for appending Authorizaton:Session header.\n */\n class AuthSessionHandlerPlugin extends FetchHandlerPlugin {\n /**\n * Append the Authorization:Session header.\n *\n * @param request the request to which to append the header\n */\n handleRequestHook(request) {\n // only add the header for url matching the following patterns\n let isMatch = request.url.match(RT_REGEX) || request.url.match(DT_REGEX);\n\n // in IE11, the path comes through with the service double-dots, and flunks the regex\n if (!isMatch && request.url.indexOf('../') >= 0) {\n const altUrl = new URI(request.url).normalize().toString();\n isMatch = altUrl.match(RT_REGEX) || altUrl.match(DT_REGEX);\n }\n\n if (isMatch) {\n request.headers.set('Authorization', 'Session');\n }\n\n return Promise.resolve();\n }\n }\n\n return AuthSessionHandlerPlugin;\n});\n\n\n","'use strict';\n\ndefine('vbsw/private/plugins/csrfTokenHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'vbsw/private/utils'], (FetchHandlerPlugin, Utils) => {\n const CSRF_TOKEN_HEADER_NAME = 'X-appbuilder-client-id';\n const INVALID_CSRF_TOKEN_HEADER_NAME = 'X-invalid-appbuilder-client-id';\n\n\n /**\n * Handler plugin for handling CSRF tokens.\n */\n class CsrfTokenHandlerPlugin extends FetchHandlerPlugin {\n constructor(context, params = {}) {\n super(context);\n this.vbCsrfToken = null;\n\n // eslint-disable-next-line max-len\n const reg = (params && params.regex) ? params.regex : Utils.getRegexForAppScope(this.fetchHandler.scope, this.fetchHandler.config);\n\n this.scopeRegEx = new RegExp(reg);\n\n // used to skip requests containing base url token since their responses can be cached by the browser\n // and we don't want to be using the CSRF tokens from these cached responses since they can be stale\n this.versionIdRegEx = params.versionId ? new RegExp(params.versionId) : null;\n }\n\n // used by unit tests\n static get csrfTokenHeader() { return CSRF_TOKEN_HEADER_NAME; }\n static get invalidCsrfTokenHeader() { return INVALID_CSRF_TOKEN_HEADER_NAME; }\n\n /**\n * Get the CSRF token.\n *\n * @returns {Promise}\n */\n getCsrfToken() {\n // first try loading the token from the cache\n if (!this.vbCsrfToken) {\n return this.stateCache.get(CSRF_TOKEN_HEADER_NAME).then((token) => {\n this.vbCsrfToken = token;\n return token;\n });\n }\n\n return Promise.resolve(this.vbCsrfToken);\n }\n\n /**\n * Refresh the CSRF token from a response.\n *\n * @param response the response from which to get the latest CSRF token\n * @returns {Promise}\n */\n refreshCsrfToken(response) {\n const headers = response.headers;\n const token = headers.get(CSRF_TOKEN_HEADER_NAME);\n\n if (token && token !== this.vbCsrfToken) {\n this.vbCsrfToken = token;\n\n // cache the token\n return this.stateCache.put(CSRF_TOKEN_HEADER_NAME, token);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Append the CSRF token to the header.\n *\n * @param request the request to which to append the CSRF token\n * @returns {Promise}\n */\n handleRequestHook(request) {\n // only append the CSRF token if the request url matches the scope\n if (request.url.match(this.scopeRegEx)\n && (this.versionIdRegEx ? !request.url.match(this.versionIdRegEx) : true)) {\n return this.getCsrfToken()\n .then((token) => {\n request.headers.set(CSRF_TOKEN_HEADER_NAME, token);\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Check the response if we need to refresh the CSRF token and retry the request if we have an invalid token.\n *\n * @param response the response to check for invalid CSRF token and get new token\n * @returns {Promise.}\n */\n handleResponseHook(response, origRequest, request) {\n // only check for 403 if the original request url matches the scope\n if (request.url.match(this.scopeRegEx)\n && (this.versionIdRegEx ? !request.url.match(this.versionIdRegEx) : true)) {\n if (response.status === 403 && response.headers.get(INVALID_CSRF_TOKEN_HEADER_NAME)) {\n // get the new CSRF token from the response and retry\n return this.refreshCsrfToken(response).then(() => true);\n }\n\n if (response.ok) {\n // refresh to keep the CSRF token up-to-date\n return this.refreshCsrfToken(response).then(() => false);\n }\n }\n\n return Promise.resolve(false);\n }\n }\n\n return CsrfTokenHandlerPlugin;\n});\n\n","'use strict';\n\ndefine(\n 'vbsw/private/plugins/fallbackInheritedAuthHandlerPlugin',[\n 'vbsw/private/plugins/abstractAuthHandlerPlugin',\n 'vbc/private/constants',\n ], (AbstractAuthHandlerPlugin, CommonConstants) => {\n /**\n * Fall back if no other authentication method is avaliable\n */\n class fallbackInheritedAuthHandlerPlugin extends AbstractAuthHandlerPlugin {\n constructor(fetchHandler) {\n super(fetchHandler);\n }\n\n deriveUrlKey(request) {\n return 'authenticated';\n }\n\n handleRequestHook(request) {\n const inherit = request.headers.get('vb-inherit-authentication');\n if (inherit && inherit === 'not-handled') {\n\n const fallbackProxy = request.headers.get('vb-inherit-authentication-fallback');\n if (fallbackProxy) {\n // Overwrite vb-info-extension header\n // in future where I have more time properly refactor this code.\n request.headers.set(CommonConstants.Headers.VB_INFO_EXTENSION, JSON.stringify({\n proxyUrls: {\n authenticated: fallbackProxy\n },\n }));\n // Prevent cross posting\n request.headers.delete(CommonConstants.Headers.PROTOCOL_OVERRIDE_HEADER);\n\n return super.handleRequestHook(request);\n }\n }\n\n return Promise.resolve();\n }\n }\n\n return fallbackInheritedAuthHandlerPlugin;\n });\n\n","'use strict';\n\ndefine('vbsw/private/plugins/generalHeadersHandlerPlugin',['vbsw/api/fetchHandlerPlugin'], (FetchHandlerPlugin) => {\n /**\n * Handler plugin for adding general headers such as Accept-Language, etc.\n */\n class GeneralHeadersHandlerPlugin extends FetchHandlerPlugin {\n /**\n * Constructor\n *\n * @param context the context for the plugin\n * @param headers an object containing all the headers to be appended to the request\n */\n constructor(context, headers) {\n super(context);\n this.headers = headers || {};\n }\n\n handleRequestHook(request) {\n Object.keys(this.headers).forEach((key) => {\n // BUFP-31175: don't replace headers that exist in the request\n if (!request.headers.get(key)) {\n request.headers.set(key, this.headers[key]);\n }\n });\n\n return Promise.resolve();\n }\n }\n\n return GeneralHeadersHandlerPlugin;\n});\n\n","'use strict';\n\ndefine('vbsw/private/plugins/headerTidyHandlerPlugin',['vbsw/api/fetchHandlerPlugin'], (FetchHandlerPlugin) => {\n\n const HEADERS = /^vb-.*/;\n\n /**\n * Handler plugin for tidying up headers.\n */\n class HeaderTidyHandlerPlugin extends FetchHandlerPlugin {\n\n\n /**\n * Remove intra plugin headers, to prevent COORS issues later\n */\n handleRequestHook(request) {\n const headersToDelete = [];\n\n // On Firefox and IE, deleting the headers while iterating messes up the iterator. Work around\n // the issue by using an array, headersToDelete, to keep track of headers to delete.\n for (const header of request.headers.keys()) {\n // delete all \"vb-*\", except for \"vb-proxy-*\"\n if (HEADERS.test(header) && !header.startsWith(Constants.HEADER_PROXY_PREFIX)) {\n headersToDelete.push(header);\n }\n }\n\n headersToDelete.forEach((header) => {\n request.headers.delete(header);\n });\n\n return Promise.resolve();\n }\n }\n\n return HeaderTidyHandlerPlugin;\n });\n\n","'use strict';\n\ndefine('vbsw/private/plugins/implicitFlowHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'vbsw/private/utils', 'vbsw/private/constants'],\n (FetchHandlerPlugin, Utils, Constants) => {\n const IMPLICIT_FLOW_CACHED_TOKEN = 'vbImplicitFlowCachedToken';\n\n // skew tolerance for the token expiration time\n const SKEW_TOLERANCE = 100;\n\n /**\n * Handler plugin for handling implicit grant flow.\n */\n class ImplicitFlowHandlerPlugin extends FetchHandlerPlugin {\n /**\n * Constructor\n *\n * @param context the context for the plugin\n * @param params an object containing the access token and scope\n */\n constructor(context, params) {\n super(context);\n\n const allowedScopes = params.allowedScopes || [];\n\n this.allowedScopes = allowedScopes.map((allowedScope) => {\n // in a hybrid saas environment, the actual scope is appended after 'fqs://'\n const parts = allowedScope.split('fqs://');\n const host = parts[0];\n\n // if nothing comes after fqs://, simply use the host as the scope\n const scope = (parts.length > 1 && parts[1]) ? parts[1] : host;\n\n // make :443 port optional in matching\n const hostWithOptionalPort = host.replace(':443', '(:443)?');\n\n return {\n scope,\n regEx: new RegExp(hostWithOptionalPort, 'i'), // case-insensitive match\n };\n });\n\n // used to cached in-memory version of the token for each scope\n this.cachedTokenPromises = {};\n\n // used to keep track of which token is currently invalid\n this.invalidateTokenPromises = {};\n }\n\n // the following static getters are used by unit tests\n static get skewTolerance() {\n return SKEW_TOLERANCE;\n }\n\n /**\n * Get the authorization token header either from cache or from the client hosting the main application.\n *\n * @param client the client associated with the main application\n * @returns {Promise}\n */\n getAuthHeader(client, scope) {\n // cache the promise for getting the token so we don't make multiple calls to get the access token\n let cachedTokenPromise = this.cachedTokenPromises[scope];\n\n if (!cachedTokenPromise) {\n const cachedTokenUrl = ImplicitFlowHandlerPlugin.getCachedTokenUrl(scope);\n\n // first try retrieving the cached token from the state cache\n cachedTokenPromise = this.stateCache.get(cachedTokenUrl).then((cachedToken) => {\n if (cachedToken) {\n return cachedToken;\n }\n\n // post a message to the main application to get the access token\n const msg = {\n method: 'vbRefreshImplicitFlowAccessToken',\n args: [scope],\n };\n return Utils.postMessage(client, msg)\n .then(token => this.cacheAuthToken(cachedTokenUrl, token));\n }).catch((err) => {\n // log the error for debugging purpose\n console.log(err);\n\n // delete the promise if there's any error so we don't cache the failure state\n delete this.cachedTokenPromises[scope];\n });\n\n this.cachedTokenPromises[scope] = cachedTokenPromise;\n }\n\n return cachedTokenPromise.then((cachedToken) => {\n if (cachedToken) {\n if (Utils.checkJwtExpiration(cachedToken.expiration, SKEW_TOLERANCE)) {\n // the token has expired, refresh it\n return this.refreshAuthHeader(client, scope);\n }\n\n // return the actual token\n return cachedToken.token;\n }\n\n return null;\n });\n }\n\n /**\n * Invalidate and refresh the cached auth header.\n *\n * @param client the client associated with the main application\n * @returns {Promise.}\n */\n refreshAuthHeader(client, scope) {\n let invalidateTokenPromise = this.invalidateTokenPromises[scope];\n\n if (!invalidateTokenPromise) {\n const cachedTokenUrl = ImplicitFlowHandlerPlugin.getCachedTokenUrl(scope);\n\n invalidateTokenPromise = this.stateCache.delete(cachedTokenUrl).then(() => {\n delete this.cachedTokenPromises[scope];\n\n return this.getAuthHeader(client, scope).then((authHeader) => {\n delete this.invalidateTokenPromises[scope];\n\n return authHeader;\n });\n });\n\n this.invalidateTokenPromises[scope] = invalidateTokenPromise;\n }\n\n return invalidateTokenPromise;\n }\n\n /**\n * Match the given url to an allowed scope and return the matched scope.\n *\n * @param url the url to match\n * @returns {string}\n */\n matchScope(url) {\n const result = this.allowedScopes.find(scope => url.match(scope.regEx));\n return result ? result.scope : null;\n }\n\n /**\n * Return an URL for the given scope that can be used for caching the authorization header\n *\n * @param scope the scope for the authorization header\n * @returns {string}\n */\n static getCachedTokenUrl(scope) {\n return `${scope}${IMPLICIT_FLOW_CACHED_TOKEN}`;\n }\n\n /**\n * The cached token is a wrapped version of the JWT token containing the extracted expiration\n * time and calculated server skew. This method will return a promise that resolves to the\n * wrapped token.\n *\n * @param cacheTokenUrl the url used to cache the token\n * @param token the JWT token\n * @returns {Promise}\n */\n cacheAuthToken(cachedTokenUrl, token) {\n const expiration = Utils.extractJwtExpiration(token);\n const cachedToken = {\n token,\n expiration,\n };\n\n return this.stateCache.put(cachedTokenUrl, cachedToken).then(() => cachedToken);\n }\n\n handleRequestHook(request, client) {\n const authenticationType = request.headers.get(Constants.AUTHENTICATION_TYPE_HEADER);\n\n if (authenticationType === Constants.AuthenticationType.IMPLICIT) {\n const headers = request.headers;\n\n // look up the scope this request falls under\n const matchedScope = this.matchScope(request.url);\n\n if (matchedScope) {\n return this.getAuthHeader(client, matchedScope).then((authHeader) => {\n // BUFP-26511: use an alternate name for the authorization header if provided\n const altAuthHeaderName = headers.get(Constants.ALT_AUTHORIZATION_HEADER_NAME);\n const authHeaderName = altAuthHeaderName || 'Authorization';\n\n headers.set(authHeaderName, authHeader);\n });\n }\n // else do nothing and let it fail\n }\n\n return Promise.resolve();\n }\n }\n\n return ImplicitFlowHandlerPlugin;\n });\n\n","'use strict';\n\ndefine('vbsw/private/plugins/mobileAuthHandlerPlugin',[\n 'vbsw/api/fetchHandlerPlugin',\n 'vbsw/private/plugins/authHeaderHandlerPlugin',\n 'urijs/URI',\n 'vbsw/private/constants',\n 'vbc/private/constants',\n 'vbsw/private/utils'],\n(FetchHandlerPlugin, AuthHeaderHandlerPlugin, URI, Constants, CommonConstants, Utils) => {\n /**\n * Handler plugin for appending Authorization header for Mobile.\n */\n class MobileAuthHandlerPlugin extends FetchHandlerPlugin {\n /**\n * Constructor.\n *\n * @param context\n * @param params an object containing all the headers to be appended to the request and allowed scopes\n */\n constructor(context, params) {\n super(context);\n\n // make :443 port optional in matching\n // case-insensitive match\n this.currentUserUrl = params.currentUserUrl || '';\n this.currentUserUrlRegEx = new RegExp(this.currentUserUrl.replace(':443', '(:443)?'), 'i');\n\n const allowedScopes = params.allowedScopes || [];\n\n this.allowedScopes = allowedScopes.map((scope) => {\n // make :443 port optional in matching\n const scopeWithOptionalPort = scope.replace(':443', '(:443)?');\n\n return {\n scope,\n regEx: new RegExp(scopeWithOptionalPort, 'i'), // case-insensitive match\n };\n });\n\n // the application scope is used for determining whether the\n // authoriziation token needs to be added for direct rest calls\n this.appScopeRegEx = new RegExp(Utils.getRegexForAppScope(this.fetchHandler.scope));\n\n // in mobile case, the following plugin is only needed for the anonymous case\n this.authHeaderHandlerPlugin = new AuthHeaderHandlerPlugin(context, { isAnonymous: true });\n }\n\n /**\n * Match the given url to an allowed scope and return the matched scope.\n *\n * @param url the url to match\n * @returns {string}\n */\n matchScope(url) {\n const result = this.allowedScopes.find((scope) => url.match(scope.regEx));\n return result ? result.scope : null;\n }\n\n /**\n * Append the Authorization header.\n *\n * @param request the request to which to append the header\n * @param client the client for the originator of the request\n */\n handleRequestHook(request, client) {\n const isAnonymousAccess = request.headers.get(CommonConstants.Headers.ALLOW_ANONYMOUS_ACCESS_HEADER) === 'true';\n\n if (isAnonymousAccess) {\n return this.authHeaderHandlerPlugin.handleRequestHook(request);\n }\n\n const authenticationType = request.headers.get(Constants.AUTHENTICATION_TYPE_HEADER);\n\n if (authenticationType === Constants.AuthenticationType.BASIC\n || authenticationType === Constants.AuthenticationType.ORACLE_CLOUD\n || (authenticationType === Constants.AuthenticationType.DIRECT && request.url.match(this.appScopeRegEx))\n || (authenticationType === Constants.AuthenticationType.OAUTH && this.matchScope(request.url))\n || request.url.match(this.currentUserUrlRegEx)) {\n // since this is not an anonymous access, post a message to the main application to get the security headers\n const msg = {\n method: 'vbGetAuthHeader',\n };\n\n return Utils.postMessage(client, msg).then((headers) => {\n // add the authorization header to the request which could be either basic or bearer depending\n // on whether the application is configured for basic auth or oracle cloud security\n Object.keys(headers).forEach((key) => {\n request.headers.set(key, headers[key]);\n });\n });\n }\n\n return Promise.resolve();\n }\n }\n\n return MobileAuthHandlerPlugin;\n});\n\n","'use strict';\n\ndefine('vbsw/private/plugins/mobileAuthPreprocessorHandlerPlugin',['vbsw/private/plugins/authPreprocessorHandlerPlugin'],\n (AuthPreprocessorHandlerPlugin) => {\n class MobileAuthProprocessHandlerPlugin extends AuthPreprocessorHandlerPlugin {\n constructor(context, params = {}) {\n super(context, params);\n }\n\n enforceCORS() {\n return false;\n }\n\n /**\n * check if we need to use the proxy for http\n * @param request\n * @param infoExtension\n * @returns {boolean|*}\n * @override\n */\n useProxyForProtocol(request, infoExtension) {\n // normally for web, we have to switch 'http' to 'https' so it can make it through to a service worker,\n // and we indicate the switch with a special header.\n //\n // for mobile, the override isn't necessary, so check for a normal 'http:' request.\n return request.url.startsWith('http:') || super.useProxyForProtocol(request, infoExtension);\n }\n\n }\n\n return MobileAuthProprocessHandlerPlugin;\n });\n\n","'use strict';\n\ndefine('vbsw/private/plugins/multiTenantCsrfTokenHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'vbsw/private/constants'],\n (FetchHandlerPlugin, Constants) => {\n /**\n * Name of the request/response header that contains the CSRF token value.\n * @type {string}\n */\n const CSRF_TOKEN_HEADER_NAME = 'X-CSRF-TOKEN';\n\n /**\n * Handler plugin for handling CSRF tokens in multi-tenant environment, e.g. Visual Studio.\n */\n class MultiTenantCsrfTokenHandlerPlugin extends FetchHandlerPlugin {\n constructor(fetchHandler, params = {}) {\n super(fetchHandler);\n\n const { orgId, vbServer } = params;\n if (orgId && vbServer) {\n this.profileUrl = `${vbServer}/${orgId}/api2/profile`;\n this.vbServerRegEx = new RegExp(vbServer);\n } else {\n // organization id is not available - CSRF is turned off\n this.profileUrl = null;\n this.vbServerRegEx = null;\n }\n\n // if set to null, it means CSRF token is not available\n this.vbCsrfToken = undefined;\n }\n\n // used by unit tests\n static get csrfTokenHeader() { return CSRF_TOKEN_HEADER_NAME; }\n\n /**\n * Get the CSRF token.\n *\n * @returns {Promise}\n */\n getCsrfToken() {\n return Promise.resolve().then(() => {\n // only refersh the token if vbCsrfToken is undefined\n if (this.vbCsrfToken === undefined) {\n return this.refreshCsrfToken().then(() => this.vbCsrfToken);\n }\n\n return this.vbCsrfToken;\n });\n }\n\n /**\n * Refresh the CSRF token.\n *\n * @returns {Promise}\n */\n refreshCsrfToken() {\n return Promise.resolve().then(() => {\n if (this.profileUrl) {\n const options = {\n method: 'GET',\n credentials: 'same-origin',\n cache: 'no-cache',\n // add oracle cloud auth type header in case mobile plugin needs to handle this in the future\n headers: {\n [Constants.AUTHENTICATION_TYPE_HEADER]: Constants.AuthenticationType.ORACLE_CLOUD,\n },\n };\n const request = new Request(this.profileUrl, options);\n\n return this.fetchHandler.handleRequest(request).then((response) => {\n this.vbCsrfToken = response.headers.get(CSRF_TOKEN_HEADER_NAME);\n\n return this.vbCsrfToken;\n });\n }\n\n // CSRF token is not available\n return null;\n });\n }\n\n /**\n * Append the CSRF token to the header.\n *\n * @param request the request to which to append the CSRF token\n * @returns {Promise}\n */\n handleRequestHook(request) {\n return Promise.resolve().then(() => {\n // only append the CSRF token if the request url matches the scope\n if (request.method.toUpperCase() !== 'GET'\n && this.vbServerRegEx && request.url.match(this.vbServerRegEx)) {\n return this.getCsrfToken().then((token) => {\n if (token) {\n request.headers.set(CSRF_TOKEN_HEADER_NAME, token);\n }\n });\n }\n\n return undefined;\n });\n }\n\n /**\n * Check the response if we need to refresh the CSRF token and retry the request if we have an invalid token.\n *\n * @param response the response to check for invalid CSRF token and get new token\n * @param request\n * @returns {Promise}\n */\n handleResponseHook(response, request) {\n return Promise.resolve().then(() => {\n // only check for 403 if the original request url matches the vb server url\n if (response.status === 403 && request.method.toUpperCase() !== 'GET'\n && this.vbServerRegEx && request.url.match(this.vbServerRegEx)) {\n // refresh the CSRF token and retry\n return this.refreshCsrfToken().then(() => true);\n }\n\n return false;\n });\n }\n }\n\n return MultiTenantCsrfTokenHandlerPlugin;\n });\n\n","'use strict';\n\ndefine('vbsw/private/plugins/resourceChangedPlugin',[\n 'vbsw/api/fetchHandlerPlugin',\n 'vbsw/private/utils',\n 'vbc/private/log',\n],\n(FetchHandlerPlugin, Utils, Log) => {\n /**\n * Notes:\n *\n * this plugin is responsible for handling the requests and responses to the VB server,\n * making sure it has the required request header to identify the current client app version,\n * and checking if the server responds with a 400 and a header indicating that the app resources have changed.\n *\n * When this happens, a message is sent, with the url, error from the server, and the header value.\n */\n const logger = Log.getLogger('/vb/private/plugins/resourceChangedPlugin');\n\n // this is added to all requests to the VB server (if BASE_URL_TOKEN exists).\n const VB_VERSION_ID_HEADER = 'x-vb-application-version'; // can't use \"vb-\", tidy/authPostProcessorPlugin remove those\n\n // this will be in the response, if the app has been re-staged (boolean)\n const VB_CHANGED_HEADER = 'x-vb-changed-header';\n\n // BUFP-33076; when reloading a PWA that has been restaged, app-flow.json and app.css are requested by the\n // old service worker, and thus those have the old header value, and the app gets stuck, and the service worker never\n // gets updated. Skipping those files allows PWA to get the newer service worker and resources.\n const DEFAULT_SKIP_REGEX = /(app-flow.json|\\.css)$/;\n\n class ResourceChangedPlugin extends FetchHandlerPlugin {\n constructor(context, params = {}) {\n super(context);\n this.contextRoot = params.contextRoot || '/';\n // if versionId is not truthy, this plugin will not do anything\n this.versionId = params.versionId;\n\n // allow for an override, but should never happen (and don't document)\n this.skipRegex = params.skipRegex || DEFAULT_SKIP_REGEX;\n\n // similar to csrfTokenHandlerPlugin, we need to make sure we only check resources in the app\n // bufp-38121: need to skip BO's in other apps:\n // for example, we would want to skip this URL (assuming 'notThisApp' is, well, not this app:\n // https://masterdev-vboci.integration.test.ocp.oc-test.com/ic/builder/rt/notThisApp/live/resources/data/AnonRef\n const reg = Utils.getRegexForAppScope(this.fetchHandler.scope, this.fetchHandler.config);\n this.scopeRegEx = new RegExp(reg);\n }\n\n\n /**\n * sets a special header on all requests to the VB server, which contains a app version identifier\n * @param request\n * @returns {Promise.}\n */\n handleRequestHook(request) {\n return Promise.resolve().then(() => {\n if (this.shouldProcess(request)) {\n request.headers.set(VB_VERSION_ID_HEADER, this.versionId);\n }\n return null;\n });\n }\n\n\n /**\n * looks for responses from the VB server, for a special header indicating the app has been restaged/republished\n * @param response\n * @param origRequest\n * @param request\n * @param client\n * @returns {*}\n */\n handleResponseHook(response, origRequest, request, client) {\n return Promise.resolve().then(() => {\n if (this.shouldProcess(request)) {\n return ResourceChangedPlugin.checkIfResourceChanged(request.url, response, client);\n }\n return false;\n });\n }\n\n /**\n * should we handle this request or response?\n * @param request\n * @returns {*|boolean}\n * @private\n */\n shouldProcess(request) {\n return this.versionId && request.url.match(this.scopeRegEx) && !this.skipRegex.test(request.url);\n }\n\n /**\n *\n * @param url\n * @param response\n * @param client\n */\n static checkIfResourceChanged(url, response, client) {\n return Promise.resolve().then(() => {\n const hasChangedValue = response.headers.get(VB_CHANGED_HEADER);\n if (response.status === 400 && hasChangedValue && hasChangedValue !== 'false') {\n return ResourceChangedPlugin.fireResourceChangeEvent(url, response, client);\n }\n return null;\n });\n }\n\n /**\n * fire an event that the Application listens for\n * @param originalUrl\n * @param response\n * @param client\n * @returns {Promise.}\n * @private\n */\n static fireResourceChangeEvent(originalUrl, response, client) {\n const clone = response.clone();\n\n return clone.text()\n .then((body) => ({\n method: 'vbResourceChanged',\n args: [originalUrl, body, response.headers.get(VB_CHANGED_HEADER)],\n }))\n .then((msg) => Utils.postMessage(client, msg))\n .then((result) => {\n logger.fine('fireResourceChangeEvent message complete');\n return result;\n })\n .catch((error) => {\n logger.error('fireResourceChangeEvent message error', error);\n return false;\n });\n }\n }\n\n return ResourceChangedPlugin;\n});\n\n","'use strict';\n\ndefine('vbsw/private/plugins/sessionExpirePlugin',['vbsw/api/fetchHandlerPlugin', 'vbsw/private/utils'],\n (FetchHandlerPlugin, Utils) => {\n /**\n * Notes:\n * SSO login e.g. https://login.dc1.c9dev1.oraclecorp.com/oam/server/obrareq.cgi\n * does not allow CORS requests (missing Access-Control-Allow-Origin: * header)\n *\n * So if a request is redirected to SSO login by cloud gate the request end up trigger\n * #handleErrorHook. In its context it is not possibly to detect why the error happened\n * (i.e. it is a consequence of a resource being redirected to non-cors page)\n * so we need to use some more tricks to figure out the cause of the error.\n */\n class SessionExpirePlugin extends FetchHandlerPlugin {\n constructor(context, params = {}) {\n super(context);\n this.contextRoot = params.contextRoot || '/';\n this.idcsHost = params.idcsHost;\n\n // used by unit tests\n this.backendRootUrl = params.backendRootUrl;\n\n // strip off the port number, 443, if any so we can match requests without the port number\n if (this.idcsHost) {\n const match = this.idcsHost.match(/^(.+):\\d+/);\n if (match && match.length >= 2) {\n this.idcsHost = match[1];\n }\n }\n\n this.isExternalCompute = !!this.idcsHost;\n }\n\n handleResponseHook(response, origRequest, request, client) {\n const vbcsBackendUrl = this._getBackendRootURL();\n\n // X-AppBuilder-Unauthorized is for internal compute only\n if (response.status === 401\n && request.url.startsWith(vbcsBackendUrl)\n && (this.isExternalCompute || response.headers.get('X-AppBuilder-Unauthorized'))) {\n // got a 401 from a request to the VBCS backend which is likely due to session expiration\n return this._fireSessionExpiredEvent(request.url, client);\n }\n\n if (this.isExternalCompute) {\n if (response.type === 'opaque'\n && response.ok === false\n && response.status === 0\n && request.url.startsWith(vbcsBackendUrl)\n && request.mode === 'no-cors') {\n // redirected response to IDCS refresh session resource in no-cors mode\n return this._fireSessionExpiredEvent(request.url, client);\n }\n\n if (response.type === 'cors'\n && response.redirected === true\n && response.status === 200\n && response.ok === true\n && response.url.startsWith(this.idcsHost)\n && request.url.startsWith(vbcsBackendUrl)\n && request.mode === 'cors') {\n // redirected response to IDCS refresh session resource in cors mode\n return this._fireSessionExpiredEvent(origRequest.url, client);\n }\n }\n\n return Promise.resolve(false);\n }\n\n _getBackendRootURL() {\n return this.backendRootUrl ? this.backendRootUrl : `${self.location.origin}${this.contextRoot}`;\n }\n\n handleErrorHook(error, origRequest, modifiedRequest, client) {\n if (this.isExternalCompute) {\n return Promise.resolve(false);\n }\n\n // for internal compute only\n //\n // an error has occurred - there's no detail whatsoever so we need to figure out\n // if this could be caused by the expired session. In this case cloud gate responses\n // with 302 and redirects to SSO login or Session refresh resource.\n // At least in the first case the server does not return CORS headers so browser\n // does not allow the request to go through. To check if this is the case lets initiate\n // fetch with redirect = manual so we can then detect if the error was caused by redirect that has failed\n\n // for now we're only interested in detecting session expire on requests to our own (VBCS) resources\n const rootResource = this._getBackendRootURL();\n if (!modifiedRequest.url.startsWith(rootResource)) {\n return Promise.resolve(false);\n }\n\n // XXX for testing only !!!! this should cause the code to think the root resource has redirected as well and\n // hence initiate the refresh flow const\n // rootResource = 'http://localhost:8080/resources/application/redirectmedifferentdomain';\n\n // request the root resource of the domain to test if it returns something or is redirected again\n return fetch(rootResource, {\n redirect: 'manual', // manual mode so we don't get through the redirects\n }).then((response) => {\n if (response.status === 200 && !response.redirected) {\n // main page responded properly so the error has likely a different cause than session expiry\n // let the erroneous response fall through\n } else if (response.type === 'opaqueredirect') {\n // well we got opaque redirect response for request with manual redirect ->\n // that means the root resource has been redirected. We can't really figure out where\n // but it's likely this is session expiry so lets initiate the refresh flow.\n return this._fireSessionExpiredEvent(origRequest.url, client);\n } else {\n // some other state we don't understand or expect so just\n // let the erroneous response fall through\n }\n return false;\n }).catch((err) => {\n // the test request to root domain resource has failed, this is suspicious\n // let the erroneous response fall through\n console.error('A testing request to domain root resource', rootResource,\n 'has failed even if redirect mode had been set to manual', err);\n // let the erroneous response fall through\n return false;\n });\n }\n\n /**\n * Fires a \"session expired\" event to the main thread and waits for its response.\n *\n * The semantic of the expected response obtained from #postMessage is following:\n * true - the session has been refreshed - the request should be retried\n * false - the session couldn't be refreshed - just give up\n *\n * @param originalUrl\n * @param client\n * @private\n */\n _fireSessionExpiredEvent(originalUrl, client) {\n console.log('session expire detected for', originalUrl);\n const msg = {\n method: SessionExpirePlugin.vbSessionExpired,\n args: [originalUrl],\n };\n return Utils.postMessage(client, msg)\n .then((result) => {\n if (result) {\n console.log('SSO session has been successfully refreshed');\n } else {\n console.warn('Couldn\\'t refresh SSO session');\n }\n return result;\n })\n .catch((error) => {\n console.error('An attempt to refresh SSO session has failed:', error);\n\n // got an error so there's no point retrying\n return false;\n });\n }\n\n }\n\n /**\n * Name of the event that's being fired by this plugin to the main thread.\n * @type {string}\n */\n SessionExpirePlugin.vbSessionExpired = 'vbSessionExpired';\n\n return SessionExpirePlugin;\n });\n\n\n","'use strict';\n\ndefine('vbsw/private/plugins/sessionTrackingHandlerPlugin',['vbsw/api/fetchHandlerPlugin', 'vbsw/private/utils'], (FetchHandlerPlugin, Utils) => {\n /*\n * the request header for enabling session tracking, and must be set to 'enabled' on the service.\n * When 'enabled, the VB_SESSION_TRACKING_HEADER and VB_SESSION_TRACKING_HEADER are added to the requests.\n * example:\n * \"x-oracle-abcs-userid\": \"franky.fallout@abxyz.com\",\n * \"x-oracle-abcs-sessionid\": \"1e26ce77-38b7-462a-969b-b9f3a029c0ca\",\n *\n * VB_REQUEST_TRACKING_HEADER is never sent, it is always stripped from the request\n * see BUFP-23166 / BugDB: 28298568\n */\n const VB_REQUEST_TRACKING_HEADER = 'vb-day-session-tracking';\n\n // the name of the cookie for storing information about the tracked session\n const VB_SESSION_TRACKING_COOKIE = 'VBCS_SESSION_TRACKING';\n\n // the name of the header used to send session tracking information\n const VB_SESSION_TRACKING_HEADER = 'X-Oracle-ABCS-SessionId';\n\n // the name of the header used to send session tracking user id\n const VB_SESSION_TRACKING_USER_HEADER = 'X-Oracle-ABCS-UserId';\n\n // delimiter used to separate session guid and user id\n const VB_SESSION_TRACKING_HEADER_DELIMITER = '@@@';\n\n // default cookie duration in hours\n const DEFAULT_COOKIE_DURATION = 24;\n\n /**\n * Handler plugin for handling session tracking cookie.\n */\n class SessionTrackingHandlerPlugin extends FetchHandlerPlugin {\n constructor(context, params) {\n super(context, params);\n\n this.userId = params.userId;\n\n // computed cookie duration in milliseconds\n this.cookieDuration = (params.cookieDuration || DEFAULT_COOKIE_DURATION) * 60 * 60 * 1000;\n\n this.cachedSessionCookiePromise = null;\n this.refreshSessionCookiePromise = null;\n }\n\n // used by unit tests\n static get requestTrackingHeader() { return VB_REQUEST_TRACKING_HEADER; }\n static get sessionTrackingHeader() { return VB_SESSION_TRACKING_HEADER; }\n static get sessionTrackingUserHeader() { return VB_SESSION_TRACKING_USER_HEADER; }\n static get sessionTrackingHeaderDelimiter() { return VB_SESSION_TRACKING_HEADER_DELIMITER; }\n\n /**\n * Get the session tracking header.\n *\n * @param client the client associated with the main application\n * @returns {Promise} returning the cookie header value\n */\n getSessionTrackingHeader(client) {\n if (!this.cachedSessionCookiePromise) {\n this.cachedSessionCookiePromise = Utils.getCookie(client, VB_SESSION_TRACKING_COOKIE)\n .then((sessionCookie) => {\n if (!sessionCookie) {\n return this.createSessionTrackingCookie(client);\n }\n\n return sessionCookie;\n });\n }\n\n return this.cachedSessionCookiePromise.then((sessionCookie) => {\n // if a different user is logged in or the cookie has expired, refresh the session tracking cookie\n if (sessionCookie.userId !== this.userId ||\n sessionCookie.expires < Utils.getEpochTime(true)) {\n // use refreshSessionCookiePromise to prevent refreshing the session cookie multiple times\n if (!this.refreshSessionCookiePromise) {\n // recreate the session cookie\n this.refreshSessionCookiePromise = this.createSessionTrackingCookie(client).then(() => {\n // clear the cacheSessionCookiePromise so we can refetch it\n this.cachedSessionCookiePromise = null;\n\n // refetch the session cookie\n return this.getSessionTrackingHeader(client).then((sessionTrackingHeader) => {\n // clear refreshSessionCookiePromise for the next refresh\n this.refreshSessionCookiePromise = null;\n\n return sessionTrackingHeader;\n });\n });\n }\n\n return this.refreshSessionCookiePromise;\n }\n\n return sessionCookie.header;\n });\n }\n\n /**\n * Create a new session tracking cookie.\n *\n * @param client the client associated with the main application\n * @returns {Promise<{name: string, session, userId: *, header: string, expires: *}>}\n */\n createSessionTrackingCookie(client) {\n const newSessionCookie = {\n userId: this.userId,\n header: `${Utils.generateUID()}${VB_SESSION_TRACKING_HEADER_DELIMITER}${this.userId}`,\n expires: Utils.getEpochTime(true) + this.cookieDuration,\n };\n\n return Utils.setCookie(client, VB_SESSION_TRACKING_COOKIE, newSessionCookie)\n .then(() => newSessionCookie);\n }\n\n handleRequestHook(request, client) {\n const requested = request.headers.get(VB_REQUEST_TRACKING_HEADER);\n if (requested === 'enabled') {\n const headers = request.headers;\n\n return this.getSessionTrackingHeader(client).then((sessionTrackingHeader) => {\n if (sessionTrackingHeader) {\n // set the session track header\n // headers.set(VB_SESSION_TRACKING_HEADER, sessionTrackingHeader);\n\n // for now, we need to split the header into two separate headers, one for the\n // session id and the other for the user id until the new version of the engagement\n // cloud can support the single header\n const splitHeaders = sessionTrackingHeader.split(VB_SESSION_TRACKING_HEADER_DELIMITER);\n if (splitHeaders.length === 2) {\n headers.set(VB_SESSION_TRACKING_HEADER, splitHeaders[0]);\n headers.set(VB_SESSION_TRACKING_USER_HEADER, splitHeaders[1]);\n }\n }\n });\n }\n\n return Promise.resolve();\n }\n }\n\n return SessionTrackingHandlerPlugin;\n});\n\n","'use strict';\n\ndefine('vbsw/private/plugins/tokenRelayHandlerPlugin',[\n 'vbsw/api/fetchHandlerPlugin', 'vbsw/private/utils', 'vbsw/private/constants',\n 'vbsw/private/plugins/authPreprocessorHandlerPlugin',\n], (FetchHandlerPlugin, Utils, Constants, AuthPreprocessorHandlerPlugin) => {\n const VB_TOKEN_RELAY_URL_HEADER = 'vb-token-relay-url';\n const VB_TOKEN_RELAY_AUTHENTICATION_HEADER = 'vb-token-relay-authentication';\n\n // skew tokerance for the token expiration time\n const SKEW_TOLERANCE = 100;\n\n /**\n * Handler plugin for handling token relay.\n */\n class TokenRelayHandlerPlugin extends FetchHandlerPlugin {\n constructor(context) {\n super(context);\n\n // used to cached in-memory version of the token for each token relay url\n this.cachedTokenPromises = {};\n\n // used to keep track of which token is currently invalid\n this.invalidateTokenPromises = {};\n }\n\n // the following static getters are used by unit tests\n static get skewTolerance() {\n return SKEW_TOLERANCE;\n }\n\n static get tokenRelayUrlHeader() {\n return VB_TOKEN_RELAY_URL_HEADER;\n }\n\n static get tokenRelayAuthenticationHeader() {\n return VB_TOKEN_RELAY_AUTHENTICATION_HEADER;\n }\n\n /**\n * This method is meant to be subclassed to add additional headers specified in tokenRelayAuthentication to\n * the token relay request.\n *\n * @param tokenRelayRequest the token relay request to add the headers\n * @param tokeRelayAuthentication contains additional headers to add to request\n * @param requestUrl the url for the original request\n */\n processTokenRelayAuthentication(request, tokeRelayAuthentication, requestUrl) {}\n\n /**\n * Get the authorization token header either from cache or from the token relay service.\n *\n * @param tokenRelayUrl the url for the token relay service\n * @param tokenRelayAuthentication additional authentication metadata for token relay\n * @param requestUrl the url for the original request\n * @returns {Promise}\n */\n getAuthHeader(tokenRelayUrl, tokeRelayAuthentication, requestUrl) {\n // cache the promise for getting the token so we don't make multiple calls to the token relay service\n let cachedTokenPromise = this.cachedTokenPromises[tokenRelayUrl];\n\n if (!cachedTokenPromise) {\n // first try retrieving the token from the state cache\n cachedTokenPromise = this.stateCache.get(tokenRelayUrl).then((cachedToken) => {\n if (cachedToken) {\n return cachedToken;\n }\n\n const options = {\n method: 'POST',\n credentials: 'same-origin',\n cache: 'no-cache', // instruct token relay to fetch a fresh token\n // need to add oracle cloud auth type header so mobile plugin knows to handle this\n headers: {\n [Constants.AUTHENTICATION_TYPE_HEADER]: Constants.AuthenticationType.ORACLE_CLOUD,\n },\n };\n const tokenRelayRequest = new Request(tokenRelayUrl, options);\n\n // process additional metadata specified in tokeyRelayAuthentication\n this.processTokenRelayAuthentication(tokenRelayRequest, tokeRelayAuthentication, requestUrl);\n\n // use the fetchHandler to fetch the token so the request can be modified by the plugins such as\n // csrfTokenHandlerPlugin\n return this.fetchHandler.handleRequest(tokenRelayRequest).then((response) => {\n if (response.ok) {\n return response.json().then(token => this.cacheAuthToken(tokenRelayUrl, token));\n }\n\n throw new Error(response.statusText);\n });\n }).catch((err) => {\n // log the error for debugging purpose\n console.error(err);\n\n // delete the promise if there's any error so we don't cache the failure state\n delete this.cachedTokenPromises[tokenRelayUrl];\n });\n\n this.cachedTokenPromises[tokenRelayUrl] = cachedTokenPromise;\n }\n\n return cachedTokenPromise.then((cachedToken) => {\n if (cachedToken) {\n if (Utils.checkJwtExpiration(cachedToken.expiration, SKEW_TOLERANCE)) {\n // the token has expired, invalidate it and fetch a new one\n return this.invalidateCachedToken(tokenRelayUrl).then(() => {\n console.log('Token for', tokenRelayUrl, 'has expired. Fetching a new token.');\n return this.getAuthHeader(tokenRelayUrl, tokeRelayAuthentication, requestUrl);\n });\n }\n\n // return the actual auth header\n return cachedToken.token.authenticationHeader;\n }\n\n return null;\n });\n }\n\n /**\n * Invalidate the cached token for the given tokenRelayUrl. This method will return a promise that will\n * resolve to true if a request should be retried and false otherwise.\n *\n * @param tokenRelayUrl the url for the cached token to invalidate\n * @returns {Promise.}\n */\n invalidateCachedToken(tokenRelayUrl, wwwAuthHeader) {\n let invalidateTokenPromise = this.invalidateTokenPromises[tokenRelayUrl];\n\n if (!invalidateTokenPromise) {\n // first, delete the token from the cache\n invalidateTokenPromise = this.stateCache.delete(tokenRelayUrl).then(() => {\n // BUFP-21346: The invalidate request currently does not work so we are bypassing it and relying on always\n // fetching a fresh token using the no-cache header.\n if (wwwAuthHeader) {\n const body = {\n headers: {\n 'WWW-Authenticate': wwwAuthHeader,\n },\n };\n\n const options = {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n };\n const request = new Request(`${tokenRelayUrl}/invalidate`, options);\n\n // make the invalidate request to the token relay service\n return this.fetchHandler.handleRequest(request)\n // only retry if we get a status 307\n .then(response => response.status === 307)\n .catch((err) => {\n // log the error and don't retry\n console.error(err);\n return false;\n });\n }\n\n return Promise.resolve(true);\n });\n\n this.invalidateTokenPromises[tokenRelayUrl] = invalidateTokenPromise;\n }\n\n return invalidateTokenPromise.then((retry) => {\n // delete the invalidateTokenPromise\n delete this.invalidateTokenPromises[tokenRelayUrl];\n\n // delete the cachedTokenPromise so the token can be refreshed\n delete this.cachedTokenPromises[tokenRelayUrl];\n\n return retry;\n });\n }\n\n /**\n * The cached token is a wrapped version of the JWT token containing the extracted expiration\n * time and calculated server skew. This method will return a promise that resolves to the\n * wrapped token.\n *\n * @param tokenRelayUrl the url used to fetch the token\n * @param token the JWT token\n * @returns {Promise}\n */\n cacheAuthToken(tokenRelayUrl, token) {\n const expiration = Utils.extractJwtExpiration(token.authenticationHeader);\n const cachedToken = {\n token,\n expiration,\n };\n\n return this.stateCache.put(tokenRelayUrl, cachedToken).then(() => cachedToken);\n }\n\n /**\n * Append the token from the token relay service\n *\n * @param request the request to which to append the CSRF token\n * @returns {Promise}\n */\n handleRequestHook(request) {\n // get the url for the token relay service from the request header\n const tokenRelayUrl = request.headers.get(Constants.TOKEN_RELAY_URL_HEADER);\n const tokenRelayAuthHeader = request.headers.get(Constants.TOKEN_RELAY_AUTH_HEADER);\n const tokenRelayAuthentication = tokenRelayAuthHeader ? JSON.parse(tokenRelayAuthHeader) : undefined;\n\n if (tokenRelayUrl) {\n return this.getAuthHeader(tokenRelayUrl, tokenRelayAuthentication, request.url).then((authHeader) => {\n if (authHeader) {\n // console.log(`authToke: ${token.authenticationHeader}`);\n const headers = request.headers;\n\n headers.set('Authorization', authHeader);\n }\n\n // failed to get the token and just let the original request fail\n return Promise.resolve();\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Handles 401 response as result of a non-JWT token expiring. The returned promise will resolve\n * to true if the request needs to be retried and false otherwise.\n *\n * @param response\n * @param origRequest\n * @param request\n * @param client\n * @returns {Promise}\n */\n handleResponseHook(response, origRequest, request, client) {\n return Promise.resolve().then(() => {\n if (response.status === 401) {\n const authHeader = request.headers.get('Authorization');\n\n if (authHeader) {\n // extract the token relay url from the request\n const tokenRelayUrl = AuthPreprocessorHandlerPlugin.getTokenRelayUrlFromRequest(origRequest);\n\n if (tokenRelayUrl) {\n const cachedTokenPromise = this.cachedTokenPromises[tokenRelayUrl] || Promise.resolve();\n\n return cachedTokenPromise.then((cachedToken) => {\n // if the auth header and the cached header match, that means the token has expired\n // so invalidate the token and retry the request\n if (cachedToken\n && cachedToken.token.authenticationHeader === authHeader) {\n return this.invalidateCachedToken(tokenRelayUrl).then(() => true);\n }\n\n return false;\n });\n }\n }\n }\n\n return false;\n });\n }\n }\n\n return TokenRelayHandlerPlugin;\n});\n\n","\n(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n('/**\\n Copyright (c) 2015, 2018, Oracle and/or its affiliates.\\n The Universal Permissive License (UPL), Version 1.0\\n*/\\n\\n/* Pass down oj-flex set on oj-vb-content to the nested oj-module */\\noj-vb-content.oj-flex > oj-module {\\n box-sizing: border-box;\\n display: flex;\\n flex: auto;\\n flex-wrap: wrap;\\n}oj-vb-list-item .vbcs-list-item {\\n padding: 5px;\\n}\\n\\noj-vb-list-item .vbcs-list-item__title1,\\noj-vb-list-item .vbcs-list-item__value1 {\\n font-size: 14px;\\n}\\n\\noj-vb-list-item .vbcs-list-item__title2,\\noj-vb-list-item .vbcs-list-item__value2 {\\n color: #737373;\\n font-size: 12px;\\n}\\n\\noj-vb-list-item .vbcs-list-item__image {\\n width: 32px;\\n height: 32px;\\n}\\n\\n/* Special styling for mobile page templates only */\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item {\\n /* This will make the default single item height as 49px */\\n padding: unset;\\n min-height: 32px;\\n}\\n\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item p {\\n margin-bottom: 0;\\n}\\n\\n/* use default font (inherited or initial) value for the title or the end text*/\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item__title1,\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item__value1,\\noj-ext-mobile-page-template oj-vb-list-item *[slot=\\\"title1\\\"],\\noj-ext-mobile-page-template oj-vb-list-item *[slot=\\\"value1\\\"] {\\n font-size: unset;\\n}\\n\\n/* use a smaller and lighter font for the secondary items in the row*/\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item__title2,\\noj-ext-mobile-page-template oj-vb-list-item .vbcs-list-item__value2,\\noj-ext-mobile-page-template oj-vb-list-item *[slot=\\\"title2\\\"],\\noj-ext-mobile-page-template oj-vb-list-item *[slot=\\\"value2\\\"] {\\n /* Use CSS variables from JET */\\n color: var(--oj-secondary-text-color);\\n font-size: var(--oj-small-font-size);\\n}\\n\\n/* Override JET android theme to enable drill down in android.\\n Many of the android native apps (for e.g. settings) have the drilldown icons */\\noj-ext-mobile-page-template.oj-ext-android-theme oj-vb-list-item .oj-listview-drill-icon {\\n display: unset;\\n color: var(--oj-neutral-color11);\\n}\\n\\noj-ext-mobile-page-template.oj-ext-android-theme oj-vb-list-item .oj-listview-drill-icon:before {\\n content: \\\"\\\\e612\\\";\\n}.messagebar-slide-up, .messagebar-slide-down {\\n display: flex;\\n flex: 1 0 auto;\\n /* display: inline-block; */\\n max-height: 0;\\n overflow-y: hidden;\\n -webkit-transition: max-height 1s ease-in-out;\\n -moz-transition: max-height 1s ease-in-out;\\n -o-transition: max-height 1s ease-in-out;\\n transition: max-height 1s ease-in-out;\\n width: 100%;\\n}\\n\\n.messagebar-slide-down {\\n max-height: 10em;\\n}\\n\\n\\n/**\\n * this class is appended to the component classes\\n */\\n.vb-messages {\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: 100%;\\n}\\n\\n\\n.messagebar-hidden {\\n display: none;\\n}\\n\\n.messagebar-pull-right {\\n float: right; }\\n\\n.messagebar-pull-left {\\n float: left; }\\n\\n#messagebar-confirmation-error-note {\\n position: relative;\\n z-index: 112;\\n width: 100%;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n -ms-flex-direction: column;\\n flex-direction: column; }\\n\\n.messagebar-confirmation-error-note {\\n width: 100%;\\n max-width: 100%;\\n position: relative;\\n line-height: 35px;\\n z-index: 113;\\n /* vb-app-skeleton display: none; */\\n border-bottom: 1px solid transparent; }\\n\\n.messagebar-confirmation-error-note.messagebar-confirmation-note {\\n background-color: #d6f1de;\\n border-color: #c3ebcf; }\\n\\n/* todo: need to fix this */\\n.messagebar-confirmation-error-note-image {\\n margin-top: 10px;\\n}\\n\\n.messagebar-confirmation-error-note.messagebar-info-note {\\n background-color: #d9edf8;\\n border-color: #bfe4f8; }\\n\\n.messagebar-confirmation-error-note.messagebar-error-note {\\n background-color: #ffdfdf;\\n border-color: #ffc5c5; }\\n\\n\\n.messagebar-confirmation-error-note.messagebar-warning-note {\\n background-color: #ffeaca;\\n border-color: #ffe0b0; }\\n\\n\\n.messagebar-confirmation-error-note .messagebar-confirmation-error-note-wrap {\\n max-width: 1395px;\\n margin: 0px auto 0px auto;\\n min-height: 35px;\\n position: relative; }\\n\\n.messagebar-confirmation-error-note .messagebar-confirmation-error-note-wrap:before {\\n position: absolute;\\n top: 3px; }\\n\\n@media screen and (max-width: 1440px) {\\n .messagebar-confirmation-error-note .messagebar-confirmation-error-note-wrap {\\n margin: 0px 10px 0px 10px; }\\n}\\n\\n.messagebar-confirmation-error-note .messagebar-confirmation-error-note-text {\\n margin-left: 20px; /** 27px; **/\\n -ms-flex: 1;\\n flex: 1;\\n max-height: 200px;\\n overflow-y: auto;\\n font-size: 1rem;\\n color: black; }\\n\\n.messagebar-confirmation-error-note button {\\n margin: 0px; }\\n\\n.messagebar-confirmation-error-note button:not(:last-of-type) {\\n margin-right: 10px; }\\n\\n.messagebar-confirmation-error-note .messagebar-confirmation-error-note-counter {\\n display: inline-block;\\n background-color: white;\\n border-radius: 12px;\\n padding: 4px;\\n line-height: 16px;\\n margin-left: 4px;\\n text-align: right;\\n}\\n\\n.messagebar-confirmation-error-note.messagebar-error-note .messagebar-confirmation-error-note-counter {\\n background-color: #dfbfbf;\\n}\\n\\n.messagebar-confirmation-error-note.messagebar-warning-note .messagebar-confirmation-error-note-counter {\\n background-color: #dfcaaa;\\n}\\n\\n.messagebar-confirmation-error-note.messagebar-confirmation-note .messagebar-confirmation-error-note-counter {\\n background-color: #b6d1be;\\n}\\n\\n.messagebar-confirmation-error-note.messagebar-info-note .messagebar-confirmation-error-note-counter {\\n background-color: #b9cdd8;\\n}\\n\\noj-vb-message-bar .cancel-icon {\\n height: 16px;\\n width: 16px;\\n background-size: 16px 16px;\\n cursor: pointer; }\\n\\noj-vb-message-bar .cancel-icon:before {\\n content: \\\" \\\";\\n height: 16px;\\n width: 16px;\\n display: inline-block;\\n background-repeat: no-repeat;\\n background-image: url(../../src/vb/components/messagebar/images/func_delete_16_sprite.png);\\n background-position: 0px 0px; }\\n\\noj-vb-message-bar .oj-default .cancel-icon:before, .oj-focus-only .cancel-icon:before {\\n background-position: 0px 0px; }\\n\\noj-vb-message-bar .oj-hover .cancel-icon:before, .oj-hover.oj-selected .cancel-icon:before {\\n background-position: -16px 0px; }\\n\\noj-vb-message-bar .oj-active .cancel-icon:before, .oj-selected .cancel-icon:before {\\n background-position: -64px 0px; }\\n\\noj-vb-message-bar .oj-disabled .cancel-icon:before {\\n background-position: -48px 0px; }\\n\\n');\n","\nrequire([\"main\"]);\n","}());"],"file":"visual-runtime.js"}