@finos/legend-application-repl-deployment 11.67.0 → 11.68.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"static/index.546e345a.js","mappings":"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","sources":["webpack://@finos/legend-application-repl-deployment/webpack/runtime/chunk loaded","webpack://@finos/legend-application-repl-deployment/webpack/runtime/create fake namespace object","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/log/LogService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/AbstractPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/log/WebConsole.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/CommonUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/error/ErrorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/error/AssertionUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/network/NetworkUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationEvent.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/SerializationUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/DocumentationService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/ActionState.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/network/TracerService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/search/FuzzySearch.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/search/FuzzySearchAdvancedConfigState.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/AssistantService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/event/EventService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationTelemetry.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationNavigationContextService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/CommandService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/KeyboardShortcutsService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/terminal/Terminal.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/format/FormatterUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/keyboard/KeyBinding.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/utils/LegendStyleProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/utils/ComponentCreatorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/dialog/Modal.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/AlertService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationStoreProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ActionAlert.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/panel/PanelLoadingIndicator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/BlockingAlert.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/icon/Icon.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/NotificationService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/NotificationManager.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/BaseMenu.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/ContextMenu.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/MenuContent.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/markdown/MarkdownTextViewer.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/panel/BlankPanelContent.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/radio-group/BaseRadioGroup.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/popover/BasePopover.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationDocumentation.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/VirtualAssistant.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationComponentFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/terminal/XTerm.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TerminalService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/IdentityService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationColorTheme.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/storage/ApplicationStorage.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/storage/StorageService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TelemetryService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TimeService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationSetting.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/LayoutService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ClipboardService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/NavigationService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/SettingService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/DefaultNavigator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/UserDataService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/compare/StringCompareUtil.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ReleaseNotesService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/util/DownloadHelperServiceWorker.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplication.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/format/MatcherUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/LegendApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/Core_LegendApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPLApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplicationPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPLPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationNavigation.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/BrowserNavigator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/platform/ApplicationPlatform.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/platform/BrowserPlatform.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationPlatformProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/BrowserEnvironmentProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/server/REPLServerClient.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshot.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/Core_HashUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/HashUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/domain/V1_Multiplicity.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/V1_ValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_ClassInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/V1_Variable.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_GraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_RootGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CoreClassInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_Lambda.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_DataTypeValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_Path.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_AbstractAppliedFunction.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/application/V1_AppliedFunction.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_Collection.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_PrimitiveValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDecimal.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CInteger.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CString.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CFloat.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDateTime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CStrictDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CStrictTime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CBoolean.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_AggregateValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_Pair.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_RuntimeInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_ExecutionContextInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_PropertyGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_SubTypeGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_SerializationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_KeyExpression.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_PureList.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSAggregateValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSColumnInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSSortInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSOlapRank.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSOlapAggregation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_ColSpecArray.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_ColSpec.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_RelationStoreAccessor.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/MetaModelConst.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/V1_SourceInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_PathElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_PropertyPathElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/application/V1_AppliedProperty.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/runtime/V1_Runtime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/runtime/V1_PackageableRuntime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_ExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_AnalyticsExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_BaseExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_PackageableElementPtr.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_GenericTypeInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_EnumValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CLatestDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CByteArray.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/MetaModelUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeMetaModelConst.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridClientEngine.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/V1_EngineError.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/execution/ExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQueryBuilder.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridState.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorSortState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/SourceInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/grammar/V1_ParserError.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/EngineError.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorCodeState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_INTERNAL__UnknownExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/execution/INTERNAL__UnknownExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecutionHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/server/models/DataCubeQuery.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeEngine.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQueryAnalyzer.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeState.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/REPLStoreProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/grid/DataCubeGrid.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/autocomplete/CustomSelectorInput.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/editor/DataCubeEditorSortPanel.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/editor/DataCubeEditor.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/DataCube.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/LegendREPLBaseStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/LegendREPLFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/LegendREPLApplication.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/LegendREPLApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/PureLanguage.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/themes/MonacoEditorThemeUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/CodeEditorTheme.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/CodeEditorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/helpers/PureLanguageHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/PureLanguageService.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/Core_LegendREPLApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPL.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/index.js","webpack://@finos/legend-application-repl-deployment/./src/index.tsx","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/autocomplete/CJS__ReactSelect.cjs","webpack://@finos/legend-application-repl-deployment/webpack/bootstrap","webpack://@finos/legend-application-repl-deployment/webpack/runtime/amd options","webpack://@finos/legend-application-repl-deployment/webpack/runtime/compat get default export","webpack://@finos/legend-application-repl-deployment/webpack/runtime/define property getters","webpack://@finos/legend-application-repl-deployment/webpack/runtime/ensure chunk","webpack://@finos/legend-application-repl-deployment/webpack/runtime/global","webpack://@finos/legend-application-repl-deployment/webpack/runtime/hasOwnProperty shorthand","webpack://@finos/legend-application-repl-deployment/webpack/runtime/make namespace object","webpack://@finos/legend-application-repl-deployment/webpack/runtime/node module decorator","webpack://@finos/legend-application-repl-deployment/webpack/runtime/publicPath","webpack://@finos/legend-application-repl-deployment/webpack/runtime/jsonp chunk loading","webpack://@finos/legend-application-repl-deployment/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '../application/AbstractPluginManager.js';\n// We use numeric enum here for because we want to do comparison\n// In order to retrieve the name of the enum we can do reverse mapping, for example: LogLevel[LogLevel.INFO] -> INFO\n// https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\nexport var LOG_LEVEL;\n(function (LOG_LEVEL) {\n LOG_LEVEL[LOG_LEVEL[\"DEBUG\"] = 1] = \"DEBUG\";\n LOG_LEVEL[LOG_LEVEL[\"INFO\"] = 2] = \"INFO\";\n LOG_LEVEL[LOG_LEVEL[\"WARN\"] = 3] = \"WARN\";\n LOG_LEVEL[LOG_LEVEL[\"ERROR\"] = 4] = \"ERROR\";\n LOG_LEVEL[LOG_LEVEL[\"SILENT\"] = 5] = \"SILENT\";\n})(LOG_LEVEL || (LOG_LEVEL = {}));\nexport class LogEvent {\n channel;\n name;\n timestamp = Date.now();\n /**\n * TODO: we should make channel required and potentially name required as well, and for each\n * channel, there should be a list of known event names. Unknown event name, or wrong channel\n * will result in error.\n */\n static create(name) {\n const event = new LogEvent();\n event.name = name;\n return event;\n }\n}\nexport class LoggerPlugin extends AbstractPlugin {\n level = LOG_LEVEL.DEBUG;\n setLevel(level) {\n this.level = level;\n }\n install(pluginManager) {\n pluginManager.registerLoggerPlugin(this);\n }\n debug(event, ...data) {\n if (this.level <= LOG_LEVEL.DEBUG) {\n this._debug(event, ...data);\n }\n }\n info(event, ...data) {\n if (this.level <= LOG_LEVEL.INFO) {\n this._info(event, ...data);\n }\n }\n warn(event, ...data) {\n if (this.level <= LOG_LEVEL.WARN) {\n this._warn(event, ...data);\n }\n }\n error(event, ...data) {\n if (this.level <= LOG_LEVEL.ERROR) {\n this._error(event, ...data);\n }\n }\n}\nexport class LogService {\n loggers = [];\n registerPlugins(loggerPlugins) {\n this.loggers = loggerPlugins;\n }\n debug(event, ...data) {\n this.loggers.forEach((logger) => logger.debug(event, ...data));\n }\n info(event, ...data) {\n this.loggers.forEach((logger) => logger.info(event, ...data));\n }\n warn(event, ...data) {\n this.loggers.forEach((logger) => logger.warn(event, ...data));\n }\n error(event, ...data) {\n this.loggers.forEach((logger) => logger.error(event, ...data));\n }\n}\n//# sourceMappingURL=LogService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uuid } from '../CommonUtils.js';\nexport class PluginInfo {\n name;\n version;\n signature;\n uuid;\n}\nexport class AbstractPlugin {\n name;\n version;\n uuid = uuid();\n constructor(name, version) {\n this.name = name;\n this.version = version;\n }\n getName() {\n return this.name;\n }\n getVersion() {\n return this.version;\n }\n getSignature() {\n return `${this.getName()}@${this.getVersion()}`;\n }\n getUUID() {\n return this.uuid;\n }\n getInfo() {\n const info = new PluginInfo();\n info.name = this.getName();\n info.version = this.getVersion();\n info.signature = this.getSignature();\n info.uuid = this.getUUID();\n return info;\n }\n configure(configData) {\n return this;\n }\n}\nexport class PresetInfo {\n name;\n version;\n signature;\n uuid;\n plugins = [];\n}\nexport class AbstractPreset {\n name;\n version;\n uuid = uuid();\n plugins = [];\n constructor(name, version, plugins) {\n this.name = name;\n this.version = version;\n this.plugins = plugins;\n }\n getName() {\n return this.name;\n }\n getVersion() {\n return this.version;\n }\n getSignature() {\n return `${this.getName()}@${this.getVersion()}`;\n }\n getUUID() {\n return this.uuid;\n }\n getPlugins() {\n return [...this.plugins];\n }\n getInfo() {\n const info = new PresetInfo();\n info.name = this.getName();\n info.version = this.getVersion();\n info.signature = this.getSignature();\n info.uuid = this.getUUID();\n info.plugins = this.plugins\n .map((plugin) => plugin.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name));\n return info;\n }\n configure(configData) {\n return this;\n }\n install(pluginManager) {\n this.plugins.forEach((plugin) => plugin.install(pluginManager));\n }\n}\nexport class AbstractPluginManager {\n plugins = [];\n presets = [];\n usePlugins(plugins) {\n this.plugins = plugins;\n return this;\n }\n usePresets(presets) {\n this.presets = presets;\n return this;\n }\n configure(configData) {\n Object.keys(configData).forEach((key) => {\n const configObj = configData[key];\n this.presets.forEach((preset) => {\n if (preset.getName() === key) {\n preset.configure(configObj);\n }\n });\n this.plugins.forEach((plugin) => {\n if (plugin.getName() === key) {\n plugin.configure(configObj);\n }\n });\n });\n }\n install() {\n // Plugins run before presets\n // Plugins ordering is first to last\n this.plugins.forEach((plugin) => plugin.install(this));\n // Presets ordering is first to last\n this.presets.forEach((plugin) => plugin.install(this));\n }\n getInfo() {\n return {\n plugins: this.plugins\n .filter((plugin) => !this.getHiddenPluginNames().includes(plugin.getName()))\n .map((plugin) => plugin.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name)),\n presets: this.presets\n .filter((preset) => !this.getHiddenPresetNames().includes(preset.getName()))\n .map((preset) => preset.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name)),\n };\n }\n /**\n * Return the list of core plugin names to be hidden\n * when getting plugin manager info, such as core plugins.\n */\n getHiddenPluginNames() {\n return [];\n }\n /**\n * Return the list of core presets names to be hidden\n * when getting plugin manager info, such as core presets.\n */\n getHiddenPresetNames() {\n return [];\n }\n}\n//# sourceMappingURL=AbstractPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LoggerPlugin } from './LogService.js';\nconst { debug, info, warn, error } = console;\nexport class WebConsole extends LoggerPlugin {\n constructor() {\n super(packageJson.extensions.webConsoleLoggerPlugin, packageJson.version);\n }\n _debug(event, ...data) {\n debug(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _info(event, ...data) {\n info(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _warn(event, ...data) {\n warn(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _error(event, ...data) {\n error(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n}\n//# sourceMappingURL=WebConsole.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clone, cloneDeep as deepClone, isEqual as deepEqual, findLast, isEmpty, pickBy, uniqBy, uniq, debounce, throttle, mergeWith, toNumber, isObject, } from 'lodash-es';\nimport { UnsupportedOperationError } from './error/ErrorUtils.js';\nimport { format as prettyPrintObject } from 'pretty-format';\nimport { assertTrue, guaranteeNonNullable } from './error/AssertionUtils.js';\n// NOTE: We re-export lodash utilities like this so we centralize utility usage in our app\n// in case we want to swap out the implementation\nexport { clone, deepClone, deepEqual, findLast, isEmpty, pickBy, uniqBy, uniq, debounce, throttle, };\n// NOTE: we can use the `rng` option in UUID V4 to control the random seed during testing\n// See https://github.com/uuidjs/uuid#version-4-random\nexport { v4 as uuid } from 'uuid';\nexport const getClass = (obj) => obj.constructor;\nexport const getSuperclass = (_class) => {\n if (!_class.name) {\n throw new UnsupportedOperationError(`Cannot get superclass for non user-defined classes`);\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n const superclass = Object.getPrototypeOf(_class);\n /**\n * When it comes to inheritance, JavaScript only has one construct: objects.\n * Each object has a private property which holds a link to another object called its prototype.\n * That prototype object has a prototype of its own, and so on until an object is reached\n * with null as its prototype. By definition, null has no prototype,\n * and acts as the final link in this prototype chain.\n *\n * NOTE: when the prototype name is `empty` we know it's not user-defined classes, so we can return undefined\n */\n return superclass?.name ? superclass : undefined;\n};\n/**\n * Check if the specified class is either the same as, or is a superclass of the provided class.\n */\nexport const isClassAssignableFrom = (cls1, cls2) => {\n let currentPrototype = cls2;\n while (currentPrototype) {\n if (currentPrototype === cls1) {\n return true;\n }\n currentPrototype = getSuperclass(currentPrototype);\n }\n return false;\n};\nexport const noop = () => () => {\n /* do nothing */\n};\n/**\n * Recursively omit keys from an object\n */\nexport const recursiveOmit = (obj, \n/**\n * Checker function which returns `true` if the object field should be omit\n */\nchecker) => {\n const newObj = deepClone(obj);\n const omit = (_obj, _checker) => {\n if (Array.isArray(_obj)) {\n _obj.forEach((o) => omit(o, _checker));\n }\n else {\n const o = _obj;\n for (const propKey in o) {\n if (Object.prototype.hasOwnProperty.call(_obj, propKey)) {\n const value = o[propKey];\n if (_checker(_obj, propKey)) {\n delete o[propKey];\n }\n else if (isObject(value)) {\n omit(value, _checker);\n }\n }\n }\n }\n };\n omit(newObj, checker);\n return newObj;\n};\n/**\n * Recursively remove fields with undefined values in object\n */\nexport const pruneObject = (obj) => pickBy(obj, (val) => val !== undefined);\n/**\n * Recursively remove fields with null values in object\n *\n * This is particularly useful in serialization, especially when handling response\n * coming from servers where `null` are returned for missing fields. We would like to\n * treat them as `undefined` instead, so we want to strip all the `null` values from the\n * plain JSON object.\n */\nexport const pruneNullValues = (obj) => pickBy(obj, (val) => val !== null);\n/**\n * Recursively sort object keys alphabetically\n */\nexport const sortObjectKeys = (value) => {\n const _sort = (obj) => {\n if (Array.isArray(obj)) {\n return obj.map(sortObjectKeys);\n }\n else if (typeof obj === 'object' && obj !== null) {\n const oldObj = obj;\n const newObj = {};\n Object.keys(oldObj)\n .sort((a, b) => a.localeCompare(b))\n .forEach((key) => {\n newObj[key] = _sort(oldObj[key]);\n });\n return newObj;\n }\n return obj;\n };\n return _sort(value);\n};\nexport const parseNumber = (val) => {\n const num = toNumber(val);\n if (isNaN(num)) {\n throw new Error(`Can't parse number '${val}'`);\n }\n return num;\n};\n/**\n * Stringify object shallowly\n * See https://stackoverflow.com/questions/16466220/limit-json-stringification-depth\n */\nexport const shallowStringify = (object) => JSON.stringify(object, (key, val) => key && val && typeof val !== 'number'\n ? Array.isArray(val)\n ? '[object Array]'\n : `${val}`\n : val);\nexport const generateEnumerableNameFromToken = (existingNames, token) => {\n if (!token.match(/^[\\w_-]+$/)) {\n throw new Error(`Token must only contain digits, letters, or special characters _ and -`);\n }\n const maxCounter = existingNames\n .map((name) => {\n const matchingCount = name.match(new RegExp(`^${token}_(?<count>\\\\d+)$`));\n return matchingCount?.groups?.count\n ? parseInt(matchingCount.groups.count, 10)\n : 0;\n })\n .reduce((max, num) => Math.max(max, num), 0);\n return `${token}_${maxCounter + 1}`;\n};\n/**\n * NOTE: These are small helpers to workaround Typescript strictness check with the flag --noUncheckedIndexedAccess enabled\n */\nexport const getNullableFirstEntry = (array) => array.length ? array[0] : undefined;\nexport const getNullableLastEntry = (array) => array.length ? array[array.length - 1] : undefined;\nexport const getNullableEntry = (array, idx) => {\n if (idx < 0 || idx >= array.length) {\n return undefined;\n }\n return array.length > idx ? array[idx] : undefined;\n};\nexport const getNonNullableEntry = (array, idx, message) => {\n assertTrue(0 <= idx && idx < array.length, `Index out of bound: ${idx}`);\n return guaranteeNonNullable(array[idx], message);\n};\n/**\n * NOTE: This object mutates the input object (obj1)\n * To disable this behavior, set `createClone=true`\n */\nexport const mergeObjects = (obj1, obj2, createClone) => mergeWith(createClone ? deepClone(obj1) : obj1, obj2, (o1, o2) => {\n if (Array.isArray(o1)) {\n return o1.concat(o2);\n }\n return undefined;\n});\nexport const promisify = (func) => new Promise((resolve, reject) => setTimeout(() => {\n try {\n resolve(func());\n }\n catch (error) {\n reject(error);\n }\n}, 0));\nexport const addUniqueEntry = (array, newEntry, comparator = (val1, val2) => val1 === val2) => {\n if (!array.find((entry) => comparator(entry, newEntry))) {\n array.push(newEntry);\n return true;\n }\n return false;\n};\nexport const changeEntry = (array, oldEntry, newEntry, comparator = (val1, val2) => val1 === val2) => {\n const idx = array.findIndex((entry) => comparator(entry, oldEntry));\n if (idx !== -1) {\n array[idx] = newEntry;\n return true;\n }\n return false;\n};\nexport const swapEntry = (array, entryOne, entryTwo, comparator = (val1, val2) => val1 === val2) => {\n const idxX = array.findIndex((entry) => comparator(entry, entryOne));\n const idxY = array.findIndex((entry) => comparator(entry, entryTwo));\n if (idxX !== -1 && idxY !== -1) {\n array[idxX] = entryTwo;\n array[idxY] = entryOne;\n return true;\n }\n return false;\n};\nexport const deleteEntry = (array, entryToDelete, comparator = (val1, val2) => val1 === val2) => {\n const idx = array.findIndex((entry) => comparator(entry, entryToDelete));\n if (idx !== -1) {\n array.splice(idx, 1);\n return true;\n }\n return false;\n};\nexport const printObject = (value, options) => {\n const opts = pruneObject({\n printFunctionName: false,\n maxDepth: options?.deep ? undefined : 1,\n });\n const text = prettyPrintObject(value, opts);\n return (text\n // We do these replacements because when we do this for production and the class name is minified,\n // we'd better show `[Object]` instead.\n .replace(/.*\\s\\{/g, '{')\n .replace(/\\[.*\\]/g, (val) => ['[Array]', '[Function]'].includes(val) ? val : '[Object]'));\n};\nexport const hasWhiteSpace = (val) => Boolean(val.match(/\\s/));\n//# sourceMappingURL=CommonUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { printObject, uuid, } from '../CommonUtils.js';\n/**\n * A generic error that can be used for building other errors in the application\n * which does not require Javascript stack trace.\n *\n * If the Javascript stack trace is needed to trace back where the problem occurs,\n * `EnrichedError` is the more suitable candidate.\n *\n * This type of error is useful for wrapping the innermost error or errors coming\n * from the servers. Since we enforce in the app that errors thrown must be of type\n * `Error`, this acts as a good wrapper to manage errors better.\n * See https://github.com/microsoft/TypeScript/issues/13219\n */\nexport class ApplicationError extends Error {\n uuid = uuid();\n constructor(message) {\n super();\n this.message =\n message === undefined || message === '' ? '(no error message)' : message;\n }\n /**\n * This provides more detail (better context) about the error, including the error message\n * stack trace, etc.\n */\n get detail() {\n return this.message;\n }\n}\n// Since Javascript does not fully support rethrowing error, we need to customize and manipulate the stack trace\n// See https://stackoverflow.com/questions/42754270/re-throwing-exception-in-nodejs-and-not-losing-stack-trace\nexport class EnrichedError extends Error {\n constructor(name, error, overideMessage) {\n super(overideMessage\n ? overideMessage\n : error instanceof Error\n ? error.message\n : error);\n this.name = name;\n // if the material used to make this error is also an error, we maintain the stack trace and\n // follow the `rethrown` error stack trace convention\n // See https://www.twilio.com/blog/how-to-read-and-understand-a-java-stacktrace\n if (error instanceof Error) {\n const messageLines = (this.message.match(/\\n/g) ?? []).length + 1;\n this.stack = `${(this.stack ?? '')\n .split('\\n')\n .slice(0, messageLines + 1)\n .join('\\n')}\\nCaused by: ${error.stack}`;\n }\n else {\n if (typeof Error.captureStackTrace === 'function') {\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // This only works in Chrome for now. Firefox (as of Feb 2020) will throw error\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n Error.captureStackTrace(this, this.constructor);\n }\n else {\n // otherwise, use the non-standard but defacto stack trace (available in most browser)\n this.stack = new Error(error).stack;\n }\n }\n }\n}\n/**\n * Signals that a method has been invoked at an illegal or\n * inappropriate point at runtime. In other words, the environment\n * or application is not in an appropriate state for the requested\n * operation.\n */\nexport class IllegalStateError extends EnrichedError {\n constructor(error) {\n super('Illegal State Error [PLEASE NOTIFY DEVELOPER]', error);\n }\n}\nexport class UnsupportedOperationError extends EnrichedError {\n constructor(message, unsupportedObject) {\n super('Unsupported Operation Error', message || unsupportedObject\n ? `${message}${unsupportedObject ? `\\n${printObject(unsupportedObject)}` : ''}`\n : undefined);\n }\n}\n/**\n * This is a relatively crude way to handle error of type unknown thrown for now.\n * We should revisit this when Typescript supports `throws` clause\n * See https://github.com/microsoft/TypeScript/issues/13219\n *\n * NOTE: There's a problem with this check in JSDOM leading so we have to disable this in test environment\n * JSDOM uses their own isolated object rather than native object for performance purpose\n * See https://github.com/jsdom/jsdom/issues/3082\n * For example, TypeErrors generated by `webidl2js` or `whatwg-url` used by `jsdom`, or manually-thrown ones inside impl classes,\n * are thrown using global.TypeError, not dom.window.TypeError. This change is hard to implement as of now\n * See https://github.com/jsdom/jsdom/issues/2727\n * See https://github.com/facebook/jest/issues/2549\n *\n * Read more related discussions at:\n * https://github.com/jsdom/jsdom/issues/1737\n * https://github.com/webcomponents/polyfills/issues/105\n * https://github.com/jsdom/jsdom/issues/1769\n * https://github.com/jsdom/jsdom/issues/2555\n */\nexport function assertErrorThrown(error) {\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n if (!(error instanceof Error)) {\n throw new IllegalStateError('Expected error to be thrown');\n }\n}\nexport const returnUndefOnError = (fn) => {\n try {\n return fn();\n }\n catch {\n return undefined;\n }\n};\nexport const decorateErrorMessageIfExists = (fn, errorMessageDecorator) => {\n try {\n return fn();\n }\n catch (error) {\n assertErrorThrown(error);\n error.message = errorMessageDecorator(error.message);\n throw error;\n }\n};\n//# sourceMappingURL=ErrorUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EnrichedError } from './ErrorUtils.js';\nexport class AssertionError extends EnrichedError {\n constructor(error, message) {\n super('Assertion Error', error, message);\n }\n}\nexport const isNonNullable = (value) => value !== null && value !== undefined;\nexport function assertNonNullable(value, message = '') {\n if (value === null || value === undefined) {\n throw new AssertionError(message || 'Value is nullable');\n }\n}\nexport const guaranteeNonNullable = (value, message = '') => {\n assertNonNullable(value, message);\n return value;\n};\nexport const isType = (value, clazz) => value instanceof clazz;\nexport const filterByType = (clazz) => (value) => isType(value, clazz);\n// Aserts typing doesn't work with all arrow function type declaration form\n// So we can use this: export const assertType: <T>(value: unknown, clazz: Clazz<T>, message: string) => asserts value is T = (value, clazz, message = '') => {\n// or the normal function form\n// See https://github.com/microsoft/TypeScript/issues/34523\n// See https://github.com/microsoft/TypeScript/pull/33622\nexport function assertType(value, clazz, message = '') {\n if (!(value instanceof clazz)) {\n throw new AssertionError(message || `Value is expected to be of type '${clazz.name}'`);\n }\n}\nexport const guaranteeType = (value, clazz, message = '') => {\n assertType(value, clazz, message);\n return value;\n};\nexport function isNonEmptyString(str) {\n return isNonNullable(str) && str !== '';\n}\nexport function assertNonEmptyString(str, message = '') {\n if (guaranteeNonNullable(str, message) === '') {\n throw new AssertionError(message || `Expected string value to be non-empty`);\n }\n}\nexport function guaranteeNonEmptyString(str, message = '') {\n assertNonEmptyString(str, message);\n return str;\n}\nexport function assertTrue(assertionValue, message = '') {\n if (!assertionValue) {\n throw new AssertionError(message || `Expected predicate to be truthy`);\n }\n}\nexport const isString = (val) => typeof val === 'string';\nexport const isNumber = (val) => typeof val === 'number' && !isNaN(val);\nexport const isBoolean = (val) => typeof val === 'boolean';\nexport const isObject = (val) => typeof val === 'object' && val !== null;\nexport const isPlainObject = (val) => isObject(val) && val.constructor.name === 'Object';\nexport function assertIsString(val, message = '') {\n if (!isString(val)) {\n throw new AssertionError(message || `Value is expected to be a string`);\n }\n}\nexport function assertIsNumber(val, message = '') {\n if (!isNumber(val)) {\n throw new AssertionError(message || `Value is expected to be a number`);\n }\n}\nexport function assertIsBoolean(val, message = '') {\n if (!isBoolean(val)) {\n throw new AssertionError(message || `Value is expected to be a boolean`);\n }\n}\nexport function assertIsObject(val, message = '') {\n if (!isObject(val)) {\n throw new AssertionError(message || `Value is expected to be a object`);\n }\n}\nexport const guaranteeIsString = (val, message = '') => {\n assertIsString(val, message);\n return val;\n};\nexport const guaranteeIsNumber = (val, message = '') => {\n assertIsNumber(val, message);\n return val;\n};\nexport const guaranteeIsBoolean = (val, message = '') => {\n assertIsBoolean(val, message);\n return val;\n};\nexport const guaranteeIsObject = (val, message = '') => {\n assertIsObject(val, message);\n return val;\n};\n//# sourceMappingURL=AssertionUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { StatusCodes } from 'http-status-codes';\nimport { isNonNullable, isString, isObject, AssertionError, assertTrue, } from '../error/AssertionUtils.js';\nimport { deflate } from 'pako';\nimport queryString from 'query-string';\nimport { returnUndefOnError } from '../error/ErrorUtils.js';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\n/**\n * Unlike the download call (GET requests) which is gziped, the upload call send uncompressed data which is in megabytes realms\n * for bigger project. This really slows down operations. As such, we compress data using `zlib` for all network calls to execution\n * server. This requires the backend to uncompress, which for small models might end up adding a little overhead, so in the future, we might\n * want to make this decision `to compress or to not compress` more smartly and dynamicly (e.g. potentially to scan the size of the data/model\n * and decide the compression strategy).\n */\nconst compressData = (data) => new Blob([deflate(isObject(data) ? JSON.stringify(data) : data)]);\nexport const URL_SEPARATOR = '/';\n/**\n * Reference: https://uibakery.io/regex-library/url\n */\nconst URL_REGEX = new RegExp('^https?://(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\\\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$');\nexport const HttpStatus = StatusCodes;\nexport const CHARSET = 'charset=utf-8';\nexport var HttpHeader;\n(function (HttpHeader) {\n HttpHeader[\"CONTENT_TYPE\"] = \"Content-Type\";\n HttpHeader[\"ACCEPT\"] = \"Accept\";\n})(HttpHeader || (HttpHeader = {}));\nexport var ContentType;\n(function (ContentType) {\n ContentType[\"APPLICATION_JSON\"] = \"application/json\";\n ContentType[\"APPLICATION_XML\"] = \"application/xml\";\n ContentType[\"APPLICATION_ZLIB\"] = \"application/zlib\";\n ContentType[\"TEXT_PLAIN\"] = \"text/plain\";\n ContentType[\"TEXT_CSV\"] = \"text/csv\";\n ContentType[\"ALL\"] = \"*/*\";\n})(ContentType || (ContentType = {}));\nexport var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"GET\"] = \"GET\";\n HttpMethod[\"PUT\"] = \"PUT\";\n HttpMethod[\"POST\"] = \"POST\";\n HttpMethod[\"DELETE\"] = \"DELETE\";\n})(HttpMethod || (HttpMethod = {}));\nconst DEFAULT_CLIENT_REQUEST_OPTIONS = {\n mode: 'cors', // allow CORS - See https://developer.mozilla.org/en-US/docs/Web/API/Request/mode\n credentials: 'include', // allow sending credentials to other domain\n /**\n * NOTE: We must set this to `follow` for the fetch to handle 3xx redirects automatically.\n * The other modes available are `error` which will throw error and does not really give a\n * response object, and `manual` which returns an opaque response object with status code 0;\n * either way, we cannot really handle the redirect manually ourselves.\n * See https://fetch.spec.whatwg.org/#concept-request-redirect-mode\n * See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect\n */\n redirect: 'follow',\n};\n// NOTE: We could further improve this by using the MIME library https://flaviocopes.com/node-get-file-extension-mime-type/\nexport const getContentTypeFileExtension = (type) => {\n switch (type) {\n case ContentType.APPLICATION_JSON:\n return 'json';\n case ContentType.APPLICATION_XML:\n return 'xml';\n case ContentType.TEXT_CSV:\n return 'csv';\n default:\n return 'txt';\n }\n};\n/**\n * NOTE: the latter headers value will override the those of the first\n */\nexport const mergeRequestHeaders = (headersOne, headersTwo) => {\n const requestHeaders = {};\n if (headersOne) {\n Object.entries(headersOne).forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n }\n if (headersTwo) {\n Object.entries(headersTwo).forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n }\n return requestHeaders;\n};\nconst MAX_ERROR_MESSAGE_LENGTH = 5000;\n/**\n * Custom error for service client with response details.\n * NOTE: Since is particular to execution error we might want to separate this out to another place and leave network client\n * as pure/generic as possible\n */\nconst extractMessage = (payload) => {\n if (isObject(payload)) {\n return isString(payload.message)\n ? payload.message\n : JSON.stringify(payload);\n }\n let payloadAsObject;\n try {\n payloadAsObject = JSON.parse(payload);\n }\n catch {\n // NOTE: ignored, above is best effort\n }\n return payloadAsObject && isString(payloadAsObject.message)\n ? payloadAsObject.message\n : payload;\n};\n/**\n * This is a fairly basic way to attempt re-authentication.\n * We create an <iframe> to load a re-authentication url\n * which suppose to silently refresh the authentication cookie\n * and requires no action from users.\n *\n * NOTE: authentication is very specific to the deployment context\n * i.e. how the servers are being setup, so this way of re-authenticate\n * should be optional and configurable.\n */\nexport const autoReAuthenticate = (url) => \n// eslint-disable-next-line @typescript-eslint/ban-types\nnew Promise((resolve) => {\n const id = 'AUTO_AUTHENTICATION_IFRAME';\n const previous = document.getElementById(id);\n previous?.remove();\n const element = document.createElement('iframe');\n element.id = id;\n element.src = url;\n element.style.display = 'none';\n element.addEventListener('load', () => {\n element.remove();\n resolve();\n });\n document.body.appendChild(element);\n});\nexport class NetworkClientError extends Error {\n response;\n payload;\n constructor(response, payload) {\n super();\n if (typeof Error.captureStackTrace === 'function') {\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // This only works in Chrome for now. Firefox (as of Feb 2020) will throw error\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n Error.captureStackTrace(this, this.constructor);\n }\n else {\n // otherwise, use the non-standard but defacto stack trace (available in most browser)\n this.stack = new Error().stack;\n }\n this.name = 'Network Client Error';\n this.response = response;\n const { status, statusText, url } = response;\n const summary = `Received response with status ${status} (${statusText}) for ${url}`;\n this.message =\n (payload\n ? extractMessage(payload).substring(0, MAX_ERROR_MESSAGE_LENGTH)\n : '') || summary;\n this.payload = payload;\n }\n}\nexport const makeUrl = (baseUrl, url, parameters) => {\n if (!baseUrl && !returnUndefOnError(() => new URL(url))) {\n throw new Error(`Can't build URL string: base URL is not specified and the provided URL '${url}' is not absolute`);\n }\n const fullUrl = new URL(url, baseUrl);\n if (parameters instanceof Object) {\n Object.entries(parameters).forEach(([name, value]) => {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // if value is an array, keep adding it to the URL with the same parameter name, for example: /reviews?revisionIds=rev2&revisionIds=rev1\n value\n .filter(isNonNullable)\n .forEach((subVal) => fullUrl.searchParams.append(name, subVal.toString()));\n }\n else {\n fullUrl.searchParams.append(name, value.toString());\n }\n }\n });\n }\n return fullUrl.toString();\n};\n// NOTE: in case of missing CORS headers, failed authentication manifests itself as CORS error\nconst couldBeCORS = (error) => error instanceof TypeError && error.message === 'Failed to fetch';\nconst processResponse = async (response, init, responseProcessConfig) => {\n responseProcessConfig?.preprocess?.(response);\n if (!response.ok) {\n let payload;\n try {\n payload = await response.text();\n payload = JSON.parse(payload);\n }\n catch {\n // NOTE: ignored, above is best effort\n }\n return Promise.reject(new NetworkClientError(response, payload));\n }\n if (responseProcessConfig?.skipProcessing) {\n return Promise.resolve(response);\n }\n if (response.status === HttpStatus.NO_CONTENT) {\n return Promise.resolve(undefined);\n }\n // TODO: might need to handle */* ContentType and other types\n // Note that right now what we support is rather simplistic, as we always expect `application/json` or `text/plain`\n // and use these to determine how we should decode the response. However, we should properly allow passing in\n // a field in response process config to specify the format of the expected response body\n //\n // See https://www.npmjs.com/package/mime-types\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n // See https://github.github.io/fetch/\n const accept = init.headers.Accept;\n switch (accept) {\n case ContentType.APPLICATION_JSON:\n return response.json();\n case ContentType.TEXT_PLAIN:\n return response.text();\n default:\n return Promise.reject(new NetworkClientError(response, `Can't process response for request with Content-Type '${accept}'`));\n }\n};\nexport const createRequestHeaders = (method, headers) => {\n const baseRequestHeaders = {};\n /**\n * NOTE: here we set the accept header to application/json instead of the default value\n * as that will imply the server can send us text/html sometimes when there is an\n * authentication problem, which is not desirable.\n */\n baseRequestHeaders.Accept = ContentType.APPLICATION_JSON;\n if (method !== HttpMethod.GET) {\n baseRequestHeaders[HttpHeader.CONTENT_TYPE] =\n `${ContentType.APPLICATION_JSON};${CHARSET}`;\n }\n return mergeRequestHeaders(baseRequestHeaders, headers);\n};\n/**\n * Simple wrapper around native `fetch` API. For `options`, see documentation for \"init\"\n * See https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class NetworkClient {\n options = {};\n baseUrl;\n constructor(config) {\n this.baseUrl = config?.baseUrl;\n this.options = {\n ...DEFAULT_CLIENT_REQUEST_OPTIONS,\n ...(config?.options ?? {}),\n };\n }\n async get(url, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n // NOTE: do not use Content-Type for GET to avoid unnecessary pre-flight when cross-origin\n return this.request(HttpMethod.GET, url, undefined, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async put(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.PUT, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async post(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.POST, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async delete(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.DELETE, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async request(method, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig) {\n const requestUrl = makeUrl(this.baseUrl, url, parameters ?? {});\n if ((isString(data) || isObject(data)) &&\n requestProcessConfig?.enableCompression) {\n assertTrue(method !== HttpMethod.GET, ' GET request should not have any request payload');\n data = compressData(data);\n // NOTE: do not use Content-Type for GET to avoid unnecessary pre-flight when cross-origin\n headers = mergeRequestHeaders(headers, {\n // Override Content-Type header when compression is enabled\n [HttpHeader.CONTENT_TYPE]: `${ContentType.APPLICATION_ZLIB};${CHARSET}`,\n });\n }\n let body;\n if (data !== undefined) {\n if (isString(data) || data instanceof Blob) {\n body = data;\n }\n else if (isObject(data)) {\n body = JSON.stringify(data);\n }\n else {\n throw new AssertionError(`Request body can only be either a 'string' or an 'object'`);\n }\n }\n const requestInit = {\n ...this.options,\n ...options,\n method,\n body: body,\n headers: createRequestHeaders(method, headers),\n };\n /**\n * For network client to work, we need an implementation of `window.fetch` to be present.\n * Modern browsers should already have native support for `fetch`.\n * In case they don't (such as in test where we use `jsdom` for example),\n * there are several ways to go about this,but we recommend using `whatwg-fetch` polyfill.\n *\n * Why favor `whatwg-fetch`?\n * It's Github's polyfill for a subset of features of Fetch API.\n * See https://github.com/github/fetch#read-this-first\n * What about `axios`? `axios` has pretty nice API, but larger bundle-size for no particular reason\n * See https://github.com/axios/axios/issues/1333#issuecomment-511375282\n * What about `node-fetch`? `node-fetch` is for server-side only, while `whatwg-fetch` is for client-side\n * See https://www.npmjs.com/package/node-fetch#motivation\n */\n return fetch(requestUrl, requestInit)\n .then((response) => {\n if (\n // NOTE: status 0 is either timeout or client error possibly caused by authentication\n response.status === 0 ||\n response.status === HttpStatus.UNAUTHORIZED) {\n // NOTE: we might want to consider different handling here rather than just proceeding with a retry\n // this is a good place to add an auto retry/authenticate mechanism\n if (responseProcessConfig?.autoReAuthenticateUrl) {\n return autoReAuthenticate(responseProcessConfig.autoReAuthenticateUrl)\n .then(() => fetch(requestUrl, requestInit))\n .then((resp) => processResponse(resp, requestInit, responseProcessConfig));\n }\n return fetch(requestUrl, requestInit).then((resp) => processResponse(resp, requestInit, responseProcessConfig));\n }\n return processResponse(response, requestInit, responseProcessConfig);\n })\n .catch((error) => couldBeCORS(error)\n ? // NOTE: we might want to consider different handling here rather than just proceeding with a retry\n fetch(requestUrl, requestInit).then((resp) => processResponse(resp, requestInit, responseProcessConfig))\n : Promise.reject(error));\n }\n}\n/**\n * Create and download a file using data URI\n * See http://stackoverflow.com/questions/283956\n */\nexport const downloadFileUsingDataURI = (fileName, content, contentType) => {\n const blob = new Blob([content], { type: contentType });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n if (typeof link.download === 'string') {\n document.body.appendChild(link); // Firefox requires the link to be in the body\n link.download = fileName;\n link.href = url;\n link.click();\n document.body.removeChild(link); // remove the link when done\n }\n else {\n location.replace(url);\n }\n};\nexport const createUrlStringFromData = (data, contentType, base64) => base64\n ? `data:${contentType};base64,${window.btoa(data)}`\n : `data:${contentType},${encodeURIComponent(data)}`;\n// Buffer.from(str, 'base64')` and`buf.toString('base64')\n// NOTE: we can potentially use the native `URLSearchParams` as it provides\n// fairly good API and structured output, but it does not support duplicated query\n// such as `?foo=1&foo=2`, only the first value of `foo` will be recorded\n// See https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\nexport const getQueryParameters = (url, isFullUrl = false) => {\n const params = isFullUrl\n ? queryString.parseUrl(url).query\n : queryString.parse(url);\n return params;\n};\nexport const getQueryParameterValue = (key, data) => {\n const paramValue = data[key];\n return paramValue ? decodeURIComponent(paramValue) : undefined;\n};\nexport const stringifyQueryParams = (params) => {\n const data = {};\n Object.entries(params).forEach(([key, value]) => {\n if (!value) {\n return;\n }\n data[key] = value.toString();\n });\n return queryString.stringify(data);\n};\nexport const addQueryParametersToUrl = (url, val) => (val ? `${url}?${val}` : url);\nexport const buildUrl = (parts) => parts\n .map((part) => part.replaceAll(/^\\/+/g, '').replaceAll(/\\/+$/g, ''))\n .join(URL_SEPARATOR);\nexport const sanitizeURL = (val) => sanitizeUrl(val);\nexport const isValidURL = (val) => URL_REGEX.test(val);\n//# sourceMappingURL=NetworkUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var APPLICATION_EVENT;\n(function (APPLICATION_EVENT) {\n APPLICATION_EVENT[\"APPLICATION_SETUP__FAILURE\"] = \"application.setup.failure\";\n APPLICATION_EVENT[\"APPLICATION_LOAD__SUCCESS\"] = \"application.load.success\";\n APPLICATION_EVENT[\"APPLICATION_LOAD__FAILURE\"] = \"application.load.failure\";\n APPLICATION_EVENT[\"ILLEGAL_APPLICATION_STATE_OCCURRED\"] = \"application.error.illegal-state\";\n APPLICATION_EVENT[\"APPLICATION_CONFIGURATION__FAILURE\"] = \"application.configuration.failure\";\n APPLICATION_EVENT[\"IDENTITY_AUTO_FETCH__FAILURE\"] = \"application.identity.auto-fetch.failure\";\n APPLICATION_EVENT[\"DOCUMENTATION_FETCH__FAILURE\"] = \"application.documentation.fetch.failure\";\n APPLICATION_EVENT[\"DOCUMENTATION_LOAD__SKIP\"] = \"application.documentation.load.skip\";\n APPLICATION_EVENT[\"DOCUMENTATION_REQUIREMENT_CHECK__FAILURE\"] = \"application.documentation.requirement-check.failure\";\n APPLICATION_EVENT[\"CONTEXTUAL_DOCUMENTATION_LOAD__SKIP\"] = \"application.virtual-assistant.contextual-documentation-load.skip\";\n APPLICATION_EVENT[\"VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS\"] = \"application.virtual-assistant.documentation-entry.access\";\n APPLICATION_EVENT[\"TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE\"] = \"application.load.terminal-command.configuration-check.failure\";\n APPLICATION_EVENT[\"COLOR_THEME_CONFIGURATION_CHECK__FAILURE\"] = \"application.layout.color-theme.configuration-check.failure\";\n APPLICATION_EVENT[\"SETTING_CONFIGURATION_CHECK__FAILURE\"] = \"application.setting.configuration-check.failure\";\n APPLICATION_EVENT[\"SETTING_RETRIVE_FAILURE\"] = \"application.setting.retrieve.failure\";\n APPLICATION_EVENT[\"USER_DATA_RETRIEVE_FAILURE\"] = \"application.user-data.retrieve.failure\";\n APPLICATION_EVENT[\"COMMAND_CENTER_REGISTRATION__FAILURE\"] = \"application.command.registration.failure\";\n APPLICATION_EVENT[\"DEVELOPMENT_ISSUE\"] = \"development.issue\";\n APPLICATION_EVENT[\"APPLICATION_CONTEXT__ACCESS\"] = \"application.context.access\";\n APPLICATION_EVENT[\"APPLICATION_USAGE__INTERRUPT\"] = \"application.usage.interrupt\";\n APPLICATION_EVENT[\"APPLICATION_TELEMETRY_EVENT__FAILURE\"] = \"application.telemetry-event.failure\";\n})(APPLICATION_EVENT || (APPLICATION_EVENT = {}));\n//# sourceMappingURL=LegendApplicationEvent.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pruneNullValues } from '../CommonUtils.js';\nimport { custom, SKIP, deserialize, serialize, } from 'serializr';\nexport class SerializationFactory {\n schema;\n deserializeNullAsUndefined;\n constructor(schema, options) {\n this.schema = schema;\n this.deserializeNullAsUndefined = Boolean(options?.deserializeNullAsUndefined);\n }\n toJson(val) {\n return serialize(this.schema, val);\n }\n fromJson(val) {\n return deserialize(this.schema, this.deserializeNullAsUndefined ? pruneNullValues(val) : val);\n }\n}\nexport const usingModelSchema = (schema) => custom((value) => (value === undefined ? SKIP : serialize(schema, value)), (value) => deserialize(schema, value));\n// NOTE: we need these methods because `map()` of `serializr` tries to smartly\n// determines if it should produce object or ES6 Map but we always want ES6 Map,\n// so we would use this function\nexport const deserializeMap = (val, itemDeserializer) => {\n const result = new Map();\n Object.keys(val).forEach((key) => result.set(key, itemDeserializer(val[key])));\n return result;\n};\nexport const serializeMap = (val, itemSerializer) => {\n const result = {};\n val.forEach((v, key) => {\n result[key] = itemSerializer(v);\n });\n return result;\n};\nexport const usingConstantValueSchema = (value) => custom(() => value, () => value);\n/**\n * This is the idiomatic usage pattern for `optional(custom(...))`.\n *\n * `optional` only affects serialization so we must make sure to check\n * if the value is `undefined` or not, if yes, serialize, else, return `undefined`\n * which will be processed by `optional(...)` as `SKIP`.\n *\n * `optional` does not affect deserialization, however, as `undefined` values\n * are automatically skipped\n * See https://github.com/mobxjs/serializr/issues/73#issuecomment-535641545\n */\nexport const optionalCustom = (\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nserializer, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeserializer) => custom((val) => (val ? serializer(val) : SKIP), (val) => (val ? deserializer(val) : SKIP));\nexport const optionalCustomUsingModelSchema = (schema) => custom((val) => (val ? serialize(schema, val) : SKIP), (val) => (val ? deserialize(schema, val) : SKIP));\nexport const deserializeArray = (values, itemDeserializer, options) => {\n if (Array.isArray(values)) {\n return values.map(itemDeserializer);\n }\n return options?.skipIfEmpty ? SKIP : [];\n};\nexport const serializeArray = (values, itemSerializer, options) => {\n let forceReturnEmptyInTest = false;\n // NOTE: this block is meant for test, `webpack` will tree-shake it\n // so we never reach inside, else we would get error about `process is not defined` as we're\n // in browser environment\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'test') {\n forceReturnEmptyInTest =\n Boolean(options?.INTERNAL__forceReturnEmptyInTest) &&\n // eslint-disable-next-line no-process-env\n process.env.TEST_GROUP === 'engine-roundtrip';\n }\n if (Array.isArray(values)) {\n return values.length\n ? values.map((value) => itemSerializer(value))\n : forceReturnEmptyInTest\n ? []\n : options?.skipIfEmpty\n ? SKIP\n : [];\n }\n return forceReturnEmptyInTest ? [] : SKIP;\n};\n/**\n * This is the idiomatic usage pattern for serialization of optional list of objects.\n *\n * Notice our particular usage of `serializeArray` and `deserializeArray` that is deisnged\n * for testing and accounting for logic mismatches between servers and studio\n */\nexport const customListWithSchema = (schema, options) => custom((values) => serializeArray(values, (value) => serialize(schema, value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserialize(schema, value), {\n skipIfEmpty: false,\n}));\nexport const customList = (serializer, deserializer, options) => custom((values) => serializeArray(values, (value) => serializer(value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserializer(value), {\n skipIfEmpty: false,\n}));\nexport const customEquivalentList = (options) => customList((value) => value, (value) => value, options);\nexport const optionalCustomListWithSchema = (schema, options) => optionalCustom((values) => serializeArray(values, (value) => serialize(schema, value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserialize(schema, value), {\n skipIfEmpty: false,\n}));\nexport const optionalCustomList = (serializer, deserializer, options) => optionalCustom((values) => serializeArray(values, (value) => serializer(value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserializer(value), {\n skipIfEmpty: false,\n}));\n/**\n * NOTE: this is a workaround for `serializr` to avoid the magic extension mechanism provided\n * by `createModelSchema`, where depending on the order schemas are defined, if the schema of the\n * super class is specified first, when we serialize subclasses, we would get fields of the order\n * of fields from the super classes first, followed by fields from the subclasses, not the order\n * specified in the subclass's schema.\n *\n * See https://github.com/mobxjs/serializr/issues/179\n */\nexport const TEMPORARY__disableModelSchemaExtensionMechanism = (schema) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n schema.extends = undefined;\n return schema;\n};\n//# sourceMappingURL=SerializationUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SerializationFactory, LogEvent, uniq, guaranteeNonEmptyString, } from '@finos/legend-shared';\nimport { createModelSchema, custom, list, optional, primitive, } from 'serializr';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nexport class DocumentationEntry {\n key;\n markdownText;\n title;\n text;\n url;\n related;\n static serialization = new SerializationFactory(createModelSchema(DocumentationEntry, {\n markdownText: custom((val) => val, (val) => (val.value ? val : undefined)),\n related: optional(list(primitive())),\n title: optional(primitive()),\n text: optional(primitive()),\n url: optional(primitive()),\n }));\n static create(json, documentationKey) {\n const entry = DocumentationEntry.serialization.fromJson(json);\n entry.key = documentationKey;\n return entry;\n }\n}\nexport const collectKeyedDocumentationEntriesFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: entry[0],\n content: DocumentationEntry.create(entry[1], entry[0]),\n}));\nexport const collectDocumentationLinkEntryFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: guaranteeNonEmptyString(entry[0], \"Documentation link 'key' is missing\"),\n label: guaranteeNonEmptyString(entry[1].label, \"Documentation link 'label' is missing\"),\n url: guaranteeNonEmptyString(entry[1].url, \"Documentation link 'url' is missing\"),\n}));\nexport const collectContextualDocumentationEntries = (config) => Object.entries(config).map((entry) => ({\n context: entry[0],\n documentationKey: entry[1],\n}));\nexport class DocumentationService {\n url;\n links;\n docRegistry = new Map();\n contextualDocIndex = new Map();\n constructor(applicationStore) {\n // set the main documenation site url\n this.url = applicationStore.config.documentationUrl;\n this.links = applicationStore.config.documentationLinkEntries;\n /**\n * NOTE: the order of documentation entry overidding is (the later override the former):\n * 1. Natively specified: specified in the codebase (no overriding allowed within this group of documentation entries):\n * since we have extension mechanism, the order of plugins matter,\n * we do not allow overriding, i.e. so the first specification for a documentation key wins\n * 2. Fetched from documentation registries (no overriding allowed within this group of documentation entries):\n * since we have extension mechanism and allow specifying multiple registry URLS,\n * we do not allow overriding, i.e. so the first specification for a documentation key wins\n * 3. Configured in application config (overiding allowed within this group)\n */\n // build doc registry\n applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraKeyedDocumentationEntries?.() ?? [])\n .forEach((entry) => {\n // NOTE: Entries specified natively will not override each other. This is to prevent entries from extensions\n // accidentally overide entries from core.\n if (this.hasDocEntry(entry.key)) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_LOAD__SKIP), entry.key);\n }\n else {\n this.docRegistry.set(entry.key, entry.content);\n }\n });\n // entries from config will override entries specified natively\n applicationStore.config.keyedDocumentationEntries.forEach((entry) => this.docRegistry.set(entry.key, entry.content));\n const contextualDocEntries = applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraContextualDocumentationEntries?.() ?? []);\n // verify that required documentations are available\n const missingDocumentationEntries = [];\n uniq(applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraRequiredDocumentationKeys?.() ?? [])\n .concat(contextualDocEntries.map((entry) => entry.documentationKey))).forEach((key) => {\n if (!this.docRegistry.has(key)) {\n missingDocumentationEntries.push(key);\n }\n });\n if (missingDocumentationEntries.length) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_REQUIREMENT_CHECK__FAILURE), `Can't find corresponding documentation entry for keys:\\n${missingDocumentationEntries\n .map((key) => `- ${key}`)\n .join('\\n')}`);\n }\n // Contextual Documentation\n contextualDocEntries.forEach((entry) => {\n // NOTE: Entries specified natively will not override each other. This is to prevent entries from extensions\n // overriding entries from core.\n //\n // However, it might be useful to allow extending the list of related doc entries.\n // This allows extensions to broaden related doc entries for contextual docs\n // If we need to support this behavior, we could create a dedicated extension method\n if (this.hasContextualDocEntry(entry.context)) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.CONTEXTUAL_DOCUMENTATION_LOAD__SKIP), entry.context);\n }\n else {\n const existingDocEntry = this.getDocEntry(entry.documentationKey);\n if (existingDocEntry) {\n this.contextualDocIndex.set(entry.context, existingDocEntry);\n }\n }\n });\n // entries from config will override entries specified natively\n applicationStore.config.contextualDocEntries.forEach((entry) => {\n const existingDocEntry = this.getDocEntry(entry.documentationKey);\n if (existingDocEntry) {\n this.contextualDocIndex.set(entry.context, existingDocEntry);\n }\n });\n }\n getDocEntry(key) {\n return this.docRegistry.get(key);\n }\n hasDocEntry(key) {\n return this.docRegistry.has(key);\n }\n getContextualDocEntry(key) {\n return this.contextualDocIndex.get(key);\n }\n hasContextualDocEntry(key) {\n return this.contextualDocIndex.has(key);\n }\n getAllDocEntries() {\n return Array.from(this.docRegistry.values());\n }\n publishDocRegistry() {\n const result = {};\n this.docRegistry.forEach((value, key) => {\n result[key] = DocumentationEntry.serialization.toJson(value);\n });\n return result;\n }\n publishContextualDocIndex() {\n const result = {};\n this.contextualDocIndex.forEach((value, key) => {\n result[key] = value.key;\n });\n return result;\n }\n}\n//# sourceMappingURL=DocumentationService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nvar ACTION_STATE;\n(function (ACTION_STATE) {\n ACTION_STATE[\"INITIAL\"] = \"INITIAL\";\n ACTION_STATE[\"IN_PROGRESS\"] = \"IN_PROGRESS\";\n ACTION_STATE[\"SUCCEEDED\"] = \"SUCEEDED\";\n ACTION_STATE[\"FAILED\"] = \"FAILED\";\n})(ACTION_STATE || (ACTION_STATE = {}));\nexport class ActionState {\n state;\n _message;\n _messageFormatter;\n constructor() {\n this.state = ACTION_STATE.INITIAL;\n }\n setMessage(val) {\n this._message = val;\n }\n setMessageFormatter(val) {\n this._messageFormatter = val;\n }\n reset() {\n this.state = ACTION_STATE.INITIAL;\n return this;\n }\n inProgress() {\n this.state = ACTION_STATE.IN_PROGRESS;\n return this;\n }\n fail() {\n this.state = ACTION_STATE.FAILED;\n return this;\n }\n pass() {\n this.state = ACTION_STATE.SUCCEEDED;\n return this;\n }\n complete(hasSucceeded = true) {\n if (hasSucceeded) {\n this.pass();\n }\n else {\n this.fail();\n }\n return this;\n }\n sync(val) {\n const data = val.exportData();\n this.state = data.state;\n this._message = data.message;\n }\n exportData() {\n return {\n state: this.state,\n message: this._message,\n };\n }\n get isInInitialState() {\n return this.state === ACTION_STATE.INITIAL;\n }\n get isInProgress() {\n return this.state === ACTION_STATE.IN_PROGRESS;\n }\n get hasFailed() {\n return this.state === ACTION_STATE.FAILED;\n }\n get hasSucceeded() {\n return this.state === ACTION_STATE.SUCCEEDED;\n }\n get message() {\n return this._message\n ? this._messageFormatter\n ? this._messageFormatter(this._message)\n : this._message\n : undefined;\n }\n /**\n * Use this if only the completion state of the action is of concern,\n * i.e. we don't care if it fails or succeeds.\n */\n get hasCompleted() {\n return this.hasFailed || this.hasSucceeded;\n }\n static create() {\n return makeObservable(new ActionState(), {\n state: observable,\n _message: observable,\n reset: action,\n inProgress: action,\n pass: action,\n fail: action,\n complete: action,\n setMessage: action,\n sync: action,\n isInInitialState: computed,\n isInProgress: computed,\n hasFailed: computed,\n hasSucceeded: computed,\n hasCompleted: computed,\n message: computed,\n });\n }\n}\n//# sourceMappingURL=ActionState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '../application/AbstractPluginManager.js';\nexport var CORE_TRACER_TAG;\n(function (CORE_TRACER_TAG) {\n CORE_TRACER_TAG[\"USER\"] = \"user\";\n CORE_TRACER_TAG[\"ENV\"] = \"env\";\n CORE_TRACER_TAG[\"RESULT\"] = \"result\";\n CORE_TRACER_TAG[\"ERROR\"] = \"error\";\n CORE_TRACER_TAG[\"HTTP_STATUS\"] = \"status\";\n CORE_TRACER_TAG[\"HTTP_REQUEST_METHOD\"] = \"method\";\n CORE_TRACER_TAG[\"HTTP_REQUEST_URL\"] = \"url\";\n})(CORE_TRACER_TAG || (CORE_TRACER_TAG = {}));\nexport class TracerServicePlugin extends AbstractPlugin {\n install(pluginManager) {\n pluginManager.registerTracerServicePlugin(this);\n }\n}\nexport class Trace {\n traceEntries = [];\n setup(traceEntries) {\n this.traceEntries = traceEntries;\n }\n bootstrap(response) {\n this.traceEntries.forEach((entry) => {\n entry.plugin.bootstrap(entry.clientSpan, response);\n });\n }\n reportSuccess() {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeClientSpan(entry.clientSpan, undefined);\n });\n }\n reportError(error) {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeClientSpan(entry.clientSpan, error);\n });\n }\n close() {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeServerSpan(entry.serverSpan);\n });\n }\n}\nexport class TracerService {\n plugins = [];\n registerPlugins(plugins) {\n this.plugins = plugins;\n }\n createTrace(traceData, method, url, headers) {\n const trace = new Trace();\n if (traceData) {\n trace.setup(this.plugins.map((plugin) => {\n const clientSpan = plugin.createClientSpan(traceData);\n const serverSpan = plugin.createServerSpan(clientSpan, method, url, headers);\n return {\n clientSpan,\n serverSpan,\n plugin,\n };\n }));\n }\n return trace;\n }\n}\n//# sourceMappingURL=TracerService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Fuse from 'fuse.js';\nexport const FuzzySearchEngine = Fuse;\n//# sourceMappingURL=FuzzySearch.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nexport var ADVANCED_FUZZY_SEARCH_MODE;\n(function (ADVANCED_FUZZY_SEARCH_MODE) {\n ADVANCED_FUZZY_SEARCH_MODE[\"STANDARD\"] = \"standard\";\n ADVANCED_FUZZY_SEARCH_MODE[\"INCLUDE\"] = \"include match\";\n ADVANCED_FUZZY_SEARCH_MODE[\"EXACT\"] = \"exact match\";\n ADVANCED_FUZZY_SEARCH_MODE[\"INVERSE\"] = \"excludes exact match\";\n})(ADVANCED_FUZZY_SEARCH_MODE || (ADVANCED_FUZZY_SEARCH_MODE = {}));\nexport class FuzzySearchAdvancedConfigState {\n currentMode = ADVANCED_FUZZY_SEARCH_MODE.STANDARD;\n onSearchModeChange;\n constructor(onSearchModeChange) {\n makeObservable(this, {\n currentMode: observable,\n isAdvancedSearchActive: computed,\n setCurrentMode: action,\n });\n this.onSearchModeChange = onSearchModeChange;\n }\n get isAdvancedSearchActive() {\n return this.currentMode !== ADVANCED_FUZZY_SEARCH_MODE.STANDARD;\n }\n generateSearchText(val) {\n switch (this.currentMode) {\n case ADVANCED_FUZZY_SEARCH_MODE.INCLUDE: {\n return `'\"${val}\"`;\n }\n case ADVANCED_FUZZY_SEARCH_MODE.EXACT: {\n return `=\"${val}\"`;\n }\n case ADVANCED_FUZZY_SEARCH_MODE.INVERSE: {\n return `!\"${val}\"`;\n }\n default: {\n return val;\n }\n }\n }\n setCurrentMode(val) {\n this.currentMode = val;\n this.onSearchModeChange();\n }\n}\n//# sourceMappingURL=FuzzySearchAdvancedConfigState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable, computed } from 'mobx';\nimport { guaranteeNonEmptyString, uuid, isNonNullable, ActionState, FuzzySearchEngine, FuzzySearchAdvancedConfigState, } from '@finos/legend-shared';\nexport var VIRTUAL_ASSISTANT_TAB;\n(function (VIRTUAL_ASSISTANT_TAB) {\n VIRTUAL_ASSISTANT_TAB[\"SEARCH\"] = \"SEARCH\";\n VIRTUAL_ASSISTANT_TAB[\"CONTEXTUAL_SUPPORT\"] = \"CONTEXTUAL_SUPPORT\";\n})(VIRTUAL_ASSISTANT_TAB || (VIRTUAL_ASSISTANT_TAB = {}));\nexport const DOCUMENTATION_SEARCH_RESULTS_LIMIT = 100;\nexport class VirtualAssistantDocumentationEntry {\n uuid = uuid();\n documentationKey;\n title;\n content;\n url;\n isOpen = false;\n constructor(docEntry) {\n makeObservable(this, {\n isOpen: observable,\n setIsOpen: action,\n });\n this.documentationKey = docEntry.key;\n this.title = guaranteeNonEmptyString(docEntry.title);\n this.content = docEntry.markdownText ?? docEntry.text;\n this.url = docEntry.url;\n }\n setIsOpen(val) {\n this.isOpen = val;\n }\n}\nexport class VirtualAssistantContextualDocumentationEntry {\n uuid = uuid();\n context;\n title;\n content;\n url;\n related;\n constructor(context, docEntry, related) {\n this.context = context;\n this.title = docEntry.title;\n this.content = docEntry.markdownText ?? docEntry.text;\n this.url = docEntry.url;\n this.related = related;\n }\n}\n/**\n * NOTE: since we're displaying the documentation entry in virtual assistant\n * we want only user-friendly docs, we will discard anything that doesn't\n * come with a title, or does not have any content/url\n */\nexport const isValidVirtualAssistantDocumentationEntry = (entry) => Boolean(entry.title && (entry.url ?? entry.text ?? entry.markdownText));\n/**\n * Check if the documentation entry should be displayed in virtual assistant,\n * i.e. it has some text content, rather just a link\n */\nexport const shouldDisplayVirtualAssistantDocumentationEntry = (entry) => isValidVirtualAssistantDocumentationEntry(entry) &&\n Boolean(entry.text ?? entry.markdownText);\nexport class AssistantService {\n applicationStore;\n /**\n * This key is used to allow programmatic re-rendering of the assistant panel\n */\n panelRenderingKey = uuid();\n isHidden = true; // hide by default unless specified by the application to show\n isOpen = false;\n isPanelMaximized = false;\n selectedTab = VIRTUAL_ASSISTANT_TAB.SEARCH;\n currentDocumentationEntry;\n // search text\n searchEngine;\n searchConfigurationState;\n searchState = ActionState.create();\n searchText = '';\n searchResults = [];\n showSearchConfigurationMenu = false;\n isOverSearchLimit = false;\n constructor(applicationStore) {\n makeObservable(this, {\n isHidden: observable,\n isOpen: observable,\n isPanelMaximized: observable,\n panelRenderingKey: observable,\n isOverSearchLimit: observable,\n selectedTab: observable,\n searchText: observable,\n searchResults: observable,\n currentDocumentationEntry: observable,\n showSearchConfigurationMenu: observable,\n currentContextualDocumentationEntry: computed,\n setIsHidden: action,\n setIsOpen: action,\n setIsPanelMaximized: action,\n setSelectedTab: action,\n setSearchText: action,\n resetSearch: action,\n search: action,\n openDocumentationEntry: action,\n refreshPanelRendering: action,\n setShowSearchConfigurationMenu: action,\n });\n this.applicationStore = applicationStore;\n this.searchEngine = new FuzzySearchEngine(this.applicationStore.documentationService\n .getAllDocEntries()\n .filter(isValidVirtualAssistantDocumentationEntry), {\n includeScore: true,\n shouldSort: true,\n // Ignore location when computing the search score\n // See https://fusejs.io/concepts/scoring-theory.html\n ignoreLocation: true,\n // This specifies the point the search gives up\n // `0.0` means exact match where `1.0` would match anything\n // We set a relatively low threshold to filter out irrelevant results\n threshold: 0.2,\n keys: [\n {\n // NOTE: for now, we would weight title the most\n name: 'title',\n weight: 4,\n },\n {\n name: 'text',\n weight: 1,\n },\n {\n name: 'markdownText.value',\n weight: 1,\n },\n ],\n // extended search allows for exact word match through single quote\n // See https://fusejs.io/examples.html#extended-search\n useExtendedSearch: true,\n });\n this.searchConfigurationState = new FuzzySearchAdvancedConfigState(() => {\n this.search();\n });\n }\n get currentContextualDocumentationEntry() {\n if (!this.applicationStore.navigationContextService.currentContext) {\n return undefined;\n }\n const currentContext = this.applicationStore.navigationContextService.currentContext.key;\n const currentContextualDocumentationEntry = this.applicationStore.documentationService.getContextualDocEntry(currentContext);\n return currentContextualDocumentationEntry\n ? new VirtualAssistantContextualDocumentationEntry(currentContext, currentContextualDocumentationEntry, (currentContextualDocumentationEntry.related ?? [])\n .map((entry) => this.applicationStore.documentationService.getDocEntry(entry))\n .filter(isNonNullable)\n .filter(isValidVirtualAssistantDocumentationEntry)\n .map((entry) => new VirtualAssistantDocumentationEntry(entry)))\n : undefined;\n }\n openDocumentationEntry(key) {\n const entry = this.applicationStore.documentationService.getDocEntry(key);\n if (entry) {\n this.setIsOpen(true);\n this.setIsHidden(false);\n this.currentDocumentationEntry = new VirtualAssistantDocumentationEntry(entry);\n this.currentDocumentationEntry.setIsOpen(true);\n this.resetSearch();\n }\n }\n openDocumentationEntryLink(key) {\n const entry = this.applicationStore.documentationService.getDocEntry(key);\n if (entry) {\n if (shouldDisplayVirtualAssistantDocumentationEntry(entry)) {\n this.openDocumentationEntry(entry.key);\n }\n else if (entry.url) {\n this.applicationStore.navigationService.navigator.visitAddress(entry.url);\n }\n }\n }\n setIsHidden(val) {\n this.isHidden = val;\n }\n setIsPanelMaximized(val) {\n this.isPanelMaximized = val;\n }\n hideAssistant() {\n this.setIsHidden(true);\n this.setIsOpen(false);\n }\n toggleAssistant() {\n const newVal = !this.isHidden;\n if (newVal) {\n this.hideAssistant();\n }\n else {\n this.setIsHidden(false);\n }\n }\n setIsOpen(val) {\n this.isOpen = val;\n }\n setSelectedTab(val) {\n this.selectedTab = val;\n }\n refreshPanelRendering() {\n this.panelRenderingKey = uuid();\n }\n setSearchText(val) {\n this.searchText = val;\n }\n resetSearch() {\n this.searchText = '';\n this.searchResults = [];\n this.searchState.complete();\n }\n search() {\n if (!this.searchText) {\n this.searchResults = [];\n return;\n }\n this.currentDocumentationEntry = undefined;\n this.searchState.inProgress();\n this.searchResults = Array.from(this.searchEngine\n .search(this.searchConfigurationState.generateSearchText(this.searchText), {\n // NOTE: search for limit + 1 item so we can know if there are more search results\n limit: DOCUMENTATION_SEARCH_RESULTS_LIMIT + 1,\n })\n .values()).map((result) => new VirtualAssistantDocumentationEntry(result.item));\n // check if the search results exceed the limit\n if (this.searchResults.length > DOCUMENTATION_SEARCH_RESULTS_LIMIT) {\n this.isOverSearchLimit = true;\n this.searchResults = this.searchResults.slice(0, DOCUMENTATION_SEARCH_RESULTS_LIMIT);\n }\n else {\n this.isOverSearchLimit = false;\n }\n this.searchState.complete();\n }\n setShowSearchConfigurationMenu(val) {\n this.showSearchConfigurationMenu = val;\n }\n}\n//# sourceMappingURL=AssistantService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '@finos/legend-shared';\nexport class EventNotifierPlugin extends AbstractPlugin {\n install(pluginManager) {\n pluginManager.registerEventNotifierPlugin(this);\n }\n}\nexport class EventService {\n notifierPlugins = [];\n registerEventNotifierPlugins(plugins) {\n this.notifierPlugins = plugins;\n }\n notify(event, data) {\n this.notifierPlugins.forEach((plugin) => plugin.notify(event, data));\n }\n}\n//# sourceMappingURL=EventService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT } from './LegendApplicationEvent.js';\nexport class LegendApplicationTelemetryHelper {\n static logEvent_ApplicationInitializationSucceeded(service, applicationStore) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS, {\n application: {\n name: applicationStore.config.appName,\n version: applicationStore.config.appVersion,\n env: applicationStore.config.env,\n },\n browser: {\n userAgent: navigator.userAgent,\n },\n screen: {\n height: window.screen.height,\n width: window.screen.width,\n },\n });\n }\n static logEvent_ApplicationContextAccessed(service, data) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_CONTEXT__ACCESS, data);\n }\n static logEvent_VirtualAssistantDocumentationEntryAccessed(service, data) {\n service.logEvent(APPLICATION_EVENT.VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS, data);\n }\n static logEvent_ApplicationUsageInterrupted(service) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_USAGE__INTERRUPT, {});\n }\n}\n//# sourceMappingURL=LegendApplicationTelemetry.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { IllegalStateError } from '@finos/legend-shared';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\n/**\n * Context data refers to the area of the application that the user is\n * currently navigating.\n *\n * NOTE: note that this is navigation-driven, do not associate places\n * which present in the app screen that is not a direct consequence\n * of user's navigation. e.g. the status bar is not a good area to\n * be considered a context, the editor screen is because it means\n * the user must have navigated to the editor screen from somewhere,\n * for instance, the setup page.\n */\nexport class ApplicationNavigationContextData {\n key;\n /**\n * There are 2 types of context data: `standard` and `transient`\n * 1. standard context data represents an application context layer that\n * would be pushed to the stack and the context will be popped as we leave\n * the application, in other words, the context will be properly cleaned up\n * e.g. when we go in an editor, we will push context data to the stack and\n * pop it when we leave that editor\n * 2. transient context does not guarantee to be cleaned up properly, this\n * corresponds to application areas whose presense is transient and not stable:\n * such as those triggered by on-flight events, whose exit-state is hard to capture\n * e.g. user focuses on an input\n *\n * NOTE: transient context must not be mistakened as event, even in the example of\n * user focusing on an input, that's an area of the application that we might want\n * to get record of in terms of context. Events like a notification pop up, failure\n * of some long-running processes are not considered application contexts\n */\n isTransient = false;\n constructor(key, isTransient) {\n this.key = key;\n this.isTransient = isTransient;\n }\n static create(key) {\n return new ApplicationNavigationContextData(key, false);\n }\n static createTransient(key) {\n return new ApplicationNavigationContextData(key, true);\n }\n}\nexport class ApplicationNavigationContextService {\n applicationStore;\n contextStack = [];\n constructor(applicationStore) {\n makeObservable(this, {\n contextStack: observable,\n currentContext: computed,\n push: action,\n pop: action,\n });\n this.applicationStore = applicationStore;\n }\n get currentContext() {\n return this.contextStack.length\n ? this.contextStack[this.contextStack.length - 1]\n : undefined;\n }\n /**\n * Add the context to the stack.\n *\n * If the context is already if the context is already part of the stack\n * we will throw an error. This is to make sure we context is unique in the stack\n * and we do proper context stack cleanups on navigation.\n */\n push(context) {\n // first, filter out all transient contexts, so we can be sure that\n // all of the remaining contexts are standard and they should be cleaned up properly\n // this makes our duplication meaningful\n const newContextStack = this.contextStack.filter((ctx) => !ctx.isTransient);\n if (newContextStack.find((ctx) => ctx.key === context.key)) {\n throw new IllegalStateError(`Found multiple context '${context.key}' in application navigation context stack`);\n }\n newContextStack.push(context);\n // log the context being accessed if it's in the list of interested context keys\n if (this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraAccessEventLoggingApplicationContextKeys?.() ?? [])\n .includes(context.key)) {\n LegendApplicationTelemetryHelper.logEvent_ApplicationContextAccessed(this.applicationStore.telemetryService, {\n key: context.key,\n });\n }\n this.contextStack = newContextStack;\n }\n /**\n * Remove the context from the stack.\n *\n * NOTE: we will check from bottom of the stack up, for the specified context,\n * if it's found in the context stack, we will pop until the specified context.\n * This is to allow popping deeper context layers from very high up in the application\n * context stack, e.g. removing a context of an element editor when leaving the editor\n * to go to setup page.\n */\n pop(context) {\n const existingCtx = this.contextStack.find((ctx) => ctx.key === context.key);\n if (!existingCtx) {\n return;\n }\n // NOTE: since we should not have any duplicated contexts\n // it's safe to search from bottom to top of the stack\n const idx = this.contextStack.indexOf(existingCtx);\n if (idx !== -1) {\n this.contextStack = this.contextStack\n .slice(0, idx)\n // remove all transient contexts\n .filter((ctx) => !ctx.isTransient);\n }\n }\n}\n//# sourceMappingURL=ApplicationNavigationContextService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LogEvent } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nexport const collectKeyedCommandConfigEntriesFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: entry[0],\n content: entry[1],\n}));\nexport class CommandService {\n applicationStore;\n commandRegistry = new Map();\n constructor(applicationStore) {\n makeObservable(this, {\n commandRegistry: observable,\n registerCommand: action,\n deregisterCommand: action,\n });\n this.applicationStore = applicationStore;\n }\n registerCommand(command) {\n const commandKey = command.key;\n if (this.commandRegistry.has(commandKey)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.COMMAND_CENTER_REGISTRATION__FAILURE), `Can't register command: command is already registered`);\n return;\n }\n this.commandRegistry.set(commandKey, command);\n }\n deregisterCommand(commandKey) {\n this.commandRegistry.delete(commandKey);\n }\n runCommand(commandKey, args) {\n const command = this.commandRegistry.get(commandKey);\n if (command && (!command.trigger || command.trigger())) {\n command.action?.(args);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=CommandService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isNonNullable } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport class KeyboardShortcutsService {\n applicationStore;\n /**\n * NOTE: with this design, the relationship between command and key is many-to-many\n * We can have multiple commands being mapped to the same key combination, and vice versa\n */\n keyMap = new Map();\n commandKeyMap = new Map();\n isHotkeysBlocked = false;\n constructor(applicationStore) {\n makeObservable(this, {\n keyMap: observable,\n commandKeyMap: observable,\n isHotkeysBlocked: observable,\n addHotkey: action,\n blockGlobalHotkeys: action,\n unblockGlobalHotkeys: action,\n });\n this.applicationStore = applicationStore;\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraKeyedCommandConfigEntries?.() ?? [])\n .forEach((entry) => {\n // NOTE: since we allow mapping multiple commands to the same key combination\n // and when dispatching the command with a particular key combination, we only\n // execute the first matching command, if we override the config, we would need\n // to add them to the beginning of this list.\n // TODO: do validation on hot keys, hot keys which consist only of modifier keys, e.g. `Shift Shift` should not be supported\n const shortcuts = [\n entry.content.defaultKeyboardShortcut,\n ...(entry.content.additionalKeyboardShortcuts ?? []),\n ].filter(isNonNullable);\n if (shortcuts.length) {\n shortcuts.forEach((shortcut) => this.addHotkey(entry.key, shortcut));\n }\n else {\n if (!this.commandKeyMap.has(entry.key)) {\n this.commandKeyMap.set(entry.key, []);\n }\n }\n });\n }\n blockGlobalHotkeys() {\n this.isHotkeysBlocked = true;\n }\n unblockGlobalHotkeys() {\n this.isHotkeysBlocked = false;\n }\n addHotkey(commandKey, keyCombination) {\n // add shortcut to command key map\n this.commandKeyMap.set(commandKey, [\n ...(this.commandKeyMap.get(commandKey) ?? []),\n keyCombination,\n ]);\n // add new key map\n this.keyMap.set(keyCombination, [\n ...(this.keyMap.get(keyCombination) ?? []).filter((key) => key !== commandKey),\n commandKey,\n ]);\n }\n dispatch(keyCombination) {\n if (this.isHotkeysBlocked) {\n return;\n }\n const mappedCommandKeys = this.keyMap.get(keyCombination) ?? [];\n for (const commandKey of mappedCommandKeys) {\n // find the first command that works then escape\n if (this.applicationStore.commandService.runCommand(commandKey)) {\n return;\n }\n }\n }\n}\n//# sourceMappingURL=KeyboardShortcutsService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const DEFAULT_TAB_SIZE = 2;\nexport const DEFAULT_MONOSPACED_FONT_FAMILY = 'Roboto Mono';\nexport const DEFAULT_DATE_TIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\nexport const DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH = 2;\nexport const DEFAULT_TYPEAHEAD_SEARCH_LIMIT = 10;\n//# sourceMappingURL=ApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\n// NOTE: using Unicode for ANSI escape\n// See https://stackoverflow.com/questions/26153308/best-ansi-escape-beginning\n// See https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797\nexport var DISPLAY_ANSI_ESCAPE;\n(function (DISPLAY_ANSI_ESCAPE) {\n DISPLAY_ANSI_ESCAPE[\"RESET\"] = \"\\u001B[0m\";\n // text decoration\n DISPLAY_ANSI_ESCAPE[\"BOLD\"] = \"\\u001B[1m\";\n DISPLAY_ANSI_ESCAPE[\"DIM\"] = \"\\u001B[2m\";\n DISPLAY_ANSI_ESCAPE[\"ITALIC\"] = \"\\u001B[3m\";\n DISPLAY_ANSI_ESCAPE[\"UNDERLINE\"] = \"\\u001B[4m\";\n DISPLAY_ANSI_ESCAPE[\"BLINKING\"] = \"\\u001B[5m\";\n DISPLAY_ANSI_ESCAPE[\"STRIKETHROUGH\"] = \"\\u001B[9m\";\n // foreground\n DISPLAY_ANSI_ESCAPE[\"BLACK\"] = \"\\u001B[30m\";\n DISPLAY_ANSI_ESCAPE[\"RED\"] = \"\\u001B[31m\";\n DISPLAY_ANSI_ESCAPE[\"GREEN\"] = \"\\u001B[32m\";\n DISPLAY_ANSI_ESCAPE[\"YELLOW\"] = \"\\u001B[33m\";\n DISPLAY_ANSI_ESCAPE[\"BLUE\"] = \"\\u001B[34m\";\n DISPLAY_ANSI_ESCAPE[\"MAGENTA\"] = \"\\u001B[35m\";\n DISPLAY_ANSI_ESCAPE[\"CYAN\"] = \"\\u001B[36m\";\n DISPLAY_ANSI_ESCAPE[\"WHITE\"] = \"\\u001B[37m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLACK\"] = \"\\u001B[1;30m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_RED\"] = \"\\u001B[1;31m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_GREEN\"] = \"\\u001B[1;32m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_YELLOW\"] = \"\\u001B[1;33m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLUE\"] = \"\\u001B[1;34m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_MAGENTA\"] = \"\\u001B[1;35m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_CYAN\"] = \"\\u001B[1;36m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_WHITE\"] = \"\\u001B[1;37m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLACK\"] = \"\\u001B[2;30m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_RED\"] = \"\\u001B[2;31m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_GREEN\"] = \"\\u001B[2;32m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_YELLOW\"] = \"\\u001B[2;33m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLUE\"] = \"\\u001B[2;34m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_MAGENTA\"] = \"\\u001B[2;35m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_CYAN\"] = \"\\u001B[2;36m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_WHITE\"] = \"\\u001B[2;37m\";\n // background\n DISPLAY_ANSI_ESCAPE[\"BLACK_BG\"] = \"\\u001B[40m\";\n DISPLAY_ANSI_ESCAPE[\"RED_BG\"] = \"\\u001B[41m\";\n DISPLAY_ANSI_ESCAPE[\"GREEN_BG\"] = \"\\u001B[42m\";\n DISPLAY_ANSI_ESCAPE[\"YELLOW_BG\"] = \"\\u001B[43m\";\n DISPLAY_ANSI_ESCAPE[\"BLUE_BG\"] = \"\\u001B[44m\";\n DISPLAY_ANSI_ESCAPE[\"MAGENTA_BG\"] = \"\\u001B[45m\";\n DISPLAY_ANSI_ESCAPE[\"CYAN_BG\"] = \"\\u001B[46m\";\n DISPLAY_ANSI_ESCAPE[\"WHITE_BG\"] = \"\\u001B[47m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLACK_BG\"] = \"\\u001B[1;40m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_RED_BG\"] = \"\\u001B[1;41m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_GREEN_BG\"] = \"\\u001B[1;42m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_YELLOW_BG\"] = \"\\u001B[1;43m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLUE_BG\"] = \"\\u001B[1;44m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_MAGENTA_BG\"] = \"\\u001B[1;45m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_CYAN_BG\"] = \"\\u001B[1;46m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_WHITE_BG\"] = \"\\u001B[1;47m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLACK_BG\"] = \"\\u001B[2;40m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_RED_BG\"] = \"\\u001B[2;41m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_GREEN_BG\"] = \"\\u001B[2;42m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_YELLOW_BG\"] = \"\\u001B[2;43m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLUE_BG\"] = \"\\u001B[2;44m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_MAGENTA_BG\"] = \"\\u001B[2;45m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_CYAN_BG\"] = \"\\u001B[2;46m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_WHITE_BG\"] = \"\\u001B[2;47m\";\n})(DISPLAY_ANSI_ESCAPE || (DISPLAY_ANSI_ESCAPE = {}));\n/**\n * NOTE: this is the line and the column of the viewport of the terminal;\n * Also, line and column start from 1\n */\nexport const ANSI_moveCursor = (line, column) => `\\x1b[${line};${column}H`;\nexport const ANSI_moveCursorUp = (val, start) => start ? `\\x1b[${val}F` : `\\x1b[${val}A`;\nexport const ANSI_moveCursorDown = (val, start) => start ? `\\x1b[${val}E` : `\\x1b[${val}B`;\nexport const ANSI_moveCursorRight = (val) => `\\x1b[${val}C`;\nexport const ANSI_moveCursorLeft = (val) => `\\x1b[${val}D`;\nexport const ANSI_moveCursorToColumn = (val) => `\\x1b[${val}G`;\nclass ConsoleSearchConfiguration {\n searchInput;\n searchText = '';\n useRegex = false;\n matchWholeWord = false;\n matchCaseSensitive = false;\n resultCount;\n currentResultIndex;\n constructor() {\n makeObservable(this, {\n searchText: observable,\n useRegex: observable,\n matchWholeWord: observable,\n matchCaseSensitive: observable,\n resultCount: observable,\n currentResultIndex: observable,\n });\n }\n setSearchInput(el) {\n this.searchInput = el;\n }\n focus() {\n this.searchInput?.focus();\n }\n}\nexport class Console {\n applicationStore;\n searchConfig = new ConsoleSearchConfiguration();\n constructor(applicationStore) {\n makeObservable(this, {\n setSearchText: action,\n setSearchRegex: action,\n setSearchWholeWord: action,\n setSearchCaseSensitive: action,\n setSearchResultCount: action,\n setSearchCurrentResultIndex: action,\n });\n this.applicationStore = applicationStore;\n }\n setSearchText(val) {\n this.searchConfig.searchText = val;\n }\n setSearchRegex(val) {\n this.searchConfig.useRegex = val;\n }\n setSearchWholeWord(val) {\n this.searchConfig.matchWholeWord = val;\n }\n setSearchCaseSensitive(val) {\n this.searchConfig.matchCaseSensitive = val;\n }\n setSearchResultCount(val) {\n this.searchConfig.resultCount = val;\n }\n setSearchCurrentResultIndex(val) {\n this.searchConfig.currentResultIndex = val;\n }\n}\nexport class OutputConsole extends Console {\n}\nexport class Terminal extends Console {\n preserveLog = false;\n commandRegistry = new Map();\n constructor(applicationStore) {\n super(applicationStore);\n makeObservable(this, {\n preserveLog: observable,\n setPreserveLog: action,\n });\n }\n setPreserveLog(val) {\n this.preserveLog = val;\n }\n showHelp() {\n // do nothing\n }\n showCommonANSIEscapeSequences() {\n // do nothing\n }\n}\n//# sourceMappingURL=Terminal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { stringify as losslessStringify, parse as losslessParse, isSafeNumber as lossIsSafeNumber, } from 'lossless-json';\nimport CSVParser from 'papaparse';\nimport { assertNonNullable } from '../error/AssertionUtils.js';\nexport const capitalize = (value) => value.length >= 1\n ? `${value[0].toUpperCase()}${value.substring(1, value.length)}`\n : value;\nexport const toSentenceCase = (value) => (value ?? '').trim().replace(/^(?:\\w+)\\b/u, (val) => capitalize(val));\nexport const TITLE_CASE_EXCEPTION_WORDS = [\n // We roughly follow AP style for simplicity\n // See https://en.wikipedia.org/wiki/Title_case\n 'a',\n 'an',\n 'the',\n 'but',\n 'by',\n 'nor',\n 'and',\n 'or',\n 'so',\n 'as',\n 'yet',\n 'for',\n 'in',\n 'nor',\n 'of',\n 'on',\n 'at',\n 'out',\n 'to',\n 'up',\n];\nexport const toTitleCase = (value) => (value ?? '')\n .trim()\n .replace(/\\b(?:\\w+)\\b/gu, (val) => {\n // lowercase minor words (typically articles, short prepositions, and some conjunctions)\n if (TITLE_CASE_EXCEPTION_WORDS.includes(val.toLowerCase())) {\n return val.toLowerCase();\n }\n return capitalize(val);\n})\n // always capitalize first and last word\n .replace(/^(?:\\w+)\\b/u, (val) => capitalize(val))\n .replace(/\\b(?:\\w+)$/u, (val) => capitalize(val));\nexport const prettyCONSTName = (value) => {\n if (!value) {\n return '';\n }\n // This handles our constant naming convention, e.g. SOME_VALUE, __PRIVATE_VALUE__, etc.\n if (value.trim().match(/^[A-Z_]+$/)) {\n return toTitleCase(value.trim().replace(/_+/gu, ' ').toLowerCase());\n }\n return (capitalize(value.trim())\n // NOTE: here we must use capturing group as we also need to capture the breakpoint/separator as chunks\n .split(/(?<chunk>[A-Z][a-z]+|[0-9]+)/)\n .map((chunk) => chunk.toUpperCase() === chunk\n ? chunk\n : chunk.charAt(0).toUpperCase() + chunk.slice(1).toLowerCase())\n .filter(Boolean)\n .join(' ')\n .replace(/_+/gu, ' ')\n .replace(/\\s+/gu, ' '));\n};\nexport const tryToFormatJSONString = (value, tabSize = 2) => {\n try {\n return JSON.stringify(JSON.parse(value), undefined, tabSize);\n }\n catch {\n return value;\n }\n};\nexport const tryToMinifyJSONString = (value) => {\n try {\n return JSON.stringify(JSON.parse(value));\n }\n catch {\n return value.replace(/\\n\\s*/g, '');\n }\n};\n/**\n * NOTE: this splits a string value into an array of strings by using a\n * delimiter of a comma if the string is only one line. However, if the\n * string has multiple lines, the delimiter will not be applied. This is so\n * that for an example input of multiple lines like\n * One, Comma in One\n * Two\n * Three\n * will still equal 3 elements (['One, Comma in One', 'Two', 'Three']) rather than 4\n */\nexport const parseCSVString = (value) => {\n let parseData;\n if (value.includes('\\n')) {\n parseData = value.trim().split(/\\r?\\n|\\r|\\n/g);\n return parseData;\n }\n else {\n const parseResult = CSVParser.parse(value.trim(), {\n delimiter: ',',\n });\n parseData = parseResult.data.flat();\n if (parseResult.errors.length) {\n // if (\n // parseResult.errors[0] &&\n // parseResult.errors[0].code === 'UndetectableDelimiter' &&\n // parseResult.errors[0].type === 'Delimiter' &&\n // parseResult.data.length === 1\n // ) {\n // // NOTE: this happens when the user only put one item in the value input\n // // we can go the other way by ensure the input has a comma but this is arguably neater\n // // as it tinkers with the parser\n // } else {\n // // there were some parsing error, escape\n // // NOTE: ideally, we could show a warning here\n // }\n return undefined;\n }\n else {\n return parseData;\n }\n }\n};\nexport const csvStringify = (value) => CSVParser.unparse(value);\n/**\n * One very common use case is that we get the JSON as response from the server than we will convert this to a string and persist\n * in the protocol. As such, we have to make sure this string is safe in PURE grammar format, i.e. it will escape single quotes\n * properly since PURE strings are wrapped in a pair of single quotes. The following pair of escape/unescape method does the simple job of\n * converting a JSON string to/from PURE grammar string\n *\n * NOTE: this is slightly different than escaping/unescaping JS string or normal JSON string, this is conversion is actually simplier since\n * the escaping is naturally handling by string conversion in Javascript, we just need to have special handling for the escaping of single-quotes\n * See https://stackoverflow.com/questions/3020094/how-should-i-escape-strings-in-json\n * See https://github.com/joliss/js-string-escape/blob/master/index.js\n */\nexport const fromGrammarString = (value) => value.replace(/\\\\'/gu, \"'\");\nexport const toGrammarString = (value) => value.replace(/'/gu, \"\\\\'\");\n/**\n * These are the sets of methods that helps with lossless conversion of JSON to/from text.\n *\n * The implementation of `JSON.parse` and `JSON.stringify` in Javascript is not lossless, e.g. values like 1.0 (a double) is automatically converted to 1 (an integer).\n * This pairs of method will convert the JSON losslessly. One caveat is that numeric values are stored as LosslessNumber, a data type which stores the numeric value as a string.\n *\n * NOTE: One can perform regular operations with a LosslessNumber, and it will throw an error when this would result in losing information.\n * But use this with discretion since it it does not result in the same object as `JSON.parse`\n */\nexport { losslessParse as parseLosslessJSON };\nexport { lossIsSafeNumber as isLossSafeNumber };\nexport const stringifyLosslessJSON = (val, replacer, space) => {\n const result = losslessStringify(val, replacer, space);\n assertNonNullable(result, `Can't stringify lossless JSON value`);\n return result;\n};\nexport const tryToFormatLosslessJSONString = (value, tabSize = 2) => {\n try {\n return stringifyLosslessJSON(losslessParse(value), undefined, tabSize);\n }\n catch {\n return value;\n }\n};\nexport const tryToMinifyLosslessJSONString = (value) => {\n try {\n return tryToFormatLosslessJSONString(value, 0);\n }\n catch {\n return value.replace(/\\n\\s*/g, '');\n }\n};\nexport const indent = (value, indentText) => value\n .split('\\n')\n .map((line) => `${indentText}${line}`)\n .join('\\n');\nexport const quantify = (value, label, pluralForm) => value <= 0\n ? `no ${pluralForm ?? `${label}s`}`\n : value > 1\n ? `${value} ${pluralForm ?? `${label}s`}`\n : `1 ${label}`;\nexport const quantifyList = (val, label, pluralForm) => quantify(val.length, label, pluralForm);\n//# sourceMappingURL=FormatterUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uniqBy } from '../CommonUtils.js';\nimport { guaranteeNonNullable } from '../error/AssertionUtils.js';\n/**\n * List of keyboard named key\n * See https://www.w3.org/TR/uievents-key/#named-key-attribute-values\n * See https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n */\nexport var KEYBOARD_NAMED_KEY;\n(function (KEYBOARD_NAMED_KEY) {\n KEYBOARD_NAMED_KEY[\"TAB\"] = \"Tab\";\n KEYBOARD_NAMED_KEY[\"CAPSLOCK\"] = \"CapsLock\";\n KEYBOARD_NAMED_KEY[\"SHIFT\"] = \"Shift\";\n KEYBOARD_NAMED_KEY[\"META\"] = \"Meta\";\n KEYBOARD_NAMED_KEY[\"ALT\"] = \"Alt\";\n KEYBOARD_NAMED_KEY[\"CONTROL\"] = \"Control\";\n KEYBOARD_NAMED_KEY[\"SPACE\"] = \"Space\";\n KEYBOARD_NAMED_KEY[\"ESC\"] = \"Escape\";\n KEYBOARD_NAMED_KEY[\"LEFT\"] = \"ArrowLeft\";\n KEYBOARD_NAMED_KEY[\"RIGHT\"] = \"ArrowRight\";\n KEYBOARD_NAMED_KEY[\"UP\"] = \"ArrowUp\";\n KEYBOARD_NAMED_KEY[\"DOWN\"] = \"ArrowDown\";\n KEYBOARD_NAMED_KEY[\"ENTER\"] = \"Enter\";\n KEYBOARD_NAMED_KEY[\"DELETE\"] = \"Delete\";\n KEYBOARD_NAMED_KEY[\"BACKSPACE\"] = \"Backspace\";\n KEYBOARD_NAMED_KEY[\"BACKQUOTE\"] = \"Backquote\";\n})(KEYBOARD_NAMED_KEY || (KEYBOARD_NAMED_KEY = {}));\n/**\n * Parses key bindings and pack them into parts\n *\n * grammar = `<sequence>`\n * <sequence> = `<press> <press> <press> ...`\n * <press> = `<key>` or `<mods>+<key>`\n * <mods> = `<mod>+<mod>+...`\n */\nexport function parseKeybinding(value) {\n return value\n .trim()\n .split(' ')\n .map((press) => {\n const modifiers = press.split(/\\b\\+/);\n const key = guaranteeNonNullable(modifiers.pop(), `Can't parse key binding: last part must be a non-modifier key`);\n return { modifiers, key };\n });\n}\n/**\n * Checks if a series of keypress events matches a key binding sequence either partially or exactly.\n */\nexport const isMatchingKeyPressData = (event, keyPressData) => \n// NOTE: we allow specifying with `event.code` only\n// - key: value of the key pressed by the user, taking into consideration the state of modifier keys\n// such as `Shift` as well as the keyboard locale and layout. This is not desirable, because\n// for matching, we have to do uppercase comparison, in Mac, if we presss Alt+B for example, we will\n// get symbols\n// - code: represents a physical key on the keyboard (as opposed to the character generated by pressing the key);\n// i.e. this property returns a value that isn't altered by keyboard layout or the state of the modifier keys\n// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\nkeyPressData.key === event.code &&\n // ensure all the modifiers in the keybinding are pressed\n keyPressData.modifiers.every((modifier) => event.getModifierState(modifier)) &&\n // modifier keys (Shift, Control, etc.) change the meaning of a keybinding,\n // so if they are pressed but aren't part of the current keypress sequence, it's not a match.\n ![\n KEYBOARD_NAMED_KEY.SHIFT,\n KEYBOARD_NAMED_KEY.META,\n KEYBOARD_NAMED_KEY.ALT,\n KEYBOARD_NAMED_KEY.CONTROL,\n ].find((modifier) => \n // check if the current key pressed is one of the modifier keys\n keyPressData.key !== modifier &&\n event.getModifierState(modifier) &&\n // check if the modifier key pressed is part of the key combination\n !keyPressData.modifiers.includes(modifier));\nexport const isMatchingKeyCombination = (event, keyCombination) => isMatchingKeyPressData(event, guaranteeNonNullable(parseKeybinding(keyCombination)[0]));\n/**\n * Create event listener for keyboard event (recommended to be used with `keydown/keyup` event)\n *\n * This succinct logic is adapted from `tinykeys`\n * See https://github.com/jamiebuilds/tinykeys\n */\nexport function createKeybindingsHandler(config) {\n // this holds the possible hotkey matches for the current sequence of keyboard events\n const possibleMatches = new Map();\n // NOTE: this timer is used to time the duration between key presses to determine when to\n // cancel the sequence, we set the default timeout to be 1000, as short timeout\n // can be slightly too fast for users\n let timer = null;\n const DEFAULT_TIMEOUT_DURATION = 1000;\n return (event) => {\n // Ensure and stop any event that isn't an keyboard event.\n // e.g. auto-complete option navigation and selection could fire an event\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n // NOTE: create a flat collection of key combination to handler, make sure\n // for each combination, only the first matching entry is considered,\n // i.e. explicitly here, we don't handle multiple handling\n // See https://github.com/finos/legend-studio/issues/1969\n uniqBy(Object.values(config)\n .flatMap((entry) => entry.combinations.map((combination) => ({\n combination,\n handler: entry.handler,\n })))\n .filter((entry) => entry.combination.length), (val) => val.combination)\n // here, we go through each hotkey combination, and:\n // 1. parse the key combination\n // 2. if the key combination is already part of the possible matches,\n // retrieve the current match result: this result is the list of the\n // keypresses left to complete the combination, else, we just add the\n // new combination and proceed the same way\n .forEach((entry) => {\n const keyCombination = entry.combination;\n const parsedKeyCombination = parseKeybinding(entry.combination);\n // abort when we encounter an empty key combination\n if (!parsedKeyCombination.length) {\n return;\n }\n const remainingExpectedKeyPresses = possibleMatches.get(keyCombination) ?? parsedKeyCombination;\n // this should never be empty, as it becomes empty, it must mean:\n // 1. either the key combination has been matched before and not cleared\n // 2. the key combination is empty, which should not be possible due to the guard above\n const currentExpectedKeyPress = guaranteeNonNullable(remainingExpectedKeyPresses[0]);\n const matches = isMatchingKeyPressData(event, currentExpectedKeyPress);\n if (!matches) {\n // if the current key pressed is a modifier key\n // we don't consider this as a non-match yet\n // NOTE: here we use `event.key` instead of `event.code` since for `Shift` key,\n // the key is always `Shift` where the key code can be `ShiftLeft`\n if (!event.getModifierState(event.key)) {\n possibleMatches.delete(keyCombination);\n }\n }\n else if (remainingExpectedKeyPresses.length > 1) {\n // matches found, not all keypresses of the key combination have been fulfilled, remove\n // the matched keypress part of the combination (if it's in the list of possible matches)\n possibleMatches.set(keyCombination, remainingExpectedKeyPresses.slice(1));\n }\n else {\n // matches found, all keypresses of the combination have been fulfilled, call the handler\n possibleMatches.delete(keyCombination);\n entry.handler(keyCombination, event);\n }\n });\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(possibleMatches.clear.bind(possibleMatches), DEFAULT_TIMEOUT_DURATION);\n };\n}\n//# sourceMappingURL=KeyBinding.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTheme, StyledEngineProvider, ThemeProvider, } from '@mui/material';\nconst LegendCustomMUITheme = createTheme({\n transitions: {\n // disable all transition\n // NOTE: this is a catch-all way to remove all transitions\n // We technically don't need this because we can configure transition props for each component\n create: () => 'none',\n },\n});\nexport const LegendStyleProvider = (props) => {\n const { children } = props;\n return (\n // Make sure CSS for MUI generated by `emotion` are injected before our styling code\n // this ensures our styling code can override MUI styles\n // See https://mui.com/guides/interoperability/#css-injection-order-3\n _jsx(StyledEngineProvider, { injectFirst: true, children: _jsx(ThemeProvider, { theme: LegendCustomMUITheme, children: children }) }));\n};\n//# sourceMappingURL=LegendStyleProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clsx } from 'clsx';\nexport const generateSimpleDIVComponent = (componentName, divClassName) => {\n const component = (props) => {\n const { children, className } = props;\n return (_jsx(\"div\", { className: clsx(divClassName, className), \"data-testid\": props['data-testid'], children: children }));\n };\n component.displayName = componentName;\n return component;\n};\n//# sourceMappingURL=ComponentCreatorUtils.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { prettyCONSTName, toTitleCase } from '@finos/legend-shared';\nimport { clsx } from 'clsx';\nimport { generateSimpleDIVComponent } from '../utils/ComponentCreatorUtils.js';\nexport const Modal = (props) => {\n const { children, darkMode, className } = props;\n return (_jsx(\"div\", { className: clsx('modal', { 'modal--dark': darkMode }, className), children: children }));\n};\nexport const ModalTitle = (props) => {\n const { title, icon, className } = props;\n return (_jsxs(\"div\", { className: clsx('modal__title', className), children: [icon && _jsx(\"div\", { className: \"modal__title__icon\", children: icon }), _jsx(\"div\", { className: \"modal__title__label\", children: toTitleCase(title) })] }));\n};\nexport const ModalHeader = (props) => {\n const { title, children, className } = props;\n if (!children && title) {\n return (_jsx(\"div\", { className: clsx('modal__header', className), children: _jsx(ModalTitle, { title: title }) }));\n }\n return _jsx(\"div\", { className: clsx('modal__header', className), children: children });\n};\nexport const ModalHeaderActions = generateSimpleDIVComponent('ModalHeaderActions', 'modal__header__actions');\nexport const ModalBody = generateSimpleDIVComponent('ModalBody', 'modal__body');\nexport const ModalFooter = generateSimpleDIVComponent('ModalFooter', 'modal__footer');\nexport const ModalFooterStatus = generateSimpleDIVComponent('ModalFooterStatus', 'modal__footer__status');\nexport const ModalFooterButton = (props) => {\n const { onClick, inProgressText, text, title, children, disabled, className, darkMode, formatText, type, preventFormSubmit, } = props;\n const isDarkMode = darkMode ?? true;\n const isFormatText = formatText ?? true;\n const isSecondary = type === 'secondary';\n const isPreventFormSubmit = preventFormSubmit ?? false;\n return (_jsxs(\"button\", { className: clsx('btn', 'modal__footer__btn', {\n 'btn--dark': isDarkMode,\n 'btn--light': !isDarkMode,\n 'modal__footer__btn--primary': !isSecondary,\n 'modal__footer__btn--secondary': isSecondary,\n }, className), title: title, onClick: onClick, disabled: Boolean(inProgressText) || disabled, type: isPreventFormSubmit ? 'button' : undefined, children: [inProgressText\n ? prettyCONSTName(inProgressText)\n : isFormatText\n ? prettyCONSTName(text)\n : text, children] }));\n};\n//# sourceMappingURL=Modal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nexport var ActionAlertType;\n(function (ActionAlertType) {\n ActionAlertType[\"STANDARD\"] = \"STANDARD\";\n ActionAlertType[\"CAUTION\"] = \"CAUTION\";\n})(ActionAlertType || (ActionAlertType = {}));\nexport var ActionAlertActionType;\n(function (ActionAlertActionType) {\n ActionAlertActionType[\"STANDARD\"] = \"STANDARD\";\n ActionAlertActionType[\"PROCEED_WITH_CAUTION\"] = \"PROCEED_WITH_CAUTION\";\n ActionAlertActionType[\"PROCEED\"] = \"PROCEED\";\n})(ActionAlertActionType || (ActionAlertActionType = {}));\nexport class AlertService {\n applicationStore;\n blockingAlertInfo;\n actionAlertInfo;\n constructor(applicationStore) {\n makeObservable(this, {\n blockingAlertInfo: observable,\n actionAlertInfo: observable,\n setBlockingAlert: action,\n setActionAlertInfo: action,\n });\n this.applicationStore = applicationStore;\n }\n setBlockingAlert(alertInfo) {\n if (alertInfo) {\n this.applicationStore.keyboardShortcutsService.blockGlobalHotkeys();\n }\n else {\n this.applicationStore.keyboardShortcutsService.unblockGlobalHotkeys();\n }\n this.blockingAlertInfo = alertInfo;\n }\n setActionAlertInfo(alertInfo) {\n if (this.actionAlertInfo && alertInfo) {\n this.applicationStore.notificationService.notifyIllegalState('Action alert is stacked: new alert is invoked while another one is being displayed');\n }\n if (alertInfo) {\n this.applicationStore.keyboardShortcutsService.blockGlobalHotkeys();\n }\n else {\n this.applicationStore.keyboardShortcutsService.unblockGlobalHotkeys();\n }\n this.actionAlertInfo = alertInfo;\n }\n}\n//# sourceMappingURL=AlertService.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext, useContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nconst ApplicationStoreContext = createContext(undefined);\nexport const useApplicationStore = () => guaranteeNonNullable(useContext(ApplicationStoreContext), `Can't find application store in context`);\nexport const ApplicationStoreProvider = ({ children, store, }) => {\n const applicationStore = useLocalObservable(() => store);\n return (_jsx(ApplicationStoreContext.Provider, { value: applicationStore, children: children }));\n};\n//# sourceMappingURL=ApplicationStoreProvider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Dialog, ModalBody, ModalFooter, ModalHeader } from '@finos/legend-art';\nimport { ActionAlertActionType, ActionAlertType, } from '../stores/AlertService.js';\nimport { observer } from 'mobx-react-lite';\nimport { noop } from '@finos/legend-shared';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nconst getActionButtonClassName = (type) => {\n switch (type) {\n case ActionAlertActionType.PROCEED_WITH_CAUTION:\n return 'btn--caution';\n case ActionAlertActionType.PROCEED:\n case ActionAlertActionType.STANDARD:\n default:\n return 'btn--dark';\n }\n};\nconst ActionAlertContent = observer((props) => {\n const { info } = props;\n const applicationStore = useApplicationStore();\n const { title, message, prompt, type, onClose, onEnter, actions } = info;\n const handleClose = () => {\n onClose?.();\n applicationStore.alertService.setActionAlertInfo(undefined);\n };\n const handleEnter = () => onEnter?.();\n const handleSubmit = () => {\n actions.find((action) => action.default)?.handler?.();\n handleClose();\n };\n return (_jsx(Dialog, { open: Boolean(applicationStore.alertService.actionAlertInfo), onClose: noop, TransitionProps: {\n onEnter: handleEnter,\n }, children: _jsxs(\"form\", { onSubmit: (event) => {\n event.preventDefault();\n handleSubmit();\n }, className: `modal search-modal modal--dark blocking-alert blocking-alert--${(type ?? ActionAlertType.STANDARD).toLowerCase()}`, children: [title && _jsx(ModalHeader, { title: title }), _jsxs(ModalBody, { children: [_jsx(\"div\", { className: \"blocking-alert__summary-text\", children: message }), _jsx(\"div\", { className: \"blocking-alert__prompt-text\", children: prompt })] }), _jsxs(ModalFooter, { children: [actions.map((action, idx) => {\n // NOTE: need to prevent default for the submit button, otherwise, we would get the warning \"Form submission canceled because the form is not connected\"\n // See https://stackoverflow.com/a/58234405\n const handler = (e) => {\n e.preventDefault();\n action.handler?.();\n handleClose();\n };\n return (_jsx(\"button\", { type: action.default ? 'submit' : 'button', className: `btn btn--dark ${getActionButtonClassName(action.type ?? ActionAlertActionType.STANDARD)}`, onClick: handler, autoFocus: Boolean(action.default), children: action.label }, idx));\n }), !actions.length && (_jsx(\"button\", { type: \"button\" // prevent this toggler being activated on form submission\n , className: \"btn btn--dark blocking-alert__action--standard\", onClick: handleClose, children: \"Cancel\" }))] })] }) }));\n});\nexport const ActionAlert = observer(() => {\n const applicationStore = useApplicationStore();\n const actionAlertInfo = applicationStore.alertService.actionAlertInfo;\n if (!actionAlertInfo) {\n return null;\n }\n return _jsx(ActionAlertContent, { info: actionAlertInfo });\n});\n//# sourceMappingURL=ActionAlert.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useRef } from 'react';\nimport { clsx } from '../utils/ComponentUtils.js';\nexport const PanelLoadingIndicator = (props) => {\n const { isLoading, className } = props;\n const ref = useRef(null);\n useEffect(() => {\n if (ref.current) {\n if (isLoading) {\n ref.current.parentElement?.classList.add('panel-loading-indicator__container');\n }\n else {\n ref.current.parentElement?.classList.remove('panel-loading-indicator__container');\n }\n }\n }, [isLoading]);\n return (_jsx(\"div\", { ref: ref, className: clsx(className, `panel-loading-indicator${isLoading ? '' : '--disabled'}`) }));\n};\n//# sourceMappingURL=PanelLoadingIndicator.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { PanelLoadingIndicator, Dialog, Modal, ModalBody, } from '@finos/legend-art';\nimport { noop } from '@finos/legend-shared';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\n/**\n * The users of this need to justify their use case because blocking app disrupts the UX flow.\n * Of course there are legitimate use cases but please consult the team when you do so.\n * See https://material.io/components/dialogs#usage\n */\nexport const BlockingAlert = observer(() => {\n const applicationStore = useApplicationStore();\n const info = applicationStore.alertService.blockingAlertInfo;\n if (!info) {\n return null;\n }\n return (_jsx(Dialog, { open: Boolean(info), onClose: noop, classes: {\n root: 'blocking-alert__root-container',\n container: 'blocking-alert__container',\n }, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: \"blocking-alert\", children: [_jsx(PanelLoadingIndicator, { isLoading: Boolean(info.showLoading) }), _jsxs(ModalBody, { children: [_jsx(\"div\", { className: \"blocking-alert__message\", children: info.message }), info.prompt && (_jsx(\"div\", { className: \"blocking-alert__message__prompt\", children: info.prompt }))] })] }) }));\n});\n//# sourceMappingURL=BlockingAlert.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint @typescript-eslint/no-unsafe-assignment: 0 */\n//======================================================= TB =======================================================\nimport { TbArrowsJoin2, TbArrowsSplit2, TbMathFunction, TbBook, TbCircleOff, TbCalendarTime, TbClockEdit, TbSql, TbBrandSnowflake, } from 'react-icons/tb';\nexport const ArrowsJoinIcon = TbArrowsJoin2;\nexport const ArrowsSplitIcon = TbArrowsSplit2;\nexport const FunctionIcon = TbMathFunction;\nexport const RepoIcon = TbBook;\nexport const OffIcon = TbCircleOff;\nexport const CalendarClockIcon = TbCalendarTime;\nexport const LastModifiedIcon = TbClockEdit;\nexport const SQLIcon = TbSql;\nexport const Snowflake_BrandIcon = TbBrandSnowflake;\n//======================================================= MD =======================================================\nimport { MdManageSearch, MdModeEdit, MdTextFields, MdMoreVert, MdMoreHoriz, MdWrapText, MdSaveAs, MdSave, MdVerticalAlignBottom, MdRefresh, MdFunctions, MdCompareArrows, MdPlaylistAddCheck, MdAdd, // to be reviewed\nMdEdit, // to be reviewed\nMdSubject, MdViewHeadline, MdAssistant, MdSettingsEthernet, MdLink, MdWindow, MdReviews, MdCalculate, MdRocketLaunch, MdOutlineDataset, MdVerified, MdQueryStats, MdFilterCenterFocus, MdOutlineDescription, MdQuestionAnswer, MdUnfoldLess, MdUnfoldMore, } from 'react-icons/md';\nexport const ManageSearchIcon = MdManageSearch; // to be reviewed\nexport const PencilIcon = MdModeEdit;\nexport const StringTypeIcon = MdTextFields;\nexport const MoreVerticalIcon = MdMoreVert;\nexport const MoreHorizontalIcon = MdMoreHoriz;\nexport const WrapTextIcon = MdWrapText;\nexport const SaveAsIcon = MdSaveAs;\nexport const SaveCurrIcon = MdSave;\nexport const VerticalAlignBottomIcon = MdVerticalAlignBottom;\nexport const RefreshIcon = MdRefresh;\nexport const SigmaIcon = MdFunctions;\nexport const CompareIcon = MdCompareArrows;\nexport const CheckListIcon = MdPlaylistAddCheck;\nexport const AddIcon = MdAdd; // to be reviewed\nexport const EditIcon = MdEdit; // to be reviewed\nexport const SubjectIcon = MdSubject;\nexport const ViewHeadlineIcon = MdViewHeadline;\nexport const AssistantIcon = MdAssistant;\nexport const SettingsEthernetIcon = MdSettingsEthernet;\nexport const LinkIcon = MdLink;\nexport const WindowIcon = MdWindow;\nexport const ReviewIcon = MdReviews;\nexport const CalculateIcon = MdCalculate;\nexport const LaunchIcon = MdRocketLaunch;\nexport const DatasetIcon = MdOutlineDataset;\nexport const VerifiedIcon = MdVerified;\nexport const QueryIcon = MdQueryStats;\nexport const CenterFocusIcon = MdFilterCenterFocus;\nexport const DescriptionIcon = MdOutlineDescription;\nexport const QuestionAnswerIcon = MdQuestionAnswer;\nexport const FoldIcon = MdUnfoldLess;\nexport const UnfoldIcon = MdUnfoldMore;\n//======================================================= VSC =======================================================\nimport { VscDebug, VscError, VscWarning, VscWordWrap, VscGoToFile, VscClose, VscRunAll, VscRunErrors, VscOpenPreview, VscDiff, VscRegex, VscVersions, VscCaseSensitive, VscWholeWord, VscReferences, VscWand, VscCollapseAll, VscExpandAll, VscJson, VscTable, } from 'react-icons/vsc';\nexport const DebugIcon = VscDebug;\nexport const ErrorIcon = VscError;\nexport const WarningIcon = VscWarning;\nexport const WordWrapIcon = VscWordWrap;\nexport const GoToFileIcon = VscGoToFile;\nexport const CloseIcon = VscClose;\nexport const RunAllIcon = VscRunAll;\nexport const RunErrorsIcon = VscRunErrors;\nexport const OpenPreviewIcon = VscOpenPreview;\nexport const DiffIcon = VscDiff;\nexport const RegexIcon = VscRegex;\nexport const VersionsIcon = VscVersions;\nexport const CaseSensitiveIcon = VscCaseSensitive;\nexport const WholeWordMatchIcon = VscWholeWord;\nexport const ReferencesIcon = VscReferences;\nexport const WandIcon = VscWand;\nexport const CollapseTreeIcon = VscCollapseAll;\nexport const ExpandTreeIcon = VscExpandAll;\nexport const SerializeIcon = VscJson;\nexport const TableIcon = VscTable;\n//======================================================= BS =======================================================\nimport { BsFillTriangleFill, BsFillFileEarmarkSpreadsheetFill, BsBoxSeam, BsGripVertical, BsAlignTop, BsAlignMiddle, BsAlignBottom, BsAlignStart, BsAlignCenter, BsAlignEnd, BsDistributeHorizontal, BsDistributeVertical, BsDatabaseFillLock, BsDatabaseFillCheck, BsChevronUp, BsChevronDown, BsChevronRight, BsChevronLeft, BsQuestionSquare, BsQuestionSquareFill, BsTextLeft, } from 'react-icons/bs';\nexport const FilledTriangleIcon = BsFillTriangleFill;\nexport const TabulatedDataFileIcon = BsFillFileEarmarkSpreadsheetFill;\nexport const BundleIcon = BsBoxSeam;\nexport const ThinVerticalDragHandleIcon = BsGripVertical;\nexport const AlignTopIcon = BsAlignTop;\nexport const AlignMiddleIcon = BsAlignMiddle;\nexport const AlignBottomIcon = BsAlignBottom;\nexport const AlignStartIcon = BsAlignStart;\nexport const AlignCenterIcon = BsAlignCenter;\nexport const AlignEndIcon = BsAlignEnd;\nexport const DistributeHorizontalIcon = BsDistributeHorizontal;\nexport const DistributeVerticalIcon = BsDistributeVertical;\nexport const DataAccessIcon = BsDatabaseFillLock;\nexport const DataReadyIcon = BsDatabaseFillCheck;\nexport const ThinChevronUpIcon = BsChevronUp;\nexport const ThinChevronDownIcon = BsChevronDown;\nexport const ThinChevronRightIcon = BsChevronRight;\nexport const ThinChevronLeftIcon = BsChevronLeft;\nexport const QuestionSquareIcon = BsQuestionSquare;\nexport const QuestionSquareFillIcon = BsQuestionSquareFill;\nexport const GenericTextFileIcon = BsTextLeft;\n//======================================================= HI =======================================================\nimport { HiCode, HiHome, HiOutlineDocumentReport } from 'react-icons/hi';\nexport const ReportIcon = HiOutlineDocumentReport;\nexport const CodeIcon = HiCode;\nexport const HomeIcon = HiHome;\n//======================================================= io5 =======================================================\nimport { IoOpenOutline, IoResize, IoFileTrayFullOutline, IoMenuOutline, IoBeaker, IoFlaskSharp, IoSyncCircleSharp, IoStatsChart, IoHelpBuoy, IoCloudDownloadOutline, IoCloudUploadOutline, IoHelp, IoSunnyOutline, IoMoon, } from 'react-icons/io5';\nexport const OpenIcon = IoOpenOutline;\nexport const ResizeIcon = IoResize;\nexport const FileTrayIcon = IoFileTrayFullOutline;\nexport const MenuIcon = IoMenuOutline;\nexport const BeakerIcon = IoBeaker;\nexport const FlaskIcon = IoFlaskSharp;\nexport const AvailabilityIcon = IoSyncCircleSharp;\nexport const StatisticsIcon = IoStatsChart;\nexport const SupportIcon = IoHelpBuoy;\nexport const CloudDownloadIcon = IoCloudDownloadOutline;\nexport const CloudUploadIcon = IoCloudUploadOutline;\nexport const QuestionThinIcon = IoHelp;\nexport const SunIcon = IoSunnyOutline;\nexport const MoonIcon = IoMoon;\n//======================================================= FA =======================================================\nimport { FaHistory, FaCrosshairs, FaLayerGroup, FaGhost, FaLock, FaMask, FaFile, FaLongArrowAltRight, FaTimes, FaTimesCircle, FaPlus, FaCog, FaEye, FaEyeSlash, FaCaretUp, FaCaretDown, FaFire, FaSave, FaSquare, FaRegSquare, FaCheckSquare, FaMinusSquare, FaHashtag, FaHammer, FaCommentDots, FaClock, FaRegClock, FaToggleOn, FaQuestion, FaQuestionCircle, FaInfoCircle, FaCompress, FaMap, FaPlay, FaGripVertical, FaRobot, FaArrowLeft, FaArrowRight, FaArrowAltCircleDown, FaArrowAltCircleRight, FaArrowCircleRight, FaUser, FaShapes, FaEnvelope, FaSkull, FaDollarSign, FaSearch, FaStar, FaKey, FaExternalLinkAlt, FaExternalLinkSquareAlt, FaLightbulb, FaRegLightbulb, FaList, FaCircle, FaMinusCircle, FaTrash, FaRegCircle, FaShieldAlt, FaTag, FaTags, FaBolt, FaCheckCircle, FaExclamationTriangle, FaBug, FaCircleNotch, FaRegKeyboard, FaUserSecret, FaBuffer, FaSitemap, FaExpand, FaExpandArrowsAlt, FaSortAlphaDown, FaSort, FaSortAlphaDownAlt, FaFolderPlus, FaCaretRight, FaCaretLeft, FaWrench, FaArrowDown, FaArrowUp, FaTerminal, FaTruckLoading, FaFileCsv, FaFolderOpen, FaFolder, FaFileCode, FaCodeBranch, FaArrowAltCircleUp, FaArrowAltCircleLeft, FaRegStopCircle, FaAsterisk, FaFilter, FaExclamationCircle, FaRocket, FaCheck, FaBan, FaFileImport, FaUserFriends, FaDownload, FaUpload, FaRegWindowRestore, FaPauseCircle, FaShare, FaRegCopy, FaFileAlt, FaEdit, FaArrowsAltH, FaRegWindowMaximize, FaWindowMaximize, FaLongArrowAltDown, FaLongArrowAltUp, FaMeteor, FaPiedPiperSquare, FaPuzzlePiece, FaToggleOff, FaMapMarkerAlt, FaHatWizard, FaRegLaughWink, FaRegChartBar, FaRegSadTear, FaBusinessTime, FaDatabase, FaServer, FaArchive, FaBrain, FaBookOpen, FaLevelDownAlt, FaRegCalendarAlt, FaCalculator, FaReadme, FaRedo, FaUndo, } from 'react-icons/fa';\nexport const HistoryIcon = FaHistory;\nexport const CrosshairsIcon = FaCrosshairs;\nexport const LayerGroupIcon = FaLayerGroup;\nexport const GhostIcon = FaGhost;\nexport const LockIcon = FaLock;\nexport const MaskIcon = FaMask;\nexport const FileIcon = FaFile;\nexport const LongArrowRightIcon = FaLongArrowAltRight;\nexport const TimesIcon = FaTimes;\nexport const TimesCircleIcon = FaTimesCircle;\nexport const PlusIcon = FaPlus;\nexport const CogIcon = FaCog;\nexport const EyeIcon = FaEye;\nexport const CloseEyeIcon = FaEyeSlash;\nexport const CaretUpIcon = FaCaretUp;\nexport const CaretDownIcon = FaCaretDown;\nexport const FireIcon = FaFire;\nexport const SaveIcon = FaSave;\nexport const SquareIcon = FaSquare;\nexport const EmptySquareIcon = FaRegSquare;\nexport const CheckSquareIcon = FaCheckSquare;\nexport const MinusSquareIcon = FaMinusSquare;\nexport const HashtagIcon = FaHashtag;\nexport const HammerIcon = FaHammer;\nexport const ChatIcon = FaCommentDots;\nexport const ClockIcon = FaClock;\nexport const EmptyClockIcon = FaRegClock;\nexport const ToggleIcon = FaToggleOn;\nexport const QuestionIcon = FaQuestion;\nexport const QuestionCircleIcon = FaQuestionCircle;\nexport const InfoCircleIcon = FaInfoCircle;\nexport const CompressIcon = FaCompress;\nexport const MapIcon = FaMap;\nexport const PlayIcon = FaPlay;\nexport const VerticalDragHandleIcon = FaGripVertical;\nexport const RobotIcon = FaRobot;\nexport const ArrowLeftIcon = FaArrowLeft;\nexport const ArrowRightIcon = FaArrowRight;\nexport const ArrowCircleDownIcon = FaArrowAltCircleDown;\nexport const ArrowCircleRightIcon = FaArrowAltCircleRight;\nexport const StickArrowCircleRightIcon = FaArrowCircleRight;\nexport const UserIcon = FaUser;\nexport const ShapesIcon = FaShapes;\nexport const EnvelopIcon = FaEnvelope;\nexport const SkullIcon = FaSkull;\nexport const DollarIcon = FaDollarSign;\nexport const SearchIcon = FaSearch;\nexport const StarIcon = FaStar;\nexport const KeyIcon = FaKey;\nexport const ExternalLinkIcon = FaExternalLinkAlt;\nexport const ExternalLinkSquareIcon = FaExternalLinkSquareAlt;\nexport const LightBulbIcon = FaLightbulb;\nexport const EmptyLightBulbIcon = FaRegLightbulb;\nexport const ListIcon = FaList;\nexport const CircleIcon = FaCircle;\nexport const MinusCircleIcon = FaMinusCircle;\nexport const TrashIcon = FaTrash;\nexport const EmptyCircleIcon = FaRegCircle;\nexport const ShieldIcon = FaShieldAlt;\nexport const TagIcon = FaTag;\nexport const TagsIcon = FaTags;\nexport const BoltIcon = FaBolt;\nexport const CheckCircleIcon = FaCheckCircle;\nexport const ExclamationTriangleIcon = FaExclamationTriangle;\nexport const BugIcon = FaBug;\nexport const CircleNotchIcon = FaCircleNotch;\nexport const KeyboardIcon = FaRegKeyboard;\nexport const HackerIcon = FaUserSecret;\nexport const BufferIcon = FaBuffer; // to be reviewed, moved to LegendIcon\nexport const SitemapIcon = FaSitemap; // to be reviewed, moved to LegendIcon\nexport const ExpandIcon = FaExpand;\nexport const ExpandAllIcon = FaExpandArrowsAlt;\nexport const SortDownIcon = FaSortAlphaDown;\nexport const SortIcon = FaSort;\nexport const SortDownAltIcon = FaSortAlphaDownAlt;\nexport const NewFolderIcon = FaFolderPlus;\nexport const CaretRightIcon = FaCaretRight;\nexport const CaretLeftIcon = FaCaretLeft;\nexport const WrenchIcon = FaWrench;\nexport const ArrowDownIcon = FaArrowDown;\nexport const ArrowUpIcon = FaArrowUp;\nexport const TerminalIcon = FaTerminal;\nexport const TruckLoadingIcon = FaTruckLoading;\nexport const FolderOpenIcon = FaFolderOpen;\nexport const FolderIcon = FaFolder;\nexport const FileCodeIcon = FaFileCode;\nexport const CodeBranchIcon = FaCodeBranch;\nexport const ArrowCircleUpIcon = FaArrowAltCircleUp;\nexport const ArrowCircleLeftIcon = FaArrowAltCircleLeft;\nexport const EmptyStopCircleIcon = FaRegStopCircle;\nexport const AsteriskIcon = FaAsterisk;\nexport const FilterIcon = FaFilter;\nexport const ExclamationCircleIcon = FaExclamationCircle;\nexport const RocketIcon = FaRocket;\nexport const CheckIcon = FaCheck;\nexport const BanIcon = FaBan;\nexport const FileImportIcon = FaFileImport;\nexport const UsersIcon = FaUserFriends;\nexport const DownloadIcon = FaDownload;\nexport const UploadIcon = FaUpload;\nexport const EmptyWindowRestoreIcon = FaRegWindowRestore;\nexport const PauseCircleIcon = FaPauseCircle;\nexport const ShareIcon = FaShare;\nexport const CopyIcon = FaRegCopy;\nexport const FileAltIcon = FaFileAlt; // to be reviewed/combined\nexport const PencilEditIcon = FaEdit; // to be reviewed/combined\nexport const ArrowsAltHIcon = FaArrowsAltH; // to be reviewed/combined\nexport const WindowMaximizeIcon = FaRegWindowMaximize; // to be reviewed/combined\nexport const FilledWindowMaximizeIcon = FaWindowMaximize; // to be reviewed/combined\nexport const LongArrowAltDownIcon = FaLongArrowAltDown; // to be reviewed/combined\nexport const LongArrowAltUpIcon = FaLongArrowAltUp; // to be reviewed/combined\nexport const MeteorIcon = FaMeteor; // to be reviewed/combined\nexport const PiedPiperSquareIcon = FaPiedPiperSquare; // to be reviewed/combined\nexport const PuzzlePieceIcon = FaPuzzlePiece; // to be reviewed/combined\nexport const ToggleOffIcon = FaToggleOff;\nexport const MapMarkerIcon = FaMapMarkerAlt;\nexport const WizardHatIcon = FaHatWizard;\nexport const FaceLaughWinkIcon = FaRegLaughWink;\nexport const ChartIcon = FaRegChartBar;\nexport const CsvIcon = FaFileCsv;\nexport const FaceSadTearIcon = FaRegSadTear;\nexport const BusinessTimeIcon = FaBusinessTime; // to be reviewed/combined\nexport const DatabaseIcon = FaDatabase;\nexport const ServerIcon = FaServer;\nexport const ArchiveIcon = FaArchive;\nexport const BrainIcon = FaBrain;\nexport const DocumentationIcon = FaBookOpen;\nexport const LevelDownIcon = FaLevelDownAlt; // to be reviewed/combined\nexport const CalendarIcon = FaRegCalendarAlt;\nexport const CalculatorIcon = FaCalculator;\nexport const ReadMeIcon = FaReadme;\nexport const UndoIcon = FaUndo;\nexport const RedoIcon = FaRedo;\n//======================================================= GI =======================================================\nimport { GiWaterDrop, GiBeard, GiSunglasses, GiHouseKeys, } from 'react-icons/gi';\nexport const WaterDropIcon = GiWaterDrop;\nexport const BeardIcon = GiBeard;\nexport const SunglassesIcon = GiSunglasses;\nexport const HouseKeys = GiHouseKeys;\n//======================================================= GO =======================================================\nimport { GoChevronDown, GoChevronUp, GoChevronLeft, GoChevronRight, GoFileBinary, GoGitPullRequest, GoGitMerge, GoSync, GoGitBranch, GoX, GoPlug, } from 'react-icons/go';\nexport const ChevronDownIcon = GoChevronDown;\nexport const ChevronUpIcon = GoChevronUp;\nexport const ChevronLeftIcon = GoChevronLeft;\nexport const ChevronRightIcon = GoChevronRight;\nexport const BinaryTypeIcon = GoFileBinary;\nexport const GitPullRequestIcon = GoGitPullRequest;\nexport const GitMergeIcon = GoGitMerge;\nexport const SyncIcon = GoSync;\nexport const GitBranchIcon = GoGitBranch;\nexport const XIcon = GoX;\nexport const PluginIcon = GoPlug;\n//======================================================= SI =======================================================\nimport { SiSwagger } from 'react-icons/si';\nexport const SwaggerIcon = SiSwagger; // to be reviewed\n//======================================================= BI =======================================================\nimport { BiShapeTriangle, BiAtom, BiCabinet } from 'react-icons/bi';\nexport const ShapeTriangleIcon = BiShapeTriangle;\nexport const AtomIcon = BiAtom;\nexport const CabinetIcon = BiCabinet;\n//======================================================= CG =======================================================\nimport { CgOptions } from 'react-icons/cg';\nexport const OptionsIcon = CgOptions;\n//======================================================= FI =======================================================\nimport { FiPackage, FiMinus, FiMousePointer, FiMove, FiPlusCircle, FiSidebar, FiTriangle, FiZoomIn, FiZoomOut, FiGitMerge, FiLink, } from 'react-icons/fi';\nexport const PackageIcon = FiPackage;\nexport const MinusIcon = FiMinus;\nexport const MousePointerIcon = FiMousePointer;\nexport const MoveIcon = FiMove;\nexport const PlusCircleIcon = FiPlusCircle;\nexport const SidebarIcon = FiSidebar;\nexport const TriangleIcon = FiTriangle;\nexport const ZoomInIcon = FiZoomIn;\nexport const ZoomOutIcon = FiZoomOut;\nexport const TruncatedGitMergeIcon = FiGitMerge; // to be reviewed/combined\nexport const AnchorLinkIcon = FiLink;\n//======================================================= RI =======================================================\nimport { RiShapeLine, RiShareBoxFill, RiTestTubeFill, RiRobotFill, RiGovernmentFill, RiMoneyDollarCircleFill, } from 'react-icons/ri';\nexport const ShareBoxIcon = RiShareBoxFill;\nexport const ShapeLineIcon = RiShapeLine;\nexport const TestTubeIcon = RiTestTubeFill;\nexport const DroidIcon = RiRobotFill;\nexport const GovernanceIcon = RiGovernmentFill;\nexport const CostCircleIcon = RiMoneyDollarCircleFill;\n//======================================================= Fc =======================================================\nimport { FcWorkflow } from 'react-icons/fc';\nexport const WorkflowIcon = FcWorkflow;\n//# sourceMappingURL=Icon.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ApplicationError, assertErrorThrown, assertTrue, isString, } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport const DEFAULT_NOTIFICATION_HIDE_TIME = 6000; // ms\nexport const DEFAULT_ERROR_NOTIFICATION_HIDE_TIME = 10000; // ms\nexport var NOTIFCATION_SEVERITY;\n(function (NOTIFCATION_SEVERITY) {\n NOTIFCATION_SEVERITY[\"ILEGAL_STATE\"] = \"ILEGAL_STATE\";\n NOTIFCATION_SEVERITY[\"ERROR\"] = \"ERROR\";\n NOTIFCATION_SEVERITY[\"WARNING\"] = \"WARNING\";\n NOTIFCATION_SEVERITY[\"SUCCESS\"] = \"SUCCESS\";\n NOTIFCATION_SEVERITY[\"INFO\"] = \"INFO\";\n})(NOTIFCATION_SEVERITY || (NOTIFCATION_SEVERITY = {}));\nexport class Notification {\n severity;\n message;\n actions;\n autoHideDuration;\n constructor(severity, message, actions, autoHideDuration) {\n this.severity = severity;\n this.message = message;\n this.actions = actions;\n this.autoHideDuration = autoHideDuration;\n }\n}\nexport class NotificationService {\n notification;\n constructor() {\n makeObservable(this, {\n notification: observable,\n setNotification: action,\n notify: action,\n notifySuccess: action,\n notifyWarning: action,\n notifyIllegalState: action,\n notifyError: action,\n });\n }\n setNotification(notification) {\n this.notification = notification;\n }\n notify(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.INFO, message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifySuccess(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.SUCCESS, message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyWarning(content, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.WARNING, content instanceof Error ? content.message : content, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyError(content, actions) {\n let message;\n if (content instanceof ApplicationError) {\n message = content.detail;\n }\n else if (content instanceof Error) {\n message = content.message;\n }\n else {\n assertTrue(isString(content), `Can't display error`);\n message = content;\n }\n if (message) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.ERROR, message, actions ?? [], undefined));\n }\n }\n notifyIllegalState(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.ILEGAL_STATE, isString(message) ? `[PLEASE NOTIFY DEVELOPER] ${message}` : message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyUnsupportedFeature(featureName) {\n this.notifyWarning(`Unsupported feature: ${featureName}`);\n }\n /**\n * This function creates a more user-friendly way to throw error in the UI. Rather than crashing the whole app, we will\n * just notify and replacing the value should get with an alternative (e.g. `undefined`). A good use-case for this\n * is where we would not expect an error to throw (i.e. `IllegalStateError`), but we want to be sure that if the error\n * ever occurs, it still shows very apparently in the UI, as such, printing out in the console is not good enough,\n * but crashing the app is bad too, so this is a good balance.\n */\n notifyAndReturnAlternativeOnError = (fn, alternative) => {\n try {\n return fn();\n }\n catch (error) {\n assertErrorThrown(error);\n this.notifyIllegalState(error.message);\n return alternative;\n }\n };\n}\n//# sourceMappingURL=NotificationService.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { Notification, NotificationContent, ChevronDownIcon, ChevronUpIcon, TimesIcon, ExclamationTriangleIcon, TimesCircleIcon, CheckCircleIcon, InfoCircleIcon, BugIcon, clsx, } from '@finos/legend-art';\nimport { useState } from 'react';\nimport { DEFAULT_NOTIFICATION_HIDE_TIME, NOTIFCATION_SEVERITY, } from '../stores/NotificationService.js';\nexport const NotificationManager = observer(() => {\n const applicationStore = useApplicationStore();\n const notification = applicationStore.notificationService.notification;\n const isOpen = Boolean(notification);\n const message = notification?.message ?? '';\n const severity = notification?.severity ?? NOTIFCATION_SEVERITY.INFO;\n const [isExpanded, setIsExpanded] = useState(false);\n let notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--info\", children: _jsx(InfoCircleIcon, {}) }));\n switch (severity) {\n case NOTIFCATION_SEVERITY.ILEGAL_STATE:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--error\", children: _jsx(BugIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.ERROR:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--error\", children: _jsx(TimesCircleIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.WARNING:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--warning\", children: _jsx(ExclamationTriangleIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.SUCCESS:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--success\", children: _jsx(CheckCircleIcon, {}) }));\n break;\n default:\n break;\n }\n const handleClose = () => {\n applicationStore.notificationService.setNotification(undefined);\n setIsExpanded(false);\n };\n const handleCopy = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(message));\n const toggleExpansion = () => setIsExpanded(!isExpanded);\n const onSnackbarAutoHideOrClickAway = (event, reason) => {\n // NOTE: we only should not allow dismissing the notification on click-away. First of call, this might not be desirable\n // second, this clashes with modal that traps focus, e.g. when we have another modal open and want to show a notification\n // the notification focus is stolen by the modal leading to the notification immediately gets clicked-away and closed\n if (reason === 'timeout') {\n handleClose();\n }\n };\n return (_jsx(Notification, { classes: {\n root: 'notification',\n anchorOriginBottomRight: 'notification__position',\n }, anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right',\n }, open: isOpen, \n // setting the auto-hide duration to null will stop it from hiding automatically\n autoHideDuration: notification\n ? notification.autoHideDuration ?? null\n : DEFAULT_NOTIFICATION_HIDE_TIME, onClose: onSnackbarAutoHideOrClickAway, children: _jsx(NotificationContent, { classes: {\n root: 'notification__content',\n message: 'notification__message',\n action: 'notification__actions',\n }, message: _jsxs(\"div\", { className: \"notification__message__content\", children: [notificationIcon, _jsx(\"div\", { className: clsx('notification__message__content__text', {\n 'notification__message__content__text--expanded': isExpanded,\n }), onClick: handleCopy, title: \"Click to Copy\", children: message })] }), action: [\n _jsx(\"button\", { className: \"notification__action\", onClick: toggleExpansion, tabIndex: -1, title: isExpanded ? 'Collapse' : 'Expand', children: isExpanded ? _jsx(ChevronDownIcon, {}) : _jsx(ChevronUpIcon, {}) }, \"expand\"),\n _jsx(\"button\", { className: \"notification__action\", onClick: handleClose, tabIndex: -1, title: \"Dismiss\", children: _jsx(TimesIcon, {}) }, \"close\"),\n ] }) }, typeof message === 'string' || typeof message === 'number'\n ? message\n : ''));\n});\n//# sourceMappingURL=NotificationManager.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Menu as MuiMenu } from '@mui/material';\nexport const BaseMenu = (props) => {\n const { children, classes, ...otherProps } = props;\n return (_jsx(MuiMenu, { classes: {\n ...(classes ?? {}),\n paper: 'mui-menu__paper',\n list: 'mui-menu__list',\n }, transitionDuration: 0, ...otherProps, children: props.children }));\n};\n//# sourceMappingURL=BaseMenu.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useState, useRef } from 'react';\nimport { BaseMenu } from './BaseMenu.js';\nexport const ContextMenu = (props) => {\n const { className, children, menuProps, content, disabled, onClose, onOpen } = props;\n const contextMenuRoot = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState();\n const [left, setLeft] = useState(0);\n const [top, setTop] = useState(0);\n const reset = () => {\n setAnchorEl(undefined);\n setIsOpen(false);\n setTop(0);\n setLeft(0);\n };\n const close = (event) => {\n event.stopPropagation();\n event.preventDefault();\n reset();\n onClose?.();\n };\n const onContextMenu = (event) => {\n event.stopPropagation();\n event.preventDefault();\n if (disabled) {\n return;\n }\n onOpen?.();\n if (contextMenuRoot.current) {\n // Get position of the container element relative to the page document\n // See https://plainjs.com/javascript/styles/get-the-position-of-an-element-relative-to-the-document-24/\n const containerRect = contextMenuRoot.current.getBoundingClientRect();\n const containerLeft = containerRect.left +\n (window.scrollX || document.documentElement.scrollLeft);\n const containerTop = containerRect.top +\n (window.scrollY || document.documentElement.scrollTop);\n const { clientX, clientY, target } = event;\n const eventTarget = target;\n if (anchorEl !== eventTarget) {\n // NOTE: since this method is not supported in JSDom, we will disable this optimization in test\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV !== 'test') {\n const elements = document.elementsFromPoint(clientX, clientY);\n // Besides checking for the element containment, we also want to check for position as MUI\n // Menu have a background that spans the whole screen to check for clickout and trap focus\n // which means right click on other part of the screen will also result in context menu being shown\n const hasAnchor = elements.some((element) => element === eventTarget) &&\n containerLeft <= clientX &&\n clientX <= containerLeft + containerRect.width &&\n containerTop <= clientY &&\n clientY <= containerTop + containerRect.height;\n if (!hasAnchor) {\n reset();\n onClose?.();\n return;\n }\n }\n }\n setAnchorEl(eventTarget);\n setIsOpen(true);\n setTop(clientY);\n setLeft(clientX);\n }\n };\n return (_jsxs(\"div\", { ref: contextMenuRoot, className: className, onContextMenu: onContextMenu, children: [children, _jsx(BaseMenu, { open: isOpen, anchorPosition: { left, top }, onClose: close, anchorReference: \"anchorPosition\", BackdropProps: {\n invisible: true,\n onContextMenu,\n }, disableRestoreFocus: true, transitionDuration: 0, onClick: close, ...menuProps, children: isOpen && content }, `${left}, ${top}`)] }));\n};\n//# sourceMappingURL=ContextMenu.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { forwardRef } from 'react';\nimport { clsx } from 'clsx';\nimport { generateSimpleDIVComponent } from '../utils/ComponentCreatorUtils.js';\nexport const MenuContent = forwardRef(function MenuContent(props, ref) {\n const { className, children, ...otherProps } = props;\n return (_jsx(\"div\", { ref: ref, className: clsx('menu', className), ...otherProps, children: children }));\n});\nexport const MenuContentItem = (props) => {\n const { className, onClick, title, disabled, children, ...otherProps } = props;\n return (_jsx(\"button\", { className: clsx('menu__item', className), disabled: Boolean(disabled), title: title, onClick: onClick, ...otherProps, children: children }));\n};\nexport const MenuContentDivider = generateSimpleDIVComponent('MenuContentDivider', 'menu__divider');\nexport const MenuContentItemIcon = generateSimpleDIVComponent('MenuContentItemIcon', 'menu__item__icon');\nexport const MenuContentItemBlankIcon = (props) => {\n const { className, ...otherProps } = props;\n return (_jsx(\"div\", { className: clsx('menu__item__icon', className), ...otherProps }));\n};\nexport const MenuContentItemLabel = generateSimpleDIVComponent('MenuContentItemLabel', 'menu__item__label');\n//# sourceMappingURL=MenuContent.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport ReactMarkdown from 'react-markdown';\nimport remarkGFM from 'remark-gfm';\nimport { clsx } from 'clsx';\nimport { useEffect } from 'react';\nimport mermaid from 'mermaid';\nexport const MarkdownTextViewer = (props) => {\n useEffect(() => {\n // this will render the mermaid diagram\n mermaid.initialize({ startOnLoad: true, theme: 'dark' });\n mermaid.contentLoaded();\n }, [props.value]);\n return (_jsx(ReactMarkdown, { className: clsx('markdown-content', props.className), remarkPlugins: [remarkGFM], components: props.components ?? {\n // customize the rendering of the <code> block, if the language is mermaid\n // the class name must include `mermaid` and it will get picked up by the mermaid renderer\n code: (_props) => {\n const { children, className, node, ...rest } = _props;\n const match = /language-(?<language>\\w+)/.exec(className ?? '');\n return match?.groups?.language ? (_jsx(\"code\", { ...rest, className: clsx(match.groups.language), children: children })) : (_jsx(\"code\", { ...rest, className: className, children: children }));\n },\n }, children: props.value.value }));\n};\n//# sourceMappingURL=MarkdownTextViewer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useState } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { clsx } from 'clsx';\nconst DEFAULT_CONTENT_PADDING = 20;\n/**\n * Use this component for panel with empty content, it has a resize detector that will\n * help to show/hide the content as the panel is resized\n */\nexport const BlankPanelContent = (props) => {\n const { children } = props;\n const { ref: contentRef, width: contentWidth, height: contentHeight, } = useResizeDetector({\n refreshMode: 'throttle',\n refreshRate: 50,\n refreshOptions: { trailing: true },\n });\n const [showContent, setShowContent] = useState(false);\n const { ref: containerRef, width: containerWidth, height: containerHeight, } = useResizeDetector({\n refreshMode: 'throttle',\n refreshRate: 50,\n refreshOptions: { trailing: true },\n });\n useEffect(() => {\n setShowContent((containerWidth ?? 0) >\n (contentWidth ?? 0) + DEFAULT_CONTENT_PADDING * 2 &&\n (containerHeight ?? 0) >\n (contentHeight ?? 0) + DEFAULT_CONTENT_PADDING * 2);\n }, [containerWidth, containerHeight, contentWidth, contentHeight]);\n return (_jsx(\"div\", { ref: containerRef, className: \"panel__content__blank\", children: _jsx(\"div\", { ref: contentRef, className: clsx('panel__content__blank__content', {\n 'panel__content__blank__content--hide': !showContent,\n }), children: children }) }));\n};\n//# sourceMappingURL=BlankPanelContent.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { RadioGroup as MuiRadioGroup, FormControlLabel, Radio, } from '@mui/material';\nimport { clsx } from 'clsx';\nconst transformToMatrix = (arr, stepSize) => {\n const matrix = [];\n for (let i = 0; i < arr.length; i += stepSize) {\n matrix.push(arr.slice(i, i + stepSize));\n }\n return matrix;\n};\nexport const BaseRadioGroup = (props) => {\n const { children, options, size, className, ...otherProps } = props;\n // For displaying avaible options in a [n,size] matrix\n const targetOptionsValuesInMatrix = transformToMatrix(options, size);\n return (_jsxs(\"div\", { className: clsx('mui-radio-group', className), children: [targetOptionsValuesInMatrix.map((row, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n _jsx(\"div\", { children: _jsx(MuiRadioGroup, { className: \"mui-radio-group__group\", ...otherProps, children: row.map((op) => (_jsx(FormControlLabel, { className: \"mui-radio-group__group__column\", style: { width: `${100 / size}%` }, value: op, control: _jsx(Radio, { className: \"mui-radio-group__group__item__radio-btn\" }), label: _jsx(\"div\", { className: \"mui-radio-group__group__item__label\", children: op }) }, op))) }) }, idx))), children] }));\n};\n//# sourceMappingURL=BaseRadioGroup.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Popover as MuiPopover, } from '@mui/material';\nexport const BasePopover = (props) => {\n const { children, ...otherProps } = props;\n return (_jsx(MuiPopover, { classes: {\n paper: 'mui-popover__paper',\n }, transitionDuration: 0, ...otherProps, children: props.children }));\n};\n//# sourceMappingURL=BasePopover.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_DOCUMENTATION_KEY;\n(function (LEGEND_APPLICATION_DOCUMENTATION_KEY) {\n LEGEND_APPLICATION_DOCUMENTATION_KEY[\"QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX\"] = \"question.how-to-use-advanced-search-syntax\";\n})(LEGEND_APPLICATION_DOCUMENTATION_KEY || (LEGEND_APPLICATION_DOCUMENTATION_KEY = {}));\n//# sourceMappingURL=LegendApplicationDocumentation.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clsx, TimesIcon, SearchIcon, MapMarkerIcon, CloseIcon, ContextMenu, MenuContent, MenuContentItem, MarkdownTextViewer, ChevronDownIcon, ChevronRightIcon, BlankPanelContent, BeardIcon, SunglassesIcon, WizardHatIcon, FaceLaughWinkIcon, ThinVerticalDragHandleIcon, PanelLoadingIndicator, BasePopover, FaceSadTearIcon, CogIcon, Draggable, BaseRadioGroup, QuestionCircleIcon, EmptyWindowRestoreIcon, WindowMaximizeIcon, MinusCircleIcon, } from '@finos/legend-art';\nimport { ADVANCED_FUZZY_SEARCH_MODE, ContentType, debounce, downloadFileUsingDataURI, formatDate, isString, uuid, } from '@finos/legend-shared';\nimport { observer } from 'mobx-react-lite';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_DATE_TIME_FORMAT, DEFAULT_TAB_SIZE, } from '../stores/ApplicationConfig.js';\nimport { VIRTUAL_ASSISTANT_TAB, } from '../stores/AssistantService.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\nimport { LEGEND_APPLICATION_DOCUMENTATION_KEY } from '../__lib__/LegendApplicationDocumentation.js';\nconst WIZARD_GREETING = `Bonjour, It's Pierre!`;\nconst VirtualAssistantDocumentationEntryViewer = observer((props) => {\n const { entry } = props;\n const applicationStore = useApplicationStore();\n const toggleExpand = () => {\n if (!entry.isOpen) {\n LegendApplicationTelemetryHelper.logEvent_VirtualAssistantDocumentationEntryAccessed(applicationStore.telemetryService, {\n key: entry.documentationKey,\n });\n }\n entry.setIsOpen(!entry.isOpen);\n };\n const onDocumentationLinkClick = () => {\n LegendApplicationTelemetryHelper.logEvent_VirtualAssistantDocumentationEntryAccessed(applicationStore.telemetryService, {\n key: entry.documentationKey,\n });\n };\n const copyDocumentationKey = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(entry.documentationKey));\n return (_jsx(ContextMenu, { className: \"virtual-assistant__doc-entry\", menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsx(MenuContent, { children: _jsx(MenuContentItem, { onClick: copyDocumentationKey, children: \"Copy Documentation Key\" }) }), children: _jsxs(\"div\", { className: \"virtual-assistant__doc-entry\", children: [_jsxs(\"div\", { className: \"virtual-assistant__doc-entry__header\", children: [_jsx(\"button\", { className: clsx('virtual-assistant__doc-entry__expand-icon', {\n 'virtual-assistant__doc-entry__expand-icon--disabled': !entry.content,\n }), disabled: !entry.content, tabIndex: -1, onClick: toggleExpand, children: entry.isOpen ? _jsx(ChevronDownIcon, {}) : _jsx(ChevronRightIcon, {}) }), entry.url ? (_jsx(\"a\", { className: \"virtual-assistant__doc-entry__title virtual-assistant__doc-entry__title--link\", rel: \"noopener noreferrer\", target: \"_blank\", href: entry.url, onClick: onDocumentationLinkClick, title: \"Click to see external documentation\", children: entry.title })) : (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__title\", onClick: toggleExpand, children: entry.title }))] }), entry.isOpen && entry.content && (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__content\", children: isString(entry.content) ? (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__content__text\", children: entry.content })) : (_jsx(MarkdownTextViewer, { className: \"virtual-assistant__doc-entry__content__markdown-text\", value: entry.content })) }))] }) }));\n});\nconst VirtualAssistantContextualSupportPanel = observer(() => {\n const applicationStore = useApplicationStore();\n const assistantService = applicationStore.assistantService;\n const contextualEntry = assistantService.currentContextualDocumentationEntry;\n const copyContextIDToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(contextualEntry?.context ?? ''));\n const copyCurrentContextIDToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(applicationStore.navigationContextService.currentContext?.key ?? ''));\n const copyContextStackToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(applicationStore.navigationContextService.contextStack\n .map((context) => context.key)\n .join(' > ')));\n return (_jsxs(ContextMenu, { className: \"virtual-assistant__contextual-support\", disabled: !contextualEntry, menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: copyContextIDToClipboard, children: \"Copy Context ID\" }), _jsx(MenuContentItem, { onClick: copyCurrentContextIDToClipboard, children: \"Copy Current Context ID\" }), _jsx(MenuContentItem, { onClick: copyContextStackToClipboard, children: \"Copy Context Stack\" })] }), children: [contextualEntry && (_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__content\", children: [contextualEntry.title && (_jsx(\"div\", { className: \"virtual-assistant__contextual-support__title\", children: contextualEntry.title })), contextualEntry.content && (_jsx(_Fragment, { children: isString(contextualEntry.content) ? (_jsx(\"div\", { className: \"virtual-assistant__contextual-support__text\", children: contextualEntry.content })) : (_jsx(MarkdownTextViewer, { className: \"virtual-assistant__contextual-support__markdown-text\", value: contextualEntry.content })) })), contextualEntry.related.length && (_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__relevant-entries\", children: [_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__relevant-entries__title\", children: [\"Related entries (\", contextualEntry.related.length, \")\"] }), contextualEntry.related.map((entry) => (_jsx(VirtualAssistantDocumentationEntryViewer, { entry: entry }, entry.uuid)))] }))] })), !contextualEntry && (_jsx(BlankPanelContent, { children: _jsxs(\"div\", { className: \"virtual-assistant__panel__placeholder\", children: [_jsx(FaceLaughWinkIcon, { className: \"virtual-assistant__panel__placeholder__icon\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__message\", children: \"No contextual documentation found!\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__instruction\", children: \"Keep using the app. When contextual help is available, we will let you know!\" })] }) }))] }));\n});\nconst VirtualAssistantSearchPanel = observer(() => {\n const applicationStore = useApplicationStore();\n const searchInputRef = useRef(null);\n const assistantService = applicationStore.assistantService;\n // search text\n const searchText = assistantService.searchText;\n const debouncedSearch = useMemo(() => debounce(() => assistantService.search(), 100), [assistantService]);\n const onSearchTextChange = (event) => {\n assistantService.setSearchText(event.target.value);\n debouncedSearch();\n };\n const clearSearchText = () => {\n assistantService.resetSearch();\n assistantService.currentDocumentationEntry = undefined;\n searchInputRef.current?.focus();\n };\n const toggleSearchConfigMenu = () => assistantService.setShowSearchConfigurationMenu(!assistantService.showSearchConfigurationMenu);\n const downloadDocRegistry = () => {\n downloadFileUsingDataURI(`documentation-registry_${formatDate(new Date(Date.now()), DEFAULT_DATE_TIME_FORMAT)}.json`, JSON.stringify(applicationStore.documentationService.publishDocRegistry(), undefined, DEFAULT_TAB_SIZE), ContentType.APPLICATION_JSON);\n };\n const downloadContextualDocIndex = () => {\n downloadFileUsingDataURI(`documentation-registry_${formatDate(new Date(Date.now()), DEFAULT_DATE_TIME_FORMAT)}.json`, JSON.stringify(applicationStore.documentationService.publishContextualDocIndex(), undefined, DEFAULT_TAB_SIZE), ContentType.APPLICATION_JSON);\n };\n useEffect(() => {\n searchInputRef.current?.focus();\n }, []);\n return (_jsxs(\"div\", { className: \"virtual-assistant__search\", children: [_jsxs(\"div\", { className: \"virtual-assistant__search__header\", children: [_jsx(\"input\", { ref: searchInputRef, \n /**\n * NOTE: In the scenario where another modal is opened at the same time the assistant panel\n * is open, the focus will be stolen by the newly opened modal. In that case, we need\n * to take back the focus. The trick here is to remount the whole panel (modal/popover)\n * by refreshing the `key` prop of the panel. This will cause `mui` to recompute the\n * focus-trap and allow the input field to be selectable again. Basically, we are stealing\n * back the focus for the assistant.\n *\n * However, the caveat is that this will cause the component states, such as scroll positions,\n * to be reset as such, we need to do this really sparingly. In fact, the only\n * scenario where we need to do this is when a new modal is opened when the assistant panel\n * is already opened. Basically, Other scenarios, such as when the assistant is opened after the modal\n * is opened seem to pose no issue.\n */\n onClick: () => {\n if (\n // only when there are dialogs being opened\n // NOTE: this seems rather hacky, but querying by role is the least\n // vendor-dependent approach we can think of at the moment\n document.querySelectorAll('[role=\"dialog\"]').length &&\n // only when the focus is not already with the input field\n // this means the focus is being stolen from the assistant because\n // the newly opened modal is opened more recently than the assistant\n //\n // once the focus has been gained by the assistant\n // we will not need to do this anymore\n searchInputRef.current !== document.activeElement) {\n assistantService.refreshPanelRendering();\n }\n }, className: clsx('virtual-assistant__search__input input--dark', {\n 'virtual-assistant__search__input--searching': searchText,\n }), spellCheck: false, onChange: onSearchTextChange, value: searchText, placeholder: \"Ask me a question\" }), searchText && (_jsx(\"div\", { className: \"virtual-assistant__search__input__search__count\", children: assistantService.searchResults.length +\n (assistantService.isOverSearchLimit ? '+' : '') })), _jsx(\"button\", { className: clsx('virtual-assistant__search__input__config__trigger', {\n 'virtual-assistant__search__input__config__trigger--toggled': assistantService.showSearchConfigurationMenu,\n 'virtual-assistant__search__input__config__trigger--active': assistantService.searchConfigurationState.isAdvancedSearchActive,\n }), tabIndex: -1, onClick: toggleSearchConfigMenu, title: `${assistantService.searchConfigurationState.isAdvancedSearchActive\n ? 'Advanced search is currently active\\n'\n : ''}Click to toggle search config menu`, children: _jsx(CogIcon, {}) }), !searchText ? (_jsx(\"div\", { className: \"virtual-assistant__search__input__search__icon\", children: _jsx(SearchIcon, {}) })) : (_jsx(\"button\", { className: \"virtual-assistant__search__input__clear-btn\", tabIndex: -1, onClick: clearSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }), _jsxs(\"div\", { className: \"virtual-assistant__search__content\", children: [_jsx(PanelLoadingIndicator, { isLoading: assistantService.searchState.isInProgress }), _jsx(\"div\", { className: clsx('virtual-assistant__search__input__config__panel', {\n 'virtual-assistant__search__input__config__panel--toggled': assistantService.showSearchConfigurationMenu,\n }), children: _jsxs(\"div\", { className: \"virtual-assistant__search__input__advanced-config__panel\", children: [_jsxs(\"div\", { className: \"virtual-assistant__search__input__advanced-config__panel__header__label\", children: [\"search config\", applicationStore.documentationService.hasDocEntry(LEGEND_APPLICATION_DOCUMENTATION_KEY.QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX) && (_jsx(\"div\", { onClick: () => assistantService.openDocumentationEntryLink(LEGEND_APPLICATION_DOCUMENTATION_KEY.QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX), title: \"Click to see documentation\", className: \"virtual-assistant__search__input__advanced-config__panel__header__label__hint\", children: _jsx(QuestionCircleIcon, {}) }))] }), _jsx(\"div\", { children: _jsx(BaseRadioGroup, { value: assistantService.searchConfigurationState.currentMode, onChange: (event) => {\n const searchMode = event.target\n .value;\n assistantService.searchConfigurationState.setCurrentMode(searchMode);\n }, row: false, options: [\n ADVANCED_FUZZY_SEARCH_MODE.STANDARD,\n ADVANCED_FUZZY_SEARCH_MODE.INCLUDE,\n ADVANCED_FUZZY_SEARCH_MODE.EXACT,\n ADVANCED_FUZZY_SEARCH_MODE.INVERSE,\n ], size: 1 }) })] }) }), assistantService.currentDocumentationEntry && (_jsx(\"div\", { className: \"virtual-assistant__search__results\", children: _jsx(VirtualAssistantDocumentationEntryViewer, { entry: assistantService.currentDocumentationEntry }, assistantService.currentDocumentationEntry.uuid) })), !assistantService.currentDocumentationEntry && (_jsxs(_Fragment, { children: [Boolean(assistantService.searchResults.length) && (_jsx(\"div\", { className: \"virtual-assistant__search__results\", children: assistantService.searchResults.map((result) => (_jsx(VirtualAssistantDocumentationEntryViewer, { entry: result }, result.uuid))) })), searchText && !assistantService.searchResults.length && (_jsx(BlankPanelContent, { children: _jsxs(\"div\", { className: \"virtual-assistant__panel__placeholder\", children: [_jsx(FaceSadTearIcon, { className: \"virtual-assistant__panel__placeholder__icon\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__message\", children: \"No result...\" })] }) })), !searchText && !assistantService.searchResults.length && (_jsx(ContextMenu, { className: \"virtual-assistant__character__container\", menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: downloadDocRegistry, children: \"Download documentation registry\" }), _jsx(MenuContentItem, { onClick: downloadContextualDocIndex, children: \"Download contextual documentation mapping\" })] }), children: _jsxs(\"div\", { className: \"virtual-assistant__character\", children: [_jsxs(\"div\", { className: \"virtual-assistant__character__figure\", children: [_jsx(WizardHatIcon, { className: \"virtual-assistant__character__hat\" }), _jsx(SunglassesIcon, { className: \"virtual-assistant__character__glasses\" }), _jsx(BeardIcon, { className: \"virtual-assistant__character__beard\" })] }), _jsx(\"div\", { className: \"virtual-assistant__character__greeting\", children: WIZARD_GREETING }), _jsx(\"div\", { className: \"virtual-assistant__character__question\", children: \"How can I help today?\" })] }) }))] }))] })] }));\n});\nconst VirtualAssistantPanel = observer((props) => {\n const { triggerElement } = props;\n const applicationStore = useApplicationStore();\n const assistantService = applicationStore.assistantService;\n const currentContextualDocumentationEntry = assistantService.currentContextualDocumentationEntry;\n const selectedTab = assistantService.selectedTab;\n const extraViewConfigurations = applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraVirtualAssistantViewConfigurations?.() ?? []);\n const currentExtensionView = extraViewConfigurations.find((config) => config.key === selectedTab);\n const toggleMaximize = () => assistantService.setIsPanelMaximized(!assistantService.isPanelMaximized);\n const selectSearch = () => assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.SEARCH);\n const selectContextualDoc = () => assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT);\n const closeAssistantPanel = () => assistantService.setIsOpen(false);\n return (\n /**\n * The most appropriate component to use is `Popper`\n * as it does not block click-away\n * See https://mui.com/material-ui/react-popper/\n *\n * However, the caveat is that in the implementation of mui Popper\n * focus trap is not supported. As such, we could end up in a situation\n * where the assistant input fields will not be focusable\n * when another modal is being opened, as that newly opened modal will\n * **steal** the focus\n *\n * See https://github.com/finos/legend-studio/issues/1255\n * See https://mui.com/material-ui/react-modal/#focus-trap\n * See https://github.com/mui/material-ui/issues/17497\n */\n _jsx(BasePopover, { open: assistantService.isOpen, className: \"virtual-assistant__panel__container\", anchorEl: triggerElement, \n // we need to get rid of the backdrop and the click-away trap\n // to make this popover behave like a popper\n // NOTE: we will cancel the effect of click-away trap using CSS\n hideBackdrop: true, PaperProps: {\n classes: { root: 'virtual-assistant__panel__container__root' },\n }, \n // allow other modals to take the focus from the virtual assistant\n disableEnforceFocus: true, \n // NOTE: make sure the assistant is always fully displayed (not cropped)\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n }, transformOrigin: {\n vertical: 'bottom',\n horizontal: 'right',\n }, children: _jsxs(\"div\", { className: clsx('virtual-assistant__panel', {\n 'virtual-assistant__panel--maximized': assistantService.isPanelMaximized,\n }), \n // NOTE: here we block `tabbing` (to move focus). This is to counter the effect of\n // `disableEnforceFocus={true}` set in the assistant panel popover\n // this is the poor-man focus trap for the assistant to ensure\n // that we don't leak focus tab down to other parts of the app\n //\n // Especially, due to the hack we do to compete for focus when another modal\n // is opened, we need to do this to avoid leaking of focus to components\n // beneath the modal via assistant\n //\n // setting `tabIndex={0}` is a hack to make this DOM node focusable\n // and hence, we could trap the focus here using `onKeyDown`\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n tabIndex: 0, onKeyDown: (event) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n event.stopPropagation();\n }\n }, children: [_jsxs(\"div\", { className: \"virtual-assistant__panel__header\", children: [_jsxs(\"div\", { className: \"virtual-assistant__panel__header__tabs\", children: [_jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === VIRTUAL_ASSISTANT_TAB.SEARCH,\n }), onClick: selectSearch, title: \"Search\", children: _jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: _jsx(SearchIcon, {}) }) }), _jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT,\n }), onClick: selectContextualDoc, title: \"Contextual Support\", children: _jsxs(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: [_jsx(MapMarkerIcon, {}), currentContextualDocumentationEntry && (_jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__indicator\", title: \"Contextual support available\" }))] }) }), extraViewConfigurations.map((config) => (_jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === config.key,\n }), onClick: () => {\n assistantService.setSelectedTab(config.key);\n if (config.autoExpandOnOpen) {\n assistantService.setIsPanelMaximized(true);\n }\n }, title: config.title, children: _jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: config.icon ?? _jsx(QuestionCircleIcon, {}) }) }, config.key)))] }), _jsxs(\"div\", { className: \"virtual-assistant__panel__header__actions\", children: [_jsx(\"button\", { className: \"virtual-assistant__panel__header__action\", tabIndex: -1, onClick: toggleMaximize, title: assistantService.isPanelMaximized ? 'Minimize' : 'Maximize', children: assistantService.isPanelMaximized ? (_jsx(EmptyWindowRestoreIcon, {})) : (_jsx(WindowMaximizeIcon, {})) }), _jsx(\"button\", { className: \"virtual-assistant__panel__header__action\", tabIndex: -1, onClick: closeAssistantPanel, title: \"Close\", children: _jsx(CloseIcon, { className: \"virtual-assistant__panel__icon__close\" }) })] })] }), _jsxs(\"div\", { className: \"virtual-assistant__panel__content\", children: [selectedTab === VIRTUAL_ASSISTANT_TAB.SEARCH && (_jsx(VirtualAssistantSearchPanel, {})), selectedTab === VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT && (_jsx(VirtualAssistantContextualSupportPanel, {})), currentExtensionView?.renderer()] })] }) }, assistantService.panelRenderingKey));\n});\nexport const VirtualAssistant = observer(() => {\n const [isDragging, setIsDragging] = useState(false);\n const [_key, _setKey] = useState(uuid());\n const applicationStore = useApplicationStore();\n const assistantRef = useRef(null);\n const assistantService = applicationStore.assistantService;\n const currentContextualDocumentationEntry = assistantService.currentContextualDocumentationEntry;\n const toggleAssistantPanel = () => {\n const newVal = !assistantService.isOpen;\n // open the contextual help tab when contextual help is available\n if (newVal && currentContextualDocumentationEntry) {\n assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT);\n }\n assistantService.setIsOpen(!assistantService.isOpen);\n };\n const hideAssistant = () => applicationStore.assistantService.hideAssistant();\n const resetPosition = () => {\n // close the panel since\n assistantService.setIsOpen(false);\n _setKey(uuid());\n };\n // drag and drop\n const onDragEnd = () => setIsDragging(false);\n const onDragStart = () => setIsDragging(true);\n useEffect(() => {\n if (assistantService.isHidden) {\n // reset to default position when we hide the assistant\n // so that when we open it the position is reset\n _setKey(uuid());\n }\n }, [assistantService.isHidden]);\n return (_jsx(Draggable\n // this is a trick so we could reset the default position of the assistant\n // See https://github.com/react-grid-layout/react-draggable/issues/214#issuecomment-270021423\n , { \n // make sure we cannot drag and drop outside of the screen\n bounds: \"parent\", onStart: onDragStart, onStop: onDragEnd, \n // Avoid using deprecated findDOMNode method to rid of React warning\n // See https://github.com/react-grid-layout/react-draggable/issues/749\n nodeRef: assistantRef, \n // limit the dnd trigger to only the drag handle\n handle: \".virtual-assistant__station__drag-handle\", children: _jsxs(\"div\", { className: \"virtual-assistant\", \n // NOTE: we have to set the `ref` at this level so even when the assistant is hidden\n // the element is still in the DOM so when we programmatically show the assistant panel\n // the anchor is available in time\n ref: assistantRef, children: [_jsxs(\"div\", { className: clsx('virtual-assistant__station', {\n 'virtual-assistant__station--hidden': assistantService.isHidden,\n 'virtual-assistant__station--active': Boolean(currentContextualDocumentationEntry),\n }), children: [_jsx(\"button\", { className: \"virtual-assistant__station__hide-button\", title: \"Hide assistant\", onClick: () => {\n applicationStore.assistantService.toggleAssistant();\n }, children: _jsx(MinusCircleIcon, {}) }), _jsx(\"button\", { className: \"virtual-assistant__station__trigger\", tabIndex: -1, onClick: toggleAssistantPanel, title: assistantService.isOpen\n ? `Click to close assistant panel`\n : `${currentContextualDocumentationEntry\n ? 'Contextual support available.\\n'\n : ''}Click to open Assistant...`, children: _jsxs(\"div\", { className: \"virtual-assistant__station__character\", children: [_jsx(WizardHatIcon, { className: \"virtual-assistant__station__character__hat\" }), _jsx(SunglassesIcon, { className: \"virtual-assistant__station__character__glasses\" }), _jsx(BeardIcon, { className: \"virtual-assistant__station__character__beard\" })] }) }), _jsx(\"div\", { className: \"virtual-assistant__station__label\", onClick: toggleAssistantPanel, children: \"Assistant\" }), _jsx(ContextMenu, { className: clsx('virtual-assistant__station__drag-handle', {\n 'virtual-assistant__station__drag-handle--dragging': isDragging,\n }), menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: resetPosition, children: \"Reset Position\" }), _jsx(MenuContentItem, { onClick: hideAssistant, children: \"Hide Assistant\" })] }), children: _jsx(\"div\", { className: \"virtual-assistant__station__drag-handle__content\", title: isDragging ? undefined : 'Grab to drag assistant', children: _jsx(ThinVerticalDragHandleIcon, {}) }) })] }, currentContextualDocumentationEntry?.uuid ?? ''), !isDragging &&\n assistantService.isOpen &&\n !assistantService.isHidden &&\n assistantRef.current && (_jsx(VirtualAssistantPanel, { triggerElement: assistantRef.current }))] }) }, _key));\n});\n//# sourceMappingURL=VirtualAssistant.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Backdrop, LegendStyleProvider, Portal } from '@finos/legend-art';\nimport { observer } from 'mobx-react-lite';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { ActionAlert } from './ActionAlert.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { BlockingAlert } from './BlockingAlert.js';\nimport { NotificationManager } from './NotificationManager.js';\nimport { useEffect } from 'react';\nimport { createKeybindingsHandler, } from '@finos/legend-shared';\nimport { VirtualAssistant } from './VirtualAssistant.js';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\nvar APPLICATION_COMPONENT_ELEMENT_ID;\n(function (APPLICATION_COMPONENT_ELEMENT_ID) {\n APPLICATION_COMPONENT_ELEMENT_ID[\"TOP_LEVEL_CONTAINER\"] = \"application.top-level-container\";\n APPLICATION_COMPONENT_ELEMENT_ID[\"BACKDROP_CONTAINER\"] = \"application.backdrop-container\";\n})(APPLICATION_COMPONENT_ELEMENT_ID || (APPLICATION_COMPONENT_ELEMENT_ID = {}));\nconst PLATFORM_NATIVE_KEYBOARD_SHORTCUTS = [\n 'Meta+KeyP', // Print\n 'Control+KeyP',\n 'Meta+KeyS', // Save\n 'Control+KeyS',\n 'F8', // Chrome: Developer Tools > Sources: Run or pause script\n 'F10', // Chrome: Developer Tools > Sources: Step over next function call\n 'F11', // Chrome: Developer Tools > Sources: Step into next function call\n 'Meta+Shift+KeyP', // Chrome: Developer Tools: Open Command Prompt inside developer tools\n 'Control+Backquote', // Chrome: Developer Tools: Open console\n 'Control+Shift+KeyN', // Chrome: Open Private Browsing (incognito)\n 'Control+Shift+KeyP', // Firefox: Open Private Browsing\n 'Meta+KeyB', // Firefox: Open bookmark sidebar\n 'Control+KeyB',\n 'F7', // Firefox: Caret browsing\n 'Alt+F7', // Firefox: Caret browsing (Mac)\n 'Control+Shift+KeyB',\n 'Alt+KeyZ', // Mac: special symbol\n];\nconst buildHotkeysConfiguration = (commandKeyMap, handler) => {\n const keyMap = {};\n commandKeyMap.forEach((keyCombinations, commandKey) => {\n if (keyCombinations.length) {\n keyMap[commandKey] = {\n combinations: keyCombinations,\n handler,\n };\n }\n });\n // Disable platform native keyboard shortcuts\n // NOTE: due to the order in which hotkey configuration is searched and applied,\n // we must place these after application hotkey configuration\n const PLATFORM_NATIVE_KEYBOARD_COMMAND = 'INTERNAL__PLATFORM_NATIVE_KEYBOARD_COMMAND';\n keyMap[PLATFORM_NATIVE_KEYBOARD_COMMAND] = {\n combinations: PLATFORM_NATIVE_KEYBOARD_SHORTCUTS,\n handler: (keyCombination, event) => {\n // prevent default from potentially clashing key combinations\n event.preventDefault();\n },\n };\n return keyMap;\n};\n/**\n * Some elements (e.g. <canvas>) and components that we do not control the implementation\n * might have special logic to prevent `keydown` event bubbling naturally, this\n * method forces those event to surface to the top of the app and being handled\n * by keybinding service\n */\nexport const forceDispatchKeyboardEvent = (event, applicationStore) => {\n applicationStore.layoutService\n .getElementByID(APPLICATION_COMPONENT_ELEMENT_ID.TOP_LEVEL_CONTAINER)\n ?.dispatchEvent(new KeyboardEvent(event.type, event));\n};\n/**\n * Potential location to mount backdrop on\n *\n * NOTE: we usually want the backdrop container to be the first child of its immediate parent\n * so that it properly lies under the content that we pick to show on top of the backdrop\n */\nexport const BackdropContainer = (props) => (_jsx(\"div\", { className: \"backdrop__container\", \"data-elementid\": props.elementId }));\nexport const ApplicationComponentFrameworkProvider = observer((props) => {\n const { children } = props;\n const applicationStore = useApplicationStore();\n const disableContextMenu = (event) => {\n event.stopPropagation();\n event.preventDefault();\n };\n const keyBindingMap = buildHotkeysConfiguration(applicationStore.keyboardShortcutsService.commandKeyMap, (keyCombination, event) => {\n // prevent default from potentially clashing key combinations with platform native keyboard shortcuts\n // NOTE: Though tempting since it's a good way to simplify and potentially avoid conflicts,\n // we should not call `preventDefault()` because if we have any hotkey sequence which is too short,\n // such as `r`, `a` - we risk blocking some very common interaction, i.e. user typing, or even\n // constructing longer key combinations\n if (PLATFORM_NATIVE_KEYBOARD_SHORTCUTS.includes(keyCombination)) {\n event.preventDefault();\n }\n applicationStore.keyboardShortcutsService.dispatch(keyCombination);\n });\n useEffect(() => {\n const onKeyEvent = createKeybindingsHandler(keyBindingMap);\n document.addEventListener('keydown', onKeyEvent);\n return () => {\n document.removeEventListener('keydown', onKeyEvent);\n };\n }, [keyBindingMap]);\n /**\n * Keep track of when the application usage is interrupted (e.g. when the app window/tab is not in focus),\n * since for certain platform, background contexts are de-prioritized, given less resources, and hence, would\n * run less performantly; and might require particular handlings.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#policies_in_place_to_aid_background_page_performance\n * See https://plumbr.io/blog/performance-blog/background-tabs-in-browser-load-20-times-slower\n */\n useEffect(() => {\n const onVisibilityChange = () => {\n if (document.hidden) {\n LegendApplicationTelemetryHelper.logEvent_ApplicationUsageInterrupted(applicationStore.telemetryService);\n applicationStore.timeService.recordUsageInterruption();\n }\n };\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, [applicationStore]);\n return (_jsxs(LegendStyleProvider, { children: [_jsx(BlockingAlert, {}), _jsx(ActionAlert, {}), _jsx(NotificationManager, {}), _jsx(VirtualAssistant, {}), applicationStore.layoutService.showBackdrop && (\n // We use <Portal> here to insert backdrop into different parts of the app\n // as backdrop relies heavily on z-index mechanism so its location in the DOM\n // really matters.\n // For example, the default location of the backdrop works fine for most cases\n // but if we want to use the backdrop for elements within modal dialogs, we would\n // need to mount the backdrop at a different location\n _jsx(Portal, { container: applicationStore.layoutService.getElementByID(applicationStore.layoutService.backdropContainerElementID ??\n APPLICATION_COMPONENT_ELEMENT_ID.BACKDROP_CONTAINER) ?? null, children: _jsx(Backdrop, { className: \"backdrop\", open: applicationStore.layoutService.showBackdrop }) })), _jsx(DndProvider, { backend: HTML5Backend, children: _jsxs(\"div\", { className: \"app__container\", \"data-elementid\": APPLICATION_COMPONENT_ELEMENT_ID.TOP_LEVEL_CONTAINER, \n // Disable global context menu so that only places in the app that supports context-menu will be effective\n onContextMenu: disableContextMenu, children: [_jsx(BackdropContainer, { elementId: APPLICATION_COMPONENT_ELEMENT_ID.BACKDROP_CONTAINER }), children] }) })] }));\n});\n//# sourceMappingURL=ApplicationComponentFrameworkProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Terminal as XTermTerminal, } from 'xterm';\nimport { WebLinksAddon as XTermWebLinksAddon } from 'xterm-addon-web-links';\nimport { FitAddon as XTermFitAddon } from 'xterm-addon-fit';\nimport { SearchAddon as XTermSearchAddon, } from 'xterm-addon-search';\nimport { Unicode11Addon as XTermUnicode11Addon } from 'xterm-addon-unicode11';\nimport { WebglAddon as XTermWebglAddon } from 'xterm-addon-webgl';\nimport { DEFAULT_MONOSPACED_FONT_FAMILY, DEFAULT_TAB_SIZE, } from '../ApplicationConfig.js';\nimport { Terminal, DISPLAY_ANSI_ESCAPE, ANSI_moveCursor, } from './Terminal.js';\nimport { ActionState, guaranteeNonNullable, IllegalStateError, isMatchingKeyCombination, LogEvent, noop, prettyCONSTName, uniqBy, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../../__lib__/LegendApplicationEvent.js';\nimport { forceDispatchKeyboardEvent } from '../../components/ApplicationComponentFrameworkProvider.js';\nconst LEGEND_XTERM_THEME = {\n foreground: '#cccccc',\n background: '#1e1e1e',\n cursor: '#cccccc',\n /** The accent color of the cursor (fg color for a block cursor) */\n // cursorAccent?: string;\n /** The selection background color when the terminal does not have focus (can be transparent) */\n // selectionInactiveBackground?: string;\n selectionBackground: '#264f78', // blue\n black: '#000000',\n red: '#cd3131',\n green: '#0dbc79',\n yellow: '#e5e510',\n blue: '#2472c8',\n magenta: '#bc3fbc',\n cyan: '#11a8cd',\n white: '#e5e5e5',\n brightBlack: '#666666',\n brightRed: '#f14c4c',\n brightGreen: '#23d18b',\n brightYellow: '#f5f543',\n brightBlue: '#3b8eea',\n brightMagenta: '#d670d6',\n brightCyan: '#29b8db',\n brightWhite: '#e5e5e5',\n};\nconst LEGEND_XTERM_SEARCH_THEME = {\n matchOverviewRuler: '#d186167e',\n activeMatchColorOverviewRuler: '#A0A0A0CC',\n matchBackground: '#62331c',\n activeMatchBackground: '#515C6A',\n};\n// robot acsii art\n// See https://asciiartist.com/ascii-art-micro-robot/\nconst getHelpCommandContent = (commandRegistry) => `\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}+-------------------------------------------------------+${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}[@@]${DISPLAY_ANSI_ESCAPE.RESET} \"Hi! Welcome to the HELP menu of Pure IDE\" ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}/|__|\\\\${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}+--${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}d b${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}-----------------------------------------------+${DISPLAY_ANSI_ESCAPE.RESET}\n\nFollowing is the list of supported commands:\n\n${uniqBy(Array.from(commandRegistry.values()), (config) => config.command)\n .map((config) => `${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}${config.command.padEnd(30)}${DISPLAY_ANSI_ESCAPE.RESET}${config.description}${config.aliases?.length\n ? `\\n${''.padEnd(30)}Aliases: ${config.aliases.join(', ')}`\n : ''}\\n${''.padEnd(30)}Usage: ${DISPLAY_ANSI_ESCAPE.DIM}${config.usage}${DISPLAY_ANSI_ESCAPE.RESET}`)\n .join('\\n')}`;\nconst getCommonANSIEscapeSequencesForStyling = () => `\nCommon ANSI Escape Sequences for Styling:\n\n${Object.entries(DISPLAY_ANSI_ESCAPE)\n .map(([key, value]) => `${value}${prettyCONSTName(key).padEnd(20)}${DISPLAY_ANSI_ESCAPE.RESET\n// NOTE: since these are recommended ANSI escape sequences which can be used\n// by users in strings input in Pure IDE, they have to be Unicode escape, if we send\n// the original hexadecimal escape as part of the string, some string escape handling\n// in Pure seems to escape the leading slash of the ANSI escape sequence \\x1B; however\n// this is not the case of the escape sequence for Unicode, \\u001b hence our logic here\n} ${value.replace('\\x1b', '\\\\u001b')}`)\n .join('\\n')}`;\nconst DEFAULT_USER = 'purist';\nconst DEFAULT_COMMAND_HEADER = `\n${DISPLAY_ANSI_ESCAPE.BOLD}${DISPLAY_ANSI_ESCAPE.BRIGHT_BLUE}$${DEFAULT_USER}${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BOLD}${DISPLAY_ANSI_ESCAPE.MAGENTA}\\u276f${DISPLAY_ANSI_ESCAPE.RESET} `;\nconst COMMAND_START = '\\u276f ';\nexport class XTerm extends Terminal {\n instance;\n resizer;\n renderer;\n searcher;\n webLinkProvider;\n _TEMPORARY__onKeyListener;\n _TEMPORARY__onDataListener;\n command = '';\n commandHistory = [];\n currentCommandSearchString = '';\n commandHistoryNavigationIdx = undefined;\n isRunningCommand = false;\n setupState = ActionState.create();\n constructor(applicationStore) {\n super(applicationStore);\n this.instance = new XTermTerminal({\n allowProposedApi: true,\n fontSize: 12,\n letterSpacing: 2,\n fontWeight: 400,\n fontWeightBold: 700,\n fontFamily: `\"${DEFAULT_MONOSPACED_FONT_FAMILY}\", Menlo, Consolas, monospace`,\n tabStopWidth: DEFAULT_TAB_SIZE,\n theme: LEGEND_XTERM_THEME,\n overviewRulerWidth: 14, // 14px\n scrollback: 100000, // buffer a substantial content length\n convertEol: true, // treat \\n as new line\n // this is needed so we can control the cursor programmatically using escape sequences\n scrollOnUserInput: false,\n });\n this.resizer = new XTermFitAddon();\n this.searcher = new XTermSearchAddon();\n this.renderer = new XTermWebglAddon();\n }\n setup(configuration) {\n if (this.setupState.hasCompleted) {\n throw new IllegalStateError(`Terminal is already set up`);\n }\n this.setupState.complete();\n // Handling context loss: The browser may drop WebGL contexts for various reasons like OOM or after the system has been suspended.\n // An easy, but suboptimal way, to handle this is by disposing of WebglAddon when the `webglcontextlost` event fires\n // NOTE: we don't really have a resilient way to fallback right now, hopefully, the fallback is to render in DOM\n this.renderer.onContextLoss(() => {\n this.renderer.dispose();\n });\n this.instance.loadAddon(this.resizer);\n this.instance.loadAddon(this.searcher);\n this.instance.loadAddon(this.renderer);\n this.instance.loadAddon(new XTermUnicode11Addon());\n this.instance.unicode.activeVersion = '11';\n // NOTE: since we render the terminal using webgl/canvas, event is not bubbled\n // naturally through the DOM tree, we have to manually force this\n this.instance.attachCustomKeyEventHandler((event) => {\n // NOTE: this is a cheap way to handle hotkey, but this is really the only\n // hotkey we want to support at local scope of the terminal\n // also, since here we have prevent default and stop propagation, we have to do\n // this here instead at in `onKey` handler\n if (isMatchingKeyCombination(event, 'Control+KeyF') ||\n isMatchingKeyCombination(event, 'Meta+KeyF')) {\n // prevent default so as to not trigger browser platform search command\n event.preventDefault();\n event.stopPropagation();\n this.searchConfig.focus();\n return false;\n }\n else if (\n // NOTE: by default Ctrl+C gets sent to the shell as you wouldn't be able to use bash otherwise.\n // We need this special handling here for normal copy behavior on Windows.\n // Paste (Ctrl+V) not working on Windows could also be due to the same reason, so we would not\n // manually handle that using `xterm.onKey` neither\n // See https://github.com/xtermjs/xterm.js/issues/1868\n // See https://github.com/microsoft/vscode/issues/6451\n (isMatchingKeyCombination(event, 'Control+KeyC') &&\n this.instance.hasSelection()) ||\n isMatchingKeyCombination(event, 'Control+KeyV')) {\n return false;\n }\n return true; // return true to indicate the event should still be handled by xterm\n });\n this.webLinkProvider = configuration?.webLinkProvider\n ? new XTermWebLinksAddon(configuration.webLinkProvider.handler, {\n urlRegex: configuration.webLinkProvider.regex,\n })\n : new XTermWebLinksAddon();\n this.instance.loadAddon(this.webLinkProvider);\n (configuration?.commands ?? []).forEach((commandConfig) => {\n [commandConfig.command, ...(commandConfig.aliases ?? [])].forEach((command) => {\n if (!this.commandRegistry.has(command)) {\n this.commandRegistry.set(command, commandConfig);\n }\n else {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE), `Found multiple duplicated terminal commands '${command}'`);\n }\n });\n });\n this.searcher.onDidChangeResults((result) => {\n this.setSearchResultCount(result.resultCount);\n this.setSearchCurrentResultIndex(result.resultIndex);\n });\n // NOTE: `xterm` expects to be attached to a proper terminal program which handles\n // input, since we can't do that yet, we implement a fairly basic input handling flow\n // See https://github.com/xtermjs/xterm.js/issues/617#issuecomment-288849502\n this._TEMPORARY__onKeyListener = this.instance.onKey(({ key, domEvent }) => {\n // take care of command history navigation\n if (domEvent.code === 'ArrowUp') {\n this.setCommandFromHistory(this.commandHistoryNavigationIdx !== undefined\n ? this.commandHistoryNavigationIdx + 1\n : 0);\n return;\n // reset current command in place\n }\n else if (domEvent.code === 'ArrowDown') {\n if (this.commandHistoryNavigationIdx !== undefined) {\n this.setCommandFromHistory(this.commandHistoryNavigationIdx === 0\n ? undefined\n : this.commandHistoryNavigationIdx - 1);\n }\n return;\n }\n else {\n // reset navigation history the moment any other key is pressed\n this.commandHistoryNavigationIdx = undefined;\n }\n if (domEvent.code === 'Enter') {\n // run command\n if (this.command.trim()) {\n const text = this.command;\n const [command, ...args] = text.replaceAll(/\\s+/g, ' ').split(' ');\n this.addCommandToHistory(this.command);\n if (!command) {\n return;\n }\n const matchingCommand = this.commandRegistry.get(command);\n if (!matchingCommand) {\n this.fail(`command not found: ${command}`);\n return;\n }\n if (this.isRunningCommand) {\n return;\n }\n this.isRunningCommand = true;\n matchingCommand\n .handler(args.map((arg) => arg.trim()), command, text)\n .catch(noop())\n .finally(() => {\n this.isRunningCommand = false;\n if (!this.isFlushed) {\n this.abort();\n }\n });\n }\n }\n else if (isMatchingKeyCombination(domEvent, 'Control+KeyD') ||\n // NOTE: this handling here makes the assumption that the hotkey used for copying is\n // fixed to `Control+KeyC` (for Windows), it doesn't handling a different assignment\n (isMatchingKeyCombination(domEvent, 'Control+KeyC') &&\n !this.instance.hasSelection())) {\n // abort command\n this.abort();\n }\n else if (domEvent.code === 'Backspace') {\n // Alt: jump word only, Ctrl: jump to end\n // this would apply for Delete, ArrowLeft, ArrowRight\n this.deleteFromCommand(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(true)\n : -1);\n }\n else if (domEvent.code === 'Delete') {\n this.deleteFromCommand(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(false)\n : 1);\n }\n else if (domEvent.code === 'ArrowLeft') {\n const movement = this.computeCursorMovement(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(true)\n : -1);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(movement.seq);\n }\n else if (domEvent.code === 'ArrowRight') {\n const movement = this.computeCursorMovement(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(false)\n : 1);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(movement.seq);\n }\n else if (\n // use key here so we absolute do not allow any characters other than these\n // being added to the input command\n key.match(/^[A-Za-z0-9!@#$%^&*()\\-_=+\"':;,.<>/?[\\]{}|\\\\~` ]$/)) {\n // commonly supported keys\n this.writeToCommand(key);\n }\n else {\n // for the rest, allow the keyboard event to be bubbled to\n // application keyboard shortcuts handler\n forceDispatchKeyboardEvent(domEvent, this.applicationStore);\n }\n });\n // this is needed to support copy-pasting\n this._TEMPORARY__onDataListener = this.instance.onData((val) => {\n // only support pasting (not meant for 1 character though) and special functions starting with special\n // ANSI escape sequence\n if (val.length > 1 && !val.startsWith('\\x1b')) {\n this.writeToCommand(val\n // remove all unsupported characters, including newline\n .replaceAll(/[^A-Za-z0-9!@#$%^&*()\\-_=+\"':;,.<>/?[\\]{}|\\\\~` ]/g, '')\n .trimEnd());\n }\n });\n }\n // NOTE: this is fairly HACKY way to detect command\n // we don't really have a better solution at the moment,\n // but we should come with more systematic way of persisting the start line of command\n // the challenge with this is due to text-reflow\n //\n // there is also a quriky known issue with text-reflow and the line with cursor\n // See https://github.com/xtermjs/xterm.js/issues/1941#issuecomment-463660633\n getCommandRange() {\n const buffer = this.instance.buffer.active;\n const cols = this.instance.cols;\n const commandText = `${COMMAND_START}${this.command}`;\n const commandFirstLine = `${COMMAND_START}${this.command.substring(0, cols - COMMAND_START.length)}${this.command.length < cols - COMMAND_START.length\n ? ' '.repeat(cols - this.command.length - COMMAND_START.length)\n : ''}`;\n let startY = 0;\n let cursorIdx = 0;\n for (let i = buffer.baseY + buffer.cursorY; i > -1; --i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n const lineText = line.translateToString();\n if (lineText === commandFirstLine) {\n startY = i;\n cursorIdx +=\n (i === buffer.baseY + buffer.cursorY ? buffer.cursorX : cols) -\n COMMAND_START.length;\n break;\n }\n else {\n cursorIdx +=\n i === buffer.baseY + buffer.cursorY ? buffer.cursorX : cols;\n }\n }\n // start line == -1 is the rare case where the command is too long and exceeds the buffer length\n // leading to incomplete command being captured\n return {\n startY,\n startX: COMMAND_START.length,\n endY: startY + (commandText.length - (commandText.length % cols)) / cols,\n endX: commandText.length % cols,\n cursorIdx,\n };\n }\n computeCursorJumpMovement(back) {\n const range = this.getCommandRange();\n let distance = undefined;\n let foundWord = false;\n // scan for the boundary of the closest word to the cursor position\n if (back) {\n for (let i = range.cursorIdx - 1; i > -1; --i) {\n const char = this.command.charAt(i);\n if (char.match(/\\w/)) {\n if (!foundWord) {\n foundWord = true;\n }\n }\n else {\n if (foundWord) {\n distance = range.cursorIdx - i - 1;\n break;\n }\n }\n }\n }\n else {\n for (let i = range.cursorIdx + 1; i < this.command.length; ++i) {\n const char = this.command.charAt(i);\n if (char.match(/\\w/)) {\n if (!foundWord) {\n foundWord = true;\n }\n }\n else {\n if (foundWord) {\n distance = i - range.cursorIdx - 1;\n break;\n }\n }\n }\n }\n if (distance === undefined) {\n distance = back ? range.cursorIdx : this.command.length - range.cursorIdx;\n }\n return back ? -distance : distance;\n }\n /**\n * Generate the ANSI escape sequence for new cursor position\n * after being moved by the the number of cells.\n *\n * @param val a number (negative means cursor move leftwards)\n * @param limit whether to limit the movement of the cursor by the command range\n * @returns cursor movement information including the ANSI escape sequence for new cursor position and scroll distance\n */\n computeCursorMovement(val, limit = true) {\n const buffer = this.instance.buffer.active;\n const cols = this.instance.cols;\n const rows = this.instance.rows;\n const range = this.getCommandRange();\n const maxDistance = limit\n ? val < 0\n ? range.cursorIdx\n : this.command.length - range.cursorIdx\n : val;\n const distance = Math.min(Math.abs(val), maxDistance);\n let newCursorX = buffer.cursorX;\n let newCursorY = buffer.cursorY;\n let abs_cursorY = buffer.baseY + buffer.cursorY;\n if (val < 0) {\n // move leftwards\n newCursorX = (cols + ((buffer.cursorX - distance) % cols)) % cols;\n newCursorY =\n buffer.cursorY -\n (distance > buffer.cursorX ? Math.ceil(distance / cols) : 0);\n abs_cursorY = newCursorY + buffer.baseY;\n newCursorY = Math.max(newCursorY, -1);\n }\n else if (val > 0) {\n // move rightwards\n newCursorX = (buffer.cursorX + distance) % cols;\n newCursorY =\n buffer.cursorY +\n (buffer.cursorX + distance >= cols\n ? Math.floor((buffer.cursorX + distance) / cols)\n : 0);\n abs_cursorY = newCursorY + buffer.baseY;\n newCursorY = Math.min(newCursorY, rows - 1);\n }\n const scroll = abs_cursorY > buffer.viewportY + rows\n ? abs_cursorY - (buffer.viewportY + rows)\n : abs_cursorY < buffer.viewportY\n ? abs_cursorY - buffer.viewportY\n : 0;\n return {\n // NOTE: currently, there is a design limitation with programmatically set the cursor using escape sequence\n // by design, the scrollback (everything above the viewport/ybase) is readonly, and most terminals work like this.\n // So for very long command that causes an overflow, one cannot set the cursor position pass the `baseY`\n // this will affect both navigation and delete/backspace behavior\n // See https://github.com/xtermjs/xterm.js/issues/4405\n seq: ANSI_moveCursor(newCursorY + 1, newCursorX + 1),\n scroll,\n };\n }\n /**\n * Write value to command with awareness of the current cursor position\n */\n writeToCommand(val) {\n const range = this.getCommandRange();\n const left = this.command.slice(0, range.cursorIdx);\n const right = this.command.slice(range.cursorIdx);\n const movement = this.computeCursorMovement(val.length, false);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(val +\n right +\n // update the cursor\n movement.seq);\n this.setCommand(left + val + right);\n }\n /**\n * Remove number of characters from command with awareness of the current cursor position\n * NOTE: negative number means backward deleting (i.e. backspace)\n */\n deleteFromCommand(val) {\n const range = this.getCommandRange();\n const maxDistance = val < 0 ? range.cursorIdx : this.command.length - range.cursorIdx;\n const distance = Math.min(Math.abs(val), maxDistance);\n let left;\n let right;\n let cursorMovement;\n if (val === 0) {\n return;\n }\n else if (val < 0) {\n // remove leftwards\n left = this.command.slice(0, range.cursorIdx - distance);\n right = this.command.slice(range.cursorIdx, this.command.length);\n cursorMovement = -distance;\n }\n else {\n // remove rightwards\n left = this.command.slice(0, range.cursorIdx);\n right = this.command.slice(range.cursorIdx + distance, this.command.length);\n cursorMovement = 0;\n }\n const movement = this.computeCursorMovement(cursorMovement);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(\n // reset cursor to start of command, basically here, we're rewriting the entire command\n ANSI_moveCursor(range.startY + 1, range.startX + 1) +\n left +\n right +\n // fill space to erase cells rendered from previous command\n ' '.repeat(distance) +\n // move the cursor as well\n movement.seq);\n this.setCommand(left + right);\n }\n get isSetup() {\n return this.setupState.hasCompleted;\n }\n isFocused() {\n return document.activeElement === this.instance.textarea;\n }\n mount(container) {\n if (!this.setupState.hasCompleted) {\n throw new IllegalStateError(`XTerm terminal has not been set up yet`);\n }\n this.instance.open(container);\n }\n dispose() {\n this.searcher.dispose();\n this.resizer.dispose();\n this.renderer.dispose();\n this.webLinkProvider?.dispose();\n this._TEMPORARY__onKeyListener?.dispose();\n this._TEMPORARY__onDataListener?.dispose();\n this.instance.dispose();\n }\n autoResize() {\n this.resizer.fit();\n }\n focus() {\n this.instance.focus();\n }\n addCommandToHistory(val) {\n // if this is the same as previous command, do not push it to the history stack\n if (val === this.commandHistory.at(0)) {\n return;\n }\n // history command is essentially a stack, so we only insert at the beginning\n this.commandHistory.unshift(val);\n }\n /**\n * This methods help update the current command to a command in history\n * stack, it does the necessary resetting and helps properly update\n * the history navigation index\n */\n setCommandFromHistory(idx) {\n const val = idx === undefined\n ? this.currentCommandSearchString\n : // NOTE: only consider commands starting with the original command\n // also note that empty string naturaly match all history command\n this.commandHistory\n .filter((command) => command.startsWith(this.currentCommandSearchString))\n .at(idx);\n if (val !== undefined) {\n let range = this.getCommandRange();\n this.instance.write(\n // reset cursor to start of command and rewrite the entire command\n ANSI_moveCursor(range.startY + 1, range.startX + 1) +\n val.padEnd(this.command.length));\n this.command = val;\n range = this.getCommandRange();\n this.instance.write(\n // reset cursor to command end\n ANSI_moveCursor(range.endY + 1, range.endX + 1));\n this.commandHistoryNavigationIdx = idx;\n }\n }\n setCommand(val) {\n this.command = val;\n this.currentCommandSearchString = val;\n this.commandHistoryNavigationIdx = undefined;\n }\n newCommand() {\n this.instance.write(DEFAULT_COMMAND_HEADER);\n this.setCommand('');\n }\n newSystemCommand(command) {\n // if another command is already running, we don't need to print the command header anymore\n // the potential pitfall here is that we could have another process prints to the\n // terminal while the command is being run. Nothing much we can do here for now.\n if (!this.isRunningCommand) {\n if (this.command) {\n this.abort();\n this.newCommand();\n }\n this.instance.write(`${DISPLAY_ANSI_ESCAPE.DIM}(system: ${command})\\n${DISPLAY_ANSI_ESCAPE.RESET}`);\n }\n }\n /**\n * Flush the terminal screen completely\n *\n * Probably due to write buffer batching, calling `reset` or `clear` on xterm terminal immediately after\n * write commands will not work. To solve this, we can either promisify the `reset` call or write the ANSI\n * reset sequence \\x1bc\n */\n flushScreen() {\n this.instance.write('\\x1bc');\n this.instance.reset();\n }\n get isFlushed() {\n const buffer = this.instance.buffer.active;\n let isLastLineEmpty = true;\n for (let i = buffer.baseY + buffer.cursorY; i > -1; --i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n const lineText = line.translateToString();\n // skip empty lines\n if (!lineText.trim()) {\n continue;\n }\n else {\n isLastLineEmpty = lineText !== COMMAND_START;\n break;\n }\n }\n return this.command === '' && isLastLineEmpty;\n }\n clear() {\n this.flushScreen();\n this.instance.scrollToTop();\n this.newCommand();\n }\n resetANSIStyling() {\n this.instance.write(DISPLAY_ANSI_ESCAPE.RESET);\n }\n showHelp() {\n this.resetANSIStyling();\n this.instance.scrollToBottom();\n if (!this.isFlushed && !this.isRunningCommand) {\n this.abort();\n }\n this.instance.write(getHelpCommandContent(this.commandRegistry));\n this.abort();\n }\n showCommonANSIEscapeSequences() {\n this.resetANSIStyling();\n this.instance.scrollToBottom();\n if (!this.isFlushed && !this.isRunningCommand) {\n this.abort();\n }\n this.instance.write(getCommonANSIEscapeSequencesForStyling());\n this.abort();\n }\n abort() {\n this.resetANSIStyling();\n this.instance.write('\\n');\n this.newCommand();\n this.instance.scrollToBottom();\n this.isRunningCommand = false;\n }\n fail(error, opts) {\n if (opts?.systemCommand) {\n this.newSystemCommand(opts.systemCommand);\n }\n this.instance.write(`\\n${DISPLAY_ANSI_ESCAPE.RED}${error}${DISPLAY_ANSI_ESCAPE.RED}`);\n this.abort();\n }\n output(val, opts) {\n this.resetANSIStyling();\n if ((!opts?.clear || this.preserveLog) && opts?.systemCommand) {\n this.newSystemCommand(opts.systemCommand);\n }\n if (!this.preserveLog && opts?.clear) {\n this.flushScreen();\n }\n else if (this.preserveLog || this.isRunningCommand) {\n this.instance.write('\\n');\n }\n this.instance.write(val);\n this.resetANSIStyling();\n this.instance.write('\\n');\n this.instance.scrollToBottom();\n this.newCommand();\n }\n search(val) {\n this.searcher.findNext(val, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n // do incremental search so that the expansion will be expanded the selection if it\n // still matches the term the user typed.\n incremental: true,\n });\n }\n clearSearch() {\n this.searcher.clearDecorations();\n this.instance.clearSelection();\n this.setSearchText('');\n this.setSearchResultCount(undefined);\n this.setSearchCurrentResultIndex(undefined);\n }\n findPrevious() {\n this.searcher.findPrevious(this.searchConfig.searchText, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n });\n }\n findNext() {\n this.searcher.findNext(this.searchConfig.searchText, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n });\n }\n getContent() {\n const buffer = this.instance.buffer.active;\n const lines = [];\n for (let i = 0; i < buffer.length; ++i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n lines.push(line.translateToString());\n }\n return lines.join('\\n').trimEnd();\n }\n copy() {\n if (!this.instance.hasSelection()) {\n this.applicationStore.notificationService.notifyWarning(`Ther terminal has no selection to copy`);\n return;\n }\n this.applicationStore.clipboardService\n .copyTextToClipboard(this.instance.getSelection())\n .catch(this.applicationStore.alertUnhandledError);\n }\n copyAll() {\n this.applicationStore.clipboardService\n .copyTextToClipboard(this.getContent())\n .catch(this.applicationStore.alertUnhandledError);\n }\n}\n//# sourceMappingURL=XTerm.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { XTerm } from './terminal/XTerm.js';\nexport class TerminalService {\n applicationStore;\n terminal;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.terminal = new XTerm(applicationStore);\n }\n}\n//# sourceMappingURL=TerminalService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nconst UNKNOWN_USER_ID = '(unknown)';\nexport class IdentityService {\n applicationStore;\n currentUser = UNKNOWN_USER_ID;\n constructor(applicationStore) {\n makeObservable(this, {\n currentUser: observable,\n setCurrentUser: action,\n });\n this.applicationStore = applicationStore;\n }\n get isAnonymous() {\n return this.currentUser === UNKNOWN_USER_ID;\n }\n setCurrentUser(val) {\n this.currentUser = val;\n }\n}\n//# sourceMappingURL=IdentityService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_COLOR_THEME;\n(function (LEGEND_APPLICATION_COLOR_THEME) {\n LEGEND_APPLICATION_COLOR_THEME[\"DEFAULT_DARK\"] = \"default-dark\";\n LEGEND_APPLICATION_COLOR_THEME[\"LEGACY_LIGHT\"] = \"legacy-light\";\n LEGEND_APPLICATION_COLOR_THEME[\"HIGH_CONTRAST_LIGHT\"] = \"hc-light\";\n})(LEGEND_APPLICATION_COLOR_THEME || (LEGEND_APPLICATION_COLOR_THEME = {}));\nexport const DEFAULT_DARK_COLOR_THEME = {\n name: 'Default Dark (default)',\n key: LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK,\n TEMPORARY__globalCSSClassName: 'theme__default-dark',\n colors: {\n 'data-access-overview.chart.access-granted': '#6a9955',\n 'data-access-overview.chart.access-approved': '#007acc',\n 'data-access-overview.chart.access-requested': '#fbbc05',\n 'data-access-overview.chart.access-not-granted': '#ea4646',\n 'data-access-overview.chart.unsupported-access': '#2d2d2d',\n },\n};\nexport const LEGACY_LIGHT_COLOR_THEME = {\n name: 'Legacy Light',\n key: LEGEND_APPLICATION_COLOR_THEME.LEGACY_LIGHT,\n TEMPORARY__globalCSSClassName: 'theme__legacy-light',\n};\nexport const HIGH_CONTRAST_LIGHT_COLOR_THEME = {\n name: 'High-Contrast Light',\n key: LEGEND_APPLICATION_COLOR_THEME.HIGH_CONTRAST_LIGHT,\n TEMPORARY__globalCSSClassName: 'theme__hc-light',\n colors: {\n 'data-access-overview.chart.access-granted': '#52a31d',\n 'data-access-overview.chart.access-approved': '#3d8df5',\n 'data-access-overview.chart.access-requested': '#f5c518',\n 'data-access-overview.chart.access-not-granted': '#fa5343',\n 'data-access-overview.chart.unsupported-access': '#e1e7ea',\n },\n};\n//# sourceMappingURL=LegendApplicationColorTheme.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nexport class LocalStorage {\n get localStorage() {\n return guaranteeNonNullable(window.localStorage, `'window.localStorage' object is not available in non-web environment`);\n }\n setItem(key, value) {\n this.localStorage.setItem(key, value);\n }\n getItem(key) {\n return this.localStorage.getItem(key);\n }\n removeItem(key) {\n this.localStorage.removeItem(key);\n }\n clear() {\n this.localStorage.clear();\n }\n hasItem(key) {\n return this.localStorage.hasItem(key);\n }\n}\n//# sourceMappingURL=ApplicationStorage.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeIsNumber, guaranteeIsString, guaranteeIsBoolean, guaranteeIsObject, isNonNullable, returnUndefOnError, isEmpty, } from '@finos/legend-shared';\nimport { LocalStorage } from './ApplicationStorage.js';\nexport class StorageStore {\n storeIndex;\n storageService;\n data;\n constructor(storageService, storeIndex) {\n this.storageService = storageService;\n this.storeIndex = storeIndex;\n this.data = this.storageService.getIndex(this.storeIndex) ?? {};\n }\n getValue(key) {\n return this.data[key];\n }\n getNumericValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsNumber(value) : undefined;\n }\n getStringValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsString(value) : undefined;\n }\n getBooleanValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsBoolean(value) : undefined;\n }\n getObjectValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsObject(value) : undefined;\n }\n hasValue(key) {\n return isNonNullable(this.data[key]);\n }\n persistValue(key, value) {\n if (value !== undefined) {\n this.data[key] = value;\n }\n else {\n delete this.data[key];\n }\n this.storageService.updateIndex(this.storeIndex, this.data);\n }\n}\nexport class StorageService {\n applicationStore;\n storage;\n data;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new LocalStorage();\n const data = this.storage.getItem(applicationStore.config.applicationStorageKey);\n this.data = data\n ? returnUndefOnError(() => JSON.parse(data)) ?? {}\n : {};\n }\n getIndex(index) {\n return this.data[index];\n }\n updateIndex(index, value) {\n if (isEmpty(value)) {\n delete this.data[index];\n }\n else {\n this.data[index] = value;\n }\n this.storage.setItem(this.applicationStore.config.applicationStorageKey, JSON.stringify(this.data));\n }\n}\n//# sourceMappingURL=StorageService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '@finos/legend-shared';\nexport class TelemetryServicePlugin extends AbstractPlugin {\n userId;\n appName;\n appVersion;\n appEnv;\n appSessionId;\n appStartTime;\n install(pluginManager) {\n pluginManager.registerTelemetryServicePlugin(this);\n }\n setup(config) {\n this.userId = config.userId;\n this.appName = config.appName;\n this.appVersion = config.appVersion;\n this.appEnv = config.appEnv;\n this.appSessionId = config.appSessionId;\n this.appStartTime = config.appStartTime;\n }\n}\nexport class TelemetryService {\n applicationStore;\n plugins = [];\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n registerPlugins(plugins) {\n this.plugins = plugins;\n }\n setup() {\n const config = {\n userId: this.applicationStore.identityService.currentUser,\n appName: this.applicationStore.config.appName,\n appEnv: this.applicationStore.config.env,\n appVersion: this.applicationStore.config.appVersion,\n appSessionId: this.applicationStore.uuid,\n appStartTime: this.applicationStore.timeService.timestamp,\n };\n this.plugins.forEach((plugin) => plugin.setup(config));\n }\n logEvent(eventType, data) {\n this.plugins.forEach((plugin) => plugin.logEvent(eventType, data));\n }\n}\n//# sourceMappingURL=TelemetryService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class TimeService {\n timestamp = Date.now();\n /**\n * Record the instances where the application usage is interrupted (e.g. when the app window/tab is not in focus),\n * this is useful to know since for certain platform, background contexts are de-prioritized, given less resources,\n * and hence, would run less performantly.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#policies_in_place_to_aid_background_page_performance\n * See https://plumbr.io/blog/performance-blog/background-tabs-in-browser-load-20-times-slower\n *\n * This impacts certain operations such as scheduler and timer in the app, so it's useful to keep track of these here.\n */\n interruptions = [];\n recordUsageInterruption() {\n this.interruptions.push(Date.now());\n }\n finalizeTimingsRecord(stopWatch, timings) {\n const totalTime = stopWatch.elapsed;\n const startTime = stopWatch.startTime;\n const endTime = startTime + totalTime;\n const record = {\n ...(timings ?? {}),\n ...Object.fromEntries(stopWatch.records),\n total: totalTime,\n };\n // count the number of interruptions\n let numberOfInteruptions = 0;\n for (const interruption of this.interruptions) {\n if (interruption >= startTime && interruption <= endTime) {\n numberOfInteruptions++;\n }\n else if (interruption > endTime) {\n break;\n }\n }\n return numberOfInteruptions > 0\n ? { ...record, __numberOfInteruptions: numberOfInteruptions }\n : record;\n }\n}\n//# sourceMappingURL=TimeService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LEGEND_APPLICATION_COLOR_THEME } from './LegendApplicationColorTheme.js';\nexport var LEGEND_APPLICATION_SETTING_KEY;\n(function (LEGEND_APPLICATION_SETTING_KEY) {\n LEGEND_APPLICATION_SETTING_KEY[\"COLOR_THEME\"] = \"application.layout.colorTheme\";\n})(LEGEND_APPLICATION_SETTING_KEY || (LEGEND_APPLICATION_SETTING_KEY = {}));\nexport const LEGEND_APPLICATION_SETTING_CONFIG = {\n [LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME]: {\n defaultValue: LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK,\n },\n};\n//# sourceMappingURL=LegendApplicationSetting.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { LEGEND_APPLICATION_SETTING_KEY } from '../__lib__/LegendApplicationSetting.js';\nimport { LogEvent, guaranteeNonNullable } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { DEFAULT_DARK_COLOR_THEME, LEGEND_APPLICATION_COLOR_THEME, } from '../__lib__/LegendApplicationColorTheme.js';\nexport class LayoutService {\n applicationStore;\n // backdrop\n backdropContainerElementID;\n showBackdrop = false;\n // color theme\n colorThemeRegistry = new Map();\n currentColorTheme;\n constructor(applicationStore) {\n makeObservable(this, {\n currentColorTheme: observable.ref,\n TEMPORARY__isLightColorThemeEnabled: computed,\n backdropContainerElementID: observable,\n showBackdrop: observable,\n setBackdropContainerElementID: action,\n setShowBackdrop: action,\n setColorTheme: action,\n });\n this.applicationStore = applicationStore;\n // register core color themes\n // TODO: we might want to cover at least: a dark theme, a light theme, and a high contrast theme (etc.)\n // as part of core\n this.colorThemeRegistry.set(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK, DEFAULT_DARK_COLOR_THEME);\n // register color themes from extensions\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraColorThemes?.() ?? [])\n .forEach((colorTheme) => {\n // NOTE: in the future, when we need to make theme extensible, we might want to reconsider this decision here\n // perhaps, each extension can define a new set of color keys that each theme supports and the core theme is extensible\n // while non-core themes are left in a separate package/module and might/might not have support for those color keys\n if (this.colorThemeRegistry.has(colorTheme.key)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.COLOR_THEME_CONFIGURATION_CHECK__FAILURE), `Found duplicated color themes with key '${colorTheme.key}'`);\n return;\n }\n this.colorThemeRegistry.set(colorTheme.key, colorTheme);\n });\n const themeKey = this.applicationStore.settingService.getStringValue(LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME) ?? LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK;\n this.currentColorTheme = guaranteeNonNullable(this.colorThemeRegistry.get(themeKey));\n this.TEMPORARY__syncGlobalCSSClassName(this.currentColorTheme, undefined);\n }\n getElementByID(val) {\n return document.querySelector(`[data-elementid='${val}']`) ?? undefined;\n }\n /**\n * Change the ID used to find the base element to mount the backdrop on.\n * This is useful when we want to use backdrop with embedded application which\n * requires its own backdrop usage.\n *\n * TODO?: we can consider making backdrop container component auto-register its ID\n * as it gets rendered in the application\n */\n setBackdropContainerElementID(val) {\n this.backdropContainerElementID = val;\n }\n setShowBackdrop(val) {\n this.showBackdrop = val;\n }\n /**\n * NOTE: this is the poor man way of doing theming as we only properly support dark color theme\n * This flag is binary because we did light color theme in rush\n *\n * See https://github.com/finos/legend-studio/issues/264\n */\n get TEMPORARY__isLightColorThemeEnabled() {\n return (this.currentColorTheme.key !== LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK);\n }\n TEMPORARY__syncGlobalCSSClassName(theme, previousTheme) {\n if (previousTheme) {\n document.body.classList.remove(previousTheme.TEMPORARY__globalCSSClassName);\n }\n document.body.classList.add(theme.TEMPORARY__globalCSSClassName);\n }\n setColorTheme(key, options) {\n const newColorTheme = this.colorThemeRegistry.get(key);\n if (key === this.currentColorTheme.key || !newColorTheme) {\n return;\n }\n const previousColorTheme = this.currentColorTheme;\n this.currentColorTheme = newColorTheme;\n this.TEMPORARY__syncGlobalCSSClassName(newColorTheme, previousColorTheme);\n if (options?.persist) {\n this.applicationStore.settingService.persistValue(LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME, key);\n }\n }\n getColor(key) {\n return (this.currentColorTheme.colors?.[key] ??\n guaranteeNonNullable(this.colorThemeRegistry.get(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK)).colors?.[key] ??\n 'transparent');\n }\n}\n//# sourceMappingURL=LayoutService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class ClipboardService {\n applicationStore;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n async copyTextToClipboard(text, options) {\n // This is a much cleaner way which requires HTTPS\n // See https://developers.google.com/web/updates/2018/03/clipboardapi\n await navigator.clipboard\n .writeText(text)\n .catch((error) => {\n this.applicationStore.notificationService.notifyError(error);\n })\n .finally(() => {\n if (options?.notifySuccessMessage) {\n this.applicationStore.notificationService.notifySuccess(options.notifySuccessMessage);\n }\n });\n }\n}\n//# sourceMappingURL=ClipboardService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const NAVIGATION_ZONE_SEPARATOR = '.';\nexport const NAVIGATION_ZONE_PREFIX = '#';\nexport class NavigationService {\n navigator;\n constructor(navigator) {\n this.navigator = navigator;\n }\n}\n//# sourceMappingURL=NavigationService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { deepEqual, isBoolean, isNumber, isObject, isString, LogEvent, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { StorageStore } from './storage/StorageService.js';\nexport const collectSettingConfigurationEntriesFromConfig = (data) => Object.entries(data).map((entry) => ({\n key: entry[0],\n ...entry[1],\n}));\nconst APPLICATION_SETTING_STORAGE_KEY = 'application-settings-storage';\nexport class SettingService {\n applicationStore;\n storage;\n registry = new Map();\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new StorageStore(this.applicationStore.storageService, APPLICATION_SETTING_STORAGE_KEY);\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraSettingConfigurationEntries?.() ?? [])\n .forEach((entry) => {\n if (this.registry.has(entry.key)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_CONFIGURATION_CHECK__FAILURE), `Found duplicated setting with key '${entry.key}'`);\n return;\n }\n // TODO: do validation check here\n // See https://github.com/finos/legend-studio/issues/407\n this.registry.set(entry.key, entry);\n });\n }\n getNumericValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isNumber(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve numeric value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getStringValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isString(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve string value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getBooleanValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isBoolean(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve boolean value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getObjectValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isObject(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve object value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n persistValue(key, value) {\n const defaultValue = this.registry.get(key)?.defaultValue;\n this.storage.persistValue(key, \n // NOTE: if the value equals to default value, the value will be unset instead\n defaultValue !== undefined && deepEqual(defaultValue, value)\n ? undefined\n : value);\n }\n}\n//# sourceMappingURL=SettingService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { UnsupportedOperationError } from '@finos/legend-shared';\nimport {} from './NavigationService.js';\nexport class DefaultNavigator {\n goToLocation(location, options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n reload(options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n goToAddress(address, options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n visitAddress(address) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n generateAddress(location) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n updateCurrentLocation(location) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n updateCurrentZone(zone) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n resetZone() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentBaseAddress(options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentAddress() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocation() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocationParameters() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocationParameterValue(key) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentZone() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n blockNavigation(blockCheckers, onBlock, onNativePlatformNavigationBlock) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n unblockNavigation() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n get isNavigationBlocked() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n INTERNAL__internalizeTransientParameter(key) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n}\n//# sourceMappingURL=DefaultNavigator.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LogEvent, isBoolean, isNumber, isObject, isString, } from '@finos/legend-shared';\nimport { StorageStore } from './storage/StorageService.js';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nconst APPLICATION_USER_DATA_STORAGE_KEY = 'application-user-data-storage';\nexport class UserDataService {\n applicationStore;\n storage;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new StorageStore(this.applicationStore.storageService, APPLICATION_USER_DATA_STORAGE_KEY);\n }\n getNumericValue(key) {\n const value = this.storage.getValue(key);\n if (!isNumber(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve numeric value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getStringValue(key) {\n const value = this.storage.getValue(key);\n if (!isString(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve string value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getBooleanValue(key) {\n const value = this.storage.getValue(key);\n if (!isBoolean(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve boolean value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getObjectValue(key) {\n const value = this.storage.getValue(key);\n if (!isObject(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve object value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n persistValue(key, value) {\n this.storage.persistValue(key, value);\n }\n}\n//# sourceMappingURL=UserDataService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Compare SemVer versions.\n *\n * NOTE: SemVer could have been the perfect library to use here but we can't use it since it's meant for `Node` only\n * `compare-versions` works for browser but seems way overkill, especially when the version format is very\n * standard, i.e. `x.y.z`, no prerelease, etc.\n * As such, we can use the lean comparison algo using `localeCompare` with numeric settings\n *\n * See https://stackoverflow.com/questions/55466274/simplify-semver-version-compare-logic/55466325#55466325\n * See omichelsen/compare-versions#45\n */\nexport const compareSemVerVersions = (val1, val2) => \n// TODO: verify if the version match certain patterns\nval1.localeCompare(val2, undefined, { numeric: true });\n// regex to validate semver: https://github.com/semver/semver/issues/232\nexport const isSemVer = (val) => /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$/.test(val);\n//# sourceMappingURL=StringCompareUtil.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { compareSemVerVersions, guaranteeNonEmptyString, isSemVer, } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport var RELEASE_UPDATE_TYPE;\n(function (RELEASE_UPDATE_TYPE) {\n RELEASE_UPDATE_TYPE[\"BUG_FIX\"] = \"BUG_FIX\";\n RELEASE_UPDATE_TYPE[\"ENHANCEMENT\"] = \"ENHANCEMENT\";\n})(RELEASE_UPDATE_TYPE || (RELEASE_UPDATE_TYPE = {}));\nexport const collectReleaseNotes = (releaseNotes) => releaseNotes.map((release) => {\n guaranteeNonEmptyString(release.version, \"Release notes 'version' is missing\");\n release.notes?.map((note) => {\n guaranteeNonEmptyString(note.type, \"Release note 'type' is missing\");\n guaranteeNonEmptyString(note.description, \"Release note 'description' is missing\");\n return note;\n });\n return release;\n});\nexport const APPLICATION_LAST_OPENED_VERSION = 'application.lastOpenedVersion';\nexport class ReleaseNotesService {\n applicationStore;\n releaseNotes;\n showCurrentReleaseModal = true;\n showReleaseLog = false;\n isConfigured = false;\n constructor(applicationStore) {\n makeObservable(this, {\n showCurrentReleaseModal: observable,\n showReleaseLog: observable,\n isConfigured: observable,\n setShowCurrentRelease: action,\n configure: action,\n setReleaseLog: action,\n });\n this.applicationStore = applicationStore;\n }\n configure(releaseNotes) {\n this.isConfigured = true;\n this.releaseNotes = collectReleaseNotes(releaseNotes);\n }\n setShowCurrentRelease(val) {\n this.showCurrentReleaseModal = val;\n }\n setReleaseLog(val) {\n this.showReleaseLog = val;\n }\n getViewedVersion() {\n return this.applicationStore.userDataService.getStringValue(APPLICATION_LAST_OPENED_VERSION);\n }\n updateViewedVersion() {\n this.applicationStore.userDataService.persistValue(APPLICATION_LAST_OPENED_VERSION, this.applicationStore.config.appVersion);\n }\n showVersion(versionNotes, lastOpenedVersion) {\n const version = versionNotes.version;\n if (isSemVer(version) && isSemVer(lastOpenedVersion)) {\n if (compareSemVerVersions(version, lastOpenedVersion) === 1) {\n return true;\n }\n }\n return false;\n }\n showableVersions() {\n const lastOpenedVersion = this.getViewedVersion();\n if (!lastOpenedVersion) {\n return undefined;\n }\n return this.releaseNotes?.filter((val) => this.showVersion(val, lastOpenedVersion));\n }\n}\n//# sourceMappingURL=ReleaseNotesService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TracerService, LogService, LogEvent, uuid, ActionState, assertErrorThrown, IllegalStateError, isNonNullable, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { DocumentationService } from './DocumentationService.js';\nimport { AssistantService } from './AssistantService.js';\nimport { EventService } from './event/EventService.js';\nimport { ApplicationNavigationContextService } from './ApplicationNavigationContextService.js';\nimport { CommandService } from './CommandService.js';\nimport { KeyboardShortcutsService } from './KeyboardShortcutsService.js';\nimport { TerminalService } from './TerminalService.js';\nimport { AlertService } from './AlertService.js';\nimport { NotificationService } from './NotificationService.js';\nimport { IdentityService } from './IdentityService.js';\nimport { StorageService } from './storage/StorageService.js';\nimport { TelemetryService } from './TelemetryService.js';\nimport { TimeService } from './TimeService.js';\nimport { LayoutService } from './LayoutService.js';\nimport { ClipboardService } from './ClipboardService.js';\nimport { NavigationService } from './navigation/NavigationService.js';\nimport { SettingService } from './SettingService.js';\nimport { DefaultNavigator } from './navigation/DefaultNavigator.js';\nimport { UserDataService } from './UserDataService.js';\nimport { ReleaseNotesService } from './ReleaseNotesService.js';\nexport class ApplicationExtensionState {\n /**\n * This helps to better type-check for this empty abtract type\n * See https://github.com/finos/legend-studio/blob/master/docs/technical/typescript-usage.md#understand-typescript-structual-type-system\n */\n _$nominalTypeBrand;\n}\nexport class ApplicationStore {\n uuid = uuid();\n /**\n * This is a mechanism to have the store holds references to extension states\n * so that we can refer back to these states when needed or do cross-extensions\n * operations\n */\n extensionStates = [];\n config;\n pluginManager;\n initState = ActionState.create();\n platform;\n // core\n timeService;\n logService;\n storageService;\n userDataService;\n settingService;\n alertService;\n notificationService;\n identityService;\n commandService;\n keyboardShortcutsService;\n layoutService;\n clipboardService;\n terminalService;\n navigationService;\n navigationContextService;\n // support\n documentationService;\n assistantService;\n // release\n releaseNotesService;\n // event\n eventService;\n telemetryService;\n tracerService;\n constructor(config, pluginManager) {\n this.config = config;\n this.pluginManager = pluginManager;\n this.timeService = new TimeService();\n // NOTE: set the logger first so other loading could use the configured logger\n this.logService = new LogService();\n this.logService.registerPlugins(pluginManager.getLoggerPlugins());\n this.storageService = new StorageService(this);\n this.settingService = new SettingService(this);\n this.userDataService = new UserDataService(this);\n this.alertService = new AlertService(this);\n this.notificationService = new NotificationService();\n this.identityService = new IdentityService(this);\n this.layoutService = new LayoutService(this);\n this.clipboardService = new ClipboardService(this);\n this.terminalService = new TerminalService(this);\n this.commandService = new CommandService(this);\n this.keyboardShortcutsService = new KeyboardShortcutsService(this);\n this.navigationService = new NavigationService(new DefaultNavigator());\n this.navigationContextService = new ApplicationNavigationContextService(this);\n this.documentationService = new DocumentationService(this);\n this.assistantService = new AssistantService(this);\n this.releaseNotesService = new ReleaseNotesService(this);\n this.eventService = new EventService();\n this.eventService.registerEventNotifierPlugins(pluginManager.getEventNotifierPlugins());\n this.telemetryService = new TelemetryService(this);\n this.telemetryService.registerPlugins(pluginManager.getTelemetryServicePlugins());\n this.telemetryService.setup();\n this.tracerService = new TracerService();\n this.tracerService.registerPlugins(pluginManager.getTracerServicePlugins());\n // extensions\n this.extensionStates = this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraApplicationExtensionStateBuilders?.() ?? [])\n .map((creator) => creator(this))\n .filter(isNonNullable);\n }\n async initialize(platform) {\n if (!this.initState.isInInitialState) {\n this.notificationService.notifyIllegalState('Application store is re-initialized');\n return;\n }\n this.initState.inProgress();\n try {\n if (this.platform) {\n throw new IllegalStateError(`Platform is already configured`);\n }\n this.platform = platform;\n this.navigationService =\n new NavigationService(platform.getNavigator());\n await platform.initialize();\n this.initState.pass();\n }\n catch (error) {\n assertErrorThrown(error);\n this.notificationService.notifyError(error);\n this.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__FAILURE), 'Failed to load Legend application');\n this.initState.fail();\n }\n }\n /**\n * When we call store/state functions from the component, we should handle error thrown at these functions instead\n * of throwing them to the UI. This enforces that by throwing `IllegalStateError`\n */\n alertUnhandledError = (error) => {\n this.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), 'Encountered unhandled error in component tree', error);\n this.notificationService.notifyIllegalState(error.message);\n };\n /**\n * Guarantee that the action being used by the component does not throw unhandled errors\n */\n guardUnhandledError = (actionFn) => () => {\n actionFn().catch(this.alertUnhandledError);\n };\n}\n//# sourceMappingURL=ApplicationStore.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { downloadFileUsingDataURI, guaranteeNonNullable, } from '@finos/legend-shared';\nvar DOWNLOAD_EVENTS;\n(function (DOWNLOAD_EVENTS) {\n DOWNLOAD_EVENTS[\"TAG_REQUEST\"] = \"download-request\";\n DOWNLOAD_EVENTS[\"TAG_RESPONSE\"] = \"download-response\";\n DOWNLOAD_EVENTS[\"STREAM_CLOSED\"] = \"#stream-closed\";\n DOWNLOAD_EVENTS[\"STREAM_ABORTED\"] = \"#stream-aborted\";\n})(DOWNLOAD_EVENTS || (DOWNLOAD_EVENTS = {}));\nfunction createWritableStreamFromMessageChannel(channel) {\n return new WritableStream({\n write(chunk) {\n channel.port1.postMessage(chunk);\n },\n close() {\n channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_CLOSED);\n },\n abort() {\n channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_ABORTED);\n closeMessagePort(channel.port1);\n closeMessagePort(channel.port2);\n },\n });\n}\nfunction closeMessagePort(port) {\n port.onmessage = null;\n port.close();\n}\nasync function getServiceWorker() {\n if (!('serviceWorker' in navigator)) {\n return Promise.reject(new Error('Service worker is not available. Service Worker requires HTTPS protocol'));\n }\n return navigator.serviceWorker\n .getRegistration()\n .then((workerRegistration) => {\n if (workerRegistration === undefined) {\n return undefined;\n }\n const pending = workerRegistration.installing ?? workerRegistration.waiting;\n return (workerRegistration.active ??\n new Promise((resolve) => {\n // if not activated, add listener to waiting or installing registration\n const listener = () => {\n if (pending?.state === 'activated') {\n pending.removeEventListener('statechange', listener);\n resolve(workerRegistration.active ?? undefined);\n }\n };\n pending?.addEventListener('statechange', listener);\n }));\n });\n}\nfunction createDownloadRequest(filename) {\n const PREFIX = 6;\n const prefix = String(Math.random()).slice(-PREFIX);\n const url = new URL(`${prefix}/${filename}`, window.location.href).toString();\n return { tag: DOWNLOAD_EVENTS.TAG_REQUEST, filename, url };\n}\nfunction handleServiceWorkerDownloadResponse(event) {\n const data = event.data;\n if (data?.tag === DOWNLOAD_EVENTS.TAG_RESPONSE && data.downloadUrl.length) {\n openInIframe(data.downloadUrl);\n }\n}\nfunction openInIframe(src) {\n const iframe = document.createElement('iframe');\n iframe.hidden = true;\n iframe.src = src;\n document.body.appendChild(iframe);\n return iframe;\n}\nexport async function downloadStream(response, filename, contentType) {\n const responseBody = guaranteeNonNullable(response.body);\n // creates communication channel with service worker with response handler\n const channel = new MessageChannel();\n channel.port1.onmessage = handleServiceWorkerDownloadResponse;\n // grabs service worker and handles it download along with response channel port\n const serviceWorker = await getServiceWorker();\n if (!serviceWorker) {\n // TODO: remove once service worker workflow is tested\n const text = await response.text();\n // eslint-disable-next-line no-console\n console.debug('service worker not found. Using in memory file download');\n downloadFileUsingDataURI(filename, text, contentType);\n return;\n }\n // eslint-disable-next-line no-console\n console.debug('Service worker found. Continuing download');\n const downloadRequest = createDownloadRequest(filename);\n serviceWorker.postMessage(downloadRequest, [channel.port2]);\n // creates new data stream over communication channel and pipes given stream in it\n responseBody\n .pipeTo(createWritableStreamFromMessageChannel(channel))\n .then(() => {\n // TODO: trace success\n })\n .catch(() => {\n // TODO: fail\n });\n}\nexport function registerDownloadHelperServiceWorker(workerPath) {\n if ('serviceWorker' in navigator) {\n const path = workerPath ?? '/ServiceWorker.js';\n navigator.serviceWorker\n .register(path)\n .then((reg) => {\n // TODO: add trace\n // eslint-disable-next-line no-console\n console.debug(`register service worker success with path: ${path}`, reg);\n })\n .catch((error) => {\n // TODO: add trace\n // eslint-disable-next-line no-console\n console.debug(`register service worker error with path: ${path}`, error);\n });\n }\n}\n//# sourceMappingURL=DownloadHelperServiceWorker.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertErrorThrown, LogEvent, guaranteeNonEmptyString, assertNonNullable, NetworkClient, createRegExpPatternFromWildcardPattern, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { collectKeyedDocumentationEntriesFromConfig, } from '../stores/DocumentationService.js';\nimport { ApplicationStore, } from '../stores/ApplicationStore.js';\nimport { registerDownloadHelperServiceWorker } from '../util/DownloadHelperServiceWorker.js';\nexport class LegendApplicationLogger {\n}\nexport class LegendApplicationWebConsole extends LegendApplicationLogger {\n debug(event, ...data) {\n // eslint-disable-next-line no-console\n console.debug(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n info(event, ...data) {\n // eslint-disable-next-line no-console\n console.info(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n warn(event, ...data) {\n // eslint-disable-next-line no-console\n console.warn(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n error(event, ...data) {\n // eslint-disable-next-line no-console\n console.error(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n}\nexport class LegendApplication {\n config;\n logger;\n pluginManager;\n basePresets = [];\n basePlugins = [];\n baseAddress;\n pluginRegister;\n _isConfigured = false;\n downloadHelperServiceWorkerPath;\n downloadHelper = false;\n releaseNotes;\n constructor(pluginManager) {\n this.pluginManager = pluginManager;\n this.logger = new LegendApplicationWebConsole();\n }\n setup(options) {\n this.baseAddress = guaranteeNonEmptyString(options.baseAddress, `Can't setup application: 'baseAddress' is missing or empty`);\n this.pluginRegister = options.pluginRegister;\n this._isConfigured = true;\n return this;\n }\n withBasePresets(presets) {\n this.basePresets = presets;\n return this.withPresets([]); // this will reset the preset list and prepend with base presets\n }\n withBasePlugins(plugins) {\n this.basePlugins = plugins;\n return this.withPlugins([]); // this will reset the plugin list and prepend with base plugins\n }\n withPresets(presets) {\n this.pluginManager.usePresets([...this.basePresets, ...presets]);\n return this;\n }\n withPlugins(plugins) {\n this.pluginManager.usePlugins([...this.basePlugins, ...plugins]);\n return this;\n }\n withDownloadHelper(path) {\n this.downloadHelper = true;\n this.downloadHelperServiceWorkerPath = path;\n return this;\n }\n withReleaseNotes(releaseNotes) {\n this.releaseNotes = releaseNotes;\n return this;\n }\n setupApplicationStore(store) {\n if (this.releaseNotes) {\n store.releaseNotesService.configure(this.releaseNotes);\n }\n }\n async fetchApplicationConfiguration(baseUrl) {\n const client = new NetworkClient();\n // app config\n let configData;\n try {\n configData = await client.get(`${window.location.origin}${baseUrl}config.json`);\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_CONFIGURATION__FAILURE), error);\n }\n assertNonNullable(configData, `Can't fetch Legend application configuration`);\n // app version\n let versionData;\n try {\n versionData = await client.get(`${window.location.origin}${baseUrl}version.json`);\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_CONFIGURATION__FAILURE), error);\n }\n assertNonNullable(versionData, `Can't fetch Legend application version`);\n return [\n await this.configureApplication({\n configData,\n versionData,\n baseAddress: baseUrl,\n }),\n configData.extensions ?? {},\n ];\n }\n async loadDocumentationRegistryData(config) {\n const entries = {};\n await Promise.all([\n ...config.documentationRegistryEntries,\n ...this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraDocumentationRegistryEntries?.() ?? []),\n ].map(async (entry) => {\n try {\n const client = new NetworkClient(entry.simple\n ? {\n /**\n * NOTE: see the documentation for `simple` flag {@link DocumentationRegistryEntry}\n * here, basically, we expect to fetch just the JSON from an endpoint where `Access-Control-Allow-Origin\", \"*\"` is set\n * as such, we must not include the credential in our request\n * See https://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin-when-credentials-flag-i\n */\n options: {\n credentials: 'omit',\n },\n }\n : {});\n const docData = await client.get(guaranteeNonEmptyString(entry.url, `Can't load documentation registry: 'url' field is missing or empty`));\n assertNonNullable(docData.entries, `Can't load documentation registry data: 'entries' field is missing`);\n const patterns = entry.includes?.map((filter) => createRegExpPatternFromWildcardPattern(filter));\n Object.entries(docData.entries).forEach(([key, docEntry]) => {\n if (!patterns || patterns.some((pattern) => pattern.test(key))) {\n // NOTE: entries will NOT override\n if (!entries[key]) {\n entries[key] = docEntry;\n }\n }\n });\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_FETCH__FAILURE), error);\n }\n }));\n // NOTE: config entries will override\n config.keyedDocumentationEntries = [\n ...collectKeyedDocumentationEntriesFromConfig(entries),\n ...config.keyedDocumentationEntries,\n ];\n }\n async start() {\n assertNonNullable(this._isConfigured, 'Legend application has not been configured properly. Make sure to run setup() before start()');\n try {\n // fetch application config\n const [config, extensionConfigData] = await this.fetchApplicationConfiguration(this.baseAddress);\n this.config = config;\n // setup plugins\n this.pluginRegister?.(this.pluginManager, this.config);\n this.pluginManager.configure(extensionConfigData);\n this.pluginManager.install();\n // other setups\n await Promise.all(\n // NOTE: to be done in parallel to save time\n [this.loadDocumentationRegistryData(config)]);\n // setup application store\n const applicationStore = new ApplicationStore(this.config, this.pluginManager);\n await Promise.all(this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraApplicationSetups?.() ?? [])\n .map((setup) => setup(applicationStore)));\n // set up application\n this.setupApplicationStore(applicationStore);\n // load application\n await this.loadApplication(applicationStore);\n this.logger.info(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS), 'Legend application loaded');\n if (this.downloadHelper) {\n registerDownloadHelperServiceWorker(this.downloadHelperServiceWorkerPath);\n }\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__FAILURE), 'Failed to load Legend application');\n throw error;\n }\n }\n}\nexport const LEGEND_APPLICATION_ROOT_ELEMENT_TAG = 'legend-application-root';\n// NOTE: we use a special tag to mount the application to avoid styling conflicts\nexport const getApplicationRootElement = () => {\n let rootEl = document.getElementsByTagName(LEGEND_APPLICATION_ROOT_ELEMENT_TAG).length\n ? document.getElementsByTagName(LEGEND_APPLICATION_ROOT_ELEMENT_TAG)[0]\n : undefined;\n if (!rootEl) {\n rootEl = document.createElement(LEGEND_APPLICATION_ROOT_ELEMENT_TAG);\n document.body.appendChild(rootEl);\n }\n rootEl.setAttribute('style', 'height: 100%; width: 100%; display: block');\n return rootEl;\n};\n//# sourceMappingURL=LegendApplication.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const createRegExpPatternFromWildcardPattern = (value) => new RegExp(\n// trim and add start/end regexp to make sure the wildcard pattern must be a full match\n`^${value\n .trim()\n // escape special characters except for wilcard *\n .replace(/[\\^$\\\\.+?()[\\]{}|]/g, '\\\\$&')\n // translate wildcard * to .*\n .replace(/\\*/g, '.*')}$`);\n//# sourceMappingURL=MatcherUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin } from '@finos/legend-shared';\nexport class LegendApplicationPlugin extends AbstractPlugin {\n}\n//# sourceMappingURL=LegendApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LEGEND_APPLICATION_SETTING_CONFIG } from '../__lib__/LegendApplicationSetting.js';\nimport { HIGH_CONTRAST_LIGHT_COLOR_THEME, LEGACY_LIGHT_COLOR_THEME, } from '../__lib__/LegendApplicationColorTheme.js';\nimport { LegendApplicationPlugin, } from './LegendApplicationPlugin.js';\nimport { collectSettingConfigurationEntriesFromConfig, } from './SettingService.js';\nimport { configure as configureMobx } from 'mobx';\nimport { configureComponents } from '@finos/legend-art';\nexport class Core_LegendApplicationPlugin extends LegendApplicationPlugin {\n static NAME = packageJson.extensions.applicationPlugin;\n constructor() {\n super(Core_LegendApplicationPlugin.NAME, packageJson.version);\n }\n install(pluginManager) {\n pluginManager.registerApplicationPlugin(this);\n }\n getExtraApplicationSetups() {\n return [\n async (applicationStore) => {\n // configure `mobx`\n configureMobx({\n // Force state modification to be done via actions\n // Otherwise, warning will be shown in development mode\n // However, no warning will shown in production mode\n // See https://mobx.js.org/configuration.html#enforceactions\n enforceActions: 'observed',\n });\n // configure UI components\n configureComponents();\n },\n ];\n }\n getExtraColorThemes() {\n return [LEGACY_LIGHT_COLOR_THEME, HIGH_CONTRAST_LIGHT_COLOR_THEME];\n }\n getExtraSettingConfigurationEntries() {\n return collectSettingConfigurationEntriesFromConfig(LEGEND_APPLICATION_SETTING_CONFIG);\n }\n}\n//# sourceMappingURL=Core_LegendApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonEmptyString, guaranteeNonNullable, URL_SEPARATOR, } from '@finos/legend-shared';\nimport { collectKeyedDocumentationEntriesFromConfig, collectContextualDocumentationEntries, collectDocumentationLinkEntryFromConfig, } from '../stores/DocumentationService.js';\nexport class LegendApplicationConfig {\n appName;\n baseAddress;\n env;\n applicationStorageKey;\n // documentation\n documentationUrl;\n documentationLinkEntries = [];\n documentationRegistryEntries = [];\n keyedDocumentationEntries = [];\n contextualDocEntries = [];\n // version\n appVersion;\n appVersionBuildTime;\n appVersionCommitId;\n constructor(input) {\n this.baseAddress = input.baseAddress;\n this.appName = guaranteeNonEmptyString(input.configData.appName, `Can't configure application: 'appName' field is missing or empty`);\n this.env = guaranteeNonEmptyString(input.configData.env, `Can't configure application: 'env' field is missing or empty`);\n this.applicationStorageKey =\n input.configData.application?.storageKey ??\n this.getDefaultApplicationStorageKey();\n // Documentation\n this.documentationUrl = input.configData.documentation?.url;\n this.documentationLinkEntries = collectDocumentationLinkEntryFromConfig(input.configData.documentation?.links ?? {});\n this.documentationRegistryEntries =\n input.configData.documentation?.registry ?? [];\n this.keyedDocumentationEntries = collectKeyedDocumentationEntriesFromConfig(input.configData.documentation?.entries ?? {});\n this.contextualDocEntries = collectContextualDocumentationEntries(input.configData.documentation?.contextualEntries ?? {});\n // Version\n this.appVersion = guaranteeNonNullable(input.versionData.version, `Can't collect application version: 'version' field is missing`);\n this.appVersionBuildTime = guaranteeNonNullable(input.versionData.buildTime, `Can't collect application version: 'buildTime' field is missing`);\n this.appVersionCommitId = guaranteeNonNullable(input.versionData.commitSHA, `Can't collect application version: 'commitSHA' field is missing`);\n }\n static resolveAbsoluteUrl(url) {\n if (url.trim().startsWith(URL_SEPARATOR)) {\n return window.location.origin + url;\n }\n return url;\n }\n}\n//# sourceMappingURL=LegendApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertNonNullable, guaranteeNonEmptyString, } from '@finos/legend-shared';\nimport { LegendApplicationConfig, } from '@finos/legend-application';\nexport class LegendREPLApplicationConfig extends LegendApplicationConfig {\n replUrl;\n useDynamicREPLServer = false;\n constructor(input) {\n super(input);\n assertNonNullable(input.configData.repl, `Can't configure application: 'repl' field is missing`);\n this.replUrl = LegendApplicationConfig.resolveAbsoluteUrl(guaranteeNonEmptyString(input.configData.repl.url, `Can't configure application: 'repl.url' field is missing or empty`));\n if (input.configData.repl.dynamic !== undefined) {\n this.useDynamicREPLServer = Boolean(input.configData.repl.dynamic);\n }\n }\n getDefaultApplicationStorageKey() {\n return 'legend-repl';\n }\n}\n//# sourceMappingURL=LegendREPLApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPluginManager, } from '@finos/legend-shared';\nexport class LegendApplicationPluginManager extends AbstractPluginManager {\n loggerPlugins = [];\n telemetryServicePlugins = [];\n tracerServicePlugins = [];\n eventNotifierPlugins = [];\n applicationPlugins = [];\n registerLoggerPlugin(plugin) {\n this.loggerPlugins.push(plugin);\n }\n registerTelemetryServicePlugin(plugin) {\n this.telemetryServicePlugins.push(plugin);\n }\n registerTracerServicePlugin(plugin) {\n this.tracerServicePlugins.push(plugin);\n }\n registerEventNotifierPlugin(plugin) {\n this.eventNotifierPlugins.push(plugin);\n }\n registerApplicationPlugin(plugin) {\n this.applicationPlugins.push(plugin);\n }\n getLoggerPlugins() {\n return [...this.loggerPlugins];\n }\n getTelemetryServicePlugins() {\n return [...this.telemetryServicePlugins];\n }\n getTracerServicePlugins() {\n return [...this.tracerServicePlugins];\n }\n getEventNotifierPlugins() {\n return [...this.eventNotifierPlugins];\n }\n getApplicationPlugins() {\n return [...this.applicationPlugins];\n }\n}\n//# sourceMappingURL=LegendApplicationPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LegendApplicationPluginManager } from '@finos/legend-application';\nexport class LegendREPLPluginManager extends LegendApplicationPluginManager {\n pureProtocolProcessorPlugins = [];\n pureGraphManagerPlugins = [];\n pureGraphPlugins = [];\n constructor() {\n super();\n }\n static create() {\n return new LegendREPLPluginManager();\n }\n registerPureProtocolProcessorPlugin(plugin) {\n this.pureProtocolProcessorPlugins.push(plugin);\n }\n registerPureGraphManagerPlugin(plugin) {\n this.pureGraphManagerPlugins.push(plugin);\n }\n registerPureGraphPlugin(plugin) {\n this.pureGraphPlugins.push(plugin);\n }\n getPureGraphManagerPlugins() {\n return [...this.pureGraphManagerPlugins];\n }\n getPureProtocolProcessorPlugins() {\n return [...this.pureProtocolProcessorPlugins];\n }\n getPureGraphPlugins() {\n return [...this.pureGraphPlugins];\n }\n}\n//# sourceMappingURL=LegendREPLPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_PARAM_TOKEN;\n(function (LEGEND_APPLICATION_PARAM_TOKEN) {\n LEGEND_APPLICATION_PARAM_TOKEN[\"INITIAL_COLOR_THEME\"] = \"initialColorTheme\";\n})(LEGEND_APPLICATION_PARAM_TOKEN || (LEGEND_APPLICATION_PARAM_TOKEN = {}));\n//# sourceMappingURL=LegendApplicationNavigation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { addQueryParametersToUrl, getQueryParameterValue, getQueryParameters, guaranteeNonNullable, sanitizeURL, stringifyQueryParams, } from '@finos/legend-shared';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { NAVIGATION_ZONE_PREFIX, } from './NavigationService.js';\nimport { Route, Switch, Redirect, matchPath, generatePath, useParams, useLocation, } from 'react-router';\nexport { BrowserRouter } from 'react-router-dom';\nexport { Route, Switch, Redirect, useParams, matchPath, generatePath };\nexport const useNavigationZone = () => {\n const location = useLocation(); // TODO: this is a temporary hack until we upgrade react-router\n return location.hash.substring(NAVIGATION_ZONE_PREFIX.length);\n};\n/**\n * Prefix URL patterns coming from extensions with `/extensions/`\n * to avoid potential conflicts with main routes.\n */\nexport const generateExtensionUrlPattern = (pattern) => `/extensions/${pattern}`.replace(/^\\/extensions\\/\\//, '/extensions/');\nexport class BrowserNavigator {\n historyAPI;\n _isNavigationBlocked = false;\n _forceBypassNavigationBlocking = false;\n _blockCheckers = [];\n _beforeUnloadListener = (event) => {\n if (this._forceBypassNavigationBlocking) {\n return;\n }\n if (this._blockCheckers.some((checker) => checker())) {\n // NOTE: there is no way to customize the alert message for now since Chrome removed support for it due to security concerns\n // See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Browser_compatibility\n event.returnValue = '';\n }\n };\n onBlock;\n onNativePlatformNavigationBlock;\n constructor(historyApiClient) {\n makeObservable(this, {\n _isNavigationBlocked: observable,\n isNavigationBlocked: computed,\n blockNavigation: action,\n unblockNavigation: action,\n });\n this.historyAPI = historyApiClient;\n }\n get window() {\n return guaranteeNonNullable(window, `Window object is not available in non-web environment`);\n }\n goToLocation(location, options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.href = this.generateAddress(location);\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n reload(options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.reload();\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n goToAddress(address, options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.href = address;\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n visitAddress(address) {\n this.window.open(address, '_blank');\n }\n generateAddress(location) {\n return (this.window.location.origin +\n this.historyAPI.createHref({ pathname: location }));\n }\n updateCurrentLocation(location) {\n this.historyAPI.push(location);\n }\n updateCurrentZone(zone) {\n this.window.location.hash = NAVIGATION_ZONE_PREFIX + zone;\n }\n resetZone() {\n this.updateCurrentLocation(this.getCurrentLocation());\n }\n getCurrentBaseAddress(options) {\n if (options?.withAppRoot) {\n return this.generateAddress('');\n }\n return this.window.location.origin;\n }\n getCurrentAddress() {\n return this.window.location.href;\n }\n getCurrentLocation() {\n return this.historyAPI.location.pathname;\n }\n getCurrentLocationParameters() {\n const result = {};\n const parameters = getQueryParameters(sanitizeURL(this.getCurrentAddress()), true);\n Object.keys(parameters).forEach((key) => {\n result[key] = getQueryParameterValue(key, parameters);\n });\n return result;\n }\n getCurrentLocationParameterValue(key) {\n return this.getCurrentLocationParameters()[key];\n }\n getCurrentZone() {\n return this.window.location.hash.substring(NAVIGATION_ZONE_PREFIX.length);\n }\n blockNavigation(blockCheckers, onBlock, onNativePlatformNavigationBlock) {\n this._isNavigationBlocked = true;\n this.onBlock = onBlock;\n this.onNativePlatformNavigationBlock = onNativePlatformNavigationBlock;\n // Here we attempt to cancel the effect of the back button\n // See https://medium.com/codex/angular-guards-disabling-browsers-back-button-for-specific-url-fdf05d9fe155#4f13\n // This makes the current location the last entry in the browser history and clears any forward history\n this.window.history.pushState(null, '', this.getCurrentAddress());\n // The popstate event is triggered every time the user clicks back/forward button, but the forward history\n // has been cleared, and now if we go back, we call `history.forward()`, which go 1 page forward,\n // but there's no page forward, so effectively, the user remains on the same page\n this.window.onpopstate = () => {\n window.history.forward();\n this.onNativePlatformNavigationBlock?.();\n };\n // Block browser navigation: e.g. reload, setting `window.href` directly, etc.\n this._blockCheckers = blockCheckers;\n this.window.removeEventListener('beforeunload', this._beforeUnloadListener);\n this.window.addEventListener('beforeunload', this._beforeUnloadListener);\n }\n unblockNavigation() {\n this._isNavigationBlocked = false;\n this.onBlock = undefined;\n this.window.onpopstate = null;\n this._blockCheckers = [];\n this.window.removeEventListener('beforeunload', this._beforeUnloadListener);\n }\n get isNavigationBlocked() {\n return this._isNavigationBlocked;\n }\n INTERNAL__internalizeTransientParameter(key) {\n const currentZone = this.getCurrentZone();\n const parameters = this.getCurrentLocationParameters();\n delete parameters[key];\n this.updateCurrentLocation(addQueryParametersToUrl(this.getCurrentLocation(), stringifyQueryParams(parameters)));\n this.updateCurrentZone(currentZone);\n }\n}\n//# sourceMappingURL=BrowserNavigator.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class ApplicationPlatform {\n applicationStore;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n async initialize() {\n // do nothing\n }\n}\n//# sourceMappingURL=ApplicationPlatform.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BrowserNavigator } from '../navigation/BrowserNavigator.js';\nimport { ApplicationPlatform } from './ApplicationPlatform.js';\nimport { LEGEND_APPLICATION_PARAM_TOKEN } from '../../__lib__/LegendApplicationNavigation.js';\nexport class BrowserPlatform extends ApplicationPlatform {\n navigator;\n constructor(applicationStore, config) {\n super(applicationStore);\n this.navigator = new BrowserNavigator(config.historyAPI);\n }\n getNavigator() {\n return this.navigator;\n }\n async initialize() {\n // set initial color theme\n // NOTE: we allow this to avoid the flash of default color theme\n // when loading the page from another page/ when using the application in an iframe\n const initialColorTheme = this.applicationStore.navigationService.navigator.getCurrentLocationParameterValue(LEGEND_APPLICATION_PARAM_TOKEN.INITIAL_COLOR_THEME);\n if (initialColorTheme) {\n this.applicationStore.layoutService.setColorTheme(initialColorTheme);\n this.applicationStore.navigationService.navigator.INTERNAL__internalizeTransientParameter(LEGEND_APPLICATION_PARAM_TOKEN.INITIAL_COLOR_THEME);\n }\n }\n}\n//# sourceMappingURL=BrowserPlatform.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { createContext, useContext } from 'react';\nexport const ApplicationPlatformContext = createContext(undefined);\nexport const useApplicationPlatform = () => guaranteeNonNullable(useContext(ApplicationPlatformContext), `Can't find application platform in context`);\n//# sourceMappingURL=ApplicationPlatformProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from 'history';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { useHistory } from 'react-router';\nimport { BrowserRouter } from 'react-router-dom';\nimport { BrowserPlatform } from '../stores/platform/BrowserPlatform.js';\nimport { ApplicationPlatformContext } from './ApplicationPlatformProvider.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nconst BrowserPlatformProvider = ({ children }) => {\n const applicationStore = useApplicationStore();\n const historyAPI = useHistory(); // TODO: this is a temporary hack until we upgrade react-router\n const platform = useLocalObservable(() => new BrowserPlatform(applicationStore, { historyAPI }));\n return (_jsx(ApplicationPlatformContext.Provider, { value: platform, children: children }));\n};\nexport const BrowserEnvironmentProvider = ({ children, baseUrl }) => (_jsx(BrowserRouter, { basename: baseUrl, children: _jsx(BrowserPlatformProvider, { children: children }) }));\n//# sourceMappingURL=BrowserEnvironmentProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, } from '@finos/legend-shared';\nexport class REPLServerClient {\n networkClient;\n constructor(networkClient) {\n this.networkClient = networkClient;\n }\n get baseUrl() {\n return guaranteeNonNullable(this.networkClient.baseUrl, `REPL server client has not been configured properly`);\n }\n get dataCube() {\n return `${this.baseUrl}/api/dataCube`;\n }\n async getGridClientLicenseKey() {\n return this.networkClient.get(`${this.dataCube}/gridLicenseKey`);\n }\n async getQueryTypeahead(input) {\n return this.networkClient.post(`${this.dataCube}/typeahead`, input);\n }\n // TODO: @akphi - we might need to support batch, source information offset, etc.\n async parseQuery(input) {\n return this.networkClient.post(`${this.dataCube}/parseQuery`, input);\n }\n async getQueryCode(input) {\n return this.networkClient.post(`${this.dataCube}/getQueryCode`, input);\n }\n async getBaseQuery() {\n return this.networkClient.get(`${this.dataCube}/getBaseQuery`);\n }\n async getRelationReturnType(input) {\n return this.networkClient.post(`${this.dataCube}/getRelationReturnType`, input);\n }\n async executeQuery(input) {\n return this.networkClient.post(`${this.dataCube}/executeQuery`, input);\n }\n}\n//# sourceMappingURL=REPLServerClient.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uuid } from '@finos/legend-shared';\nexport var DataCubeQuerySnapshotColumnOrigin;\n(function (DataCubeQuerySnapshotColumnOrigin) {\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"SOURCE\"] = 0] = \"SOURCE\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"LEAF_EXTENDED\"] = 1] = \"LEAF_EXTENDED\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"RENAME\"] = 2] = \"RENAME\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"GROUP_BY\"] = 3] = \"GROUP_BY\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"SELECT\"] = 4] = \"SELECT\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"PIVOT\"] = 5] = \"PIVOT\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"GROUP_EXTENDED\"] = 6] = \"GROUP_EXTENDED\";\n})(DataCubeQuerySnapshotColumnOrigin || (DataCubeQuerySnapshotColumnOrigin = {}));\n// ------------------------------------- UTILITIES -------------------------------------\nexport function createSnapshot(name, runtime, sourceQuery, configuration) {\n return {\n uuid: uuid(),\n name,\n runtime,\n sourceQuery,\n configuration,\n originalColumns: [],\n leafExtendedColumns: [],\n filter: undefined,\n renamedColumns: [],\n groupByColumns: [],\n groupByExpandedKeys: [],\n groupByAggColumns: [],\n selectedColumns: [],\n pivotColumns: [],\n pivotAggColumns: [],\n castColumns: [],\n groupExtendedColumns: [],\n groupByFilter: undefined,\n sortColumns: [],\n limit: undefined,\n columns: [],\n };\n}\nexport function cloneSnapshot(snapshot) {\n const clone = JSON.parse(JSON.stringify(snapshot));\n clone.uuid = uuid();\n return clone;\n}\n//# sourceMappingURL=DataCubeQuerySnapshot.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hashArray, hashObject, hashValue } from '@finos/legend-shared';\nimport { SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX } from './MetaModelConst.js';\n/**\n * The main point of maintaining this enum is to keep lessen magic string in hash computation\n * so that we are less error-prone in the process of defining hash.\n *\n * These tokens will be used in the definition of the hash as marker for the type of the strucure\n * arguably some of these can be redundant since this information is encoded in the resulting hash\n * code anyway, but sometimes when polymorphism manifests, such as when we have an array of structure\n * which are subclasses of an abstract stucture, hashing the marker is sometimes the only way to\n * discern between instances of different sub-structures\n *\n * TODO: when we refactor hashing, we could potentially move this to graphManager/changeDetection/\n */\nexport var CORE_HASH_STRUCTURE;\n(function (CORE_HASH_STRUCTURE) {\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_ELEMENT\"] = \"INTERNAL__UNKNOWN_ELEMENT\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT\"] = \"INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR\"] = \"INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR\";\n CORE_HASH_STRUCTURE[\"PACKAGE\"] = \"PACKAGE\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_ELEMENT\"] = \"PACKAGEABLE_ELEMENT\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_ELEMENT_POINTER\"] = \"PACKAGEABLE_ELEMENT_POINTER\";\n // domain\n CORE_HASH_STRUCTURE[\"PROFILE\"] = \"PROFILE\";\n CORE_HASH_STRUCTURE[\"TAG_POINTER\"] = \"TAG_POINTER\";\n CORE_HASH_STRUCTURE[\"STEREOTYPE_POINTER\"] = \"STEREOTYPE_POINTER\";\n CORE_HASH_STRUCTURE[\"TAGGED_VALUE\"] = \"TAGGED_VALUE\";\n CORE_HASH_STRUCTURE[\"ENUMERATION\"] = \"ENUMERATION\";\n CORE_HASH_STRUCTURE[\"ENUM_VALUE\"] = \"ENUM_VALUE\";\n CORE_HASH_STRUCTURE[\"CLASS\"] = \"CLASS\";\n CORE_HASH_STRUCTURE[\"PROPERTY\"] = \"PROPERTY\";\n CORE_HASH_STRUCTURE[\"PROPERTY_DEFAULT_VALUE\"] = \"PROPERTY_DEFAULT_VALUE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_POINTER\"] = \"PROPERTY_POINTER\";\n CORE_HASH_STRUCTURE[\"MULTIPLICITY\"] = \"MULTIPLICITY\";\n CORE_HASH_STRUCTURE[\"CONSTRAINT\"] = \"CONSTRAINT\";\n CORE_HASH_STRUCTURE[\"DERIVED_PROPERTY\"] = \"DERIVED_PROPERTY\";\n CORE_HASH_STRUCTURE[\"ASSOCIATION\"] = \"ASSOCIATION\";\n CORE_HASH_STRUCTURE[\"FUNCTION\"] = \"FUNCTION\";\n CORE_HASH_STRUCTURE[\"MEASURE\"] = \"MEASURE\";\n CORE_HASH_STRUCTURE[\"UNIT\"] = \"UNIT\";\n // function test\n CORE_HASH_STRUCTURE[\"FUNCTION_TEST_SUITE\"] = \"FUNCTION_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"FUNCTION_TEST\"] = \"FUNCTION_TEST\";\n CORE_HASH_STRUCTURE[\"FUNCTION_STORE_TEST_DATA\"] = \"FUNCTION_STORE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"FUNCTION_PARAMETER_VALUE\"] = \"FUNCTION_PARAMETER_VALUE\";\n // testable\n CORE_HASH_STRUCTURE[\"ASSERT_FAIL\"] = \"ASSERT_FAIL\";\n CORE_HASH_STRUCTURE[\"ASSERT_PASS\"] = \"ASSERT_PASS\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_JSON_ASSERT_FAIL\"] = \"EQUAL_TO_JSON_ASSERT_FAIL\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO\"] = \"EQUAL_TO\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_JSON\"] = \"EQUAL_TO_JSON\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_TDS\"] = \"EQUAL_TO_TDS\";\n // section index\n CORE_HASH_STRUCTURE[\"SECTION_INDEX\"] = \"SECTION_INDEX\";\n CORE_HASH_STRUCTURE[\"SECTION\"] = \"SECTION\";\n CORE_HASH_STRUCTURE[\"IMPORT_AWARE_CODE_SECTION\"] = \"IMPORT_AWARE_CODE_SECTION\";\n CORE_HASH_STRUCTURE[\"DEFAULT_CODE_SECTION\"] = \"DEFAULT_CODE_SECTION\";\n // raw value specification\n CORE_HASH_STRUCTURE[\"RAW_LAMBDA\"] = \"RAW_LAMBDA\";\n CORE_HASH_STRUCTURE[\"RAW_VARIABLE\"] = \"RAW_VARIABLE\";\n CORE_HASH_STRUCTURE[\"RAW_INSTANCE_VALUE\"] = \"RAW_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"BINDING_TRANSFORMER\"] = \"BINDING_TRANSFORMER\";\n // value specification\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_VALUE_SPECIFICATION\"] = \"INTERNAL__UNKNOWN_VALUE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__PROPAGATED_VALUE\"] = \"INTERNAL__PROPAGATED_VALUE\";\n CORE_HASH_STRUCTURE[\"VARIABLE_EXPRESSION\"] = \"VARIABLE_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"EXPRESSION\"] = \"EXPRESSION\";\n CORE_HASH_STRUCTURE[\"FUNCTION_EXPRESSION\"] = \"FUNCTION_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"SIMPLE_FUNCTION_EXPRESSION\"] = \"SIMPLE_FUNCTION_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"ABSTRACT_PROPERTY_EXPRESSION\"] = \"ABSTRACT_PROPERTY_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"INSTANCE_VALUE\"] = \"INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PRIMITIVE_INSTANCE_VALUE\"] = \"PRIMITIVE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ENUM_INSTANCE_VALUE\"] = \"ENUM_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"KEY_EXPRESSION_INSTANCE_VALUE\"] = \"KEY_EXPRESSION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"KEY_EXPRESSION_VALUE\"] = \"KEY_EXPRESSION_VALUE\";\n CORE_HASH_STRUCTURE[\"RUNTIME_INSTANCE_VALUE\"] = \"RUNTIME_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PAIR_INSTANCE_VALUE\"] = \"PAIR_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"MAPPING_INSTANCE_VALUE\"] = \"MAPPING_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PURE_LIST_INSTANCE_VALUE\"] = \"PURE_LIST_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"COLLECTION_INSTANCE_VALUE\"] = \"COLLECTION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"LAMBDA_FUNCTION_INSTANCE_VALUE\"] = \"LAMBDA_FUNCTION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"FUNCTION_TYPE\"] = \"FUNCTION_TYPE\";\n CORE_HASH_STRUCTURE[\"LAMBDA_FUNCTION\"] = \"LAMBDA_FUNCTION\";\n CORE_HASH_STRUCTURE[\"ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE\"] = \"ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ALLOY_SERIALIZATION_CONFIG\"] = \"ALLOY_SERIALIZATION_CONFIG\";\n CORE_HASH_STRUCTURE[\"ROOT_GRAPH_FETCH_TREE\"] = \"ROOT_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_GRAPH_FETCH_TREE\"] = \"PROPERTY_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"SUBTYPE_GRAPH_FETCH_TREE\"] = \"SUBTYPE_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"PROEPRTY_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"RELATION_COL_SPEC_ARRAY\"] = \"RELATION_COL_SPEC_ARRAY\";\n CORE_HASH_STRUCTURE[\"RELATION_COL_SPEC\"] = \"RELATION_COL_SPEC\";\n // ---------------------------------- DSL Mapping --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_STORE\"] = \"INTERNAL__UNKNOWN_STORE\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_CONNECTION\"] = \"INTERNAL__UNKNOWN_CONNECTION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_PROPERTY_MAPPING\"] = \"INTERNAL__UNKNOWN_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_CLASS_MAPPING\"] = \"INTERNAL__UNKNOWN_CLASS_MAPPING\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_MAPPING_INCLUDE\"] = \"INTERNAL__UNKNOWN_MAPPING_INCLUDE\";\n CORE_HASH_STRUCTURE[\"MAPPING\"] = \"MAPPING\";\n CORE_HASH_STRUCTURE[\"MAPPING_INCLUDE_MAPPING\"] = \"MAPPING_INCLUDE_MAPPING\";\n CORE_HASH_STRUCTURE[\"ASSOCIATION_IMPLEMENTATION\"] = \"ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_ASSOCIATION_IMPLEMENTATION\"] = \"RELATIONAL_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"XSTORE_ASSOCIATION_IMPLEMENTATION\"] = \"XSTORE_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"ENUMERATION_MAPPING\"] = \"ENUMERATION_MAPPING\";\n CORE_HASH_STRUCTURE[\"ENUM_VALUE_MAPPING\"] = \"ENUM_VALUE_MAPPING\";\n CORE_HASH_STRUCTURE[\"SET_IMPLEMENTATION\"] = \"SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"OPERATION_SET_IMPLEMENTATION\"] = \"OPERATION_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"PURE_INSTANCE_SET_IMPLEMENTATION\"] = \"PURE_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"PROPERTY_MAPPING\"] = \"PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"LOCAL_MAPPING_PROPERTY\"] = \"LOCAL_MAPPING_PROPERTY\";\n CORE_HASH_STRUCTURE[\"PURE_PROPERTY_MAPPING\"] = \"PURE_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"XSTORE_PROPERTY_MAPPING\"] = \"XSTORE_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_LEGACY\"] = \"MAPPING_TEST_LEGACY\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_SUITE\"] = \"MAPPING_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST\"] = \"MAPPING_TEST\";\n CORE_HASH_STRUCTURE[\"STORE_TEST_DATA\"] = \"STORE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"INPUT_DATA\"] = \"INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INPUT_DATA\"] = \"FLAT_DATA_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_INPUT_DATA\"] = \"RELATIONAL_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"OBJECT_INPUT_DATA\"] = \"OBJECT_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_ASSERT\"] = \"MAPPING_TEST_ASSERT\";\n CORE_HASH_STRUCTURE[\"EXPECTED_OUTPUT_MAPPING_TEST_ASSERT\"] = \"EXPECTED_OUTPUT_MAPPING_TEST_ASSERT\";\n CORE_HASH_STRUCTURE[\"FILTER_MAPPING\"] = \"FILTER_MAPPING\";\n CORE_HASH_STRUCTURE[\"COLUMN_MAPPING\"] = \"COLUMN_MAPPING\";\n CORE_HASH_STRUCTURE[\"GROUP_BY_MAPPING\"] = \"GROUP_BY_MAPPING\";\n // runtime\n CORE_HASH_STRUCTURE[\"RUNTIME\"] = \"RUNTIME\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_RUNTIME\"] = \"PACKAGEABLE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"ENGINE_RUNTIME\"] = \"ENGINE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"SINGLE_ENGINE_RUNTIME\"] = \"SINGLE_ENGINE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"LEGACY_RUNTIME\"] = \"LEGACY_RUNTIME\";\n CORE_HASH_STRUCTURE[\"RUNTIME_POINTER\"] = \"RUNTIME_POINTER\";\n CORE_HASH_STRUCTURE[\"STORE_CONNECTIONS\"] = \"STORE_CONNECTIONS\";\n CORE_HASH_STRUCTURE[\"IDENTIFIED_CONNECTION\"] = \"IDENTIFIED_CONNECTION\";\n // connection\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_CONNECTION\"] = \"PACKAGEABLE_CONNECTION\";\n CORE_HASH_STRUCTURE[\"CONNECTION_POINTER\"] = \"CONNECTION_POINTER\";\n CORE_HASH_STRUCTURE[\"XML_MODEL_CONNECTION\"] = \"XML_MODEL_CONNECTION\";\n CORE_HASH_STRUCTURE[\"JSON_MODEL_CONNECTION\"] = \"JSON_MODEL_CONNECTION\";\n CORE_HASH_STRUCTURE[\"MODEL_CHAIN_CONNECTION\"] = \"MODEL_CHAIN_CONNECTION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_CONNECTION\"] = \"FLAT_DATA_CONNECTION\";\n // aggregation aware mapping\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_MAPPING\"] = \"AGGREGATION_AWARE_MAPPING\";\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_SPECIFICATION\"] = \"AGGREGATION_AWARE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER\"] = \"AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER\";\n CORE_HASH_STRUCTURE[\"AGGREGATE_FUNCTION\"] = \"AGGREGATE_FUNCTION\";\n CORE_HASH_STRUCTURE[\"GROUP_BY_FUNCTION\"] = \"GROUP_BY_FUNCTION\";\n // ---------------------------------- DSL Generation --------------------------------------\n CORE_HASH_STRUCTURE[\"GENERATION_TREE\"] = \"GENERATION_TREE\";\n CORE_HASH_STRUCTURE[\"GENERATION_TREE_NODE\"] = \"GENERATION_TREE_NODE\";\n CORE_HASH_STRUCTURE[\"FILE_GENERATION\"] = \"FILE_GENERATION\";\n CORE_HASH_STRUCTURE[\"CONFIGURATION_PROPERTY\"] = \"CONFIGURATION_PROPERTY\";\n // ---------------------------------- DSL Data --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_EMBEDDED_DATA\"] = \"INTERNAL__UNKNOWN_EMBEDDED_DATA\";\n CORE_HASH_STRUCTURE[\"EXTERNAL_FORMAT_DATA\"] = \"EXTERNAL_FORMAT_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_STORE_DATA\"] = \"MODEL_STORE_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_DATA\"] = \"MODEL_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_EMBEDDED_DATA\"] = \"MODEL_EMBEDDED_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_INSTANCE_DATA\"] = \"MODEL_INSTANCE_DATA\";\n CORE_HASH_STRUCTURE[\"DATA_ELEMENT_REFERENCE\"] = \"DATA_ELEMENT_REFERENCE\";\n CORE_HASH_STRUCTURE[\"DATA_ELEMENT\"] = \"DATA_ELEMENT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_CSV_DATA\"] = \"RELATIONAL_CSV_DATA\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_TDS\"] = \"RELATIONAL_TDS\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_CSV_DATA_TABLE\"] = \"RELATIONAL_CSV_DATA_TABLE\";\n // ---------------------------------- DSL External Format --------------------------------------\n CORE_HASH_STRUCTURE[\"BINDING\"] = \"BINDING\";\n CORE_HASH_STRUCTURE[\"SCHEMA_SET\"] = \"SCHEMA_SET\";\n CORE_HASH_STRUCTURE[\"SCHEMA\"] = \"SCHEMA\";\n CORE_HASH_STRUCTURE[\"MODEL_UNIT\"] = \"MODEL_UNIT\";\n CORE_HASH_STRUCTURE[\"URL_STREAM\"] = \"URL_STREAM\";\n CORE_HASH_STRUCTURE[\"EXTERNAL_FORMAT_CONNECTION\"] = \"EXTERNAL_FORMAT_CONNECTION\";\n // ---------------------------------- DSL Service --------------------------------------\n CORE_HASH_STRUCTURE[\"SERVICE\"] = \"SERVICE\";\n CORE_HASH_STRUCTURE[\"SERVICE_OWNER\"] = \"SERVICE_OWNER\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_EXECUTION\"] = \"SERVICE_PURE_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_SINGLE_EXECUTION\"] = \"SERVICE_PURE_SINGLE_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_KEYED_EXECUTION_PARAMETER\"] = \"SERVICE_KEYED_EXECUTION_PARAMETER\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_MULTI_EXECUTION\"] = \"SERVICE_PURE_MULTI_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_CONTAINER\"] = \"SERVICE_TEST_CONTAINER\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_SINGLE_EXECUTION_TEST\"] = \"SERVICE_LEGACY_SINGLE_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST\"] = \"SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_MULTI_EXECUTION_TEST\"] = \"SERVICE_LEGACY_MULTI_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_CONNECTION_TEST_DATA\"] = \"SERVICE_CONNECTION_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_DATA\"] = \"SERVICE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_SUITE\"] = \"SERVICE_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST\"] = \"SERVICE_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_PARAMETER_VALUE\"] = \"SERVICE_PARAMETER_VALUE\";\n CORE_HASH_STRUCTURE[\"SERVICE_POST_VALIDATION\"] = \"SERVICE_POST_VALIDATION\";\n CORE_HASH_STRUCTURE[\"SERVICE_POST_VALIDATION_ASSERTION\"] = \"SERVICE_POST_VALIDATION_ASSERTION\";\n // execution environment instance\n CORE_HASH_STRUCTURE[\"EXECUTION_ENVIRONMENT_INSTANCE\"] = \"EXECUTION_ENVIRONMENT_INSTANCE\";\n CORE_HASH_STRUCTURE[\"SINGLE_EXECUTION_PARAMETER\"] = \"SINGLE_EXECUTION_PARAMETER\";\n CORE_HASH_STRUCTURE[\"MULTI_EXECUTION_PARAMETER\"] = \"MULTI_EXECUTION_PARAMETER\";\n // ---------------------------------- STO Relational --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION\"] = \"INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY\"] = \"INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_POST_PROCESSOR\"] = \"INTERNAL__UNKNOWN_POST_PROCESSOR\";\n // database\n CORE_HASH_STRUCTURE[\"DATABASE\"] = \"DATABASE\";\n CORE_HASH_STRUCTURE[\"DATABASE_SCHEMA\"] = \"DATABASE_SCHEMA\";\n CORE_HASH_STRUCTURE[\"DATABASE_JOIN\"] = \"DATABASE_JOIN\";\n CORE_HASH_STRUCTURE[\"DATABASE_FILTER\"] = \"DATABASE_FILTER\";\n CORE_HASH_STRUCTURE[\"DATBASE_VIEW\"] = \"DATBASE_VIEW\";\n CORE_HASH_STRUCTURE[\"DATABASE_SCHEMA_TABLE\"] = \"DATABASE_SCHEMA_TABLE\";\n CORE_HASH_STRUCTURE[\"DATABASE_TABLE_COLUMN\"] = \"DATABASE_TABLE_COLUMN\";\n // relational operation element\n CORE_HASH_STRUCTURE[\"RELATIONAL\"] = \"RELATIONAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_DYNA_FUNC\"] = \"RELATIONAL_OPERATION_DYNA_FUNC\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS\"] = \"RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_LITERAL\"] = \"RELATIONAL_OPERATION_LITERAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_LITERAL_LIST\"] = \"RELATIONAL_OPERATION_LITERAL_LIST\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN\"] = \"RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_TABLE_POINTER\"] = \"RELATIONAL_OPERATION_TABLE_POINTER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_JOIN_POINTER\"] = \"RELATIONAL_OPERATION_JOIN_POINTER\";\n // relational data type\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_VARCHAR\"] = \"RELATIONAL_DATATYPE_VARCHAR\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_CHAR\"] = \"RELATIONAL_DATATYPE_CHAR\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_VARBINARY\"] = \"RELATIONAL_DATATYPE_VARBINARY\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BINARY\"] = \"RELATIONAL_DATATYPE_BINARY\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BIT\"] = \"RELATIONAL_DATATYPE_BIT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_INTEGER\"] = \"RELATIONAL_DATATYPE_INTEGER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BIGINT\"] = \"RELATIONAL_DATATYPE_BIGINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_SMALLINT\"] = \"RELATIONAL_DATATYPE_SMALLINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_TINYINT\"] = \"RELATIONAL_DATATYPE_TINYINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_NUMERIC\"] = \"RELATIONAL_DATATYPE_NUMERIC\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DECIMAL\"] = \"RELATIONAL_DATATYPE_DECIMAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DOUBLE\"] = \"RELATIONAL_DATATYPE_DOUBLE\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_FLOAT\"] = \"RELATIONAL_DATATYPE_FLOAT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_REAL\"] = \"RELATIONAL_DATATYPE_REAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DATE\"] = \"RELATIONAL_DATATYPE_DATE\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_TIMESTAMP\"] = \"RELATIONAL_DATATYPE_TIMESTAMP\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_OTHER\"] = \"RELATIONAL_DATATYPE_OTHER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_SEMISTRUCTURED\"] = \"RELATIONAL_DATATYPE_SEMISTRUCTURED\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_JSON\"] = \"RELATIONAL_DATATYPE_JSON\";\n // relational mapping\n CORE_HASH_STRUCTURE[\"ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION\"] = \"ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_INSTANCE_SET_IMPLEMENTATION\"] = \"RELATIONAL_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"REALTIONAL_PROPERTY_MAPPING\"] = \"REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n // milestoning\n CORE_HASH_STRUCTURE[\"BUSINESS_MILESTONING\"] = \"BUSINESS_MILESTONING\";\n CORE_HASH_STRUCTURE[\"BUSINESS_SNAPSHOT_MILESTONING\"] = \"BUSINESS_SNAPSHOT_MILESTONING\";\n CORE_HASH_STRUCTURE[\"PROCESSING_MILESTONING\"] = \"PROCESSING_MILESTONING\";\n // relational database connection\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATABASE_CONNECTION\"] = \"RELATIONAL_DATABASE_CONNECTION\";\n // relational database connection datasource specification\n CORE_HASH_STRUCTURE[\"STATIC_DATASOURCE_SPECIFICATION\"] = \"STATIC_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"LOCAL_H2_DATASOURCE_SPECIFICATION\"] = \"LOCAL_H2_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_H2_DATASOURCE_SPECIFICATION\"] = \"EMBEDDED_H2_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_DATASOURCE_SPECIFICATION\"] = \"SNOWFLAKE_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"REDSHIFT_DATASOURCE_SPECIFICATION\"] = \"REDSHIFT_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"BIGQUERY_DATASOURCE_SPECIFICATION\"] = \"BIGQUERY_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"DATABRICKS_DATASOURCE_SPECIFICATION\"] = \"DATABRICKS_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"SPANNER_DATASOURCE_SPECIFICATION\"] = \"SPANNER_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"TRINO_DATASOURCE_SPECIFICATION\"] = \"TRINO_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"TRINO_SSL_SPECIFICATION\"] = \"TRINO_SSL_SPECIFICATION\";\n // relational database connection authentication strategy\n CORE_HASH_STRUCTURE[\"DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY\"] = \"DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"DEFAULT_H2_AUTHENTICATION_STRATEGY\"] = \"DEFAULT_H2_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY\"] = \"SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"API_TOKEN_AUTHENTICATION_STRATEGY\"] = \"API_TOKEN_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY\"] = \"GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\"] = \"USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"OAUTH_AUTHENTICATION_STRATEGY\"] = \"OAUTH_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY\"] = \"GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\"] = \"MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"TRINO_DELEGATED_KERBEROS_AUTHENTICATION_STRATEGY\"] = \"TRINO_KEREBEROS_AUTHENTICATION_STRATEGY\";\n // relational database connection post-processors\n CORE_HASH_STRUCTURE[\"MAPPER_POST_PROCESSOR\"] = \"MAPPER_POST_PROCESSOR\";\n CORE_HASH_STRUCTURE[\"SCHEMA_MAPPER\"] = \"SCHEMA_MAPPER\";\n CORE_HASH_STRUCTURE[\"TABLE_MAPPER\"] = \"TABLE_MAPPER\";\n // ---------------------------------- STO Flat-Data --------------------------------------\n CORE_HASH_STRUCTURE[\"FLAT_DATA\"] = \"FLAT_DATA\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_SECTION\"] = \"FLAT_DATA_SECTION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_PROPERTY\"] = \"FLAT_DATA_PROPERTY\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ROOT_RECORD_TYPE\"] = \"FLAT_DATA_ROOT_RECORD_TYPE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_RECORD_TYPE\"] = \"FLAT_DATA_RECORD_TYPE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_RECORD_FIELD\"] = \"FLAT_DATA_RECORD_FIELD\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_STRING\"] = \"FLAT_DATA_STRING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_BOOLEAN\"] = \"FLAT_DATA_BOOLEAN\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_NUMBER\"] = \"FLAT_DATA_NUMBER\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INTEGER\"] = \"FLAT_DATA_INTEGER\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_FLOAT\"] = \"FLAT_DATA_FLOAT\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DECIMAL\"] = \"FLAT_DATA_DECIMAL\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DATE\"] = \"FLAT_DATA_DATE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DATE_TIME\"] = \"FLAT_DATA_DATE_TIME\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_STRICT_DATE\"] = \"FLAT_DATA_STRICT_DATE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INSTANCE_SET_IMPLEMENTATION\"] = \"FLAT_DATA_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_PROPERTY_MAPPING\"] = \"FLAT_DATA_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ASSOCIATION_IMPLEMENTATION\"] = \"FLAT_DATA_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING\"] = \"FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_FLAT_DATA_PROPERTY_MAPPING\"] = \"EMBEDDED_FLAT_DATA_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_SECTION_POINTER\"] = \"FLAT_DATA_SECTION_POINTER\";\n // -------------------------------------- Function Activator --------------------------------------\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_APP\"] = \"SNOWFLAKE_APP\";\n CORE_HASH_STRUCTURE[\"HOSTED_SERVICE\"] = \"HOSTED_SERVICE\";\n CORE_HASH_STRUCTURE[\"HOSTED_SERVICE_OWNER\"] = \"HOSTED_SERVICE_OWNER\";\n})(CORE_HASH_STRUCTURE || (CORE_HASH_STRUCTURE = {}));\nexport const hashObjectWithoutSourceInformation = (val) => hashObject(val, {\n /**\n * NOTE: this is over-simplification as there could be source information fields with other names\n * see note in {@link pruneSourceInformation}\n */\n excludeKeys: (propKey) => propKey\n .toLowerCase()\n .endsWith(SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX.toLowerCase()),\n});\nexport const hashRawLambda = (parameters, body) => hashArray([\n parameters ? hashObjectWithoutSourceInformation(parameters) : '',\n body ? hashObjectWithoutSourceInformation(body) : '',\n]);\nexport const hashElementPointer = (pointerType, path) => [CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT_POINTER, pointerType ?? '', path]\n .map(hashValue)\n .join(',');\n//# sourceMappingURL=Core_HashUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport hash from 'hash.js';\nimport { default as objectHash, } from 'object-hash';\nimport { assertTrue, isObject, isBoolean, isNumber, isString, isNonNullable, } from '../error/AssertionUtils.js';\nexport const hashValue = (val) => hash.sha1().update(val).digest('hex');\nexport const hashUnknownValue = (val) => {\n assertTrue(isString(val) || isBoolean(val) || isNumber(val), `Can't hash non-primitive value`);\n return hashValue(val);\n};\nexport const hashArray = (arr) => hashValue(arr\n .filter(isNonNullable)\n .map((val) => typeof val === 'string' ||\n typeof val === 'boolean' ||\n typeof val === 'number'\n ? hashValue(val)\n : val.hashCode)\n .join(','));\n/**\n * NOTE: `node-object-hash` seems to be the much more efficient library. But it's based on Node's `crypto` module\n * which is not supported in browser (so we have map `crypto` module to `crypto-browserify` or `crypto-js`).\n * If this object-hashing becomes the performance bottle-neck, we should think about adopting this hashing library\n * See https://www.npmjs.com/package/node-object-hash\n */\nexport const hashObject = (value, options) => {\n assertTrue(isObject(value), `Can't hash non-object value`);\n return objectHash(value, options);\n};\n/**\n * This method can be used to debug hashing.\n *\n * We have tried to come up with a more robust way to debug hash, such as to construct the hash tree, but that's not\n * quite feasible for the following reasons:\n * 1. Since sometimes there are properties we don't drill down like for a class, we just take the path, we don't have\n * a systematic way to construct the hash tree, so we have to rely on the implementation of the hashCode function\n * in each element, which defeats the purpose of having a generic approach for debugging hash\n * 2. If we ignore the implementation detail of `get hashCode` and expand the property if it has `hashCode` then we\n * might risk getting into an infinite loop\n * 3. The manual way to come up with the `get hashCode` is in order to reconcile the differences between metamodels and\n * protocol models. If we only compare metamodels to protocol models for example, the problem might be less complicated,\n * but we're dealing with 2 hash systems (in a way)\n * 4. As such, the best solution at the moment is to come up with a function like this\n * to debug hash where we can put it at a top level structure like `Mapping` and then choose which part of the hash\n * we would like to `explore`\n *\n * @param typesToExpand when we trickle down the object properties, we want to drill down so we want to choose\n * the property to drill down (by its type) since sometimes we don't need to compute the\n * actual hash code for the property (for example: a class, or an enumeration) while computing\n * the hash, just their path.\n */\nexport const debugHash = (obj, typesToExpand, depth = 0) => {\n let res = depth !== 0 ? `${obj.hashCode}` : '';\n res += ` {\\n`;\n Object.entries(obj)\n .filter(([key, value]) => typeof value === 'object' &&\n (!Array.isArray(value) ||\n (value.length !== 0 &&\n value.every((v) => typesToExpand.some((typeToExpand) => v instanceof typeToExpand)))) &&\n (Array.isArray(value) ||\n typesToExpand.some((typeToExpand) => value instanceof typeToExpand)))\n .forEach(([key, value]) => {\n res += `${' '.repeat(depth + 1)}${key}: ${Array.isArray(value)\n ? !value.length\n ? '[]'\n : `[\\n${' '.repeat(depth + 2)}${value\n .map((val, idx) => `${idx}: ${debugHash(val, typesToExpand, depth + 2)}`)\n .join(`\\n${' '.repeat(depth + 2)}`)}\\n${' '.repeat(depth + 1)}]`\n : debugHash(value, typesToExpand, depth + 1)}\\n`;\n });\n res += `${' '.repeat(depth)}}`;\n return res;\n};\n//# sourceMappingURL=HashUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nexport class V1_Multiplicity {\n lowerBound = 0;\n upperBound;\n constructor(lowerBound, upperBound) {\n this.lowerBound = lowerBound;\n this.upperBound = upperBound;\n }\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.MULTIPLICITY,\n this.lowerBound.toString(),\n this.upperBound?.toString() ?? '',\n ]);\n }\n // common multiplicities\n static ZERO = new V1_Multiplicity(0, 0);\n static ZERO_ONE = new V1_Multiplicity(0, 1);\n static ZERO_MANY = new V1_Multiplicity(0, undefined);\n static ONE = new V1_Multiplicity(1, 1);\n static ONE_MANY = new V1_Multiplicity(1, undefined);\n}\n//# sourceMappingURL=V1_Multiplicity.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ValueSpecification {\n}\n//# sourceMappingURL=V1_ValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification, } from '../V1_ValueSpecification.js';\n/**\n * This is the mechanism by which we scale the system. Pretty much any constructs like\n * graph-fetch, path, etc, which have the need to store some data and manifest in value\n * specification space can be wrapped in form of a class instance. Here, we also keep\n * track of the type in order to interpret the value for processing.\n */\nexport class V1_ClassInstance extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n type;\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_ClassInstance(this);\n }\n}\n//# sourceMappingURL=V1_ClassInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../model/valueSpecification/V1_ValueSpecification.js';\nexport class V1_Variable extends V1_ValueSpecification {\n name;\n multiplicity;\n class;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Variable(this);\n }\n}\n//# sourceMappingURL=V1_Variable.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_GraphFetchTree {\n subTrees = [];\n subTypeTrees = [];\n}\n//# sourceMappingURL=V1_GraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_RootGraphFetchTree extends V1_GraphFetchTree {\n class;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_RootGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_RootGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\n/**\n * Similar to class instances, but these constructs are too fundamental for the system\n * so we group them as **core** class instances.\n */\nexport class V1_CoreClassInstance extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_CoreClassInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CoreClassInstance } from './V1_CoreClassInstance.js';\nexport class V1_Lambda extends V1_CoreClassInstance {\n body = [];\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Lambda(this);\n }\n}\n//# sourceMappingURL=V1_Lambda.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\nexport class V1_DataTypeValueSpecification extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_DataTypeValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_Path {\n name;\n startType;\n path = [];\n}\n//# sourceMappingURL=V1_Path.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\nexport class V1_AbstractAppliedFunction extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_AbstractAppliedFunction.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AbstractAppliedFunction } from '../raw/V1_AbstractAppliedFunction.js';\nexport class V1_AppliedFunction extends V1_AbstractAppliedFunction {\n function;\n fControl;\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_AppliedFunction(this);\n }\n}\n//# sourceMappingURL=V1_AppliedFunction.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../../model/valueSpecification/V1_ValueSpecification.js';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nexport class V1_Collection extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE_MANY;\n values = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Collection(this);\n }\n}\n//# sourceMappingURL=V1_Collection.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_DataTypeValueSpecification } from './V1_DataTypeValueSpecification.js';\nexport class V1_PrimitiveValueSpecification extends V1_DataTypeValueSpecification {\n}\n//# sourceMappingURL=V1_PrimitiveValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CDecimal extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CDecimal(this);\n }\n}\n//# sourceMappingURL=V1_CDecimal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CInteger extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CInteger(this);\n }\n}\n//# sourceMappingURL=V1_CInteger.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CString extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CString(this);\n }\n}\n//# sourceMappingURL=V1_CString.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CFloat extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CFloat(this);\n }\n}\n//# sourceMappingURL=V1_CFloat.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CDate extends V1_PrimitiveValueSpecification {\n}\n//# sourceMappingURL=V1_CDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CDateTime extends V1_CDate {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CDateTime(this);\n }\n}\n//# sourceMappingURL=V1_CDateTime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CStrictDate extends V1_CDate {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CStrictDate(this);\n }\n}\n//# sourceMappingURL=V1_CStrictDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CStrictTime extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CStrictTime(this);\n }\n}\n//# sourceMappingURL=V1_CStrictTime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CBoolean extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CBoolean(this);\n }\n}\n//# sourceMappingURL=V1_CBoolean.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_AggregateValue {\n mapFn;\n aggregateFn;\n}\n//# sourceMappingURL=V1_AggregateValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_Pair {\n first;\n second;\n}\n//# sourceMappingURL=V1_Pair.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_RuntimeInstance {\n runtime;\n}\n//# sourceMappingURL=V1_RuntimeInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ExecutionContextInstance {\n executionContext;\n}\n//# sourceMappingURL=V1_ExecutionContextInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_PropertyGraphFetchTree extends V1_GraphFetchTree {\n property;\n parameters = [];\n alias;\n subType;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_PropertyGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_PropertyGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_SubTypeGraphFetchTree extends V1_GraphFetchTree {\n subTypeClass;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_SubTypeGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_SubTypeGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_SerializationConfig {\n includeType;\n typeKeyName;\n includeEnumType;\n removePropertiesWithNullValues;\n removePropertiesWithEmptySets;\n fullyQualifiedTypePath;\n includeObjectReference;\n}\n//# sourceMappingURL=V1_SerializationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CoreClassInstance } from './V1_CoreClassInstance.js';\nexport class V1_KeyExpression extends V1_CoreClassInstance {\n add;\n expression;\n key;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_KeyExpression(this);\n }\n}\n//# sourceMappingURL=V1_KeyExpression.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_PureList {\n values = [];\n}\n//# sourceMappingURL=V1_PureList.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSAggregateValue {\n name;\n pmapFn;\n aggregateFn;\n}\n//# sourceMappingURL=V1_TDSAggregateValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSColumnInformation {\n name;\n columnFn;\n}\n//# sourceMappingURL=V1_TDSColumnInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSSortInformation {\n column;\n direction;\n}\n//# sourceMappingURL=V1_TDSSortInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSOlapRank {\n function;\n}\n//# sourceMappingURL=V1_TDSOlapRank.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSOlapAggregation {\n function;\n columnName;\n}\n//# sourceMappingURL=V1_TDSOlapAggregation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ColSpecArray {\n colSpecs = [];\n}\n//# sourceMappingURL=V1_ColSpecArray.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ColSpec {\n name;\n type;\n function1;\n function2;\n}\n//# sourceMappingURL=V1_ColSpec.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_RelationStoreAccessor {\n path = [];\n}\n//# sourceMappingURL=V1_RelationStoreAccessor.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const MULTIPLICITY_INFINITE = '*';\nexport const ELEMENT_PATH_DELIMITER = '::';\nexport const MULTIPLICITY_RANGE_OPERATOR = '..';\nexport const PROPERTY_ACCESSOR = '.';\nexport const UNIT_PATH_DELIMITER = '~';\nexport const LAMBDA_PIPE = '|';\nexport const DEFAULT_SOURCE_PARAMETER_NAME = 'src';\nexport const DEFAULT_DATABASE_SCHEMA_NAME = 'default';\nexport const SECTION_INDEX_ELEMENT_PATH = '__internal__::SectionIndex';\nexport const VARIABLE_REFERENCE_TOKEN = '$';\nexport const TYPE_CAST_TOKEN = '@';\nexport const ARROW_FUNCTION_TOKEN = '->';\nexport const LATEST_DATE = '%latest';\nexport const PARSER_SECTION_MARKER = '###';\nexport const FUNCTION_SIGNATURE_MULTIPLICITY_INFINITE_TOKEN = 'MANY';\nexport const DIRECTORY_PATH_DELIMITER = '/';\nexport const SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX = 'sourceInformation';\nexport const RESERVERD_PACKAGE_NAMES = ['$implicit'];\nexport var ROOT_PACKAGE_NAME;\n(function (ROOT_PACKAGE_NAME) {\n ROOT_PACKAGE_NAME[\"CORE\"] = \"CORE\";\n ROOT_PACKAGE_NAME[\"MAIN\"] = \"ROOT\";\n ROOT_PACKAGE_NAME[\"MODEL_GENERATION\"] = \"MODEL_GENERATION_ROOT\";\n ROOT_PACKAGE_NAME[\"SYSTEM\"] = \"SYSTEM_ROOT\";\n ROOT_PACKAGE_NAME[\"PROJECT_DEPENDENCY_ROOT\"] = \"PROJECT_DEPENDENCY_ROOT\";\n})(ROOT_PACKAGE_NAME || (ROOT_PACKAGE_NAME = {}));\nexport var PRIMITIVE_TYPE;\n(function (PRIMITIVE_TYPE) {\n PRIMITIVE_TYPE[\"STRING\"] = \"String\";\n PRIMITIVE_TYPE[\"BOOLEAN\"] = \"Boolean\";\n PRIMITIVE_TYPE[\"BINARY\"] = \"Binary\";\n PRIMITIVE_TYPE[\"NUMBER\"] = \"Number\";\n PRIMITIVE_TYPE[\"INTEGER\"] = \"Integer\";\n PRIMITIVE_TYPE[\"FLOAT\"] = \"Float\";\n PRIMITIVE_TYPE[\"DECIMAL\"] = \"Decimal\";\n PRIMITIVE_TYPE[\"DATE\"] = \"Date\";\n PRIMITIVE_TYPE[\"STRICTDATE\"] = \"StrictDate\";\n PRIMITIVE_TYPE[\"DATETIME\"] = \"DateTime\";\n PRIMITIVE_TYPE[\"STRICTTIME\"] = \"StrictTime\";\n // NOTE: `LatestDate` is a special type that is used for milestoning in store so its used in the body of function and lamdba but never should be exposed to users\n // as such, if there is a day we want to have `LatestDate` in the graph but not exposed to the users\n PRIMITIVE_TYPE[\"LATESTDATE\"] = \"LatestDate\";\n PRIMITIVE_TYPE[\"BYTE\"] = \"Byte\";\n})(PRIMITIVE_TYPE || (PRIMITIVE_TYPE = {}));\nexport var ATOMIC_TEST_TYPE;\n(function (ATOMIC_TEST_TYPE) {\n ATOMIC_TEST_TYPE[\"Service_Test\"] = \"serviceTest\";\n ATOMIC_TEST_TYPE[\"Mapping_Test\"] = \"mappingTest\";\n ATOMIC_TEST_TYPE[\"Function_Test\"] = \"functionTest\";\n})(ATOMIC_TEST_TYPE || (ATOMIC_TEST_TYPE = {}));\n// NOTE: the list of auto-import are kept in `m3.pure` file in `finos/legend-pure`,\n// this includes a more extensive list of packges which contain native functions, classes, etc.\n// See https://github.com/finos/legend-pure/blob/master/legend-pure-m3-core/src/main/resources/platform/pure/m3.pure\nexport const AUTO_IMPORTS = [\n // 'meta::pure::metamodel',\n 'meta::pure::metamodel::type',\n // 'meta::pure::metamodel::type::generics',\n // 'meta::pure::metamodel::relationship',\n // 'meta::pure::metamodel::valuespecification',\n // 'meta::pure::metamodel::multiplicity',\n // 'meta::pure::metamodel::function',\n // 'meta::pure::metamodel::function::property',\n // 'meta::pure::metamodel::extension',\n // 'meta::pure::metamodel::import',\n 'meta::pure::functions::date',\n // 'meta::pure::functions::string',\n // 'meta::pure::functions::collection',\n // 'meta::pure::functions::meta',\n // 'meta::pure::functions::constraints',\n // 'meta::pure::functions::lang',\n // 'meta::pure::functions::boolean',\n // 'meta::pure::functions::tools',\n // 'meta::pure::functions::io',\n // 'meta::pure::functions::math',\n // 'meta::pure::functions::asserts',\n // 'meta::pure::functions::test',\n // 'meta::pure::functions::multiplicity',\n // 'meta::pure::router',\n // 'meta::pure::service',\n // 'meta::pure::tds',\n // 'meta::pure::tools',\n 'meta::pure::profiles',\n];\nexport var CORE_PURE_PATH;\n(function (CORE_PURE_PATH) {\n // type\n CORE_PURE_PATH[\"ANY\"] = \"meta::pure::metamodel::type::Any\";\n CORE_PURE_PATH[\"NIL\"] = \"meta::pure::metamodel::type::Nil\";\n // profile\n CORE_PURE_PATH[\"PROFILE_DOC\"] = \"meta::pure::profiles::doc\";\n CORE_PURE_PATH[\"PROFILE_TEMPORAL\"] = \"meta::pure::profiles::temporal\";\n // classifier paths\n CORE_PURE_PATH[\"PROFILE\"] = \"meta::pure::metamodel::extension::Profile\";\n CORE_PURE_PATH[\"ENUMERATION\"] = \"meta::pure::metamodel::type::Enumeration\";\n CORE_PURE_PATH[\"MEASURE\"] = \"meta::pure::metamodel::type::Measure\";\n CORE_PURE_PATH[\"CLASS\"] = \"meta::pure::metamodel::type::Class\";\n CORE_PURE_PATH[\"ASSOCIATION\"] = \"meta::pure::metamodel::relationship::Association\";\n CORE_PURE_PATH[\"FUNCTION\"] = \"meta::pure::metamodel::function::ConcreteFunctionDefinition\";\n CORE_PURE_PATH[\"FLAT_DATA\"] = \"meta::flatData::metamodel::FlatData\";\n CORE_PURE_PATH[\"DATABASE\"] = \"meta::relational::metamodel::Database\";\n CORE_PURE_PATH[\"MAPPING\"] = \"meta::pure::mapping::Mapping\";\n CORE_PURE_PATH[\"SERVICE\"] = \"meta::legend::service::metamodel::Service\";\n CORE_PURE_PATH[\"CONNECTION\"] = \"meta::pure::runtime::PackageableConnection\";\n CORE_PURE_PATH[\"RUNTIME\"] = \"meta::pure::runtime::PackageableRuntime\";\n CORE_PURE_PATH[\"EXECUTION_ENVIRONMENT\"] = \"meta::legend::service::metamodel::ExecutionEnvironmentInstance\";\n CORE_PURE_PATH[\"FILE_GENERATION\"] = \"meta::pure::generation::metamodel::GenerationConfiguration\";\n CORE_PURE_PATH[\"GENERATION_SPECIFICATION\"] = \"meta::pure::generation::metamodel::GenerationSpecification\";\n CORE_PURE_PATH[\"SECTION_INDEX\"] = \"meta::pure::metamodel::section::SectionIndex\";\n CORE_PURE_PATH[\"DATA_ELEMENT\"] = \"meta::pure::data::DataElement\";\n CORE_PURE_PATH[\"SNOWFLAKE_APP\"] = \"meta::external::function::activator::snowflakeApp::SnowflakeApp\";\n CORE_PURE_PATH[\"HOSTED_SERVICE\"] = \"meta::external::function::activator::hostedService::HostedService\";\n})(CORE_PURE_PATH || (CORE_PURE_PATH = {}));\nexport const PURE_DOC_TAG = 'doc';\nexport const PURE_DEPRECATED_STEREOTYPE = 'deprecated';\nexport var MILESTONING_STEREOTYPE;\n(function (MILESTONING_STEREOTYPE) {\n MILESTONING_STEREOTYPE[\"BUSINESS_TEMPORAL\"] = \"businesstemporal\";\n MILESTONING_STEREOTYPE[\"PROCESSING_TEMPORAL\"] = \"processingtemporal\";\n MILESTONING_STEREOTYPE[\"BITEMPORAL\"] = \"bitemporal\";\n})(MILESTONING_STEREOTYPE || (MILESTONING_STEREOTYPE = {}));\nexport var MILESTONING_VERSION_PROPERTY_SUFFIX;\n(function (MILESTONING_VERSION_PROPERTY_SUFFIX) {\n MILESTONING_VERSION_PROPERTY_SUFFIX[\"ALL_VERSIONS\"] = \"AllVersions\";\n MILESTONING_VERSION_PROPERTY_SUFFIX[\"ALL_VERSIONS_IN_RANGE\"] = \"AllVersionsInRange\";\n})(MILESTONING_VERSION_PROPERTY_SUFFIX || (MILESTONING_VERSION_PROPERTY_SUFFIX = {}));\nexport const MILESTONING_START_DATE_PARAMETER_NAME = 'startDate';\nexport const MILESTONING_END_DATE_PARAMETER_NAME = 'endDate';\nexport const PROCESSING_DATE_MILESTONING_PROPERTY_NAME = 'processingDate';\nexport const BUSINESS_DATE_MILESTONING_PROPERTY_NAME = 'businessDate';\nexport var PackageableElementPointerType;\n(function (PackageableElementPointerType) {\n PackageableElementPointerType[\"CLASS\"] = \"CLASS\";\n PackageableElementPointerType[\"STORE\"] = \"STORE\";\n PackageableElementPointerType[\"MAPPING\"] = \"MAPPING\";\n PackageableElementPointerType[\"RUNTIME\"] = \"RUNTIME\";\n PackageableElementPointerType[\"FUNCTION\"] = \"FUNCTION\";\n PackageableElementPointerType[\"FILE_GENERATION\"] = \"FILE_GENERATION\";\n PackageableElementPointerType[\"SERVICE\"] = \"SERVICE\";\n PackageableElementPointerType[\"DATA\"] = \"DATA\";\n})(PackageableElementPointerType || (PackageableElementPointerType = {}));\nexport var SUPPORTED_FUNCTIONS;\n(function (SUPPORTED_FUNCTIONS) {\n SUPPORTED_FUNCTIONS[\"LET\"] = \"meta::pure::functions::lang::letFunction\";\n SUPPORTED_FUNCTIONS[\"NEW\"] = \"meta::pure::functions::meta::new\";\n // from\n SUPPORTED_FUNCTIONS[\"FROM\"] = \"meta::pure::mapping::from\";\n})(SUPPORTED_FUNCTIONS || (SUPPORTED_FUNCTIONS = {}));\nexport const DATE_TIME_FORMAT_WITH_MILLISECONDS = \"yyyy-MM-dd'T'HH:mm:ss.SSSxxxx\";\nexport const DATE_TIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ssxxxx\";\nexport const DATE_FORMAT = 'yyyy-MM-dd';\n// Generation Const\nexport const DEFAULT_GENERATION_PACKAGE = 'generated';\n// Query\nexport const QUERY_PROFILE_TAG_CLASS = 'class';\nexport const QUERY_PROFILE_PATH = 'meta::pure::profiles::query';\n//# sourceMappingURL=MetaModelConst.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nimport { ELEMENT_PATH_DELIMITER } from '../../../../../../graph/MetaModelConst.js';\nexport class V1_PackageableElement {\n package;\n name;\n /**\n * This logic is specific to the codebase and this is not part of the native metamodel.\n * If needed, we can probably move this out as an utility or do type declaration merge\n * and define this externally using `Object.defineProperty`.\n *\n * @internal model logic\n */\n get path() {\n return `${this.package}${ELEMENT_PATH_DELIMITER}${this.name}`;\n }\n get hashCode() {\n return hashArray([CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT, this.path]);\n }\n}\nexport class V1_PackageableElementPointer {\n type;\n path;\n constructor(type, path) {\n this.type = type;\n this.path = path;\n }\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT_POINTER,\n this.type ?? '',\n this.path,\n ]);\n }\n}\n//# sourceMappingURL=V1_PackageableElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { primitive, createModelSchema, optional } from 'serializr';\nimport { SerializationFactory, optionalCustomUsingModelSchema, } from '@finos/legend-shared';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nimport { V1_PackageableElementPointer } from '../../../model/packageableElements/V1_PackageableElement.js';\nimport { V1_SourceInformation } from '../../../model/V1_SourceInformation.js';\nexport const V1_sourceInformationSerialization = new SerializationFactory(createModelSchema(V1_SourceInformation, {\n sourceId: primitive(),\n startLine: primitive(),\n startColumn: primitive(),\n endLine: primitive(),\n endColumn: primitive(),\n}));\nexport class V1_INTERNAL__PackageableElementWithSourceInformation {\n package;\n name;\n sourceInformation;\n static serialization = new SerializationFactory(createModelSchema(V1_INTERNAL__PackageableElementWithSourceInformation, {\n package: primitive(),\n name: primitive(),\n sourceInformation: optionalCustomUsingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\nexport const V1_packageableElementPointerModelSchema = createModelSchema(V1_PackageableElementPointer, {\n path: primitive(),\n type: optional(primitive()),\n});\nexport const V1_multiplicityModelSchema = createModelSchema(V1_Multiplicity, {\n lowerBound: primitive(),\n upperBound: optional(primitive()),\n});\n//# sourceMappingURL=V1_CoreSerializationHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_SourceInformation {\n sourceId;\n startLine;\n startColumn;\n endLine;\n endColumn;\n}\n//# sourceMappingURL=V1_SourceInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_PathElement {\n}\n//# sourceMappingURL=V1_PathElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PathElement } from './V1_PathElement.js';\nexport class V1_PropertyPathElement extends V1_PathElement {\n property;\n parameters = [];\n}\n//# sourceMappingURL=V1_PropertyPathElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AbstractAppliedFunction } from '../raw/V1_AbstractAppliedFunction.js';\nexport class V1_AppliedProperty extends V1_AbstractAppliedFunction {\n class;\n property;\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_AppliedProperty(this);\n }\n}\n//# sourceMappingURL=V1_AppliedProperty.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nexport class V1_Runtime {\n}\nexport class V1_IdentifiedConnection {\n id;\n connection;\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.IDENTIFIED_CONNECTION,\n this.id,\n this.connection,\n ]);\n }\n}\nexport class V1_StoreConnections {\n store;\n storeConnections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.STORE_CONNECTIONS,\n this.store,\n hashArray(this.storeConnections),\n ]);\n }\n}\nexport class V1_ConnectionStores {\n connectionPointer;\n storePointers = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.STORE_CONNECTIONS,\n this.connectionPointer,\n hashArray(this.storePointers),\n ]);\n }\n}\nexport class V1_EngineRuntime extends V1_Runtime {\n mappings = [];\n connectionStores = [];\n connections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.ENGINE_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connectionStores),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_SingleConnectionEngineRuntime extends V1_EngineRuntime {\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.SINGLE_ENGINE_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connectionStores),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_LegacyRuntime extends V1_Runtime {\n mappings = [];\n connections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.LEGACY_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_RuntimePointer extends V1_Runtime {\n runtime;\n get hashCode() {\n return hashArray([CORE_HASH_STRUCTURE.RUNTIME_POINTER, this.runtime]);\n }\n}\n//# sourceMappingURL=V1_Runtime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, primitive, list, custom, serialize, deserialize, object, } from 'serializr';\nimport { usingConstantValueSchema, UnsupportedOperationError, usingModelSchema, } from '@finos/legend-shared';\nimport { V1_packageableElementPointerModelSchema } from '../../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nimport { V1_PackageableRuntime } from '../../../model/packageableElements/runtime/V1_PackageableRuntime.js';\nimport { V1_EngineRuntime, V1_IdentifiedConnection, V1_LegacyRuntime, V1_RuntimePointer, V1_StoreConnections, V1_ConnectionStores, V1_SingleConnectionEngineRuntime, } from '../../../model/packageableElements/runtime/V1_Runtime.js';\nimport { V1_serializeConnectionValue, V1_deserializeConnectionValue, V1_connectionPointerModelSchema, } from './V1_ConnectionSerializationHelper.js';\nexport const V1_PACKAGEABLE_RUNTIME_ELEMENT_PROTOCOL_TYPE = 'runtime';\nexport var V1_RuntimeType;\n(function (V1_RuntimeType) {\n V1_RuntimeType[\"RUNTIME_POINTER\"] = \"runtimePointer\";\n V1_RuntimeType[\"LEGACY_RUNTIME\"] = \"legacyRuntime\";\n V1_RuntimeType[\"ENGINE_RUNTIME\"] = \"engineRuntime\";\n V1_RuntimeType[\"SINGLE_ENGINE_RUNTIME\"] = \"localEngineRuntime\";\n})(V1_RuntimeType || (V1_RuntimeType = {}));\nexport const V1_runtimePointerModelSchema = createModelSchema(V1_RuntimePointer, {\n _type: usingConstantValueSchema(V1_RuntimeType.RUNTIME_POINTER),\n runtime: primitive(),\n});\nexport const V1_setupLegacyRuntimeSerialization = (plugins) => {\n createModelSchema(V1_LegacyRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.LEGACY_RUNTIME),\n connections: list(custom((val) => V1_serializeConnectionValue(val, true, plugins), (val) => V1_deserializeConnectionValue(val, true, plugins))),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n};\nexport const V1_setupEngineRuntimeSerialization = (plugins) => {\n createModelSchema(V1_IdentifiedConnection, {\n connection: custom((val) => V1_serializeConnectionValue(val, true, plugins), (val) => V1_deserializeConnectionValue(val, true, plugins)),\n id: primitive(),\n });\n createModelSchema(V1_ConnectionStores, {\n connectionPointer: usingModelSchema(V1_connectionPointerModelSchema),\n storePointers: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n createModelSchema(V1_StoreConnections, {\n store: usingModelSchema(V1_packageableElementPointerModelSchema),\n storeConnections: list(object(V1_IdentifiedConnection)),\n });\n createModelSchema(V1_EngineRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.ENGINE_RUNTIME),\n connectionStores: list(object(V1_ConnectionStores)),\n connections: list(object(V1_StoreConnections)),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n createModelSchema(V1_SingleConnectionEngineRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.SINGLE_ENGINE_RUNTIME),\n connectionStores: list(object(V1_ConnectionStores)),\n connections: list(object(V1_StoreConnections)),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n};\nexport const V1_serializeRuntime = (protocol) => {\n if (protocol instanceof V1_EngineRuntime) {\n return serialize(V1_EngineRuntime, protocol);\n }\n else if (protocol instanceof V1_RuntimePointer) {\n return serialize(V1_runtimePointerModelSchema, protocol);\n }\n // NOTE: we don't want to serialize legacy runtime as we no longer want to circulate it any further\n throw new UnsupportedOperationError(`Can't serialize runtime`, protocol);\n};\nexport const V1_deserializeRuntime = (json) => {\n switch (json._type) {\n case V1_RuntimeType.RUNTIME_POINTER:\n return deserialize(V1_runtimePointerModelSchema, json);\n case V1_RuntimeType.ENGINE_RUNTIME:\n return deserialize(V1_EngineRuntime, json);\n case V1_RuntimeType.LEGACY_RUNTIME:\n case undefined:\n return deserialize(V1_LegacyRuntime, json);\n default:\n throw new UnsupportedOperationError(`Can't deeserialize runtime of type '${json._type}'`);\n }\n};\nexport const V1_serializeRuntimeValue = (protocol) => {\n if (protocol instanceof V1_SingleConnectionEngineRuntime) {\n return serialize(V1_SingleConnectionEngineRuntime, protocol);\n }\n return serialize(V1_EngineRuntime, protocol);\n};\nexport const V1_deserializeRuntimeValue = (json) => {\n if (json._type === V1_RuntimeType.SINGLE_ENGINE_RUNTIME) {\n return deserialize(V1_SingleConnectionEngineRuntime, json);\n }\n return deserialize(V1_EngineRuntime, json);\n};\nexport const V1_packageableRuntimeModelSchema = createModelSchema(V1_PackageableRuntime, {\n _type: usingConstantValueSchema(V1_PACKAGEABLE_RUNTIME_ELEMENT_PROTOCOL_TYPE),\n name: primitive(),\n package: primitive(),\n runtimeValue: custom((val) => V1_serializeRuntimeValue(val), (val) => V1_deserializeRuntimeValue(val)),\n});\n//# sourceMappingURL=V1_RuntimeSerializationHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hashArray } from '@finos/legend-shared';\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { V1_PackageableElement, } from '../../../model/packageableElements/V1_PackageableElement.js';\nexport class V1_PackageableRuntime extends V1_PackageableElement {\n runtimeValue;\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.PACKAGEABLE_RUNTIME,\n this.path,\n this.runtimeValue,\n ]);\n }\n accept_PackageableElementVisitor(visitor) {\n return visitor.visit_PackageableRuntime(this);\n }\n}\n//# sourceMappingURL=V1_PackageableRuntime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ExecutionContext {\n queryTimeOutInSeconds;\n enableConstraints;\n}\n//# sourceMappingURL=V1_ExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionContext } from './V1_ExecutionContext.js';\nexport class V1_AnalyticsExecutionContext extends V1_ExecutionContext {\n useAnalytics;\n toFlowSetFunction;\n}\n//# sourceMappingURL=V1_AnalyticsExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionContext } from './V1_ExecutionContext.js';\nexport class V1_BaseExecutionContext extends V1_ExecutionContext {\n}\n//# sourceMappingURL=V1_BaseExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../../model/valueSpecification/V1_ValueSpecification.js';\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nexport class V1_PackageableElementPtr extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n fullPath;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_PackageableElementPtr(this);\n }\n}\n//# sourceMappingURL=V1_PackageableElementPtr.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PackageableElementPtr } from './V1_PackageableElementPtr.js';\nexport class V1_GenericTypeInstance extends V1_PackageableElementPtr {\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_GenericTypeInstance(this);\n }\n}\n//# sourceMappingURL=V1_GenericTypeInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, primitive, serialize, SKIP, list, custom, deserialize, optional, } from 'serializr';\nimport { usingConstantValueSchema, UnsupportedOperationError, usingModelSchema, guaranteeIsString, isString, isPlainObject, } from '@finos/legend-shared';\nimport { V1_Variable } from '../../../model/valueSpecification/V1_Variable.js';\nimport { V1_RootGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_RootGraphFetchTree.js';\nimport { V1_Lambda } from '../../../model/valueSpecification/raw/V1_Lambda.js';\nimport { V1_EnumValue } from '../../../model/valueSpecification/raw/V1_EnumValue.js';\nimport { V1_Path } from '../../../model/valueSpecification/raw/classInstance/path/V1_Path.js';\nimport { V1_AppliedFunction } from '../../../model/valueSpecification/application/V1_AppliedFunction.js';\nimport { V1_Collection } from '../../../model/valueSpecification/raw/V1_Collection.js';\nimport { V1_CDecimal } from '../../../model/valueSpecification/raw/V1_CDecimal.js';\nimport { V1_CInteger } from '../../../model/valueSpecification/raw/V1_CInteger.js';\nimport { V1_CString } from '../../../model/valueSpecification/raw/V1_CString.js';\nimport { V1_CFloat } from '../../../model/valueSpecification/raw/V1_CFloat.js';\nimport { V1_CDateTime } from '../../../model/valueSpecification/raw/V1_CDateTime.js';\nimport { V1_CStrictDate } from '../../../model/valueSpecification/raw/V1_CStrictDate.js';\nimport { V1_CStrictTime } from '../../../model/valueSpecification/raw/V1_CStrictTime.js';\nimport { V1_CLatestDate } from '../../../model/valueSpecification/raw/V1_CLatestDate.js';\nimport { V1_CBoolean } from '../../../model/valueSpecification/raw/V1_CBoolean.js';\nimport { V1_AggregateValue } from '../../../model/valueSpecification/raw/classInstance/V1_AggregateValue.js';\nimport { V1_Pair } from '../../../model/valueSpecification/raw/classInstance/V1_Pair.js';\nimport { V1_RuntimeInstance } from '../../../model/valueSpecification/raw/classInstance/V1_RuntimeInstance.js';\nimport { V1_ExecutionContextInstance } from '../../../model/valueSpecification/raw/classInstance/V1_ExecutionContextInstance.js';\nimport { V1_PropertyGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_PropertyGraphFetchTree.js';\nimport { V1_SubTypeGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_SubTypeGraphFetchTree.js';\nimport { V1_SerializationConfig } from '../../../model/valueSpecification/raw/classInstance/V1_SerializationConfig.js';\nimport { V1_KeyExpression } from '../../../model/valueSpecification/raw/V1_KeyExpression.js';\nimport { V1_PureList } from '../../../model/valueSpecification/raw/classInstance/V1_PureList.js';\nimport { V1_TDSAggregateValue } from '../../../model/valueSpecification/raw/classInstance/V1_TDSAggregateValue.js';\nimport { V1_TDSColumnInformation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSColumnInformation.js';\nimport { V1_TDSSortInformation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSSortInformation.js';\nimport { V1_TDSOlapRank } from '../../../model/valueSpecification/raw/classInstance/V1_TDSOlapRank.js';\nimport { V1_TDSOlapAggregation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSOlapAggregation.js';\nimport { V1_ColSpecArray } from '../../../model/valueSpecification/raw/classInstance/relation/V1_ColSpecArray.js';\nimport { V1_ColSpec } from '../../../model/valueSpecification/raw/classInstance/relation/V1_ColSpec.js';\nimport { V1_RelationStoreAccessor } from '../../../model/valueSpecification/raw/classInstance/relation/V1_RelationStoreAccessor.js';\nimport { V1_multiplicityModelSchema } from './V1_CoreSerializationHelper.js';\nimport { V1_PropertyPathElement } from '../../../model/valueSpecification/raw/classInstance/path/V1_PropertyPathElement.js';\nimport { V1_AppliedProperty } from '../../../model/valueSpecification/application/V1_AppliedProperty.js';\nimport { V1_serializeRuntime } from './V1_RuntimeSerializationHelper.js';\nimport { V1_AnalyticsExecutionContext } from '../../../model/valueSpecification/raw/executionContext/V1_AnalyticsExecutionContext.js';\nimport { V1_BaseExecutionContext } from '../../../model/valueSpecification/raw/executionContext/V1_BaseExecutionContext.js';\nimport { V1_PackageableElementPtr } from '../../../model/valueSpecification/raw/V1_PackageableElementPtr.js';\nimport { V1_EngineRuntime } from '../../../model/packageableElements/runtime/V1_Runtime.js';\nimport { V1_GenericTypeInstance } from '../../../model/valueSpecification/raw/V1_GenericTypeInstance.js';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ClassInstance } from '../../../model/valueSpecification/raw/V1_ClassInstance.js';\nimport { V1_CByteArray } from '../../../model/valueSpecification/raw/V1_CByteArray.js';\nvar V1_ExecutionContextType;\n(function (V1_ExecutionContextType) {\n V1_ExecutionContextType[\"BASE_EXECUTION_CONTEXT\"] = \"BaseExecutionContext\";\n V1_ExecutionContextType[\"ANALYTICS_EXECUTION_CONTEXT\"] = \"AnalyticsExecutionContext\";\n})(V1_ExecutionContextType || (V1_ExecutionContextType = {}));\nvar V1_PathElementType;\n(function (V1_PathElementType) {\n V1_PathElementType[\"PROPERTY_PATH_ELEMENT\"] = \"propertyPath\";\n})(V1_PathElementType || (V1_PathElementType = {}));\nexport var V1_GraphFetchTreeType;\n(function (V1_GraphFetchTreeType) {\n V1_GraphFetchTreeType[\"PROPERTY_GRAPH_FETCH_TREE\"] = \"propertyGraphFetchTree\";\n})(V1_GraphFetchTreeType || (V1_GraphFetchTreeType = {}));\nexport var V1_ClassInstanceType;\n(function (V1_ClassInstanceType) {\n V1_ClassInstanceType[\"ROOT_GRAPH_FETCH_TREE\"] = \"rootGraphFetchTree\";\n V1_ClassInstanceType[\"SUBTYPE_GRAPH_FETCH_TREE\"] = \"subTypeGraphFetchTree\";\n V1_ClassInstanceType[\"PATH\"] = \"path\";\n V1_ClassInstanceType[\"AGGREGATE_VALUE\"] = \"aggregateValue\";\n V1_ClassInstanceType[\"EXECUTION_CONTEXT_INSTANCE\"] = \"executionContextInstance\";\n V1_ClassInstanceType[\"PAIR\"] = \"pair\";\n V1_ClassInstanceType[\"PURE_LIST\"] = \"listInstance\";\n V1_ClassInstanceType[\"RUNTIME_INSTANCE\"] = \"runtimeInstance\";\n V1_ClassInstanceType[\"SERIALIZATION_CONFIG\"] = \"alloySerializationConfig\";\n V1_ClassInstanceType[\"COL_SPEC\"] = \"colSpec\";\n V1_ClassInstanceType[\"COL_SPEC_ARRAY\"] = \"colSpecArray\";\n V1_ClassInstanceType[\"RELATION_STORE_ACCESSOR\"] = \">\";\n V1_ClassInstanceType[\"TDS_AGGREGATE_VALUE\"] = \"tdsAggregateValue\";\n V1_ClassInstanceType[\"TDS_COLUMN_INFORMATION\"] = \"tdsColumnInformation\";\n V1_ClassInstanceType[\"TDS_SORT_INFORMATION\"] = \"tdsSortInformation\";\n V1_ClassInstanceType[\"TDS_OLAP_RANK\"] = \"tdsOlapRank\";\n V1_ClassInstanceType[\"TDS_OLAP_AGGREGATION\"] = \"tdsOlapAggregation\";\n})(V1_ClassInstanceType || (V1_ClassInstanceType = {}));\nvar V1_ValueSpecificationType;\n(function (V1_ValueSpecificationType) {\n V1_ValueSpecificationType[\"VARIABLE\"] = \"var\";\n V1_ValueSpecificationType[\"LAMBDA\"] = \"lambda\";\n V1_ValueSpecificationType[\"KEY_EXPRESSION\"] = \"keyExpression\";\n V1_ValueSpecificationType[\"APPLIED_FUNCTION\"] = \"func\";\n V1_ValueSpecificationType[\"APPLIED_PROPERTY\"] = \"property\";\n V1_ValueSpecificationType[\"PACKAGEABLE_ELEMENT_PTR\"] = \"packageableElementPtr\";\n V1_ValueSpecificationType[\"GENERIC_TYPE_INSTANCE\"] = \"genericTypeInstance\";\n V1_ValueSpecificationType[\"ENUM_VALUE\"] = \"enumValue\";\n V1_ValueSpecificationType[\"COLLECTION\"] = \"collection\";\n V1_ValueSpecificationType[\"CINTEGER\"] = \"integer\";\n V1_ValueSpecificationType[\"CDECIMAL\"] = \"decimal\";\n V1_ValueSpecificationType[\"CSTRING\"] = \"string\";\n V1_ValueSpecificationType[\"CBOOLEAN\"] = \"boolean\";\n V1_ValueSpecificationType[\"CBYTEARRAY\"] = \"byteArray\";\n V1_ValueSpecificationType[\"CFLOAT\"] = \"float\";\n V1_ValueSpecificationType[\"CDATETIME\"] = \"dateTime\";\n V1_ValueSpecificationType[\"CSTRICTDATE\"] = \"strictDate\";\n V1_ValueSpecificationType[\"CSTRICTTIME\"] = \"strictTime\";\n V1_ValueSpecificationType[\"CLATESTDATE\"] = \"latestDate\";\n V1_ValueSpecificationType[\"CLASS_INSTANCE\"] = \"classInstance\";\n // ------------------------------ DEPRECATED ----------------------------------\n V1_ValueSpecificationType[\"HACKED_CLASS\"] = \"hackedClass\";\n V1_ValueSpecificationType[\"HACKED_UNIT\"] = \"hackedUnit\";\n V1_ValueSpecificationType[\"UNIT_TYPE\"] = \"unitType\";\n V1_ValueSpecificationType[\"PRIMITIVE_TYPE\"] = \"primitiveType\";\n V1_ValueSpecificationType[\"CLASS\"] = \"class\";\n V1_ValueSpecificationType[\"ENUM\"] = \"enum\";\n V1_ValueSpecificationType[\"MAPPING_INSTANCE\"] = \"mappingInstance\";\n})(V1_ValueSpecificationType || (V1_ValueSpecificationType = {}));\n// ---------------------------------------- Value Specification --------------------------------------\nexport const V1_variableModelSchema = createModelSchema(V1_Variable, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.VARIABLE),\n class: optional(primitive()),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n name: primitive(),\n});\nexport const V1_lambdaModelSchema = (plugins) => createModelSchema(V1_Lambda, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.LAMBDA),\n body: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n parameters: list(usingModelSchema(V1_variableModelSchema)),\n});\nconst keyExpressionModelSchema = (plugins) => createModelSchema(V1_KeyExpression, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.KEY_EXPRESSION),\n add: optional(primitive()),\n expression: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n key: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n});\nconst appliedFunctionModelSchema = (plugins) => createModelSchema(V1_AppliedFunction, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.APPLIED_FUNCTION),\n function: primitive(),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst appliedPropertyModelSchema = (plugins) => createModelSchema(V1_AppliedProperty, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.APPLIED_PROPERTY),\n class: optional(primitive()),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n property: primitive(),\n});\nconst packageableElementPtrSchema = createModelSchema(V1_PackageableElementPtr, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.PACKAGEABLE_ELEMENT_PTR),\n fullPath: primitive(),\n});\nconst genericTypeInstanceSchema = createModelSchema(V1_GenericTypeInstance, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.GENERIC_TYPE_INSTANCE),\n fullPath: primitive(),\n});\n/**\n * @backwardCompatibility\n */\nconst deserializeHackedUnit = (json) => {\n const protocol = new V1_GenericTypeInstance();\n if (isString(json.unitType)) {\n protocol.fullPath = json.unitType;\n }\n else {\n protocol.fullPath = guaranteeIsString(json.fullPath, `Can't deserialize hacked unit: either field 'fullPath' or 'unitType' must be a non-empty string`);\n }\n return protocol;\n};\n/**\n * @backwardCompatibility\n */\nconst deserializeHackedClass = (json) => {\n const protocol = new V1_GenericTypeInstance();\n protocol.fullPath = guaranteeIsString(json.fullPath, `Can't deserialize hacked class: field 'fullPath' must be a non-empty string`);\n return protocol;\n};\nconst collectionModelSchema = (plugins) => createModelSchema(V1_Collection, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.COLLECTION),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n values: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst enumValueModelSchema = createModelSchema(V1_EnumValue, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.ENUM_VALUE),\n fullPath: primitive(),\n value: primitive(),\n});\nconst CDecimalModelSchema = createModelSchema(V1_CDecimal, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CDECIMAL),\n value: primitive(),\n});\nconst CIntegerModelSchema = createModelSchema(V1_CInteger, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CINTEGER),\n value: primitive(),\n});\nconst CStringModelSchema = createModelSchema(V1_CString, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRING),\n value: primitive(),\n});\nconst CFloatModelSchema = createModelSchema(V1_CFloat, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CFLOAT),\n value: primitive(),\n});\nconst CDateTimeModelSchema = createModelSchema(V1_CDateTime, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CDATETIME),\n value: primitive(),\n});\nconst CStrictTimeModelSchema = createModelSchema(V1_CStrictTime, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRICTTIME),\n value: primitive(),\n});\nconst CStrictDateModelSchema = createModelSchema(V1_CStrictDate, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRICTDATE),\n value: primitive(),\n});\nconst CLatestDateModelSchema = createModelSchema(V1_CLatestDate, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CLATESTDATE),\n});\nconst CBooleanModelSchema = createModelSchema(V1_CBoolean, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CBOOLEAN),\n value: primitive(),\n});\nconst CByteArrayModelSchema = createModelSchema(V1_CByteArray, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CBYTEARRAY),\n value: primitive(),\n});\n/**\n * @backwardCompatibility\n */\nconst deserializePrimitiveValueSpecification = (json, plugins, deserializer) => {\n if (Array.isArray(json.values)) {\n if (json.values.length === 0) {\n const collection = new V1_Collection();\n collection.multiplicity = V1_Multiplicity.ZERO;\n return collection;\n }\n else if (json.values.length === 1) {\n return deserializer({\n ...json,\n value: json.values[0],\n });\n }\n else {\n return V1_deserializeValueSpecification({\n ...json,\n _type: V1_ValueSpecificationType.COLLECTION,\n }, plugins);\n }\n }\n return deserializer(json);\n};\n// ---------------------------------------- Class Instance --------------------------------------\nconst classInstanceModelSchema = (plugins) => createModelSchema(V1_ClassInstance, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CLASS_INSTANCE),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n type: primitive(),\n value: custom((val) => V1_serializeClassInstanceValue(val, plugins), (val, context) => V1_deserializeClassInstanceValue(val, context.json.type, plugins)),\n});\n// path\nconst propertyPathElementModelSchema = (plugins) => createModelSchema(V1_PropertyPathElement, {\n _type: usingConstantValueSchema(V1_PathElementType.PROPERTY_PATH_ELEMENT),\n property: primitive(),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nfunction V1_serializePathElement(protocol, plugins) {\n if (protocol instanceof V1_PropertyPathElement) {\n return serialize(propertyPathElementModelSchema(plugins), protocol);\n }\n return SKIP;\n}\nfunction V1_deserializePathElement(json, plugins) {\n switch (json._type) {\n case V1_PathElementType.PROPERTY_PATH_ELEMENT:\n return deserialize(propertyPathElementModelSchema(plugins), json);\n default:\n return SKIP;\n }\n}\nconst pathModelSchema = (plugins) => createModelSchema(V1_Path, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PATH),\n name: primitive(),\n startType: primitive(),\n path: list(custom((val) => V1_serializePathElement(val, plugins), (val) => V1_deserializePathElement(val, plugins))),\n});\n// graph fetch tree\nconst rootGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_RootGraphFetchTree, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE),\n class: primitive(),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n});\nconst propertyGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_PropertyGraphFetchTree, {\n _type: usingConstantValueSchema(V1_GraphFetchTreeType.PROPERTY_GRAPH_FETCH_TREE),\n alias: optional(primitive()),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n property: primitive(),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subType: optional(primitive()),\n});\nconst subTypeGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_SubTypeGraphFetchTree, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.SUBTYPE_GRAPH_FETCH_TREE),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeClass: primitive(),\n});\nexport function V1_serializeGraphFetchTree(protocol, plugins) {\n if (protocol instanceof V1_PropertyGraphFetchTree) {\n return serialize(propertyGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RootGraphFetchTree) {\n return serialize(rootGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_SubTypeGraphFetchTree) {\n return serialize(subTypeGraphFetchTreeModelSchema(plugins), protocol);\n }\n throw new UnsupportedOperationError(`Can't serialize graph fetch tree`, protocol);\n}\nexport function V1_deserializeGraphFetchTree(json, plugins) {\n switch (json._type) {\n case V1_GraphFetchTreeType.PROPERTY_GRAPH_FETCH_TREE:\n return deserialize(propertyGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n return deserialize(rootGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.SUBTYPE_GRAPH_FETCH_TREE:\n return deserialize(subTypeGraphFetchTreeModelSchema(plugins), json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize graph fetch tree node of type '${json._type}'`);\n }\n}\n// execution context\nconst analyticsExecutionContextModelSchema = (plugins) => createModelSchema(V1_AnalyticsExecutionContext, {\n _type: usingConstantValueSchema(V1_ExecutionContextType.ANALYTICS_EXECUTION_CONTEXT),\n enableConstraints: optional(primitive()),\n queryTimeOutInSeconds: optional(primitive()),\n toFlowSetFunction: usingModelSchema(V1_lambdaModelSchema(plugins)),\n useAnalytics: primitive(),\n});\nconst baseExecutionContextModelSchema = createModelSchema(V1_BaseExecutionContext, {\n _type: usingConstantValueSchema(V1_ExecutionContextType.BASE_EXECUTION_CONTEXT),\n enableConstraints: optional(primitive()),\n queryTimeOutInSeconds: optional(primitive()),\n});\nfunction V1_serializeExecutionContext(protocol, plugins) {\n if (protocol instanceof V1_AnalyticsExecutionContext) {\n return serialize(analyticsExecutionContextModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_BaseExecutionContext) {\n return serialize(baseExecutionContextModelSchema, protocol);\n }\n return SKIP;\n}\nfunction V1_deserializeExecutionContext(json, plugins) {\n switch (json._type) {\n case V1_ExecutionContextType.ANALYTICS_EXECUTION_CONTEXT:\n return deserialize(analyticsExecutionContextModelSchema(plugins), json);\n case V1_ExecutionContextType.BASE_EXECUTION_CONTEXT:\n return deserialize(baseExecutionContextModelSchema, json);\n default:\n return SKIP;\n }\n}\nconst executionContextInstanceModelSchema = (plugins) => createModelSchema(V1_ExecutionContextInstance, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE),\n executionContext: custom((val) => V1_serializeExecutionContext(val, plugins), (val) => V1_deserializeExecutionContext(val, plugins)),\n});\n// others\nconst aggregationValueModelSchema = (plugins) => createModelSchema(V1_AggregateValue, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.AGGREGATE_VALUE),\n mapFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n aggregateFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst pairModelSchema = (plugins) => createModelSchema(V1_Pair, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PAIR),\n first: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n second: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n});\nconst runtimeInstanceModelSchema = createModelSchema(V1_RuntimeInstance, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.RUNTIME_INSTANCE),\n runtime: custom((val) => V1_serializeRuntime(val), (val) => deserialize(V1_EngineRuntime, val)),\n});\nconst pureListModelSchema = (plugins) => createModelSchema(V1_PureList, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PURE_LIST),\n values: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst serializationConfigModelSchema = createModelSchema(V1_SerializationConfig, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.SERIALIZATION_CONFIG),\n includeType: optional(primitive()),\n typeKeyName: primitive(),\n includeEnumTypee: optional(primitive()),\n removePropertiesWithNullValuese: optional(primitive()),\n removePropertiesWithEmptySetse: optional(primitive()),\n fullyQualifiedTypePathe: optional(primitive()),\n includeObjectReferencee: optional(primitive()),\n});\n// TDS\nconst tdsAggregrateValueModelSchema = (plugins) => createModelSchema(V1_TDSAggregateValue, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_AGGREGATE_VALUE),\n name: primitive(),\n pmapFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n aggregateFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsColumnInformationModelSchema = (plugins) => createModelSchema(V1_TDSColumnInformation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_COLUMN_INFORMATION),\n name: primitive(),\n columnFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsSortInformationModelSchema = createModelSchema(V1_TDSSortInformation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_SORT_INFORMATION),\n column: primitive(),\n direction: primitive(),\n});\nconst relationStoreAccessorModelSchema = createModelSchema(V1_RelationStoreAccessor, {\n path: list(primitive()),\n});\nconst colSpecModelSchema = (plugins) => createModelSchema(V1_ColSpec, {\n function1: optional(usingModelSchema(V1_lambdaModelSchema(plugins))),\n function2: optional(usingModelSchema(V1_lambdaModelSchema(plugins))),\n name: primitive(),\n type: optional(primitive()),\n});\nconst colSpecArrayModelSchema = (plugins) => createModelSchema(V1_ColSpecArray, {\n colSpecs: list(usingModelSchema(colSpecModelSchema(plugins))),\n});\nconst tdsOlapRankModelSchema = (plugins) => createModelSchema(V1_TDSOlapRank, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_OLAP_RANK),\n function: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsOlapAggregationModelSchema = (plugins) => createModelSchema(V1_TDSOlapAggregation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_OLAP_AGGREGATION),\n function: usingModelSchema(V1_lambdaModelSchema(plugins)),\n columnName: primitive(),\n});\nexport function V1_deserializeClassInstanceValue(json, type, plugins) {\n switch (type) {\n case V1_ClassInstanceType.PATH:\n return deserialize(pathModelSchema(plugins), json);\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n return deserialize(rootGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.AGGREGATE_VALUE:\n return deserialize(aggregationValueModelSchema(plugins), json);\n case V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE:\n return deserialize(executionContextInstanceModelSchema(plugins), json);\n case V1_ClassInstanceType.PAIR:\n return deserialize(pairModelSchema(plugins), json);\n case V1_ClassInstanceType.PURE_LIST:\n return deserialize(pureListModelSchema(plugins), json);\n case V1_ClassInstanceType.RUNTIME_INSTANCE:\n return deserialize(runtimeInstanceModelSchema, json);\n case V1_ClassInstanceType.SERIALIZATION_CONFIG:\n return deserialize(serializationConfigModelSchema, json);\n case V1_ClassInstanceType.TDS_AGGREGATE_VALUE:\n return deserialize(tdsAggregrateValueModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_COLUMN_INFORMATION:\n return deserialize(tdsColumnInformationModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_OLAP_AGGREGATION:\n return deserialize(tdsOlapAggregationModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_OLAP_RANK:\n return deserialize(tdsOlapRankModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_SORT_INFORMATION:\n return deserialize(tdsSortInformationModelSchema, json);\n case V1_ClassInstanceType.COL_SPEC:\n return deserialize(colSpecModelSchema(plugins), json);\n case V1_ClassInstanceType.COL_SPEC_ARRAY:\n return deserialize(colSpecArrayModelSchema(plugins), json);\n case V1_ClassInstanceType.RELATION_STORE_ACCESSOR:\n return deserialize(relationStoreAccessorModelSchema, json);\n default: {\n const deserializers = plugins.flatMap((plugin) => plugin.V1_getExtraClassInstanceValueProtocolDeserializers?.() ?? []);\n for (const deserializer of deserializers) {\n const protocol = deserializer(json, type, plugins);\n if (protocol) {\n return protocol;\n }\n }\n throw new UnsupportedOperationError(`Can't deserialize value specification of type '${json._type}': no compatible deserializer available from plugins`);\n }\n }\n}\nexport function V1_serializeClassInstanceValue(protocol, plugins) {\n if (protocol instanceof V1_Path) {\n return serialize(pathModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RootGraphFetchTree) {\n return serialize(rootGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_ExecutionContextInstance) {\n return serialize(executionContextInstanceModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_AggregateValue) {\n return serialize(aggregationValueModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_Pair) {\n return serialize(pairModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_PureList) {\n return serialize(pureListModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RuntimeInstance) {\n return serialize(runtimeInstanceModelSchema, protocol);\n }\n else if (protocol instanceof V1_SerializationConfig) {\n return serialize(serializationConfigModelSchema, protocol);\n }\n else if (protocol instanceof V1_TDSAggregateValue) {\n return serialize(tdsAggregrateValueModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSColumnInformation) {\n return serialize(tdsColumnInformationModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSOlapAggregation) {\n return serialize(tdsOlapAggregationModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSOlapRank) {\n return serialize(tdsOlapRankModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSSortInformation) {\n return serialize(tdsSortInformationModelSchema, protocol);\n }\n else if (protocol instanceof V1_ColSpec) {\n return serialize(colSpecModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_ColSpecArray) {\n return serialize(colSpecArrayModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RelationStoreAccessor) {\n return serialize(relationStoreAccessorModelSchema, protocol);\n }\n const serializers = plugins.flatMap((plugin) => plugin.V1_getExtraClassInstanceValueProtocolSerializers?.() ?? []);\n for (const serializer of serializers) {\n const json = serializer(protocol, plugins);\n if (json) {\n return json;\n }\n }\n throw new UnsupportedOperationError(`Can't serialize class instance value: no compatible serializer available from plugins`, protocol);\n}\n// ---------------------------------------- Serialization Methods --------------------------------------\nclass V1_ValueSpecificationSerializer {\n plugins = [];\n constructor(plugins) {\n this.plugins = plugins;\n }\n visit_INTERNAL__UnknownValueSpecfication(valueSpecification) {\n return valueSpecification.content;\n }\n visit_Variable(valueSpecification) {\n return serialize(V1_variableModelSchema, valueSpecification);\n }\n visit_Lambda(valueSpecification) {\n return serialize(V1_lambdaModelSchema(this.plugins), valueSpecification);\n }\n visit_KeyExpression(valueSpecification) {\n return serialize(keyExpressionModelSchema(this.plugins), valueSpecification);\n }\n visit_PackageableElementPtr(valueSpecification) {\n return serialize(packageableElementPtrSchema, valueSpecification);\n }\n visit_GenericTypeInstance(valueSpecification) {\n return serialize(genericTypeInstanceSchema, valueSpecification);\n }\n visit_AppliedFunction(valueSpecification) {\n return serialize(appliedFunctionModelSchema(this.plugins), valueSpecification);\n }\n visit_AppliedProperty(valueSpecification) {\n return serialize(appliedPropertyModelSchema(this.plugins), valueSpecification);\n }\n visit_Collection(valueSpecification) {\n return serialize(collectionModelSchema(this.plugins), valueSpecification);\n }\n visit_EnumValue(valueSpecification) {\n return serialize(enumValueModelSchema, valueSpecification);\n }\n visit_CInteger(valueSpecification) {\n return serialize(CIntegerModelSchema, valueSpecification);\n }\n visit_CDecimal(valueSpecification) {\n return serialize(CDecimalModelSchema, valueSpecification);\n }\n visit_CString(valueSpecification) {\n return serialize(CStringModelSchema, valueSpecification);\n }\n visit_CBoolean(valueSpecification) {\n return serialize(CBooleanModelSchema, valueSpecification);\n }\n visit_CByteArray(valueSpecification) {\n return serialize(CByteArrayModelSchema, valueSpecification);\n }\n visit_CFloat(valueSpecification) {\n return serialize(CFloatModelSchema, valueSpecification);\n }\n visit_CDateTime(valueSpecification) {\n return serialize(CDateTimeModelSchema, valueSpecification);\n }\n visit_CStrictDate(valueSpecification) {\n return serialize(CStrictDateModelSchema, valueSpecification);\n }\n visit_CStrictTime(valueSpecification) {\n return serialize(CStrictTimeModelSchema, valueSpecification);\n }\n visit_CLatestDate(valueSpecification) {\n return serialize(CLatestDateModelSchema, valueSpecification);\n }\n visit_ClassInstance(valueSpecification) {\n return serialize(classInstanceModelSchema(this.plugins), valueSpecification);\n }\n}\nexport function V1_deserializeValueSpecification(json, plugins) {\n switch (json._type) {\n case V1_ValueSpecificationType.APPLIED_FUNCTION:\n return deserialize(appliedFunctionModelSchema(plugins), json);\n case V1_ValueSpecificationType.APPLIED_PROPERTY:\n return deserialize(appliedPropertyModelSchema(plugins), json);\n case V1_ValueSpecificationType.VARIABLE:\n return deserialize(V1_variableModelSchema, json);\n case V1_ValueSpecificationType.LAMBDA:\n return deserialize(V1_lambdaModelSchema(plugins), json);\n case V1_ValueSpecificationType.KEY_EXPRESSION:\n return deserialize(keyExpressionModelSchema(plugins), json);\n case V1_ValueSpecificationType.COLLECTION:\n return deserialize(collectionModelSchema(plugins), json);\n case V1_ValueSpecificationType.ENUM_VALUE:\n return deserialize(enumValueModelSchema, json);\n // primitive values\n case V1_ValueSpecificationType.CBOOLEAN:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CBooleanModelSchema, val));\n case V1_ValueSpecificationType.CBYTEARRAY: {\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CByteArrayModelSchema, val));\n }\n case V1_ValueSpecificationType.CDATETIME:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CDateTimeModelSchema, val));\n case V1_ValueSpecificationType.CSTRICTTIME:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStrictTimeModelSchema, val));\n case V1_ValueSpecificationType.CDECIMAL:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CDecimalModelSchema, val));\n case V1_ValueSpecificationType.CFLOAT:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CFloatModelSchema, val));\n case V1_ValueSpecificationType.CINTEGER:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CIntegerModelSchema, val));\n case V1_ValueSpecificationType.CLATESTDATE:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CLatestDateModelSchema, val));\n case V1_ValueSpecificationType.CSTRICTDATE:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStrictDateModelSchema, val));\n case V1_ValueSpecificationType.CSTRING: {\n // This workaround is intended to handle an edge case where CString is sent with empty values\n // we will convert it to an empty string instead\n // See https://github.com/finos/legend-engine/pull/1076\n if (Array.isArray(json.values) &&\n !json.values.length &&\n isPlainObject(json.multiplicity) &&\n json.multiplicity.upperBound === 1) {\n const result = new V1_CString();\n result.value = '';\n return result;\n }\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStringModelSchema, val));\n }\n // class instance\n case V1_ValueSpecificationType.CLASS_INSTANCE:\n return deserialize(classInstanceModelSchema(plugins), json);\n /**\n * NOTE: the following types are here for backward compatibility\n * as some of these are used to be value specifications, but now\n * transformed into class instances\n *\n * @backwardCompatibility\n */\n case V1_ClassInstanceType.PAIR:\n case V1_ClassInstanceType.AGGREGATE_VALUE:\n case V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE:\n case V1_ClassInstanceType.PATH:\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n case V1_ClassInstanceType.PURE_LIST:\n case V1_ClassInstanceType.RUNTIME_INSTANCE:\n case V1_ClassInstanceType.SERIALIZATION_CONFIG:\n case V1_ClassInstanceType.TDS_AGGREGATE_VALUE:\n case V1_ClassInstanceType.TDS_COLUMN_INFORMATION:\n case V1_ClassInstanceType.TDS_OLAP_AGGREGATION:\n case V1_ClassInstanceType.TDS_OLAP_RANK:\n case V1_ClassInstanceType.TDS_SORT_INFORMATION:\n return deserialize(classInstanceModelSchema(plugins), {\n _type: V1_ValueSpecificationType.CLASS_INSTANCE,\n type: json._type,\n value: json,\n });\n // packageable element pointer\n case V1_ValueSpecificationType.HACKED_CLASS: // deprecated\n return deserializeHackedClass(json);\n case V1_ValueSpecificationType.UNIT_TYPE: // deprecated\n case V1_ValueSpecificationType.HACKED_UNIT: // deprecated\n return deserializeHackedUnit(json);\n case V1_ValueSpecificationType.PRIMITIVE_TYPE: // deprecated\n case V1_ValueSpecificationType.ENUM: // deprecated\n case V1_ValueSpecificationType.CLASS: // deprecated\n case V1_ValueSpecificationType.MAPPING_INSTANCE: // deprecated\n case V1_ValueSpecificationType.PACKAGEABLE_ELEMENT_PTR:\n return deserialize(packageableElementPtrSchema, json);\n case V1_ValueSpecificationType.GENERIC_TYPE_INSTANCE:\n return deserialize(genericTypeInstanceSchema, json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize value specification of type '${json._type}'`);\n }\n}\nexport function V1_serializeValueSpecification(protocol, plugins) {\n return protocol.accept_ValueSpecificationVisitor(new V1_ValueSpecificationSerializer(plugins));\n}\n//# sourceMappingURL=V1_ValueSpecificationSerializer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_DataTypeValueSpecification } from './V1_DataTypeValueSpecification.js';\nexport class V1_EnumValue extends V1_DataTypeValueSpecification {\n fullPath;\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_EnumValue(this);\n }\n}\n//# sourceMappingURL=V1_EnumValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CLatestDate extends V1_CDate {\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CLatestDate(this);\n }\n}\n//# sourceMappingURL=V1_CLatestDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CByteArray extends V1_PrimitiveValueSpecification {\n value; // the Base64String transformed from byte[] by Jackson\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CByteArray(this);\n }\n}\n//# sourceMappingURL=V1_CByteArray.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * NOTE: this file holds the most basic utilties to deal with the graph and\n * metamodels. Any methods which requires importing some metamodel or graph\n * are meant to be put into helpers method, e.g. `DomainHelper`.\n *\n * This is to avoid circular dependencies and also to keep things in the\n * right layer\n */\nimport { ELEMENT_PATH_DELIMITER, SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX, } from './MetaModelConst.js';\nimport { findLast, guaranteeNonNullable, isString, recursiveOmit, } from '@finos/legend-shared';\nexport const extractElementNameFromPath = (fullPath) => guaranteeNonNullable(findLast(fullPath.split(ELEMENT_PATH_DELIMITER)));\nexport const extractPackagePathFromPath = (fullPath) => {\n const idx = fullPath.lastIndexOf(ELEMENT_PATH_DELIMITER);\n return idx === -1 ? undefined : fullPath.substring(0, idx);\n};\nexport const isValidIdentifier = (input, allowDollarSymbol) => allowDollarSymbol\n ? Boolean(input.match(/^[a-z][\\w\\d$]*$/))\n : Boolean(input.match(/^[a-z][\\w\\d]*$/));\nexport const matchFunctionName = (functionName, functionFullPaths) => Array.isArray(functionFullPaths)\n ? functionFullPaths.some((functionFullPath) => matchFunctionName(functionName, functionFullPath))\n : functionName === functionFullPaths ||\n extractElementNameFromPath(functionFullPaths) === functionName;\n/**\n * This method concatenate 2 fully-qualified elementh paths to form a single one\n * and then extracts the name and package part from it.\n */\nexport const resolvePackagePathAndElementName = (path, defaultPath) => {\n const index = path.lastIndexOf(ELEMENT_PATH_DELIMITER);\n if (index === -1) {\n return [defaultPath ?? '', path];\n }\n return [\n path.substring(0, index),\n path.substring(index + ELEMENT_PATH_DELIMITER.length, path.length),\n ];\n};\nexport const buildPath = (packagePath, name) => `${guaranteeNonNullable(packagePath, 'Package path is required')}${ELEMENT_PATH_DELIMITER}${guaranteeNonNullable(name, 'Name is required')}`;\nexport const createPath = (packagePath, name) => `${packagePath ? `${packagePath}${ELEMENT_PATH_DELIMITER}` : ''}${name}`;\n// TODO: we might need to support quoted identifier in the future\nexport const isValidPathIdentifier = (val) => Boolean(val.match(/^\\w[\\w$_-]*$/));\nexport const isValidFullPath = (fullPath) => Boolean(fullPath.match(/^(?:\\w[\\w$_-]*)(?:::\\w[\\w$_-]*)+$/));\nexport const isValidPath = (path) => Boolean(path.match(/^(?:\\w[\\w$_-]*)(?:::\\w[\\w$_-]*)*$/));\nexport const fromElementPathToMappingElementId = (className) => className.split(ELEMENT_PATH_DELIMITER).join('_');\n/**\n * Prune source information from object such as raw lambda, raw value specification, etc.\n *\n * NOTE: currently, there is no exhaustive way to do this. Majority of the cases, the source information field\n * is suffixed with `sourceInformation` (e.g. `profileSourceInformation`, `propertyTypeSourceInformation`),\n * however, we have sometimes deviated from this pattern in our protocol model, so we have fields like `classSourceInformation`,\n * etc. So this is really an optimistic, non-exhaustive prune.\n *\n * To do this exhaustively, we need to tweak this method to also check for the structure of the (sub)object to make sure\n * it is structually equivalent to the shape of source information to prune it. However, this is computationally expensive.\n *\n * NOTE: That aside, We should cleanup these in the backend and use pointer instead so source information is coupled\n * with the value instead of having custom-name source information fields like these, polluting the protocol models.\n */\nexport const pruneSourceInformation = (object) => recursiveOmit(object, (obj, propKey) => isString(propKey) &&\n propKey\n .toLowerCase()\n .endsWith(SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX.toLowerCase()));\n//# sourceMappingURL=MetaModelUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var DATA_CUBE_FUNCTIONS;\n(function (DATA_CUBE_FUNCTIONS) {\n // relation\n DATA_CUBE_FUNCTIONS[\"EXTEND\"] = \"meta::pure::functions::relation::extend\";\n DATA_CUBE_FUNCTIONS[\"FILTER\"] = \"meta::pure::functions::relation::filter\";\n DATA_CUBE_FUNCTIONS[\"GROUP_BY\"] = \"meta::pure::functions::relation::groupBy\";\n DATA_CUBE_FUNCTIONS[\"LIMIT\"] = \"meta::pure::functions::relation::limit\";\n DATA_CUBE_FUNCTIONS[\"PIVOT\"] = \"meta::pure::functions::relation::pivot\";\n DATA_CUBE_FUNCTIONS[\"RENAME\"] = \"meta::pure::functions::relation::rename\";\n DATA_CUBE_FUNCTIONS[\"SELECT\"] = \"meta::pure::functions::relation::select\";\n DATA_CUBE_FUNCTIONS[\"SLICE\"] = \"meta::pure::functions::relation::slice\";\n DATA_CUBE_FUNCTIONS[\"SORT\"] = \"meta::pure::functions::relation::sort\";\n // core\n DATA_CUBE_FUNCTIONS[\"CAST\"] = \"meta::pure::functions::lang::cast\";\n DATA_CUBE_FUNCTIONS[\"FROM\"] = \"meta::pure::mapping::from\";\n // sort\n DATA_CUBE_FUNCTIONS[\"ASC\"] = \"meta::pure::functions::relation::ascending\";\n DATA_CUBE_FUNCTIONS[\"DESC\"] = \"meta::pure::functions::relation::descending\";\n // filter\n DATA_CUBE_FUNCTIONS[\"AND\"] = \"meta::pure::functions::boolean::and\";\n DATA_CUBE_FUNCTIONS[\"NOT\"] = \"meta::pure::functions::boolean::not\";\n DATA_CUBE_FUNCTIONS[\"OR\"] = \"meta::pure::functions::boolean::or\";\n // aggregate\n})(DATA_CUBE_FUNCTIONS || (DATA_CUBE_FUNCTIONS = {}));\nexport const DEFAULT_LAMBDA_VARIABLE_NAME = 'x';\nexport const PIVOT_COLUMN_NAME_VALUE_SEPARATOR = '__|__';\nexport var DATA_CUBE_AGGREGATE_FUNCTION;\n(function (DATA_CUBE_AGGREGATE_FUNCTION) {\n DATA_CUBE_AGGREGATE_FUNCTION[\"SUM\"] = \"sum\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"MIN\"] = \"min\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"MAX\"] = \"max\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"COUNT\"] = \"count\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"AVG\"] = \"avg\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"FIRST\"] = \"first\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"LAST\"] = \"last\";\n})(DATA_CUBE_AGGREGATE_FUNCTION || (DATA_CUBE_AGGREGATE_FUNCTION = {}));\nexport var DATA_CUBE_FILTER_OPERATION;\n(function (DATA_CUBE_FILTER_OPERATION) {\n DATA_CUBE_FILTER_OPERATION[\"EQUALS\"] = \"equal\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_EQUAL\"] = \"notEqual\";\n DATA_CUBE_FILTER_OPERATION[\"GREATER_THAN\"] = \"greaterThan\";\n DATA_CUBE_FILTER_OPERATION[\"GREATER_THAN_OR_EQUAL\"] = \"greaterThanOrEqual\";\n DATA_CUBE_FILTER_OPERATION[\"LESS_THAN\"] = \"lessThan\";\n DATA_CUBE_FILTER_OPERATION[\"LESS_THAN_OR_EQUAL\"] = \"lessThanOrEqual\";\n DATA_CUBE_FILTER_OPERATION[\"BLANK\"] = \"isEmpty\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_BLANK\"] = \"isNotEmpty\";\n DATA_CUBE_FILTER_OPERATION[\"CONTAINS\"] = \"contains\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_CONTAINS\"] = \"notContains\";\n DATA_CUBE_FILTER_OPERATION[\"STARTS_WITH\"] = \"startsWith\";\n DATA_CUBE_FILTER_OPERATION[\"ENDS_WITH\"] = \"endsWith\";\n})(DATA_CUBE_FILTER_OPERATION || (DATA_CUBE_FILTER_OPERATION = {}));\nexport var DATA_CUBE_COLUMN_SORT_DIRECTION;\n(function (DATA_CUBE_COLUMN_SORT_DIRECTION) {\n DATA_CUBE_COLUMN_SORT_DIRECTION[\"ASCENDING\"] = \"ascending\";\n DATA_CUBE_COLUMN_SORT_DIRECTION[\"DESCENDING\"] = \"descending\";\n})(DATA_CUBE_COLUMN_SORT_DIRECTION || (DATA_CUBE_COLUMN_SORT_DIRECTION = {}));\n//# sourceMappingURL=DataCubeMetaModelConst.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { cloneSnapshot, } from '../core/DataCubeQuerySnapshot.js';\nimport { LogEvent, assertErrorThrown, deepEqual, guaranteeNonNullable, isBoolean, } from '@finos/legend-shared';\nimport { buildExecutableQueryFromSnapshot } from '../core/DataCubeQueryBuilder.js';\nimport { V1_Lambda, PRIMITIVE_TYPE, extractElementNameFromPath, } from '@finos/legend-graph';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION, DATA_CUBE_FILTER_OPERATION, DATA_CUBE_FUNCTIONS, } from '../DataCubeMetaModelConst.js';\nimport { APPLICATION_EVENT } from '@finos/legend-application';\nexport var GridClientSortDirection;\n(function (GridClientSortDirection) {\n GridClientSortDirection[\"ASCENDING\"] = \"asc\";\n GridClientSortDirection[\"DESCENDING\"] = \"desc\";\n})(GridClientSortDirection || (GridClientSortDirection = {}));\nexport const toRowData = (tds) => tds.rows.map((_row, rowIdx) => {\n const row = {};\n const cols = tds.columns;\n _row.values.forEach((value, colIdx) => {\n // `ag-grid` shows `false` value as empty string so we have\n // call `.toString()` to avoid this behavior.\n row[cols[colIdx]] = isBoolean(value) ? String(value) : value;\n });\n row.rowNumber = rowIdx;\n return row;\n});\nexport class DataCubeGridClientServerSideDataSource {\n grid;\n constructor(grid) {\n this.grid = grid;\n }\n async fetchRows(params) {\n const currentSnapshot = guaranteeNonNullable(this.grid.getLatestSnapshot());\n const syncedSnapshot = this.syncSnapshot(params.request, currentSnapshot);\n if (syncedSnapshot.uuid !== currentSnapshot.uuid) {\n this.grid.publishSnapshot(syncedSnapshot);\n }\n try {\n const executableQuery = buildExecutableQueryFromSnapshot(syncedSnapshot);\n const lambda = new V1_Lambda();\n lambda.body.push(executableQuery);\n const result = await this.grid.dataCubeState.engine.executeQuery(lambda);\n const rowData = toRowData(result.result);\n params.success({ rowData });\n }\n catch (error) {\n assertErrorThrown(error);\n this.grid.dataCubeState.applicationStore.notificationService.notifyError(error);\n params.fail();\n }\n }\n getRows(params) {\n this.fetchRows(params).catch((error) => {\n assertErrorThrown(error);\n this.grid.dataCubeState.applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), `Error ocurred while fetching data for grid should have been handled gracefully`, error);\n });\n }\n syncSnapshot(request, baseSnapshot) {\n let createNew = false;\n // --------------------------------- GROUP BY ---------------------------------\n const groupByExpandedKeys = request.groupKeys;\n const groupByColumns = request.rowGroupCols.map((r) => {\n const column = baseSnapshot.columns.find((col) => col.name === r.id);\n return {\n name: r.id,\n type: guaranteeNonNullable(column).type,\n };\n });\n const groupByAggColumns = request.valueCols.map((v) => {\n const type = baseSnapshot.columns.find((col) => col.name === v.field)?.type;\n return {\n name: v.field,\n type: type,\n function: v.aggFunc,\n };\n });\n let groupByFilter;\n for (let index = 0; index < groupByExpandedKeys.length; index++) {\n const groupFilter = {\n conditions: [\n {\n name: guaranteeNonNullable(groupByColumns.at(index)).name,\n type: PRIMITIVE_TYPE.STRING,\n operation: DATA_CUBE_FILTER_OPERATION.EQUALS,\n value: groupByExpandedKeys.at(index),\n },\n ],\n groupOperation: extractElementNameFromPath(DATA_CUBE_FUNCTIONS.AND),\n };\n groupByFilter = groupFilter;\n }\n // --------------------------------- SORT ---------------------------------\n const newSortColumns = request.sortModel.map((sortInfo) => {\n const column = guaranteeNonNullable(baseSnapshot.columns.find((col) => col.name === sortInfo.colId));\n return {\n name: sortInfo.colId,\n type: column.type,\n direction: sortInfo.sort === GridClientSortDirection.ASCENDING\n ? DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n : DATA_CUBE_COLUMN_SORT_DIRECTION.DESCENDING,\n };\n });\n if (!deepEqual(newSortColumns, baseSnapshot.sortColumns) ||\n !deepEqual(groupByExpandedKeys, baseSnapshot.groupByExpandedKeys) ||\n !deepEqual(groupByColumns, baseSnapshot.groupByColumns) ||\n !deepEqual(groupByAggColumns, baseSnapshot.groupByAggColumns) ||\n !deepEqual(groupByFilter, baseSnapshot.groupByFilter)) {\n createNew = true;\n }\n // --------------------------------- FINALIZE ---------------------------------\n if (createNew) {\n const newSnapshot = cloneSnapshot(baseSnapshot);\n newSnapshot.sortColumns = newSortColumns;\n newSnapshot.groupByExpandedKeys = groupByExpandedKeys;\n newSnapshot.groupByColumns = groupByColumns;\n newSnapshot.groupByAggColumns = groupByAggColumns;\n newSnapshot.groupByFilter = groupByFilter;\n return newSnapshot;\n }\n return baseSnapshot;\n }\n}\n//# sourceMappingURL=DataCubeGridClientEngine.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, optional, primitive } from 'serializr';\nimport { SerializationFactory, usingModelSchema } from '@finos/legend-shared';\nimport { V1_sourceInformationSerialization } from '../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nexport var V1_EngineErrorType;\n(function (V1_EngineErrorType) {\n V1_EngineErrorType[\"COMPILATION\"] = \"COMPILATION\";\n V1_EngineErrorType[\"PARSER\"] = \"PARSER\";\n})(V1_EngineErrorType || (V1_EngineErrorType = {}));\nexport class V1_EngineError {\n message = '';\n errorType;\n sourceInformation;\n static serialization = new SerializationFactory(createModelSchema(V1_EngineError, {\n errorType: optional(primitive()),\n message: primitive(),\n sourceInformation: usingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\n//# sourceMappingURL=V1_EngineError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nimport { DataCubeEditorSortState } from './DataCubeEditorSortState.js';\nimport { DataCubeQueryCodeEditorState } from './DataCubeEditorCodeState.js';\nimport { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSubscriber.js';\nimport { cloneSnapshot, } from '../core/DataCubeQuerySnapshot.js';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nexport var DATA_CUBE_EDITOR_TAB;\n(function (DATA_CUBE_EDITOR_TAB) {\n DATA_CUBE_EDITOR_TAB[\"COLUMNS\"] = \"Columns\";\n DATA_CUBE_EDITOR_TAB[\"VERTICAL_PIVOTS\"] = \"VPivots\";\n DATA_CUBE_EDITOR_TAB[\"HORIZONTAL_PIVOTS\"] = \"HPivots\";\n DATA_CUBE_EDITOR_TAB[\"SORTS\"] = \"Sorts\";\n DATA_CUBE_EDITOR_TAB[\"EXTENDED_COLUMNS\"] = \"Extended Columns\";\n DATA_CUBE_EDITOR_TAB[\"GENERAL_PROPERTIES\"] = \"General Properties\";\n DATA_CUBE_EDITOR_TAB[\"COLUMN_PROPERTIES\"] = \"Column Properties\";\n DATA_CUBE_EDITOR_TAB[\"Code\"] = \"Code\";\n // DEVELOPER_OPTIONS = 'Developer',\n // PIVOT_LAYOUT = 'Pivot Layout',\n})(DATA_CUBE_EDITOR_TAB || (DATA_CUBE_EDITOR_TAB = {}));\nexport class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {\n dataCubeState;\n sort;\n codeEditorState; // TODO: move to editor state\n isPanelOpen = false;\n currentTab = DATA_CUBE_EDITOR_TAB.SORTS;\n constructor(dataCubeState) {\n super(dataCubeState.snapshotManager);\n makeObservable(this, {\n applyChanges: action,\n currentTab: observable,\n setCurrentTab: action,\n isPanelOpen: observable,\n openPanel: action,\n closePanel: action,\n });\n this.codeEditorState = new DataCubeQueryCodeEditorState(this.dataCubeState);\n this.dataCubeState = dataCubeState;\n this.sort = new DataCubeEditorSortState(this.dataCubeState);\n }\n openPanel() {\n this.isPanelOpen = true;\n }\n closePanel() {\n this.isPanelOpen = false;\n }\n setCurrentTab(val) {\n this.currentTab = val;\n }\n applyChanges() {\n // let createNew = false;\n const baseSnapshot = guaranteeNonNullable(this.getLatestSnapshot());\n const snapshot = cloneSnapshot(baseSnapshot);\n const createNew = this.sort.buildSnapshot(snapshot, baseSnapshot);\n if (createNew) {\n this.publishSnapshot(snapshot);\n }\n }\n async applySnapshot(snapshot) {\n this.sort.applySnaphot(snapshot);\n }\n}\n//# sourceMappingURL=DataCubeEditorState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, isString, uuid } from '@finos/legend-shared';\n// Core\nexport var BuilderType;\n(function (BuilderType) {\n BuilderType[\"CLASS_BUILDER\"] = \"classBuilder\";\n BuilderType[\"TDS_BUILDER\"] = \"tdsBuilder\";\n BuilderType[\"JSON_BUILDER\"] = \"json\";\n})(BuilderType || (BuilderType = {}));\nexport var ExecutionActivityType;\n(function (ExecutionActivityType) {\n ExecutionActivityType[\"RELATIONAL\"] = \"relational\";\n ExecutionActivityType[\"RELATIONAL_EXECUTION_ACTIVITY\"] = \"RelationalExecutionActivity\";\n ExecutionActivityType[\"AGGREGATION_AWARE_ACTIVITY\"] = \"aggregationAware\";\n})(ExecutionActivityType || (ExecutionActivityType = {}));\n// TODO: Refactor to use external format (https://github.com/finos/legend-studio/issues/732)\nexport var EXECUTION_SERIALIZATION_FORMAT;\n(function (EXECUTION_SERIALIZATION_FORMAT) {\n EXECUTION_SERIALIZATION_FORMAT[\"CSV\"] = \"CSV\";\n})(EXECUTION_SERIALIZATION_FORMAT || (EXECUTION_SERIALIZATION_FORMAT = {}));\nexport class ResultBuilder {\n _type;\n constructor(type) {\n this._type = type;\n }\n}\n// ------------------------------------------ Execution Activities -----------------------------------------------\nexport class ExecutionActivities {\n}\nexport class RelationalExecutionActivities extends ExecutionActivities {\n sql;\n comment;\n constructor(sql) {\n super();\n this.sql = sql;\n }\n}\nexport class AggregationAwareActivities extends ExecutionActivities {\n rewrittenQuery;\n}\nexport class UnknownExecutionActivities extends ExecutionActivities {\n values;\n constructor(content) {\n super();\n this.values = content;\n }\n}\nexport class ExecutionResult {\n builder;\n activities;\n}\n// ------------------------------------------ Model -----------------------------------------------\nexport class JsonBuilder {\n _type = BuilderType.JSON_BUILDER;\n}\nexport class JsonExecutionResult extends ExecutionResult {\n values;\n}\nexport class RawExecutionResult extends ExecutionResult {\n value;\n constructor(content) {\n super();\n this.value = content;\n }\n}\n// ------------------------------------------ TDS -----------------------------------------------\n/**\n * TODO?: maybe we converge to use TDSColumn\n *\n * Since here, we're building out the result builder config, we don't need\n * to fully resolve all the references, hence we have this simplified version of TDSColumn\n */\nexport class INTERNAL__TDSColumn {\n name;\n type;\n relationalType;\n doc;\n}\nexport class TDSBuilder extends ResultBuilder {\n columns = [];\n constructor() {\n super(BuilderType.TDS_BUILDER);\n }\n}\nexport class TDSRow {\n values = [];\n}\nexport class TabularDataSet {\n columns = [];\n rows = [];\n}\nexport class TDSExecutionResult extends ExecutionResult {\n _UUID = uuid();\n builder = new TDSBuilder();\n result = new TabularDataSet();\n}\nexport class ClassBuilder extends ResultBuilder {\n _type = BuilderType.CLASS_BUILDER;\n}\nexport class ClassExecutionResult extends ExecutionResult {\n builder = new ClassBuilder(BuilderType.CLASS_BUILDER);\n objects;\n}\nexport const getTDSRowRankByColumnInAsc = (a, b, colIndex) => {\n const a1 = a.values[colIndex];\n const b1 = b.values[colIndex];\n if (a1 === null || a1 === undefined) {\n return -1;\n }\n if (b1 === null || b1 === undefined) {\n return 1;\n }\n if (isString(a1) && isString(b1)) {\n return a1.localeCompare(b1);\n }\n else {\n return Number(guaranteeNonNullable(a1)) - Number(guaranteeNonNullable(b1));\n }\n};\n//# sourceMappingURL=ExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PRIMITIVE_TYPE, V1_AppliedFunction, V1_AppliedProperty, V1_CBoolean, V1_CDateTime, V1_CDecimal, V1_CFloat, V1_CInteger, V1_CStrictDate, V1_CStrictTime, V1_CString, V1_ClassInstance, V1_ClassInstanceType, V1_ColSpec, V1_ColSpecArray, V1_Collection, V1_Lambda, V1_Multiplicity, V1_PackageableElementPtr, V1_Variable, V1_deserializeValueSpecification, extractElementNameFromPath, } from '@finos/legend-graph';\nimport { guaranteeNonNullable, guaranteeIsString, guaranteeIsBoolean, guaranteeIsNumber, UnsupportedOperationError, } from '@finos/legend-shared';\nimport { DATA_CUBE_AGGREGATE_FUNCTION, DATA_CUBE_COLUMN_SORT_DIRECTION, DATA_CUBE_FILTER_OPERATION, DATA_CUBE_FUNCTIONS, DEFAULT_LAMBDA_VARIABLE_NAME, } from '../DataCubeMetaModelConst.js';\nfunction createColSpec(name, type, function1, function2) {\n const instance = new V1_ClassInstance();\n instance.type = V1_ClassInstanceType.COL_SPEC;\n const colSpec = new V1_ColSpec();\n colSpec.name = name;\n colSpec.type = type;\n colSpec.function1 = function1;\n colSpec.function2 = function2;\n instance.value = colSpec;\n return instance;\n}\nfunction getAggregationColSpec(column, functionName, columnType, \n// Temporary. Remove it when we support groupBy with empty aggregations\ncolumnName) {\n const colSpec = new V1_ColSpec();\n const aggLambda = new V1_Lambda();\n const property = new V1_AppliedProperty();\n property.property = column;\n property.class = columnType;\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n property.parameters = [defaultVariable];\n aggLambda.body.push(property);\n aggLambda.parameters.push(defaultVariable);\n colSpec.function1 = aggLambda;\n const funcLambda = new V1_Lambda();\n const aggFunc = new V1_AppliedFunction();\n aggFunc.function = functionName;\n const aggVariable = new V1_Variable();\n aggVariable.name = 'agg';\n funcLambda.body.push(aggFunc);\n aggFunc.parameters.push(aggVariable);\n funcLambda.parameters.push(aggVariable);\n colSpec.function2 = funcLambda;\n colSpec.name = columnName ?? column;\n return colSpec;\n}\nfunction getPrimitiveValueSpecification(type, column) {\n switch (type) {\n case PRIMITIVE_TYPE.STRING: {\n const stringValue = new V1_CString();\n stringValue.value = guaranteeIsString(column);\n return stringValue;\n }\n case PRIMITIVE_TYPE.BOOLEAN: {\n const booleanValue = new V1_CBoolean();\n booleanValue.value = guaranteeIsBoolean(column);\n return booleanValue;\n }\n case PRIMITIVE_TYPE.NUMBER:\n case PRIMITIVE_TYPE.DECIMAL: {\n const cDecimal = new V1_CDecimal();\n cDecimal.value = guaranteeIsNumber(column);\n return cDecimal;\n }\n case PRIMITIVE_TYPE.INTEGER: {\n const cInteger = new V1_CInteger();\n cInteger.value = guaranteeIsNumber(column);\n return cInteger;\n }\n case PRIMITIVE_TYPE.FLOAT: {\n const cFloat = new V1_CFloat();\n cFloat.value = guaranteeIsNumber(column);\n return cFloat;\n }\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.DATETIME: {\n const cDateTime = new V1_CDateTime();\n cDateTime.value = guaranteeIsString(column);\n return cDateTime;\n }\n case PRIMITIVE_TYPE.STRICTDATE: {\n const cStrictDate = new V1_CStrictDate();\n cStrictDate.value = guaranteeIsString(column);\n return cStrictDate;\n }\n case PRIMITIVE_TYPE.STRICTTIME: {\n const cStrictTime = new V1_CStrictTime();\n cStrictTime.value = guaranteeIsString(column);\n return cStrictTime;\n }\n default:\n throw new UnsupportedOperationError(`Unsupported dataCube column type ${type}`);\n }\n}\nfunction processFilterQuery(filter) {\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n if ('groupOperation' in filter) {\n const groupFilter = filter;\n let conditionExpressions = [];\n groupFilter.conditions.forEach((condition) => {\n const conditionExpression = processFilterQuery(condition);\n conditionExpressions.push(conditionExpression);\n if (conditionExpressions.length === 2) {\n const groupCondition = groupFilter.groupOperation;\n const groupFunc = new V1_AppliedFunction();\n groupFunc.function = groupCondition;\n groupFunc.parameters = conditionExpressions;\n conditionExpressions = [groupFunc];\n }\n });\n if (conditionExpressions.length === 1) {\n return guaranteeNonNullable(conditionExpressions[0]);\n }\n }\n else {\n const condition = filter;\n const filterCondition = new V1_AppliedFunction();\n const property = new V1_AppliedProperty();\n property.property = condition.name;\n property.class = condition.type;\n property.parameters = [defaultVariable];\n switch (condition.operation) {\n case DATA_CUBE_FILTER_OPERATION.EQUALS:\n case DATA_CUBE_FILTER_OPERATION.GREATER_THAN:\n case DATA_CUBE_FILTER_OPERATION.GREATER_THAN_OR_EQUAL:\n case DATA_CUBE_FILTER_OPERATION.LESS_THAN:\n case DATA_CUBE_FILTER_OPERATION.LESS_THAN_OR_EQUAL:\n case DATA_CUBE_FILTER_OPERATION.CONTAINS:\n case DATA_CUBE_FILTER_OPERATION.ENDS_WITH:\n case DATA_CUBE_FILTER_OPERATION.STARTS_WITH: {\n filterCondition.function = condition.operation;\n filterCondition.parameters.push(property);\n filterCondition.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.BLANK: {\n filterCondition.function = condition.operation;\n filterCondition.parameters.push(property);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_EQUAL: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.EQUALS;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_BLANK: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.BLANK;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_CONTAINS: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.CONTAINS;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n default:\n throw new UnsupportedOperationError(`Unsupported filter operation ${condition.operation}`);\n }\n return filterCondition;\n }\n throw new UnsupportedOperationError(`Unsupported dataCube filter`, filter);\n}\nexport function buildExecutableQueryFromSnapshot(snapshot) {\n const sourceQuery = V1_deserializeValueSpecification(snapshot.sourceQuery, []);\n const sequence = [];\n // --------------------------------- LEAF EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FILTER ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY FILTER ---------------------------------\n if (snapshot.groupByFilter) {\n const filter = snapshot.groupByFilter;\n const filterValueSpec = processFilterQuery(filter);\n const filterLambda = new V1_Lambda();\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n filterLambda.body = [filterValueSpec];\n filterLambda.parameters = [defaultVariable];\n const filterFunc = new V1_AppliedFunction();\n filterFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.FILTER);\n filterFunc.parameters.push(filterLambda);\n sequence.push(filterFunc);\n }\n // --------------------------------- RENAME ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY ---------------------------------\n // TODO: @akphi - implement this\n if (snapshot.groupByColumns.length) {\n const groupByInstance = new V1_ClassInstance();\n groupByInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n const groupByColSpecArray = new V1_ColSpecArray();\n const aggregationColSpecArray = new V1_ColSpecArray();\n const aggregationInstance = new V1_ClassInstance();\n aggregationInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n if (snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n const groupKeys = snapshot.groupByExpandedKeys;\n for (let index = 0; index <= groupKeys.length; index++) {\n const currentGroupByColumn = snapshot.groupByColumns[index];\n const columnSpec = new V1_ColSpec();\n columnSpec.name = guaranteeNonNullable(currentGroupByColumn).name;\n groupByColSpecArray.colSpecs.push(columnSpec);\n }\n // Temporary. Remove it later when we support empty aggregations\n if (snapshot.groupByAggColumns.length === 0) {\n const column = guaranteeNonNullable(snapshot.groupByColumns[0]);\n const colSpec = getAggregationColSpec(column.name, DATA_CUBE_AGGREGATE_FUNCTION.COUNT, PRIMITIVE_TYPE.STRING, DATA_CUBE_AGGREGATE_FUNCTION.COUNT);\n aggregationColSpecArray.colSpecs.push(colSpec);\n }\n }\n if (snapshot.groupByExpandedKeys.length === 0 ||\n snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n snapshot.groupByAggColumns.forEach((agg) => {\n const colSpec = getAggregationColSpec(agg.name, agg.function, agg.type);\n aggregationColSpecArray.colSpecs.push(colSpec);\n });\n }\n groupByInstance.value = groupByColSpecArray;\n aggregationInstance.value = aggregationColSpecArray;\n if (groupByColSpecArray.colSpecs.length !== 0 ||\n aggregationColSpecArray.colSpecs.length !== 0) {\n const groupBy = new V1_AppliedFunction();\n groupBy.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.GROUP_BY);\n groupBy.parameters = [groupByInstance, aggregationInstance];\n sequence.push(groupBy);\n }\n }\n // --------------------------------- SELECT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- PIVOT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- CAST ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP EXTEND ---------------------------------\n if (snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n const extendFunc = new V1_AppliedFunction();\n extendFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.EXTEND);\n const classInstance = new V1_ClassInstance();\n classInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n const colSpecArray = new V1_ColSpecArray();\n classInstance.value = colSpecArray;\n snapshot.columns.forEach((col) => {\n if (!snapshot.groupByColumns.find((c) => c.name === col.name)) {\n const colSpec = new V1_ColSpec();\n const lambda = new V1_Lambda();\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n lambda.parameters.push(defaultVariable);\n const variableValue = new V1_CString();\n variableValue.value = '';\n lambda.body.push(variableValue);\n colSpec.function1 = lambda;\n colSpec.name = col.name;\n colSpecArray.colSpecs.push(colSpec);\n }\n });\n extendFunc.parameters.push(classInstance);\n sequence.push(extendFunc);\n }\n // --------------------------------- SORT ---------------------------------\n if (snapshot.sortColumns.length) {\n const sort = new V1_AppliedFunction();\n sort.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT);\n const sortInfos = new V1_Collection();\n sortInfos.multiplicity = new V1_Multiplicity(snapshot.sortColumns.length, snapshot.sortColumns.length);\n snapshot.sortColumns.forEach((sortCol) => {\n if (snapshot.groupByColumns.length ===\n snapshot.groupByExpandedKeys.length ||\n snapshot.groupByColumns.map((col) => col.name).indexOf(sortCol.name) ===\n snapshot.groupByExpandedKeys.length) {\n const sortInfo = new V1_AppliedFunction();\n sortInfo.function = extractElementNameFromPath(sortCol.direction === DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n ? DATA_CUBE_FUNCTIONS.ASC\n : DATA_CUBE_FUNCTIONS.DESC);\n sortInfo.parameters.push(createColSpec(sortCol.name));\n sortInfos.values.push(sortInfo);\n }\n });\n sort.parameters.push(sortInfos);\n if (sortInfos.values.length) {\n sequence.push(sort);\n }\n }\n // --------------------------------- LIMIT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FROM ---------------------------------\n const fromFunc = new V1_AppliedFunction();\n fromFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.FROM);\n const runtimePtr = new V1_PackageableElementPtr();\n runtimePtr.fullPath = snapshot.runtime;\n fromFunc.parameters.push(runtimePtr);\n sequence.push(fromFunc);\n // --------------------------------- FINALIZE ---------------------------------\n if (!sequence.length) {\n return sourceQuery;\n }\n for (let i = 0; i < sequence.length; i++) {\n guaranteeNonNullable(sequence[i]).parameters.unshift(i === 0 ? sourceQuery : guaranteeNonNullable(sequence[i - 1]));\n }\n return guaranteeNonNullable(sequence[sequence.length - 1]);\n}\n// export async function buildPersistentQueryFromSnapshot(\n// snapshot: DataCubeQuerySnapshot,\n// ) {\n// return new DataCubeQuery(\n// snapshot.name,\n// snapshot.sourceQuery,\n// snapshot.configuration,\n// );\n// }\n// name!: string;\n// query!: string;\n// partialQuery!: string;\n// source!: DataCubeQuerySource;\n// configuration!: DataCubeConfiguration;\n//# sourceMappingURL=DataCubeQueryBuilder.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class DataCubeQuerySnapshotSubscriber {\n manager;\n latestSnapshot;\n constructor(snapshotManager) {\n this.manager = snapshotManager;\n }\n async receiveSnapshot(snapshot) {\n this.latestSnapshot = snapshot;\n await this.applySnapshot(snapshot);\n }\n publishSnapshot(snapshot) {\n this.latestSnapshot = snapshot;\n this.manager.broadcastSnapshot(snapshot);\n }\n getLatestSnapshot() {\n return this.latestSnapshot;\n }\n}\n//# sourceMappingURL=DataCubeQuerySnapshotSubscriber.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../DataCubeMetaModelConst.js';\nimport { GridClientSortDirection } from './DataCubeGridClientEngine.js';\nimport { PRIMITIVE_TYPE } from '@finos/legend-graph';\n// export const getTDSSortOrder = (sortOrder: string): TDS_SORT_ORDER => {\n// switch (sortOrder) {\n// case 'asc':\n// return TDS_SORT_ORDER.ASCENDING;\n// case 'desc':\n// return TDS_SORT_ORDER.DESCENDING;\n// default:\n// throw new Error(`Unsupported tds sort order ${sortOrder}`);\n// }\n// };\n// const getTDSSortModel = (sort: TDS_SORT_ORDER): string => {\n// switch (sort) {\n// case TDS_SORT_ORDER.ASCENDING:\n// return 'asc';\n// case TDS_SORT_ORDER.DESCENDING:\n// return 'desc';\n// default:\n// throw new Error(`Unsupported`);\n// }\n// };\n// export const getAggregationFunction = (\n// aggFunc: string,\n// ): TDS_AGGREGATION_FUNCTION => {\n// switch (aggFunc) {\n// case 'sum':\n// return TDS_AGGREGATION_FUNCTION.SUM;\n// case 'min':\n// return TDS_AGGREGATION_FUNCTION.MIN;\n// case 'max':\n// return TDS_AGGREGATION_FUNCTION.MAX;\n// case 'count':\n// return TDS_AGGREGATION_FUNCTION.COUNT;\n// default:\n// throw new Error(`Unsupported aggregation function ${aggFunc}`);\n// }\n// };\n// export const getTDSFilterOperation = (\n// filterOperation: string,\n// ): TDS_FILTER_OPERATION => {\n// switch (filterOperation) {\n// case 'equals':\n// return TDS_FILTER_OPERATION.EQUALS;\n// case 'notEqual':\n// return TDS_FILTER_OPERATION.NOT_EQUAL;\n// case 'greaterThan':\n// return TDS_FILTER_OPERATION.GREATER_THAN;\n// case 'greaterThanOrEqual':\n// return TDS_FILTER_OPERATION.GREATER_THAN_OR_EQUAL;\n// case 'lessThan':\n// return TDS_FILTER_OPERATION.LESS_THAN;\n// case 'lessThanOrEqual':\n// return TDS_FILTER_OPERATION.LESS_THAN_OR_EQUAL;\n// case 'blank':\n// return TDS_FILTER_OPERATION.BLANK;\n// case 'notBlank':\n// return TDS_FILTER_OPERATION.NOT_BLANK;\n// case 'contains':\n// return TDS_FILTER_OPERATION.CONTAINS;\n// case 'notContains':\n// return TDS_FILTER_OPERATION.NOT_CONTAINS;\n// case 'startsWith':\n// return TDS_FILTER_OPERATION.STARTS_WITH;\n// case 'endsWith':\n// return TDS_FILTER_OPERATION.ENDS_WITH;\n// default:\n// throw new Error(`Unsupported filter operation ${filterOperation}`);\n// }\n// };\n// export const getFilterColumnType = (type: string): PRIMITIVE_TYPE => {\n// switch (type) {\n// case 'text':\n// return PRIMITIVE_TYPE.STRING;\n// case 'number':\n// return PRIMITIVE_TYPE.NUMBER;\n// case 'boolean':\n// return PRIMITIVE_TYPE.BOOLEAN;\n// case 'date':\n// return PRIMITIVE_TYPE.DATE;\n// default:\n// throw new Error(`Unsupported filter type ${type}`);\n// }\n// };\n// export const getFilterModeltype = (type: PRIMITIVE_TYPE): string => {\n// switch (type) {\n// case PRIMITIVE_TYPE.STRING:\n// return 'text';\n// case PRIMITIVE_TYPE.NUMBER:\n// return 'number';\n// case PRIMITIVE_TYPE.BOOLEAN:\n// return 'boolean';\n// case PRIMITIVE_TYPE.DATE:\n// return 'date';\n// default:\n// throw new Error(`Unsupported filter type ${type}`);\n// }\n// };\n// export const getTDSColumnCustomizations = (\n// result: TDSExecutionResult,\n// columnName: string,\n// tdsRequest?: TDSRequest | undefined,\n// ): object => {\n// if (!tdsRequest) {\n// return {};\n// }\n// const sort = tdsRequest.sort.find((c) => c.column === columnName)?.order;\n// const rowGroup = tdsRequest.groupBy.columns.find((c) => c === columnName);\n// const aggFunc = tdsRequest.groupBy.aggregations.find(\n// (c) => c.column === columnName,\n// );\n// return {\n// sort: sort ? getTDSSortModel(sort) : undefined,\n// rowGroup: Boolean(rowGroup),\n// hide: Boolean(rowGroup),\n// aggFunc: aggFunc?.function,\n// };\n// };\n// export const getAggregationTDSColumnCustomizations = (\n// result: TDSExecutionResult,\n// columnName: string,\n// ): object => {\n// const columnType = result.builder.columns.find(\n// (col) => col.name === columnName,\n// )?.type;\n// switch (columnType) {\n// case PRIMITIVE_TYPE.STRING:\n// return {\n// filter: 'agTextColumnFilter',\n// allowedAggFuncs: ['count'],\n// };\n// case PRIMITIVE_TYPE.DATE:\n// case PRIMITIVE_TYPE.DATETIME:\n// case PRIMITIVE_TYPE.STRICTDATE:\n// return {\n// filter: 'agDateColumnFilter',\n// allowedAggFuncs: ['count'],\n// };\n// case PRIMITIVE_TYPE.DECIMAL:\n// case PRIMITIVE_TYPE.INTEGER:\n// case PRIMITIVE_TYPE.FLOAT:\n// return {\n// filter: 'agNumberColumnFilter',\n// allowedAggFuncs: ['count', 'sum', 'max', 'min', 'avg'],\n// };\n// default:\n// return {\n// allowedAggFuncs: ['count'],\n// };\n// }\n// };\n// TODO: @akphi - do we need a default column definition?\n// export const getDefaultColumnDefintions = (): object => ({\n// minWidth: 50,\n// sortable: true,\n// flex: 1,\n// resizable: true,\n// enableRowGroup: true,\n// allowedAggFuncs: ['count', 'sum', 'max', 'min', 'avg'],\n// enableValue: true,\n// menuTabs: ['filterMenuTab', 'generalMenuTab', 'columnsMenuTab'],\n// });\n// export const getTDSRowData = (tds: TabularDataSet): TDSRowDataType[] =>\n// tds.rows.map((_row, rowIdx) => {\n// const row: TDSRowDataType = {};\n// const cols = tds.columns;\n// _row.values.forEach((value, colIdx) => {\n// // `ag-grid` shows `false` value as empty string so we have\n// // call `.toString()` to avoid this behavior.\n// row[cols[colIdx] as string] = isBoolean(value) ? String(value) : value;\n// });\n// row.rowNumber = rowIdx;\n// return row;\n// });\nfunction buildColumnSortSpecification(colName, snapshot) {\n const sortCol = snapshot.sortColumns.find((c) => c.name === colName);\n if (!sortCol) {\n return {\n sort: null,\n sortIndex: null,\n };\n }\n return {\n sort: sortCol.direction === DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n ? GridClientSortDirection.ASCENDING\n : GridClientSortDirection.DESCENDING,\n sortIndex: snapshot.sortColumns.indexOf(sortCol),\n };\n}\nfunction getAggregationColumnCustomizations(colName, snapshot) {\n const columnType = snapshot.columns.find((col) => col.name === colName)?.type;\n switch (columnType) {\n case PRIMITIVE_TYPE.STRING:\n return [];\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.DATETIME:\n case PRIMITIVE_TYPE.STRICTDATE:\n return [];\n case PRIMITIVE_TYPE.DECIMAL:\n case PRIMITIVE_TYPE.INTEGER:\n case PRIMITIVE_TYPE.FLOAT:\n return ['count', 'sum', 'max', 'min', 'avg'];\n default:\n return [];\n }\n}\nfunction buildColumnGroupBySpecification(colName, snapshot) {\n const rowGroup = snapshot.groupByColumns.find((c) => c.name === colName);\n const aggColumn = snapshot.groupByAggColumns.find((c) => c.name === colName);\n return {\n rowGroup: Boolean(rowGroup),\n hide: Boolean(rowGroup),\n aggFunc: aggColumn ? aggColumn.function : null,\n allowedAggFuncs: getAggregationColumnCustomizations(colName, snapshot),\n };\n}\nexport function generateGridOptionsFromSnapshot(snapshot) {\n const gridOptions = {\n columnDefs: snapshot.columns.map((col) => ({\n headerName: col.name,\n field: col.name,\n ...buildColumnSortSpecification(col.name, snapshot),\n // configurable\n minWidth: 50,\n sortable: true,\n flex: 1,\n resizable: true,\n enableRowGroup: true,\n enableValue: true,\n menuTabs: ['generalMenuTab', 'columnsMenuTab'],\n ...buildColumnGroupBySpecification(col.name, snapshot),\n })),\n };\n return gridOptions;\n}\n//# sourceMappingURL=DataCubeGridQuerySnapshotAnalyzer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { flow, makeObservable, observable } from 'mobx';\nimport { DataCubeGridClientServerSideDataSource } from './DataCubeGridClientEngine.js';\nimport { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSubscriber.js';\nimport { generateGridOptionsFromSnapshot } from './DataCubeGridQuerySnapshotAnalyzer.js';\nexport class DataCubeGridState extends DataCubeQuerySnapshotSubscriber {\n dataCubeState;\n _client;\n clientDataSource;\n clientLicenseKey;\n constructor(dataCubeState) {\n super(dataCubeState.snapshotManager);\n makeObservable(this, {\n clientLicenseKey: observable,\n initialize: flow,\n });\n this.dataCubeState = dataCubeState;\n this.clientDataSource = new DataCubeGridClientServerSideDataSource(this);\n }\n configureClient(val) {\n this._client = val;\n }\n get client() {\n return guaranteeNonNullable(this._client, 'Grid client is not configured');\n }\n *initialize() {\n this.clientLicenseKey =\n (yield this.dataCubeState.editorStore.client.getGridClientLicenseKey());\n }\n async applySnapshot(snapshot) {\n const gridOptions = generateGridOptionsFromSnapshot(snapshot);\n this.client.updateGridOptions(gridOptions);\n }\n}\n//# sourceMappingURL=DataCubeGridState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { deepEqual } from '@finos/legend-shared';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../DataCubeMetaModelConst.js';\nexport class DataCubeEditorSortColumnState {\n column;\n direction;\n constructor(column, direction) {\n makeObservable(this, {\n direction: observable,\n setDirection: action,\n });\n this.column = column;\n this.direction = direction;\n }\n setDirection(val) {\n this.direction = val;\n }\n}\nexport class DataCubeEditorSortState {\n dataCubeState;\n availableColumns = [];\n selectedColumns = [];\n availableColumnsSearchText = '';\n selectedColumnsSearchText = '';\n constructor(dataCubeState) {\n this.dataCubeState = dataCubeState;\n makeObservable(this, {\n availableColumns: observable,\n selectedColumns: observable,\n availableColumnsSearchText: observable,\n selectedColumnsSearchText: observable,\n setAvailableColumns: action,\n setSelectedColumns: action,\n addAvailableColumn: action,\n addSelectedColumn: action,\n addAllAvailableColumns: action,\n addAllSelectedColumns: action,\n setSelectedColumnsSearchText: action,\n setAvailableColumnsSearchText: action,\n availableColumnsSearchResults: computed,\n selectedColumnsSearchResults: computed,\n });\n }\n setAvailableColumns(val) {\n this.availableColumns = val;\n }\n setSelectedColumns(val) {\n this.selectedColumns = val;\n }\n addAvailableColumn(columnName) {\n const column = this.availableColumns.find((col) => col.column.name === columnName);\n if (column) {\n this.setAvailableColumns(this.availableColumns.filter((col) => col.column.name !== columnName));\n this.setSelectedColumns(this.selectedColumns.concat(column));\n }\n }\n addSelectedColumn(columnName) {\n const column = this.selectedColumns.find((col) => col.column.name === columnName);\n if (column) {\n this.setSelectedColumns(this.selectedColumns.filter((col) => col.column.name !== columnName));\n this.setAvailableColumns(this.availableColumns.concat(column));\n }\n }\n addAllAvailableColumns() {\n this.setSelectedColumns(this.selectedColumns.concat(this.availableColumns));\n this.setAvailableColumns([]);\n }\n addAllSelectedColumns() {\n this.setAvailableColumns(this.availableColumns.concat(this.selectedColumns));\n this.setSelectedColumns([]);\n }\n setAvailableColumnsSearchText(val) {\n this.availableColumnsSearchText = val;\n }\n setSelectedColumnsSearchText(val) {\n this.selectedColumnsSearchText = val;\n }\n get availableColumnsSearchResults() {\n if (this.availableColumnsSearchText) {\n return this.availableColumns.filter((col) => col.column.name\n .toLowerCase()\n .includes(this.availableColumnsSearchText.toLowerCase()));\n }\n else {\n return this.availableColumns;\n }\n }\n get selectedColumnsSearchResults() {\n if (this.selectedColumnsSearchText) {\n return this.selectedColumns.filter((col) => col.column.name\n .toLowerCase()\n .includes(this.selectedColumnsSearchText.toLowerCase()));\n }\n else {\n return this.selectedColumns;\n }\n }\n applySnaphot(snapshot) {\n const sortColumns = snapshot.sortColumns;\n this.setAvailableColumns(snapshot.columns\n .filter((col) => !sortColumns.find((sortCol) => sortCol.name === col.name))\n .map((col) => new DataCubeEditorSortColumnState(col, DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING)));\n this.setSelectedColumns(sortColumns.map((sortCol) => new DataCubeEditorSortColumnState(snapshot.columns.find((col) => col.name === sortCol.name), sortCol.direction)));\n }\n buildSnapshot(newSnapshot, baseSnapshot) {\n const newSortColumns = this.selectedColumns.map((sortInfo) => ({\n name: sortInfo.column.name,\n type: sortInfo.column.type,\n direction: sortInfo.direction,\n }));\n if (!deepEqual(newSortColumns, baseSnapshot.sortColumns)) {\n newSnapshot.sortColumns = newSortColumns;\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=DataCubeEditorSortState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class SourceInformation {\n sourceId;\n startLine;\n startColumn;\n endLine;\n endColumn;\n constructor(sourceId, startLine, startColumn, endLine, endColumn) {\n this.sourceId = sourceId;\n this.startLine = startLine;\n this.startColumn = startColumn;\n this.endLine = endLine;\n this.endColumn = endColumn;\n }\n}\n//# sourceMappingURL=SourceInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, optional, primitive } from 'serializr';\nimport { SerializationFactory, usingModelSchema } from '@finos/legend-shared';\nimport { V1_EngineError } from '../../engine/V1_EngineError.js';\nimport { V1_sourceInformationSerialization } from '../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nexport class V1_ParserError extends V1_EngineError {\n static serialization = new SerializationFactory(createModelSchema(V1_ParserError, {\n errorType: optional(primitive()),\n message: primitive(),\n sourceInformation: usingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\n//# sourceMappingURL=V1_ParserError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ApplicationError } from '@finos/legend-shared';\nimport { makeObservable, observable } from 'mobx';\nexport class EngineError extends ApplicationError {\n sourceInformation;\n}\nexport class ParserError extends EngineError {\n}\nexport class CompilationError extends EngineError {\n constructor(message) {\n super(message);\n makeObservable(this, {\n sourceInformation: observable,\n });\n }\n}\nexport class ExternalFormatError extends CompilationError {\n}\n//# sourceMappingURL=EngineError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, flow, flowResult, makeObservable, observable } from 'mobx';\nimport { HttpStatus, NetworkClientError, assertErrorThrown, uuid, } from '@finos/legend-shared';\nimport { ParserError, SourceInformation, V1_ParserError, } from '@finos/legend-graph';\nexport class DataCubeQueryEditorState {\n uuid = uuid();\n query;\n parserError;\n constructor(query) {\n makeObservable(this, {\n query: observable,\n parserError: observable,\n setQuery: action,\n setParserError: action,\n });\n this.query = query;\n }\n setQuery(val) {\n this.query = val;\n }\n setParserError(parserError) {\n // account for the lambda prefix offset in source information\n if (parserError?.sourceInformation) {\n parserError.sourceInformation = this.processSourceInformation(parserError.sourceInformation);\n }\n this.parserError = parserError;\n }\n processSourceInformation(sourceInformation) {\n const { sourceId, startLine, startColumn, endLine, endColumn } = sourceInformation;\n const lineOffset = 0;\n const columnOffset = 0;\n return new SourceInformation(sourceId, startLine + lineOffset, startColumn - (startLine === 1 ? columnOffset : 0), endLine + lineOffset, endColumn - (endLine === 1 ? columnOffset : 0));\n }\n}\nexport class DataCubeQueryCodeEditorState {\n dataCubeState;\n queryEditorState;\n currentSubQuery;\n constructor(dataCubeState) {\n makeObservable(this, {\n currentSubQuery: observable,\n queryEditorState: observable,\n setCurrentSubQuery: action,\n parseQuery: flow,\n });\n this.dataCubeState = dataCubeState;\n this.queryEditorState = new DataCubeQueryEditorState('');\n }\n setCurrentSubQuery(val) {\n this.currentSubQuery = val;\n }\n *parseQuery() {\n try {\n this.queryEditorState.setParserError(undefined);\n yield flowResult(this.dataCubeState.editorStore.client.parseQuery({\n code: `|${this.queryEditorState.query}`,\n }));\n }\n catch (error) {\n assertErrorThrown(error);\n if (error instanceof NetworkClientError &&\n error.response.status === HttpStatus.BAD_REQUEST) {\n const protocol = V1_ParserError.serialization.fromJson(error.payload);\n const parserError = new ParserError(protocol.message);\n if (protocol.sourceInformation) {\n parserError.sourceInformation = new SourceInformation(protocol.sourceInformation.sourceId, protocol.sourceInformation.startLine, protocol.sourceInformation.startColumn, protocol.sourceInformation.endLine, protocol.sourceInformation.endColumn);\n }\n this.queryEditorState.setParserError(parserError);\n }\n }\n }\n}\n//# sourceMappingURL=DataCubeEditorCodeState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, custom, list, optional, primitive, raw, SKIP, } from 'serializr';\nimport { SerializationFactory, usingModelSchema, } from '@finos/legend-shared';\nimport { ExecutionActivityType } from '../../../../../../graph-manager/action/execution/ExecutionResult.js';\nexport class V1_ResultBuilder {\n static builderSerialization = new SerializationFactory(createModelSchema(V1_ResultBuilder, {\n _type: primitive(),\n }));\n}\nexport class V1_ExecutionActivities {\n}\nexport class V1_RelationalExecutionActivities extends V1_ExecutionActivities {\n sql;\n comment;\n static serialization = new SerializationFactory(createModelSchema(V1_RelationalExecutionActivities, {\n sql: primitive(),\n comment: optional(primitive()),\n }));\n}\nexport class V1_AggregationAwareActivities extends V1_ExecutionActivities {\n rewrittenQuery;\n static serialization = new SerializationFactory(createModelSchema(V1_AggregationAwareActivities, {\n rewrittenQuery: primitive(),\n }));\n}\nexport class V1_ExecutionResult {\n builder;\n activities;\n}\nexport class V1_UnknownExecutionActivity extends V1_ExecutionActivities {\n content;\n constructor(content) {\n super();\n this.content = content;\n }\n}\nexport class V1_JsonExecutionResult extends V1_ExecutionResult {\n values;\n static serialization = new SerializationFactory(createModelSchema(V1_JsonExecutionResult, {\n _type: primitive(),\n builder: usingModelSchema(V1_ResultBuilder.builderSerialization.schema),\n values: raw(),\n }));\n}\n/**\n * TODO?: maybe we converge to use V1_TDSColumn\n *\n * Since here, we're building out the result builder config, we don't need\n * to fully resolve all the references, hence we have this simplified version of V1_TDSColumn\n */\nexport class V1_INTERNAL__TDSColumn {\n name;\n doc;\n type;\n relationalType;\n static serialization = new SerializationFactory(createModelSchema(V1_INTERNAL__TDSColumn, {\n name: primitive(),\n doc: optional(primitive()),\n type: optional(primitive()),\n relationalType: optional(primitive()),\n }));\n}\nexport class V1_TDSBuilder extends V1_ResultBuilder {\n columns = [];\n static serialization = new SerializationFactory(createModelSchema(V1_TDSBuilder, {\n _type: primitive(),\n columns: list(usingModelSchema(V1_INTERNAL__TDSColumn.serialization.schema)),\n }));\n}\nfunction V1_serializeExecutionActivities(value) {\n switch (value._type) {\n case ExecutionActivityType.RELATIONAL:\n return V1_RelationalExecutionActivities.serialization.fromJson(value);\n case ExecutionActivityType.RELATIONAL_EXECUTION_ACTIVITY:\n return V1_RelationalExecutionActivities.serialization.fromJson(value);\n case ExecutionActivityType.AGGREGATION_AWARE_ACTIVITY:\n return V1_AggregationAwareActivities.serialization.fromJson(value);\n default:\n return new V1_UnknownExecutionActivity(value);\n }\n}\nexport class V1_TDSExecutionResult extends V1_ExecutionResult {\n result;\n static serialization = new SerializationFactory(createModelSchema(V1_TDSExecutionResult, {\n builder: usingModelSchema(V1_TDSBuilder.serialization.schema),\n activities: list(custom(() => SKIP, V1_serializeExecutionActivities)),\n result: raw(),\n }));\n}\nexport class V1_ClassExecutionResult extends V1_ExecutionResult {\n objects;\n static serialization = new SerializationFactory(createModelSchema(V1_ClassExecutionResult, {\n builder: usingModelSchema(V1_ResultBuilder.builderSerialization.schema),\n activities: list(custom(() => SKIP, V1_serializeExecutionActivities)),\n objects: raw(),\n }));\n}\nexport class V1_RawExecutionResult extends V1_ExecutionResult {\n value;\n constructor(value) {\n super();\n this.value = value;\n }\n}\n//# sourceMappingURL=V1_ExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionResult } from './V1_ExecutionResult.js';\nexport class V1_INTERNAL__UnknownExecutionResult extends V1_ExecutionResult {\n content;\n}\n//# sourceMappingURL=V1_INTERNAL__UnknownExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ExecutionResult } from './ExecutionResult.js';\nexport class INTERNAL__UnknownExecutionResult extends ExecutionResult {\n content;\n}\n//# sourceMappingURL=INTERNAL__UnknownExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, UnsupportedOperationError, isString, isNumber, isBoolean, } from '@finos/legend-shared';\nimport { TDSRow, ClassExecutionResult, JsonExecutionResult, TDSExecutionResult, TDSBuilder, INTERNAL__TDSColumn, RawExecutionResult, RelationalExecutionActivities, UnknownExecutionActivities, AggregationAwareActivities, BuilderType, } from '../../../../../../graph-manager/action/execution/ExecutionResult.js';\nimport { V1_ClassExecutionResult, V1_JsonExecutionResult, V1_TDSExecutionResult, V1_RawExecutionResult, V1_RelationalExecutionActivities, V1_UnknownExecutionActivity, V1_AggregationAwareActivities, } from './V1_ExecutionResult.js';\nimport { V1_INTERNAL__UnknownExecutionResult } from './V1_INTERNAL__UnknownExecutionResult.js';\nimport { INTERNAL__UnknownExecutionResult } from '../../../../../action/execution/INTERNAL__UnknownExecutionResult.js';\nconst buildExecutionActivities = (protocol) => {\n if (protocol instanceof V1_RelationalExecutionActivities) {\n const metamodel = new RelationalExecutionActivities(protocol.sql);\n metamodel.comment = protocol.comment;\n return metamodel;\n }\n else if (protocol instanceof V1_AggregationAwareActivities) {\n const metamodel = new AggregationAwareActivities();\n metamodel.rewrittenQuery = guaranteeNonNullable(protocol.rewrittenQuery, `Aggregation aware execution activities 'rewritenQuery' field is missing`);\n return metamodel;\n }\n else if (protocol instanceof V1_UnknownExecutionActivity) {\n const metamodel = new UnknownExecutionActivities(protocol);\n return metamodel;\n }\n throw new UnsupportedOperationError(`Can't build execution activities`, protocol);\n};\nconst buildJSONExecutionResult = (protocol) => {\n const metamodel = new JsonExecutionResult();\n metamodel.values = guaranteeNonNullable(protocol.values, `JSON execution result 'values' field is missing`);\n return metamodel;\n};\nconst INTERNAL__buildTDSColumn = (protocol) => {\n const metamodel = new INTERNAL__TDSColumn();\n metamodel.name = guaranteeNonNullable(protocol.name, `TDS column 'name' field is missing`);\n metamodel.type = protocol.type;\n metamodel.doc = protocol.doc;\n metamodel.relationalType = protocol.relationalType;\n return metamodel;\n};\nconst buildTDSBuilder = (protocol) => {\n const builder = new TDSBuilder();\n builder.columns = protocol.columns.map(INTERNAL__buildTDSColumn);\n return builder;\n};\nconst buildTDSExecutionResult = (protocol) => {\n const metamodel = new TDSExecutionResult();\n metamodel.builder = buildTDSBuilder(guaranteeNonNullable(protocol.builder, `TDS execution result 'builder' field is missing`));\n metamodel.activities = protocol.activities?.map(buildExecutionActivities);\n metamodel.result.columns = protocol.result.columns;\n metamodel.result.rows = protocol.result.rows.map((_row) => {\n const row = new TDSRow();\n row.values = _row.values;\n return row;\n });\n return metamodel;\n};\nconst buildClassExecutionResult = (protocol) => {\n const metamodel = new ClassExecutionResult();\n metamodel.objects = guaranteeNonNullable(protocol.objects, `Class execution result 'objects' field is missing`);\n metamodel.activities = protocol.activities?.map(buildExecutionActivities);\n return metamodel;\n};\nexport const V1_buildExecutionResult = (protocol) => {\n if (protocol instanceof V1_INTERNAL__UnknownExecutionResult) {\n const metamodel = new INTERNAL__UnknownExecutionResult();\n metamodel.content = protocol.content;\n return metamodel;\n }\n else if (protocol instanceof V1_ClassExecutionResult) {\n return buildClassExecutionResult(protocol);\n }\n else if (protocol instanceof V1_TDSExecutionResult) {\n return buildTDSExecutionResult(protocol);\n }\n else if (protocol instanceof V1_JsonExecutionResult) {\n return buildJSONExecutionResult(protocol);\n }\n else if (protocol instanceof V1_RawExecutionResult) {\n return new RawExecutionResult(protocol.value);\n }\n throw new UnsupportedOperationError(`Can't build execution result`, protocol);\n};\nexport const V1_serializeExecutionResult = (json) => {\n if (json === null || isString(json) || isNumber(json) || isBoolean(json)) {\n return new V1_RawExecutionResult(json);\n }\n switch (json.builder?._type) {\n case BuilderType.CLASS_BUILDER:\n return V1_ClassExecutionResult.serialization.fromJson(json);\n case BuilderType.TDS_BUILDER:\n return V1_TDSExecutionResult.serialization.fromJson(json);\n case BuilderType.JSON_BUILDER:\n return V1_JsonExecutionResult.serialization.fromJson(json);\n default: {\n // Fall back to create unknown stub if not supported\n const protocol = new V1_INTERNAL__UnknownExecutionResult();\n protocol.content = json;\n return protocol;\n }\n }\n};\n//# sourceMappingURL=V1_ExecutionHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SerializationFactory, UnsupportedOperationError, usingConstantValueSchema, usingModelSchema, } from '@finos/legend-shared';\nimport { createModelSchema, custom, deserialize, list, primitive, raw, serialize, } from 'serializr';\nexport class DataCubeQuerySource {\n columns = [];\n query;\n runtime;\n}\nexport class DataCubeQueryColumn {\n name;\n type;\n static serialization = new SerializationFactory(createModelSchema(DataCubeQueryColumn, {\n name: primitive(),\n type: primitive(),\n }));\n}\nvar DATA_CUBE_QUERY_SOURCE_TYPE;\n(function (DATA_CUBE_QUERY_SOURCE_TYPE) {\n DATA_CUBE_QUERY_SOURCE_TYPE[\"REPL_EXECUTED_QUERY\"] = \"REPLExecutedQuery\";\n})(DATA_CUBE_QUERY_SOURCE_TYPE || (DATA_CUBE_QUERY_SOURCE_TYPE = {}));\nexport class DataCubeQuerySourceREPLExecutedQuery extends DataCubeQuerySource {\n static serialization = new SerializationFactory(createModelSchema(DataCubeQuerySourceREPLExecutedQuery, {\n _type: usingConstantValueSchema(DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY),\n columns: list(usingModelSchema(DataCubeQueryColumn.serialization.schema)),\n query: primitive(),\n runtime: primitive(),\n }));\n}\nfunction deserializeQuerySource(json) {\n switch (json._type) {\n case DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY:\n return deserialize(DataCubeQuerySourceREPLExecutedQuery.serialization.schema, json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize data cube query source of type '${json._type}'`);\n }\n}\nfunction serializeQuerySource(object) {\n if (object instanceof DataCubeQuerySourceREPLExecutedQuery) {\n return serialize(DataCubeQuerySourceREPLExecutedQuery.serialization.schema, object);\n }\n throw new UnsupportedOperationError(`Can't serialize data cube query source`, object);\n}\nexport class DataCubeConfiguration {\n}\nexport class DataCubeQuery {\n name;\n query;\n partialQuery;\n source;\n configuration;\n constructor(name, query, configuration) {\n this.name = name;\n this.query = query;\n this.configuration = configuration;\n }\n static serialization = new SerializationFactory(createModelSchema(DataCubeQuery, {\n configuration: raw(), // TODO: @akphi - populate this once we know the shape better\n name: primitive(),\n partialQuery: primitive(),\n query: primitive(),\n source: custom(serializeQuerySource, deserializeQuerySource),\n }));\n}\n//# sourceMappingURL=DataCubeQuery.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_deserializeValueSpecification, V1_serializeValueSpecification, TDSExecutionResult, V1_serializeExecutionResult, V1_buildExecutionResult, } from '@finos/legend-graph';\nimport {} from '../../../server/models/DataCubeEngineModels.js';\nimport { DataCubeQuery } from '../../../server/models/DataCubeQuery.js';\nimport { guaranteeType } from '@finos/legend-shared';\nexport class DataCubeEngine {\n client;\n constructor(client) {\n this.client = client;\n }\n async getGridClientLicenseKey() {\n return this.client.getGridClientLicenseKey();\n }\n async getQueryTypeahead(code, isPartial) {\n return (await this.client.getQueryTypeahead({\n code,\n isPartial,\n }));\n }\n async parseQuery(code, returnSourceInformation) {\n return V1_deserializeValueSpecification(await this.client.parseQuery({ code, returnSourceInformation }), []);\n }\n async getBaseQuery() {\n return DataCubeQuery.serialization.fromJson(await this.client.getBaseQuery());\n }\n async executeQuery(query) {\n const result = await this.client.executeQuery({\n query: V1_serializeValueSpecification(query, []),\n });\n return guaranteeType(V1_buildExecutionResult(V1_serializeExecutionResult(JSON.parse(result.result))), TDSExecutionResult);\n }\n}\n//# sourceMappingURL=DataCubeEngine.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT } from '@finos/legend-application';\nimport { LogEvent, assertErrorThrown, guaranteeNonNullable, } from '@finos/legend-shared';\n// TODO: use this when we implement undo/redo\n// const DATA_CUBE_MAX_SNAPSHOT_COUNT = 100;\nexport class DataCubeQuerySnapshotManager {\n dataCubeState;\n subscribers = [];\n snapshots = [];\n constructor(dataCubeState) {\n this.dataCubeState = dataCubeState;\n }\n get currentSnapshot() {\n return guaranteeNonNullable(this.snapshots[this.snapshots.length - 1]);\n }\n registerSubscriber(subscriber) {\n this.subscribers.push(subscriber);\n }\n broadcastSnapshot(snapshot) {\n this.snapshots.push(snapshot);\n this.subscribers.forEach((subscriber) => {\n const currentSnapshot = subscriber.getLatestSnapshot();\n if (currentSnapshot?.uuid !== snapshot.uuid) {\n subscriber.receiveSnapshot(snapshot).catch((error) => {\n assertErrorThrown(error);\n this.dataCubeState.applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), `Error ocurred when subscribers receive and apply new snapshot should be handled gracefully`, error);\n });\n }\n });\n }\n}\n//# sourceMappingURL=DataCubeQuerySnapshotManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AppliedFunction, V1_ClassInstance, V1_ColSpec, V1_Collection, V1_serializeValueSpecification, extractElementNameFromPath, matchFunctionName, } from '@finos/legend-graph';\nimport { DATA_CUBE_FUNCTIONS, DATA_CUBE_COLUMN_SORT_DIRECTION, } from '../DataCubeMetaModelConst.js';\nimport { DataCubeQuerySnapshotColumnOrigin, createSnapshot, } from './DataCubeQuerySnapshot.js';\nimport { assertErrorThrown, assertTrue, assertType, guaranteeNonNullable, } from '@finos/legend-shared';\nconst _SUPPORTED_TOP_LEVEL_FUNCTIONS = [\n { func: DATA_CUBE_FUNCTIONS.EXTEND, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.FILTER, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.GROUP_BY, parameters: 3 },\n { func: DATA_CUBE_FUNCTIONS.LIMIT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.PIVOT, parameters: 3 },\n { func: DATA_CUBE_FUNCTIONS.RENAME, parameters: 2 },\n { func: DATA_CUBE_FUNCTIONS.SELECT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.SORT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.CAST, parameters: 1 },\n];\n// NOTE: this corresponds to the sequence:\n// extend()->rename()->filter()->groupBy()->select()->pivot()->cast()->extend()->sort()->limit()\n// which represents the ONLY query shape that we currently support\nconst _FUNCTION_SEQUENCE_COMPOSITION_PATTERN = [\n { func: DATA_CUBE_FUNCTIONS.EXTEND },\n { func: DATA_CUBE_FUNCTIONS.RENAME, repeat: true }, // rename() can be repeated since each call only allow renaming one column\n { func: DATA_CUBE_FUNCTIONS.FILTER },\n { func: DATA_CUBE_FUNCTIONS.GROUP_BY },\n { func: DATA_CUBE_FUNCTIONS.SELECT },\n { func: DATA_CUBE_FUNCTIONS.PIVOT },\n { func: DATA_CUBE_FUNCTIONS.CAST },\n { func: DATA_CUBE_FUNCTIONS.EXTEND },\n { func: DATA_CUBE_FUNCTIONS.SORT },\n { func: DATA_CUBE_FUNCTIONS.LIMIT },\n];\nconst _FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP = new RegExp(`^${_FUNCTION_SEQUENCE_COMPOSITION_PATTERN\n .map((entry) => `(?:<${extractElementNameFromPath(entry.func)}>)${entry.repeat ? '*' : !entry.required ? '?' : ''}`)\n .join('')}$`);\n/**\n * Since the query created by DataCube will be a chain call of various functions,\n * this utility function will extract that sequence of function calls as well as\n * do various basic checks for the validity, composition, and order of those functions.\n */\nfunction extractQueryFunctionSequence(query) {\n // Make sure this is a sequence of function calls\n if (!(query instanceof V1_AppliedFunction)) {\n throw new Error(`Query sequence must be a sequence of function calls (e.g. x()->y()->z())`);\n }\n const sequence = [];\n let currentQuery = query;\n while (currentQuery instanceof V1_AppliedFunction) {\n const supportedFunc = _SUPPORTED_TOP_LEVEL_FUNCTIONS.find((spec) => matchFunctionName(currentQuery.function, spec.func));\n // Check that all functions in sequence are supported\n if (!supportedFunc) {\n throw new Error(`Found unsupported function ${currentQuery.function}()`);\n }\n if (currentQuery.parameters.length > supportedFunc.parameters) {\n const vs = currentQuery.parameters[0];\n if (!(vs instanceof V1_AppliedFunction)) {\n throw new Error(`Query sequence must be a sequence of function calls (e.g. x()->y()->z())`);\n }\n currentQuery.parameters = currentQuery.parameters.slice(1);\n sequence.unshift(currentQuery);\n currentQuery = vs;\n }\n else {\n sequence.unshift(currentQuery);\n break;\n }\n }\n // Check that sequence follows the supported pattern\n const sequenceFormText = sequence\n .map((func) => `<${extractElementNameFromPath(func.function)}>`)\n .join('');\n if (!sequenceFormText.match(_FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP)) {\n throw new Error(`Unsupported function composition ${sequence.map((fn) => `${extractElementNameFromPath(fn.function)}()`).join('->')} (supported composition: ${_FUNCTION_SEQUENCE_COMPOSITION_PATTERN.map((entry) => `${extractElementNameFromPath(entry.func)}()`).join('->')})`);\n }\n // Special checks\n // Check that the first and second extend() must be separated by either groupBy() or pivot() (i.e. aggregation)\n const firstExtendIndex = sequence.findIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n const secondExtendIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n if (firstExtendIndex !== -1 && firstExtendIndex !== secondExtendIndex) {\n const seq = sequence.slice(firstExtendIndex + 1, secondExtendIndex);\n if (!seq.some((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.GROUP_BY) ||\n matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT))) {\n throw new Error(`Found invalid usage of group-level extend() for query without aggregation such as pivot() and groupBy()`);\n }\n }\n // Check that pivot() and cast() must co-present and stand consecutively in the sequence\n const pivotFunc = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT));\n const castFunc = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.CAST));\n if (Boolean(pivotFunc) !== Boolean(castFunc)) {\n throw new Error(`Found usage of dynamic function pivot() without casting`);\n }\n return sequence;\n}\n/**\n * Turn the function sequence into a map of available functions\n * for easier construction of the snapshot\n */\nfunction extractFunctionMap(sequence) {\n let leafExtend = undefined;\n let groupExtend = undefined;\n const aggregationFuncIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, [\n DATA_CUBE_FUNCTIONS.PIVOT,\n DATA_CUBE_FUNCTIONS.GROUP_BY,\n ]));\n const firstExtendIndex = sequence.findIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n const secondExtendIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n if (aggregationFuncIndex !== -1) {\n if (firstExtendIndex !== secondExtendIndex) {\n leafExtend = sequence[firstExtendIndex];\n groupExtend = sequence[secondExtendIndex];\n }\n }\n else {\n if (firstExtendIndex !== -1) {\n leafExtend = sequence[firstExtendIndex];\n }\n }\n const rename = sequence.filter((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.RENAME));\n const filter = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.FILTER));\n const groupBy = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.GROUP_BY));\n const select = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.SELECT));\n const pivot = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT));\n const cast = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.CAST));\n const sort = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.SORT));\n const limit = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.LIMIT));\n return {\n leafExtend,\n rename,\n filter,\n groupBy,\n select,\n pivot,\n cast,\n groupExtend,\n sort,\n limit,\n };\n}\n/**\n * Analyze the partial query to build the base snapshot.\n *\n * NOTE: the base snapshot is almost, but not a complete snapshot.\n * It has key information about the partial query filled in, these are the bits\n * required to reconstruct the query just from the snapshot.\n * However, it lacks analytics information, such as extended columns' lambda code,\n * which might be useful for initializing the editors. These should get filled in\n * at a later stage in the analysis/initialization flow.\n *\n * Implementation-wise, this extracts the function call sequence, then walk the\n * sequence in order to fill in the information for the snapshot.\n */\nexport function validateAndBuildBaseSnapshot(baseQuery, analytics) {\n // --------------------------------- BASE ---------------------------------\n // Build the function call sequence and the function map to make the\n // analysis more ergonomic\n const { partialQuery, sourceQuery } = analytics;\n const sequence = partialQuery\n ? extractQueryFunctionSequence(partialQuery)\n : [];\n const funcMap = extractFunctionMap(sequence);\n const snapshot = createSnapshot(baseQuery.name, baseQuery.source.runtime, V1_serializeValueSpecification(sourceQuery, []), baseQuery.configuration);\n // --------------------------------- SOURCE ---------------------------------\n snapshot.originalColumns = baseQuery.source.columns;\n const columns = snapshot.originalColumns.map((col) => ({\n ...col,\n origin: DataCubeQuerySnapshotColumnOrigin.SOURCE,\n }));\n // leafExtendedColumns: DataCubeQueryExtendedColumnSnapshot[] = [];\n // filter: ValueSpecification[0..1]; // TODO\n // renamedColumns: DataCubeQuerySnapshotRenamedColumn[] = [];\n // groupByColumns: DataCubeQuerySnapshotColumn[] = [];\n // groupByAggColumns: DataCubeQuerySnapshotAggregateColumn[] = [];\n // selectedColumns: DataCubeQuerySnapshotColumn[] = [];\n // pivotColumns: DataCubeQuerySnapshotColumn[] = [];\n // pivotAggColumns: DataCubeQuerySnapshotAggregateColumn[] = [];\n // castColumns: DataCubeQuerySnapshotColumn[] = [];\n // groupExtendedColumns: DataCubeQueryExtendedColumnSnapshot[] = [];\n // limit: number | undefined = undefined;\n // configuration: DataCubeConfiguration;\n // --------------------------------- LEAF EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FILTER ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- RENAME ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- SELECT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- PIVOT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- CAST ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- SORT ---------------------------------\n if (funcMap.sort) {\n const sortColumns = funcMap.sort.parameters[0];\n assertType(sortColumns, V1_Collection, `Can't process ${extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT)}(): columns cannot be extracted`);\n snapshot.sortColumns = sortColumns.values.map((col) => {\n try {\n assertType(col, V1_AppliedFunction);\n assertTrue(matchFunctionName(col.function, [\n DATA_CUBE_FUNCTIONS.ASC,\n DATA_CUBE_FUNCTIONS.DESC,\n ]));\n const direction = extractElementNameFromPath(col.function) === DATA_CUBE_FUNCTIONS.ASC\n ? DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n : DATA_CUBE_COLUMN_SORT_DIRECTION.DESCENDING;\n assertTrue(col.parameters.length === 1);\n assertType(col.parameters[0], V1_ClassInstance);\n assertType(col.parameters[0].value, V1_ColSpec);\n const name = col.parameters[0].value.name;\n const type = guaranteeNonNullable(columns.find((c) => c.name === name)).type;\n return { name, type, direction };\n }\n catch {\n throw new Error(`Can't process ${extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT)}(): column sort information cannot be extracted`);\n }\n });\n }\n // --------------------------------- LIMIT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FINALIZE ---------------------------------\n snapshot.columns = columns;\n return snapshot;\n}\nexport async function buildSnapshotFromQuery(baseQuery, engine) {\n let partialQuery;\n if (baseQuery.partialQuery) {\n try {\n partialQuery = await engine.parseQuery(baseQuery.partialQuery);\n }\n catch (error) {\n assertErrorThrown(error);\n throw new Error(`Can't parse partial query [${baseQuery.partialQuery}]: ${error.message}`);\n }\n }\n else {\n partialQuery = undefined;\n }\n let sourceQuery;\n try {\n sourceQuery = await engine.parseQuery(baseQuery.source.query);\n }\n catch (error) {\n assertErrorThrown(error);\n throw new Error(`Can't parse source query [${baseQuery.source.query}]: ${error.message}`);\n }\n const snapshot = validateAndBuildBaseSnapshot(baseQuery, {\n partialQuery,\n sourceQuery,\n });\n return snapshot;\n}\n//# sourceMappingURL=DataCubeQueryAnalyzer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { flowResult } from 'mobx';\nimport { DataCubeGridState } from './grid/DataCubeGridState.js';\nimport { DataCubeEditorState } from './editor/DataCubeEditorState.js';\nimport { ActionState, assertErrorThrown } from '@finos/legend-shared';\nimport { DataCubeEngine } from './core/DataCubeEngine.js';\nimport { DataCubeQuerySnapshotManager } from './core/DataCubeQuerySnapshotManager.js';\nimport { buildSnapshotFromQuery } from './core/DataCubeQueryAnalyzer.js';\nexport class DataCubeState {\n editorStore;\n applicationStore;\n engine;\n snapshotManager;\n grid;\n editor;\n initState = ActionState.create();\n baseQuery;\n constructor(editorStore) {\n this.editorStore = editorStore;\n this.applicationStore = editorStore.applicationStore;\n this.engine = new DataCubeEngine(this.editorStore.client);\n // NOTE: snapshot manager must be instantiated before subscribers\n this.snapshotManager = new DataCubeQuerySnapshotManager(this);\n this.grid = new DataCubeGridState(this);\n this.editor = new DataCubeEditorState(this);\n }\n async initialize() {\n this.initState.inProgress();\n try {\n await flowResult(this.grid.initialize());\n this.snapshotManager.registerSubscriber(this.grid);\n this.snapshotManager.registerSubscriber(this.editor);\n this.baseQuery = await this.engine.getBaseQuery();\n const initialSnapshot = await buildSnapshotFromQuery(this.baseQuery, this.engine);\n this.snapshotManager.broadcastSnapshot(initialSnapshot);\n this.initState.complete();\n }\n catch (error) {\n assertErrorThrown(error);\n this.initState.fail();\n }\n }\n}\n//# sourceMappingURL=DataCubeState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { REPLServerClient } from '../../server/REPLServerClient.js';\nimport { NetworkClient } from '@finos/legend-shared';\nimport { makeObservable, observable } from 'mobx';\nimport { DataCubeState } from './DataCubeState.js';\nexport class REPLStore {\n applicationStore;\n client;\n // TODO: when we support multi-view, we would need to support multiple states\n dataCubeState;\n constructor(applicationStore) {\n makeObservable(this, {\n dataCubeState: observable,\n });\n this.applicationStore = applicationStore;\n this.client = new REPLServerClient(new NetworkClient({\n baseUrl: this.applicationStore.config.useDynamicREPLServer\n ? window.location.origin +\n this.applicationStore.config.baseAddress.replace('/repl/', '')\n : this.applicationStore.config.replUrl,\n }));\n this.dataCubeState = new DataCubeState(this);\n }\n}\n//# sourceMappingURL=DataCubeStore.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext, useContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { REPLStore } from '../stores/dataCube/DataCubeStore.js';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { useApplicationStore } from '@finos/legend-application';\nconst REPLStoreContext = createContext(undefined);\nexport const REPLStoreProvider = ({ children, }) => {\n const applicationStore = useApplicationStore();\n const store = useLocalObservable(() => new REPLStore(applicationStore));\n return (_jsx(REPLStoreContext.Provider, { value: store, children: children }));\n};\nexport const useREPLStore = () => guaranteeNonNullable(useContext(REPLStoreContext), `Can't find REPL store in context`);\nexport const withREPLStore = (WrappedComponent) => function WithREPLStore() {\n return (_jsx(REPLStoreProvider, { children: _jsx(WrappedComponent, {}) }));\n};\n//# sourceMappingURL=REPLStoreProvider.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { LicenseManager } from '@ag-grid-enterprise/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nimport { MenuModule } from '@ag-grid-enterprise/menu';\nimport { AgGridReact } from '@ag-grid-community/react';\nimport { useEffect } from 'react';\n// NOTE: This is a workaround to prevent ag-grid license key check from flooding the console screen\n// with its stack trace in Chrome.\n// We MUST NEVER completely surpress this warning, else it's a violation of the ag-grid license\nconst __INTERNAL__original_console_error = console.error; // eslint-disable-line no-console\n// eslint-disable-next-line no-process-env\nif (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error = (message, ...optionalParams) => {\n console.log(message); // eslint-disable-line no-console\n };\n}\nexport const DataCubeGrid = observer((props) => {\n const { editorStore } = props;\n const dataCubeState = editorStore.dataCubeState;\n useEffect(() => {\n if (dataCubeState.grid.clientLicenseKey) {\n LicenseManager.setLicenseKey(dataCubeState.grid.clientLicenseKey);\n }\n }, [dataCubeState.grid.clientLicenseKey]);\n return (_jsx(_Fragment, { children: _jsx(AgGridReact, { rowGroupPanelShow: \"always\", suppressBrowserResizeObserver: true, suppressScrollOnNewData: true, alwaysMultiSort: true, rowModelType: \"serverSide\", serverSideDatasource: dataCubeState.grid.clientDataSource, suppressAggFuncInHeader: true, suppressServerSideInfiniteScroll: true, modules: [\n // community\n ClientSideRowModelModule,\n // enterprise\n ServerSideRowModelModule,\n RowGroupingModule,\n MenuModule,\n ], onGridReady: (params) => {\n dataCubeState.grid.configureClient(params.api);\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'development') {\n console.error = __INTERNAL__original_console_error; // eslint-disable-line no-console\n }\n }, className: \"ag-theme-balham\" }) }));\n});\n//# sourceMappingURL=DataCubeGrid.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useRef, useEffect, forwardRef, } from 'react';\nimport { CaretDownIcon, TimesIcon, CircleNotchIcon } from '../icon/Icon.js';\nimport { FixedSizeList } from 'react-window';\nimport {} from '@finos/legend-shared';\n/**\n * Previously, these exports rely on ES module interop to expose `default` export\n * properly. But since we use `ESM` for Typescript resolution now, we lose this\n * so we have to workaround by importing these and re-export them from CJS\n *\n * TODO: remove these when the package properly work with Typescript's nodenext\n * module resolution\n *\n * @workaround ESM\n * See https://github.com/microsoft/TypeScript/issues/49298\n */\nimport { default as ReactSelect } from './CJS__ReactSelect.cjs';\nimport { clsx } from '../utils/ComponentUtils.js';\nexport const createFilter = ReactSelect.Select.createFilter;\n// Create props for buttons within selector input option to ensure\n// we don't trigger selector dropdown menu when clicking on these buttons\n// NOTE: react-selector uses `mousedown` event instead of `onclick`\n// See https://stackoverflow.com/a/55663995\nexport const getSelectorInputOptionEmbeddedButtonProps = () => ({\n onMouseDown: (event) => event.stopPropagation(),\n});\n/**\n * This custom list component uses virtualization from `react-window` to help improve performance of\n * `react-select` with large list\n * See https://github.com/bvaughn/react-window/issues/83\n * See https://react-window.now.sh/#/examples/list/fixed-size\n */\nconst CustomMenuList = (props) => {\n const { options, children, getValue, selectProps } = props;\n // Get row height in pixel since `react-window` does not support `rem`\n // See https://stackoverflow.com/questions/45001097/convert-rem-to-px-without-reflow\n let rowHeight = selectProps.optionCustomization?.rowHeight ??\n parseInt(getComputedStyle(document.documentElement).fontSize, 10) * 3.5;\n rowHeight = isNaN(rowHeight) ? 35 : rowHeight;\n const MAX_OPTIONS_LENGTH = 6;\n const [value] = getValue();\n const initialOffset = options.indexOf(value) * rowHeight;\n const scrollToIndex = children.length\n ? children.findIndex((child) => child.props.isFocused)\n : 0;\n // We use `scrollToItem` function to make it possible for react-select to focus on item within `react-window`\n // If we don't have this, if we search and use up/down arrow and once we get past the initial view-able values\n // the list doesn't auto scroll\n // See https://github.com/JedWatson/react-select/issues/2850\n const listRef = useRef(null);\n useEffect(() => {\n listRef.current?.scrollToItem(scrollToIndex);\n }, [scrollToIndex]);\n // Checking for the children list in case there is no match and the list height shrinks down to 0\n // which causes `react-window` to throw an error\n if (children.length) {\n return (_jsx(FixedSizeList, { className: selectProps.darkMode ? 'scrollbar--light selector-menu--dark' : '', ref: listRef, width: \"100%\", height: Math.min(children.length, MAX_OPTIONS_LENGTH) * rowHeight, itemCount: children.length, itemSize: rowHeight, initialScrollOffset: initialOffset, children: ({ index, style }) => (_jsx(\"div\", { style: style, className: \"selector-input__option-wrapper\", children: children[index] })) }));\n }\n // TODO: Maybe a no option thing here\n return (_jsx(\"div\", { className: `selector-menu--no-match ${selectProps.darkMode ? 'selector-menu--dark' : ''}`, children: selectProps.noMatchMessage ?? 'No match found' }));\n};\nconst CustomOption = (props) => {\n const { children, selectProps } = props;\n return (_jsx(ReactSelect.SelectComponents.Option, { ...props, className: clsx(!selectProps.darkMode\n ? {\n 'selector-input__option': true,\n 'selector-input__option--is-focused': props.isFocused,\n 'selector-input__option--is-selected': props.isSelected,\n }\n : {\n 'selector-input--dark__option': true,\n 'selector-input--dark__option--is-focused': props.isFocused,\n 'selector-input--dark__option--is-selected': props.isSelected,\n }, {\n 'selector-input__option--custom': Boolean(selectProps.optionCustomization),\n }), children: children }));\n};\nexport const STYLE_PREFIX = 'selector-input';\nexport const STYLE_PREFIX__DARK = 'selector-input--dark';\nconst LoadingIndicator = () => (_jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__loading-indicator ${STYLE_PREFIX__DARK}__loading-indicator`, children: _jsx(CircleNotchIcon, {}) }));\nconst DropdownIndicator = () => (_jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__dropdown-indicator`, children: _jsx(CaretDownIcon, {}) }));\nconst ClearIndicator = (props) => {\n const { innerProps: { ref, ...innerProps }, } = props;\n return (_jsx(\"div\", { ...innerProps, ref: ref, children: _jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__clear-indicator`, children: _jsx(TimesIcon, {}) }) }));\n};\n// Enable edit of the selected tag\n// See https://github.com/JedWatson/react-select/issues/1558\nconst CustomInput = (props) => {\n // We need to pass the additional props this way because we're using an old\n // version of react-select where the InputProps interface doesn't include\n // many expected props that can be passed to the Input component.\n const additionalProps = {\n onPaste: props.selectProps.onPaste,\n placeholder: props.selectProps.inputPlaceholder,\n };\n return (_jsx(ReactSelect.Select.components.Input, { ...props, ...additionalProps, isHidden: false }));\n};\nexport const CustomSelectorInput = forwardRef(function CustomSelectorInput(props, ref) {\n const { allowCreating, noMatchMessage, disabled, components, className, darkMode, hasError, ...innerProps } = props;\n // Typescript cannot union the 2 types due to many dissimilarities, this goes on to confuse React.createElement\n // See https://github.com/Microsoft/TypeScript/issues/28631\n // See https://github.com/microsoft/TypeScript/issues/28768\n // The issue is addressed better here\n // See https://github.com/microsoft/TypeScript/issues/28795\n // And the root problem as mentioned\n // See https://github.com/microsoft/TypeScript/issues/7294\n //\n // NOTE: since we're using an outdated version of `react-select`, we would get type issue\n // when we update to `react@18`\n // See https://github.com/finos/legend-studio/issues/615\n const SelectComponent = (allowCreating\n ? ReactSelect.CreatableSelect.default\n : ReactSelect.Select.default);\n const stylePrefix = darkMode ? STYLE_PREFIX__DARK : STYLE_PREFIX;\n return (_jsx(SelectComponent\n // Make the menu always on top\n , { \n // Make the menu always on top\n styles: {\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n }),\n }, menuPortalTarget: document.body, \n // coercing a type for ref as we will eventually remove dependency on `react-select`\n // See https://github.com/finos/legend-studio/issues/615\n ref: ref, isDisabled: Boolean(disabled), className: clsx(stylePrefix, className, {\n 'selector-input--has-error': hasError,\n 'selector-input--custom': Boolean(props.optionCustomization),\n }), classNamePrefix: stylePrefix, components: {\n Option: CustomOption,\n ClearIndicator,\n DropdownIndicator,\n LoadingIndicator,\n MenuList: CustomMenuList,\n Input: CustomInput,\n ...components,\n }, ...innerProps, darkMode, noMatchMessage }));\n});\nexport const compareLabelFn = (a, b) => a.label.localeCompare(b.label);\n//# sourceMappingURL=CustomSelectorInput.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { PlusIcon, SearchIcon, TimesIcon, clsx, ChevronLeftIcon, ChevronRightIcon, CustomSelectorInput, } from '@finos/legend-art';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../../../stores/dataCube/DataCubeMetaModelConst.js';\nexport const DataCubeEditorSortPanel = observer((props) => {\n const { editorStore } = props;\n const sortState = editorStore.dataCubeState.editor.sort;\n const onAvailabeColumnsSearchTextChange = (event) => {\n sortState.setAvailableColumnsSearchText(event.target.value);\n };\n const onSelectedColumnsSearchTextChange = (event) => {\n sortState.setSelectedColumnsSearchText(event.target.value);\n };\n const clearAvailableColumnsSearchText = () => {\n sortState.setAvailableColumnsSearchText('');\n };\n const clearSelectedColumnsSearchText = () => {\n sortState.setSelectedColumnsSearchText('');\n };\n const sortOptions = Array.from(Object.values(DATA_CUBE_COLUMN_SORT_DIRECTION)).map((val) => ({\n label: val,\n value: val,\n }));\n const onAvailableColumnsSortOptionsChanged = (columnName) => (option) => {\n const column = sortState.availableColumns.find((col) => col.column.name === columnName);\n if (column) {\n column.setDirection(option.value);\n }\n };\n const onSelectedColumnsSortOptionsChanged = (columnName) => (option) => {\n const column = sortState.selectedColumns.find((col) => col.column.name === columnName);\n if (column) {\n column.setDirection(option.value);\n }\n };\n return (_jsx(\"div\", { className: \"repl__hpivot__sort__editor\", children: _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__header\", children: \"Sorts\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__description\", children: \"Available sort columns:\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__container\", children: [_jsx(\"div\", { className: \"query-builder-property-search-panel__header\", children: _jsxs(\"div\", { className: \"query-builder-property-search-panel__input__container\", children: [_jsx(\"input\", { className: clsx('query-builder-property-search-panel__input', {\n 'query-builder-property-search-panel__input--searching': sortState.availableColumnsSearchText,\n }), spellCheck: false, onChange: onAvailabeColumnsSearchTextChange, value: sortState.availableColumnsSearchText, placeholder: \"Search\" }), !sortState.availableColumnsSearchText ? (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"query-builder-property-search-panel__input__search__icon\", children: _jsx(SearchIcon, {}) }) })) : (_jsx(\"button\", { className: \"query-builder-property-search-panel__input__clear-btn\", tabIndex: -1, onClick: clearAvailableColumnsSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }) }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root\", onDoubleClick: () => sortState.addAllAvailableColumns(), children: [_jsx(PlusIcon, {}), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root__label\", children: \"All\" })] }), sortState.availableColumnsSearchResults.map((col) => (_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children__name\", onDoubleClick: () => sortState.addAvailableColumn(col.column.name), children: col.column.name }), _jsx(CustomSelectorInput, { className: \"repl__hpivot__sort__column__editor__available__columns__children__order\", options: sortOptions, onChange: onAvailableColumnsSortOptionsChanged(col.column.name), value: { label: col.direction, value: col.direction }, isClearable: false, darkMode: false })] }, col.column.name)))] })] })] }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__actions\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__action\", children: _jsxs(\"button\", { tabIndex: -1, \n // onClick={clearSearch}\n title: \"Add\", children: [\"Add\", _jsx(ChevronRightIcon, {})] }) }), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__action\", children: _jsxs(\"button\", { tabIndex: -1, \n // onClick={clearSearch}\n title: \"Remove\", children: [_jsx(ChevronLeftIcon, {}), \"Remove\"] }) })] }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__selected__columns\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__description\", children: \"Selected sort columns:\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__container\", children: [_jsx(\"div\", { className: \"query-builder-property-search-panel__header\", children: _jsxs(\"div\", { className: \"query-builder-property-search-panel__input__container\", children: [_jsx(\"input\", { className: clsx('query-builder-property-search-panel__input', {\n 'query-builder-property-search-panel__input--searching': sortState.selectedColumnsSearchText,\n }), spellCheck: false, onChange: onSelectedColumnsSearchTextChange, value: sortState.selectedColumnsSearchText, placeholder: \"Search\" }), !sortState.selectedColumnsSearchText ? (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"query-builder-property-search-panel__input__search__icon\", children: _jsx(SearchIcon, {}) }) })) : (_jsx(\"button\", { className: \"query-builder-property-search-panel__input__clear-btn\", tabIndex: -1, onClick: clearSelectedColumnsSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }) }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root\", onDoubleClick: () => sortState.addAllSelectedColumns(), children: [_jsx(PlusIcon, {}), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root__label\", children: \"All\" })] }), sortState.selectedColumnsSearchResults.map((col) => (_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children__name\", onDoubleClick: () => sortState.addSelectedColumn(col.column.name), children: col.column.name }), _jsx(CustomSelectorInput, { className: \"repl__hpivot__sort__column__editor__available__columns__children__order\", options: sortOptions, onChange: onSelectedColumnsSortOptionsChanged(col.column.name), value: { label: col.direction, value: col.direction }, isClearable: false, darkMode: false })] }, col.column.name)))] })] })] })] })] }) }));\n});\n//# sourceMappingURL=DataCubeEditorSortPanel.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { TimesIcon, clsx, BasePopover, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ModalHeaderActions, ModalTitle, } from '@finos/legend-art';\nimport { DATA_CUBE_EDITOR_TAB } from '../../../stores/dataCube/editor/DataCubeEditorState.js';\nimport { DataCubeEditorSortPanel } from './DataCubeEditorSortPanel.js';\nexport const PivotPanelEditor = observer((props) => {\n const { triggerElement, editorStore } = props;\n const dataCubeState = editorStore.dataCubeState;\n const applicationStore = editorStore.applicationStore;\n const closeEditor = () => {\n dataCubeState.editor.closePanel();\n };\n const selectedTab = dataCubeState.editor.currentTab;\n const tabOptions = [\n // DATA_CUBE_EDITOR_TAB.COLUMNS,\n DATA_CUBE_EDITOR_TAB.SORTS,\n // DATA_CUBE_EDITOR_TAB.HORIZONTAL_PIVOTS,\n // DATA_CUBE_EDITOR_TAB.VERTICAL_PIVOTS,\n // DATA_CUBE_EDITOR_TAB.GENERAL_PROPERTIES,\n // DATA_CUBE_EDITOR_TAB.COLUMN_PROPERTIES,\n ];\n const setSelectedTab = (tab) => {\n dataCubeState.editor.setCurrentTab(tab);\n };\n const onClickOk = () => {\n dataCubeState.editor.applyChanges();\n dataCubeState.editor.closePanel();\n };\n return (_jsx(BasePopover, { open: dataCubeState.editor.isPanelOpen, onClose: closeEditor, anchorEl: triggerElement, anchorOrigin: {\n vertical: 'center',\n horizontal: 'center',\n }, transformOrigin: {\n vertical: 'center',\n horizontal: 'center',\n }, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: \"editor-modal embedded-runtime-editor\", children: [_jsxs(ModalHeader, { children: [_jsx(ModalTitle, { title: \"cube properties\" }), _jsx(ModalHeaderActions, { children: _jsx(\"button\", { className: \"modal__header__action\", tabIndex: -1, onClick: closeEditor, children: _jsx(TimesIcon, {}) }) })] }), _jsx(ModalBody, { children: _jsxs(\"div\", { style: { height: '100%', width: '100%' }, children: [_jsx(\"div\", { className: \"panel__header uml-element-editor__tabs__header \", children: _jsx(\"div\", { className: \"uml-element-editor__tabs\", children: tabOptions.map((tab) => (_jsx(\"div\", { onClick: () => setSelectedTab(tab), className: clsx('uml-element-editor__tab', {\n 'uml-element-editor__tab--active': tab === selectedTab,\n }), children: tab }, tab))) }) }), selectedTab === DATA_CUBE_EDITOR_TAB.SORTS && (_jsx(DataCubeEditorSortPanel, { editorStore: editorStore }))] }) }), _jsx(ModalFooter, { className: \"repl__modal__footer\", children: _jsxs(\"div\", { className: \"search-modal__actions\", children: [_jsx(ModalFooterButton, { text: \"Ok\", onClick: onClickOk }), _jsx(ModalFooterButton, { text: \"Close\", onClick: closeEditor }), _jsx(ModalFooterButton, { text: \"Apply\", onClick: () => dataCubeState.editor.applyChanges() })] }) })] }) }));\n});\n//# sourceMappingURL=DataCubeEditor.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { useREPLStore } from '../REPLStoreProvider.js';\nimport { useEffect, useRef } from 'react';\nimport { DataCubeGrid } from './grid/DataCubeGrid.js';\nimport { PivotPanelEditor } from './editor/DataCubeEditor.js';\nimport { useApplicationStore } from '@finos/legend-application';\nexport const DataCube = observer(() => {\n const dataCubeStore = useREPLStore();\n const applicationStore = useApplicationStore();\n const dataCubeState = dataCubeStore.dataCubeState;\n const pivotPanelButtonRef = useRef(null);\n useEffect(() => {\n dataCubeState.initialize().catch(applicationStore.alertUnhandledError);\n }, [dataCubeState, applicationStore]);\n return (_jsxs(\"div\", { className: \"repl\", children: [_jsx(\"div\", { className: \"repl__header\", children: _jsxs(\"div\", { className: \"repl__header__content\", children: [_jsx(\"div\", { className: \"repl__header__content__title\", children: \"Legend DataCube\" }), _jsx(\"div\", { className: \"repl__header__actions\" })] }) }), _jsx(\"div\", { className: \"repl__content\", children: _jsx(DataCubeGrid, { editorStore: dataCubeStore }) }), _jsxs(\"div\", { className: \"repl__footer\", children: [_jsx(\"div\", { className: \"repl__footer__pivot\", ref: pivotPanelButtonRef, onClick: () => dataCubeState.editor.openPanel(), children: \"Pivot\" }), _jsx(\"div\", { className: \"repl__footer__filter\", children: \"Filter\" }), dataCubeState.editor.isPanelOpen && (_jsx(PivotPanelEditor, { editorStore: dataCubeStore, triggerElement: pivotPanelButtonRef.current }))] })] }));\n});\n//# sourceMappingURL=DataCube.js.map","import { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { ApplicationComponentFrameworkProvider } from './ApplicationComponentFrameworkProvider.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { useApplicationPlatform } from './ApplicationPlatformProvider.js';\nexport const ApplicationFrameworkProvider = observer((props) => {\n const { children } = props;\n const platform = useApplicationPlatform();\n const applicationStore = useApplicationStore();\n useEffect(() => {\n applicationStore\n .initialize(platform)\n .catch(applicationStore.alertUnhandledError);\n }, [applicationStore, platform]);\n if (!applicationStore.initState.hasSucceeded) {\n return _jsx(_Fragment, {});\n }\n // TODO: would be great if we can have <React.StrictMode> here but since Mobx React is not ready for\n // concurrency yet, we would have to wait\n // See https://github.com/mobxjs/mobx/issues/2526\n return (_jsx(ApplicationComponentFrameworkProvider, { children: children }));\n});\n//# sourceMappingURL=ApplicationFrameworkProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class LegendREPLBaseStore {\n applicationStore;\n pluginManager;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.pluginManager = applicationStore.pluginManager;\n }\n}\n//# sourceMappingURL=LegendREPLBaseStore.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { ApplicationFrameworkProvider, useApplicationStore, } from '@finos/legend-application';\nimport { LegendREPLBaseStore, } from '../stores/LegendREPLBaseStore.js';\nexport const useLegendREPLApplicationStore = () => useApplicationStore();\nconst LegendREPLBaseStoreContext = createContext(undefined);\nconst LegendREPLBaseStoreProvider = ({ children }) => {\n const applicationStore = useLegendREPLApplicationStore();\n const store = useLocalObservable(() => new LegendREPLBaseStore(applicationStore));\n return (_jsx(LegendREPLBaseStoreContext.Provider, { value: store, children: children }));\n};\nexport const LegendREPLFrameworkProvider = ({ children }) => (_jsx(ApplicationFrameworkProvider, { children: _jsx(LegendREPLBaseStoreProvider, { children: children }) }));\n//# sourceMappingURL=LegendREPLFrameworkProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BrowserEnvironmentProvider, Route, Switch, } from '@finos/legend-application/browser';\nimport { DataCube } from './dataCube/DataCube.js';\nimport { LegendREPLFrameworkProvider } from './LegendREPLFrameworkProvider.js';\nimport { observer } from 'mobx-react-lite';\nimport { withREPLStore } from './REPLStoreProvider.js';\nexport const LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN = Object.freeze({\n DATA_CUBE: `/dataCube`,\n});\nexport const LegendREPLRouter = withREPLStore(observer(() => (_jsx(\"div\", { className: \"app\", children: _jsx(Switch, { children: _jsx(Route, { exact: true, path: [LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN.DATA_CUBE], component: \n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n DataCube }) }) }))));\nexport const LegendREPLWebApplication = (props) => {\n const { baseUrl } = props;\n return (_jsx(BrowserEnvironmentProvider, { baseUrl: baseUrl, children: _jsx(LegendREPLFrameworkProvider, { children: _jsx(LegendREPLRouter, {}) }) }));\n};\n//# sourceMappingURL=LegendREPLApplication.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LegendApplicationPlugin } from '@finos/legend-application';\nexport class LegendREPLApplicationPlugin extends LegendApplicationPlugin {\n /**\n * This helps to better type-check for this empty abtract type\n * See https://github.com/finos/legend-studio/blob/master/docs/technical/typescript-usage.md#understand-typescript-structual-type-system\n */\n _$nominalTypeBrand;\n install(pluginManager) {\n pluginManager.registerApplicationPlugin(this);\n }\n}\n//# sourceMappingURL=LegendREPLApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var PURE_GRAMMAR_TOKEN;\n(function (PURE_GRAMMAR_TOKEN) {\n PURE_GRAMMAR_TOKEN[\"WHITESPACE\"] = \"\";\n PURE_GRAMMAR_TOKEN[\"KEYWORD\"] = \"keyword\";\n PURE_GRAMMAR_TOKEN[\"IDENTIFIER\"] = \"identifier\";\n PURE_GRAMMAR_TOKEN[\"OPERATOR\"] = \"operator\";\n PURE_GRAMMAR_TOKEN[\"DELIMITER\"] = \"delimiter\";\n PURE_GRAMMAR_TOKEN[\"PARSER\"] = \"parser\";\n PURE_GRAMMAR_TOKEN[\"NUMBER\"] = \"number\";\n PURE_GRAMMAR_TOKEN[\"DATE\"] = \"date\";\n PURE_GRAMMAR_TOKEN[\"COLOR\"] = \"color\";\n PURE_GRAMMAR_TOKEN[\"PACKAGE\"] = \"package\";\n PURE_GRAMMAR_TOKEN[\"STRING\"] = \"string\";\n PURE_GRAMMAR_TOKEN[\"COMMENT\"] = \"comment\";\n PURE_GRAMMAR_TOKEN[\"LANGUAGE_STRUCT\"] = \"language-struct\";\n PURE_GRAMMAR_TOKEN[\"MULTIPLICITY\"] = \"multiplicity\";\n PURE_GRAMMAR_TOKEN[\"GENERICS\"] = \"generics\";\n PURE_GRAMMAR_TOKEN[\"PROPERTY\"] = \"property\";\n PURE_GRAMMAR_TOKEN[\"PARAMETER\"] = \"parameter\";\n PURE_GRAMMAR_TOKEN[\"VARIABLE\"] = \"variable\";\n PURE_GRAMMAR_TOKEN[\"TYPE\"] = \"type\";\n PURE_GRAMMAR_TOKEN[\"INVALID\"] = \"invalid\";\n})(PURE_GRAMMAR_TOKEN || (PURE_GRAMMAR_TOKEN = {}));\n//# sourceMappingURL=PureLanguage.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNonNullableEntry, isNonNullable, isString, } from '@finos/legend-shared';\nconst parseVSCodeTheme = (rawData) => {\n const rules = [];\n rawData.tokenColors.forEach((tokenColor) => {\n if (!tokenColor.settings) {\n return;\n }\n let scopes = [];\n if (isString(tokenColor.scope)) {\n scopes = tokenColor.scope\n .replace(/^[,]+/, '')\n .replace(/[,]+$/, '')\n .split(',')\n .map((scope) => scope.trim());\n }\n else if (Array.isArray(tokenColor.scope)) {\n scopes = tokenColor.scope;\n }\n else {\n scopes = [''];\n }\n const baseRule = {};\n if (tokenColor.settings.foreground &&\n isString(tokenColor.settings.foreground)) {\n baseRule.foreground = tokenColor.settings.foreground;\n }\n if (tokenColor.settings.background &&\n isString(tokenColor.settings.background)) {\n baseRule.background = tokenColor.settings.background;\n }\n if (tokenColor.settings.fontStyle &&\n isString(tokenColor.settings.fontStyle)) {\n baseRule.fontStyle = tokenColor.settings.fontStyle;\n }\n scopes.forEach((scope) => {\n if (isNonNullable(scope) || !Object.keys(baseRule).length) {\n return;\n }\n const rule = {\n ...baseRule,\n token: scope,\n };\n rules.push(rule);\n });\n });\n const colors = {};\n Object.entries(rawData.colors).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n if (value.length) {\n colors[key] = getNonNullableEntry(value, 0);\n }\n }\n else {\n colors[key] = value;\n }\n });\n return {\n base: 'vs-dark',\n inherit: true,\n rules: rules,\n colors,\n };\n};\nexport const buildCodeEditorTheme = (vscodeThemeData, baseTheme, colorsOverride, rulesOverride) => {\n const baseThemeData = parseVSCodeTheme(vscodeThemeData);\n return {\n ...baseThemeData,\n base: baseTheme,\n colors: { ...baseThemeData.colors, ...colorsOverride },\n rules: [...baseThemeData.rules, ...rulesOverride],\n };\n};\n//# sourceMappingURL=MonacoEditorThemeUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PURE_GRAMMAR_TOKEN } from './PureLanguage.js';\nimport { buildCodeEditorTheme } from './themes/MonacoEditorThemeUtils.js';\nimport SOLARIZED_DARK_THEME_DATA from './themes/solarized-dark-color-theme.json' assert { type: 'json' };\nimport GITHUB_DARK_THEME_DATA from './themes/Github-Theme-dark.json' assert { type: 'json' };\nimport GITHUB_DARK_DIMMED_THEME_DATA from './themes/Github-Theme-dark-dimmed.json' assert { type: 'json' };\nimport MATERIAL_DEFAULT_THEME_DATA from './themes/Material-Theme-Default.json' assert { type: 'json' };\nimport MATERIAL_DARKER_THEME_DATA from './themes/Material-Theme-Darker.json' assert { type: 'json' };\nimport ONE_DARK_PRO_THEME_DATA from './themes/OneDark-Pro.json' assert { type: 'json' };\nimport ONE_DARK_PRO_DARKER_THEME_DATA from './themes/OneDark-Pro-darker.json' assert { type: 'json' };\nconst BASE_PURE_LANGUAGE_COLOR_TOKENS = [\n // NOTE: `monaco-editor` only accepts HEX values, not CSS variables\n { token: PURE_GRAMMAR_TOKEN.IDENTIFIER, foreground: 'dcdcaa' },\n { token: PURE_GRAMMAR_TOKEN.NUMBER, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.DATE, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.COLOR, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.PACKAGE, foreground: '808080' },\n { token: PURE_GRAMMAR_TOKEN.PARSER, foreground: 'c586c0' },\n { token: PURE_GRAMMAR_TOKEN.LANGUAGE_STRUCT, foreground: 'c586c0' },\n { token: PURE_GRAMMAR_TOKEN.MULTIPLICITY, foreground: '2d796b' },\n { token: PURE_GRAMMAR_TOKEN.GENERICS, foreground: '2d796b' },\n { token: PURE_GRAMMAR_TOKEN.PROPERTY, foreground: '9cdcfe' },\n { token: PURE_GRAMMAR_TOKEN.PARAMETER, foreground: '9cdcfe' },\n { token: PURE_GRAMMAR_TOKEN.VARIABLE, foreground: '4fc1ff' },\n { token: PURE_GRAMMAR_TOKEN.TYPE, foreground: '3dc9b0' },\n { token: `${PURE_GRAMMAR_TOKEN.STRING}.escape`, foreground: 'd7ba7d' },\n];\nexport var CODE_EDITOR_THEME;\n(function (CODE_EDITOR_THEME) {\n CODE_EDITOR_THEME[\"DEFAULT_DARK\"] = \"default-dark\";\n CODE_EDITOR_THEME[\"GITHUB_DARK\"] = \"github-dark\";\n CODE_EDITOR_THEME[\"GITHUB_DARK_DIMMED\"] = \"github-dark-dimmed\";\n CODE_EDITOR_THEME[\"SOLARIZED_DARK\"] = \"solarized-dark\";\n CODE_EDITOR_THEME[\"ONE_DARK_PRO\"] = \"one-dark-pro\";\n CODE_EDITOR_THEME[\"ONE_DARK_PRO_DARKER\"] = \"one-dark-pro-darker\";\n CODE_EDITOR_THEME[\"MATERIAL_DEFAULT\"] = \"material-default\";\n CODE_EDITOR_THEME[\"MATERIAL_DARKER\"] = \"material-darker\";\n // default themes in Monaco editor\n // See https://github.com/microsoft/vscode/blob/main/src/vs/editor/standalone/common/themes.ts\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_LIGHT\"] = \"vs\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_DARK\"] = \"vs-dark\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_HC_BLACK\"] = \"hc-black\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_HC_LIGHT\"] = \"hc-light\";\n})(CODE_EDITOR_THEME || (CODE_EDITOR_THEME = {}));\nexport const DEFAULT_DARK_THEME = {\n base: 'vs-dark',\n inherit: true,\n colors: {},\n rules: [\n ...BASE_PURE_LANGUAGE_COLOR_TOKENS,\n // NOTE: correct a problem with syntax highlighting of string in SQL\n { token: 'string.sql', foreground: 'ce9178' },\n { token: 'white.sql', foreground: 'd4d4d4' },\n { token: 'identifier.sql', foreground: 'd4d4d4' },\n { token: 'operator.sql', foreground: 'd4d4d4' },\n ],\n};\nexport const SOLARIZED_DARK_THEME = buildCodeEditorTheme(SOLARIZED_DARK_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const GITHUB_DARK_THEME = buildCodeEditorTheme(GITHUB_DARK_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const GITHUB_DARK_DIMMED_THEME = buildCodeEditorTheme(GITHUB_DARK_DIMMED_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const MATERIAL_DEFAULT_THEME = buildCodeEditorTheme(MATERIAL_DEFAULT_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const MATERIAL_DARKER_THEME = buildCodeEditorTheme(MATERIAL_DARKER_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const ONE_DARK_PRO_THEME = buildCodeEditorTheme(ONE_DARK_PRO_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const ONE_DARK_PRO_DARKER_THEME = buildCodeEditorTheme(ONE_DARK_PRO_DARKER_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\n//# sourceMappingURL=CodeEditorTheme.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT, DEFAULT_MONOSPACED_FONT_FAMILY, } from '@finos/legend-application';\nimport { LogEvent } from '@finos/legend-shared';\nimport { editor as monacoEditorAPI, KeyCode, KeyMod, MarkerSeverity, } from 'monaco-editor';\nimport { CODE_EDITOR_THEME, DEFAULT_DARK_THEME, GITHUB_DARK_DIMMED_THEME, GITHUB_DARK_THEME, MATERIAL_DARKER_THEME, MATERIAL_DEFAULT_THEME, ONE_DARK_PRO_DARKER_THEME, ONE_DARK_PRO_THEME, SOLARIZED_DARK_THEME, } from './CodeEditorTheme.js';\n/**\n * Normally `monaco-editor` worker disposes after 5 minutes staying idle, but we fasten\n * this pace just in case the usage of the editor causes memory-leak somehow\n */\nexport const disposeCodeEditor = (editor) => {\n editor.dispose();\n // NOTE: just to be sure, we dispose the model after disposing the editor\n editor.getModel()?.dispose();\n};\nexport const disposeDiffCodeEditor = (editor) => {\n editor.dispose();\n editor.getOriginalEditor().getModel()?.dispose();\n editor.getModifiedEditor().getModel()?.dispose();\n};\n/**\n * Get the text value with LF line ending.\n * This is needed since if there are CR `\\r` characters in the text input\n * (e.g. users of Windows doing copy/paste)\n * the default mode of `monaco-editor` is `TextDefined` which means if the text\n * contains CR character(s), it will automatically be treated as CRLF. As such, we want\n * an utility method to extract the text value with line ending option LF\n * to force omission of CR characters\n * See https://github.com/finos/legend-studio/issues/608\n */\nexport const getCodeEditorValue = (editor) => editor.getModel()?.getValue(monacoEditorAPI.EndOfLinePreference.LF) ?? '';\nexport const getBaseCodeEditorOptions = () => ({\n contextmenu: false,\n copyWithSyntaxHighlighting: false,\n // NOTE: These following font options are needed (and CSS font-size option `.monaco-editor * { font-size: ... }` as well)\n // in order to make the editor appear properly on multiple platform, the ligatures option is needed for Mac to display properly\n // otherwise the cursor position relatively to text would be off\n // Another potential cause for this misaligment is that the fonts are being lazy-loaded and made available after `monaco-editor`\n // calculated the font-width, for this, we can use `remeasureFonts`, but our case here, `fontLigatures: true` seems\n // to do the trick\n // See https://github.com/microsoft/monaco-editor/issues/392\n fontSize: 14,\n // Enforce a fixed font-family to make cross platform display consistent (i.e. Mac defaults to use `Menlo` which is bigger than\n // `Consolas` on Windows, etc.)\n fontFamily: 'Roboto Mono',\n // Enable font ligature: glyphs which combine the shapes of certain sequences of characters into a new form that makes for\n // a more harmonious reading experience.\n fontLigatures: true,\n // Make sure hover or widget shown near boundary are not truncated by setting their position to `fixed`\n fixedOverflowWidgets: true,\n detectIndentation: false, // i.e. so we can force tab-size\n tabSize: 2,\n // The typing is currently not correct for `bracketPairColorization`, until this is fixed, we will remove the cast\n // See https://github.com/microsoft/monaco-editor/issues/3013\n 'bracketPairColorization.enabled': false,\n automaticLayout: true,\n});\nexport const getBaseConsoleOptions = () => ({\n ...getBaseCodeEditorOptions(),\n fontSize: 12,\n extraEditorClassName: 'monaco-editor--small-font',\n readOnly: true,\n glyphMargin: false,\n folding: false,\n lineNumbers: 'off',\n lineDecorationsWidth: 10,\n lineNumbersMinChars: 0,\n minimap: {\n enabled: false,\n },\n guides: {\n bracketPairs: false,\n bracketPairsHorizontal: false,\n highlightActiveBracketPair: false,\n indentation: false,\n highlightActiveIndentation: false,\n },\n renderLineHighlight: 'none',\n});\nexport const moveCursorToPosition = (editor, position) => {\n if (!editor.hasTextFocus()) {\n editor.focus();\n } // focus the editor first so that it can shows the cursor\n editor.revealPositionInCenter(position, 0);\n editor.setPosition(position);\n};\nconst INTERNAL__DUMMY_PROBLEM_MARKER_OWNER = 'dummy_problem_marker_owner';\nexport const setErrorMarkers = (editorModel, errors, ownerId) => {\n monacoEditorAPI.setModelMarkers(editorModel, ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER, errors.map((error) => ({\n startLineNumber: error.startLineNumber,\n startColumn: error.startColumn,\n endLineNumber: error.endLineNumber,\n endColumn: error.endColumn + 1, // add a 1 to endColumn as monaco editor range is not inclusive\n // NOTE: when the message is empty, no error tooltip is shown, we want to avoid this\n message: error.message === '' ? '(no error message)' : error.message,\n severity: MarkerSeverity.Error,\n })));\n};\nexport const setWarningMarkers = (editorModel, warnings, ownerId) => {\n monacoEditorAPI.setModelMarkers(editorModel, ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER, warnings.map((warning) => ({\n startLineNumber: warning.startLineNumber,\n startColumn: warning.startColumn,\n endColumn: warning.endColumn,\n endLineNumber: warning.endLineNumber,\n message: warning.message === '' ? '(no warning message)' : warning.message,\n severity: MarkerSeverity.Warning,\n })));\n};\nexport const clearMarkers = (ownerId) => {\n monacoEditorAPI.removeAllMarkers(ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER);\n};\n/**\n * This method eliminates CR '\\r' character(s) in the provided text value.\n */\nexport const normalizeLineEnding = (val) => val.replace(/\\r/g, '');\n// We need to dynamically adjust the width of the line number gutter, otherwise as the document gets\n// larger, the left margin will start to shrink\n// See https://github.com/microsoft/monaco-editor/issues/2206\nexport const resetLineNumberGutterWidth = (editor) => {\n const currentValue = editor.getValue();\n editor.updateOptions({\n lineNumbersMinChars: Math.max(Math.floor(Math.log10(currentValue.split(/\\r\\n|\\r|\\n/g).length)) + 3, 5),\n });\n};\nexport const configureCodeEditorComponent = async (applicationStore) => {\n /**\n * Since we use a custom fonts for text-editor, we want to make sure the font is loaded before any text-editor is opened\n * this is to ensure\n */\n const fontLoadFailureErrorMessage = `Monospaced font '${DEFAULT_MONOSPACED_FONT_FAMILY}' has not been loaded properly, code editor might not display properly`;\n await Promise.all([400, 700].map((weight) => document.fonts.load(`${weight} 1em ${DEFAULT_MONOSPACED_FONT_FAMILY}`)))\n .then(() => {\n if (document.fonts.check(`1em ${DEFAULT_MONOSPACED_FONT_FAMILY}`)) {\n monacoEditorAPI.remeasureFonts();\n }\n else {\n applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_SETUP__FAILURE), fontLoadFailureErrorMessage);\n }\n })\n .catch(() => applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_SETUP__FAILURE), fontLoadFailureErrorMessage));\n // override native hotkeys supported by monaco-editor\n // here we map these keys to a dummy command that would just dispatch the key combination\n // to the application keyboard shortcut service, effectively bypassing the command associated\n // with the native keybinding\n const OVERRIDE_DEFAULT_KEYBINDING_COMMAND = 'legend.code-editor.override-default-keybinding';\n monacoEditorAPI.registerCommand(OVERRIDE_DEFAULT_KEYBINDING_COMMAND, (accessor, ...args) => {\n applicationStore.keyboardShortcutsService.dispatch(args[0]);\n });\n const hotkeyMapping = [\n [KeyCode.F1, 'F1'], // show command center\n [KeyCode.F8, 'F8'], // show error\n [KeyCode.F9, 'F9'], // toggle debugger breakpoint\n [KeyMod.WinCtrl | KeyCode.KeyG, 'Control+KeyG'], // go-to line command\n [KeyMod.WinCtrl | KeyCode.KeyB, 'Control+KeyB'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyO, 'Control+KeyO'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyD, 'Control+KeyD'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyP, 'Control+KeyP'], // cursor move (core command)\n [KeyMod.Shift | KeyCode.F10, 'Shift+F10'], // show editor context menu\n [KeyMod.WinCtrl | KeyCode.F2, 'Control+F2'], // change all instances\n [KeyMod.WinCtrl | KeyCode.F12, 'Control+F12'], // go-to definition\n ];\n monacoEditorAPI.addKeybindingRules(hotkeyMapping.map(([nativeCodeEditorKeyBinding, keyCombination]) => ({\n keybinding: nativeCodeEditorKeyBinding,\n command: OVERRIDE_DEFAULT_KEYBINDING_COMMAND,\n commandArgs: keyCombination,\n })));\n // themes\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.DEFAULT_DARK, DEFAULT_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.SOLARIZED_DARK, SOLARIZED_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.GITHUB_DARK, GITHUB_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.GITHUB_DARK_DIMMED, GITHUB_DARK_DIMMED_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.MATERIAL_DEFAULT, MATERIAL_DEFAULT_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.MATERIAL_DARKER, MATERIAL_DARKER_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.ONE_DARK_PRO, ONE_DARK_PRO_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.ONE_DARK_PRO_DARKER, ONE_DARK_PRO_DARKER_THEME);\n};\nexport var CODE_EDITOR_LANGUAGE;\n(function (CODE_EDITOR_LANGUAGE) {\n CODE_EDITOR_LANGUAGE[\"TEXT\"] = \"plaintext\";\n CODE_EDITOR_LANGUAGE[\"PURE\"] = \"pure\";\n CODE_EDITOR_LANGUAGE[\"JSON\"] = \"json\";\n CODE_EDITOR_LANGUAGE[\"JAVA\"] = \"java\";\n CODE_EDITOR_LANGUAGE[\"MARKDOWN\"] = \"markdown\";\n CODE_EDITOR_LANGUAGE[\"SQL\"] = \"sql\";\n CODE_EDITOR_LANGUAGE[\"XML\"] = \"xml\";\n CODE_EDITOR_LANGUAGE[\"YAML\"] = \"yaml\";\n CODE_EDITOR_LANGUAGE[\"GRAPHQL\"] = \"graphql\";\n})(CODE_EDITOR_LANGUAGE || (CODE_EDITOR_LANGUAGE = {}));\n//# sourceMappingURL=CodeEditorUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DATE_FORMAT, ELEMENT_PATH_DELIMITER, MULTIPLICITY_INFINITE, MULTIPLICITY_RANGE_OPERATOR, PRIMITIVE_TYPE, } from '../MetaModelConst.js';\nimport { PrimitiveType } from '../metamodel/pure/packageableElements/domain/PrimitiveType.js';\nimport { Enumeration } from '../metamodel/pure/packageableElements/domain/Enumeration.js';\nimport { formatDate } from '@finos/legend-shared';\nexport var PURE_ELEMENT_NAME;\n(function (PURE_ELEMENT_NAME) {\n PURE_ELEMENT_NAME[\"PROFILE\"] = \"Profile\";\n PURE_ELEMENT_NAME[\"CLASS\"] = \"Class\";\n PURE_ELEMENT_NAME[\"ENUMERATION\"] = \"Enum\";\n PURE_ELEMENT_NAME[\"MEASURE\"] = \"Measure\";\n PURE_ELEMENT_NAME[\"ASSOCIATION\"] = \"Association\";\n PURE_ELEMENT_NAME[\"FUNCTION\"] = \"function\";\n PURE_ELEMENT_NAME[\"MAPPING\"] = \"Mapping\";\n PURE_ELEMENT_NAME[\"FLAT_DATA\"] = \"FlatData\";\n PURE_ELEMENT_NAME[\"DATABASE\"] = \"Database\";\n PURE_ELEMENT_NAME[\"SERVICE\"] = \"Service\";\n PURE_ELEMENT_NAME[\"RUNTIME\"] = \"Runtime\";\n PURE_ELEMENT_NAME[\"CONNECTION\"] = \"Connection\";\n PURE_ELEMENT_NAME[\"FILE_GENERATION\"] = \"FileGeneration\";\n PURE_ELEMENT_NAME[\"GENERATION_SPECIFICATION\"] = \"GenerationSpecification\";\n PURE_ELEMENT_NAME[\"DATA_ELEMENT\"] = \"Data\";\n PURE_ELEMENT_NAME[\"EXECUTION_ENVIRONMENT\"] = \"ExecutionEnvironment\";\n})(PURE_ELEMENT_NAME || (PURE_ELEMENT_NAME = {}));\nexport var PURE_CONNECTION_NAME;\n(function (PURE_CONNECTION_NAME) {\n PURE_CONNECTION_NAME[\"JSON_MODEL_CONNECTION\"] = \"JsonModelConnection\";\n PURE_CONNECTION_NAME[\"XML_MODEL_CONNECTION\"] = \"XmlModelConnection\";\n PURE_CONNECTION_NAME[\"MODEL_CHAIN_CONNECTION\"] = \"ModelChainConnection\";\n PURE_CONNECTION_NAME[\"RELATIONAL_DATABASE_CONNECTION\"] = \"RelationalDatabaseConnection\";\n PURE_CONNECTION_NAME[\"FLAT_DATA_CONNECTION\"] = \"FlatDataConnection\";\n})(PURE_CONNECTION_NAME || (PURE_CONNECTION_NAME = {}));\nexport var PURE_PARSER;\n(function (PURE_PARSER) {\n PURE_PARSER[\"PURE\"] = \"Pure\";\n PURE_PARSER[\"CONNECTION\"] = \"Connection\";\n PURE_PARSER[\"RUNTIME\"] = \"Runtime\";\n PURE_PARSER[\"MAPPING\"] = \"Mapping\";\n PURE_PARSER[\"SERVICE\"] = \"Service\";\n PURE_PARSER[\"FLATDATA\"] = \"FlatData\";\n PURE_PARSER[\"RELATIONAL\"] = \"Relational\";\n PURE_PARSER[\"GENERATION_SPECIFICATION\"] = \"GenerationSpecification\";\n PURE_PARSER[\"FILE_GENERATION_SPECIFICATION\"] = \"FileGeneration\";\n PURE_PARSER[\"DATA\"] = \"Data\";\n})(PURE_PARSER || (PURE_PARSER = {}));\nexport const generateMultiplicityString = (lowerBound, upperBound) => {\n if (lowerBound === upperBound) {\n return lowerBound.toString();\n }\n else if (lowerBound === 0 && upperBound === undefined) {\n return MULTIPLICITY_INFINITE;\n }\n return `${lowerBound}${MULTIPLICITY_RANGE_OPERATOR}${upperBound ?? MULTIPLICITY_INFINITE}`;\n};\nexport const generateDefaultParameterValueForType = (type, index) => {\n if (!type) {\n return `param${index}`;\n }\n if (type instanceof Enumeration) {\n return type.values.length !== 0\n ? `${type.path}.${type.values[0]?.name}`\n : `param${index}`;\n }\n else if (type instanceof PrimitiveType) {\n switch (type.name) {\n case PRIMITIVE_TYPE.BOOLEAN:\n return true;\n case PRIMITIVE_TYPE.FLOAT:\n case PRIMITIVE_TYPE.DECIMAL:\n return 0.0;\n case PRIMITIVE_TYPE.NUMBER:\n case PRIMITIVE_TYPE.INTEGER:\n return 0;\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.STRICTDATE:\n return `%${formatDate(new Date(), DATE_FORMAT)}`;\n case PRIMITIVE_TYPE.DATETIME:\n return `%${formatDate(new Date(), DATE_FORMAT)}T00:00:00`;\n case PRIMITIVE_TYPE.STRICTTIME:\n return `%00:00:00`;\n case PRIMITIVE_TYPE.STRING:\n return \"''\";\n default:\n return `param${index}`;\n }\n }\n // Other non-primitive types, e.g. Class\n return `param${index}`;\n};\nexport const generateFunctionCallString = (element) => {\n let lambdaString = '';\n if (element.parameters.length > 0) {\n for (let i = 0; i < element.parameters.length; i++) {\n const paramType = element.parameters[i]?.type.value;\n const separator = i !== element.parameters.length - 1 ? ', ' : '';\n lambdaString =\n lambdaString +\n generateDefaultParameterValueForType(paramType, i) +\n separator;\n }\n }\n return `${element.package?.path}${ELEMENT_PATH_DELIMITER}${element.functionName}(${lambdaString})`;\n};\nexport const generateFunctionPrettyName = (element, options) => `${options?.fullPath ? `${element.package?.path}${ELEMENT_PATH_DELIMITER}` : ''}${element.functionName}(${element.parameters\n .map((p) => !options?.notIncludeParamName\n ? `${p.name}: ${p.type.value.name}[${generateMultiplicityString(p.multiplicity.lowerBound, p.multiplicity.upperBound)}]`\n : `${p.type.value.name}[${generateMultiplicityString(p.multiplicity.lowerBound, p.multiplicity.upperBound)}]`)\n .join(', ')}): ${element.returnType.value.name}[${generateMultiplicityString(element.returnMultiplicity.lowerBound, element.returnMultiplicity.upperBound)}]`.replaceAll(/\\s*/gu, (val) => {\n if (options?.spacing) {\n return val;\n }\n return '';\n});\n//# sourceMappingURL=PureLanguageHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable prefer-named-capture-group */\nimport { PURE_ELEMENT_NAME, PURE_CONNECTION_NAME } from '@finos/legend-graph';\nimport { languages as monacoLanguagesAPI } from 'monaco-editor';\nimport { PURE_GRAMMAR_TOKEN } from './PureLanguage.js';\nimport { CODE_EDITOR_LANGUAGE } from './CodeEditorUtils.js';\n/**\n * The postfix to be added to all token types, i.e. identifier.pure, number.pure, etc.\n */\nconst PURE_GRAMMAR_TOKEN_POSTFIX = '.pure';\n// Taken from `monaco-languages` configuration for Java in order to do propert brace matching\n// See https://github.com/microsoft/monaco-languages/blob/master/src/java/java.ts\nconst configuration = {\n // NOTE: Pure identifier includes $ but not in the first position (as that is parsed as a variable)\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^`~!@#%^$&*()\\-=+[{\\]}\\\\|;:'\",.<>/?\\s][^`~!@#%^&*()\\-=+[{\\]}\\\\|;:'\",.<>/?\\s]*)/,\n comments: {\n lineComment: '//',\n blockComment: ['/*', '*/'],\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n { open: '<', close: '>' },\n { open: '<<', close: '>>' },\n ],\n folding: {\n markers: {\n start: new RegExp('^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))'),\n end: new RegExp('^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))'),\n },\n },\n};\n/**\n * Create new monarch definition to support syntax-highlighting\n * See https://microsoft.github.io/monaco-editor/monarch.html\n *\n * The way SQL monarch definition is organized is good and worth learning from\n * See https://github.com/microsoft/monaco-languages/blob/master/src/sql/sql.ts\n *\n * NOTE: using `monarch` only allows fairly very basic syntax-highlighting\n * to actually do full AST analysis, we might need something more serious like\n * using TextMate grammar which is used by VSCode itself\n * See https://github.com/microsoft/monaco-editor#faq\n * See https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide\n */\nconst generateLanguageMonarch = (extraKeywords) => \n// TODO: complete syntax-highlighter for core features like constraint, derived properties, etc.\n// TODO: add syntax highlighting for modules/plugins (come up with a plugin mechanism to do this).\n({\n defaultToken: 'invalid',\n tokenPostfix: PURE_GRAMMAR_TOKEN_POSTFIX,\n keywords: [\n ...extraKeywords,\n // relational\n 'Schema',\n 'Table',\n 'Join',\n 'View',\n 'primaryKey',\n 'groupBy',\n 'mainTable',\n // native\n 'let',\n 'extends',\n 'true',\n 'false',\n 'projects',\n // elements\n PURE_ELEMENT_NAME.CLASS,\n PURE_ELEMENT_NAME.ASSOCIATION,\n PURE_ELEMENT_NAME.ENUMERATION,\n PURE_ELEMENT_NAME.MEASURE,\n PURE_ELEMENT_NAME.PROFILE,\n PURE_ELEMENT_NAME.FUNCTION,\n PURE_ELEMENT_NAME.MAPPING,\n PURE_ELEMENT_NAME.RUNTIME,\n PURE_ELEMENT_NAME.CONNECTION,\n PURE_ELEMENT_NAME.FILE_GENERATION,\n PURE_ELEMENT_NAME.GENERATION_SPECIFICATION,\n PURE_ELEMENT_NAME.DATA_ELEMENT,\n // connections\n PURE_CONNECTION_NAME.JSON_MODEL_CONNECTION,\n PURE_CONNECTION_NAME.MODEL_CHAIN_CONNECTION,\n PURE_CONNECTION_NAME.XML_MODEL_CONNECTION,\n // mapping\n 'include',\n 'EnumerationMapping',\n 'Pure',\n 'AssociationMapping',\n 'XStore',\n 'AggregationAware',\n /**\n * @modularize\n * See https://github.com/finos/legend-studio/issues/65\n */\n PURE_ELEMENT_NAME.SERVICE,\n PURE_ELEMENT_NAME.FLAT_DATA,\n PURE_ELEMENT_NAME.DATABASE,\n PURE_CONNECTION_NAME.FLAT_DATA_CONNECTION,\n PURE_CONNECTION_NAME.RELATIONAL_DATABASE_CONNECTION,\n 'Relational',\n ],\n operators: [\n '=',\n '>',\n '<',\n '!',\n '~',\n '?',\n ':',\n '==',\n '<=',\n '>=',\n '&&',\n '||',\n '++',\n '--',\n '+',\n '-',\n '*',\n '/',\n '&',\n '|',\n '^',\n '%',\n '->',\n '#{',\n '}#',\n '@',\n '<<',\n '>>',\n ],\n languageStructs: ['import', 'native'],\n // common regular expressions to be used in tokenizer\n identifier: /[a-zA-Z_$][\\w$]*/,\n symbols: /[=><!~?:&|+\\-*/^%#@]+/,\n escapes: /\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n digits: /\\d+(_+\\d+)*/,\n octaldigits: /[0-7]+(_+[0-7]+)*/,\n binarydigits: /[0-1]+(_+[0-1]+)*/,\n hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,\n multiplicity: /\\[(?:[a-zA-Z0-9]+(?:\\.\\.(?:[a-zA-Z0-9]+|\\*|))?|\\*)\\]/,\n package: /(?:[\\w_]+::)+/,\n // NOTE: generics is a little tricky because in order to do it right, we have to\n // do some sort of bracket matching, but we just can use a simple tokenizer here\n // so to account for cases like `<Nil,Any|*>)->` `Function<{T[1]->Boolean[1]}>[1]`\n // we have to make sure the content does not contain any `:` or `.` characters\n // in order to avoid the accidental greedy match with inputs like\n // `function doSomething<T>(a: Function<T[1]->Boolean[1]>)`\n // nor we want to make sure the last character of the content is not `-` to avoid\n // accidentally matching `->` as the end of the generics\n generics: /(?:(?:<\\w+>)|(?:<[^:.@^()]+[^-]>))/,\n date: /%-?\\d+(?:-\\d+(?:-\\d+(?:T(?:\\d+(?::\\d+(?::\\d+(?:.\\d+)?)?)?)(?:[+-][0-9]{4})?)))/,\n time: /%\\d+(?::\\d+(?::\\d+(?:.\\d+)?)?)?/,\n tokenizer: {\n root: [\n // NOTE: since `monaco-editor` Monarch is only meant for tokenizing\n // and the need to highlight Pure syntax is more than just token-based,\n // but semantic/syntax-based we have to create these complex rules.\n // the things to note here is these are not meant to match multilines\n // and they must be placed before identifier rules since token matching\n // is run in order\n // See https://github.com/microsoft/monaco-editor/issues/316#issuecomment-273555698\n // See https://github.com/microsoft/monaco-editor/issues/571#issuecomment-342555050\n // See https://microsoft.github.io/monaco-editor/monarch.html\n { include: '@pure' },\n { include: '@date' },\n { include: '@color' },\n // parser markers\n [\n // NOTE: any leading whitespace to the section header is considered invalid syntax\n /^\\s*###[\\w]+/,\n PURE_GRAMMAR_TOKEN.PARSER,\n ],\n // identifiers and keywords\n [\n /(@identifier)/,\n {\n cases: {\n '@languageStructs': PURE_GRAMMAR_TOKEN.LANGUAGE_STRUCT,\n '@keywords': `${PURE_GRAMMAR_TOKEN.KEYWORD}.$0`,\n // function descriptor\n '([a-zA-Z_$][\\\\w$]*)_((\\\\w+_(([a-zA-Z0-9]+)|(\\\\$[a-zA-Z0-9]+_[a-zA-Z0-9]+\\\\$)))__)*(\\\\w+_(([a-zA-Z0-9]+)|(\\\\$[a-zA-Z0-9]+_[a-zA-Z0-9]+\\\\$)))_': PURE_GRAMMAR_TOKEN.TYPE,\n '@default': PURE_GRAMMAR_TOKEN.IDENTIFIER,\n },\n },\n ],\n // whitespace\n { include: '@whitespace' },\n // delimiters and operators\n [/[{}()[\\]]/, '@brackets'],\n [/[<>](?!@symbols)/, '@brackets'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': PURE_GRAMMAR_TOKEN.OPERATOR,\n '@default': PURE_GRAMMAR_TOKEN.IDENTIFIER,\n },\n },\n ],\n { include: '@number' },\n // delimiter: after number because of .\\d floats\n [/[;,.]/, PURE_GRAMMAR_TOKEN.DELIMITER],\n // strings\n // NOTE: including non-teminated string so as people type ', we can start showing them that they're working on a string\n [/'([^'\\\\]|\\\\.)*$/, `${PURE_GRAMMAR_TOKEN.STRING}.invalid`],\n [/'/, PURE_GRAMMAR_TOKEN.STRING, '@string'],\n { include: '@characters' },\n ],\n pure: [\n // type\n [/(@package\\*)/, [PURE_GRAMMAR_TOKEN.PACKAGE]], // import path\n [\n /(@package?)(@identifier)(@generics?)(\\s*)(@multiplicity)/,\n [\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.MULTIPLICITY,\n ],\n ],\n [\n /(@package)(@identifier)(@generics?)/,\n [\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n ],\n ],\n // special operators that uses type (e.g. constructor, cast)\n [\n /([@^])(\\s*)(@package?)(@identifier)(@generics?)(@multiplicity?)/,\n [\n `${PURE_GRAMMAR_TOKEN.TYPE}.operator`,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n PURE_GRAMMAR_TOKEN.MULTIPLICITY,\n ],\n ],\n // property / parameter\n [\n /(\\.\\s*)(@identifier)/,\n [PURE_GRAMMAR_TOKEN.DELIMITER, PURE_GRAMMAR_TOKEN.PROPERTY],\n ],\n [\n /(@identifier)(\\s*=)/,\n [PURE_GRAMMAR_TOKEN.PROPERTY, PURE_GRAMMAR_TOKEN.OPERATOR],\n ],\n [\n /(@identifier)(\\.)(@identifier)/,\n [\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.OPERATOR,\n PURE_GRAMMAR_TOKEN.PROPERTY,\n ],\n ], // could be: property chain, profile tag, and stereotype\n [\n /(@identifier)(\\s*:)/,\n [PURE_GRAMMAR_TOKEN.PARAMETER, PURE_GRAMMAR_TOKEN.OPERATOR],\n ],\n // variables\n [\n /(let)(\\s+)(@identifier)(\\s*=)/,\n [\n PURE_GRAMMAR_TOKEN.KEYWORD,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.VARIABLE,\n PURE_GRAMMAR_TOKEN.OPERATOR,\n ],\n ],\n [/(\\$@identifier)/, [`${PURE_GRAMMAR_TOKEN.VARIABLE}.reference`]],\n ],\n date: [\n [/(%latest)/, [`${PURE_GRAMMAR_TOKEN.DATE}.latest`]],\n [/(@date)/, [PURE_GRAMMAR_TOKEN.DATE]],\n [/(@time)/, [`${PURE_GRAMMAR_TOKEN.DATE}.time`]],\n ],\n color: [[/(#[0-9a-fA-F]{6})/, [PURE_GRAMMAR_TOKEN.COLOR]]],\n number: [\n [\n /(@digits)[eE]([-+]?(@digits))?[fFdD]?/,\n `${PURE_GRAMMAR_TOKEN.NUMBER}.float`,\n ],\n [\n /(@digits)\\.(@digits)([eE][-+]?(@digits))?[fFdD]?/,\n `${PURE_GRAMMAR_TOKEN.NUMBER}.float`,\n ],\n [/0[xX](@hexdigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.hex`],\n [/0(@octaldigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.octal`],\n [/0[bB](@binarydigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.binary`],\n [/(@digits)[fFdD]/, `${PURE_GRAMMAR_TOKEN.NUMBER}.float`],\n [/(@digits)[lL]?/, PURE_GRAMMAR_TOKEN.NUMBER],\n ],\n whitespace: [\n [/[ \\t\\r\\n]+/, PURE_GRAMMAR_TOKEN.WHITESPACE],\n [/\\/\\*\\*(?!\\/)/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@doc'],\n [/\\/\\*/, PURE_GRAMMAR_TOKEN.COMMENT, '@comment'],\n [/\\/\\/.*$/, PURE_GRAMMAR_TOKEN.COMMENT],\n ],\n comment: [\n [/[^/*]+/, PURE_GRAMMAR_TOKEN.COMMENT],\n // [/\\/\\*/, PURE_GRAMMAR_TOKEN.COMMENT, '@push' ], // nested comment not allowed :-(\n // [/\\/\\*/, ${PURE_GRAMMAR_TOKEN.COMMENT}.invalid` ], // this breaks block comments in the shape of /* //*/\n [/\\*\\//, PURE_GRAMMAR_TOKEN.COMMENT, '@pop'],\n [/[/*]/, PURE_GRAMMAR_TOKEN.COMMENT],\n ],\n // Identical copy of comment above, except for the addition of .doc\n doc: [\n [/[^/*]+/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`],\n // [/\\/\\*/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@push' ], // nested comment not allowed :-(\n [/\\/\\*/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc.invalid`],\n [/\\*\\//, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@pop'],\n [/[/*]/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`],\n ],\n string: [\n [/[^\\\\']+/, PURE_GRAMMAR_TOKEN.STRING],\n [/@escapes/, `${PURE_GRAMMAR_TOKEN.STRING}.escape`],\n [/\\\\./, `${PURE_GRAMMAR_TOKEN.STRING}.escape.invalid`],\n [/'/, PURE_GRAMMAR_TOKEN.STRING, '@pop'],\n ],\n characters: [\n [/'[^\\\\']'/, PURE_GRAMMAR_TOKEN.STRING],\n [\n /(')(@escapes)(')/,\n [\n PURE_GRAMMAR_TOKEN.STRING,\n `${PURE_GRAMMAR_TOKEN.STRING}.escape`,\n PURE_GRAMMAR_TOKEN.STRING,\n ],\n ],\n [/'/, `${PURE_GRAMMAR_TOKEN.STRING}.invalid`],\n ],\n },\n});\nexport function setupPureLanguageService(options) {\n monacoLanguagesAPI.register({ id: CODE_EDITOR_LANGUAGE.PURE });\n monacoLanguagesAPI.setLanguageConfiguration(CODE_EDITOR_LANGUAGE.PURE, configuration);\n monacoLanguagesAPI.setMonarchTokensProvider(CODE_EDITOR_LANGUAGE.PURE, generateLanguageMonarch(options?.extraKeywords ?? []));\n}\n//# sourceMappingURL=PureLanguageService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LegendREPLApplicationPlugin } from '../stores/LegendREPLApplicationPlugin.js';\nimport { configureCodeEditorComponent, setupPureLanguageService, } from '@finos/legend-lego/code-editor';\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nexport class Core_LegendREPLApplicationPlugin extends LegendREPLApplicationPlugin {\n static NAME = packageJson.extensions.applicationREPLPlugin;\n constructor() {\n super(Core_LegendREPLApplicationPlugin.NAME, packageJson.version);\n }\n getExtraApplicationSetups() {\n return [\n async (applicationStore) => {\n ModuleRegistry.registerModules([\n ClientSideRowModelModule,\n RowGroupingModule,\n ]);\n await configureCodeEditorComponent(applicationStore);\n setupPureLanguageService();\n },\n ];\n }\n}\n//# sourceMappingURL=Core_LegendREPLApplicationPlugin.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createRoot } from 'react-dom/client';\nimport { LegendApplication, ApplicationStoreProvider, Core_LegendApplicationPlugin, getApplicationRootElement, } from '@finos/legend-application';\nimport { LegendREPLApplicationConfig, } from './LegendREPLApplicationConfig.js';\nimport { LegendREPLPluginManager } from './LegendREPLPluginManager.js';\nimport { LegendREPLWebApplication } from '../components/LegendREPLApplication.js';\nimport { Core_LegendREPLApplicationPlugin } from '../components/Core_LegendREPLApplicationPlugin.js';\nexport class LegendREPL extends LegendApplication {\n static create() {\n const application = new LegendREPL(LegendREPLPluginManager.create());\n application.withBasePlugins([\n new Core_LegendApplicationPlugin(),\n new Core_LegendREPLApplicationPlugin(),\n ]);\n application.withBasePresets([]);\n return application;\n }\n async configureApplication(input) {\n return new LegendREPLApplicationConfig(input);\n }\n async loadApplication(applicationStore) {\n createRoot(getApplicationRootElement()).render(_jsx(ApplicationStoreProvider, { store: applicationStore, children: _jsx(LegendREPLWebApplication, { baseUrl: this.baseAddress }) }));\n }\n}\n//# sourceMappingURL=LegendREPL.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebConsole, } from '@finos/legend-shared';\nimport { LegendREPL } from './application/LegendREPL.js';\nimport { Core_LegendREPLApplicationPlugin } from './components/Core_LegendREPLApplicationPlugin.js';\nexport class LegendREPLWebApplication {\n static getPresetCollection() {\n return [];\n }\n static getPluginCollection() {\n return [new Core_LegendREPLApplicationPlugin(), new WebConsole()];\n }\n static run(baseUrl) {\n LegendREPL.create()\n .setup({ baseAddress: baseUrl })\n .withPresets(LegendREPLWebApplication.getPresetCollection())\n .withPlugins(LegendREPLWebApplication.getPluginCollection())\n .start()\n .catch((e) => {\n throw e;\n });\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LegendREPLWebApplication } from '@finos/legend-application-repl';\nimport '../lib/tailwind.css'; // eslint-disable-line @finos/legend-studio/no-cross-workspace-non-export-usage\nimport './index.scss';\n\n// Resolve baseUrl relatively for application to work in vscode code-server\nconst relativeBaseUrl = new URL('./', window.location.href).pathname;\nLegendREPLWebApplication.run(relativeBaseUrl);\n","\"use strict\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Previously, these exports rely on ES module interop to expose `default` export\n * properly. But since we use `ESM` for Typescript resolution now, we lose this\n * so we have to workaround by importing these and re-export them from CJS\n *\n * TODO: remove these when the package properly work with Typescript's nodenext\n * module resolution\n *\n * @workaround ESM\n * See https://github.com/microsoft/TypeScript/issues/49298\n *\n * In addition to that, due to our upgrade to Typescript 5.0, we are forced to enable\n * --verbatimModuleSyntax flag, so we have to use CommonJS syntax in this file\n * See https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#verbatimmodulesyntax\n */\nconst CreatableSelect = require(\"react-select/creatable\");\nconst Select = require(\"react-select\");\nmodule.exports = {\n CreatableSelect,\n Select,\n SelectComponents: Select.components,\n};\n//# sourceMappingURL=CJS__ReactSelect.cjs.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunk_finos_legend_application_repl_deployment\"] = globalThis[\"webpackChunk_finos_legend_application_repl_deployment\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(5912)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","LOG_LEVEL","PluginInfo","name","version","signature","uuid","constructor","this","getName","getVersion","getSignature","getUUID","getInfo","info","configure","configData","AbstractPluginManager","plugins","presets","usePlugins","usePresets","Object","keys","forEach","key","configObj","preset","plugin","install","filter","getHiddenPluginNames","includes","map","sort","a","b","localeCompare","getHiddenPresetNames","LogEvent","channel","timestamp","Date","now","create","event","LoggerPlugin","level","DEBUG","setLevel","pluginManager","registerLoggerPlugin","debug","data","_debug","INFO","_info","warn","WARN","_warn","error","ERROR","_error","LogService","loggers","registerPlugins","loggerPlugins","logger","console","WebConsole","super","length","noop","ApplicationError","Error","message","undefined","detail","EnrichedError","overideMessage","messageLines","match","stack","split","slice","join","captureStackTrace","IllegalStateError","unsupportedObject","value","options","opts","obj","printFunctionName","maxDepth","deep","pickBy","val","replace","printObject","assertErrorThrown","returnUndefOnError","fn","AssertionError","isNonNullable","assertType","clazz","guaranteeNonEmptyString","str","assertNonEmptyString","assertionValue","isNaN","isPlainObject","guaranteeIsString","assertIsString","guaranteeIsNumber","assertIsNumber","guaranteeIsBoolean","assertIsBoolean","HttpStatus","CHARSET","HttpHeader","ContentType","HttpMethod","DEFAULT_CLIENT_REQUEST_OPTIONS","mode","credentials","redirect","mergeRequestHeaders","headersOne","headersTwo","requestHeaders","entries","NetworkClientError","response","payload","status","statusText","url","summary","JSON","stringify","payloadAsObject","parse","extractMessage","substring","processResponse","async","init","responseProcessConfig","preprocess","ok","text","Promise","reject","skipProcessing","resolve","NO_CONTENT","accept","headers","Accept","APPLICATION_JSON","json","TEXT_PLAIN","createRequestHeaders","method","baseRequestHeaders","GET","CONTENT_TYPE","NetworkClient","baseUrl","config","get","parameters","requestProcessConfig","request","put","PUT","post","POST","DELETE","requestUrl","URL","fullUrl","Array","isArray","subVal","searchParams","append","toString","makeUrl","body","enableCompression","Blob","compressData","APPLICATION_ZLIB","requestInit","fetch","then","UNAUTHORIZED","autoReAuthenticateUrl","id","previous","document","getElementById","remove","element","createElement","src","style","display","addEventListener","appendChild","autoReAuthenticate","resp","catch","TypeError","couldBeCORS","fileName","content","contentType","blob","type","createObjectURL","link","download","href","click","removeChild","location","APPLICATION_EVENT","SerializationFactory","schema","deserializeNullAsUndefined","Boolean","toJson","fromJson","optionalCustomUsingModelSchema","DocumentationEntry","markdownText","title","related","static","documentationKey","entry","serialization","collectKeyedDocumentationEntriesFromConfig","rawEntries","DocumentationService","links","docRegistry","Map","contextualDocIndex","applicationStore","documentationUrl","documentationLinkEntries","getApplicationPlugins","flatMap","getExtraKeyedDocumentationEntries","hasDocEntry","logService","DOCUMENTATION_LOAD__SKIP","set","keyedDocumentationEntries","contextualDocEntries","getExtraContextualDocumentationEntries","missingDocumentationEntries","uniq","getExtraRequiredDocumentationKeys","concat","has","push","DOCUMENTATION_REQUIREMENT_CHECK__FAILURE","hasContextualDocEntry","context","CONTEXTUAL_DOCUMENTATION_LOAD__SKIP","existingDocEntry","getDocEntry","getContextualDocEntry","getAllDocEntries","from","values","publishDocRegistry","result","publishContextualDocIndex","ACTION_STATE","CORE_TRACER_TAG","ActionState","state","_message","_messageFormatter","INITIAL","setMessage","setMessageFormatter","reset","inProgress","IN_PROGRESS","fail","FAILED","pass","SUCCEEDED","complete","hasSucceeded","sync","exportData","isInInitialState","isInProgress","hasFailed","hasCompleted","Trace","traceEntries","setup","bootstrap","clientSpan","reportSuccess","concludeClientSpan","reportError","close","concludeServerSpan","serverSpan","TracerService","createTrace","traceData","trace","createClientSpan","createServerSpan","FuzzySearchEngine","ADVANCED_FUZZY_SEARCH_MODE","VIRTUAL_ASSISTANT_TAB","FuzzySearchAdvancedConfigState","currentMode","STANDARD","onSearchModeChange","isAdvancedSearchActive","setCurrentMode","generateSearchText","INCLUDE","EXACT","INVERSE","VirtualAssistantDocumentationEntry","isOpen","docEntry","setIsOpen","VirtualAssistantContextualDocumentationEntry","isValidVirtualAssistantDocumentationEntry","AssistantService","panelRenderingKey","isHidden","isPanelMaximized","selectedTab","SEARCH","currentDocumentationEntry","searchEngine","searchConfigurationState","searchState","searchText","searchResults","showSearchConfigurationMenu","isOverSearchLimit","currentContextualDocumentationEntry","setIsHidden","setIsPanelMaximized","setSelectedTab","setSearchText","resetSearch","search","openDocumentationEntry","refreshPanelRendering","setShowSearchConfigurationMenu","documentationService","includeScore","shouldSort","ignoreLocation","threshold","weight","useExtendedSearch","navigationContextService","currentContext","openDocumentationEntryLink","shouldDisplayVirtualAssistantDocumentationEntry","navigationService","navigator","visitAddress","hideAssistant","toggleAssistant","limit","DOCUMENTATION_SEARCH_RESULTS_LIMIT","item","EventService","notifierPlugins","registerEventNotifierPlugins","notify","LegendApplicationTelemetryHelper","logEvent_ApplicationInitializationSucceeded","service","logEvent","APPLICATION_LOAD__SUCCESS","application","appName","appVersion","env","browser","userAgent","screen","height","window","width","logEvent_ApplicationContextAccessed","APPLICATION_CONTEXT__ACCESS","logEvent_VirtualAssistantDocumentationEntryAccessed","VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS","logEvent_ApplicationUsageInterrupted","APPLICATION_USAGE__INTERRUPT","ApplicationNavigationContextService","contextStack","pop","newContextStack","ctx","isTransient","find","getExtraAccessEventLoggingApplicationContextKeys","telemetryService","existingCtx","idx","indexOf","CommandService","commandRegistry","registerCommand","deregisterCommand","command","commandKey","COMMAND_CENTER_REGISTRATION__FAILURE","delete","runCommand","args","trigger","action","KeyboardShortcutsService","keyMap","commandKeyMap","isHotkeysBlocked","addHotkey","blockGlobalHotkeys","unblockGlobalHotkeys","getExtraKeyedCommandConfigEntries","shortcuts","defaultKeyboardShortcut","additionalKeyboardShortcuts","shortcut","keyCombination","dispatch","mappedCommandKeys","commandService","DEFAULT_MONOSPACED_FONT_FAMILY","DEFAULT_DATE_TIME_FORMAT","DISPLAY_ANSI_ESCAPE","ANSI_moveCursor","line","column","ConsoleSearchConfiguration","searchInput","useRegex","matchWholeWord","matchCaseSensitive","resultCount","currentResultIndex","setSearchInput","el","focus","Console","searchConfig","setSearchRegex","setSearchWholeWord","setSearchCaseSensitive","setSearchResultCount","setSearchCurrentResultIndex","Terminal","preserveLog","setPreserveLog","showHelp","showCommonANSIEscapeSequences","capitalize","toUpperCase","TITLE_CASE_EXCEPTION_WORDS","toTitleCase","trim","toLowerCase","prettyCONSTName","chunk","charAt","KEYBOARD_NAMED_KEY","parseKeybinding","press","modifiers","isMatchingKeyPressData","keyPressData","code","every","modifier","getModifierState","SHIFT","META","ALT","CONTROL","isMatchingKeyCombination","LegendCustomMUITheme","createTheme","transitions","LegendStyleProvider","props","children","StyledEngineProvider","injectFirst","ThemeProvider","theme","generateSimpleDIVComponent","componentName","divClassName","component","className","displayName","Modal","darkMode","ModalTitle","icon","ModalHeader","ModalHeaderActions","ModalBody","ModalFooter","ModalFooterButton","onClick","inProgressText","disabled","formatText","preventFormSubmit","isDarkMode","isFormatText","isSecondary","isPreventFormSubmit","ActionAlertType","ActionAlertActionType","AlertService","blockingAlertInfo","actionAlertInfo","setBlockingAlert","setActionAlertInfo","alertInfo","keyboardShortcutsService","notificationService","notifyIllegalState","ApplicationStoreContext","createContext","useApplicationStore","useContext","ApplicationStoreProvider","store","Provider","getActionButtonClassName","PROCEED_WITH_CAUTION","PROCEED","ActionAlertContent","prompt","onClose","onEnter","actions","handleClose","alertService","Dialog","open","TransitionProps","onSubmit","preventDefault","default","handler","e","autoFocus","label","ActionAlert","PanelLoadingIndicator","isLoading","ref","useRef","useEffect","current","parentElement","classList","add","BlockingAlert","classes","root","container","layoutService","TEMPORARY__isLightColorThemeEnabled","showLoading","CloseIcon","ThinVerticalDragHandleIcon","TimesIcon","TimesCircleIcon","PlusIcon","CogIcon","CaretDownIcon","QuestionCircleIcon","InfoCircleIcon","SearchIcon","MinusCircleIcon","CheckCircleIcon","ExclamationTriangleIcon","BugIcon","CircleNotchIcon","EmptyWindowRestoreIcon","WindowMaximizeIcon","MapMarkerIcon","WizardHatIcon","FaceLaughWinkIcon","FaceSadTearIcon","BeardIcon","SunglassesIcon","ChevronDownIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","DEFAULT_NOTIFICATION_HIDE_TIME","NOTIFCATION_SEVERITY","Notification","severity","autoHideDuration","NotificationService","notification","setNotification","notifySuccess","notifyWarning","notifyError","SUCCESS","WARNING","ILEGAL_STATE","notifyUnsupportedFeature","featureName","notifyAndReturnAlternativeOnError","alternative","NotificationManager","isExpanded","setIsExpanded","useState","notificationIcon","handleCopy","guardUnhandledError","clipboardService","copyTextToClipboard","anchorOriginBottomRight","anchorOrigin","vertical","horizontal","reason","tabIndex","BaseMenu","otherProps","paper","list","transitionDuration","ContextMenu","menuProps","onOpen","contextMenuRoot","anchorEl","setAnchorEl","left","setLeft","top","setTop","stopPropagation","onContextMenu","containerRect","getBoundingClientRect","containerLeft","scrollX","documentElement","scrollLeft","containerTop","scrollY","scrollTop","clientX","clientY","target","eventTarget","elementsFromPoint","some","anchorPosition","anchorReference","BackdropProps","invisible","disableRestoreFocus","MenuContent","forwardRef","MenuContentItem","MarkdownTextViewer","initialize","startOnLoad","contentLoaded","remarkPlugins","components","_props","node","rest","exec","groups","language","BlankPanelContent","contentRef","contentWidth","contentHeight","u","refreshMode","refreshRate","refreshOptions","trailing","showContent","setShowContent","containerRef","containerWidth","containerHeight","DEFAULT_CONTENT_PADDING","BaseRadioGroup","size","targetOptionsValuesInMatrix","arr","stepSize","matrix","i","transformToMatrix","row","op","FormControlLabel","control","Radio","BasePopover","LEGEND_APPLICATION_DOCUMENTATION_KEY","VirtualAssistantDocumentationEntryViewer","toggleExpand","copyDocumentationKey","elevation","rel","VirtualAssistantContextualSupportPanel","contextualEntry","assistantService","copyContextIDToClipboard","copyCurrentContextIDToClipboard","copyContextStackToClipboard","VirtualAssistantSearchPanel","searchInputRef","debouncedSearch","useMemo","debounce","querySelectorAll","activeElement","spellCheck","onChange","placeholder","QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX","searchMode","format","VirtualAssistantPanel","triggerElement","extraViewConfigurations","getExtraVirtualAssistantViewConfigurations","currentExtensionView","hideBackdrop","PaperProps","disableEnforceFocus","transformOrigin","onKeyDown","CONTEXTUAL_SUPPORT","autoExpandOnOpen","renderer","VirtualAssistant","isDragging","setIsDragging","_key","_setKey","assistantRef","toggleAssistantPanel","bounds","onStart","onStop","nodeRef","handle","APPLICATION_COMPONENT_ELEMENT_ID","PLATFORM_NATIVE_KEYBOARD_SHORTCUTS","BackdropContainer","elementId","ApplicationComponentFrameworkProvider","keyBindingMap","keyCombinations","combinations","buildHotkeysConfiguration","onKeyEvent","possibleMatches","timer","KeyboardEvent","uniqBy","combination","parsedKeyCombination","remainingExpectedKeyPresses","currentExpectedKeyPress","clearTimeout","setTimeout","clear","bind","createKeybindingsHandler","removeEventListener","onVisibilityChange","hidden","timeService","recordUsageInterruption","showBackdrop","Portal","getElementByID","backdropContainerElementID","BACKDROP_CONTAINER","Backdrop","DndProvider","backend","TOP_LEVEL_CONTAINER","LEGEND_XTERM_THEME","foreground","background","cursor","selectionBackground","black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","LEGEND_XTERM_SEARCH_THEME","matchOverviewRuler","activeMatchColorOverviewRuler","matchBackground","activeMatchBackground","DEFAULT_COMMAND_HEADER","BOLD","BRIGHT_BLUE","RESET","MAGENTA","COMMAND_START","XTerm","instance","resizer","searcher","webLinkProvider","_TEMPORARY__onKeyListener","_TEMPORARY__onDataListener","commandHistory","currentCommandSearchString","commandHistoryNavigationIdx","isRunningCommand","setupState","allowProposedApi","fontSize","letterSpacing","fontWeight","fontWeightBold","fontFamily","tabStopWidth","overviewRulerWidth","scrollback","convertEol","scrollOnUserInput","configuration","onContextLoss","dispose","loadAddon","unicode","activeVersion","attachCustomKeyEventHandler","hasSelection","urlRegex","regex","commands","commandConfig","aliases","TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE","onDidChangeResults","resultIndex","onKey","domEvent","replaceAll","addCommandToHistory","matchingCommand","arg","finally","isFlushed","abort","deleteFromCommand","altKey","ctrlKey","computeCursorJumpMovement","movement","computeCursorMovement","scrollLines","scroll","write","seq","writeToCommand","dispatchEvent","setCommandFromHistory","onData","startsWith","trimEnd","getCommandRange","buffer","active","cols","commandText","commandFirstLine","repeat","startY","cursorIdx","baseY","cursorY","getLine","translateToString","cursorX","startX","endY","endX","back","range","distance","foundWord","rows","maxDistance","Math","min","abs","newCursorX","newCursorY","abs_cursorY","ceil","max","floor","viewportY","right","setCommand","cursorMovement","isSetup","isFocused","textarea","mount","autoResize","fit","at","unshift","padEnd","newCommand","newSystemCommand","DIM","flushScreen","isLastLineEmpty","lineText","scrollToTop","resetANSIStyling","scrollToBottom","BRIGHT_BLACK","BRIGHT_GREEN","description","usage","systemCommand","RED","output","findNext","decorations","wholeWord","caseSensitive","incremental","clearSearch","clearDecorations","clearSelection","findPrevious","getContent","lines","copy","getSelection","alertUnhandledError","copyAll","TerminalService","terminal","UNKNOWN_USER_ID","IdentityService","currentUser","setCurrentUser","isAnonymous","LEGEND_APPLICATION_COLOR_THEME","LocalStorage","localStorage","setItem","getItem","removeItem","hasItem","StorageStore","storeIndex","storageService","getIndex","getValue","getNumericValue","getStringValue","getBooleanValue","getObjectValue","assertIsObject","guaranteeIsObject","hasValue","persistValue","updateIndex","StorageService","storage","applicationStorageKey","index","isEmpty","TelemetryService","userId","identityService","appEnv","appSessionId","appStartTime","eventType","TimeService","interruptions","finalizeTimingsRecord","stopWatch","timings","totalTime","elapsed","startTime","endTime","record","fromEntries","records","total","numberOfInteruptions","interruption","__numberOfInteruptions","DEFAULT_DARK_COLOR_THEME","DEFAULT_DARK","TEMPORARY__globalCSSClassName","colors","LEGACY_LIGHT_COLOR_THEME","LEGACY_LIGHT","HIGH_CONTRAST_LIGHT_COLOR_THEME","HIGH_CONTRAST_LIGHT","LEGEND_APPLICATION_SETTING_KEY","LEGEND_APPLICATION_SETTING_CONFIG","COLOR_THEME","defaultValue","LayoutService","colorThemeRegistry","currentColorTheme","setBackdropContainerElementID","setShowBackdrop","setColorTheme","getExtraColorThemes","colorTheme","COLOR_THEME_CONFIGURATION_CHECK__FAILURE","themeKey","settingService","TEMPORARY__syncGlobalCSSClassName","querySelector","previousTheme","newColorTheme","previousColorTheme","persist","getColor","ClipboardService","clipboard","writeText","notifySuccessMessage","NavigationService","SettingService","registry","getExtraSettingConfigurationEntries","SETTING_CONFIGURATION_CHECK__FAILURE","SETTING_RETRIVE_FAILURE","DefaultNavigator","goToLocation","reload","goToAddress","address","generateAddress","updateCurrentLocation","updateCurrentZone","zone","resetZone","getCurrentBaseAddress","getCurrentAddress","getCurrentLocation","getCurrentLocationParameters","getCurrentLocationParameterValue","getCurrentZone","blockNavigation","blockCheckers","onBlock","onNativePlatformNavigationBlock","unblockNavigation","isNavigationBlocked","INTERNAL__internalizeTransientParameter","UserDataService","USER_DATA_RETRIEVE_FAILURE","isSemVer","test","RELEASE_UPDATE_TYPE","APPLICATION_LAST_OPENED_VERSION","ReleaseNotesService","releaseNotes","showCurrentReleaseModal","showReleaseLog","isConfigured","setShowCurrentRelease","setReleaseLog","release","notes","note","collectReleaseNotes","getViewedVersion","userDataService","updateViewedVersion","showVersion","versionNotes","lastOpenedVersion","val2","numeric","showableVersions","ApplicationStore","extensionStates","initState","platform","terminalService","releaseNotesService","eventService","tracerService","getLoggerPlugins","getEventNotifierPlugins","getTelemetryServicePlugins","getTracerServicePlugins","getExtraApplicationExtensionStateBuilders","creator","getNavigator","APPLICATION_LOAD__FAILURE","ILLEGAL_APPLICATION_STATE_OCCURRED","actionFn","DOWNLOAD_EVENTS","LegendApplicationLogger","LegendApplicationWebConsole","LegendApplication","basePresets","basePlugins","baseAddress","pluginRegister","_isConfigured","downloadHelperServiceWorkerPath","downloadHelper","withBasePresets","withPresets","withBasePlugins","withPlugins","withDownloadHelper","path","withReleaseNotes","setupApplicationStore","fetchApplicationConfiguration","client","versionData","origin","APPLICATION_CONFIGURATION__FAILURE","configureApplication","extensions","loadDocumentationRegistryData","all","documentationRegistryEntries","getExtraDocumentationRegistryEntries","simple","docData","patterns","RegExp","pattern","DOCUMENTATION_FETCH__FAILURE","start","extensionConfigData","getExtraApplicationSetups","loadApplication","workerPath","serviceWorker","register","reg","registerDownloadHelperServiceWorker","LEGEND_APPLICATION_ROOT_ELEMENT_TAG","LegendApplicationPlugin","Core_LegendApplicationPlugin","NAME","registerApplicationPlugin","enforceActions","LegendApplicationConfig","appVersionBuildTime","appVersionCommitId","input","storageKey","getDefaultApplicationStorageKey","documentation","contextualEntries","buildTime","commitSHA","resolveAbsoluteUrl","LegendREPLApplicationConfig","replUrl","useDynamicREPLServer","repl","dynamic","LegendApplicationPluginManager","telemetryServicePlugins","tracerServicePlugins","eventNotifierPlugins","applicationPlugins","registerTelemetryServicePlugin","registerTracerServicePlugin","registerEventNotifierPlugin","LegendREPLPluginManager","pureProtocolProcessorPlugins","pureGraphManagerPlugins","pureGraphPlugins","registerPureProtocolProcessorPlugin","registerPureGraphManagerPlugin","registerPureGraphPlugin","getPureGraphManagerPlugins","getPureProtocolProcessorPlugins","getPureGraphPlugins","LEGEND_APPLICATION_PARAM_TOKEN","BrowserNavigator","historyAPI","_isNavigationBlocked","_forceBypassNavigationBlocking","_blockCheckers","_beforeUnloadListener","checker","returnValue","historyApiClient","ignoreBlocking","onProceed","createHref","pathname","hash","withAppRoot","isFullUrl","parseUrl","query","getQueryParameters","paramValue","decodeURIComponent","getQueryParameterValue","history","pushState","onpopstate","forward","currentZone","params","stringifyQueryParams","ApplicationPlatform","BrowserPlatform","initialColorTheme","INITIAL_COLOR_THEME","ApplicationPlatformContext","BrowserPlatformProvider","BrowserEnvironmentProvider","basename","REPLServerClient","networkClient","dataCube","getGridClientLicenseKey","getQueryTypeahead","parseQuery","getQueryCode","getBaseQuery","getRelationReturnType","executeQuery","DataCubeQuerySnapshotColumnOrigin","CORE_HASH_STRUCTURE","cloneSnapshot","snapshot","clone","sha1","update","digest","hashCode","V1_Multiplicity","lowerBound","upperBound","MULTIPLICITY","V1_ValueSpecification","V1_ClassInstance","multiplicity","ONE","accept_ValueSpecificationVisitor","visitor","visit_ClassInstance","V1_Variable","class","visit_Variable","V1_GraphFetchTree","subTrees","subTypeTrees","V1_RootGraphFetchTree","accept_GraphFetchTreeVisitor","visit_RootGraphFetchTree","V1_CoreClassInstance","V1_Lambda","visit_Lambda","V1_DataTypeValueSpecification","V1_Path","startType","V1_AbstractAppliedFunction","V1_AppliedFunction","function","fControl","visit_AppliedFunction","V1_Collection","ONE_MANY","visit_Collection","V1_PrimitiveValueSpecification","V1_CDecimal","visit_CDecimal","V1_CInteger","visit_CInteger","V1_CString","visit_CString","V1_CFloat","visit_CFloat","V1_CDate","V1_CDateTime","visit_CDateTime","V1_CStrictDate","visit_CStrictDate","V1_CStrictTime","visit_CStrictTime","V1_CBoolean","visit_CBoolean","V1_AggregateValue","mapFn","aggregateFn","V1_Pair","first","second","V1_RuntimeInstance","runtime","V1_ExecutionContextInstance","executionContext","V1_PropertyGraphFetchTree","property","alias","subType","visit_PropertyGraphFetchTree","V1_SubTypeGraphFetchTree","subTypeClass","visit_SubTypeGraphFetchTree","V1_SerializationConfig","includeType","typeKeyName","includeEnumType","removePropertiesWithNullValues","removePropertiesWithEmptySets","fullyQualifiedTypePath","includeObjectReference","V1_KeyExpression","expression","visit_KeyExpression","V1_PureList","V1_TDSAggregateValue","pmapFn","V1_TDSColumnInformation","columnFn","V1_TDSSortInformation","direction","V1_TDSOlapRank","V1_TDSOlapAggregation","columnName","V1_ColSpecArray","colSpecs","V1_ColSpec","function1","function2","V1_RelationStoreAccessor","ROOT_PACKAGE_NAME","ATOMIC_TEST_TYPE","PRIMITIVE_TYPE","CORE_PURE_PATH","MILESTONING_STEREOTYPE","MILESTONING_VERSION_PROPERTY_SUFFIX","PackageableElementPointerType","SUPPORTED_FUNCTIONS","V1_PackageableElement","package","PACKAGEABLE_ELEMENT","V1_sourceInformationSerialization","sourceId","startLine","startColumn","endLine","endColumn","V1_INTERNAL__PackageableElementWithSourceInformation","sourceInformation","PACKAGEABLE_ELEMENT_POINTER","V1_multiplicityModelSchema","V1_PathElement","V1_PropertyPathElement","V1_AppliedProperty","visit_AppliedProperty","V1_Runtime","mappings","connectionStores","connections","ENGINE_RUNTIME","SINGLE_ENGINE_RUNTIME","V1_RuntimePointer","RUNTIME_POINTER","V1_RuntimeType","V1_runtimePointerModelSchema","_type","runtimeValue","PACKAGEABLE_RUNTIME","accept_PackageableElementVisitor","visit_PackageableRuntime","V1_serializeRuntimeValue","protocol","V1_deserializeRuntimeValue","V1_ExecutionContext","queryTimeOutInSeconds","enableConstraints","V1_AnalyticsExecutionContext","useAnalytics","toFlowSetFunction","V1_BaseExecutionContext","V1_PackageableElementPtr","fullPath","visit_PackageableElementPtr","V1_GenericTypeInstance","visit_GenericTypeInstance","V1_ExecutionContextType","V1_PathElementType","V1_GraphFetchTreeType","V1_ClassInstanceType","V1_ValueSpecificationType","V1_variableModelSchema","VARIABLE","V1_lambdaModelSchema","LAMBDA","V1_serializeValueSpecification","V1_deserializeValueSpecification","keyExpressionModelSchema","KEY_EXPRESSION","appliedFunctionModelSchema","APPLIED_FUNCTION","appliedPropertyModelSchema","APPLIED_PROPERTY","packageableElementPtrSchema","PACKAGEABLE_ELEMENT_PTR","genericTypeInstanceSchema","GENERIC_TYPE_INSTANCE","deserializeHackedUnit","unitType","deserializeHackedClass","collectionModelSchema","COLLECTION","enumValueModelSchema","visit_EnumValue","ENUM_VALUE","CDecimalModelSchema","CDECIMAL","CIntegerModelSchema","CINTEGER","CStringModelSchema","CSTRING","CFloatModelSchema","CFLOAT","CDateTimeModelSchema","CDATETIME","CStrictTimeModelSchema","CSTRICTTIME","CStrictDateModelSchema","CSTRICTDATE","CLatestDateModelSchema","visit_CLatestDate","CLATESTDATE","CBooleanModelSchema","CBOOLEAN","CByteArrayModelSchema","visit_CByteArray","CBYTEARRAY","deserializePrimitiveValueSpecification","deserializer","collection","ZERO","classInstanceModelSchema","CLASS_INSTANCE","pathModelSchema","rootGraphFetchTreeModelSchema","executionContextInstanceModelSchema","aggregationValueModelSchema","pairModelSchema","pureListModelSchema","runtimeInstanceModelSchema","serializationConfigModelSchema","tdsAggregrateValueModelSchema","tdsColumnInformationModelSchema","tdsOlapAggregationModelSchema","tdsOlapRankModelSchema","tdsSortInformationModelSchema","colSpecModelSchema","colSpecArrayModelSchema","relationStoreAccessorModelSchema","serializers","V1_getExtraClassInstanceValueProtocolSerializers","serializer","V1_serializeClassInstanceValue","PATH","ROOT_GRAPH_FETCH_TREE","AGGREGATE_VALUE","EXECUTION_CONTEXT_INSTANCE","PAIR","PURE_LIST","RUNTIME_INSTANCE","SERIALIZATION_CONFIG","TDS_AGGREGATE_VALUE","TDS_COLUMN_INFORMATION","TDS_OLAP_AGGREGATION","TDS_OLAP_RANK","TDS_SORT_INFORMATION","COL_SPEC","COL_SPEC_ARRAY","RELATION_STORE_ACCESSOR","deserializers","V1_getExtraClassInstanceValueProtocolDeserializers","V1_deserializeClassInstanceValue","propertyPathElementModelSchema","PROPERTY_PATH_ELEMENT","V1_serializePathElement","V1_deserializePathElement","V1_serializeGraphFetchTree","V1_deserializeGraphFetchTree","propertyGraphFetchTreeModelSchema","PROPERTY_GRAPH_FETCH_TREE","subTypeGraphFetchTreeModelSchema","SUBTYPE_GRAPH_FETCH_TREE","analyticsExecutionContextModelSchema","ANALYTICS_EXECUTION_CONTEXT","baseExecutionContextModelSchema","BASE_EXECUTION_CONTEXT","V1_serializeExecutionContext","V1_deserializeExecutionContext","V1_serializeRuntime","includeEnumTypee","removePropertiesWithNullValuese","removePropertiesWithEmptySetse","fullyQualifiedTypePathe","includeObjectReferencee","V1_ValueSpecificationSerializer","visit_INTERNAL__UnknownValueSpecfication","valueSpecification","HACKED_CLASS","UNIT_TYPE","HACKED_UNIT","ENUM","CLASS","MAPPING_INSTANCE","extractElementNameFromPath","findLast","matchFunctionName","functionName","functionFullPaths","functionFullPath","DATA_CUBE_FUNCTIONS","DEFAULT_LAMBDA_VARIABLE_NAME","DATA_CUBE_AGGREGATE_FUNCTION","DATA_CUBE_FILTER_OPERATION","DATA_CUBE_COLUMN_SORT_DIRECTION","GridClientSortDirection","V1_EngineErrorType","DATA_CUBE_EDITOR_TAB","BuilderType","ExecutionActivityType","EXECUTION_SERIALIZATION_FORMAT","getAggregationColSpec","columnType","colSpec","aggLambda","defaultVariable","funcLambda","aggFunc","aggVariable","getPrimitiveValueSpecification","STRING","stringValue","BOOLEAN","booleanValue","NUMBER","DECIMAL","cDecimal","INTEGER","cInteger","FLOAT","cFloat","DATE","DATETIME","cDateTime","STRICTDATE","cStrictDate","STRICTTIME","cStrictTime","processFilterQuery","condition","filterCondition","operation","EQUALS","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","CONTAINS","ENDS_WITH","STARTS_WITH","BLANK","NOT_EQUAL","NOT","filterConditionFunc","NOT_BLANK","NOT_CONTAINS","groupFilter","conditionExpressions","conditions","conditionExpression","groupCondition","groupOperation","groupFunc","buildExecutableQueryFromSnapshot","sourceQuery","sequence","groupByFilter","filterValueSpec","filterLambda","filterFunc","FILTER","groupByColumns","groupByInstance","groupByColSpecArray","aggregationColSpecArray","aggregationInstance","groupByExpandedKeys","groupKeys","currentGroupByColumn","columnSpec","groupByAggColumns","COUNT","agg","groupBy","GROUP_BY","extendFunc","EXTEND","classInstance","colSpecArray","columns","col","c","lambda","variableValue","sortColumns","SORT","sortInfos","sortCol","sortInfo","ASCENDING","ASC","DESC","createColSpec","fromFunc","FROM","runtimePtr","DataCubeGridClientServerSideDataSource","grid","fetchRows","currentSnapshot","getLatestSnapshot","syncedSnapshot","syncSnapshot","publishSnapshot","executableQuery","dataCubeState","engine","rowData","tds","_row","rowIdx","colIdx","String","rowNumber","success","getRows","baseSnapshot","createNew","rowGroupCols","r","valueCols","v","field","AND","newSortColumns","sortModel","colId","DESCENDING","newSnapshot","DataCubeQuerySnapshotSubscriber","manager","latestSnapshot","snapshotManager","receiveSnapshot","applySnapshot","broadcastSnapshot","buildColumnSortSpecification","colName","sortIndex","getAggregationColumnCustomizations","buildColumnGroupBySpecification","rowGroup","aggColumn","hide","allowedAggFuncs","DataCubeGridState","_client","clientDataSource","clientLicenseKey","configureClient","editorStore","gridOptions","columnDefs","headerName","minWidth","sortable","flex","resizable","enableRowGroup","enableValue","menuTabs","generateGridOptionsFromSnapshot","updateGridOptions","DataCubeEditorSortColumnState","setDirection","DataCubeEditorSortState","availableColumns","selectedColumns","availableColumnsSearchText","selectedColumnsSearchText","setAvailableColumns","setSelectedColumns","addAvailableColumn","addSelectedColumn","addAllAvailableColumns","addAllSelectedColumns","setSelectedColumnsSearchText","setAvailableColumnsSearchText","availableColumnsSearchResults","selectedColumnsSearchResults","applySnaphot","buildSnapshot","SourceInformation","V1_EngineError","errorType","V1_ParserError","EngineError","ParserError","DataCubeQueryEditorState","parserError","setQuery","setParserError","processSourceInformation","DataCubeQueryCodeEditorState","queryEditorState","currentSubQuery","setCurrentSubQuery","BAD_REQUEST","DataCubeEditorState","codeEditorState","isPanelOpen","currentTab","SORTS","applyChanges","setCurrentTab","openPanel","closePanel","ResultBuilder","ExecutionActivities","RelationalExecutionActivities","sql","comment","AggregationAwareActivities","rewrittenQuery","UnknownExecutionActivities","ExecutionResult","builder","activities","JsonExecutionResult","RawExecutionResult","INTERNAL__TDSColumn","relationalType","doc","TDSBuilder","TDS_BUILDER","TDSRow","TabularDataSet","TDSExecutionResult","_UUID","ClassBuilder","CLASS_BUILDER","ClassExecutionResult","objects","V1_ResultBuilder","V1_ExecutionActivities","V1_RelationalExecutionActivities","V1_AggregationAwareActivities","V1_ExecutionResult","V1_UnknownExecutionActivity","V1_JsonExecutionResult","builderSerialization","V1_INTERNAL__TDSColumn","V1_TDSBuilder","V1_serializeExecutionActivities","RELATIONAL","RELATIONAL_EXECUTION_ACTIVITY","AGGREGATION_AWARE_ACTIVITY","V1_TDSExecutionResult","V1_ClassExecutionResult","V1_RawExecutionResult","V1_INTERNAL__UnknownExecutionResult","INTERNAL__UnknownExecutionResult","buildExecutionActivities","metamodel","INTERNAL__buildTDSColumn","V1_buildExecutionResult","buildClassExecutionResult","buildTDSBuilder","buildTDSExecutionResult","buildJSONExecutionResult","DataCubeQuerySource","DataCubeQueryColumn","DATA_CUBE_QUERY_SOURCE_TYPE","DataCubeQuerySourceREPLExecutedQuery","REPL_EXECUTED_QUERY","deserializeQuerySource","serializeQuerySource","object","DataCubeQuery","partialQuery","source","DataCubeEngine","isPartial","returnSourceInformation","guaranteeType","JSON_BUILDER","V1_serializeExecutionResult","DataCubeQuerySnapshotManager","subscribers","snapshots","registerSubscriber","subscriber","_SUPPORTED_TOP_LEVEL_FUNCTIONS","func","LIMIT","PIVOT","RENAME","SELECT","CAST","_FUNCTION_SEQUENCE_COMPOSITION_PATTERN","_FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP","required","DataCubeState","editor","baseQuery","initialSnapshot","analytics","funcMap","leafExtend","groupExtend","aggregationFuncIndex","findLastIndex","firstExtendIndex","findIndex","secondExtendIndex","rename","select","pivot","cast","extractFunctionMap","currentQuery","supportedFunc","spec","vs","pivotFunc","castFunc","extractQueryFunctionSequence","originalColumns","leafExtendedColumns","renamedColumns","pivotColumns","pivotAggColumns","castColumns","groupExtendedColumns","createSnapshot","SOURCE","validateAndBuildBaseSnapshot","buildSnapshotFromQuery","REPLStore","REPLStoreContext","REPLStoreProvider","DataCubeGrid","setLicenseKey","rowGroupPanelShow","suppressBrowserResizeObserver","suppressScrollOnNewData","alwaysMultiSort","rowModelType","serverSideDatasource","suppressAggFuncInHeader","suppressServerSideInfiniteScroll","modules","M","onGridReady","api","createFilter","CustomMenuList","selectProps","rowHeight","optionCustomization","parseInt","getComputedStyle","initialOffset","scrollToIndex","child","listRef","scrollToItem","itemCount","itemSize","initialScrollOffset","noMatchMessage","CustomOption","Option","isSelected","STYLE_PREFIX","STYLE_PREFIX__DARK","LoadingIndicator","DropdownIndicator","ClearIndicator","innerProps","CustomInput","additionalProps","onPaste","inputPlaceholder","Input","CustomSelectorInput","allowCreating","hasError","SelectComponent","stylePrefix","styles","menuPortal","base","zIndex","menuPortalTarget","isDisabled","classNamePrefix","MenuList","DataCubeEditorSortPanel","sortState","sortOptions","onDoubleClick","option","isClearable","PivotPanelEditor","closeEditor","tabOptions","tab","DataCube","dataCubeStore","pivotPanelButtonRef","ApplicationFrameworkProvider","LegendREPLBaseStore","LegendREPLBaseStoreContext","LegendREPLBaseStoreProvider","LegendREPLFrameworkProvider","LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN","freeze","DATA_CUBE","LegendREPLRouter","WrappedComponent","exact","LegendREPLWebApplication","LegendREPLApplicationPlugin","_$nominalTypeBrand","PURE_GRAMMAR_TOKEN","buildCodeEditorTheme","vscodeThemeData","baseTheme","colorsOverride","rulesOverride","baseThemeData","rawData","rules","tokenColors","tokenColor","settings","scopes","scope","baseRule","fontStyle","rule","token","array","inherit","parseVSCodeTheme","BASE_PURE_LANGUAGE_COLOR_TOKENS","IDENTIFIER","COLOR","PACKAGE","PARSER","LANGUAGE_STRUCT","GENERICS","PROPERTY","PARAMETER","TYPE","CODE_EDITOR_THEME","DEFAULT_DARK_THEME","SOLARIZED_DARK_THEME","BUILT_IN__VSCODE_DARK","GITHUB_DARK_THEME","GITHUB_DARK_DIMMED_THEME","MATERIAL_DEFAULT_THEME","MATERIAL_DARKER_THEME","ONE_DARK_PRO_THEME","ONE_DARK_PRO_DARKER_THEME","CODE_EDITOR_LANGUAGE","PURE_ELEMENT_NAME","PURE_CONNECTION_NAME","PURE_PARSER","wordPattern","comments","lineComment","blockComment","brackets","autoClosingPairs","surroundingPairs","folding","markers","end","Core_LegendREPLApplicationPlugin","extraKeywords","registerModules","fontLoadFailureErrorMessage","fonts","load","check","remeasureFonts","APPLICATION_SETUP__FAILURE","OVERRIDE_DEFAULT_KEYBINDING_COMMAND","accessor","hotkeyMapping","KeyCode","F1","F8","F9","KeyMod","WinCtrl","KeyG","KeyB","KeyO","KeyD","KeyP","Shift","F10","F2","F12","addKeybindingRules","nativeCodeEditorKeyBinding","keybinding","commandArgs","defineTheme","SOLARIZED_DARK","GITHUB_DARK","GITHUB_DARK_DIMMED","MATERIAL_DEFAULT","MATERIAL_DARKER","ONE_DARK_PRO","ONE_DARK_PRO_DARKER","configureCodeEditorComponent","PURE","setLanguageConfiguration","setMonarchTokensProvider","defaultToken","tokenPostfix","keywords","ASSOCIATION","ENUMERATION","MEASURE","PROFILE","FUNCTION","MAPPING","RUNTIME","CONNECTION","FILE_GENERATION","GENERATION_SPECIFICATION","DATA_ELEMENT","JSON_MODEL_CONNECTION","MODEL_CHAIN_CONNECTION","XML_MODEL_CONNECTION","SERVICE","FLAT_DATA","DATABASE","FLAT_DATA_CONNECTION","RELATIONAL_DATABASE_CONNECTION","operators","languageStructs","identifier","symbols","escapes","digits","octaldigits","binarydigits","hexdigits","generics","date","time","tokenizer","include","cases","KEYWORD","OPERATOR","DELIMITER","pure","WHITESPACE","color","number","whitespace","COMMENT","string","characters","LegendREPL","rootEl","getElementsByTagName","setAttribute","getApplicationRootElement","render","getPresetCollection","getPluginCollection","run","relativeBaseUrl","CreatableSelect","Select","module","exports","SelectComponents","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","splice","n","getter","__esModule","d","getPrototypeOf","t","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
1
+ {"version":3,"file":"static/index.30ca5df0.js","mappings":"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","sources":["webpack://@finos/legend-application-repl-deployment/webpack/runtime/chunk loaded","webpack://@finos/legend-application-repl-deployment/webpack/runtime/create fake namespace object","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/log/LogService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/AbstractPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/log/WebConsole.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/CommonUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/error/ErrorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/error/AssertionUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/network/NetworkUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationEvent.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/SerializationUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/DocumentationService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/ActionState.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/network/TracerService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/search/FuzzySearch.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/search/FuzzySearchAdvancedConfigState.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/AssistantService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/event/EventService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationTelemetry.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationNavigationContextService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/CommandService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/KeyboardShortcutsService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/terminal/Terminal.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/format/FormatterUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/keyboard/KeyBinding.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/utils/LegendStyleProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/utils/ComponentCreatorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/dialog/Modal.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/AlertService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationStoreProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ActionAlert.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/panel/PanelLoadingIndicator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/BlockingAlert.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/icon/Icon.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/NotificationService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/NotificationManager.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/BaseMenu.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/ContextMenu.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/menu/MenuContent.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/markdown/MarkdownTextViewer.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/panel/BlankPanelContent.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/radio-group/BaseRadioGroup.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/popover/BasePopover.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationDocumentation.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/VirtualAssistant.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationComponentFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/terminal/XTerm.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TerminalService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/IdentityService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationColorTheme.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/storage/ApplicationStorage.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/storage/StorageService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TelemetryService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/TimeService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationSetting.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/LayoutService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ClipboardService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/NavigationService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/SettingService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/DefaultNavigator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/UserDataService.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/compare/StringCompareUtil.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ReleaseNotesService.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/ApplicationStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/util/DownloadHelperServiceWorker.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplication.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/format/MatcherUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/LegendApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/Core_LegendApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPLApplicationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/application/LegendApplicationPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPLPluginManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/__lib__/LegendApplicationNavigation.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/navigation/BrowserNavigator.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/platform/ApplicationPlatform.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/stores/platform/BrowserPlatform.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationPlatformProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/BrowserEnvironmentProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/server/REPLServerClient.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshot.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/Core_HashUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-shared/lib/application/HashUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/domain/V1_Multiplicity.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/V1_ValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_ClassInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/V1_Variable.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_GraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_RootGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CoreClassInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_Lambda.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_DataTypeValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_Path.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_AbstractAppliedFunction.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/application/V1_AppliedFunction.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_Collection.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_PrimitiveValueSpecification.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDecimal.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CInteger.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CString.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CFloat.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CDateTime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CStrictDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CStrictTime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CBoolean.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_AggregateValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_Pair.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_RuntimeInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_ExecutionContextInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_PropertyGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/graph/V1_SubTypeGraphFetchTree.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_SerializationConfig.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_KeyExpression.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_PureList.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSAggregateValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSColumnInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSSortInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSOlapRank.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/V1_TDSOlapAggregation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_ColSpecArray.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_ColSpec.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/relation/V1_RelationStoreAccessor.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/MetaModelConst.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/V1_SourceInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_PathElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/classInstance/path/V1_PropertyPathElement.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/application/V1_AppliedProperty.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/runtime/V1_Runtime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/packageableElements/runtime/V1_PackageableRuntime.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_ExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_AnalyticsExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/executionContext/V1_BaseExecutionContext.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_PackageableElementPtr.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_GenericTypeInstance.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_EnumValue.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CLatestDate.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/model/valueSpecification/raw/V1_CByteArray.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/MetaModelUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeMetaModelConst.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridClientEngine.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/V1_EngineError.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/execution/ExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQueryBuilder.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/grid/DataCubeGridState.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorSortState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/SourceInformation.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/grammar/V1_ParserError.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/EngineError.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/editor/DataCubeEditorCodeState.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_INTERNAL__UnknownExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/action/execution/INTERNAL__UnknownExecutionResult.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecutionHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/server/models/DataCubeQuery.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeEngine.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/core/DataCubeQueryAnalyzer.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeState.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/dataCube/DataCubeStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/REPLStoreProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/grid/DataCubeGrid.js","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/autocomplete/CustomSelectorInput.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/editor/DataCubeEditorSortPanel.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/editor/DataCubeEditor.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/dataCube/DataCube.js","webpack://@finos/legend-application-repl-deployment/../legend-application/lib/components/ApplicationFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/LegendREPLBaseStore.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/LegendREPLFrameworkProvider.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/LegendREPLApplication.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/stores/LegendREPLApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/PureLanguage.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/themes/MonacoEditorThemeUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/CodeEditorTheme.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/CodeEditorUtils.js","webpack://@finos/legend-application-repl-deployment/../legend-graph/lib/graph/helpers/PureLanguageHelper.js","webpack://@finos/legend-application-repl-deployment/../legend-lego/lib/code-editor/PureLanguageService.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/components/Core_LegendREPLApplicationPlugin.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/application/LegendREPL.js","webpack://@finos/legend-application-repl-deployment/../legend-application-repl/lib/index.js","webpack://@finos/legend-application-repl-deployment/./src/index.tsx","webpack://@finos/legend-application-repl-deployment/../legend-art/lib/autocomplete/CJS__ReactSelect.cjs","webpack://@finos/legend-application-repl-deployment/webpack/bootstrap","webpack://@finos/legend-application-repl-deployment/webpack/runtime/amd options","webpack://@finos/legend-application-repl-deployment/webpack/runtime/compat get default export","webpack://@finos/legend-application-repl-deployment/webpack/runtime/define property getters","webpack://@finos/legend-application-repl-deployment/webpack/runtime/ensure chunk","webpack://@finos/legend-application-repl-deployment/webpack/runtime/global","webpack://@finos/legend-application-repl-deployment/webpack/runtime/hasOwnProperty shorthand","webpack://@finos/legend-application-repl-deployment/webpack/runtime/make namespace object","webpack://@finos/legend-application-repl-deployment/webpack/runtime/node module decorator","webpack://@finos/legend-application-repl-deployment/webpack/runtime/publicPath","webpack://@finos/legend-application-repl-deployment/webpack/runtime/jsonp chunk loading","webpack://@finos/legend-application-repl-deployment/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '../application/AbstractPluginManager.js';\n// We use numeric enum here for because we want to do comparison\n// In order to retrieve the name of the enum we can do reverse mapping, for example: LogLevel[LogLevel.INFO] -> INFO\n// https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings\nexport var LOG_LEVEL;\n(function (LOG_LEVEL) {\n LOG_LEVEL[LOG_LEVEL[\"DEBUG\"] = 1] = \"DEBUG\";\n LOG_LEVEL[LOG_LEVEL[\"INFO\"] = 2] = \"INFO\";\n LOG_LEVEL[LOG_LEVEL[\"WARN\"] = 3] = \"WARN\";\n LOG_LEVEL[LOG_LEVEL[\"ERROR\"] = 4] = \"ERROR\";\n LOG_LEVEL[LOG_LEVEL[\"SILENT\"] = 5] = \"SILENT\";\n})(LOG_LEVEL || (LOG_LEVEL = {}));\nexport class LogEvent {\n channel;\n name;\n timestamp = Date.now();\n /**\n * TODO: we should make channel required and potentially name required as well, and for each\n * channel, there should be a list of known event names. Unknown event name, or wrong channel\n * will result in error.\n */\n static create(name) {\n const event = new LogEvent();\n event.name = name;\n return event;\n }\n}\nexport class LoggerPlugin extends AbstractPlugin {\n level = LOG_LEVEL.DEBUG;\n setLevel(level) {\n this.level = level;\n }\n install(pluginManager) {\n pluginManager.registerLoggerPlugin(this);\n }\n debug(event, ...data) {\n if (this.level <= LOG_LEVEL.DEBUG) {\n this._debug(event, ...data);\n }\n }\n info(event, ...data) {\n if (this.level <= LOG_LEVEL.INFO) {\n this._info(event, ...data);\n }\n }\n warn(event, ...data) {\n if (this.level <= LOG_LEVEL.WARN) {\n this._warn(event, ...data);\n }\n }\n error(event, ...data) {\n if (this.level <= LOG_LEVEL.ERROR) {\n this._error(event, ...data);\n }\n }\n}\nexport class LogService {\n loggers = [];\n registerPlugins(loggerPlugins) {\n this.loggers = loggerPlugins;\n }\n debug(event, ...data) {\n this.loggers.forEach((logger) => logger.debug(event, ...data));\n }\n info(event, ...data) {\n this.loggers.forEach((logger) => logger.info(event, ...data));\n }\n warn(event, ...data) {\n this.loggers.forEach((logger) => logger.warn(event, ...data));\n }\n error(event, ...data) {\n this.loggers.forEach((logger) => logger.error(event, ...data));\n }\n}\n//# sourceMappingURL=LogService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uuid } from '../CommonUtils.js';\nexport class PluginInfo {\n name;\n version;\n signature;\n uuid;\n}\nexport class AbstractPlugin {\n name;\n version;\n uuid = uuid();\n constructor(name, version) {\n this.name = name;\n this.version = version;\n }\n getName() {\n return this.name;\n }\n getVersion() {\n return this.version;\n }\n getSignature() {\n return `${this.getName()}@${this.getVersion()}`;\n }\n getUUID() {\n return this.uuid;\n }\n getInfo() {\n const info = new PluginInfo();\n info.name = this.getName();\n info.version = this.getVersion();\n info.signature = this.getSignature();\n info.uuid = this.getUUID();\n return info;\n }\n configure(configData) {\n return this;\n }\n}\nexport class PresetInfo {\n name;\n version;\n signature;\n uuid;\n plugins = [];\n}\nexport class AbstractPreset {\n name;\n version;\n uuid = uuid();\n plugins = [];\n constructor(name, version, plugins) {\n this.name = name;\n this.version = version;\n this.plugins = plugins;\n }\n getName() {\n return this.name;\n }\n getVersion() {\n return this.version;\n }\n getSignature() {\n return `${this.getName()}@${this.getVersion()}`;\n }\n getUUID() {\n return this.uuid;\n }\n getPlugins() {\n return [...this.plugins];\n }\n getInfo() {\n const info = new PresetInfo();\n info.name = this.getName();\n info.version = this.getVersion();\n info.signature = this.getSignature();\n info.uuid = this.getUUID();\n info.plugins = this.plugins\n .map((plugin) => plugin.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name));\n return info;\n }\n configure(configData) {\n return this;\n }\n install(pluginManager) {\n this.plugins.forEach((plugin) => plugin.install(pluginManager));\n }\n}\nexport class AbstractPluginManager {\n plugins = [];\n presets = [];\n usePlugins(plugins) {\n this.plugins = plugins;\n return this;\n }\n usePresets(presets) {\n this.presets = presets;\n return this;\n }\n configure(configData) {\n Object.keys(configData).forEach((key) => {\n const configObj = configData[key];\n this.presets.forEach((preset) => {\n if (preset.getName() === key) {\n preset.configure(configObj);\n }\n });\n this.plugins.forEach((plugin) => {\n if (plugin.getName() === key) {\n plugin.configure(configObj);\n }\n });\n });\n }\n install() {\n // Plugins run before presets\n // Plugins ordering is first to last\n this.plugins.forEach((plugin) => plugin.install(this));\n // Presets ordering is first to last\n this.presets.forEach((plugin) => plugin.install(this));\n }\n getInfo() {\n return {\n plugins: this.plugins\n .filter((plugin) => !this.getHiddenPluginNames().includes(plugin.getName()))\n .map((plugin) => plugin.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name)),\n presets: this.presets\n .filter((preset) => !this.getHiddenPresetNames().includes(preset.getName()))\n .map((preset) => preset.getInfo())\n .sort((a, b) => a.name.localeCompare(b.name)),\n };\n }\n /**\n * Return the list of core plugin names to be hidden\n * when getting plugin manager info, such as core plugins.\n */\n getHiddenPluginNames() {\n return [];\n }\n /**\n * Return the list of core presets names to be hidden\n * when getting plugin manager info, such as core presets.\n */\n getHiddenPresetNames() {\n return [];\n }\n}\n//# sourceMappingURL=AbstractPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LoggerPlugin } from './LogService.js';\nconst { debug, info, warn, error } = console;\nexport class WebConsole extends LoggerPlugin {\n constructor() {\n super(packageJson.extensions.webConsoleLoggerPlugin, packageJson.version);\n }\n _debug(event, ...data) {\n debug(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _info(event, ...data) {\n info(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _warn(event, ...data) {\n warn(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n _error(event, ...data) {\n error(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n}\n//# sourceMappingURL=WebConsole.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clone, cloneDeep as deepClone, isEqual as deepEqual, findLast, isEmpty, pickBy, uniqBy, uniq, debounce, throttle, mergeWith, toNumber, isObject, } from 'lodash-es';\nimport { UnsupportedOperationError } from './error/ErrorUtils.js';\nimport { format as prettyPrintObject } from 'pretty-format';\nimport { assertTrue, guaranteeNonNullable } from './error/AssertionUtils.js';\n// NOTE: We re-export lodash utilities like this so we centralize utility usage in our app\n// in case we want to swap out the implementation\nexport { clone, deepClone, deepEqual, findLast, isEmpty, pickBy, uniqBy, uniq, debounce, throttle, };\n// NOTE: we can use the `rng` option in UUID V4 to control the random seed during testing\n// See https://github.com/uuidjs/uuid#version-4-random\nexport { v4 as uuid } from 'uuid';\nexport const getClass = (obj) => obj.constructor;\nexport const getSuperclass = (_class) => {\n if (!_class.name) {\n throw new UnsupportedOperationError(`Cannot get superclass for non user-defined classes`);\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n const superclass = Object.getPrototypeOf(_class);\n /**\n * When it comes to inheritance, JavaScript only has one construct: objects.\n * Each object has a private property which holds a link to another object called its prototype.\n * That prototype object has a prototype of its own, and so on until an object is reached\n * with null as its prototype. By definition, null has no prototype,\n * and acts as the final link in this prototype chain.\n *\n * NOTE: when the prototype name is `empty` we know it's not user-defined classes, so we can return undefined\n */\n return superclass?.name ? superclass : undefined;\n};\n/**\n * Check if the specified class is either the same as, or is a superclass of the provided class.\n */\nexport const isClassAssignableFrom = (cls1, cls2) => {\n let currentPrototype = cls2;\n while (currentPrototype) {\n if (currentPrototype === cls1) {\n return true;\n }\n currentPrototype = getSuperclass(currentPrototype);\n }\n return false;\n};\nexport const noop = () => () => {\n /* do nothing */\n};\n/**\n * Recursively omit keys from an object\n */\nexport const recursiveOmit = (obj, \n/**\n * Checker function which returns `true` if the object field should be omit\n */\nchecker) => {\n const newObj = deepClone(obj);\n const omit = (_obj, _checker) => {\n if (Array.isArray(_obj)) {\n _obj.forEach((o) => omit(o, _checker));\n }\n else {\n const o = _obj;\n for (const propKey in o) {\n if (Object.prototype.hasOwnProperty.call(_obj, propKey)) {\n const value = o[propKey];\n if (_checker(_obj, propKey)) {\n delete o[propKey];\n }\n else if (isObject(value)) {\n omit(value, _checker);\n }\n }\n }\n }\n };\n omit(newObj, checker);\n return newObj;\n};\n/**\n * Recursively remove fields with undefined values in object\n */\nexport const pruneObject = (obj) => pickBy(obj, (val) => val !== undefined);\n/**\n * Recursively remove fields with null values in object\n *\n * This is particularly useful in serialization, especially when handling response\n * coming from servers where `null` are returned for missing fields. We would like to\n * treat them as `undefined` instead, so we want to strip all the `null` values from the\n * plain JSON object.\n */\nexport const pruneNullValues = (obj) => pickBy(obj, (val) => val !== null);\n/**\n * Recursively sort object keys alphabetically\n */\nexport const sortObjectKeys = (value) => {\n const _sort = (obj) => {\n if (Array.isArray(obj)) {\n return obj.map(sortObjectKeys);\n }\n else if (typeof obj === 'object' && obj !== null) {\n const oldObj = obj;\n const newObj = {};\n Object.keys(oldObj)\n .sort((a, b) => a.localeCompare(b))\n .forEach((key) => {\n newObj[key] = _sort(oldObj[key]);\n });\n return newObj;\n }\n return obj;\n };\n return _sort(value);\n};\nexport const parseNumber = (val) => {\n const num = toNumber(val);\n if (isNaN(num)) {\n throw new Error(`Can't parse number '${val}'`);\n }\n return num;\n};\n/**\n * Stringify object shallowly\n * See https://stackoverflow.com/questions/16466220/limit-json-stringification-depth\n */\nexport const shallowStringify = (object) => JSON.stringify(object, (key, val) => key && val && typeof val !== 'number'\n ? Array.isArray(val)\n ? '[object Array]'\n : `${val}`\n : val);\nexport const generateEnumerableNameFromToken = (existingNames, token) => {\n if (!token.match(/^[\\w_-]+$/)) {\n throw new Error(`Token must only contain digits, letters, or special characters _ and -`);\n }\n const maxCounter = existingNames\n .map((name) => {\n const matchingCount = name.match(new RegExp(`^${token}_(?<count>\\\\d+)$`));\n return matchingCount?.groups?.count\n ? parseInt(matchingCount.groups.count, 10)\n : 0;\n })\n .reduce((max, num) => Math.max(max, num), 0);\n return `${token}_${maxCounter + 1}`;\n};\n/**\n * NOTE: These are small helpers to workaround Typescript strictness check with the flag --noUncheckedIndexedAccess enabled\n */\nexport const getNullableFirstEntry = (array) => array.length ? array[0] : undefined;\nexport const getNullableLastEntry = (array) => array.length ? array[array.length - 1] : undefined;\nexport const getNullableEntry = (array, idx) => {\n if (idx < 0 || idx >= array.length) {\n return undefined;\n }\n return array.length > idx ? array[idx] : undefined;\n};\nexport const getNonNullableEntry = (array, idx, message) => {\n assertTrue(0 <= idx && idx < array.length, `Index out of bound: ${idx}`);\n return guaranteeNonNullable(array[idx], message);\n};\n/**\n * NOTE: This object mutates the input object (obj1)\n * To disable this behavior, set `createClone=true`\n */\nexport const mergeObjects = (obj1, obj2, createClone) => mergeWith(createClone ? deepClone(obj1) : obj1, obj2, (o1, o2) => {\n if (Array.isArray(o1)) {\n return o1.concat(o2);\n }\n return undefined;\n});\nexport const promisify = (func) => new Promise((resolve, reject) => setTimeout(() => {\n try {\n resolve(func());\n }\n catch (error) {\n reject(error);\n }\n}, 0));\nexport const addUniqueEntry = (array, newEntry, comparator = (val1, val2) => val1 === val2) => {\n if (!array.find((entry) => comparator(entry, newEntry))) {\n array.push(newEntry);\n return true;\n }\n return false;\n};\nexport const changeEntry = (array, oldEntry, newEntry, comparator = (val1, val2) => val1 === val2) => {\n const idx = array.findIndex((entry) => comparator(entry, oldEntry));\n if (idx !== -1) {\n array[idx] = newEntry;\n return true;\n }\n return false;\n};\nexport const swapEntry = (array, entryOne, entryTwo, comparator = (val1, val2) => val1 === val2) => {\n const idxX = array.findIndex((entry) => comparator(entry, entryOne));\n const idxY = array.findIndex((entry) => comparator(entry, entryTwo));\n if (idxX !== -1 && idxY !== -1) {\n array[idxX] = entryTwo;\n array[idxY] = entryOne;\n return true;\n }\n return false;\n};\nexport const deleteEntry = (array, entryToDelete, comparator = (val1, val2) => val1 === val2) => {\n const idx = array.findIndex((entry) => comparator(entry, entryToDelete));\n if (idx !== -1) {\n array.splice(idx, 1);\n return true;\n }\n return false;\n};\nexport const printObject = (value, options) => {\n const opts = pruneObject({\n printFunctionName: false,\n maxDepth: options?.deep ? undefined : 1,\n });\n const text = prettyPrintObject(value, opts);\n return (text\n // We do these replacements because when we do this for production and the class name is minified,\n // we'd better show `[Object]` instead.\n .replace(/.*\\s\\{/g, '{')\n .replace(/\\[.*\\]/g, (val) => ['[Array]', '[Function]'].includes(val) ? val : '[Object]'));\n};\nexport const hasWhiteSpace = (val) => Boolean(val.match(/\\s/));\n//# sourceMappingURL=CommonUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { printObject, uuid, } from '../CommonUtils.js';\n/**\n * A generic error that can be used for building other errors in the application\n * which does not require Javascript stack trace.\n *\n * If the Javascript stack trace is needed to trace back where the problem occurs,\n * `EnrichedError` is the more suitable candidate.\n *\n * This type of error is useful for wrapping the innermost error or errors coming\n * from the servers. Since we enforce in the app that errors thrown must be of type\n * `Error`, this acts as a good wrapper to manage errors better.\n * See https://github.com/microsoft/TypeScript/issues/13219\n */\nexport class ApplicationError extends Error {\n uuid = uuid();\n constructor(message) {\n super();\n this.message =\n message === undefined || message === '' ? '(no error message)' : message;\n }\n /**\n * This provides more detail (better context) about the error, including the error message\n * stack trace, etc.\n */\n get detail() {\n return this.message;\n }\n}\n// Since Javascript does not fully support rethrowing error, we need to customize and manipulate the stack trace\n// See https://stackoverflow.com/questions/42754270/re-throwing-exception-in-nodejs-and-not-losing-stack-trace\nexport class EnrichedError extends Error {\n constructor(name, error, overideMessage) {\n super(overideMessage\n ? overideMessage\n : error instanceof Error\n ? error.message\n : error);\n this.name = name;\n // if the material used to make this error is also an error, we maintain the stack trace and\n // follow the `rethrown` error stack trace convention\n // See https://www.twilio.com/blog/how-to-read-and-understand-a-java-stacktrace\n if (error instanceof Error) {\n const messageLines = (this.message.match(/\\n/g) ?? []).length + 1;\n this.stack = `${(this.stack ?? '')\n .split('\\n')\n .slice(0, messageLines + 1)\n .join('\\n')}\\nCaused by: ${error.stack}`;\n }\n else {\n if (typeof Error.captureStackTrace === 'function') {\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // This only works in Chrome for now. Firefox (as of Feb 2020) will throw error\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n Error.captureStackTrace(this, this.constructor);\n }\n else {\n // otherwise, use the non-standard but defacto stack trace (available in most browser)\n this.stack = new Error(error).stack;\n }\n }\n }\n}\n/**\n * Signals that a method has been invoked at an illegal or\n * inappropriate point at runtime. In other words, the environment\n * or application is not in an appropriate state for the requested\n * operation.\n */\nexport class IllegalStateError extends EnrichedError {\n constructor(error) {\n super('Illegal State Error [PLEASE NOTIFY DEVELOPER]', error);\n }\n}\nexport class UnsupportedOperationError extends EnrichedError {\n constructor(message, unsupportedObject) {\n super('Unsupported Operation Error', message || unsupportedObject\n ? `${message}${unsupportedObject ? `\\n${printObject(unsupportedObject)}` : ''}`\n : undefined);\n }\n}\n/**\n * This is a relatively crude way to handle error of type unknown thrown for now.\n * We should revisit this when Typescript supports `throws` clause\n * See https://github.com/microsoft/TypeScript/issues/13219\n *\n * NOTE: There's a problem with this check in JSDOM leading so we have to disable this in test environment\n * JSDOM uses their own isolated object rather than native object for performance purpose\n * See https://github.com/jsdom/jsdom/issues/3082\n * For example, TypeErrors generated by `webidl2js` or `whatwg-url` used by `jsdom`, or manually-thrown ones inside impl classes,\n * are thrown using global.TypeError, not dom.window.TypeError. This change is hard to implement as of now\n * See https://github.com/jsdom/jsdom/issues/2727\n * See https://github.com/facebook/jest/issues/2549\n *\n * Read more related discussions at:\n * https://github.com/jsdom/jsdom/issues/1737\n * https://github.com/webcomponents/polyfills/issues/105\n * https://github.com/jsdom/jsdom/issues/1769\n * https://github.com/jsdom/jsdom/issues/2555\n */\nexport function assertErrorThrown(error) {\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n if (!(error instanceof Error)) {\n throw new IllegalStateError('Expected error to be thrown');\n }\n}\nexport const returnUndefOnError = (fn) => {\n try {\n return fn();\n }\n catch {\n return undefined;\n }\n};\nexport const decorateErrorMessageIfExists = (fn, errorMessageDecorator) => {\n try {\n return fn();\n }\n catch (error) {\n assertErrorThrown(error);\n error.message = errorMessageDecorator(error.message);\n throw error;\n }\n};\n//# sourceMappingURL=ErrorUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EnrichedError } from './ErrorUtils.js';\nexport class AssertionError extends EnrichedError {\n constructor(error, message) {\n super('Assertion Error', error, message);\n }\n}\nexport const isNonNullable = (value) => value !== null && value !== undefined;\nexport function assertNonNullable(value, message = '') {\n if (value === null || value === undefined) {\n throw new AssertionError(message || 'Value is nullable');\n }\n}\nexport const guaranteeNonNullable = (value, message = '') => {\n assertNonNullable(value, message);\n return value;\n};\nexport const isType = (value, clazz) => value instanceof clazz;\nexport const filterByType = (clazz) => (value) => isType(value, clazz);\n// Aserts typing doesn't work with all arrow function type declaration form\n// So we can use this: export const assertType: <T>(value: unknown, clazz: Clazz<T>, message: string) => asserts value is T = (value, clazz, message = '') => {\n// or the normal function form\n// See https://github.com/microsoft/TypeScript/issues/34523\n// See https://github.com/microsoft/TypeScript/pull/33622\nexport function assertType(value, clazz, message = '') {\n if (!(value instanceof clazz)) {\n throw new AssertionError(message || `Value is expected to be of type '${clazz.name}'`);\n }\n}\nexport const guaranteeType = (value, clazz, message = '') => {\n assertType(value, clazz, message);\n return value;\n};\nexport function isNonEmptyString(str) {\n return isNonNullable(str) && str !== '';\n}\nexport function assertNonEmptyString(str, message = '') {\n if (guaranteeNonNullable(str, message) === '') {\n throw new AssertionError(message || `Expected string value to be non-empty`);\n }\n}\nexport function guaranteeNonEmptyString(str, message = '') {\n assertNonEmptyString(str, message);\n return str;\n}\nexport function assertTrue(assertionValue, message = '') {\n if (!assertionValue) {\n throw new AssertionError(message || `Expected predicate to be truthy`);\n }\n}\nexport const isString = (val) => typeof val === 'string';\nexport const isNumber = (val) => typeof val === 'number' && !isNaN(val);\nexport const isBoolean = (val) => typeof val === 'boolean';\nexport const isObject = (val) => typeof val === 'object' && val !== null;\nexport const isPlainObject = (val) => isObject(val) && val.constructor.name === 'Object';\nexport function assertIsString(val, message = '') {\n if (!isString(val)) {\n throw new AssertionError(message || `Value is expected to be a string`);\n }\n}\nexport function assertIsNumber(val, message = '') {\n if (!isNumber(val)) {\n throw new AssertionError(message || `Value is expected to be a number`);\n }\n}\nexport function assertIsBoolean(val, message = '') {\n if (!isBoolean(val)) {\n throw new AssertionError(message || `Value is expected to be a boolean`);\n }\n}\nexport function assertIsObject(val, message = '') {\n if (!isObject(val)) {\n throw new AssertionError(message || `Value is expected to be a object`);\n }\n}\nexport const guaranteeIsString = (val, message = '') => {\n assertIsString(val, message);\n return val;\n};\nexport const guaranteeIsNumber = (val, message = '') => {\n assertIsNumber(val, message);\n return val;\n};\nexport const guaranteeIsBoolean = (val, message = '') => {\n assertIsBoolean(val, message);\n return val;\n};\nexport const guaranteeIsObject = (val, message = '') => {\n assertIsObject(val, message);\n return val;\n};\n//# sourceMappingURL=AssertionUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { StatusCodes } from 'http-status-codes';\nimport { isNonNullable, isString, isObject, AssertionError, assertTrue, } from '../error/AssertionUtils.js';\nimport { deflate } from 'pako';\nimport queryString from 'query-string';\nimport { returnUndefOnError } from '../error/ErrorUtils.js';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\n/**\n * Unlike the download call (GET requests) which is gziped, the upload call send uncompressed data which is in megabytes realms\n * for bigger project. This really slows down operations. As such, we compress data using `zlib` for all network calls to execution\n * server. This requires the backend to uncompress, which for small models might end up adding a little overhead, so in the future, we might\n * want to make this decision `to compress or to not compress` more smartly and dynamicly (e.g. potentially to scan the size of the data/model\n * and decide the compression strategy).\n */\nconst compressData = (data) => new Blob([deflate(isObject(data) ? JSON.stringify(data) : data)]);\nexport const URL_SEPARATOR = '/';\n/**\n * Reference: https://uibakery.io/regex-library/url\n */\nconst URL_REGEX = new RegExp('^https?://(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\\\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$');\nexport const HttpStatus = StatusCodes;\nexport const CHARSET = 'charset=utf-8';\nexport var HttpHeader;\n(function (HttpHeader) {\n HttpHeader[\"CONTENT_TYPE\"] = \"Content-Type\";\n HttpHeader[\"ACCEPT\"] = \"Accept\";\n})(HttpHeader || (HttpHeader = {}));\nexport var ContentType;\n(function (ContentType) {\n ContentType[\"APPLICATION_JSON\"] = \"application/json\";\n ContentType[\"APPLICATION_XML\"] = \"application/xml\";\n ContentType[\"APPLICATION_ZLIB\"] = \"application/zlib\";\n ContentType[\"TEXT_PLAIN\"] = \"text/plain\";\n ContentType[\"TEXT_CSV\"] = \"text/csv\";\n ContentType[\"ALL\"] = \"*/*\";\n})(ContentType || (ContentType = {}));\nexport var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"GET\"] = \"GET\";\n HttpMethod[\"PUT\"] = \"PUT\";\n HttpMethod[\"POST\"] = \"POST\";\n HttpMethod[\"DELETE\"] = \"DELETE\";\n})(HttpMethod || (HttpMethod = {}));\nconst DEFAULT_CLIENT_REQUEST_OPTIONS = {\n mode: 'cors', // allow CORS - See https://developer.mozilla.org/en-US/docs/Web/API/Request/mode\n credentials: 'include', // allow sending credentials to other domain\n /**\n * NOTE: We must set this to `follow` for the fetch to handle 3xx redirects automatically.\n * The other modes available are `error` which will throw error and does not really give a\n * response object, and `manual` which returns an opaque response object with status code 0;\n * either way, we cannot really handle the redirect manually ourselves.\n * See https://fetch.spec.whatwg.org/#concept-request-redirect-mode\n * See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect\n */\n redirect: 'follow',\n};\n// NOTE: We could further improve this by using the MIME library https://flaviocopes.com/node-get-file-extension-mime-type/\nexport const getContentTypeFileExtension = (type) => {\n switch (type) {\n case ContentType.APPLICATION_JSON:\n return 'json';\n case ContentType.APPLICATION_XML:\n return 'xml';\n case ContentType.TEXT_CSV:\n return 'csv';\n default:\n return 'txt';\n }\n};\n/**\n * NOTE: the latter headers value will override the those of the first\n */\nexport const mergeRequestHeaders = (headersOne, headersTwo) => {\n const requestHeaders = {};\n if (headersOne) {\n Object.entries(headersOne).forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n }\n if (headersTwo) {\n Object.entries(headersTwo).forEach(([key, value]) => {\n requestHeaders[key] = value;\n });\n }\n return requestHeaders;\n};\nconst MAX_ERROR_MESSAGE_LENGTH = 5000;\n/**\n * Custom error for service client with response details.\n * NOTE: Since is particular to execution error we might want to separate this out to another place and leave network client\n * as pure/generic as possible\n */\nconst extractMessage = (payload) => {\n if (isObject(payload)) {\n return isString(payload.message)\n ? payload.message\n : JSON.stringify(payload);\n }\n let payloadAsObject;\n try {\n payloadAsObject = JSON.parse(payload);\n }\n catch {\n // NOTE: ignored, above is best effort\n }\n return payloadAsObject && isString(payloadAsObject.message)\n ? payloadAsObject.message\n : payload;\n};\n/**\n * This is a fairly basic way to attempt re-authentication.\n * We create an <iframe> to load a re-authentication url\n * which suppose to silently refresh the authentication cookie\n * and requires no action from users.\n *\n * NOTE: authentication is very specific to the deployment context\n * i.e. how the servers are being setup, so this way of re-authenticate\n * should be optional and configurable.\n */\nexport const autoReAuthenticate = (url) => \n// eslint-disable-next-line @typescript-eslint/ban-types\nnew Promise((resolve) => {\n const id = 'AUTO_AUTHENTICATION_IFRAME';\n const previous = document.getElementById(id);\n previous?.remove();\n const element = document.createElement('iframe');\n element.id = id;\n element.src = url;\n element.style.display = 'none';\n element.addEventListener('load', () => {\n element.remove();\n resolve();\n });\n document.body.appendChild(element);\n});\nexport class NetworkClientError extends Error {\n response;\n payload;\n constructor(response, payload) {\n super();\n if (typeof Error.captureStackTrace === 'function') {\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // This only works in Chrome for now. Firefox (as of Feb 2020) will throw error\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n Error.captureStackTrace(this, this.constructor);\n }\n else {\n // otherwise, use the non-standard but defacto stack trace (available in most browser)\n this.stack = new Error().stack;\n }\n this.name = 'Network Client Error';\n this.response = response;\n const { status, statusText, url } = response;\n const summary = `Received response with status ${status} (${statusText}) for ${url}`;\n this.message =\n (payload\n ? extractMessage(payload).substring(0, MAX_ERROR_MESSAGE_LENGTH)\n : '') || summary;\n this.payload = payload;\n }\n}\nexport const makeUrl = (baseUrl, url, parameters) => {\n if (!baseUrl && !returnUndefOnError(() => new URL(url))) {\n throw new Error(`Can't build URL string: base URL is not specified and the provided URL '${url}' is not absolute`);\n }\n const fullUrl = new URL(url, baseUrl);\n if (parameters instanceof Object) {\n Object.entries(parameters).forEach(([name, value]) => {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // if value is an array, keep adding it to the URL with the same parameter name, for example: /reviews?revisionIds=rev2&revisionIds=rev1\n value\n .filter(isNonNullable)\n .forEach((subVal) => fullUrl.searchParams.append(name, subVal.toString()));\n }\n else {\n fullUrl.searchParams.append(name, value.toString());\n }\n }\n });\n }\n return fullUrl.toString();\n};\n// NOTE: in case of missing CORS headers, failed authentication manifests itself as CORS error\nconst couldBeCORS = (error) => error instanceof TypeError && error.message === 'Failed to fetch';\nconst processResponse = async (response, init, responseProcessConfig) => {\n responseProcessConfig?.preprocess?.(response);\n if (!response.ok) {\n let payload;\n try {\n payload = await response.text();\n payload = JSON.parse(payload);\n }\n catch {\n // NOTE: ignored, above is best effort\n }\n return Promise.reject(new NetworkClientError(response, payload));\n }\n if (responseProcessConfig?.skipProcessing) {\n return Promise.resolve(response);\n }\n if (response.status === HttpStatus.NO_CONTENT) {\n return Promise.resolve(undefined);\n }\n // TODO: might need to handle */* ContentType and other types\n // Note that right now what we support is rather simplistic, as we always expect `application/json` or `text/plain`\n // and use these to determine how we should decode the response. However, we should properly allow passing in\n // a field in response process config to specify the format of the expected response body\n //\n // See https://www.npmjs.com/package/mime-types\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n // See https://github.github.io/fetch/\n const accept = init.headers.Accept;\n switch (accept) {\n case ContentType.APPLICATION_JSON:\n return response.json();\n case ContentType.TEXT_PLAIN:\n return response.text();\n default:\n return Promise.reject(new NetworkClientError(response, `Can't process response for request with Content-Type '${accept}'`));\n }\n};\nexport const createRequestHeaders = (method, headers) => {\n const baseRequestHeaders = {};\n /**\n * NOTE: here we set the accept header to application/json instead of the default value\n * as that will imply the server can send us text/html sometimes when there is an\n * authentication problem, which is not desirable.\n */\n baseRequestHeaders.Accept = ContentType.APPLICATION_JSON;\n if (method !== HttpMethod.GET) {\n baseRequestHeaders[HttpHeader.CONTENT_TYPE] =\n `${ContentType.APPLICATION_JSON};${CHARSET}`;\n }\n return mergeRequestHeaders(baseRequestHeaders, headers);\n};\n/**\n * Simple wrapper around native `fetch` API. For `options`, see documentation for \"init\"\n * See https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class NetworkClient {\n options = {};\n baseUrl;\n constructor(config) {\n this.baseUrl = config?.baseUrl;\n this.options = {\n ...DEFAULT_CLIENT_REQUEST_OPTIONS,\n ...(config?.options ?? {}),\n };\n }\n async get(url, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n // NOTE: do not use Content-Type for GET to avoid unnecessary pre-flight when cross-origin\n return this.request(HttpMethod.GET, url, undefined, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async put(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.PUT, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async post(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.POST, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async delete(url, data = {}, options = {}, headers, parameters, requestProcessConfig, responseProcessConfig) {\n return this.request(HttpMethod.DELETE, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig);\n }\n async request(method, url, data, options, headers, parameters, requestProcessConfig, responseProcessConfig) {\n const requestUrl = makeUrl(this.baseUrl, url, parameters ?? {});\n if ((isString(data) || isObject(data)) &&\n requestProcessConfig?.enableCompression) {\n assertTrue(method !== HttpMethod.GET, ' GET request should not have any request payload');\n data = compressData(data);\n // NOTE: do not use Content-Type for GET to avoid unnecessary pre-flight when cross-origin\n headers = mergeRequestHeaders(headers, {\n // Override Content-Type header when compression is enabled\n [HttpHeader.CONTENT_TYPE]: `${ContentType.APPLICATION_ZLIB};${CHARSET}`,\n });\n }\n let body;\n if (data !== undefined) {\n if (isString(data) || data instanceof Blob) {\n body = data;\n }\n else if (isObject(data)) {\n body = JSON.stringify(data);\n }\n else {\n throw new AssertionError(`Request body can only be either a 'string' or an 'object'`);\n }\n }\n const requestInit = {\n ...this.options,\n ...options,\n method,\n body: body,\n headers: createRequestHeaders(method, headers),\n };\n /**\n * For network client to work, we need an implementation of `window.fetch` to be present.\n * Modern browsers should already have native support for `fetch`.\n * In case they don't (such as in test where we use `jsdom` for example),\n * there are several ways to go about this,but we recommend using `whatwg-fetch` polyfill.\n *\n * Why favor `whatwg-fetch`?\n * It's Github's polyfill for a subset of features of Fetch API.\n * See https://github.com/github/fetch#read-this-first\n * What about `axios`? `axios` has pretty nice API, but larger bundle-size for no particular reason\n * See https://github.com/axios/axios/issues/1333#issuecomment-511375282\n * What about `node-fetch`? `node-fetch` is for server-side only, while `whatwg-fetch` is for client-side\n * See https://www.npmjs.com/package/node-fetch#motivation\n */\n return fetch(requestUrl, requestInit)\n .then((response) => {\n if (\n // NOTE: status 0 is either timeout or client error possibly caused by authentication\n response.status === 0 ||\n response.status === HttpStatus.UNAUTHORIZED) {\n // NOTE: we might want to consider different handling here rather than just proceeding with a retry\n // this is a good place to add an auto retry/authenticate mechanism\n if (responseProcessConfig?.autoReAuthenticateUrl) {\n return autoReAuthenticate(responseProcessConfig.autoReAuthenticateUrl)\n .then(() => fetch(requestUrl, requestInit))\n .then((resp) => processResponse(resp, requestInit, responseProcessConfig));\n }\n return fetch(requestUrl, requestInit).then((resp) => processResponse(resp, requestInit, responseProcessConfig));\n }\n return processResponse(response, requestInit, responseProcessConfig);\n })\n .catch((error) => couldBeCORS(error)\n ? // NOTE: we might want to consider different handling here rather than just proceeding with a retry\n fetch(requestUrl, requestInit).then((resp) => processResponse(resp, requestInit, responseProcessConfig))\n : Promise.reject(error));\n }\n}\n/**\n * Create and download a file using data URI\n * See http://stackoverflow.com/questions/283956\n */\nexport const downloadFileUsingDataURI = (fileName, content, contentType) => {\n const blob = new Blob([content], { type: contentType });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n if (typeof link.download === 'string') {\n document.body.appendChild(link); // Firefox requires the link to be in the body\n link.download = fileName;\n link.href = url;\n link.click();\n document.body.removeChild(link); // remove the link when done\n }\n else {\n location.replace(url);\n }\n};\nexport const createUrlStringFromData = (data, contentType, base64) => base64\n ? `data:${contentType};base64,${window.btoa(data)}`\n : `data:${contentType},${encodeURIComponent(data)}`;\n// Buffer.from(str, 'base64')` and`buf.toString('base64')\n// NOTE: we can potentially use the native `URLSearchParams` as it provides\n// fairly good API and structured output, but it does not support duplicated query\n// such as `?foo=1&foo=2`, only the first value of `foo` will be recorded\n// See https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\nexport const getQueryParameters = (url, isFullUrl = false) => {\n const params = isFullUrl\n ? queryString.parseUrl(url).query\n : queryString.parse(url);\n return params;\n};\nexport const getQueryParameterValue = (key, data) => {\n const paramValue = data[key];\n return paramValue ? decodeURIComponent(paramValue) : undefined;\n};\nexport const stringifyQueryParams = (params) => {\n const data = {};\n Object.entries(params).forEach(([key, value]) => {\n if (!value) {\n return;\n }\n data[key] = value.toString();\n });\n return queryString.stringify(data);\n};\nexport const addQueryParametersToUrl = (url, val) => (val ? `${url}?${val}` : url);\nexport const buildUrl = (parts) => parts\n .map((part) => part.replaceAll(/^\\/+/g, '').replaceAll(/\\/+$/g, ''))\n .join(URL_SEPARATOR);\nexport const sanitizeURL = (val) => sanitizeUrl(val);\nexport const isValidURL = (val) => URL_REGEX.test(val);\n//# sourceMappingURL=NetworkUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var APPLICATION_EVENT;\n(function (APPLICATION_EVENT) {\n APPLICATION_EVENT[\"APPLICATION_SETUP__FAILURE\"] = \"application.setup.failure\";\n APPLICATION_EVENT[\"APPLICATION_LOAD__SUCCESS\"] = \"application.load.success\";\n APPLICATION_EVENT[\"APPLICATION_LOAD__FAILURE\"] = \"application.load.failure\";\n APPLICATION_EVENT[\"ILLEGAL_APPLICATION_STATE_OCCURRED\"] = \"application.error.illegal-state\";\n APPLICATION_EVENT[\"APPLICATION_CONFIGURATION__FAILURE\"] = \"application.configuration.failure\";\n APPLICATION_EVENT[\"IDENTITY_AUTO_FETCH__FAILURE\"] = \"application.identity.auto-fetch.failure\";\n APPLICATION_EVENT[\"DOCUMENTATION_FETCH__FAILURE\"] = \"application.documentation.fetch.failure\";\n APPLICATION_EVENT[\"DOCUMENTATION_LOAD__SKIP\"] = \"application.documentation.load.skip\";\n APPLICATION_EVENT[\"DOCUMENTATION_REQUIREMENT_CHECK__FAILURE\"] = \"application.documentation.requirement-check.failure\";\n APPLICATION_EVENT[\"CONTEXTUAL_DOCUMENTATION_LOAD__SKIP\"] = \"application.virtual-assistant.contextual-documentation-load.skip\";\n APPLICATION_EVENT[\"VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS\"] = \"application.virtual-assistant.documentation-entry.access\";\n APPLICATION_EVENT[\"TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE\"] = \"application.load.terminal-command.configuration-check.failure\";\n APPLICATION_EVENT[\"COLOR_THEME_CONFIGURATION_CHECK__FAILURE\"] = \"application.layout.color-theme.configuration-check.failure\";\n APPLICATION_EVENT[\"SETTING_CONFIGURATION_CHECK__FAILURE\"] = \"application.setting.configuration-check.failure\";\n APPLICATION_EVENT[\"SETTING_RETRIVE_FAILURE\"] = \"application.setting.retrieve.failure\";\n APPLICATION_EVENT[\"USER_DATA_RETRIEVE_FAILURE\"] = \"application.user-data.retrieve.failure\";\n APPLICATION_EVENT[\"COMMAND_CENTER_REGISTRATION__FAILURE\"] = \"application.command.registration.failure\";\n APPLICATION_EVENT[\"DEVELOPMENT_ISSUE\"] = \"development.issue\";\n APPLICATION_EVENT[\"APPLICATION_CONTEXT__ACCESS\"] = \"application.context.access\";\n APPLICATION_EVENT[\"APPLICATION_USAGE__INTERRUPT\"] = \"application.usage.interrupt\";\n APPLICATION_EVENT[\"APPLICATION_TELEMETRY_EVENT__FAILURE\"] = \"application.telemetry-event.failure\";\n})(APPLICATION_EVENT || (APPLICATION_EVENT = {}));\n//# sourceMappingURL=LegendApplicationEvent.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pruneNullValues } from '../CommonUtils.js';\nimport { custom, SKIP, deserialize, serialize, } from 'serializr';\nexport class SerializationFactory {\n schema;\n deserializeNullAsUndefined;\n constructor(schema, options) {\n this.schema = schema;\n this.deserializeNullAsUndefined = Boolean(options?.deserializeNullAsUndefined);\n }\n toJson(val) {\n return serialize(this.schema, val);\n }\n fromJson(val) {\n return deserialize(this.schema, this.deserializeNullAsUndefined ? pruneNullValues(val) : val);\n }\n}\nexport const usingModelSchema = (schema) => custom((value) => (value === undefined ? SKIP : serialize(schema, value)), (value) => deserialize(schema, value));\n// NOTE: we need these methods because `map()` of `serializr` tries to smartly\n// determines if it should produce object or ES6 Map but we always want ES6 Map,\n// so we would use this function\nexport const deserializeMap = (val, itemDeserializer) => {\n const result = new Map();\n Object.keys(val).forEach((key) => result.set(key, itemDeserializer(val[key])));\n return result;\n};\nexport const serializeMap = (val, itemSerializer) => {\n const result = {};\n val.forEach((v, key) => {\n result[key] = itemSerializer(v);\n });\n return result;\n};\nexport const usingConstantValueSchema = (value) => custom(() => value, () => value);\n/**\n * This is the idiomatic usage pattern for `optional(custom(...))`.\n *\n * `optional` only affects serialization so we must make sure to check\n * if the value is `undefined` or not, if yes, serialize, else, return `undefined`\n * which will be processed by `optional(...)` as `SKIP`.\n *\n * `optional` does not affect deserialization, however, as `undefined` values\n * are automatically skipped\n * See https://github.com/mobxjs/serializr/issues/73#issuecomment-535641545\n */\nexport const optionalCustom = (\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nserializer, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeserializer) => custom((val) => (val ? serializer(val) : SKIP), (val) => (val ? deserializer(val) : SKIP));\nexport const optionalCustomUsingModelSchema = (schema) => custom((val) => (val ? serialize(schema, val) : SKIP), (val) => (val ? deserialize(schema, val) : SKIP));\nexport const deserializeArray = (values, itemDeserializer, options) => {\n if (Array.isArray(values)) {\n return values.map(itemDeserializer);\n }\n return options?.skipIfEmpty ? SKIP : [];\n};\nexport const serializeArray = (values, itemSerializer, options) => {\n let forceReturnEmptyInTest = false;\n // NOTE: this block is meant for test, `webpack` will tree-shake it\n // so we never reach inside, else we would get error about `process is not defined` as we're\n // in browser environment\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'test') {\n forceReturnEmptyInTest =\n Boolean(options?.INTERNAL__forceReturnEmptyInTest) &&\n // eslint-disable-next-line no-process-env\n process.env.TEST_GROUP === 'engine-roundtrip';\n }\n if (Array.isArray(values)) {\n return values.length\n ? values.map((value) => itemSerializer(value))\n : forceReturnEmptyInTest\n ? []\n : options?.skipIfEmpty\n ? SKIP\n : [];\n }\n return forceReturnEmptyInTest ? [] : SKIP;\n};\n/**\n * This is the idiomatic usage pattern for serialization of optional list of objects.\n *\n * Notice our particular usage of `serializeArray` and `deserializeArray` that is deisnged\n * for testing and accounting for logic mismatches between servers and studio\n */\nexport const customListWithSchema = (schema, options) => custom((values) => serializeArray(values, (value) => serialize(schema, value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserialize(schema, value), {\n skipIfEmpty: false,\n}));\nexport const customList = (serializer, deserializer, options) => custom((values) => serializeArray(values, (value) => serializer(value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserializer(value), {\n skipIfEmpty: false,\n}));\nexport const customEquivalentList = (options) => customList((value) => value, (value) => value, options);\nexport const optionalCustomListWithSchema = (schema, options) => optionalCustom((values) => serializeArray(values, (value) => serialize(schema, value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserialize(schema, value), {\n skipIfEmpty: false,\n}));\nexport const optionalCustomList = (serializer, deserializer, options) => optionalCustom((values) => serializeArray(values, (value) => serializer(value), {\n skipIfEmpty: true,\n INTERNAL__forceReturnEmptyInTest: options?.INTERNAL__forceReturnEmptyInTest,\n}), (values) => deserializeArray(values, (value) => deserializer(value), {\n skipIfEmpty: false,\n}));\n/**\n * NOTE: this is a workaround for `serializr` to avoid the magic extension mechanism provided\n * by `createModelSchema`, where depending on the order schemas are defined, if the schema of the\n * super class is specified first, when we serialize subclasses, we would get fields of the order\n * of fields from the super classes first, followed by fields from the subclasses, not the order\n * specified in the subclass's schema.\n *\n * See https://github.com/mobxjs/serializr/issues/179\n */\nexport const TEMPORARY__disableModelSchemaExtensionMechanism = (schema) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n schema.extends = undefined;\n return schema;\n};\n//# sourceMappingURL=SerializationUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SerializationFactory, LogEvent, uniq, guaranteeNonEmptyString, } from '@finos/legend-shared';\nimport { createModelSchema, custom, list, optional, primitive, } from 'serializr';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nexport class DocumentationEntry {\n key;\n markdownText;\n title;\n text;\n url;\n related;\n static serialization = new SerializationFactory(createModelSchema(DocumentationEntry, {\n markdownText: custom((val) => val, (val) => (val.value ? val : undefined)),\n related: optional(list(primitive())),\n title: optional(primitive()),\n text: optional(primitive()),\n url: optional(primitive()),\n }));\n static create(json, documentationKey) {\n const entry = DocumentationEntry.serialization.fromJson(json);\n entry.key = documentationKey;\n return entry;\n }\n}\nexport const collectKeyedDocumentationEntriesFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: entry[0],\n content: DocumentationEntry.create(entry[1], entry[0]),\n}));\nexport const collectDocumentationLinkEntryFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: guaranteeNonEmptyString(entry[0], \"Documentation link 'key' is missing\"),\n label: guaranteeNonEmptyString(entry[1].label, \"Documentation link 'label' is missing\"),\n url: guaranteeNonEmptyString(entry[1].url, \"Documentation link 'url' is missing\"),\n}));\nexport const collectContextualDocumentationEntries = (config) => Object.entries(config).map((entry) => ({\n context: entry[0],\n documentationKey: entry[1],\n}));\nexport class DocumentationService {\n url;\n links;\n docRegistry = new Map();\n contextualDocIndex = new Map();\n constructor(applicationStore) {\n // set the main documenation site url\n this.url = applicationStore.config.documentationUrl;\n this.links = applicationStore.config.documentationLinkEntries;\n /**\n * NOTE: the order of documentation entry overidding is (the later override the former):\n * 1. Natively specified: specified in the codebase (no overriding allowed within this group of documentation entries):\n * since we have extension mechanism, the order of plugins matter,\n * we do not allow overriding, i.e. so the first specification for a documentation key wins\n * 2. Fetched from documentation registries (no overriding allowed within this group of documentation entries):\n * since we have extension mechanism and allow specifying multiple registry URLS,\n * we do not allow overriding, i.e. so the first specification for a documentation key wins\n * 3. Configured in application config (overiding allowed within this group)\n */\n // build doc registry\n applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraKeyedDocumentationEntries?.() ?? [])\n .forEach((entry) => {\n // NOTE: Entries specified natively will not override each other. This is to prevent entries from extensions\n // accidentally overide entries from core.\n if (this.hasDocEntry(entry.key)) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_LOAD__SKIP), entry.key);\n }\n else {\n this.docRegistry.set(entry.key, entry.content);\n }\n });\n // entries from config will override entries specified natively\n applicationStore.config.keyedDocumentationEntries.forEach((entry) => this.docRegistry.set(entry.key, entry.content));\n const contextualDocEntries = applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraContextualDocumentationEntries?.() ?? []);\n // verify that required documentations are available\n const missingDocumentationEntries = [];\n uniq(applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraRequiredDocumentationKeys?.() ?? [])\n .concat(contextualDocEntries.map((entry) => entry.documentationKey))).forEach((key) => {\n if (!this.docRegistry.has(key)) {\n missingDocumentationEntries.push(key);\n }\n });\n if (missingDocumentationEntries.length) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_REQUIREMENT_CHECK__FAILURE), `Can't find corresponding documentation entry for keys:\\n${missingDocumentationEntries\n .map((key) => `- ${key}`)\n .join('\\n')}`);\n }\n // Contextual Documentation\n contextualDocEntries.forEach((entry) => {\n // NOTE: Entries specified natively will not override each other. This is to prevent entries from extensions\n // overriding entries from core.\n //\n // However, it might be useful to allow extending the list of related doc entries.\n // This allows extensions to broaden related doc entries for contextual docs\n // If we need to support this behavior, we could create a dedicated extension method\n if (this.hasContextualDocEntry(entry.context)) {\n applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.CONTEXTUAL_DOCUMENTATION_LOAD__SKIP), entry.context);\n }\n else {\n const existingDocEntry = this.getDocEntry(entry.documentationKey);\n if (existingDocEntry) {\n this.contextualDocIndex.set(entry.context, existingDocEntry);\n }\n }\n });\n // entries from config will override entries specified natively\n applicationStore.config.contextualDocEntries.forEach((entry) => {\n const existingDocEntry = this.getDocEntry(entry.documentationKey);\n if (existingDocEntry) {\n this.contextualDocIndex.set(entry.context, existingDocEntry);\n }\n });\n }\n getDocEntry(key) {\n return this.docRegistry.get(key);\n }\n hasDocEntry(key) {\n return this.docRegistry.has(key);\n }\n getContextualDocEntry(key) {\n return this.contextualDocIndex.get(key);\n }\n hasContextualDocEntry(key) {\n return this.contextualDocIndex.has(key);\n }\n getAllDocEntries() {\n return Array.from(this.docRegistry.values());\n }\n publishDocRegistry() {\n const result = {};\n this.docRegistry.forEach((value, key) => {\n result[key] = DocumentationEntry.serialization.toJson(value);\n });\n return result;\n }\n publishContextualDocIndex() {\n const result = {};\n this.contextualDocIndex.forEach((value, key) => {\n result[key] = value.key;\n });\n return result;\n }\n}\n//# sourceMappingURL=DocumentationService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nvar ACTION_STATE;\n(function (ACTION_STATE) {\n ACTION_STATE[\"INITIAL\"] = \"INITIAL\";\n ACTION_STATE[\"IN_PROGRESS\"] = \"IN_PROGRESS\";\n ACTION_STATE[\"SUCCEEDED\"] = \"SUCEEDED\";\n ACTION_STATE[\"FAILED\"] = \"FAILED\";\n})(ACTION_STATE || (ACTION_STATE = {}));\nexport class ActionState {\n state;\n _message;\n _messageFormatter;\n constructor() {\n this.state = ACTION_STATE.INITIAL;\n }\n setMessage(val) {\n this._message = val;\n }\n setMessageFormatter(val) {\n this._messageFormatter = val;\n }\n reset() {\n this.state = ACTION_STATE.INITIAL;\n return this;\n }\n inProgress() {\n this.state = ACTION_STATE.IN_PROGRESS;\n return this;\n }\n fail() {\n this.state = ACTION_STATE.FAILED;\n return this;\n }\n pass() {\n this.state = ACTION_STATE.SUCCEEDED;\n return this;\n }\n complete(hasSucceeded = true) {\n if (hasSucceeded) {\n this.pass();\n }\n else {\n this.fail();\n }\n return this;\n }\n sync(val) {\n const data = val.exportData();\n this.state = data.state;\n this._message = data.message;\n }\n exportData() {\n return {\n state: this.state,\n message: this._message,\n };\n }\n get isInInitialState() {\n return this.state === ACTION_STATE.INITIAL;\n }\n get isInProgress() {\n return this.state === ACTION_STATE.IN_PROGRESS;\n }\n get hasFailed() {\n return this.state === ACTION_STATE.FAILED;\n }\n get hasSucceeded() {\n return this.state === ACTION_STATE.SUCCEEDED;\n }\n get message() {\n return this._message\n ? this._messageFormatter\n ? this._messageFormatter(this._message)\n : this._message\n : undefined;\n }\n /**\n * Use this if only the completion state of the action is of concern,\n * i.e. we don't care if it fails or succeeds.\n */\n get hasCompleted() {\n return this.hasFailed || this.hasSucceeded;\n }\n static create() {\n return makeObservable(new ActionState(), {\n state: observable,\n _message: observable,\n reset: action,\n inProgress: action,\n pass: action,\n fail: action,\n complete: action,\n setMessage: action,\n sync: action,\n isInInitialState: computed,\n isInProgress: computed,\n hasFailed: computed,\n hasSucceeded: computed,\n hasCompleted: computed,\n message: computed,\n });\n }\n}\n//# sourceMappingURL=ActionState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '../application/AbstractPluginManager.js';\nexport var CORE_TRACER_TAG;\n(function (CORE_TRACER_TAG) {\n CORE_TRACER_TAG[\"USER\"] = \"user\";\n CORE_TRACER_TAG[\"ENV\"] = \"env\";\n CORE_TRACER_TAG[\"RESULT\"] = \"result\";\n CORE_TRACER_TAG[\"ERROR\"] = \"error\";\n CORE_TRACER_TAG[\"HTTP_STATUS\"] = \"status\";\n CORE_TRACER_TAG[\"HTTP_REQUEST_METHOD\"] = \"method\";\n CORE_TRACER_TAG[\"HTTP_REQUEST_URL\"] = \"url\";\n})(CORE_TRACER_TAG || (CORE_TRACER_TAG = {}));\nexport class TracerServicePlugin extends AbstractPlugin {\n install(pluginManager) {\n pluginManager.registerTracerServicePlugin(this);\n }\n}\nexport class Trace {\n traceEntries = [];\n setup(traceEntries) {\n this.traceEntries = traceEntries;\n }\n bootstrap(response) {\n this.traceEntries.forEach((entry) => {\n entry.plugin.bootstrap(entry.clientSpan, response);\n });\n }\n reportSuccess() {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeClientSpan(entry.clientSpan, undefined);\n });\n }\n reportError(error) {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeClientSpan(entry.clientSpan, error);\n });\n }\n close() {\n this.traceEntries.forEach((entry) => {\n entry.plugin.concludeServerSpan(entry.serverSpan);\n });\n }\n}\nexport class TracerService {\n plugins = [];\n registerPlugins(plugins) {\n this.plugins = plugins;\n }\n createTrace(traceData, method, url, headers) {\n const trace = new Trace();\n if (traceData) {\n trace.setup(this.plugins.map((plugin) => {\n const clientSpan = plugin.createClientSpan(traceData);\n const serverSpan = plugin.createServerSpan(clientSpan, method, url, headers);\n return {\n clientSpan,\n serverSpan,\n plugin,\n };\n }));\n }\n return trace;\n }\n}\n//# sourceMappingURL=TracerService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Fuse from 'fuse.js';\nexport const FuzzySearchEngine = Fuse;\n//# sourceMappingURL=FuzzySearch.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nexport var ADVANCED_FUZZY_SEARCH_MODE;\n(function (ADVANCED_FUZZY_SEARCH_MODE) {\n ADVANCED_FUZZY_SEARCH_MODE[\"STANDARD\"] = \"standard\";\n ADVANCED_FUZZY_SEARCH_MODE[\"INCLUDE\"] = \"include match\";\n ADVANCED_FUZZY_SEARCH_MODE[\"EXACT\"] = \"exact match\";\n ADVANCED_FUZZY_SEARCH_MODE[\"INVERSE\"] = \"excludes exact match\";\n})(ADVANCED_FUZZY_SEARCH_MODE || (ADVANCED_FUZZY_SEARCH_MODE = {}));\nexport class FuzzySearchAdvancedConfigState {\n currentMode = ADVANCED_FUZZY_SEARCH_MODE.STANDARD;\n onSearchModeChange;\n constructor(onSearchModeChange) {\n makeObservable(this, {\n currentMode: observable,\n isAdvancedSearchActive: computed,\n setCurrentMode: action,\n });\n this.onSearchModeChange = onSearchModeChange;\n }\n get isAdvancedSearchActive() {\n return this.currentMode !== ADVANCED_FUZZY_SEARCH_MODE.STANDARD;\n }\n generateSearchText(val) {\n switch (this.currentMode) {\n case ADVANCED_FUZZY_SEARCH_MODE.INCLUDE: {\n return `'\"${val}\"`;\n }\n case ADVANCED_FUZZY_SEARCH_MODE.EXACT: {\n return `=\"${val}\"`;\n }\n case ADVANCED_FUZZY_SEARCH_MODE.INVERSE: {\n return `!\"${val}\"`;\n }\n default: {\n return val;\n }\n }\n }\n setCurrentMode(val) {\n this.currentMode = val;\n this.onSearchModeChange();\n }\n}\n//# sourceMappingURL=FuzzySearchAdvancedConfigState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable, computed } from 'mobx';\nimport { guaranteeNonEmptyString, uuid, isNonNullable, ActionState, FuzzySearchEngine, FuzzySearchAdvancedConfigState, } from '@finos/legend-shared';\nexport var VIRTUAL_ASSISTANT_TAB;\n(function (VIRTUAL_ASSISTANT_TAB) {\n VIRTUAL_ASSISTANT_TAB[\"SEARCH\"] = \"SEARCH\";\n VIRTUAL_ASSISTANT_TAB[\"CONTEXTUAL_SUPPORT\"] = \"CONTEXTUAL_SUPPORT\";\n})(VIRTUAL_ASSISTANT_TAB || (VIRTUAL_ASSISTANT_TAB = {}));\nexport const DOCUMENTATION_SEARCH_RESULTS_LIMIT = 100;\nexport class VirtualAssistantDocumentationEntry {\n uuid = uuid();\n documentationKey;\n title;\n content;\n url;\n isOpen = false;\n constructor(docEntry) {\n makeObservable(this, {\n isOpen: observable,\n setIsOpen: action,\n });\n this.documentationKey = docEntry.key;\n this.title = guaranteeNonEmptyString(docEntry.title);\n this.content = docEntry.markdownText ?? docEntry.text;\n this.url = docEntry.url;\n }\n setIsOpen(val) {\n this.isOpen = val;\n }\n}\nexport class VirtualAssistantContextualDocumentationEntry {\n uuid = uuid();\n context;\n title;\n content;\n url;\n related;\n constructor(context, docEntry, related) {\n this.context = context;\n this.title = docEntry.title;\n this.content = docEntry.markdownText ?? docEntry.text;\n this.url = docEntry.url;\n this.related = related;\n }\n}\n/**\n * NOTE: since we're displaying the documentation entry in virtual assistant\n * we want only user-friendly docs, we will discard anything that doesn't\n * come with a title, or does not have any content/url\n */\nexport const isValidVirtualAssistantDocumentationEntry = (entry) => Boolean(entry.title && (entry.url ?? entry.text ?? entry.markdownText));\n/**\n * Check if the documentation entry should be displayed in virtual assistant,\n * i.e. it has some text content, rather just a link\n */\nexport const shouldDisplayVirtualAssistantDocumentationEntry = (entry) => isValidVirtualAssistantDocumentationEntry(entry) &&\n Boolean(entry.text ?? entry.markdownText);\nexport class AssistantService {\n applicationStore;\n /**\n * This key is used to allow programmatic re-rendering of the assistant panel\n */\n panelRenderingKey = uuid();\n isHidden = true; // hide by default unless specified by the application to show\n isOpen = false;\n isPanelMaximized = false;\n selectedTab = VIRTUAL_ASSISTANT_TAB.SEARCH;\n currentDocumentationEntry;\n // search text\n searchEngine;\n searchConfigurationState;\n searchState = ActionState.create();\n searchText = '';\n searchResults = [];\n showSearchConfigurationMenu = false;\n isOverSearchLimit = false;\n constructor(applicationStore) {\n makeObservable(this, {\n isHidden: observable,\n isOpen: observable,\n isPanelMaximized: observable,\n panelRenderingKey: observable,\n isOverSearchLimit: observable,\n selectedTab: observable,\n searchText: observable,\n searchResults: observable,\n currentDocumentationEntry: observable,\n showSearchConfigurationMenu: observable,\n currentContextualDocumentationEntry: computed,\n setIsHidden: action,\n setIsOpen: action,\n setIsPanelMaximized: action,\n setSelectedTab: action,\n setSearchText: action,\n resetSearch: action,\n search: action,\n openDocumentationEntry: action,\n refreshPanelRendering: action,\n setShowSearchConfigurationMenu: action,\n });\n this.applicationStore = applicationStore;\n this.searchEngine = new FuzzySearchEngine(this.applicationStore.documentationService\n .getAllDocEntries()\n .filter(isValidVirtualAssistantDocumentationEntry), {\n includeScore: true,\n shouldSort: true,\n // Ignore location when computing the search score\n // See https://fusejs.io/concepts/scoring-theory.html\n ignoreLocation: true,\n // This specifies the point the search gives up\n // `0.0` means exact match where `1.0` would match anything\n // We set a relatively low threshold to filter out irrelevant results\n threshold: 0.2,\n keys: [\n {\n // NOTE: for now, we would weight title the most\n name: 'title',\n weight: 4,\n },\n {\n name: 'text',\n weight: 1,\n },\n {\n name: 'markdownText.value',\n weight: 1,\n },\n ],\n // extended search allows for exact word match through single quote\n // See https://fusejs.io/examples.html#extended-search\n useExtendedSearch: true,\n });\n this.searchConfigurationState = new FuzzySearchAdvancedConfigState(() => {\n this.search();\n });\n }\n get currentContextualDocumentationEntry() {\n if (!this.applicationStore.navigationContextService.currentContext) {\n return undefined;\n }\n const currentContext = this.applicationStore.navigationContextService.currentContext.key;\n const currentContextualDocumentationEntry = this.applicationStore.documentationService.getContextualDocEntry(currentContext);\n return currentContextualDocumentationEntry\n ? new VirtualAssistantContextualDocumentationEntry(currentContext, currentContextualDocumentationEntry, (currentContextualDocumentationEntry.related ?? [])\n .map((entry) => this.applicationStore.documentationService.getDocEntry(entry))\n .filter(isNonNullable)\n .filter(isValidVirtualAssistantDocumentationEntry)\n .map((entry) => new VirtualAssistantDocumentationEntry(entry)))\n : undefined;\n }\n openDocumentationEntry(key) {\n const entry = this.applicationStore.documentationService.getDocEntry(key);\n if (entry) {\n this.setIsOpen(true);\n this.setIsHidden(false);\n this.currentDocumentationEntry = new VirtualAssistantDocumentationEntry(entry);\n this.currentDocumentationEntry.setIsOpen(true);\n this.resetSearch();\n }\n }\n openDocumentationEntryLink(key) {\n const entry = this.applicationStore.documentationService.getDocEntry(key);\n if (entry) {\n if (shouldDisplayVirtualAssistantDocumentationEntry(entry)) {\n this.openDocumentationEntry(entry.key);\n }\n else if (entry.url) {\n this.applicationStore.navigationService.navigator.visitAddress(entry.url);\n }\n }\n }\n setIsHidden(val) {\n this.isHidden = val;\n }\n setIsPanelMaximized(val) {\n this.isPanelMaximized = val;\n }\n hideAssistant() {\n this.setIsHidden(true);\n this.setIsOpen(false);\n }\n toggleAssistant() {\n const newVal = !this.isHidden;\n if (newVal) {\n this.hideAssistant();\n }\n else {\n this.setIsHidden(false);\n }\n }\n setIsOpen(val) {\n this.isOpen = val;\n }\n setSelectedTab(val) {\n this.selectedTab = val;\n }\n refreshPanelRendering() {\n this.panelRenderingKey = uuid();\n }\n setSearchText(val) {\n this.searchText = val;\n }\n resetSearch() {\n this.searchText = '';\n this.searchResults = [];\n this.searchState.complete();\n }\n search() {\n if (!this.searchText) {\n this.searchResults = [];\n return;\n }\n this.currentDocumentationEntry = undefined;\n this.searchState.inProgress();\n this.searchResults = Array.from(this.searchEngine\n .search(this.searchConfigurationState.generateSearchText(this.searchText), {\n // NOTE: search for limit + 1 item so we can know if there are more search results\n limit: DOCUMENTATION_SEARCH_RESULTS_LIMIT + 1,\n })\n .values()).map((result) => new VirtualAssistantDocumentationEntry(result.item));\n // check if the search results exceed the limit\n if (this.searchResults.length > DOCUMENTATION_SEARCH_RESULTS_LIMIT) {\n this.isOverSearchLimit = true;\n this.searchResults = this.searchResults.slice(0, DOCUMENTATION_SEARCH_RESULTS_LIMIT);\n }\n else {\n this.isOverSearchLimit = false;\n }\n this.searchState.complete();\n }\n setShowSearchConfigurationMenu(val) {\n this.showSearchConfigurationMenu = val;\n }\n}\n//# sourceMappingURL=AssistantService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '@finos/legend-shared';\nexport class EventNotifierPlugin extends AbstractPlugin {\n install(pluginManager) {\n pluginManager.registerEventNotifierPlugin(this);\n }\n}\nexport class EventService {\n notifierPlugins = [];\n registerEventNotifierPlugins(plugins) {\n this.notifierPlugins = plugins;\n }\n notify(event, data) {\n this.notifierPlugins.forEach((plugin) => plugin.notify(event, data));\n }\n}\n//# sourceMappingURL=EventService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT } from './LegendApplicationEvent.js';\nexport class LegendApplicationTelemetryHelper {\n static logEvent_ApplicationInitializationSucceeded(service, applicationStore) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS, {\n application: {\n name: applicationStore.config.appName,\n version: applicationStore.config.appVersion,\n env: applicationStore.config.env,\n },\n browser: {\n userAgent: navigator.userAgent,\n },\n screen: {\n height: window.screen.height,\n width: window.screen.width,\n },\n });\n }\n static logEvent_ApplicationContextAccessed(service, data) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_CONTEXT__ACCESS, data);\n }\n static logEvent_VirtualAssistantDocumentationEntryAccessed(service, data) {\n service.logEvent(APPLICATION_EVENT.VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS, data);\n }\n static logEvent_ApplicationUsageInterrupted(service) {\n service.logEvent(APPLICATION_EVENT.APPLICATION_USAGE__INTERRUPT, {});\n }\n}\n//# sourceMappingURL=LegendApplicationTelemetry.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { IllegalStateError } from '@finos/legend-shared';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\n/**\n * Context data refers to the area of the application that the user is\n * currently navigating.\n *\n * NOTE: note that this is navigation-driven, do not associate places\n * which present in the app screen that is not a direct consequence\n * of user's navigation. e.g. the status bar is not a good area to\n * be considered a context, the editor screen is because it means\n * the user must have navigated to the editor screen from somewhere,\n * for instance, the setup page.\n */\nexport class ApplicationNavigationContextData {\n key;\n /**\n * There are 2 types of context data: `standard` and `transient`\n * 1. standard context data represents an application context layer that\n * would be pushed to the stack and the context will be popped as we leave\n * the application, in other words, the context will be properly cleaned up\n * e.g. when we go in an editor, we will push context data to the stack and\n * pop it when we leave that editor\n * 2. transient context does not guarantee to be cleaned up properly, this\n * corresponds to application areas whose presense is transient and not stable:\n * such as those triggered by on-flight events, whose exit-state is hard to capture\n * e.g. user focuses on an input\n *\n * NOTE: transient context must not be mistakened as event, even in the example of\n * user focusing on an input, that's an area of the application that we might want\n * to get record of in terms of context. Events like a notification pop up, failure\n * of some long-running processes are not considered application contexts\n */\n isTransient = false;\n constructor(key, isTransient) {\n this.key = key;\n this.isTransient = isTransient;\n }\n static create(key) {\n return new ApplicationNavigationContextData(key, false);\n }\n static createTransient(key) {\n return new ApplicationNavigationContextData(key, true);\n }\n}\nexport class ApplicationNavigationContextService {\n applicationStore;\n contextStack = [];\n constructor(applicationStore) {\n makeObservable(this, {\n contextStack: observable,\n currentContext: computed,\n push: action,\n pop: action,\n });\n this.applicationStore = applicationStore;\n }\n get currentContext() {\n return this.contextStack.length\n ? this.contextStack[this.contextStack.length - 1]\n : undefined;\n }\n /**\n * Add the context to the stack.\n *\n * If the context is already if the context is already part of the stack\n * we will throw an error. This is to make sure we context is unique in the stack\n * and we do proper context stack cleanups on navigation.\n */\n push(context) {\n // first, filter out all transient contexts, so we can be sure that\n // all of the remaining contexts are standard and they should be cleaned up properly\n // this makes our duplication meaningful\n const newContextStack = this.contextStack.filter((ctx) => !ctx.isTransient);\n if (newContextStack.find((ctx) => ctx.key === context.key)) {\n throw new IllegalStateError(`Found multiple context '${context.key}' in application navigation context stack`);\n }\n newContextStack.push(context);\n // log the context being accessed if it's in the list of interested context keys\n if (this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraAccessEventLoggingApplicationContextKeys?.() ?? [])\n .includes(context.key)) {\n LegendApplicationTelemetryHelper.logEvent_ApplicationContextAccessed(this.applicationStore.telemetryService, {\n key: context.key,\n });\n }\n this.contextStack = newContextStack;\n }\n /**\n * Remove the context from the stack.\n *\n * NOTE: we will check from bottom of the stack up, for the specified context,\n * if it's found in the context stack, we will pop until the specified context.\n * This is to allow popping deeper context layers from very high up in the application\n * context stack, e.g. removing a context of an element editor when leaving the editor\n * to go to setup page.\n */\n pop(context) {\n const existingCtx = this.contextStack.find((ctx) => ctx.key === context.key);\n if (!existingCtx) {\n return;\n }\n // NOTE: since we should not have any duplicated contexts\n // it's safe to search from bottom to top of the stack\n const idx = this.contextStack.indexOf(existingCtx);\n if (idx !== -1) {\n this.contextStack = this.contextStack\n .slice(0, idx)\n // remove all transient contexts\n .filter((ctx) => !ctx.isTransient);\n }\n }\n}\n//# sourceMappingURL=ApplicationNavigationContextService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LogEvent } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nexport const collectKeyedCommandConfigEntriesFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({\n key: entry[0],\n content: entry[1],\n}));\nexport class CommandService {\n applicationStore;\n commandRegistry = new Map();\n constructor(applicationStore) {\n makeObservable(this, {\n commandRegistry: observable,\n registerCommand: action,\n deregisterCommand: action,\n });\n this.applicationStore = applicationStore;\n }\n registerCommand(command) {\n const commandKey = command.key;\n if (this.commandRegistry.has(commandKey)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.COMMAND_CENTER_REGISTRATION__FAILURE), `Can't register command: command is already registered`);\n return;\n }\n this.commandRegistry.set(commandKey, command);\n }\n deregisterCommand(commandKey) {\n this.commandRegistry.delete(commandKey);\n }\n runCommand(commandKey, args) {\n const command = this.commandRegistry.get(commandKey);\n if (command && (!command.trigger || command.trigger())) {\n command.action?.(args);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=CommandService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isNonNullable } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport class KeyboardShortcutsService {\n applicationStore;\n /**\n * NOTE: with this design, the relationship between command and key is many-to-many\n * We can have multiple commands being mapped to the same key combination, and vice versa\n */\n keyMap = new Map();\n commandKeyMap = new Map();\n isHotkeysBlocked = false;\n constructor(applicationStore) {\n makeObservable(this, {\n keyMap: observable,\n commandKeyMap: observable,\n isHotkeysBlocked: observable,\n addHotkey: action,\n blockGlobalHotkeys: action,\n unblockGlobalHotkeys: action,\n });\n this.applicationStore = applicationStore;\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraKeyedCommandConfigEntries?.() ?? [])\n .forEach((entry) => {\n // NOTE: since we allow mapping multiple commands to the same key combination\n // and when dispatching the command with a particular key combination, we only\n // execute the first matching command, if we override the config, we would need\n // to add them to the beginning of this list.\n // TODO: do validation on hot keys, hot keys which consist only of modifier keys, e.g. `Shift Shift` should not be supported\n const shortcuts = [\n entry.content.defaultKeyboardShortcut,\n ...(entry.content.additionalKeyboardShortcuts ?? []),\n ].filter(isNonNullable);\n if (shortcuts.length) {\n shortcuts.forEach((shortcut) => this.addHotkey(entry.key, shortcut));\n }\n else {\n if (!this.commandKeyMap.has(entry.key)) {\n this.commandKeyMap.set(entry.key, []);\n }\n }\n });\n }\n blockGlobalHotkeys() {\n this.isHotkeysBlocked = true;\n }\n unblockGlobalHotkeys() {\n this.isHotkeysBlocked = false;\n }\n addHotkey(commandKey, keyCombination) {\n // add shortcut to command key map\n this.commandKeyMap.set(commandKey, [\n ...(this.commandKeyMap.get(commandKey) ?? []),\n keyCombination,\n ]);\n // add new key map\n this.keyMap.set(keyCombination, [\n ...(this.keyMap.get(keyCombination) ?? []).filter((key) => key !== commandKey),\n commandKey,\n ]);\n }\n dispatch(keyCombination) {\n if (this.isHotkeysBlocked) {\n return;\n }\n const mappedCommandKeys = this.keyMap.get(keyCombination) ?? [];\n for (const commandKey of mappedCommandKeys) {\n // find the first command that works then escape\n if (this.applicationStore.commandService.runCommand(commandKey)) {\n return;\n }\n }\n }\n}\n//# sourceMappingURL=KeyboardShortcutsService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const DEFAULT_TAB_SIZE = 2;\nexport const DEFAULT_MONOSPACED_FONT_FAMILY = 'Roboto Mono';\nexport const DEFAULT_DATE_TIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\nexport const DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH = 2;\nexport const DEFAULT_TYPEAHEAD_SEARCH_LIMIT = 10;\n//# sourceMappingURL=ApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\n// NOTE: using Unicode for ANSI escape\n// See https://stackoverflow.com/questions/26153308/best-ansi-escape-beginning\n// See https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797\nexport var DISPLAY_ANSI_ESCAPE;\n(function (DISPLAY_ANSI_ESCAPE) {\n DISPLAY_ANSI_ESCAPE[\"RESET\"] = \"\\u001B[0m\";\n // text decoration\n DISPLAY_ANSI_ESCAPE[\"BOLD\"] = \"\\u001B[1m\";\n DISPLAY_ANSI_ESCAPE[\"DIM\"] = \"\\u001B[2m\";\n DISPLAY_ANSI_ESCAPE[\"ITALIC\"] = \"\\u001B[3m\";\n DISPLAY_ANSI_ESCAPE[\"UNDERLINE\"] = \"\\u001B[4m\";\n DISPLAY_ANSI_ESCAPE[\"BLINKING\"] = \"\\u001B[5m\";\n DISPLAY_ANSI_ESCAPE[\"STRIKETHROUGH\"] = \"\\u001B[9m\";\n // foreground\n DISPLAY_ANSI_ESCAPE[\"BLACK\"] = \"\\u001B[30m\";\n DISPLAY_ANSI_ESCAPE[\"RED\"] = \"\\u001B[31m\";\n DISPLAY_ANSI_ESCAPE[\"GREEN\"] = \"\\u001B[32m\";\n DISPLAY_ANSI_ESCAPE[\"YELLOW\"] = \"\\u001B[33m\";\n DISPLAY_ANSI_ESCAPE[\"BLUE\"] = \"\\u001B[34m\";\n DISPLAY_ANSI_ESCAPE[\"MAGENTA\"] = \"\\u001B[35m\";\n DISPLAY_ANSI_ESCAPE[\"CYAN\"] = \"\\u001B[36m\";\n DISPLAY_ANSI_ESCAPE[\"WHITE\"] = \"\\u001B[37m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLACK\"] = \"\\u001B[1;30m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_RED\"] = \"\\u001B[1;31m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_GREEN\"] = \"\\u001B[1;32m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_YELLOW\"] = \"\\u001B[1;33m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLUE\"] = \"\\u001B[1;34m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_MAGENTA\"] = \"\\u001B[1;35m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_CYAN\"] = \"\\u001B[1;36m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_WHITE\"] = \"\\u001B[1;37m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLACK\"] = \"\\u001B[2;30m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_RED\"] = \"\\u001B[2;31m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_GREEN\"] = \"\\u001B[2;32m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_YELLOW\"] = \"\\u001B[2;33m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLUE\"] = \"\\u001B[2;34m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_MAGENTA\"] = \"\\u001B[2;35m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_CYAN\"] = \"\\u001B[2;36m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_WHITE\"] = \"\\u001B[2;37m\";\n // background\n DISPLAY_ANSI_ESCAPE[\"BLACK_BG\"] = \"\\u001B[40m\";\n DISPLAY_ANSI_ESCAPE[\"RED_BG\"] = \"\\u001B[41m\";\n DISPLAY_ANSI_ESCAPE[\"GREEN_BG\"] = \"\\u001B[42m\";\n DISPLAY_ANSI_ESCAPE[\"YELLOW_BG\"] = \"\\u001B[43m\";\n DISPLAY_ANSI_ESCAPE[\"BLUE_BG\"] = \"\\u001B[44m\";\n DISPLAY_ANSI_ESCAPE[\"MAGENTA_BG\"] = \"\\u001B[45m\";\n DISPLAY_ANSI_ESCAPE[\"CYAN_BG\"] = \"\\u001B[46m\";\n DISPLAY_ANSI_ESCAPE[\"WHITE_BG\"] = \"\\u001B[47m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLACK_BG\"] = \"\\u001B[1;40m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_RED_BG\"] = \"\\u001B[1;41m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_GREEN_BG\"] = \"\\u001B[1;42m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_YELLOW_BG\"] = \"\\u001B[1;43m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_BLUE_BG\"] = \"\\u001B[1;44m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_MAGENTA_BG\"] = \"\\u001B[1;45m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_CYAN_BG\"] = \"\\u001B[1;46m\";\n DISPLAY_ANSI_ESCAPE[\"BRIGHT_WHITE_BG\"] = \"\\u001B[1;47m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLACK_BG\"] = \"\\u001B[2;40m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_RED_BG\"] = \"\\u001B[2;41m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_GREEN_BG\"] = \"\\u001B[2;42m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_YELLOW_BG\"] = \"\\u001B[2;43m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_BLUE_BG\"] = \"\\u001B[2;44m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_MAGENTA_BG\"] = \"\\u001B[2;45m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_CYAN_BG\"] = \"\\u001B[2;46m\";\n DISPLAY_ANSI_ESCAPE[\"DIMMED_WHITE_BG\"] = \"\\u001B[2;47m\";\n})(DISPLAY_ANSI_ESCAPE || (DISPLAY_ANSI_ESCAPE = {}));\n/**\n * NOTE: this is the line and the column of the viewport of the terminal;\n * Also, line and column start from 1\n */\nexport const ANSI_moveCursor = (line, column) => `\\x1b[${line};${column}H`;\nexport const ANSI_moveCursorUp = (val, start) => start ? `\\x1b[${val}F` : `\\x1b[${val}A`;\nexport const ANSI_moveCursorDown = (val, start) => start ? `\\x1b[${val}E` : `\\x1b[${val}B`;\nexport const ANSI_moveCursorRight = (val) => `\\x1b[${val}C`;\nexport const ANSI_moveCursorLeft = (val) => `\\x1b[${val}D`;\nexport const ANSI_moveCursorToColumn = (val) => `\\x1b[${val}G`;\nclass ConsoleSearchConfiguration {\n searchInput;\n searchText = '';\n useRegex = false;\n matchWholeWord = false;\n matchCaseSensitive = false;\n resultCount;\n currentResultIndex;\n constructor() {\n makeObservable(this, {\n searchText: observable,\n useRegex: observable,\n matchWholeWord: observable,\n matchCaseSensitive: observable,\n resultCount: observable,\n currentResultIndex: observable,\n });\n }\n setSearchInput(el) {\n this.searchInput = el;\n }\n focus() {\n this.searchInput?.focus();\n }\n}\nexport class Console {\n applicationStore;\n searchConfig = new ConsoleSearchConfiguration();\n constructor(applicationStore) {\n makeObservable(this, {\n setSearchText: action,\n setSearchRegex: action,\n setSearchWholeWord: action,\n setSearchCaseSensitive: action,\n setSearchResultCount: action,\n setSearchCurrentResultIndex: action,\n });\n this.applicationStore = applicationStore;\n }\n setSearchText(val) {\n this.searchConfig.searchText = val;\n }\n setSearchRegex(val) {\n this.searchConfig.useRegex = val;\n }\n setSearchWholeWord(val) {\n this.searchConfig.matchWholeWord = val;\n }\n setSearchCaseSensitive(val) {\n this.searchConfig.matchCaseSensitive = val;\n }\n setSearchResultCount(val) {\n this.searchConfig.resultCount = val;\n }\n setSearchCurrentResultIndex(val) {\n this.searchConfig.currentResultIndex = val;\n }\n}\nexport class OutputConsole extends Console {\n}\nexport class Terminal extends Console {\n preserveLog = false;\n commandRegistry = new Map();\n constructor(applicationStore) {\n super(applicationStore);\n makeObservable(this, {\n preserveLog: observable,\n setPreserveLog: action,\n });\n }\n setPreserveLog(val) {\n this.preserveLog = val;\n }\n showHelp() {\n // do nothing\n }\n showCommonANSIEscapeSequences() {\n // do nothing\n }\n}\n//# sourceMappingURL=Terminal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { stringify as losslessStringify, parse as losslessParse, isSafeNumber as lossIsSafeNumber, } from 'lossless-json';\nimport CSVParser from 'papaparse';\nimport { assertNonNullable } from '../error/AssertionUtils.js';\nexport const capitalize = (value) => value.length >= 1\n ? `${value[0].toUpperCase()}${value.substring(1, value.length)}`\n : value;\nexport const toSentenceCase = (value) => (value ?? '').trim().replace(/^(?:\\w+)\\b/u, (val) => capitalize(val));\nexport const TITLE_CASE_EXCEPTION_WORDS = [\n // We roughly follow AP style for simplicity\n // See https://en.wikipedia.org/wiki/Title_case\n 'a',\n 'an',\n 'the',\n 'but',\n 'by',\n 'nor',\n 'and',\n 'or',\n 'so',\n 'as',\n 'yet',\n 'for',\n 'in',\n 'nor',\n 'of',\n 'on',\n 'at',\n 'out',\n 'to',\n 'up',\n];\nexport const toTitleCase = (value) => (value ?? '')\n .trim()\n .replace(/\\b(?:\\w+)\\b/gu, (val) => {\n // lowercase minor words (typically articles, short prepositions, and some conjunctions)\n if (TITLE_CASE_EXCEPTION_WORDS.includes(val.toLowerCase())) {\n return val.toLowerCase();\n }\n return capitalize(val);\n})\n // always capitalize first and last word\n .replace(/^(?:\\w+)\\b/u, (val) => capitalize(val))\n .replace(/\\b(?:\\w+)$/u, (val) => capitalize(val));\nexport const prettyCONSTName = (value) => {\n if (!value) {\n return '';\n }\n // This handles our constant naming convention, e.g. SOME_VALUE, __PRIVATE_VALUE__, etc.\n if (value.trim().match(/^[A-Z_]+$/)) {\n return toTitleCase(value.trim().replace(/_+/gu, ' ').toLowerCase());\n }\n return (capitalize(value.trim())\n // NOTE: here we must use capturing group as we also need to capture the breakpoint/separator as chunks\n .split(/(?<chunk>[A-Z][a-z]+|[0-9]+)/)\n .map((chunk) => chunk.toUpperCase() === chunk\n ? chunk\n : chunk.charAt(0).toUpperCase() + chunk.slice(1).toLowerCase())\n .filter(Boolean)\n .join(' ')\n .replace(/_+/gu, ' ')\n .replace(/\\s+/gu, ' '));\n};\nexport const tryToFormatJSONString = (value, tabSize = 2) => {\n try {\n return JSON.stringify(JSON.parse(value), undefined, tabSize);\n }\n catch {\n return value;\n }\n};\nexport const tryToMinifyJSONString = (value) => {\n try {\n return JSON.stringify(JSON.parse(value));\n }\n catch {\n return value.replace(/\\n\\s*/g, '');\n }\n};\n/**\n * NOTE: this splits a string value into an array of strings by using a\n * delimiter of a comma if the string is only one line. However, if the\n * string has multiple lines, the delimiter will not be applied. This is so\n * that for an example input of multiple lines like\n * One, Comma in One\n * Two\n * Three\n * will still equal 3 elements (['One, Comma in One', 'Two', 'Three']) rather than 4\n */\nexport const parseCSVString = (value) => {\n let parseData;\n if (value.includes('\\n')) {\n parseData = value.trim().split(/\\r?\\n|\\r|\\n/g);\n return parseData;\n }\n else {\n const parseResult = CSVParser.parse(value.trim(), {\n delimiter: ',',\n });\n parseData = parseResult.data.flat();\n if (parseResult.errors.length) {\n // if (\n // parseResult.errors[0] &&\n // parseResult.errors[0].code === 'UndetectableDelimiter' &&\n // parseResult.errors[0].type === 'Delimiter' &&\n // parseResult.data.length === 1\n // ) {\n // // NOTE: this happens when the user only put one item in the value input\n // // we can go the other way by ensure the input has a comma but this is arguably neater\n // // as it tinkers with the parser\n // } else {\n // // there were some parsing error, escape\n // // NOTE: ideally, we could show a warning here\n // }\n return undefined;\n }\n else {\n return parseData;\n }\n }\n};\nexport const csvStringify = (value) => CSVParser.unparse(value);\n/**\n * One very common use case is that we get the JSON as response from the server than we will convert this to a string and persist\n * in the protocol. As such, we have to make sure this string is safe in PURE grammar format, i.e. it will escape single quotes\n * properly since PURE strings are wrapped in a pair of single quotes. The following pair of escape/unescape method does the simple job of\n * converting a JSON string to/from PURE grammar string\n *\n * NOTE: this is slightly different than escaping/unescaping JS string or normal JSON string, this is conversion is actually simplier since\n * the escaping is naturally handling by string conversion in Javascript, we just need to have special handling for the escaping of single-quotes\n * See https://stackoverflow.com/questions/3020094/how-should-i-escape-strings-in-json\n * See https://github.com/joliss/js-string-escape/blob/master/index.js\n */\nexport const fromGrammarString = (value) => value.replace(/\\\\'/gu, \"'\");\nexport const toGrammarString = (value) => value.replace(/'/gu, \"\\\\'\");\n/**\n * These are the sets of methods that helps with lossless conversion of JSON to/from text.\n *\n * The implementation of `JSON.parse` and `JSON.stringify` in Javascript is not lossless, e.g. values like 1.0 (a double) is automatically converted to 1 (an integer).\n * This pairs of method will convert the JSON losslessly. One caveat is that numeric values are stored as LosslessNumber, a data type which stores the numeric value as a string.\n *\n * NOTE: One can perform regular operations with a LosslessNumber, and it will throw an error when this would result in losing information.\n * But use this with discretion since it it does not result in the same object as `JSON.parse`\n */\nexport { losslessParse as parseLosslessJSON };\nexport { lossIsSafeNumber as isLossSafeNumber };\nexport const stringifyLosslessJSON = (val, replacer, space) => {\n const result = losslessStringify(val, replacer, space);\n assertNonNullable(result, `Can't stringify lossless JSON value`);\n return result;\n};\nexport const tryToFormatLosslessJSONString = (value, tabSize = 2) => {\n try {\n return stringifyLosslessJSON(losslessParse(value), undefined, tabSize);\n }\n catch {\n return value;\n }\n};\nexport const tryToMinifyLosslessJSONString = (value) => {\n try {\n return tryToFormatLosslessJSONString(value, 0);\n }\n catch {\n return value.replace(/\\n\\s*/g, '');\n }\n};\nexport const indent = (value, indentText) => value\n .split('\\n')\n .map((line) => `${indentText}${line}`)\n .join('\\n');\nexport const quantify = (value, label, pluralForm) => value <= 0\n ? `no ${pluralForm ?? `${label}s`}`\n : value > 1\n ? `${value} ${pluralForm ?? `${label}s`}`\n : `1 ${label}`;\nexport const quantifyList = (val, label, pluralForm) => quantify(val.length, label, pluralForm);\n//# sourceMappingURL=FormatterUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uniqBy } from '../CommonUtils.js';\nimport { guaranteeNonNullable } from '../error/AssertionUtils.js';\n/**\n * List of keyboard named key\n * See https://www.w3.org/TR/uievents-key/#named-key-attribute-values\n * See https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n */\nexport var KEYBOARD_NAMED_KEY;\n(function (KEYBOARD_NAMED_KEY) {\n KEYBOARD_NAMED_KEY[\"TAB\"] = \"Tab\";\n KEYBOARD_NAMED_KEY[\"CAPSLOCK\"] = \"CapsLock\";\n KEYBOARD_NAMED_KEY[\"SHIFT\"] = \"Shift\";\n KEYBOARD_NAMED_KEY[\"META\"] = \"Meta\";\n KEYBOARD_NAMED_KEY[\"ALT\"] = \"Alt\";\n KEYBOARD_NAMED_KEY[\"CONTROL\"] = \"Control\";\n KEYBOARD_NAMED_KEY[\"SPACE\"] = \"Space\";\n KEYBOARD_NAMED_KEY[\"ESC\"] = \"Escape\";\n KEYBOARD_NAMED_KEY[\"LEFT\"] = \"ArrowLeft\";\n KEYBOARD_NAMED_KEY[\"RIGHT\"] = \"ArrowRight\";\n KEYBOARD_NAMED_KEY[\"UP\"] = \"ArrowUp\";\n KEYBOARD_NAMED_KEY[\"DOWN\"] = \"ArrowDown\";\n KEYBOARD_NAMED_KEY[\"ENTER\"] = \"Enter\";\n KEYBOARD_NAMED_KEY[\"DELETE\"] = \"Delete\";\n KEYBOARD_NAMED_KEY[\"BACKSPACE\"] = \"Backspace\";\n KEYBOARD_NAMED_KEY[\"BACKQUOTE\"] = \"Backquote\";\n})(KEYBOARD_NAMED_KEY || (KEYBOARD_NAMED_KEY = {}));\n/**\n * Parses key bindings and pack them into parts\n *\n * grammar = `<sequence>`\n * <sequence> = `<press> <press> <press> ...`\n * <press> = `<key>` or `<mods>+<key>`\n * <mods> = `<mod>+<mod>+...`\n */\nexport function parseKeybinding(value) {\n return value\n .trim()\n .split(' ')\n .map((press) => {\n const modifiers = press.split(/\\b\\+/);\n const key = guaranteeNonNullable(modifiers.pop(), `Can't parse key binding: last part must be a non-modifier key`);\n return { modifiers, key };\n });\n}\n/**\n * Checks if a series of keypress events matches a key binding sequence either partially or exactly.\n */\nexport const isMatchingKeyPressData = (event, keyPressData) => \n// NOTE: we allow specifying with `event.code` only\n// - key: value of the key pressed by the user, taking into consideration the state of modifier keys\n// such as `Shift` as well as the keyboard locale and layout. This is not desirable, because\n// for matching, we have to do uppercase comparison, in Mac, if we presss Alt+B for example, we will\n// get symbols\n// - code: represents a physical key on the keyboard (as opposed to the character generated by pressing the key);\n// i.e. this property returns a value that isn't altered by keyboard layout or the state of the modifier keys\n// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code\nkeyPressData.key === event.code &&\n // ensure all the modifiers in the keybinding are pressed\n keyPressData.modifiers.every((modifier) => event.getModifierState(modifier)) &&\n // modifier keys (Shift, Control, etc.) change the meaning of a keybinding,\n // so if they are pressed but aren't part of the current keypress sequence, it's not a match.\n ![\n KEYBOARD_NAMED_KEY.SHIFT,\n KEYBOARD_NAMED_KEY.META,\n KEYBOARD_NAMED_KEY.ALT,\n KEYBOARD_NAMED_KEY.CONTROL,\n ].find((modifier) => \n // check if the current key pressed is one of the modifier keys\n keyPressData.key !== modifier &&\n event.getModifierState(modifier) &&\n // check if the modifier key pressed is part of the key combination\n !keyPressData.modifiers.includes(modifier));\nexport const isMatchingKeyCombination = (event, keyCombination) => isMatchingKeyPressData(event, guaranteeNonNullable(parseKeybinding(keyCombination)[0]));\n/**\n * Create event listener for keyboard event (recommended to be used with `keydown/keyup` event)\n *\n * This succinct logic is adapted from `tinykeys`\n * See https://github.com/jamiebuilds/tinykeys\n */\nexport function createKeybindingsHandler(config) {\n // this holds the possible hotkey matches for the current sequence of keyboard events\n const possibleMatches = new Map();\n // NOTE: this timer is used to time the duration between key presses to determine when to\n // cancel the sequence, we set the default timeout to be 1000, as short timeout\n // can be slightly too fast for users\n let timer = null;\n const DEFAULT_TIMEOUT_DURATION = 1000;\n return (event) => {\n // Ensure and stop any event that isn't an keyboard event.\n // e.g. auto-complete option navigation and selection could fire an event\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n // NOTE: create a flat collection of key combination to handler, make sure\n // for each combination, only the first matching entry is considered,\n // i.e. explicitly here, we don't handle multiple handling\n // See https://github.com/finos/legend-studio/issues/1969\n uniqBy(Object.values(config)\n .flatMap((entry) => entry.combinations.map((combination) => ({\n combination,\n handler: entry.handler,\n })))\n .filter((entry) => entry.combination.length), (val) => val.combination)\n // here, we go through each hotkey combination, and:\n // 1. parse the key combination\n // 2. if the key combination is already part of the possible matches,\n // retrieve the current match result: this result is the list of the\n // keypresses left to complete the combination, else, we just add the\n // new combination and proceed the same way\n .forEach((entry) => {\n const keyCombination = entry.combination;\n const parsedKeyCombination = parseKeybinding(entry.combination);\n // abort when we encounter an empty key combination\n if (!parsedKeyCombination.length) {\n return;\n }\n const remainingExpectedKeyPresses = possibleMatches.get(keyCombination) ?? parsedKeyCombination;\n // this should never be empty, as it becomes empty, it must mean:\n // 1. either the key combination has been matched before and not cleared\n // 2. the key combination is empty, which should not be possible due to the guard above\n const currentExpectedKeyPress = guaranteeNonNullable(remainingExpectedKeyPresses[0]);\n const matches = isMatchingKeyPressData(event, currentExpectedKeyPress);\n if (!matches) {\n // if the current key pressed is a modifier key\n // we don't consider this as a non-match yet\n // NOTE: here we use `event.key` instead of `event.code` since for `Shift` key,\n // the key is always `Shift` where the key code can be `ShiftLeft`\n if (!event.getModifierState(event.key)) {\n possibleMatches.delete(keyCombination);\n }\n }\n else if (remainingExpectedKeyPresses.length > 1) {\n // matches found, not all keypresses of the key combination have been fulfilled, remove\n // the matched keypress part of the combination (if it's in the list of possible matches)\n possibleMatches.set(keyCombination, remainingExpectedKeyPresses.slice(1));\n }\n else {\n // matches found, all keypresses of the combination have been fulfilled, call the handler\n possibleMatches.delete(keyCombination);\n entry.handler(keyCombination, event);\n }\n });\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(possibleMatches.clear.bind(possibleMatches), DEFAULT_TIMEOUT_DURATION);\n };\n}\n//# sourceMappingURL=KeyBinding.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTheme, StyledEngineProvider, ThemeProvider, } from '@mui/material';\nconst LegendCustomMUITheme = createTheme({\n transitions: {\n // disable all transition\n // NOTE: this is a catch-all way to remove all transitions\n // We technically don't need this because we can configure transition props for each component\n create: () => 'none',\n },\n});\nexport const LegendStyleProvider = (props) => {\n const { children } = props;\n return (\n // Make sure CSS for MUI generated by `emotion` are injected before our styling code\n // this ensures our styling code can override MUI styles\n // See https://mui.com/guides/interoperability/#css-injection-order-3\n _jsx(StyledEngineProvider, { injectFirst: true, children: _jsx(ThemeProvider, { theme: LegendCustomMUITheme, children: children }) }));\n};\n//# sourceMappingURL=LegendStyleProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clsx } from 'clsx';\nexport const generateSimpleDIVComponent = (componentName, divClassName) => {\n const component = (props) => {\n const { children, className } = props;\n return (_jsx(\"div\", { className: clsx(divClassName, className), \"data-testid\": props['data-testid'], children: children }));\n };\n component.displayName = componentName;\n return component;\n};\n//# sourceMappingURL=ComponentCreatorUtils.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { prettyCONSTName, toTitleCase } from '@finos/legend-shared';\nimport { clsx } from 'clsx';\nimport { generateSimpleDIVComponent } from '../utils/ComponentCreatorUtils.js';\nexport const Modal = (props) => {\n const { children, darkMode, className } = props;\n return (_jsx(\"div\", { className: clsx('modal', { 'modal--dark': darkMode }, className), children: children }));\n};\nexport const ModalTitle = (props) => {\n const { title, icon, className } = props;\n return (_jsxs(\"div\", { className: clsx('modal__title', className), children: [icon && _jsx(\"div\", { className: \"modal__title__icon\", children: icon }), _jsx(\"div\", { className: \"modal__title__label\", children: toTitleCase(title) })] }));\n};\nexport const ModalHeader = (props) => {\n const { title, children, className } = props;\n if (!children && title) {\n return (_jsx(\"div\", { className: clsx('modal__header', className), children: _jsx(ModalTitle, { title: title }) }));\n }\n return _jsx(\"div\", { className: clsx('modal__header', className), children: children });\n};\nexport const ModalHeaderActions = generateSimpleDIVComponent('ModalHeaderActions', 'modal__header__actions');\nexport const ModalBody = generateSimpleDIVComponent('ModalBody', 'modal__body');\nexport const ModalFooter = generateSimpleDIVComponent('ModalFooter', 'modal__footer');\nexport const ModalFooterStatus = generateSimpleDIVComponent('ModalFooterStatus', 'modal__footer__status');\nexport const ModalFooterButton = (props) => {\n const { onClick, inProgressText, text, title, children, disabled, className, darkMode, formatText, type, preventFormSubmit, } = props;\n const isDarkMode = darkMode ?? true;\n const isFormatText = formatText ?? true;\n const isSecondary = type === 'secondary';\n const isPreventFormSubmit = preventFormSubmit ?? false;\n return (_jsxs(\"button\", { className: clsx('btn', 'modal__footer__btn', {\n 'btn--dark': isDarkMode,\n 'btn--light': !isDarkMode,\n 'modal__footer__btn--primary': !isSecondary,\n 'modal__footer__btn--secondary': isSecondary,\n }, className), title: title, onClick: onClick, disabled: Boolean(inProgressText) || disabled, type: isPreventFormSubmit ? 'button' : undefined, children: [inProgressText\n ? prettyCONSTName(inProgressText)\n : isFormatText\n ? prettyCONSTName(text)\n : text, children] }));\n};\n//# sourceMappingURL=Modal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nexport var ActionAlertType;\n(function (ActionAlertType) {\n ActionAlertType[\"STANDARD\"] = \"STANDARD\";\n ActionAlertType[\"CAUTION\"] = \"CAUTION\";\n})(ActionAlertType || (ActionAlertType = {}));\nexport var ActionAlertActionType;\n(function (ActionAlertActionType) {\n ActionAlertActionType[\"STANDARD\"] = \"STANDARD\";\n ActionAlertActionType[\"PROCEED_WITH_CAUTION\"] = \"PROCEED_WITH_CAUTION\";\n ActionAlertActionType[\"PROCEED\"] = \"PROCEED\";\n})(ActionAlertActionType || (ActionAlertActionType = {}));\nexport class AlertService {\n applicationStore;\n blockingAlertInfo;\n actionAlertInfo;\n constructor(applicationStore) {\n makeObservable(this, {\n blockingAlertInfo: observable,\n actionAlertInfo: observable,\n setBlockingAlert: action,\n setActionAlertInfo: action,\n });\n this.applicationStore = applicationStore;\n }\n setBlockingAlert(alertInfo) {\n if (alertInfo) {\n this.applicationStore.keyboardShortcutsService.blockGlobalHotkeys();\n }\n else {\n this.applicationStore.keyboardShortcutsService.unblockGlobalHotkeys();\n }\n this.blockingAlertInfo = alertInfo;\n }\n setActionAlertInfo(alertInfo) {\n if (this.actionAlertInfo && alertInfo) {\n this.applicationStore.notificationService.notifyIllegalState('Action alert is stacked: new alert is invoked while another one is being displayed');\n }\n if (alertInfo) {\n this.applicationStore.keyboardShortcutsService.blockGlobalHotkeys();\n }\n else {\n this.applicationStore.keyboardShortcutsService.unblockGlobalHotkeys();\n }\n this.actionAlertInfo = alertInfo;\n }\n}\n//# sourceMappingURL=AlertService.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext, useContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nconst ApplicationStoreContext = createContext(undefined);\nexport const useApplicationStore = () => guaranteeNonNullable(useContext(ApplicationStoreContext), `Can't find application store in context`);\nexport const ApplicationStoreProvider = ({ children, store, }) => {\n const applicationStore = useLocalObservable(() => store);\n return (_jsx(ApplicationStoreContext.Provider, { value: applicationStore, children: children }));\n};\n//# sourceMappingURL=ApplicationStoreProvider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Dialog, ModalBody, ModalFooter, ModalHeader } from '@finos/legend-art';\nimport { ActionAlertActionType, ActionAlertType, } from '../stores/AlertService.js';\nimport { observer } from 'mobx-react-lite';\nimport { noop } from '@finos/legend-shared';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nconst getActionButtonClassName = (type) => {\n switch (type) {\n case ActionAlertActionType.PROCEED_WITH_CAUTION:\n return 'btn--caution';\n case ActionAlertActionType.PROCEED:\n case ActionAlertActionType.STANDARD:\n default:\n return 'btn--dark';\n }\n};\nconst ActionAlertContent = observer((props) => {\n const { info } = props;\n const applicationStore = useApplicationStore();\n const { title, message, prompt, type, onClose, onEnter, actions } = info;\n const handleClose = () => {\n onClose?.();\n applicationStore.alertService.setActionAlertInfo(undefined);\n };\n const handleEnter = () => onEnter?.();\n const handleSubmit = () => {\n actions.find((action) => action.default)?.handler?.();\n handleClose();\n };\n return (_jsx(Dialog, { open: Boolean(applicationStore.alertService.actionAlertInfo), onClose: noop, TransitionProps: {\n onEnter: handleEnter,\n }, children: _jsxs(\"form\", { onSubmit: (event) => {\n event.preventDefault();\n handleSubmit();\n }, className: `modal search-modal modal--dark blocking-alert blocking-alert--${(type ?? ActionAlertType.STANDARD).toLowerCase()}`, children: [title && _jsx(ModalHeader, { title: title }), _jsxs(ModalBody, { children: [_jsx(\"div\", { className: \"blocking-alert__summary-text\", children: message }), _jsx(\"div\", { className: \"blocking-alert__prompt-text\", children: prompt })] }), _jsxs(ModalFooter, { children: [actions.map((action, idx) => {\n // NOTE: need to prevent default for the submit button, otherwise, we would get the warning \"Form submission canceled because the form is not connected\"\n // See https://stackoverflow.com/a/58234405\n const handler = (e) => {\n e.preventDefault();\n action.handler?.();\n handleClose();\n };\n return (_jsx(\"button\", { type: action.default ? 'submit' : 'button', className: `btn btn--dark ${getActionButtonClassName(action.type ?? ActionAlertActionType.STANDARD)}`, onClick: handler, autoFocus: Boolean(action.default), children: action.label }, idx));\n }), !actions.length && (_jsx(\"button\", { type: \"button\" // prevent this toggler being activated on form submission\n , className: \"btn btn--dark blocking-alert__action--standard\", onClick: handleClose, children: \"Cancel\" }))] })] }) }));\n});\nexport const ActionAlert = observer(() => {\n const applicationStore = useApplicationStore();\n const actionAlertInfo = applicationStore.alertService.actionAlertInfo;\n if (!actionAlertInfo) {\n return null;\n }\n return _jsx(ActionAlertContent, { info: actionAlertInfo });\n});\n//# sourceMappingURL=ActionAlert.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useRef } from 'react';\nimport { clsx } from '../utils/ComponentUtils.js';\nexport const PanelLoadingIndicator = (props) => {\n const { isLoading, className } = props;\n const ref = useRef(null);\n useEffect(() => {\n if (ref.current) {\n if (isLoading) {\n ref.current.parentElement?.classList.add('panel-loading-indicator__container');\n }\n else {\n ref.current.parentElement?.classList.remove('panel-loading-indicator__container');\n }\n }\n }, [isLoading]);\n return (_jsx(\"div\", { ref: ref, className: clsx(className, `panel-loading-indicator${isLoading ? '' : '--disabled'}`) }));\n};\n//# sourceMappingURL=PanelLoadingIndicator.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { PanelLoadingIndicator, Dialog, Modal, ModalBody, } from '@finos/legend-art';\nimport { noop } from '@finos/legend-shared';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\n/**\n * The users of this need to justify their use case because blocking app disrupts the UX flow.\n * Of course there are legitimate use cases but please consult the team when you do so.\n * See https://material.io/components/dialogs#usage\n */\nexport const BlockingAlert = observer(() => {\n const applicationStore = useApplicationStore();\n const info = applicationStore.alertService.blockingAlertInfo;\n if (!info) {\n return null;\n }\n return (_jsx(Dialog, { open: Boolean(info), onClose: noop, classes: {\n root: 'blocking-alert__root-container',\n container: 'blocking-alert__container',\n }, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: \"blocking-alert\", children: [_jsx(PanelLoadingIndicator, { isLoading: Boolean(info.showLoading) }), _jsxs(ModalBody, { children: [_jsx(\"div\", { className: \"blocking-alert__message\", children: info.message }), info.prompt && (_jsx(\"div\", { className: \"blocking-alert__message__prompt\", children: info.prompt }))] })] }) }));\n});\n//# sourceMappingURL=BlockingAlert.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint @typescript-eslint/no-unsafe-assignment: 0 */\n//======================================================= TB =======================================================\nimport { TbArrowsJoin2, TbArrowsSplit2, TbMathFunction, TbBook, TbCircleOff, TbCalendarTime, TbClockEdit, TbSql, TbBrandSnowflake, } from 'react-icons/tb';\nexport const ArrowsJoinIcon = TbArrowsJoin2;\nexport const ArrowsSplitIcon = TbArrowsSplit2;\nexport const FunctionIcon = TbMathFunction;\nexport const RepoIcon = TbBook;\nexport const OffIcon = TbCircleOff;\nexport const CalendarClockIcon = TbCalendarTime;\nexport const LastModifiedIcon = TbClockEdit;\nexport const SQLIcon = TbSql;\nexport const Snowflake_BrandIcon = TbBrandSnowflake;\n//======================================================= MD =======================================================\nimport { MdManageSearch, MdModeEdit, MdTextFields, MdMoreVert, MdMoreHoriz, MdWrapText, MdSaveAs, MdSave, MdVerticalAlignBottom, MdRefresh, MdFunctions, MdCompareArrows, MdPlaylistAddCheck, MdAdd, // to be reviewed\nMdEdit, // to be reviewed\nMdSubject, MdViewHeadline, MdAssistant, MdSettingsEthernet, MdLink, MdWindow, MdReviews, MdCalculate, MdRocketLaunch, MdOutlineDataset, MdVerified, MdQueryStats, MdFilterCenterFocus, MdOutlineDescription, MdQuestionAnswer, MdUnfoldLess, MdUnfoldMore, } from 'react-icons/md';\nexport const ManageSearchIcon = MdManageSearch; // to be reviewed\nexport const PencilIcon = MdModeEdit;\nexport const StringTypeIcon = MdTextFields;\nexport const MoreVerticalIcon = MdMoreVert;\nexport const MoreHorizontalIcon = MdMoreHoriz;\nexport const WrapTextIcon = MdWrapText;\nexport const SaveAsIcon = MdSaveAs;\nexport const SaveCurrIcon = MdSave;\nexport const VerticalAlignBottomIcon = MdVerticalAlignBottom;\nexport const RefreshIcon = MdRefresh;\nexport const SigmaIcon = MdFunctions;\nexport const CompareIcon = MdCompareArrows;\nexport const CheckListIcon = MdPlaylistAddCheck;\nexport const AddIcon = MdAdd; // to be reviewed\nexport const EditIcon = MdEdit; // to be reviewed\nexport const SubjectIcon = MdSubject;\nexport const ViewHeadlineIcon = MdViewHeadline;\nexport const AssistantIcon = MdAssistant;\nexport const SettingsEthernetIcon = MdSettingsEthernet;\nexport const LinkIcon = MdLink;\nexport const WindowIcon = MdWindow;\nexport const ReviewIcon = MdReviews;\nexport const CalculateIcon = MdCalculate;\nexport const LaunchIcon = MdRocketLaunch;\nexport const DatasetIcon = MdOutlineDataset;\nexport const VerifiedIcon = MdVerified;\nexport const QueryIcon = MdQueryStats;\nexport const CenterFocusIcon = MdFilterCenterFocus;\nexport const DescriptionIcon = MdOutlineDescription;\nexport const QuestionAnswerIcon = MdQuestionAnswer;\nexport const FoldIcon = MdUnfoldLess;\nexport const UnfoldIcon = MdUnfoldMore;\n//======================================================= VSC =======================================================\nimport { VscDebug, VscError, VscWarning, VscWordWrap, VscGoToFile, VscClose, VscRunAll, VscRunErrors, VscOpenPreview, VscDiff, VscRegex, VscVersions, VscCaseSensitive, VscWholeWord, VscReferences, VscWand, VscCollapseAll, VscExpandAll, VscJson, VscTable, } from 'react-icons/vsc';\nexport const DebugIcon = VscDebug;\nexport const ErrorIcon = VscError;\nexport const WarningIcon = VscWarning;\nexport const WordWrapIcon = VscWordWrap;\nexport const GoToFileIcon = VscGoToFile;\nexport const CloseIcon = VscClose;\nexport const RunAllIcon = VscRunAll;\nexport const RunErrorsIcon = VscRunErrors;\nexport const OpenPreviewIcon = VscOpenPreview;\nexport const DiffIcon = VscDiff;\nexport const RegexIcon = VscRegex;\nexport const VersionsIcon = VscVersions;\nexport const CaseSensitiveIcon = VscCaseSensitive;\nexport const WholeWordMatchIcon = VscWholeWord;\nexport const ReferencesIcon = VscReferences;\nexport const WandIcon = VscWand;\nexport const CollapseTreeIcon = VscCollapseAll;\nexport const ExpandTreeIcon = VscExpandAll;\nexport const SerializeIcon = VscJson;\nexport const TableIcon = VscTable;\n//======================================================= BS =======================================================\nimport { BsFillTriangleFill, BsFillFileEarmarkSpreadsheetFill, BsBoxSeam, BsGripVertical, BsAlignTop, BsAlignMiddle, BsAlignBottom, BsAlignStart, BsAlignCenter, BsAlignEnd, BsDistributeHorizontal, BsDistributeVertical, BsDatabaseFillLock, BsDatabaseFillCheck, BsChevronUp, BsChevronDown, BsChevronRight, BsChevronLeft, BsQuestionSquare, BsQuestionSquareFill, BsTextLeft, } from 'react-icons/bs';\nexport const FilledTriangleIcon = BsFillTriangleFill;\nexport const TabulatedDataFileIcon = BsFillFileEarmarkSpreadsheetFill;\nexport const BundleIcon = BsBoxSeam;\nexport const ThinVerticalDragHandleIcon = BsGripVertical;\nexport const AlignTopIcon = BsAlignTop;\nexport const AlignMiddleIcon = BsAlignMiddle;\nexport const AlignBottomIcon = BsAlignBottom;\nexport const AlignStartIcon = BsAlignStart;\nexport const AlignCenterIcon = BsAlignCenter;\nexport const AlignEndIcon = BsAlignEnd;\nexport const DistributeHorizontalIcon = BsDistributeHorizontal;\nexport const DistributeVerticalIcon = BsDistributeVertical;\nexport const DataAccessIcon = BsDatabaseFillLock;\nexport const DataReadyIcon = BsDatabaseFillCheck;\nexport const ThinChevronUpIcon = BsChevronUp;\nexport const ThinChevronDownIcon = BsChevronDown;\nexport const ThinChevronRightIcon = BsChevronRight;\nexport const ThinChevronLeftIcon = BsChevronLeft;\nexport const QuestionSquareIcon = BsQuestionSquare;\nexport const QuestionSquareFillIcon = BsQuestionSquareFill;\nexport const GenericTextFileIcon = BsTextLeft;\n//======================================================= HI =======================================================\nimport { HiCode, HiHome, HiOutlineDocumentReport } from 'react-icons/hi';\nexport const ReportIcon = HiOutlineDocumentReport;\nexport const CodeIcon = HiCode;\nexport const HomeIcon = HiHome;\n//======================================================= io5 =======================================================\nimport { IoOpenOutline, IoResize, IoFileTrayFullOutline, IoMenuOutline, IoBeaker, IoFlaskSharp, IoSyncCircleSharp, IoStatsChart, IoHelpBuoy, IoCloudDownloadOutline, IoCloudUploadOutline, IoHelp, IoSunnyOutline, IoMoon, } from 'react-icons/io5';\nexport const OpenIcon = IoOpenOutline;\nexport const ResizeIcon = IoResize;\nexport const FileTrayIcon = IoFileTrayFullOutline;\nexport const MenuIcon = IoMenuOutline;\nexport const BeakerIcon = IoBeaker;\nexport const FlaskIcon = IoFlaskSharp;\nexport const AvailabilityIcon = IoSyncCircleSharp;\nexport const StatisticsIcon = IoStatsChart;\nexport const SupportIcon = IoHelpBuoy;\nexport const CloudDownloadIcon = IoCloudDownloadOutline;\nexport const CloudUploadIcon = IoCloudUploadOutline;\nexport const QuestionThinIcon = IoHelp;\nexport const SunIcon = IoSunnyOutline;\nexport const MoonIcon = IoMoon;\n//======================================================= FA =======================================================\nimport { FaHistory, FaCrosshairs, FaLayerGroup, FaGhost, FaLock, FaMask, FaFile, FaLongArrowAltRight, FaTimes, FaTimesCircle, FaPlus, FaCog, FaEye, FaEyeSlash, FaCaretUp, FaCaretDown, FaFire, FaSave, FaSquare, FaRegSquare, FaCheckSquare, FaMinusSquare, FaHashtag, FaHammer, FaCommentDots, FaClock, FaRegClock, FaToggleOn, FaQuestion, FaQuestionCircle, FaInfoCircle, FaCompress, FaMap, FaPlay, FaGripVertical, FaRobot, FaArrowLeft, FaArrowRight, FaArrowAltCircleDown, FaArrowAltCircleRight, FaArrowCircleRight, FaUser, FaShapes, FaEnvelope, FaSkull, FaDollarSign, FaSearch, FaStar, FaKey, FaExternalLinkAlt, FaExternalLinkSquareAlt, FaLightbulb, FaRegLightbulb, FaList, FaCircle, FaMinusCircle, FaTrash, FaRegCircle, FaShieldAlt, FaTag, FaTags, FaBolt, FaCheckCircle, FaExclamationTriangle, FaBug, FaCircleNotch, FaRegKeyboard, FaUserSecret, FaBuffer, FaSitemap, FaExpand, FaExpandArrowsAlt, FaSortAlphaDown, FaSort, FaSortAlphaDownAlt, FaFolderPlus, FaCaretRight, FaCaretLeft, FaWrench, FaArrowDown, FaArrowUp, FaTerminal, FaTruckLoading, FaFileCsv, FaFolderOpen, FaFolder, FaFileCode, FaCodeBranch, FaArrowAltCircleUp, FaArrowAltCircleLeft, FaRegStopCircle, FaAsterisk, FaFilter, FaExclamationCircle, FaRocket, FaCheck, FaBan, FaFileImport, FaUserFriends, FaDownload, FaUpload, FaRegWindowRestore, FaPauseCircle, FaShare, FaRegCopy, FaFileAlt, FaEdit, FaArrowsAltH, FaRegWindowMaximize, FaWindowMaximize, FaLongArrowAltDown, FaLongArrowAltUp, FaMeteor, FaPiedPiperSquare, FaPuzzlePiece, FaToggleOff, FaMapMarkerAlt, FaHatWizard, FaRegLaughWink, FaRegChartBar, FaRegSadTear, FaBusinessTime, FaDatabase, FaServer, FaArchive, FaBrain, FaBookOpen, FaLevelDownAlt, FaRegCalendarAlt, FaCalculator, FaReadme, FaRedo, FaUndo, } from 'react-icons/fa';\nexport const HistoryIcon = FaHistory;\nexport const CrosshairsIcon = FaCrosshairs;\nexport const LayerGroupIcon = FaLayerGroup;\nexport const GhostIcon = FaGhost;\nexport const LockIcon = FaLock;\nexport const MaskIcon = FaMask;\nexport const FileIcon = FaFile;\nexport const LongArrowRightIcon = FaLongArrowAltRight;\nexport const TimesIcon = FaTimes;\nexport const TimesCircleIcon = FaTimesCircle;\nexport const PlusIcon = FaPlus;\nexport const CogIcon = FaCog;\nexport const EyeIcon = FaEye;\nexport const CloseEyeIcon = FaEyeSlash;\nexport const CaretUpIcon = FaCaretUp;\nexport const CaretDownIcon = FaCaretDown;\nexport const FireIcon = FaFire;\nexport const SaveIcon = FaSave;\nexport const SquareIcon = FaSquare;\nexport const EmptySquareIcon = FaRegSquare;\nexport const CheckSquareIcon = FaCheckSquare;\nexport const MinusSquareIcon = FaMinusSquare;\nexport const HashtagIcon = FaHashtag;\nexport const HammerIcon = FaHammer;\nexport const ChatIcon = FaCommentDots;\nexport const ClockIcon = FaClock;\nexport const EmptyClockIcon = FaRegClock;\nexport const ToggleIcon = FaToggleOn;\nexport const QuestionIcon = FaQuestion;\nexport const QuestionCircleIcon = FaQuestionCircle;\nexport const InfoCircleIcon = FaInfoCircle;\nexport const CompressIcon = FaCompress;\nexport const MapIcon = FaMap;\nexport const PlayIcon = FaPlay;\nexport const VerticalDragHandleIcon = FaGripVertical;\nexport const RobotIcon = FaRobot;\nexport const ArrowLeftIcon = FaArrowLeft;\nexport const ArrowRightIcon = FaArrowRight;\nexport const ArrowCircleDownIcon = FaArrowAltCircleDown;\nexport const ArrowCircleRightIcon = FaArrowAltCircleRight;\nexport const StickArrowCircleRightIcon = FaArrowCircleRight;\nexport const UserIcon = FaUser;\nexport const ShapesIcon = FaShapes;\nexport const EnvelopIcon = FaEnvelope;\nexport const SkullIcon = FaSkull;\nexport const DollarIcon = FaDollarSign;\nexport const SearchIcon = FaSearch;\nexport const StarIcon = FaStar;\nexport const KeyIcon = FaKey;\nexport const ExternalLinkIcon = FaExternalLinkAlt;\nexport const ExternalLinkSquareIcon = FaExternalLinkSquareAlt;\nexport const LightBulbIcon = FaLightbulb;\nexport const EmptyLightBulbIcon = FaRegLightbulb;\nexport const ListIcon = FaList;\nexport const CircleIcon = FaCircle;\nexport const MinusCircleIcon = FaMinusCircle;\nexport const TrashIcon = FaTrash;\nexport const EmptyCircleIcon = FaRegCircle;\nexport const ShieldIcon = FaShieldAlt;\nexport const TagIcon = FaTag;\nexport const TagsIcon = FaTags;\nexport const BoltIcon = FaBolt;\nexport const CheckCircleIcon = FaCheckCircle;\nexport const ExclamationTriangleIcon = FaExclamationTriangle;\nexport const BugIcon = FaBug;\nexport const CircleNotchIcon = FaCircleNotch;\nexport const KeyboardIcon = FaRegKeyboard;\nexport const HackerIcon = FaUserSecret;\nexport const BufferIcon = FaBuffer; // to be reviewed, moved to LegendIcon\nexport const SitemapIcon = FaSitemap; // to be reviewed, moved to LegendIcon\nexport const ExpandIcon = FaExpand;\nexport const ExpandAllIcon = FaExpandArrowsAlt;\nexport const SortDownIcon = FaSortAlphaDown;\nexport const SortIcon = FaSort;\nexport const SortDownAltIcon = FaSortAlphaDownAlt;\nexport const NewFolderIcon = FaFolderPlus;\nexport const CaretRightIcon = FaCaretRight;\nexport const CaretLeftIcon = FaCaretLeft;\nexport const WrenchIcon = FaWrench;\nexport const ArrowDownIcon = FaArrowDown;\nexport const ArrowUpIcon = FaArrowUp;\nexport const TerminalIcon = FaTerminal;\nexport const TruckLoadingIcon = FaTruckLoading;\nexport const FolderOpenIcon = FaFolderOpen;\nexport const FolderIcon = FaFolder;\nexport const FileCodeIcon = FaFileCode;\nexport const CodeBranchIcon = FaCodeBranch;\nexport const ArrowCircleUpIcon = FaArrowAltCircleUp;\nexport const ArrowCircleLeftIcon = FaArrowAltCircleLeft;\nexport const EmptyStopCircleIcon = FaRegStopCircle;\nexport const AsteriskIcon = FaAsterisk;\nexport const FilterIcon = FaFilter;\nexport const ExclamationCircleIcon = FaExclamationCircle;\nexport const RocketIcon = FaRocket;\nexport const CheckIcon = FaCheck;\nexport const BanIcon = FaBan;\nexport const FileImportIcon = FaFileImport;\nexport const UsersIcon = FaUserFriends;\nexport const DownloadIcon = FaDownload;\nexport const UploadIcon = FaUpload;\nexport const EmptyWindowRestoreIcon = FaRegWindowRestore;\nexport const PauseCircleIcon = FaPauseCircle;\nexport const ShareIcon = FaShare;\nexport const CopyIcon = FaRegCopy;\nexport const FileAltIcon = FaFileAlt; // to be reviewed/combined\nexport const PencilEditIcon = FaEdit; // to be reviewed/combined\nexport const ArrowsAltHIcon = FaArrowsAltH; // to be reviewed/combined\nexport const WindowMaximizeIcon = FaRegWindowMaximize; // to be reviewed/combined\nexport const FilledWindowMaximizeIcon = FaWindowMaximize; // to be reviewed/combined\nexport const LongArrowAltDownIcon = FaLongArrowAltDown; // to be reviewed/combined\nexport const LongArrowAltUpIcon = FaLongArrowAltUp; // to be reviewed/combined\nexport const MeteorIcon = FaMeteor; // to be reviewed/combined\nexport const PiedPiperSquareIcon = FaPiedPiperSquare; // to be reviewed/combined\nexport const PuzzlePieceIcon = FaPuzzlePiece; // to be reviewed/combined\nexport const ToggleOffIcon = FaToggleOff;\nexport const MapMarkerIcon = FaMapMarkerAlt;\nexport const WizardHatIcon = FaHatWizard;\nexport const FaceLaughWinkIcon = FaRegLaughWink;\nexport const ChartIcon = FaRegChartBar;\nexport const CsvIcon = FaFileCsv;\nexport const FaceSadTearIcon = FaRegSadTear;\nexport const BusinessTimeIcon = FaBusinessTime; // to be reviewed/combined\nexport const DatabaseIcon = FaDatabase;\nexport const ServerIcon = FaServer;\nexport const ArchiveIcon = FaArchive;\nexport const BrainIcon = FaBrain;\nexport const DocumentationIcon = FaBookOpen;\nexport const LevelDownIcon = FaLevelDownAlt; // to be reviewed/combined\nexport const CalendarIcon = FaRegCalendarAlt;\nexport const CalculatorIcon = FaCalculator;\nexport const ReadMeIcon = FaReadme;\nexport const UndoIcon = FaUndo;\nexport const RedoIcon = FaRedo;\n//======================================================= GI =======================================================\nimport { GiWaterDrop, GiBeard, GiSunglasses, GiHouseKeys, } from 'react-icons/gi';\nexport const WaterDropIcon = GiWaterDrop;\nexport const BeardIcon = GiBeard;\nexport const SunglassesIcon = GiSunglasses;\nexport const HouseKeys = GiHouseKeys;\n//======================================================= GO =======================================================\nimport { GoChevronDown, GoChevronUp, GoChevronLeft, GoChevronRight, GoFileBinary, GoGitPullRequest, GoGitMerge, GoSync, GoGitBranch, GoX, GoPlug, } from 'react-icons/go';\nexport const ChevronDownIcon = GoChevronDown;\nexport const ChevronUpIcon = GoChevronUp;\nexport const ChevronLeftIcon = GoChevronLeft;\nexport const ChevronRightIcon = GoChevronRight;\nexport const BinaryTypeIcon = GoFileBinary;\nexport const GitPullRequestIcon = GoGitPullRequest;\nexport const GitMergeIcon = GoGitMerge;\nexport const SyncIcon = GoSync;\nexport const GitBranchIcon = GoGitBranch;\nexport const XIcon = GoX;\nexport const PluginIcon = GoPlug;\n//======================================================= SI =======================================================\nimport { SiSwagger } from 'react-icons/si';\nexport const SwaggerIcon = SiSwagger; // to be reviewed\n//======================================================= BI =======================================================\nimport { BiShapeTriangle, BiAtom, BiCabinet } from 'react-icons/bi';\nexport const ShapeTriangleIcon = BiShapeTriangle;\nexport const AtomIcon = BiAtom;\nexport const CabinetIcon = BiCabinet;\n//======================================================= CG =======================================================\nimport { CgOptions } from 'react-icons/cg';\nexport const OptionsIcon = CgOptions;\n//======================================================= FI =======================================================\nimport { FiPackage, FiMinus, FiMousePointer, FiMove, FiPlusCircle, FiSidebar, FiTriangle, FiZoomIn, FiZoomOut, FiGitMerge, FiLink, } from 'react-icons/fi';\nexport const PackageIcon = FiPackage;\nexport const MinusIcon = FiMinus;\nexport const MousePointerIcon = FiMousePointer;\nexport const MoveIcon = FiMove;\nexport const PlusCircleIcon = FiPlusCircle;\nexport const SidebarIcon = FiSidebar;\nexport const TriangleIcon = FiTriangle;\nexport const ZoomInIcon = FiZoomIn;\nexport const ZoomOutIcon = FiZoomOut;\nexport const TruncatedGitMergeIcon = FiGitMerge; // to be reviewed/combined\nexport const AnchorLinkIcon = FiLink;\n//======================================================= RI =======================================================\nimport { RiShapeLine, RiShareBoxFill, RiTestTubeFill, RiRobotFill, RiGovernmentFill, RiMoneyDollarCircleFill, } from 'react-icons/ri';\nexport const ShareBoxIcon = RiShareBoxFill;\nexport const ShapeLineIcon = RiShapeLine;\nexport const TestTubeIcon = RiTestTubeFill;\nexport const DroidIcon = RiRobotFill;\nexport const GovernanceIcon = RiGovernmentFill;\nexport const CostCircleIcon = RiMoneyDollarCircleFill;\n//======================================================= Fc =======================================================\nimport { FcWorkflow } from 'react-icons/fc';\nexport const WorkflowIcon = FcWorkflow;\n//# sourceMappingURL=Icon.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ApplicationError, assertErrorThrown, assertTrue, isString, } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport const DEFAULT_NOTIFICATION_HIDE_TIME = 6000; // ms\nexport const DEFAULT_ERROR_NOTIFICATION_HIDE_TIME = 10000; // ms\nexport var NOTIFCATION_SEVERITY;\n(function (NOTIFCATION_SEVERITY) {\n NOTIFCATION_SEVERITY[\"ILEGAL_STATE\"] = \"ILEGAL_STATE\";\n NOTIFCATION_SEVERITY[\"ERROR\"] = \"ERROR\";\n NOTIFCATION_SEVERITY[\"WARNING\"] = \"WARNING\";\n NOTIFCATION_SEVERITY[\"SUCCESS\"] = \"SUCCESS\";\n NOTIFCATION_SEVERITY[\"INFO\"] = \"INFO\";\n})(NOTIFCATION_SEVERITY || (NOTIFCATION_SEVERITY = {}));\nexport class Notification {\n severity;\n message;\n actions;\n autoHideDuration;\n constructor(severity, message, actions, autoHideDuration) {\n this.severity = severity;\n this.message = message;\n this.actions = actions;\n this.autoHideDuration = autoHideDuration;\n }\n}\nexport class NotificationService {\n notification;\n constructor() {\n makeObservable(this, {\n notification: observable,\n setNotification: action,\n notify: action,\n notifySuccess: action,\n notifyWarning: action,\n notifyIllegalState: action,\n notifyError: action,\n });\n }\n setNotification(notification) {\n this.notification = notification;\n }\n notify(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.INFO, message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifySuccess(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.SUCCESS, message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyWarning(content, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.WARNING, content instanceof Error ? content.message : content, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyError(content, actions) {\n let message;\n if (content instanceof ApplicationError) {\n message = content.detail;\n }\n else if (content instanceof Error) {\n message = content.message;\n }\n else {\n assertTrue(isString(content), `Can't display error`);\n message = content;\n }\n if (message) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.ERROR, message, actions ?? [], undefined));\n }\n }\n notifyIllegalState(message, actions, autoHideDuration) {\n this.setNotification(new Notification(NOTIFCATION_SEVERITY.ILEGAL_STATE, isString(message) ? `[PLEASE NOTIFY DEVELOPER] ${message}` : message, actions ?? [], autoHideDuration === null\n ? undefined\n : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME));\n }\n notifyUnsupportedFeature(featureName) {\n this.notifyWarning(`Unsupported feature: ${featureName}`);\n }\n /**\n * This function creates a more user-friendly way to throw error in the UI. Rather than crashing the whole app, we will\n * just notify and replacing the value should get with an alternative (e.g. `undefined`). A good use-case for this\n * is where we would not expect an error to throw (i.e. `IllegalStateError`), but we want to be sure that if the error\n * ever occurs, it still shows very apparently in the UI, as such, printing out in the console is not good enough,\n * but crashing the app is bad too, so this is a good balance.\n */\n notifyAndReturnAlternativeOnError = (fn, alternative) => {\n try {\n return fn();\n }\n catch (error) {\n assertErrorThrown(error);\n this.notifyIllegalState(error.message);\n return alternative;\n }\n };\n}\n//# sourceMappingURL=NotificationService.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { Notification, NotificationContent, ChevronDownIcon, ChevronUpIcon, TimesIcon, ExclamationTriangleIcon, TimesCircleIcon, CheckCircleIcon, InfoCircleIcon, BugIcon, clsx, } from '@finos/legend-art';\nimport { useState } from 'react';\nimport { DEFAULT_NOTIFICATION_HIDE_TIME, NOTIFCATION_SEVERITY, } from '../stores/NotificationService.js';\nexport const NotificationManager = observer(() => {\n const applicationStore = useApplicationStore();\n const notification = applicationStore.notificationService.notification;\n const isOpen = Boolean(notification);\n const message = notification?.message ?? '';\n const severity = notification?.severity ?? NOTIFCATION_SEVERITY.INFO;\n const [isExpanded, setIsExpanded] = useState(false);\n let notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--info\", children: _jsx(InfoCircleIcon, {}) }));\n switch (severity) {\n case NOTIFCATION_SEVERITY.ILEGAL_STATE:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--error\", children: _jsx(BugIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.ERROR:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--error\", children: _jsx(TimesCircleIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.WARNING:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--warning\", children: _jsx(ExclamationTriangleIcon, {}) }));\n break;\n case NOTIFCATION_SEVERITY.SUCCESS:\n notificationIcon = (_jsx(\"div\", { className: \"notification__message__content__icon notification__message__content__icon--success\", children: _jsx(CheckCircleIcon, {}) }));\n break;\n default:\n break;\n }\n const handleClose = () => {\n applicationStore.notificationService.setNotification(undefined);\n setIsExpanded(false);\n };\n const handleCopy = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(message));\n const toggleExpansion = () => setIsExpanded(!isExpanded);\n const onSnackbarAutoHideOrClickAway = (event, reason) => {\n // NOTE: we only should not allow dismissing the notification on click-away. First of call, this might not be desirable\n // second, this clashes with modal that traps focus, e.g. when we have another modal open and want to show a notification\n // the notification focus is stolen by the modal leading to the notification immediately gets clicked-away and closed\n if (reason === 'timeout') {\n handleClose();\n }\n };\n return (_jsx(Notification, { classes: {\n root: 'notification',\n anchorOriginBottomRight: 'notification__position',\n }, anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right',\n }, open: isOpen, \n // setting the auto-hide duration to null will stop it from hiding automatically\n autoHideDuration: notification\n ? notification.autoHideDuration ?? null\n : DEFAULT_NOTIFICATION_HIDE_TIME, onClose: onSnackbarAutoHideOrClickAway, children: _jsx(NotificationContent, { classes: {\n root: 'notification__content',\n message: 'notification__message',\n action: 'notification__actions',\n }, message: _jsxs(\"div\", { className: \"notification__message__content\", children: [notificationIcon, _jsx(\"div\", { className: clsx('notification__message__content__text', {\n 'notification__message__content__text--expanded': isExpanded,\n }), onClick: handleCopy, title: \"Click to Copy\", children: message })] }), action: [\n _jsx(\"button\", { className: \"notification__action\", onClick: toggleExpansion, tabIndex: -1, title: isExpanded ? 'Collapse' : 'Expand', children: isExpanded ? _jsx(ChevronDownIcon, {}) : _jsx(ChevronUpIcon, {}) }, \"expand\"),\n _jsx(\"button\", { className: \"notification__action\", onClick: handleClose, tabIndex: -1, title: \"Dismiss\", children: _jsx(TimesIcon, {}) }, \"close\"),\n ] }) }, typeof message === 'string' || typeof message === 'number'\n ? message\n : ''));\n});\n//# sourceMappingURL=NotificationManager.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Menu as MuiMenu } from '@mui/material';\nexport const BaseMenu = (props) => {\n const { children, classes, ...otherProps } = props;\n return (_jsx(MuiMenu, { classes: {\n ...(classes ?? {}),\n paper: 'mui-menu__paper',\n list: 'mui-menu__list',\n }, transitionDuration: 0, ...otherProps, children: props.children }));\n};\n//# sourceMappingURL=BaseMenu.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useState, useRef } from 'react';\nimport { BaseMenu } from './BaseMenu.js';\nexport const ContextMenu = (props) => {\n const { className, children, menuProps, content, disabled, onClose, onOpen } = props;\n const contextMenuRoot = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState();\n const [left, setLeft] = useState(0);\n const [top, setTop] = useState(0);\n const reset = () => {\n setAnchorEl(undefined);\n setIsOpen(false);\n setTop(0);\n setLeft(0);\n };\n const close = (event) => {\n event.stopPropagation();\n event.preventDefault();\n reset();\n onClose?.();\n };\n const onContextMenu = (event) => {\n event.stopPropagation();\n event.preventDefault();\n if (disabled) {\n return;\n }\n onOpen?.();\n if (contextMenuRoot.current) {\n // Get position of the container element relative to the page document\n // See https://plainjs.com/javascript/styles/get-the-position-of-an-element-relative-to-the-document-24/\n const containerRect = contextMenuRoot.current.getBoundingClientRect();\n const containerLeft = containerRect.left +\n (window.scrollX || document.documentElement.scrollLeft);\n const containerTop = containerRect.top +\n (window.scrollY || document.documentElement.scrollTop);\n const { clientX, clientY, target } = event;\n const eventTarget = target;\n if (anchorEl !== eventTarget) {\n // NOTE: since this method is not supported in JSDom, we will disable this optimization in test\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV !== 'test') {\n const elements = document.elementsFromPoint(clientX, clientY);\n // Besides checking for the element containment, we also want to check for position as MUI\n // Menu have a background that spans the whole screen to check for clickout and trap focus\n // which means right click on other part of the screen will also result in context menu being shown\n const hasAnchor = elements.some((element) => element === eventTarget) &&\n containerLeft <= clientX &&\n clientX <= containerLeft + containerRect.width &&\n containerTop <= clientY &&\n clientY <= containerTop + containerRect.height;\n if (!hasAnchor) {\n reset();\n onClose?.();\n return;\n }\n }\n }\n setAnchorEl(eventTarget);\n setIsOpen(true);\n setTop(clientY);\n setLeft(clientX);\n }\n };\n return (_jsxs(\"div\", { ref: contextMenuRoot, className: className, onContextMenu: onContextMenu, children: [children, _jsx(BaseMenu, { open: isOpen, anchorPosition: { left, top }, onClose: close, anchorReference: \"anchorPosition\", BackdropProps: {\n invisible: true,\n onContextMenu,\n }, disableRestoreFocus: true, transitionDuration: 0, onClick: close, ...menuProps, children: isOpen && content }, `${left}, ${top}`)] }));\n};\n//# sourceMappingURL=ContextMenu.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { forwardRef } from 'react';\nimport { clsx } from 'clsx';\nimport { generateSimpleDIVComponent } from '../utils/ComponentCreatorUtils.js';\nexport const MenuContent = forwardRef(function MenuContent(props, ref) {\n const { className, children, ...otherProps } = props;\n return (_jsx(\"div\", { ref: ref, className: clsx('menu', className), ...otherProps, children: children }));\n});\nexport const MenuContentItem = (props) => {\n const { className, onClick, title, disabled, children, ...otherProps } = props;\n return (_jsx(\"button\", { className: clsx('menu__item', className), disabled: Boolean(disabled), title: title, onClick: onClick, ...otherProps, children: children }));\n};\nexport const MenuContentDivider = generateSimpleDIVComponent('MenuContentDivider', 'menu__divider');\nexport const MenuContentItemIcon = generateSimpleDIVComponent('MenuContentItemIcon', 'menu__item__icon');\nexport const MenuContentItemBlankIcon = (props) => {\n const { className, ...otherProps } = props;\n return (_jsx(\"div\", { className: clsx('menu__item__icon', className), ...otherProps }));\n};\nexport const MenuContentItemLabel = generateSimpleDIVComponent('MenuContentItemLabel', 'menu__item__label');\n//# sourceMappingURL=MenuContent.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport ReactMarkdown from 'react-markdown';\nimport remarkGFM from 'remark-gfm';\nimport { clsx } from 'clsx';\nimport { useEffect } from 'react';\nimport mermaid from 'mermaid';\nexport const MarkdownTextViewer = (props) => {\n useEffect(() => {\n // this will render the mermaid diagram\n mermaid.initialize({ startOnLoad: true, theme: 'dark' });\n mermaid.contentLoaded();\n }, [props.value]);\n return (_jsx(ReactMarkdown, { className: clsx('markdown-content', props.className), remarkPlugins: [remarkGFM], components: props.components ?? {\n // customize the rendering of the <code> block, if the language is mermaid\n // the class name must include `mermaid` and it will get picked up by the mermaid renderer\n code: (_props) => {\n const { children, className, node, ...rest } = _props;\n const match = /language-(?<language>\\w+)/.exec(className ?? '');\n return match?.groups?.language ? (_jsx(\"code\", { ...rest, className: clsx(match.groups.language), children: children })) : (_jsx(\"code\", { ...rest, className: className, children: children }));\n },\n }, children: props.value.value }));\n};\n//# sourceMappingURL=MarkdownTextViewer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useState } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { clsx } from 'clsx';\nconst DEFAULT_CONTENT_PADDING = 20;\n/**\n * Use this component for panel with empty content, it has a resize detector that will\n * help to show/hide the content as the panel is resized\n */\nexport const BlankPanelContent = (props) => {\n const { children } = props;\n const { ref: contentRef, width: contentWidth, height: contentHeight, } = useResizeDetector({\n refreshMode: 'throttle',\n refreshRate: 50,\n refreshOptions: { trailing: true },\n });\n const [showContent, setShowContent] = useState(false);\n const { ref: containerRef, width: containerWidth, height: containerHeight, } = useResizeDetector({\n refreshMode: 'throttle',\n refreshRate: 50,\n refreshOptions: { trailing: true },\n });\n useEffect(() => {\n setShowContent((containerWidth ?? 0) >\n (contentWidth ?? 0) + DEFAULT_CONTENT_PADDING * 2 &&\n (containerHeight ?? 0) >\n (contentHeight ?? 0) + DEFAULT_CONTENT_PADDING * 2);\n }, [containerWidth, containerHeight, contentWidth, contentHeight]);\n return (_jsx(\"div\", { ref: containerRef, className: \"panel__content__blank\", children: _jsx(\"div\", { ref: contentRef, className: clsx('panel__content__blank__content', {\n 'panel__content__blank__content--hide': !showContent,\n }), children: children }) }));\n};\n//# sourceMappingURL=BlankPanelContent.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { RadioGroup as MuiRadioGroup, FormControlLabel, Radio, } from '@mui/material';\nimport { clsx } from 'clsx';\nconst transformToMatrix = (arr, stepSize) => {\n const matrix = [];\n for (let i = 0; i < arr.length; i += stepSize) {\n matrix.push(arr.slice(i, i + stepSize));\n }\n return matrix;\n};\nexport const BaseRadioGroup = (props) => {\n const { children, options, size, className, ...otherProps } = props;\n // For displaying avaible options in a [n,size] matrix\n const targetOptionsValuesInMatrix = transformToMatrix(options, size);\n return (_jsxs(\"div\", { className: clsx('mui-radio-group', className), children: [targetOptionsValuesInMatrix.map((row, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n _jsx(\"div\", { children: _jsx(MuiRadioGroup, { className: \"mui-radio-group__group\", ...otherProps, children: row.map((op) => (_jsx(FormControlLabel, { className: \"mui-radio-group__group__column\", style: { width: `${100 / size}%` }, value: op, control: _jsx(Radio, { className: \"mui-radio-group__group__item__radio-btn\" }), label: _jsx(\"div\", { className: \"mui-radio-group__group__item__label\", children: op }) }, op))) }) }, idx))), children] }));\n};\n//# sourceMappingURL=BaseRadioGroup.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Popover as MuiPopover, } from '@mui/material';\nexport const BasePopover = (props) => {\n const { children, ...otherProps } = props;\n return (_jsx(MuiPopover, { classes: {\n paper: 'mui-popover__paper',\n }, transitionDuration: 0, ...otherProps, children: props.children }));\n};\n//# sourceMappingURL=BasePopover.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_DOCUMENTATION_KEY;\n(function (LEGEND_APPLICATION_DOCUMENTATION_KEY) {\n LEGEND_APPLICATION_DOCUMENTATION_KEY[\"QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX\"] = \"question.how-to-use-advanced-search-syntax\";\n})(LEGEND_APPLICATION_DOCUMENTATION_KEY || (LEGEND_APPLICATION_DOCUMENTATION_KEY = {}));\n//# sourceMappingURL=LegendApplicationDocumentation.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { clsx, TimesIcon, SearchIcon, MapMarkerIcon, CloseIcon, ContextMenu, MenuContent, MenuContentItem, MarkdownTextViewer, ChevronDownIcon, ChevronRightIcon, BlankPanelContent, BeardIcon, SunglassesIcon, WizardHatIcon, FaceLaughWinkIcon, ThinVerticalDragHandleIcon, PanelLoadingIndicator, BasePopover, FaceSadTearIcon, CogIcon, Draggable, BaseRadioGroup, QuestionCircleIcon, EmptyWindowRestoreIcon, WindowMaximizeIcon, MinusCircleIcon, } from '@finos/legend-art';\nimport { ADVANCED_FUZZY_SEARCH_MODE, ContentType, debounce, downloadFileUsingDataURI, formatDate, isString, uuid, } from '@finos/legend-shared';\nimport { observer } from 'mobx-react-lite';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { DEFAULT_DATE_TIME_FORMAT, DEFAULT_TAB_SIZE, } from '../stores/ApplicationConfig.js';\nimport { VIRTUAL_ASSISTANT_TAB, } from '../stores/AssistantService.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\nimport { LEGEND_APPLICATION_DOCUMENTATION_KEY } from '../__lib__/LegendApplicationDocumentation.js';\nconst WIZARD_GREETING = `Bonjour, It's Pierre!`;\nconst VirtualAssistantDocumentationEntryViewer = observer((props) => {\n const { entry } = props;\n const applicationStore = useApplicationStore();\n const toggleExpand = () => {\n if (!entry.isOpen) {\n LegendApplicationTelemetryHelper.logEvent_VirtualAssistantDocumentationEntryAccessed(applicationStore.telemetryService, {\n key: entry.documentationKey,\n });\n }\n entry.setIsOpen(!entry.isOpen);\n };\n const onDocumentationLinkClick = () => {\n LegendApplicationTelemetryHelper.logEvent_VirtualAssistantDocumentationEntryAccessed(applicationStore.telemetryService, {\n key: entry.documentationKey,\n });\n };\n const copyDocumentationKey = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(entry.documentationKey));\n return (_jsx(ContextMenu, { className: \"virtual-assistant__doc-entry\", menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsx(MenuContent, { children: _jsx(MenuContentItem, { onClick: copyDocumentationKey, children: \"Copy Documentation Key\" }) }), children: _jsxs(\"div\", { className: \"virtual-assistant__doc-entry\", children: [_jsxs(\"div\", { className: \"virtual-assistant__doc-entry__header\", children: [_jsx(\"button\", { className: clsx('virtual-assistant__doc-entry__expand-icon', {\n 'virtual-assistant__doc-entry__expand-icon--disabled': !entry.content,\n }), disabled: !entry.content, tabIndex: -1, onClick: toggleExpand, children: entry.isOpen ? _jsx(ChevronDownIcon, {}) : _jsx(ChevronRightIcon, {}) }), entry.url ? (_jsx(\"a\", { className: \"virtual-assistant__doc-entry__title virtual-assistant__doc-entry__title--link\", rel: \"noopener noreferrer\", target: \"_blank\", href: entry.url, onClick: onDocumentationLinkClick, title: \"Click to see external documentation\", children: entry.title })) : (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__title\", onClick: toggleExpand, children: entry.title }))] }), entry.isOpen && entry.content && (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__content\", children: isString(entry.content) ? (_jsx(\"div\", { className: \"virtual-assistant__doc-entry__content__text\", children: entry.content })) : (_jsx(MarkdownTextViewer, { className: \"virtual-assistant__doc-entry__content__markdown-text\", value: entry.content })) }))] }) }));\n});\nconst VirtualAssistantContextualSupportPanel = observer(() => {\n const applicationStore = useApplicationStore();\n const assistantService = applicationStore.assistantService;\n const contextualEntry = assistantService.currentContextualDocumentationEntry;\n const copyContextIDToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(contextualEntry?.context ?? ''));\n const copyCurrentContextIDToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(applicationStore.navigationContextService.currentContext?.key ?? ''));\n const copyContextStackToClipboard = applicationStore.guardUnhandledError(() => applicationStore.clipboardService.copyTextToClipboard(applicationStore.navigationContextService.contextStack\n .map((context) => context.key)\n .join(' > ')));\n return (_jsxs(ContextMenu, { className: \"virtual-assistant__contextual-support\", disabled: !contextualEntry, menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: copyContextIDToClipboard, children: \"Copy Context ID\" }), _jsx(MenuContentItem, { onClick: copyCurrentContextIDToClipboard, children: \"Copy Current Context ID\" }), _jsx(MenuContentItem, { onClick: copyContextStackToClipboard, children: \"Copy Context Stack\" })] }), children: [contextualEntry && (_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__content\", children: [contextualEntry.title && (_jsx(\"div\", { className: \"virtual-assistant__contextual-support__title\", children: contextualEntry.title })), contextualEntry.content && (_jsx(_Fragment, { children: isString(contextualEntry.content) ? (_jsx(\"div\", { className: \"virtual-assistant__contextual-support__text\", children: contextualEntry.content })) : (_jsx(MarkdownTextViewer, { className: \"virtual-assistant__contextual-support__markdown-text\", value: contextualEntry.content })) })), contextualEntry.related.length && (_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__relevant-entries\", children: [_jsxs(\"div\", { className: \"virtual-assistant__contextual-support__relevant-entries__title\", children: [\"Related entries (\", contextualEntry.related.length, \")\"] }), contextualEntry.related.map((entry) => (_jsx(VirtualAssistantDocumentationEntryViewer, { entry: entry }, entry.uuid)))] }))] })), !contextualEntry && (_jsx(BlankPanelContent, { children: _jsxs(\"div\", { className: \"virtual-assistant__panel__placeholder\", children: [_jsx(FaceLaughWinkIcon, { className: \"virtual-assistant__panel__placeholder__icon\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__message\", children: \"No contextual documentation found!\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__instruction\", children: \"Keep using the app. When contextual help is available, we will let you know!\" })] }) }))] }));\n});\nconst VirtualAssistantSearchPanel = observer(() => {\n const applicationStore = useApplicationStore();\n const searchInputRef = useRef(null);\n const assistantService = applicationStore.assistantService;\n // search text\n const searchText = assistantService.searchText;\n const debouncedSearch = useMemo(() => debounce(() => assistantService.search(), 100), [assistantService]);\n const onSearchTextChange = (event) => {\n assistantService.setSearchText(event.target.value);\n debouncedSearch();\n };\n const clearSearchText = () => {\n assistantService.resetSearch();\n assistantService.currentDocumentationEntry = undefined;\n searchInputRef.current?.focus();\n };\n const toggleSearchConfigMenu = () => assistantService.setShowSearchConfigurationMenu(!assistantService.showSearchConfigurationMenu);\n const downloadDocRegistry = () => {\n downloadFileUsingDataURI(`documentation-registry_${formatDate(new Date(Date.now()), DEFAULT_DATE_TIME_FORMAT)}.json`, JSON.stringify(applicationStore.documentationService.publishDocRegistry(), undefined, DEFAULT_TAB_SIZE), ContentType.APPLICATION_JSON);\n };\n const downloadContextualDocIndex = () => {\n downloadFileUsingDataURI(`documentation-registry_${formatDate(new Date(Date.now()), DEFAULT_DATE_TIME_FORMAT)}.json`, JSON.stringify(applicationStore.documentationService.publishContextualDocIndex(), undefined, DEFAULT_TAB_SIZE), ContentType.APPLICATION_JSON);\n };\n useEffect(() => {\n searchInputRef.current?.focus();\n }, []);\n return (_jsxs(\"div\", { className: \"virtual-assistant__search\", children: [_jsxs(\"div\", { className: \"virtual-assistant__search__header\", children: [_jsx(\"input\", { ref: searchInputRef, \n /**\n * NOTE: In the scenario where another modal is opened at the same time the assistant panel\n * is open, the focus will be stolen by the newly opened modal. In that case, we need\n * to take back the focus. The trick here is to remount the whole panel (modal/popover)\n * by refreshing the `key` prop of the panel. This will cause `mui` to recompute the\n * focus-trap and allow the input field to be selectable again. Basically, we are stealing\n * back the focus for the assistant.\n *\n * However, the caveat is that this will cause the component states, such as scroll positions,\n * to be reset as such, we need to do this really sparingly. In fact, the only\n * scenario where we need to do this is when a new modal is opened when the assistant panel\n * is already opened. Basically, Other scenarios, such as when the assistant is opened after the modal\n * is opened seem to pose no issue.\n */\n onClick: () => {\n if (\n // only when there are dialogs being opened\n // NOTE: this seems rather hacky, but querying by role is the least\n // vendor-dependent approach we can think of at the moment\n document.querySelectorAll('[role=\"dialog\"]').length &&\n // only when the focus is not already with the input field\n // this means the focus is being stolen from the assistant because\n // the newly opened modal is opened more recently than the assistant\n //\n // once the focus has been gained by the assistant\n // we will not need to do this anymore\n searchInputRef.current !== document.activeElement) {\n assistantService.refreshPanelRendering();\n }\n }, className: clsx('virtual-assistant__search__input input--dark', {\n 'virtual-assistant__search__input--searching': searchText,\n }), spellCheck: false, onChange: onSearchTextChange, value: searchText, placeholder: \"Ask me a question\" }), searchText && (_jsx(\"div\", { className: \"virtual-assistant__search__input__search__count\", children: assistantService.searchResults.length +\n (assistantService.isOverSearchLimit ? '+' : '') })), _jsx(\"button\", { className: clsx('virtual-assistant__search__input__config__trigger', {\n 'virtual-assistant__search__input__config__trigger--toggled': assistantService.showSearchConfigurationMenu,\n 'virtual-assistant__search__input__config__trigger--active': assistantService.searchConfigurationState.isAdvancedSearchActive,\n }), tabIndex: -1, onClick: toggleSearchConfigMenu, title: `${assistantService.searchConfigurationState.isAdvancedSearchActive\n ? 'Advanced search is currently active\\n'\n : ''}Click to toggle search config menu`, children: _jsx(CogIcon, {}) }), !searchText ? (_jsx(\"div\", { className: \"virtual-assistant__search__input__search__icon\", children: _jsx(SearchIcon, {}) })) : (_jsx(\"button\", { className: \"virtual-assistant__search__input__clear-btn\", tabIndex: -1, onClick: clearSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }), _jsxs(\"div\", { className: \"virtual-assistant__search__content\", children: [_jsx(PanelLoadingIndicator, { isLoading: assistantService.searchState.isInProgress }), _jsx(\"div\", { className: clsx('virtual-assistant__search__input__config__panel', {\n 'virtual-assistant__search__input__config__panel--toggled': assistantService.showSearchConfigurationMenu,\n }), children: _jsxs(\"div\", { className: \"virtual-assistant__search__input__advanced-config__panel\", children: [_jsxs(\"div\", { className: \"virtual-assistant__search__input__advanced-config__panel__header__label\", children: [\"search config\", applicationStore.documentationService.hasDocEntry(LEGEND_APPLICATION_DOCUMENTATION_KEY.QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX) && (_jsx(\"div\", { onClick: () => assistantService.openDocumentationEntryLink(LEGEND_APPLICATION_DOCUMENTATION_KEY.QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX), title: \"Click to see documentation\", className: \"virtual-assistant__search__input__advanced-config__panel__header__label__hint\", children: _jsx(QuestionCircleIcon, {}) }))] }), _jsx(\"div\", { children: _jsx(BaseRadioGroup, { value: assistantService.searchConfigurationState.currentMode, onChange: (event) => {\n const searchMode = event.target\n .value;\n assistantService.searchConfigurationState.setCurrentMode(searchMode);\n }, row: false, options: [\n ADVANCED_FUZZY_SEARCH_MODE.STANDARD,\n ADVANCED_FUZZY_SEARCH_MODE.INCLUDE,\n ADVANCED_FUZZY_SEARCH_MODE.EXACT,\n ADVANCED_FUZZY_SEARCH_MODE.INVERSE,\n ], size: 1 }) })] }) }), assistantService.currentDocumentationEntry && (_jsx(\"div\", { className: \"virtual-assistant__search__results\", children: _jsx(VirtualAssistantDocumentationEntryViewer, { entry: assistantService.currentDocumentationEntry }, assistantService.currentDocumentationEntry.uuid) })), !assistantService.currentDocumentationEntry && (_jsxs(_Fragment, { children: [Boolean(assistantService.searchResults.length) && (_jsx(\"div\", { className: \"virtual-assistant__search__results\", children: assistantService.searchResults.map((result) => (_jsx(VirtualAssistantDocumentationEntryViewer, { entry: result }, result.uuid))) })), searchText && !assistantService.searchResults.length && (_jsx(BlankPanelContent, { children: _jsxs(\"div\", { className: \"virtual-assistant__panel__placeholder\", children: [_jsx(FaceSadTearIcon, { className: \"virtual-assistant__panel__placeholder__icon\" }), _jsx(\"div\", { className: \"virtual-assistant__panel__placeholder__message\", children: \"No result...\" })] }) })), !searchText && !assistantService.searchResults.length && (_jsx(ContextMenu, { className: \"virtual-assistant__character__container\", menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: downloadDocRegistry, children: \"Download documentation registry\" }), _jsx(MenuContentItem, { onClick: downloadContextualDocIndex, children: \"Download contextual documentation mapping\" })] }), children: _jsxs(\"div\", { className: \"virtual-assistant__character\", children: [_jsxs(\"div\", { className: \"virtual-assistant__character__figure\", children: [_jsx(WizardHatIcon, { className: \"virtual-assistant__character__hat\" }), _jsx(SunglassesIcon, { className: \"virtual-assistant__character__glasses\" }), _jsx(BeardIcon, { className: \"virtual-assistant__character__beard\" })] }), _jsx(\"div\", { className: \"virtual-assistant__character__greeting\", children: WIZARD_GREETING }), _jsx(\"div\", { className: \"virtual-assistant__character__question\", children: \"How can I help today?\" })] }) }))] }))] })] }));\n});\nconst VirtualAssistantPanel = observer((props) => {\n const { triggerElement } = props;\n const applicationStore = useApplicationStore();\n const assistantService = applicationStore.assistantService;\n const currentContextualDocumentationEntry = assistantService.currentContextualDocumentationEntry;\n const selectedTab = assistantService.selectedTab;\n const extraViewConfigurations = applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraVirtualAssistantViewConfigurations?.() ?? []);\n const currentExtensionView = extraViewConfigurations.find((config) => config.key === selectedTab);\n const toggleMaximize = () => assistantService.setIsPanelMaximized(!assistantService.isPanelMaximized);\n const selectSearch = () => assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.SEARCH);\n const selectContextualDoc = () => assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT);\n const closeAssistantPanel = () => assistantService.setIsOpen(false);\n return (\n /**\n * The most appropriate component to use is `Popper`\n * as it does not block click-away\n * See https://mui.com/material-ui/react-popper/\n *\n * However, the caveat is that in the implementation of mui Popper\n * focus trap is not supported. As such, we could end up in a situation\n * where the assistant input fields will not be focusable\n * when another modal is being opened, as that newly opened modal will\n * **steal** the focus\n *\n * See https://github.com/finos/legend-studio/issues/1255\n * See https://mui.com/material-ui/react-modal/#focus-trap\n * See https://github.com/mui/material-ui/issues/17497\n */\n _jsx(BasePopover, { open: assistantService.isOpen, className: \"virtual-assistant__panel__container\", anchorEl: triggerElement, \n // we need to get rid of the backdrop and the click-away trap\n // to make this popover behave like a popper\n // NOTE: we will cancel the effect of click-away trap using CSS\n hideBackdrop: true, PaperProps: {\n classes: { root: 'virtual-assistant__panel__container__root' },\n }, \n // allow other modals to take the focus from the virtual assistant\n disableEnforceFocus: true, \n // NOTE: make sure the assistant is always fully displayed (not cropped)\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n }, transformOrigin: {\n vertical: 'bottom',\n horizontal: 'right',\n }, children: _jsxs(\"div\", { className: clsx('virtual-assistant__panel', {\n 'virtual-assistant__panel--maximized': assistantService.isPanelMaximized,\n }), \n // NOTE: here we block `tabbing` (to move focus). This is to counter the effect of\n // `disableEnforceFocus={true}` set in the assistant panel popover\n // this is the poor-man focus trap for the assistant to ensure\n // that we don't leak focus tab down to other parts of the app\n //\n // Especially, due to the hack we do to compete for focus when another modal\n // is opened, we need to do this to avoid leaking of focus to components\n // beneath the modal via assistant\n //\n // setting `tabIndex={0}` is a hack to make this DOM node focusable\n // and hence, we could trap the focus here using `onKeyDown`\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n tabIndex: 0, onKeyDown: (event) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n event.stopPropagation();\n }\n }, children: [_jsxs(\"div\", { className: \"virtual-assistant__panel__header\", children: [_jsxs(\"div\", { className: \"virtual-assistant__panel__header__tabs\", children: [_jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === VIRTUAL_ASSISTANT_TAB.SEARCH,\n }), onClick: selectSearch, title: \"Search\", children: _jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: _jsx(SearchIcon, {}) }) }), _jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT,\n }), onClick: selectContextualDoc, title: \"Contextual Support\", children: _jsxs(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: [_jsx(MapMarkerIcon, {}), currentContextualDocumentationEntry && (_jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__indicator\", title: \"Contextual support available\" }))] }) }), extraViewConfigurations.map((config) => (_jsx(\"div\", { className: clsx('virtual-assistant__panel__header__tab', {\n 'virtual-assistant__panel__header__tab--active': selectedTab === config.key,\n }), onClick: () => {\n assistantService.setSelectedTab(config.key);\n if (config.autoExpandOnOpen) {\n assistantService.setIsPanelMaximized(true);\n }\n }, title: config.title, children: _jsx(\"div\", { className: \"virtual-assistant__panel__header__tab__content\", children: config.icon ?? _jsx(QuestionCircleIcon, {}) }) }, config.key)))] }), _jsxs(\"div\", { className: \"virtual-assistant__panel__header__actions\", children: [_jsx(\"button\", { className: \"virtual-assistant__panel__header__action\", tabIndex: -1, onClick: toggleMaximize, title: assistantService.isPanelMaximized ? 'Minimize' : 'Maximize', children: assistantService.isPanelMaximized ? (_jsx(EmptyWindowRestoreIcon, {})) : (_jsx(WindowMaximizeIcon, {})) }), _jsx(\"button\", { className: \"virtual-assistant__panel__header__action\", tabIndex: -1, onClick: closeAssistantPanel, title: \"Close\", children: _jsx(CloseIcon, { className: \"virtual-assistant__panel__icon__close\" }) })] })] }), _jsxs(\"div\", { className: \"virtual-assistant__panel__content\", children: [selectedTab === VIRTUAL_ASSISTANT_TAB.SEARCH && (_jsx(VirtualAssistantSearchPanel, {})), selectedTab === VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT && (_jsx(VirtualAssistantContextualSupportPanel, {})), currentExtensionView?.renderer()] })] }) }, assistantService.panelRenderingKey));\n});\nexport const VirtualAssistant = observer(() => {\n const [isDragging, setIsDragging] = useState(false);\n const [_key, _setKey] = useState(uuid());\n const applicationStore = useApplicationStore();\n const assistantRef = useRef(null);\n const assistantService = applicationStore.assistantService;\n const currentContextualDocumentationEntry = assistantService.currentContextualDocumentationEntry;\n const toggleAssistantPanel = () => {\n const newVal = !assistantService.isOpen;\n // open the contextual help tab when contextual help is available\n if (newVal && currentContextualDocumentationEntry) {\n assistantService.setSelectedTab(VIRTUAL_ASSISTANT_TAB.CONTEXTUAL_SUPPORT);\n }\n assistantService.setIsOpen(!assistantService.isOpen);\n };\n const hideAssistant = () => applicationStore.assistantService.hideAssistant();\n const resetPosition = () => {\n // close the panel since\n assistantService.setIsOpen(false);\n _setKey(uuid());\n };\n // drag and drop\n const onDragEnd = () => setIsDragging(false);\n const onDragStart = () => setIsDragging(true);\n useEffect(() => {\n if (assistantService.isHidden) {\n // reset to default position when we hide the assistant\n // so that when we open it the position is reset\n _setKey(uuid());\n }\n }, [assistantService.isHidden]);\n return (_jsx(Draggable\n // this is a trick so we could reset the default position of the assistant\n // See https://github.com/react-grid-layout/react-draggable/issues/214#issuecomment-270021423\n , { \n // make sure we cannot drag and drop outside of the screen\n bounds: \"parent\", onStart: onDragStart, onStop: onDragEnd, \n // Avoid using deprecated findDOMNode method to rid of React warning\n // See https://github.com/react-grid-layout/react-draggable/issues/749\n nodeRef: assistantRef, \n // limit the dnd trigger to only the drag handle\n handle: \".virtual-assistant__station__drag-handle\", children: _jsxs(\"div\", { className: \"virtual-assistant\", \n // NOTE: we have to set the `ref` at this level so even when the assistant is hidden\n // the element is still in the DOM so when we programmatically show the assistant panel\n // the anchor is available in time\n ref: assistantRef, children: [_jsxs(\"div\", { className: clsx('virtual-assistant__station', {\n 'virtual-assistant__station--hidden': assistantService.isHidden,\n 'virtual-assistant__station--active': Boolean(currentContextualDocumentationEntry),\n }), children: [_jsx(\"button\", { className: \"virtual-assistant__station__hide-button\", title: \"Hide assistant\", onClick: () => {\n applicationStore.assistantService.toggleAssistant();\n }, children: _jsx(MinusCircleIcon, {}) }), _jsx(\"button\", { className: \"virtual-assistant__station__trigger\", tabIndex: -1, onClick: toggleAssistantPanel, title: assistantService.isOpen\n ? `Click to close assistant panel`\n : `${currentContextualDocumentationEntry\n ? 'Contextual support available.\\n'\n : ''}Click to open Assistant...`, children: _jsxs(\"div\", { className: \"virtual-assistant__station__character\", children: [_jsx(WizardHatIcon, { className: \"virtual-assistant__station__character__hat\" }), _jsx(SunglassesIcon, { className: \"virtual-assistant__station__character__glasses\" }), _jsx(BeardIcon, { className: \"virtual-assistant__station__character__beard\" })] }) }), _jsx(\"div\", { className: \"virtual-assistant__station__label\", onClick: toggleAssistantPanel, children: \"Assistant\" }), _jsx(ContextMenu, { className: clsx('virtual-assistant__station__drag-handle', {\n 'virtual-assistant__station__drag-handle--dragging': isDragging,\n }), menuProps: {\n elevation: 7,\n classes: {\n root: 'virtual-assistant__context-menu',\n },\n }, content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: resetPosition, children: \"Reset Position\" }), _jsx(MenuContentItem, { onClick: hideAssistant, children: \"Hide Assistant\" })] }), children: _jsx(\"div\", { className: \"virtual-assistant__station__drag-handle__content\", title: isDragging ? undefined : 'Grab to drag assistant', children: _jsx(ThinVerticalDragHandleIcon, {}) }) })] }, currentContextualDocumentationEntry?.uuid ?? ''), !isDragging &&\n assistantService.isOpen &&\n !assistantService.isHidden &&\n assistantRef.current && (_jsx(VirtualAssistantPanel, { triggerElement: assistantRef.current }))] }) }, _key));\n});\n//# sourceMappingURL=VirtualAssistant.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Backdrop, LegendStyleProvider, Portal } from '@finos/legend-art';\nimport { observer } from 'mobx-react-lite';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { ActionAlert } from './ActionAlert.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { BlockingAlert } from './BlockingAlert.js';\nimport { NotificationManager } from './NotificationManager.js';\nimport { useEffect } from 'react';\nimport { createKeybindingsHandler, } from '@finos/legend-shared';\nimport { VirtualAssistant } from './VirtualAssistant.js';\nimport { LegendApplicationTelemetryHelper } from '../__lib__/LegendApplicationTelemetry.js';\nvar APPLICATION_COMPONENT_ELEMENT_ID;\n(function (APPLICATION_COMPONENT_ELEMENT_ID) {\n APPLICATION_COMPONENT_ELEMENT_ID[\"TOP_LEVEL_CONTAINER\"] = \"application.top-level-container\";\n APPLICATION_COMPONENT_ELEMENT_ID[\"BACKDROP_CONTAINER\"] = \"application.backdrop-container\";\n})(APPLICATION_COMPONENT_ELEMENT_ID || (APPLICATION_COMPONENT_ELEMENT_ID = {}));\nconst PLATFORM_NATIVE_KEYBOARD_SHORTCUTS = [\n 'Meta+KeyP', // Print\n 'Control+KeyP',\n 'Meta+KeyS', // Save\n 'Control+KeyS',\n 'F8', // Chrome: Developer Tools > Sources: Run or pause script\n 'F10', // Chrome: Developer Tools > Sources: Step over next function call\n 'F11', // Chrome: Developer Tools > Sources: Step into next function call\n 'Meta+Shift+KeyP', // Chrome: Developer Tools: Open Command Prompt inside developer tools\n 'Control+Backquote', // Chrome: Developer Tools: Open console\n 'Control+Shift+KeyN', // Chrome: Open Private Browsing (incognito)\n 'Control+Shift+KeyP', // Firefox: Open Private Browsing\n 'Meta+KeyB', // Firefox: Open bookmark sidebar\n 'Control+KeyB',\n 'F7', // Firefox: Caret browsing\n 'Alt+F7', // Firefox: Caret browsing (Mac)\n 'Control+Shift+KeyB',\n 'Alt+KeyZ', // Mac: special symbol\n];\nconst buildHotkeysConfiguration = (commandKeyMap, handler) => {\n const keyMap = {};\n commandKeyMap.forEach((keyCombinations, commandKey) => {\n if (keyCombinations.length) {\n keyMap[commandKey] = {\n combinations: keyCombinations,\n handler,\n };\n }\n });\n // Disable platform native keyboard shortcuts\n // NOTE: due to the order in which hotkey configuration is searched and applied,\n // we must place these after application hotkey configuration\n const PLATFORM_NATIVE_KEYBOARD_COMMAND = 'INTERNAL__PLATFORM_NATIVE_KEYBOARD_COMMAND';\n keyMap[PLATFORM_NATIVE_KEYBOARD_COMMAND] = {\n combinations: PLATFORM_NATIVE_KEYBOARD_SHORTCUTS,\n handler: (keyCombination, event) => {\n // prevent default from potentially clashing key combinations\n event.preventDefault();\n },\n };\n return keyMap;\n};\n/**\n * Some elements (e.g. <canvas>) and components that we do not control the implementation\n * might have special logic to prevent `keydown` event bubbling naturally, this\n * method forces those event to surface to the top of the app and being handled\n * by keybinding service\n */\nexport const forceDispatchKeyboardEvent = (event, applicationStore) => {\n applicationStore.layoutService\n .getElementByID(APPLICATION_COMPONENT_ELEMENT_ID.TOP_LEVEL_CONTAINER)\n ?.dispatchEvent(new KeyboardEvent(event.type, event));\n};\n/**\n * Potential location to mount backdrop on\n *\n * NOTE: we usually want the backdrop container to be the first child of its immediate parent\n * so that it properly lies under the content that we pick to show on top of the backdrop\n */\nexport const BackdropContainer = (props) => (_jsx(\"div\", { className: \"backdrop__container\", \"data-elementid\": props.elementId }));\nexport const ApplicationComponentFrameworkProvider = observer((props) => {\n const { children } = props;\n const applicationStore = useApplicationStore();\n const disableContextMenu = (event) => {\n event.stopPropagation();\n event.preventDefault();\n };\n const keyBindingMap = buildHotkeysConfiguration(applicationStore.keyboardShortcutsService.commandKeyMap, (keyCombination, event) => {\n // prevent default from potentially clashing key combinations with platform native keyboard shortcuts\n // NOTE: Though tempting since it's a good way to simplify and potentially avoid conflicts,\n // we should not call `preventDefault()` because if we have any hotkey sequence which is too short,\n // such as `r`, `a` - we risk blocking some very common interaction, i.e. user typing, or even\n // constructing longer key combinations\n if (PLATFORM_NATIVE_KEYBOARD_SHORTCUTS.includes(keyCombination)) {\n event.preventDefault();\n }\n applicationStore.keyboardShortcutsService.dispatch(keyCombination);\n });\n useEffect(() => {\n const onKeyEvent = createKeybindingsHandler(keyBindingMap);\n document.addEventListener('keydown', onKeyEvent);\n return () => {\n document.removeEventListener('keydown', onKeyEvent);\n };\n }, [keyBindingMap]);\n /**\n * Keep track of when the application usage is interrupted (e.g. when the app window/tab is not in focus),\n * since for certain platform, background contexts are de-prioritized, given less resources, and hence, would\n * run less performantly; and might require particular handlings.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#policies_in_place_to_aid_background_page_performance\n * See https://plumbr.io/blog/performance-blog/background-tabs-in-browser-load-20-times-slower\n */\n useEffect(() => {\n const onVisibilityChange = () => {\n if (document.hidden) {\n LegendApplicationTelemetryHelper.logEvent_ApplicationUsageInterrupted(applicationStore.telemetryService);\n applicationStore.timeService.recordUsageInterruption();\n }\n };\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, [applicationStore]);\n return (_jsxs(LegendStyleProvider, { children: [_jsx(BlockingAlert, {}), _jsx(ActionAlert, {}), _jsx(NotificationManager, {}), _jsx(VirtualAssistant, {}), applicationStore.layoutService.showBackdrop && (\n // We use <Portal> here to insert backdrop into different parts of the app\n // as backdrop relies heavily on z-index mechanism so its location in the DOM\n // really matters.\n // For example, the default location of the backdrop works fine for most cases\n // but if we want to use the backdrop for elements within modal dialogs, we would\n // need to mount the backdrop at a different location\n _jsx(Portal, { container: applicationStore.layoutService.getElementByID(applicationStore.layoutService.backdropContainerElementID ??\n APPLICATION_COMPONENT_ELEMENT_ID.BACKDROP_CONTAINER) ?? null, children: _jsx(Backdrop, { className: \"backdrop\", open: applicationStore.layoutService.showBackdrop }) })), _jsx(DndProvider, { backend: HTML5Backend, children: _jsxs(\"div\", { className: \"app__container\", \"data-elementid\": APPLICATION_COMPONENT_ELEMENT_ID.TOP_LEVEL_CONTAINER, \n // Disable global context menu so that only places in the app that supports context-menu will be effective\n onContextMenu: disableContextMenu, children: [_jsx(BackdropContainer, { elementId: APPLICATION_COMPONENT_ELEMENT_ID.BACKDROP_CONTAINER }), children] }) })] }));\n});\n//# sourceMappingURL=ApplicationComponentFrameworkProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Terminal as XTermTerminal, } from 'xterm';\nimport { WebLinksAddon as XTermWebLinksAddon } from 'xterm-addon-web-links';\nimport { FitAddon as XTermFitAddon } from 'xterm-addon-fit';\nimport { SearchAddon as XTermSearchAddon, } from 'xterm-addon-search';\nimport { Unicode11Addon as XTermUnicode11Addon } from 'xterm-addon-unicode11';\nimport { WebglAddon as XTermWebglAddon } from 'xterm-addon-webgl';\nimport { DEFAULT_MONOSPACED_FONT_FAMILY, DEFAULT_TAB_SIZE, } from '../ApplicationConfig.js';\nimport { Terminal, DISPLAY_ANSI_ESCAPE, ANSI_moveCursor, } from './Terminal.js';\nimport { ActionState, guaranteeNonNullable, IllegalStateError, isMatchingKeyCombination, LogEvent, noop, prettyCONSTName, uniqBy, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../../__lib__/LegendApplicationEvent.js';\nimport { forceDispatchKeyboardEvent } from '../../components/ApplicationComponentFrameworkProvider.js';\nconst LEGEND_XTERM_THEME = {\n foreground: '#cccccc',\n background: '#1e1e1e',\n cursor: '#cccccc',\n /** The accent color of the cursor (fg color for a block cursor) */\n // cursorAccent?: string;\n /** The selection background color when the terminal does not have focus (can be transparent) */\n // selectionInactiveBackground?: string;\n selectionBackground: '#264f78', // blue\n black: '#000000',\n red: '#cd3131',\n green: '#0dbc79',\n yellow: '#e5e510',\n blue: '#2472c8',\n magenta: '#bc3fbc',\n cyan: '#11a8cd',\n white: '#e5e5e5',\n brightBlack: '#666666',\n brightRed: '#f14c4c',\n brightGreen: '#23d18b',\n brightYellow: '#f5f543',\n brightBlue: '#3b8eea',\n brightMagenta: '#d670d6',\n brightCyan: '#29b8db',\n brightWhite: '#e5e5e5',\n};\nconst LEGEND_XTERM_SEARCH_THEME = {\n matchOverviewRuler: '#d186167e',\n activeMatchColorOverviewRuler: '#A0A0A0CC',\n matchBackground: '#62331c',\n activeMatchBackground: '#515C6A',\n};\n// robot acsii art\n// See https://asciiartist.com/ascii-art-micro-robot/\nconst getHelpCommandContent = (commandRegistry) => `\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}+-------------------------------------------------------+${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}[@@]${DISPLAY_ANSI_ESCAPE.RESET} \"Hi! Welcome to the HELP menu of Pure IDE\" ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}/|__|\\\\${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}|${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}+--${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}d b${DISPLAY_ANSI_ESCAPE.RESET} ${DISPLAY_ANSI_ESCAPE.BRIGHT_BLACK}-----------------------------------------------+${DISPLAY_ANSI_ESCAPE.RESET}\n\nFollowing is the list of supported commands:\n\n${uniqBy(Array.from(commandRegistry.values()), (config) => config.command)\n .map((config) => `${DISPLAY_ANSI_ESCAPE.BRIGHT_GREEN}${config.command.padEnd(30)}${DISPLAY_ANSI_ESCAPE.RESET}${config.description}${config.aliases?.length\n ? `\\n${''.padEnd(30)}Aliases: ${config.aliases.join(', ')}`\n : ''}\\n${''.padEnd(30)}Usage: ${DISPLAY_ANSI_ESCAPE.DIM}${config.usage}${DISPLAY_ANSI_ESCAPE.RESET}`)\n .join('\\n')}`;\nconst getCommonANSIEscapeSequencesForStyling = () => `\nCommon ANSI Escape Sequences for Styling:\n\n${Object.entries(DISPLAY_ANSI_ESCAPE)\n .map(([key, value]) => `${value}${prettyCONSTName(key).padEnd(20)}${DISPLAY_ANSI_ESCAPE.RESET\n// NOTE: since these are recommended ANSI escape sequences which can be used\n// by users in strings input in Pure IDE, they have to be Unicode escape, if we send\n// the original hexadecimal escape as part of the string, some string escape handling\n// in Pure seems to escape the leading slash of the ANSI escape sequence \\x1B; however\n// this is not the case of the escape sequence for Unicode, \\u001b hence our logic here\n} ${value.replace('\\x1b', '\\\\u001b')}`)\n .join('\\n')}`;\nconst DEFAULT_USER = 'purist';\nconst DEFAULT_COMMAND_HEADER = `\n${DISPLAY_ANSI_ESCAPE.BOLD}${DISPLAY_ANSI_ESCAPE.BRIGHT_BLUE}$${DEFAULT_USER}${DISPLAY_ANSI_ESCAPE.RESET}\n${DISPLAY_ANSI_ESCAPE.BOLD}${DISPLAY_ANSI_ESCAPE.MAGENTA}\\u276f${DISPLAY_ANSI_ESCAPE.RESET} `;\nconst COMMAND_START = '\\u276f ';\nexport class XTerm extends Terminal {\n instance;\n resizer;\n renderer;\n searcher;\n webLinkProvider;\n _TEMPORARY__onKeyListener;\n _TEMPORARY__onDataListener;\n command = '';\n commandHistory = [];\n currentCommandSearchString = '';\n commandHistoryNavigationIdx = undefined;\n isRunningCommand = false;\n setupState = ActionState.create();\n constructor(applicationStore) {\n super(applicationStore);\n this.instance = new XTermTerminal({\n allowProposedApi: true,\n fontSize: 12,\n letterSpacing: 2,\n fontWeight: 400,\n fontWeightBold: 700,\n fontFamily: `\"${DEFAULT_MONOSPACED_FONT_FAMILY}\", Menlo, Consolas, monospace`,\n tabStopWidth: DEFAULT_TAB_SIZE,\n theme: LEGEND_XTERM_THEME,\n overviewRulerWidth: 14, // 14px\n scrollback: 100000, // buffer a substantial content length\n convertEol: true, // treat \\n as new line\n // this is needed so we can control the cursor programmatically using escape sequences\n scrollOnUserInput: false,\n });\n this.resizer = new XTermFitAddon();\n this.searcher = new XTermSearchAddon();\n this.renderer = new XTermWebglAddon();\n }\n setup(configuration) {\n if (this.setupState.hasCompleted) {\n throw new IllegalStateError(`Terminal is already set up`);\n }\n this.setupState.complete();\n // Handling context loss: The browser may drop WebGL contexts for various reasons like OOM or after the system has been suspended.\n // An easy, but suboptimal way, to handle this is by disposing of WebglAddon when the `webglcontextlost` event fires\n // NOTE: we don't really have a resilient way to fallback right now, hopefully, the fallback is to render in DOM\n this.renderer.onContextLoss(() => {\n this.renderer.dispose();\n });\n this.instance.loadAddon(this.resizer);\n this.instance.loadAddon(this.searcher);\n this.instance.loadAddon(this.renderer);\n this.instance.loadAddon(new XTermUnicode11Addon());\n this.instance.unicode.activeVersion = '11';\n // NOTE: since we render the terminal using webgl/canvas, event is not bubbled\n // naturally through the DOM tree, we have to manually force this\n this.instance.attachCustomKeyEventHandler((event) => {\n // NOTE: this is a cheap way to handle hotkey, but this is really the only\n // hotkey we want to support at local scope of the terminal\n // also, since here we have prevent default and stop propagation, we have to do\n // this here instead at in `onKey` handler\n if (isMatchingKeyCombination(event, 'Control+KeyF') ||\n isMatchingKeyCombination(event, 'Meta+KeyF')) {\n // prevent default so as to not trigger browser platform search command\n event.preventDefault();\n event.stopPropagation();\n this.searchConfig.focus();\n return false;\n }\n else if (\n // NOTE: by default Ctrl+C gets sent to the shell as you wouldn't be able to use bash otherwise.\n // We need this special handling here for normal copy behavior on Windows.\n // Paste (Ctrl+V) not working on Windows could also be due to the same reason, so we would not\n // manually handle that using `xterm.onKey` neither\n // See https://github.com/xtermjs/xterm.js/issues/1868\n // See https://github.com/microsoft/vscode/issues/6451\n (isMatchingKeyCombination(event, 'Control+KeyC') &&\n this.instance.hasSelection()) ||\n isMatchingKeyCombination(event, 'Control+KeyV')) {\n return false;\n }\n return true; // return true to indicate the event should still be handled by xterm\n });\n this.webLinkProvider = configuration?.webLinkProvider\n ? new XTermWebLinksAddon(configuration.webLinkProvider.handler, {\n urlRegex: configuration.webLinkProvider.regex,\n })\n : new XTermWebLinksAddon();\n this.instance.loadAddon(this.webLinkProvider);\n (configuration?.commands ?? []).forEach((commandConfig) => {\n [commandConfig.command, ...(commandConfig.aliases ?? [])].forEach((command) => {\n if (!this.commandRegistry.has(command)) {\n this.commandRegistry.set(command, commandConfig);\n }\n else {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE), `Found multiple duplicated terminal commands '${command}'`);\n }\n });\n });\n this.searcher.onDidChangeResults((result) => {\n this.setSearchResultCount(result.resultCount);\n this.setSearchCurrentResultIndex(result.resultIndex);\n });\n // NOTE: `xterm` expects to be attached to a proper terminal program which handles\n // input, since we can't do that yet, we implement a fairly basic input handling flow\n // See https://github.com/xtermjs/xterm.js/issues/617#issuecomment-288849502\n this._TEMPORARY__onKeyListener = this.instance.onKey(({ key, domEvent }) => {\n // take care of command history navigation\n if (domEvent.code === 'ArrowUp') {\n this.setCommandFromHistory(this.commandHistoryNavigationIdx !== undefined\n ? this.commandHistoryNavigationIdx + 1\n : 0);\n return;\n // reset current command in place\n }\n else if (domEvent.code === 'ArrowDown') {\n if (this.commandHistoryNavigationIdx !== undefined) {\n this.setCommandFromHistory(this.commandHistoryNavigationIdx === 0\n ? undefined\n : this.commandHistoryNavigationIdx - 1);\n }\n return;\n }\n else {\n // reset navigation history the moment any other key is pressed\n this.commandHistoryNavigationIdx = undefined;\n }\n if (domEvent.code === 'Enter') {\n // run command\n if (this.command.trim()) {\n const text = this.command;\n const [command, ...args] = text.replaceAll(/\\s+/g, ' ').split(' ');\n this.addCommandToHistory(this.command);\n if (!command) {\n return;\n }\n const matchingCommand = this.commandRegistry.get(command);\n if (!matchingCommand) {\n this.fail(`command not found: ${command}`);\n return;\n }\n if (this.isRunningCommand) {\n return;\n }\n this.isRunningCommand = true;\n matchingCommand\n .handler(args.map((arg) => arg.trim()), command, text)\n .catch(noop())\n .finally(() => {\n this.isRunningCommand = false;\n if (!this.isFlushed) {\n this.abort();\n }\n });\n }\n }\n else if (isMatchingKeyCombination(domEvent, 'Control+KeyD') ||\n // NOTE: this handling here makes the assumption that the hotkey used for copying is\n // fixed to `Control+KeyC` (for Windows), it doesn't handling a different assignment\n (isMatchingKeyCombination(domEvent, 'Control+KeyC') &&\n !this.instance.hasSelection())) {\n // abort command\n this.abort();\n }\n else if (domEvent.code === 'Backspace') {\n // Alt: jump word only, Ctrl: jump to end\n // this would apply for Delete, ArrowLeft, ArrowRight\n this.deleteFromCommand(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(true)\n : -1);\n }\n else if (domEvent.code === 'Delete') {\n this.deleteFromCommand(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(false)\n : 1);\n }\n else if (domEvent.code === 'ArrowLeft') {\n const movement = this.computeCursorMovement(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(true)\n : -1);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(movement.seq);\n }\n else if (domEvent.code === 'ArrowRight') {\n const movement = this.computeCursorMovement(domEvent.altKey || domEvent.ctrlKey\n ? this.computeCursorJumpMovement(false)\n : 1);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(movement.seq);\n }\n else if (\n // use key here so we absolute do not allow any characters other than these\n // being added to the input command\n key.match(/^[A-Za-z0-9!@#$%^&*()\\-_=+\"':;,.<>/?[\\]{}|\\\\~` ]$/)) {\n // commonly supported keys\n this.writeToCommand(key);\n }\n else {\n // for the rest, allow the keyboard event to be bubbled to\n // application keyboard shortcuts handler\n forceDispatchKeyboardEvent(domEvent, this.applicationStore);\n }\n });\n // this is needed to support copy-pasting\n this._TEMPORARY__onDataListener = this.instance.onData((val) => {\n // only support pasting (not meant for 1 character though) and special functions starting with special\n // ANSI escape sequence\n if (val.length > 1 && !val.startsWith('\\x1b')) {\n this.writeToCommand(val\n // remove all unsupported characters, including newline\n .replaceAll(/[^A-Za-z0-9!@#$%^&*()\\-_=+\"':;,.<>/?[\\]{}|\\\\~` ]/g, '')\n .trimEnd());\n }\n });\n }\n // NOTE: this is fairly HACKY way to detect command\n // we don't really have a better solution at the moment,\n // but we should come with more systematic way of persisting the start line of command\n // the challenge with this is due to text-reflow\n //\n // there is also a quriky known issue with text-reflow and the line with cursor\n // See https://github.com/xtermjs/xterm.js/issues/1941#issuecomment-463660633\n getCommandRange() {\n const buffer = this.instance.buffer.active;\n const cols = this.instance.cols;\n const commandText = `${COMMAND_START}${this.command}`;\n const commandFirstLine = `${COMMAND_START}${this.command.substring(0, cols - COMMAND_START.length)}${this.command.length < cols - COMMAND_START.length\n ? ' '.repeat(cols - this.command.length - COMMAND_START.length)\n : ''}`;\n let startY = 0;\n let cursorIdx = 0;\n for (let i = buffer.baseY + buffer.cursorY; i > -1; --i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n const lineText = line.translateToString();\n if (lineText === commandFirstLine) {\n startY = i;\n cursorIdx +=\n (i === buffer.baseY + buffer.cursorY ? buffer.cursorX : cols) -\n COMMAND_START.length;\n break;\n }\n else {\n cursorIdx +=\n i === buffer.baseY + buffer.cursorY ? buffer.cursorX : cols;\n }\n }\n // start line == -1 is the rare case where the command is too long and exceeds the buffer length\n // leading to incomplete command being captured\n return {\n startY,\n startX: COMMAND_START.length,\n endY: startY + (commandText.length - (commandText.length % cols)) / cols,\n endX: commandText.length % cols,\n cursorIdx,\n };\n }\n computeCursorJumpMovement(back) {\n const range = this.getCommandRange();\n let distance = undefined;\n let foundWord = false;\n // scan for the boundary of the closest word to the cursor position\n if (back) {\n for (let i = range.cursorIdx - 1; i > -1; --i) {\n const char = this.command.charAt(i);\n if (char.match(/\\w/)) {\n if (!foundWord) {\n foundWord = true;\n }\n }\n else {\n if (foundWord) {\n distance = range.cursorIdx - i - 1;\n break;\n }\n }\n }\n }\n else {\n for (let i = range.cursorIdx + 1; i < this.command.length; ++i) {\n const char = this.command.charAt(i);\n if (char.match(/\\w/)) {\n if (!foundWord) {\n foundWord = true;\n }\n }\n else {\n if (foundWord) {\n distance = i - range.cursorIdx - 1;\n break;\n }\n }\n }\n }\n if (distance === undefined) {\n distance = back ? range.cursorIdx : this.command.length - range.cursorIdx;\n }\n return back ? -distance : distance;\n }\n /**\n * Generate the ANSI escape sequence for new cursor position\n * after being moved by the the number of cells.\n *\n * @param val a number (negative means cursor move leftwards)\n * @param limit whether to limit the movement of the cursor by the command range\n * @returns cursor movement information including the ANSI escape sequence for new cursor position and scroll distance\n */\n computeCursorMovement(val, limit = true) {\n const buffer = this.instance.buffer.active;\n const cols = this.instance.cols;\n const rows = this.instance.rows;\n const range = this.getCommandRange();\n const maxDistance = limit\n ? val < 0\n ? range.cursorIdx\n : this.command.length - range.cursorIdx\n : val;\n const distance = Math.min(Math.abs(val), maxDistance);\n let newCursorX = buffer.cursorX;\n let newCursorY = buffer.cursorY;\n let abs_cursorY = buffer.baseY + buffer.cursorY;\n if (val < 0) {\n // move leftwards\n newCursorX = (cols + ((buffer.cursorX - distance) % cols)) % cols;\n newCursorY =\n buffer.cursorY -\n (distance > buffer.cursorX ? Math.ceil(distance / cols) : 0);\n abs_cursorY = newCursorY + buffer.baseY;\n newCursorY = Math.max(newCursorY, -1);\n }\n else if (val > 0) {\n // move rightwards\n newCursorX = (buffer.cursorX + distance) % cols;\n newCursorY =\n buffer.cursorY +\n (buffer.cursorX + distance >= cols\n ? Math.floor((buffer.cursorX + distance) / cols)\n : 0);\n abs_cursorY = newCursorY + buffer.baseY;\n newCursorY = Math.min(newCursorY, rows - 1);\n }\n const scroll = abs_cursorY > buffer.viewportY + rows\n ? abs_cursorY - (buffer.viewportY + rows)\n : abs_cursorY < buffer.viewportY\n ? abs_cursorY - buffer.viewportY\n : 0;\n return {\n // NOTE: currently, there is a design limitation with programmatically set the cursor using escape sequence\n // by design, the scrollback (everything above the viewport/ybase) is readonly, and most terminals work like this.\n // So for very long command that causes an overflow, one cannot set the cursor position pass the `baseY`\n // this will affect both navigation and delete/backspace behavior\n // See https://github.com/xtermjs/xterm.js/issues/4405\n seq: ANSI_moveCursor(newCursorY + 1, newCursorX + 1),\n scroll,\n };\n }\n /**\n * Write value to command with awareness of the current cursor position\n */\n writeToCommand(val) {\n const range = this.getCommandRange();\n const left = this.command.slice(0, range.cursorIdx);\n const right = this.command.slice(range.cursorIdx);\n const movement = this.computeCursorMovement(val.length, false);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(val +\n right +\n // update the cursor\n movement.seq);\n this.setCommand(left + val + right);\n }\n /**\n * Remove number of characters from command with awareness of the current cursor position\n * NOTE: negative number means backward deleting (i.e. backspace)\n */\n deleteFromCommand(val) {\n const range = this.getCommandRange();\n const maxDistance = val < 0 ? range.cursorIdx : this.command.length - range.cursorIdx;\n const distance = Math.min(Math.abs(val), maxDistance);\n let left;\n let right;\n let cursorMovement;\n if (val === 0) {\n return;\n }\n else if (val < 0) {\n // remove leftwards\n left = this.command.slice(0, range.cursorIdx - distance);\n right = this.command.slice(range.cursorIdx, this.command.length);\n cursorMovement = -distance;\n }\n else {\n // remove rightwards\n left = this.command.slice(0, range.cursorIdx);\n right = this.command.slice(range.cursorIdx + distance, this.command.length);\n cursorMovement = 0;\n }\n const movement = this.computeCursorMovement(cursorMovement);\n this.instance.scrollLines(movement.scroll);\n this.instance.write(\n // reset cursor to start of command, basically here, we're rewriting the entire command\n ANSI_moveCursor(range.startY + 1, range.startX + 1) +\n left +\n right +\n // fill space to erase cells rendered from previous command\n ' '.repeat(distance) +\n // move the cursor as well\n movement.seq);\n this.setCommand(left + right);\n }\n get isSetup() {\n return this.setupState.hasCompleted;\n }\n isFocused() {\n return document.activeElement === this.instance.textarea;\n }\n mount(container) {\n if (!this.setupState.hasCompleted) {\n throw new IllegalStateError(`XTerm terminal has not been set up yet`);\n }\n this.instance.open(container);\n }\n dispose() {\n this.searcher.dispose();\n this.resizer.dispose();\n this.renderer.dispose();\n this.webLinkProvider?.dispose();\n this._TEMPORARY__onKeyListener?.dispose();\n this._TEMPORARY__onDataListener?.dispose();\n this.instance.dispose();\n }\n autoResize() {\n this.resizer.fit();\n }\n focus() {\n this.instance.focus();\n }\n addCommandToHistory(val) {\n // if this is the same as previous command, do not push it to the history stack\n if (val === this.commandHistory.at(0)) {\n return;\n }\n // history command is essentially a stack, so we only insert at the beginning\n this.commandHistory.unshift(val);\n }\n /**\n * This methods help update the current command to a command in history\n * stack, it does the necessary resetting and helps properly update\n * the history navigation index\n */\n setCommandFromHistory(idx) {\n const val = idx === undefined\n ? this.currentCommandSearchString\n : // NOTE: only consider commands starting with the original command\n // also note that empty string naturaly match all history command\n this.commandHistory\n .filter((command) => command.startsWith(this.currentCommandSearchString))\n .at(idx);\n if (val !== undefined) {\n let range = this.getCommandRange();\n this.instance.write(\n // reset cursor to start of command and rewrite the entire command\n ANSI_moveCursor(range.startY + 1, range.startX + 1) +\n val.padEnd(this.command.length));\n this.command = val;\n range = this.getCommandRange();\n this.instance.write(\n // reset cursor to command end\n ANSI_moveCursor(range.endY + 1, range.endX + 1));\n this.commandHistoryNavigationIdx = idx;\n }\n }\n setCommand(val) {\n this.command = val;\n this.currentCommandSearchString = val;\n this.commandHistoryNavigationIdx = undefined;\n }\n newCommand() {\n this.instance.write(DEFAULT_COMMAND_HEADER);\n this.setCommand('');\n }\n newSystemCommand(command) {\n // if another command is already running, we don't need to print the command header anymore\n // the potential pitfall here is that we could have another process prints to the\n // terminal while the command is being run. Nothing much we can do here for now.\n if (!this.isRunningCommand) {\n if (this.command) {\n this.abort();\n this.newCommand();\n }\n this.instance.write(`${DISPLAY_ANSI_ESCAPE.DIM}(system: ${command})\\n${DISPLAY_ANSI_ESCAPE.RESET}`);\n }\n }\n /**\n * Flush the terminal screen completely\n *\n * Probably due to write buffer batching, calling `reset` or `clear` on xterm terminal immediately after\n * write commands will not work. To solve this, we can either promisify the `reset` call or write the ANSI\n * reset sequence \\x1bc\n */\n flushScreen() {\n this.instance.write('\\x1bc');\n this.instance.reset();\n }\n get isFlushed() {\n const buffer = this.instance.buffer.active;\n let isLastLineEmpty = true;\n for (let i = buffer.baseY + buffer.cursorY; i > -1; --i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n const lineText = line.translateToString();\n // skip empty lines\n if (!lineText.trim()) {\n continue;\n }\n else {\n isLastLineEmpty = lineText !== COMMAND_START;\n break;\n }\n }\n return this.command === '' && isLastLineEmpty;\n }\n clear() {\n this.flushScreen();\n this.instance.scrollToTop();\n this.newCommand();\n }\n resetANSIStyling() {\n this.instance.write(DISPLAY_ANSI_ESCAPE.RESET);\n }\n showHelp() {\n this.resetANSIStyling();\n this.instance.scrollToBottom();\n if (!this.isFlushed && !this.isRunningCommand) {\n this.abort();\n }\n this.instance.write(getHelpCommandContent(this.commandRegistry));\n this.abort();\n }\n showCommonANSIEscapeSequences() {\n this.resetANSIStyling();\n this.instance.scrollToBottom();\n if (!this.isFlushed && !this.isRunningCommand) {\n this.abort();\n }\n this.instance.write(getCommonANSIEscapeSequencesForStyling());\n this.abort();\n }\n abort() {\n this.resetANSIStyling();\n this.instance.write('\\n');\n this.newCommand();\n this.instance.scrollToBottom();\n this.isRunningCommand = false;\n }\n fail(error, opts) {\n if (opts?.systemCommand) {\n this.newSystemCommand(opts.systemCommand);\n }\n this.instance.write(`\\n${DISPLAY_ANSI_ESCAPE.RED}${error}${DISPLAY_ANSI_ESCAPE.RED}`);\n this.abort();\n }\n output(val, opts) {\n this.resetANSIStyling();\n if ((!opts?.clear || this.preserveLog) && opts?.systemCommand) {\n this.newSystemCommand(opts.systemCommand);\n }\n if (!this.preserveLog && opts?.clear) {\n this.flushScreen();\n }\n else if (this.preserveLog || this.isRunningCommand) {\n this.instance.write('\\n');\n }\n this.instance.write(val);\n this.resetANSIStyling();\n this.instance.write('\\n');\n this.instance.scrollToBottom();\n this.newCommand();\n }\n search(val) {\n this.searcher.findNext(val, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n // do incremental search so that the expansion will be expanded the selection if it\n // still matches the term the user typed.\n incremental: true,\n });\n }\n clearSearch() {\n this.searcher.clearDecorations();\n this.instance.clearSelection();\n this.setSearchText('');\n this.setSearchResultCount(undefined);\n this.setSearchCurrentResultIndex(undefined);\n }\n findPrevious() {\n this.searcher.findPrevious(this.searchConfig.searchText, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n });\n }\n findNext() {\n this.searcher.findNext(this.searchConfig.searchText, {\n decorations: LEGEND_XTERM_SEARCH_THEME,\n regex: this.searchConfig.useRegex,\n wholeWord: this.searchConfig.matchWholeWord,\n caseSensitive: this.searchConfig.matchCaseSensitive,\n });\n }\n getContent() {\n const buffer = this.instance.buffer.active;\n const lines = [];\n for (let i = 0; i < buffer.length; ++i) {\n const line = guaranteeNonNullable(buffer.getLine(i));\n lines.push(line.translateToString());\n }\n return lines.join('\\n').trimEnd();\n }\n copy() {\n if (!this.instance.hasSelection()) {\n this.applicationStore.notificationService.notifyWarning(`Ther terminal has no selection to copy`);\n return;\n }\n this.applicationStore.clipboardService\n .copyTextToClipboard(this.instance.getSelection())\n .catch(this.applicationStore.alertUnhandledError);\n }\n copyAll() {\n this.applicationStore.clipboardService\n .copyTextToClipboard(this.getContent())\n .catch(this.applicationStore.alertUnhandledError);\n }\n}\n//# sourceMappingURL=XTerm.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { XTerm } from './terminal/XTerm.js';\nexport class TerminalService {\n applicationStore;\n terminal;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.terminal = new XTerm(applicationStore);\n }\n}\n//# sourceMappingURL=TerminalService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nconst UNKNOWN_USER_ID = '(unknown)';\nexport class IdentityService {\n applicationStore;\n currentUser = UNKNOWN_USER_ID;\n constructor(applicationStore) {\n makeObservable(this, {\n currentUser: observable,\n setCurrentUser: action,\n });\n this.applicationStore = applicationStore;\n }\n get isAnonymous() {\n return this.currentUser === UNKNOWN_USER_ID;\n }\n setCurrentUser(val) {\n this.currentUser = val;\n }\n}\n//# sourceMappingURL=IdentityService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_COLOR_THEME;\n(function (LEGEND_APPLICATION_COLOR_THEME) {\n LEGEND_APPLICATION_COLOR_THEME[\"DEFAULT_DARK\"] = \"default-dark\";\n LEGEND_APPLICATION_COLOR_THEME[\"LEGACY_LIGHT\"] = \"legacy-light\";\n LEGEND_APPLICATION_COLOR_THEME[\"HIGH_CONTRAST_LIGHT\"] = \"hc-light\";\n})(LEGEND_APPLICATION_COLOR_THEME || (LEGEND_APPLICATION_COLOR_THEME = {}));\nexport const DEFAULT_DARK_COLOR_THEME = {\n name: 'Default Dark (default)',\n key: LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK,\n TEMPORARY__globalCSSClassName: 'theme__default-dark',\n colors: {\n 'data-access-overview.chart.access-granted': '#6a9955',\n 'data-access-overview.chart.access-approved': '#007acc',\n 'data-access-overview.chart.access-requested': '#fbbc05',\n 'data-access-overview.chart.access-not-granted': '#ea4646',\n 'data-access-overview.chart.unsupported-access': '#2d2d2d',\n },\n};\nexport const LEGACY_LIGHT_COLOR_THEME = {\n name: 'Legacy Light',\n key: LEGEND_APPLICATION_COLOR_THEME.LEGACY_LIGHT,\n TEMPORARY__globalCSSClassName: 'theme__legacy-light',\n};\nexport const HIGH_CONTRAST_LIGHT_COLOR_THEME = {\n name: 'High-Contrast Light',\n key: LEGEND_APPLICATION_COLOR_THEME.HIGH_CONTRAST_LIGHT,\n TEMPORARY__globalCSSClassName: 'theme__hc-light',\n colors: {\n 'data-access-overview.chart.access-granted': '#52a31d',\n 'data-access-overview.chart.access-approved': '#3d8df5',\n 'data-access-overview.chart.access-requested': '#f5c518',\n 'data-access-overview.chart.access-not-granted': '#fa5343',\n 'data-access-overview.chart.unsupported-access': '#e1e7ea',\n },\n};\n//# sourceMappingURL=LegendApplicationColorTheme.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nexport class LocalStorage {\n get localStorage() {\n return guaranteeNonNullable(window.localStorage, `'window.localStorage' object is not available in non-web environment`);\n }\n setItem(key, value) {\n this.localStorage.setItem(key, value);\n }\n getItem(key) {\n return this.localStorage.getItem(key);\n }\n removeItem(key) {\n this.localStorage.removeItem(key);\n }\n clear() {\n this.localStorage.clear();\n }\n hasItem(key) {\n return this.localStorage.hasItem(key);\n }\n}\n//# sourceMappingURL=ApplicationStorage.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeIsNumber, guaranteeIsString, guaranteeIsBoolean, guaranteeIsObject, isNonNullable, returnUndefOnError, isEmpty, } from '@finos/legend-shared';\nimport { LocalStorage } from './ApplicationStorage.js';\nexport class StorageStore {\n storeIndex;\n storageService;\n data;\n constructor(storageService, storeIndex) {\n this.storageService = storageService;\n this.storeIndex = storeIndex;\n this.data = this.storageService.getIndex(this.storeIndex) ?? {};\n }\n getValue(key) {\n return this.data[key];\n }\n getNumericValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsNumber(value) : undefined;\n }\n getStringValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsString(value) : undefined;\n }\n getBooleanValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsBoolean(value) : undefined;\n }\n getObjectValue(key) {\n const value = this.getValue(key);\n return value !== undefined ? guaranteeIsObject(value) : undefined;\n }\n hasValue(key) {\n return isNonNullable(this.data[key]);\n }\n persistValue(key, value) {\n if (value !== undefined) {\n this.data[key] = value;\n }\n else {\n delete this.data[key];\n }\n this.storageService.updateIndex(this.storeIndex, this.data);\n }\n}\nexport class StorageService {\n applicationStore;\n storage;\n data;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new LocalStorage();\n const data = this.storage.getItem(applicationStore.config.applicationStorageKey);\n this.data = data\n ? returnUndefOnError(() => JSON.parse(data)) ?? {}\n : {};\n }\n getIndex(index) {\n return this.data[index];\n }\n updateIndex(index, value) {\n if (isEmpty(value)) {\n delete this.data[index];\n }\n else {\n this.data[index] = value;\n }\n this.storage.setItem(this.applicationStore.config.applicationStorageKey, JSON.stringify(this.data));\n }\n}\n//# sourceMappingURL=StorageService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin, } from '@finos/legend-shared';\nexport class TelemetryServicePlugin extends AbstractPlugin {\n userId;\n appName;\n appVersion;\n appEnv;\n appSessionId;\n appStartTime;\n install(pluginManager) {\n pluginManager.registerTelemetryServicePlugin(this);\n }\n setup(config) {\n this.userId = config.userId;\n this.appName = config.appName;\n this.appVersion = config.appVersion;\n this.appEnv = config.appEnv;\n this.appSessionId = config.appSessionId;\n this.appStartTime = config.appStartTime;\n }\n}\nexport class TelemetryService {\n applicationStore;\n plugins = [];\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n registerPlugins(plugins) {\n this.plugins = plugins;\n }\n setup() {\n const config = {\n userId: this.applicationStore.identityService.currentUser,\n appName: this.applicationStore.config.appName,\n appEnv: this.applicationStore.config.env,\n appVersion: this.applicationStore.config.appVersion,\n appSessionId: this.applicationStore.uuid,\n appStartTime: this.applicationStore.timeService.timestamp,\n };\n this.plugins.forEach((plugin) => plugin.setup(config));\n }\n logEvent(eventType, data) {\n this.plugins.forEach((plugin) => plugin.logEvent(eventType, data));\n }\n}\n//# sourceMappingURL=TelemetryService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class TimeService {\n timestamp = Date.now();\n /**\n * Record the instances where the application usage is interrupted (e.g. when the app window/tab is not in focus),\n * this is useful to know since for certain platform, background contexts are de-prioritized, given less resources,\n * and hence, would run less performantly.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#policies_in_place_to_aid_background_page_performance\n * See https://plumbr.io/blog/performance-blog/background-tabs-in-browser-load-20-times-slower\n *\n * This impacts certain operations such as scheduler and timer in the app, so it's useful to keep track of these here.\n */\n interruptions = [];\n recordUsageInterruption() {\n this.interruptions.push(Date.now());\n }\n finalizeTimingsRecord(stopWatch, timings) {\n const totalTime = stopWatch.elapsed;\n const startTime = stopWatch.startTime;\n const endTime = startTime + totalTime;\n const record = {\n ...(timings ?? {}),\n ...Object.fromEntries(stopWatch.records),\n total: totalTime,\n };\n // count the number of interruptions\n let numberOfInteruptions = 0;\n for (const interruption of this.interruptions) {\n if (interruption >= startTime && interruption <= endTime) {\n numberOfInteruptions++;\n }\n else if (interruption > endTime) {\n break;\n }\n }\n return numberOfInteruptions > 0\n ? { ...record, __numberOfInteruptions: numberOfInteruptions }\n : record;\n }\n}\n//# sourceMappingURL=TimeService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LEGEND_APPLICATION_COLOR_THEME } from './LegendApplicationColorTheme.js';\nexport var LEGEND_APPLICATION_SETTING_KEY;\n(function (LEGEND_APPLICATION_SETTING_KEY) {\n LEGEND_APPLICATION_SETTING_KEY[\"COLOR_THEME\"] = \"application.layout.colorTheme\";\n})(LEGEND_APPLICATION_SETTING_KEY || (LEGEND_APPLICATION_SETTING_KEY = {}));\nexport const LEGEND_APPLICATION_SETTING_CONFIG = {\n [LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME]: {\n defaultValue: LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK,\n },\n};\n//# sourceMappingURL=LegendApplicationSetting.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { LEGEND_APPLICATION_SETTING_KEY } from '../__lib__/LegendApplicationSetting.js';\nimport { LogEvent, guaranteeNonNullable } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { DEFAULT_DARK_COLOR_THEME, LEGEND_APPLICATION_COLOR_THEME, } from '../__lib__/LegendApplicationColorTheme.js';\nexport class LayoutService {\n applicationStore;\n // backdrop\n backdropContainerElementID;\n showBackdrop = false;\n // color theme\n colorThemeRegistry = new Map();\n currentColorTheme;\n constructor(applicationStore) {\n makeObservable(this, {\n currentColorTheme: observable.ref,\n TEMPORARY__isLightColorThemeEnabled: computed,\n backdropContainerElementID: observable,\n showBackdrop: observable,\n setBackdropContainerElementID: action,\n setShowBackdrop: action,\n setColorTheme: action,\n });\n this.applicationStore = applicationStore;\n // register core color themes\n // TODO: we might want to cover at least: a dark theme, a light theme, and a high contrast theme (etc.)\n // as part of core\n this.colorThemeRegistry.set(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK, DEFAULT_DARK_COLOR_THEME);\n // register color themes from extensions\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraColorThemes?.() ?? [])\n .forEach((colorTheme) => {\n // NOTE: in the future, when we need to make theme extensible, we might want to reconsider this decision here\n // perhaps, each extension can define a new set of color keys that each theme supports and the core theme is extensible\n // while non-core themes are left in a separate package/module and might/might not have support for those color keys\n if (this.colorThemeRegistry.has(colorTheme.key)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.COLOR_THEME_CONFIGURATION_CHECK__FAILURE), `Found duplicated color themes with key '${colorTheme.key}'`);\n return;\n }\n this.colorThemeRegistry.set(colorTheme.key, colorTheme);\n });\n const themeKey = this.applicationStore.settingService.getStringValue(LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME) ?? LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK;\n this.currentColorTheme = guaranteeNonNullable(this.colorThemeRegistry.get(themeKey));\n this.TEMPORARY__syncGlobalCSSClassName(this.currentColorTheme, undefined);\n }\n getElementByID(val) {\n return document.querySelector(`[data-elementid='${val}']`) ?? undefined;\n }\n /**\n * Change the ID used to find the base element to mount the backdrop on.\n * This is useful when we want to use backdrop with embedded application which\n * requires its own backdrop usage.\n *\n * TODO?: we can consider making backdrop container component auto-register its ID\n * as it gets rendered in the application\n */\n setBackdropContainerElementID(val) {\n this.backdropContainerElementID = val;\n }\n setShowBackdrop(val) {\n this.showBackdrop = val;\n }\n /**\n * NOTE: this is the poor man way of doing theming as we only properly support dark color theme\n * This flag is binary because we did light color theme in rush\n *\n * See https://github.com/finos/legend-studio/issues/264\n */\n get TEMPORARY__isLightColorThemeEnabled() {\n return (this.currentColorTheme.key !== LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK);\n }\n TEMPORARY__syncGlobalCSSClassName(theme, previousTheme) {\n if (previousTheme) {\n document.body.classList.remove(previousTheme.TEMPORARY__globalCSSClassName);\n }\n document.body.classList.add(theme.TEMPORARY__globalCSSClassName);\n }\n setColorTheme(key, options) {\n const newColorTheme = this.colorThemeRegistry.get(key);\n if (key === this.currentColorTheme.key || !newColorTheme) {\n return;\n }\n const previousColorTheme = this.currentColorTheme;\n this.currentColorTheme = newColorTheme;\n this.TEMPORARY__syncGlobalCSSClassName(newColorTheme, previousColorTheme);\n if (options?.persist) {\n this.applicationStore.settingService.persistValue(LEGEND_APPLICATION_SETTING_KEY.COLOR_THEME, key);\n }\n }\n getColor(key) {\n return (this.currentColorTheme.colors?.[key] ??\n guaranteeNonNullable(this.colorThemeRegistry.get(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK)).colors?.[key] ??\n 'transparent');\n }\n}\n//# sourceMappingURL=LayoutService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class ClipboardService {\n applicationStore;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n async copyTextToClipboard(text, options) {\n // This is a much cleaner way which requires HTTPS\n // See https://developers.google.com/web/updates/2018/03/clipboardapi\n await navigator.clipboard\n .writeText(text)\n .catch((error) => {\n this.applicationStore.notificationService.notifyError(error);\n })\n .finally(() => {\n if (options?.notifySuccessMessage) {\n this.applicationStore.notificationService.notifySuccess(options.notifySuccessMessage);\n }\n });\n }\n}\n//# sourceMappingURL=ClipboardService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const NAVIGATION_ZONE_SEPARATOR = '.';\nexport const NAVIGATION_ZONE_PREFIX = '#';\nexport class NavigationService {\n navigator;\n constructor(navigator) {\n this.navigator = navigator;\n }\n}\n//# sourceMappingURL=NavigationService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { deepEqual, isBoolean, isNumber, isObject, isString, LogEvent, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { StorageStore } from './storage/StorageService.js';\nexport const collectSettingConfigurationEntriesFromConfig = (data) => Object.entries(data).map((entry) => ({\n key: entry[0],\n ...entry[1],\n}));\nconst APPLICATION_SETTING_STORAGE_KEY = 'application-settings-storage';\nexport class SettingService {\n applicationStore;\n storage;\n registry = new Map();\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new StorageStore(this.applicationStore.storageService, APPLICATION_SETTING_STORAGE_KEY);\n this.applicationStore.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraSettingConfigurationEntries?.() ?? [])\n .forEach((entry) => {\n if (this.registry.has(entry.key)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_CONFIGURATION_CHECK__FAILURE), `Found duplicated setting with key '${entry.key}'`);\n return;\n }\n // TODO: do validation check here\n // See https://github.com/finos/legend-studio/issues/407\n this.registry.set(entry.key, entry);\n });\n }\n getNumericValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isNumber(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve numeric value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getStringValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isString(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve string value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getBooleanValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isBoolean(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve boolean value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n getObjectValue(key) {\n const value = this.storage.getValue(key) ?? this.registry.get(key)?.defaultValue;\n if (!isObject(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.SETTING_RETRIVE_FAILURE), `Can't retrieve object value for setting '${key}'`);\n return undefined;\n }\n return value;\n }\n persistValue(key, value) {\n const defaultValue = this.registry.get(key)?.defaultValue;\n this.storage.persistValue(key, \n // NOTE: if the value equals to default value, the value will be unset instead\n defaultValue !== undefined && deepEqual(defaultValue, value)\n ? undefined\n : value);\n }\n}\n//# sourceMappingURL=SettingService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { UnsupportedOperationError } from '@finos/legend-shared';\nimport {} from './NavigationService.js';\nexport class DefaultNavigator {\n goToLocation(location, options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n reload(options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n goToAddress(address, options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n visitAddress(address) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n generateAddress(location) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n updateCurrentLocation(location) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n updateCurrentZone(zone) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n resetZone() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentBaseAddress(options) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentAddress() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocation() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocationParameters() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentLocationParameterValue(key) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n getCurrentZone() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n blockNavigation(blockCheckers, onBlock, onNativePlatformNavigationBlock) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n unblockNavigation() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n get isNavigationBlocked() {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n INTERNAL__internalizeTransientParameter(key) {\n throw new UnsupportedOperationError(`Navigator does not support this operation`);\n }\n}\n//# sourceMappingURL=DefaultNavigator.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LogEvent, isBoolean, isNumber, isObject, isString, } from '@finos/legend-shared';\nimport { StorageStore } from './storage/StorageService.js';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nconst APPLICATION_USER_DATA_STORAGE_KEY = 'application-user-data-storage';\nexport class UserDataService {\n applicationStore;\n storage;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.storage = new StorageStore(this.applicationStore.storageService, APPLICATION_USER_DATA_STORAGE_KEY);\n }\n getNumericValue(key) {\n const value = this.storage.getValue(key);\n if (!isNumber(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve numeric value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getStringValue(key) {\n const value = this.storage.getValue(key);\n if (!isString(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve string value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getBooleanValue(key) {\n const value = this.storage.getValue(key);\n if (!isBoolean(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve boolean value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n getObjectValue(key) {\n const value = this.storage.getValue(key);\n if (!isObject(value)) {\n this.applicationStore.logService.warn(LogEvent.create(APPLICATION_EVENT.USER_DATA_RETRIEVE_FAILURE), `Can't retrieve object value for user data '${key}'`);\n return undefined;\n }\n return value;\n }\n persistValue(key, value) {\n this.storage.persistValue(key, value);\n }\n}\n//# sourceMappingURL=UserDataService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Compare SemVer versions.\n *\n * NOTE: SemVer could have been the perfect library to use here but we can't use it since it's meant for `Node` only\n * `compare-versions` works for browser but seems way overkill, especially when the version format is very\n * standard, i.e. `x.y.z`, no prerelease, etc.\n * As such, we can use the lean comparison algo using `localeCompare` with numeric settings\n *\n * See https://stackoverflow.com/questions/55466274/simplify-semver-version-compare-logic/55466325#55466325\n * See omichelsen/compare-versions#45\n */\nexport const compareSemVerVersions = (val1, val2) => \n// TODO: verify if the version match certain patterns\nval1.localeCompare(val2, undefined, { numeric: true });\n// regex to validate semver: https://github.com/semver/semver/issues/232\nexport const isSemVer = (val) => /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$/.test(val);\n//# sourceMappingURL=StringCompareUtil.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { compareSemVerVersions, guaranteeNonEmptyString, isSemVer, } from '@finos/legend-shared';\nimport { action, makeObservable, observable } from 'mobx';\nexport var RELEASE_UPDATE_TYPE;\n(function (RELEASE_UPDATE_TYPE) {\n RELEASE_UPDATE_TYPE[\"BUG_FIX\"] = \"BUG_FIX\";\n RELEASE_UPDATE_TYPE[\"ENHANCEMENT\"] = \"ENHANCEMENT\";\n})(RELEASE_UPDATE_TYPE || (RELEASE_UPDATE_TYPE = {}));\nexport const collectReleaseNotes = (releaseNotes) => releaseNotes.map((release) => {\n guaranteeNonEmptyString(release.version, \"Release notes 'version' is missing\");\n release.notes?.map((note) => {\n guaranteeNonEmptyString(note.type, \"Release note 'type' is missing\");\n guaranteeNonEmptyString(note.description, \"Release note 'description' is missing\");\n return note;\n });\n return release;\n});\nexport const APPLICATION_LAST_OPENED_VERSION = 'application.lastOpenedVersion';\nexport class ReleaseNotesService {\n applicationStore;\n releaseNotes;\n showCurrentReleaseModal = true;\n showReleaseLog = false;\n isConfigured = false;\n constructor(applicationStore) {\n makeObservable(this, {\n showCurrentReleaseModal: observable,\n showReleaseLog: observable,\n isConfigured: observable,\n setShowCurrentRelease: action,\n configure: action,\n setReleaseLog: action,\n });\n this.applicationStore = applicationStore;\n }\n configure(releaseNotes) {\n this.isConfigured = true;\n this.releaseNotes = collectReleaseNotes(releaseNotes);\n }\n setShowCurrentRelease(val) {\n this.showCurrentReleaseModal = val;\n }\n setReleaseLog(val) {\n this.showReleaseLog = val;\n }\n getViewedVersion() {\n return this.applicationStore.userDataService.getStringValue(APPLICATION_LAST_OPENED_VERSION);\n }\n updateViewedVersion() {\n this.applicationStore.userDataService.persistValue(APPLICATION_LAST_OPENED_VERSION, this.applicationStore.config.appVersion);\n }\n showVersion(versionNotes, lastOpenedVersion) {\n const version = versionNotes.version;\n if (isSemVer(version) && isSemVer(lastOpenedVersion)) {\n if (compareSemVerVersions(version, lastOpenedVersion) === 1) {\n return true;\n }\n }\n return false;\n }\n showableVersions() {\n const lastOpenedVersion = this.getViewedVersion();\n if (!lastOpenedVersion) {\n return undefined;\n }\n return this.releaseNotes?.filter((val) => this.showVersion(val, lastOpenedVersion));\n }\n}\n//# sourceMappingURL=ReleaseNotesService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TracerService, LogService, LogEvent, uuid, ActionState, assertErrorThrown, IllegalStateError, isNonNullable, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { DocumentationService } from './DocumentationService.js';\nimport { AssistantService } from './AssistantService.js';\nimport { EventService } from './event/EventService.js';\nimport { ApplicationNavigationContextService } from './ApplicationNavigationContextService.js';\nimport { CommandService } from './CommandService.js';\nimport { KeyboardShortcutsService } from './KeyboardShortcutsService.js';\nimport { TerminalService } from './TerminalService.js';\nimport { AlertService } from './AlertService.js';\nimport { NotificationService } from './NotificationService.js';\nimport { IdentityService } from './IdentityService.js';\nimport { StorageService } from './storage/StorageService.js';\nimport { TelemetryService } from './TelemetryService.js';\nimport { TimeService } from './TimeService.js';\nimport { LayoutService } from './LayoutService.js';\nimport { ClipboardService } from './ClipboardService.js';\nimport { NavigationService } from './navigation/NavigationService.js';\nimport { SettingService } from './SettingService.js';\nimport { DefaultNavigator } from './navigation/DefaultNavigator.js';\nimport { UserDataService } from './UserDataService.js';\nimport { ReleaseNotesService } from './ReleaseNotesService.js';\nexport class ApplicationExtensionState {\n /**\n * This helps to better type-check for this empty abtract type\n * See https://github.com/finos/legend-studio/blob/master/docs/technical/typescript-usage.md#understand-typescript-structual-type-system\n */\n _$nominalTypeBrand;\n}\nexport class ApplicationStore {\n uuid = uuid();\n /**\n * This is a mechanism to have the store holds references to extension states\n * so that we can refer back to these states when needed or do cross-extensions\n * operations\n */\n extensionStates = [];\n config;\n pluginManager;\n initState = ActionState.create();\n platform;\n // core\n timeService;\n logService;\n storageService;\n userDataService;\n settingService;\n alertService;\n notificationService;\n identityService;\n commandService;\n keyboardShortcutsService;\n layoutService;\n clipboardService;\n terminalService;\n navigationService;\n navigationContextService;\n // support\n documentationService;\n assistantService;\n // release\n releaseNotesService;\n // event\n eventService;\n telemetryService;\n tracerService;\n constructor(config, pluginManager) {\n this.config = config;\n this.pluginManager = pluginManager;\n this.timeService = new TimeService();\n // NOTE: set the logger first so other loading could use the configured logger\n this.logService = new LogService();\n this.logService.registerPlugins(pluginManager.getLoggerPlugins());\n this.storageService = new StorageService(this);\n this.settingService = new SettingService(this);\n this.userDataService = new UserDataService(this);\n this.alertService = new AlertService(this);\n this.notificationService = new NotificationService();\n this.identityService = new IdentityService(this);\n this.layoutService = new LayoutService(this);\n this.clipboardService = new ClipboardService(this);\n this.terminalService = new TerminalService(this);\n this.commandService = new CommandService(this);\n this.keyboardShortcutsService = new KeyboardShortcutsService(this);\n this.navigationService = new NavigationService(new DefaultNavigator());\n this.navigationContextService = new ApplicationNavigationContextService(this);\n this.documentationService = new DocumentationService(this);\n this.assistantService = new AssistantService(this);\n this.releaseNotesService = new ReleaseNotesService(this);\n this.eventService = new EventService();\n this.eventService.registerEventNotifierPlugins(pluginManager.getEventNotifierPlugins());\n this.telemetryService = new TelemetryService(this);\n this.telemetryService.registerPlugins(pluginManager.getTelemetryServicePlugins());\n this.telemetryService.setup();\n this.tracerService = new TracerService();\n this.tracerService.registerPlugins(pluginManager.getTracerServicePlugins());\n // extensions\n this.extensionStates = this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraApplicationExtensionStateBuilders?.() ?? [])\n .map((creator) => creator(this))\n .filter(isNonNullable);\n }\n async initialize(platform) {\n if (!this.initState.isInInitialState) {\n this.notificationService.notifyIllegalState('Application store is re-initialized');\n return;\n }\n this.initState.inProgress();\n try {\n if (this.platform) {\n throw new IllegalStateError(`Platform is already configured`);\n }\n this.platform = platform;\n this.navigationService =\n new NavigationService(platform.getNavigator());\n await platform.initialize();\n this.initState.pass();\n }\n catch (error) {\n assertErrorThrown(error);\n this.notificationService.notifyError(error);\n this.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__FAILURE), 'Failed to load Legend application');\n this.initState.fail();\n }\n }\n /**\n * When we call store/state functions from the component, we should handle error thrown at these functions instead\n * of throwing them to the UI. This enforces that by throwing `IllegalStateError`\n */\n alertUnhandledError = (error) => {\n this.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), 'Encountered unhandled error in component tree', error);\n this.notificationService.notifyIllegalState(error.message);\n };\n /**\n * Guarantee that the action being used by the component does not throw unhandled errors\n */\n guardUnhandledError = (actionFn) => () => {\n actionFn().catch(this.alertUnhandledError);\n };\n}\n//# sourceMappingURL=ApplicationStore.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { downloadFileUsingDataURI, guaranteeNonNullable, } from '@finos/legend-shared';\nvar DOWNLOAD_EVENTS;\n(function (DOWNLOAD_EVENTS) {\n DOWNLOAD_EVENTS[\"TAG_REQUEST\"] = \"download-request\";\n DOWNLOAD_EVENTS[\"TAG_RESPONSE\"] = \"download-response\";\n DOWNLOAD_EVENTS[\"STREAM_CLOSED\"] = \"#stream-closed\";\n DOWNLOAD_EVENTS[\"STREAM_ABORTED\"] = \"#stream-aborted\";\n})(DOWNLOAD_EVENTS || (DOWNLOAD_EVENTS = {}));\nfunction createWritableStreamFromMessageChannel(channel) {\n return new WritableStream({\n write(chunk) {\n channel.port1.postMessage(chunk);\n },\n close() {\n channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_CLOSED);\n },\n abort() {\n channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_ABORTED);\n closeMessagePort(channel.port1);\n closeMessagePort(channel.port2);\n },\n });\n}\nfunction closeMessagePort(port) {\n port.onmessage = null;\n port.close();\n}\nasync function getServiceWorker() {\n if (!('serviceWorker' in navigator)) {\n return Promise.reject(new Error('Service worker is not available. Service Worker requires HTTPS protocol'));\n }\n return navigator.serviceWorker\n .getRegistration()\n .then((workerRegistration) => {\n if (workerRegistration === undefined) {\n return undefined;\n }\n const pending = workerRegistration.installing ?? workerRegistration.waiting;\n return (workerRegistration.active ??\n new Promise((resolve) => {\n // if not activated, add listener to waiting or installing registration\n const listener = () => {\n if (pending?.state === 'activated') {\n pending.removeEventListener('statechange', listener);\n resolve(workerRegistration.active ?? undefined);\n }\n };\n pending?.addEventListener('statechange', listener);\n }));\n });\n}\nfunction createDownloadRequest(filename) {\n const PREFIX = 6;\n const prefix = String(Math.random()).slice(-PREFIX);\n const url = new URL(`${prefix}/${filename}`, window.location.href).toString();\n return { tag: DOWNLOAD_EVENTS.TAG_REQUEST, filename, url };\n}\nfunction handleServiceWorkerDownloadResponse(event) {\n const data = event.data;\n if (data?.tag === DOWNLOAD_EVENTS.TAG_RESPONSE && data.downloadUrl.length) {\n openInIframe(data.downloadUrl);\n }\n}\nfunction openInIframe(src) {\n const iframe = document.createElement('iframe');\n iframe.hidden = true;\n iframe.src = src;\n document.body.appendChild(iframe);\n return iframe;\n}\nexport async function downloadStream(response, filename, contentType) {\n const responseBody = guaranteeNonNullable(response.body);\n // creates communication channel with service worker with response handler\n const channel = new MessageChannel();\n channel.port1.onmessage = handleServiceWorkerDownloadResponse;\n // grabs service worker and handles it download along with response channel port\n const serviceWorker = await getServiceWorker();\n if (!serviceWorker) {\n // TODO: remove once service worker workflow is tested\n const text = await response.text();\n // eslint-disable-next-line no-console\n console.debug('service worker not found. Using in memory file download');\n downloadFileUsingDataURI(filename, text, contentType);\n return;\n }\n // eslint-disable-next-line no-console\n console.debug('Service worker found. Continuing download');\n const downloadRequest = createDownloadRequest(filename);\n serviceWorker.postMessage(downloadRequest, [channel.port2]);\n // creates new data stream over communication channel and pipes given stream in it\n responseBody\n .pipeTo(createWritableStreamFromMessageChannel(channel))\n .then(() => {\n // TODO: trace success\n })\n .catch(() => {\n // TODO: fail\n });\n}\nexport function registerDownloadHelperServiceWorker(workerPath) {\n if ('serviceWorker' in navigator) {\n const path = workerPath ?? '/ServiceWorker.js';\n navigator.serviceWorker\n .register(path)\n .then((reg) => {\n // TODO: add trace\n // eslint-disable-next-line no-console\n console.debug(`register service worker success with path: ${path}`, reg);\n })\n .catch((error) => {\n // TODO: add trace\n // eslint-disable-next-line no-console\n console.debug(`register service worker error with path: ${path}`, error);\n });\n }\n}\n//# sourceMappingURL=DownloadHelperServiceWorker.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertErrorThrown, LogEvent, guaranteeNonEmptyString, assertNonNullable, NetworkClient, createRegExpPatternFromWildcardPattern, } from '@finos/legend-shared';\nimport { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';\nimport { collectKeyedDocumentationEntriesFromConfig, } from '../stores/DocumentationService.js';\nimport { ApplicationStore, } from '../stores/ApplicationStore.js';\nimport { registerDownloadHelperServiceWorker } from '../util/DownloadHelperServiceWorker.js';\nexport class LegendApplicationLogger {\n}\nexport class LegendApplicationWebConsole extends LegendApplicationLogger {\n debug(event, ...data) {\n // eslint-disable-next-line no-console\n console.debug(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n info(event, ...data) {\n // eslint-disable-next-line no-console\n console.info(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n warn(event, ...data) {\n // eslint-disable-next-line no-console\n console.warn(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n error(event, ...data) {\n // eslint-disable-next-line no-console\n console.error(`[${event.timestamp}] ${event.name} ${data.length ? ':' : ''}`, ...data);\n }\n}\nexport class LegendApplication {\n config;\n logger;\n pluginManager;\n basePresets = [];\n basePlugins = [];\n baseAddress;\n pluginRegister;\n _isConfigured = false;\n downloadHelperServiceWorkerPath;\n downloadHelper = false;\n releaseNotes;\n constructor(pluginManager) {\n this.pluginManager = pluginManager;\n this.logger = new LegendApplicationWebConsole();\n }\n setup(options) {\n this.baseAddress = guaranteeNonEmptyString(options.baseAddress, `Can't setup application: 'baseAddress' is missing or empty`);\n this.pluginRegister = options.pluginRegister;\n this._isConfigured = true;\n return this;\n }\n withBasePresets(presets) {\n this.basePresets = presets;\n return this.withPresets([]); // this will reset the preset list and prepend with base presets\n }\n withBasePlugins(plugins) {\n this.basePlugins = plugins;\n return this.withPlugins([]); // this will reset the plugin list and prepend with base plugins\n }\n withPresets(presets) {\n this.pluginManager.usePresets([...this.basePresets, ...presets]);\n return this;\n }\n withPlugins(plugins) {\n this.pluginManager.usePlugins([...this.basePlugins, ...plugins]);\n return this;\n }\n withDownloadHelper(path) {\n this.downloadHelper = true;\n this.downloadHelperServiceWorkerPath = path;\n return this;\n }\n withReleaseNotes(releaseNotes) {\n this.releaseNotes = releaseNotes;\n return this;\n }\n setupApplicationStore(store) {\n if (this.releaseNotes) {\n store.releaseNotesService.configure(this.releaseNotes);\n }\n }\n async fetchApplicationConfiguration(baseUrl) {\n const client = new NetworkClient();\n // app config\n let configData;\n try {\n configData = await client.get(`${window.location.origin}${baseUrl}config.json`);\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_CONFIGURATION__FAILURE), error);\n }\n assertNonNullable(configData, `Can't fetch Legend application configuration`);\n // app version\n let versionData;\n try {\n versionData = await client.get(`${window.location.origin}${baseUrl}version.json`);\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_CONFIGURATION__FAILURE), error);\n }\n assertNonNullable(versionData, `Can't fetch Legend application version`);\n return [\n await this.configureApplication({\n configData,\n versionData,\n baseAddress: baseUrl,\n }),\n configData.extensions ?? {},\n ];\n }\n async loadDocumentationRegistryData(config) {\n const entries = {};\n await Promise.all([\n ...config.documentationRegistryEntries,\n ...this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraDocumentationRegistryEntries?.() ?? []),\n ].map(async (entry) => {\n try {\n const client = new NetworkClient(entry.simple\n ? {\n /**\n * NOTE: see the documentation for `simple` flag {@link DocumentationRegistryEntry}\n * here, basically, we expect to fetch just the JSON from an endpoint where `Access-Control-Allow-Origin\", \"*\"` is set\n * as such, we must not include the credential in our request\n * See https://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin-when-credentials-flag-i\n */\n options: {\n credentials: 'omit',\n },\n }\n : {});\n const docData = await client.get(guaranteeNonEmptyString(entry.url, `Can't load documentation registry: 'url' field is missing or empty`));\n assertNonNullable(docData.entries, `Can't load documentation registry data: 'entries' field is missing`);\n const patterns = entry.includes?.map((filter) => createRegExpPatternFromWildcardPattern(filter));\n Object.entries(docData.entries).forEach(([key, docEntry]) => {\n if (!patterns || patterns.some((pattern) => pattern.test(key))) {\n // NOTE: entries will NOT override\n if (!entries[key]) {\n entries[key] = docEntry;\n }\n }\n });\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.warn(LogEvent.create(APPLICATION_EVENT.DOCUMENTATION_FETCH__FAILURE), error);\n }\n }));\n // NOTE: config entries will override\n config.keyedDocumentationEntries = [\n ...collectKeyedDocumentationEntriesFromConfig(entries),\n ...config.keyedDocumentationEntries,\n ];\n }\n async start() {\n assertNonNullable(this._isConfigured, 'Legend application has not been configured properly. Make sure to run setup() before start()');\n try {\n // fetch application config\n const [config, extensionConfigData] = await this.fetchApplicationConfiguration(this.baseAddress);\n this.config = config;\n // setup plugins\n this.pluginRegister?.(this.pluginManager, this.config);\n this.pluginManager.configure(extensionConfigData);\n this.pluginManager.install();\n // other setups\n await Promise.all(\n // NOTE: to be done in parallel to save time\n [this.loadDocumentationRegistryData(config)]);\n // setup application store\n const applicationStore = new ApplicationStore(this.config, this.pluginManager);\n await Promise.all(this.pluginManager\n .getApplicationPlugins()\n .flatMap((plugin) => plugin.getExtraApplicationSetups?.() ?? [])\n .map((setup) => setup(applicationStore)));\n // set up application\n this.setupApplicationStore(applicationStore);\n // load application\n await this.loadApplication(applicationStore);\n this.logger.info(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS), 'Legend application loaded');\n if (this.downloadHelper) {\n registerDownloadHelperServiceWorker(this.downloadHelperServiceWorkerPath);\n }\n }\n catch (error) {\n assertErrorThrown(error);\n this.logger.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__FAILURE), 'Failed to load Legend application');\n throw error;\n }\n }\n}\nexport const LEGEND_APPLICATION_ROOT_ELEMENT_TAG = 'legend-application-root';\n// NOTE: we use a special tag to mount the application to avoid styling conflicts\nexport const getApplicationRootElement = () => {\n let rootEl = document.getElementsByTagName(LEGEND_APPLICATION_ROOT_ELEMENT_TAG).length\n ? document.getElementsByTagName(LEGEND_APPLICATION_ROOT_ELEMENT_TAG)[0]\n : undefined;\n if (!rootEl) {\n rootEl = document.createElement(LEGEND_APPLICATION_ROOT_ELEMENT_TAG);\n document.body.appendChild(rootEl);\n }\n rootEl.setAttribute('style', 'height: 100%; width: 100%; display: block');\n return rootEl;\n};\n//# sourceMappingURL=LegendApplication.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const createRegExpPatternFromWildcardPattern = (value) => new RegExp(\n// trim and add start/end regexp to make sure the wildcard pattern must be a full match\n`^${value\n .trim()\n // escape special characters except for wilcard *\n .replace(/[\\^$\\\\.+?()[\\]{}|]/g, '\\\\$&')\n // translate wildcard * to .*\n .replace(/\\*/g, '.*')}$`);\n//# sourceMappingURL=MatcherUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPlugin } from '@finos/legend-shared';\nexport class LegendApplicationPlugin extends AbstractPlugin {\n}\n//# sourceMappingURL=LegendApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LEGEND_APPLICATION_SETTING_CONFIG } from '../__lib__/LegendApplicationSetting.js';\nimport { HIGH_CONTRAST_LIGHT_COLOR_THEME, LEGACY_LIGHT_COLOR_THEME, } from '../__lib__/LegendApplicationColorTheme.js';\nimport { LegendApplicationPlugin, } from './LegendApplicationPlugin.js';\nimport { collectSettingConfigurationEntriesFromConfig, } from './SettingService.js';\nimport { configure as configureMobx } from 'mobx';\nimport { configureComponents } from '@finos/legend-art';\nexport class Core_LegendApplicationPlugin extends LegendApplicationPlugin {\n static NAME = packageJson.extensions.applicationPlugin;\n constructor() {\n super(Core_LegendApplicationPlugin.NAME, packageJson.version);\n }\n install(pluginManager) {\n pluginManager.registerApplicationPlugin(this);\n }\n getExtraApplicationSetups() {\n return [\n async (applicationStore) => {\n // configure `mobx`\n configureMobx({\n // Force state modification to be done via actions\n // Otherwise, warning will be shown in development mode\n // However, no warning will shown in production mode\n // See https://mobx.js.org/configuration.html#enforceactions\n enforceActions: 'observed',\n });\n // configure UI components\n configureComponents();\n },\n ];\n }\n getExtraColorThemes() {\n return [LEGACY_LIGHT_COLOR_THEME, HIGH_CONTRAST_LIGHT_COLOR_THEME];\n }\n getExtraSettingConfigurationEntries() {\n return collectSettingConfigurationEntriesFromConfig(LEGEND_APPLICATION_SETTING_CONFIG);\n }\n}\n//# sourceMappingURL=Core_LegendApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonEmptyString, guaranteeNonNullable, URL_SEPARATOR, } from '@finos/legend-shared';\nimport { collectKeyedDocumentationEntriesFromConfig, collectContextualDocumentationEntries, collectDocumentationLinkEntryFromConfig, } from '../stores/DocumentationService.js';\nexport class LegendApplicationConfig {\n appName;\n baseAddress;\n env;\n applicationStorageKey;\n // documentation\n documentationUrl;\n documentationLinkEntries = [];\n documentationRegistryEntries = [];\n keyedDocumentationEntries = [];\n contextualDocEntries = [];\n // version\n appVersion;\n appVersionBuildTime;\n appVersionCommitId;\n constructor(input) {\n this.baseAddress = input.baseAddress;\n this.appName = guaranteeNonEmptyString(input.configData.appName, `Can't configure application: 'appName' field is missing or empty`);\n this.env = guaranteeNonEmptyString(input.configData.env, `Can't configure application: 'env' field is missing or empty`);\n this.applicationStorageKey =\n input.configData.application?.storageKey ??\n this.getDefaultApplicationStorageKey();\n // Documentation\n this.documentationUrl = input.configData.documentation?.url;\n this.documentationLinkEntries = collectDocumentationLinkEntryFromConfig(input.configData.documentation?.links ?? {});\n this.documentationRegistryEntries =\n input.configData.documentation?.registry ?? [];\n this.keyedDocumentationEntries = collectKeyedDocumentationEntriesFromConfig(input.configData.documentation?.entries ?? {});\n this.contextualDocEntries = collectContextualDocumentationEntries(input.configData.documentation?.contextualEntries ?? {});\n // Version\n this.appVersion = guaranteeNonNullable(input.versionData.version, `Can't collect application version: 'version' field is missing`);\n this.appVersionBuildTime = guaranteeNonNullable(input.versionData.buildTime, `Can't collect application version: 'buildTime' field is missing`);\n this.appVersionCommitId = guaranteeNonNullable(input.versionData.commitSHA, `Can't collect application version: 'commitSHA' field is missing`);\n }\n static resolveAbsoluteUrl(url) {\n if (url.trim().startsWith(URL_SEPARATOR)) {\n return window.location.origin + url;\n }\n return url;\n }\n}\n//# sourceMappingURL=LegendApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { assertNonNullable, guaranteeNonEmptyString, } from '@finos/legend-shared';\nimport { LegendApplicationConfig, } from '@finos/legend-application';\nexport class LegendREPLApplicationConfig extends LegendApplicationConfig {\n replUrl;\n useDynamicREPLServer = false;\n constructor(input) {\n super(input);\n assertNonNullable(input.configData.repl, `Can't configure application: 'repl' field is missing`);\n this.replUrl = LegendApplicationConfig.resolveAbsoluteUrl(guaranteeNonEmptyString(input.configData.repl.url, `Can't configure application: 'repl.url' field is missing or empty`));\n if (input.configData.repl.dynamic !== undefined) {\n this.useDynamicREPLServer = Boolean(input.configData.repl.dynamic);\n }\n }\n getDefaultApplicationStorageKey() {\n return 'legend-repl';\n }\n}\n//# sourceMappingURL=LegendREPLApplicationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AbstractPluginManager, } from '@finos/legend-shared';\nexport class LegendApplicationPluginManager extends AbstractPluginManager {\n loggerPlugins = [];\n telemetryServicePlugins = [];\n tracerServicePlugins = [];\n eventNotifierPlugins = [];\n applicationPlugins = [];\n registerLoggerPlugin(plugin) {\n this.loggerPlugins.push(plugin);\n }\n registerTelemetryServicePlugin(plugin) {\n this.telemetryServicePlugins.push(plugin);\n }\n registerTracerServicePlugin(plugin) {\n this.tracerServicePlugins.push(plugin);\n }\n registerEventNotifierPlugin(plugin) {\n this.eventNotifierPlugins.push(plugin);\n }\n registerApplicationPlugin(plugin) {\n this.applicationPlugins.push(plugin);\n }\n getLoggerPlugins() {\n return [...this.loggerPlugins];\n }\n getTelemetryServicePlugins() {\n return [...this.telemetryServicePlugins];\n }\n getTracerServicePlugins() {\n return [...this.tracerServicePlugins];\n }\n getEventNotifierPlugins() {\n return [...this.eventNotifierPlugins];\n }\n getApplicationPlugins() {\n return [...this.applicationPlugins];\n }\n}\n//# sourceMappingURL=LegendApplicationPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LegendApplicationPluginManager } from '@finos/legend-application';\nexport class LegendREPLPluginManager extends LegendApplicationPluginManager {\n pureProtocolProcessorPlugins = [];\n pureGraphManagerPlugins = [];\n pureGraphPlugins = [];\n constructor() {\n super();\n }\n static create() {\n return new LegendREPLPluginManager();\n }\n registerPureProtocolProcessorPlugin(plugin) {\n this.pureProtocolProcessorPlugins.push(plugin);\n }\n registerPureGraphManagerPlugin(plugin) {\n this.pureGraphManagerPlugins.push(plugin);\n }\n registerPureGraphPlugin(plugin) {\n this.pureGraphPlugins.push(plugin);\n }\n getPureGraphManagerPlugins() {\n return [...this.pureGraphManagerPlugins];\n }\n getPureProtocolProcessorPlugins() {\n return [...this.pureProtocolProcessorPlugins];\n }\n getPureGraphPlugins() {\n return [...this.pureGraphPlugins];\n }\n}\n//# sourceMappingURL=LegendREPLPluginManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var LEGEND_APPLICATION_PARAM_TOKEN;\n(function (LEGEND_APPLICATION_PARAM_TOKEN) {\n LEGEND_APPLICATION_PARAM_TOKEN[\"INITIAL_COLOR_THEME\"] = \"initialColorTheme\";\n})(LEGEND_APPLICATION_PARAM_TOKEN || (LEGEND_APPLICATION_PARAM_TOKEN = {}));\n//# sourceMappingURL=LegendApplicationNavigation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { addQueryParametersToUrl, getQueryParameterValue, getQueryParameters, guaranteeNonNullable, sanitizeURL, stringifyQueryParams, } from '@finos/legend-shared';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { NAVIGATION_ZONE_PREFIX, } from './NavigationService.js';\nimport { Route, Switch, Redirect, matchPath, generatePath, useParams, useLocation, } from 'react-router';\nexport { BrowserRouter } from 'react-router-dom';\nexport { Route, Switch, Redirect, useParams, matchPath, generatePath };\nexport const useNavigationZone = () => {\n const location = useLocation(); // TODO: this is a temporary hack until we upgrade react-router\n return location.hash.substring(NAVIGATION_ZONE_PREFIX.length);\n};\n/**\n * Prefix URL patterns coming from extensions with `/extensions/`\n * to avoid potential conflicts with main routes.\n */\nexport const generateExtensionUrlPattern = (pattern) => `/extensions/${pattern}`.replace(/^\\/extensions\\/\\//, '/extensions/');\nexport class BrowserNavigator {\n historyAPI;\n _isNavigationBlocked = false;\n _forceBypassNavigationBlocking = false;\n _blockCheckers = [];\n _beforeUnloadListener = (event) => {\n if (this._forceBypassNavigationBlocking) {\n return;\n }\n if (this._blockCheckers.some((checker) => checker())) {\n // NOTE: there is no way to customize the alert message for now since Chrome removed support for it due to security concerns\n // See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Browser_compatibility\n event.returnValue = '';\n }\n };\n onBlock;\n onNativePlatformNavigationBlock;\n constructor(historyApiClient) {\n makeObservable(this, {\n _isNavigationBlocked: observable,\n isNavigationBlocked: computed,\n blockNavigation: action,\n unblockNavigation: action,\n });\n this.historyAPI = historyApiClient;\n }\n get window() {\n return guaranteeNonNullable(window, `Window object is not available in non-web environment`);\n }\n goToLocation(location, options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.href = this.generateAddress(location);\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n reload(options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.reload();\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n goToAddress(address, options) {\n if (options?.ignoreBlocking) {\n this._forceBypassNavigationBlocking = true;\n }\n const onProceed = () => {\n this._forceBypassNavigationBlocking = true; // make sure to not trigger `BeforeUnloadEvent`\n this.window.location.href = address;\n };\n if (!this._forceBypassNavigationBlocking &&\n this._blockCheckers.some((checker) => checker())) {\n this.onBlock?.(onProceed);\n }\n else {\n onProceed();\n }\n }\n visitAddress(address) {\n this.window.open(address, '_blank');\n }\n generateAddress(location) {\n return (this.window.location.origin +\n this.historyAPI.createHref({ pathname: location }));\n }\n updateCurrentLocation(location) {\n this.historyAPI.push(location);\n }\n updateCurrentZone(zone) {\n this.window.location.hash = NAVIGATION_ZONE_PREFIX + zone;\n }\n resetZone() {\n this.updateCurrentLocation(this.getCurrentLocation());\n }\n getCurrentBaseAddress(options) {\n if (options?.withAppRoot) {\n return this.generateAddress('');\n }\n return this.window.location.origin;\n }\n getCurrentAddress() {\n return this.window.location.href;\n }\n getCurrentLocation() {\n return this.historyAPI.location.pathname;\n }\n getCurrentLocationParameters() {\n const result = {};\n const parameters = getQueryParameters(sanitizeURL(this.getCurrentAddress()), true);\n Object.keys(parameters).forEach((key) => {\n result[key] = getQueryParameterValue(key, parameters);\n });\n return result;\n }\n getCurrentLocationParameterValue(key) {\n return this.getCurrentLocationParameters()[key];\n }\n getCurrentZone() {\n return this.window.location.hash.substring(NAVIGATION_ZONE_PREFIX.length);\n }\n blockNavigation(blockCheckers, onBlock, onNativePlatformNavigationBlock) {\n this._isNavigationBlocked = true;\n this.onBlock = onBlock;\n this.onNativePlatformNavigationBlock = onNativePlatformNavigationBlock;\n // Here we attempt to cancel the effect of the back button\n // See https://medium.com/codex/angular-guards-disabling-browsers-back-button-for-specific-url-fdf05d9fe155#4f13\n // This makes the current location the last entry in the browser history and clears any forward history\n this.window.history.pushState(null, '', this.getCurrentAddress());\n // The popstate event is triggered every time the user clicks back/forward button, but the forward history\n // has been cleared, and now if we go back, we call `history.forward()`, which go 1 page forward,\n // but there's no page forward, so effectively, the user remains on the same page\n this.window.onpopstate = () => {\n window.history.forward();\n this.onNativePlatformNavigationBlock?.();\n };\n // Block browser navigation: e.g. reload, setting `window.href` directly, etc.\n this._blockCheckers = blockCheckers;\n this.window.removeEventListener('beforeunload', this._beforeUnloadListener);\n this.window.addEventListener('beforeunload', this._beforeUnloadListener);\n }\n unblockNavigation() {\n this._isNavigationBlocked = false;\n this.onBlock = undefined;\n this.window.onpopstate = null;\n this._blockCheckers = [];\n this.window.removeEventListener('beforeunload', this._beforeUnloadListener);\n }\n get isNavigationBlocked() {\n return this._isNavigationBlocked;\n }\n INTERNAL__internalizeTransientParameter(key) {\n const currentZone = this.getCurrentZone();\n const parameters = this.getCurrentLocationParameters();\n delete parameters[key];\n this.updateCurrentLocation(addQueryParametersToUrl(this.getCurrentLocation(), stringifyQueryParams(parameters)));\n this.updateCurrentZone(currentZone);\n }\n}\n//# sourceMappingURL=BrowserNavigator.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class ApplicationPlatform {\n applicationStore;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n }\n async initialize() {\n // do nothing\n }\n}\n//# sourceMappingURL=ApplicationPlatform.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BrowserNavigator } from '../navigation/BrowserNavigator.js';\nimport { ApplicationPlatform } from './ApplicationPlatform.js';\nimport { LEGEND_APPLICATION_PARAM_TOKEN } from '../../__lib__/LegendApplicationNavigation.js';\nexport class BrowserPlatform extends ApplicationPlatform {\n navigator;\n constructor(applicationStore, config) {\n super(applicationStore);\n this.navigator = new BrowserNavigator(config.historyAPI);\n }\n getNavigator() {\n return this.navigator;\n }\n async initialize() {\n // set initial color theme\n // NOTE: we allow this to avoid the flash of default color theme\n // when loading the page from another page/ when using the application in an iframe\n const initialColorTheme = this.applicationStore.navigationService.navigator.getCurrentLocationParameterValue(LEGEND_APPLICATION_PARAM_TOKEN.INITIAL_COLOR_THEME);\n if (initialColorTheme) {\n this.applicationStore.layoutService.setColorTheme(initialColorTheme);\n this.applicationStore.navigationService.navigator.INTERNAL__internalizeTransientParameter(LEGEND_APPLICATION_PARAM_TOKEN.INITIAL_COLOR_THEME);\n }\n }\n}\n//# sourceMappingURL=BrowserPlatform.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { createContext, useContext } from 'react';\nexport const ApplicationPlatformContext = createContext(undefined);\nexport const useApplicationPlatform = () => guaranteeNonNullable(useContext(ApplicationPlatformContext), `Can't find application platform in context`);\n//# sourceMappingURL=ApplicationPlatformProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {} from 'history';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { useHistory } from 'react-router';\nimport { BrowserRouter } from 'react-router-dom';\nimport { BrowserPlatform } from '../stores/platform/BrowserPlatform.js';\nimport { ApplicationPlatformContext } from './ApplicationPlatformProvider.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nconst BrowserPlatformProvider = ({ children }) => {\n const applicationStore = useApplicationStore();\n const historyAPI = useHistory(); // TODO: this is a temporary hack until we upgrade react-router\n const platform = useLocalObservable(() => new BrowserPlatform(applicationStore, { historyAPI }));\n return (_jsx(ApplicationPlatformContext.Provider, { value: platform, children: children }));\n};\nexport const BrowserEnvironmentProvider = ({ children, baseUrl }) => (_jsx(BrowserRouter, { basename: baseUrl, children: _jsx(BrowserPlatformProvider, { children: children }) }));\n//# sourceMappingURL=BrowserEnvironmentProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, } from '@finos/legend-shared';\nexport class REPLServerClient {\n networkClient;\n constructor(networkClient) {\n this.networkClient = networkClient;\n }\n get baseUrl() {\n return guaranteeNonNullable(this.networkClient.baseUrl, `REPL server client has not been configured properly`);\n }\n get dataCube() {\n return `${this.baseUrl}/api/dataCube`;\n }\n async getGridClientLicenseKey() {\n return this.networkClient.get(`${this.dataCube}/gridLicenseKey`);\n }\n async getQueryTypeahead(input) {\n return this.networkClient.post(`${this.dataCube}/typeahead`, input);\n }\n // TODO: @akphi - we might need to support batch, source information offset, etc.\n async parseQuery(input) {\n return this.networkClient.post(`${this.dataCube}/parseQuery`, input);\n }\n async getQueryCode(input) {\n return this.networkClient.post(`${this.dataCube}/getQueryCode`, input);\n }\n async getBaseQuery() {\n return this.networkClient.get(`${this.dataCube}/getBaseQuery`);\n }\n async getRelationReturnType(input) {\n return this.networkClient.post(`${this.dataCube}/getRelationReturnType`, input);\n }\n async executeQuery(input) {\n return this.networkClient.post(`${this.dataCube}/executeQuery`, input);\n }\n}\n//# sourceMappingURL=REPLServerClient.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { uuid } from '@finos/legend-shared';\nexport var DataCubeQuerySnapshotColumnOrigin;\n(function (DataCubeQuerySnapshotColumnOrigin) {\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"SOURCE\"] = 0] = \"SOURCE\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"LEAF_EXTENDED\"] = 1] = \"LEAF_EXTENDED\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"RENAME\"] = 2] = \"RENAME\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"GROUP_BY\"] = 3] = \"GROUP_BY\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"SELECT\"] = 4] = \"SELECT\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"PIVOT\"] = 5] = \"PIVOT\";\n DataCubeQuerySnapshotColumnOrigin[DataCubeQuerySnapshotColumnOrigin[\"GROUP_EXTENDED\"] = 6] = \"GROUP_EXTENDED\";\n})(DataCubeQuerySnapshotColumnOrigin || (DataCubeQuerySnapshotColumnOrigin = {}));\n// ------------------------------------- UTILITIES -------------------------------------\nexport function createSnapshot(name, runtime, sourceQuery, configuration) {\n return {\n uuid: uuid(),\n name,\n runtime,\n sourceQuery,\n configuration,\n originalColumns: [],\n leafExtendedColumns: [],\n filter: undefined,\n renamedColumns: [],\n groupByColumns: [],\n groupByExpandedKeys: [],\n groupByAggColumns: [],\n selectedColumns: [],\n pivotColumns: [],\n pivotAggColumns: [],\n castColumns: [],\n groupExtendedColumns: [],\n groupByFilter: undefined,\n sortColumns: [],\n limit: undefined,\n columns: [],\n };\n}\nexport function cloneSnapshot(snapshot) {\n const clone = JSON.parse(JSON.stringify(snapshot));\n clone.uuid = uuid();\n return clone;\n}\n//# sourceMappingURL=DataCubeQuerySnapshot.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hashArray, hashObject, hashValue } from '@finos/legend-shared';\nimport { SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX } from './MetaModelConst.js';\n/**\n * The main point of maintaining this enum is to keep lessen magic string in hash computation\n * so that we are less error-prone in the process of defining hash.\n *\n * These tokens will be used in the definition of the hash as marker for the type of the strucure\n * arguably some of these can be redundant since this information is encoded in the resulting hash\n * code anyway, but sometimes when polymorphism manifests, such as when we have an array of structure\n * which are subclasses of an abstract stucture, hashing the marker is sometimes the only way to\n * discern between instances of different sub-structures\n *\n * TODO: when we refactor hashing, we could potentially move this to graphManager/changeDetection/\n */\nexport var CORE_HASH_STRUCTURE;\n(function (CORE_HASH_STRUCTURE) {\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_ELEMENT\"] = \"INTERNAL__UNKNOWN_ELEMENT\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT\"] = \"INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR\"] = \"INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR\";\n CORE_HASH_STRUCTURE[\"PACKAGE\"] = \"PACKAGE\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_ELEMENT\"] = \"PACKAGEABLE_ELEMENT\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_ELEMENT_POINTER\"] = \"PACKAGEABLE_ELEMENT_POINTER\";\n // domain\n CORE_HASH_STRUCTURE[\"PROFILE\"] = \"PROFILE\";\n CORE_HASH_STRUCTURE[\"TAG_POINTER\"] = \"TAG_POINTER\";\n CORE_HASH_STRUCTURE[\"STEREOTYPE_POINTER\"] = \"STEREOTYPE_POINTER\";\n CORE_HASH_STRUCTURE[\"TAGGED_VALUE\"] = \"TAGGED_VALUE\";\n CORE_HASH_STRUCTURE[\"ENUMERATION\"] = \"ENUMERATION\";\n CORE_HASH_STRUCTURE[\"ENUM_VALUE\"] = \"ENUM_VALUE\";\n CORE_HASH_STRUCTURE[\"CLASS\"] = \"CLASS\";\n CORE_HASH_STRUCTURE[\"PROPERTY\"] = \"PROPERTY\";\n CORE_HASH_STRUCTURE[\"PROPERTY_DEFAULT_VALUE\"] = \"PROPERTY_DEFAULT_VALUE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_POINTER\"] = \"PROPERTY_POINTER\";\n CORE_HASH_STRUCTURE[\"MULTIPLICITY\"] = \"MULTIPLICITY\";\n CORE_HASH_STRUCTURE[\"CONSTRAINT\"] = \"CONSTRAINT\";\n CORE_HASH_STRUCTURE[\"DERIVED_PROPERTY\"] = \"DERIVED_PROPERTY\";\n CORE_HASH_STRUCTURE[\"ASSOCIATION\"] = \"ASSOCIATION\";\n CORE_HASH_STRUCTURE[\"FUNCTION\"] = \"FUNCTION\";\n CORE_HASH_STRUCTURE[\"MEASURE\"] = \"MEASURE\";\n CORE_HASH_STRUCTURE[\"UNIT\"] = \"UNIT\";\n // function test\n CORE_HASH_STRUCTURE[\"FUNCTION_TEST_SUITE\"] = \"FUNCTION_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"FUNCTION_TEST\"] = \"FUNCTION_TEST\";\n CORE_HASH_STRUCTURE[\"FUNCTION_STORE_TEST_DATA\"] = \"FUNCTION_STORE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"FUNCTION_PARAMETER_VALUE\"] = \"FUNCTION_PARAMETER_VALUE\";\n // testable\n CORE_HASH_STRUCTURE[\"ASSERT_FAIL\"] = \"ASSERT_FAIL\";\n CORE_HASH_STRUCTURE[\"ASSERT_PASS\"] = \"ASSERT_PASS\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_JSON_ASSERT_FAIL\"] = \"EQUAL_TO_JSON_ASSERT_FAIL\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO\"] = \"EQUAL_TO\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_JSON\"] = \"EQUAL_TO_JSON\";\n CORE_HASH_STRUCTURE[\"EQUAL_TO_TDS\"] = \"EQUAL_TO_TDS\";\n // section index\n CORE_HASH_STRUCTURE[\"SECTION_INDEX\"] = \"SECTION_INDEX\";\n CORE_HASH_STRUCTURE[\"SECTION\"] = \"SECTION\";\n CORE_HASH_STRUCTURE[\"IMPORT_AWARE_CODE_SECTION\"] = \"IMPORT_AWARE_CODE_SECTION\";\n CORE_HASH_STRUCTURE[\"DEFAULT_CODE_SECTION\"] = \"DEFAULT_CODE_SECTION\";\n // raw value specification\n CORE_HASH_STRUCTURE[\"RAW_LAMBDA\"] = \"RAW_LAMBDA\";\n CORE_HASH_STRUCTURE[\"RAW_VARIABLE\"] = \"RAW_VARIABLE\";\n CORE_HASH_STRUCTURE[\"RAW_INSTANCE_VALUE\"] = \"RAW_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"BINDING_TRANSFORMER\"] = \"BINDING_TRANSFORMER\";\n // value specification\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_VALUE_SPECIFICATION\"] = \"INTERNAL__UNKNOWN_VALUE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__PROPAGATED_VALUE\"] = \"INTERNAL__PROPAGATED_VALUE\";\n CORE_HASH_STRUCTURE[\"VARIABLE_EXPRESSION\"] = \"VARIABLE_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"EXPRESSION\"] = \"EXPRESSION\";\n CORE_HASH_STRUCTURE[\"FUNCTION_EXPRESSION\"] = \"FUNCTION_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"SIMPLE_FUNCTION_EXPRESSION\"] = \"SIMPLE_FUNCTION_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"ABSTRACT_PROPERTY_EXPRESSION\"] = \"ABSTRACT_PROPERTY_EXPRESSION\";\n CORE_HASH_STRUCTURE[\"INSTANCE_VALUE\"] = \"INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PRIMITIVE_INSTANCE_VALUE\"] = \"PRIMITIVE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ENUM_INSTANCE_VALUE\"] = \"ENUM_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"KEY_EXPRESSION_INSTANCE_VALUE\"] = \"KEY_EXPRESSION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"KEY_EXPRESSION_VALUE\"] = \"KEY_EXPRESSION_VALUE\";\n CORE_HASH_STRUCTURE[\"RUNTIME_INSTANCE_VALUE\"] = \"RUNTIME_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PAIR_INSTANCE_VALUE\"] = \"PAIR_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"MAPPING_INSTANCE_VALUE\"] = \"MAPPING_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PURE_LIST_INSTANCE_VALUE\"] = \"PURE_LIST_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"COLLECTION_INSTANCE_VALUE\"] = \"COLLECTION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"LAMBDA_FUNCTION_INSTANCE_VALUE\"] = \"LAMBDA_FUNCTION_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"FUNCTION_TYPE\"] = \"FUNCTION_TYPE\";\n CORE_HASH_STRUCTURE[\"LAMBDA_FUNCTION\"] = \"LAMBDA_FUNCTION\";\n CORE_HASH_STRUCTURE[\"ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE\"] = \"ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ALLOY_SERIALIZATION_CONFIG\"] = \"ALLOY_SERIALIZATION_CONFIG\";\n CORE_HASH_STRUCTURE[\"ROOT_GRAPH_FETCH_TREE\"] = \"ROOT_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_GRAPH_FETCH_TREE\"] = \"PROPERTY_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"SUBTYPE_GRAPH_FETCH_TREE\"] = \"SUBTYPE_GRAPH_FETCH_TREE\";\n CORE_HASH_STRUCTURE[\"SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"PROPERTY_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"PROEPRTY_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE\"] = \"ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE\";\n CORE_HASH_STRUCTURE[\"RELATION_COL_SPEC_ARRAY\"] = \"RELATION_COL_SPEC_ARRAY\";\n CORE_HASH_STRUCTURE[\"RELATION_COL_SPEC\"] = \"RELATION_COL_SPEC\";\n // ---------------------------------- DSL Mapping --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_STORE\"] = \"INTERNAL__UNKNOWN_STORE\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_CONNECTION\"] = \"INTERNAL__UNKNOWN_CONNECTION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_PROPERTY_MAPPING\"] = \"INTERNAL__UNKNOWN_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_CLASS_MAPPING\"] = \"INTERNAL__UNKNOWN_CLASS_MAPPING\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_MAPPING_INCLUDE\"] = \"INTERNAL__UNKNOWN_MAPPING_INCLUDE\";\n CORE_HASH_STRUCTURE[\"MAPPING\"] = \"MAPPING\";\n CORE_HASH_STRUCTURE[\"MAPPING_INCLUDE_MAPPING\"] = \"MAPPING_INCLUDE_MAPPING\";\n CORE_HASH_STRUCTURE[\"ASSOCIATION_IMPLEMENTATION\"] = \"ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_ASSOCIATION_IMPLEMENTATION\"] = \"RELATIONAL_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"XSTORE_ASSOCIATION_IMPLEMENTATION\"] = \"XSTORE_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"ENUMERATION_MAPPING\"] = \"ENUMERATION_MAPPING\";\n CORE_HASH_STRUCTURE[\"ENUM_VALUE_MAPPING\"] = \"ENUM_VALUE_MAPPING\";\n CORE_HASH_STRUCTURE[\"SET_IMPLEMENTATION\"] = \"SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"OPERATION_SET_IMPLEMENTATION\"] = \"OPERATION_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"PURE_INSTANCE_SET_IMPLEMENTATION\"] = \"PURE_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"PROPERTY_MAPPING\"] = \"PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"LOCAL_MAPPING_PROPERTY\"] = \"LOCAL_MAPPING_PROPERTY\";\n CORE_HASH_STRUCTURE[\"PURE_PROPERTY_MAPPING\"] = \"PURE_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"XSTORE_PROPERTY_MAPPING\"] = \"XSTORE_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_LEGACY\"] = \"MAPPING_TEST_LEGACY\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_SUITE\"] = \"MAPPING_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST\"] = \"MAPPING_TEST\";\n CORE_HASH_STRUCTURE[\"STORE_TEST_DATA\"] = \"STORE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"INPUT_DATA\"] = \"INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INPUT_DATA\"] = \"FLAT_DATA_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_INPUT_DATA\"] = \"RELATIONAL_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"OBJECT_INPUT_DATA\"] = \"OBJECT_INPUT_DATA\";\n CORE_HASH_STRUCTURE[\"MAPPING_TEST_ASSERT\"] = \"MAPPING_TEST_ASSERT\";\n CORE_HASH_STRUCTURE[\"EXPECTED_OUTPUT_MAPPING_TEST_ASSERT\"] = \"EXPECTED_OUTPUT_MAPPING_TEST_ASSERT\";\n CORE_HASH_STRUCTURE[\"FILTER_MAPPING\"] = \"FILTER_MAPPING\";\n CORE_HASH_STRUCTURE[\"COLUMN_MAPPING\"] = \"COLUMN_MAPPING\";\n CORE_HASH_STRUCTURE[\"GROUP_BY_MAPPING\"] = \"GROUP_BY_MAPPING\";\n // runtime\n CORE_HASH_STRUCTURE[\"RUNTIME\"] = \"RUNTIME\";\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_RUNTIME\"] = \"PACKAGEABLE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"ENGINE_RUNTIME\"] = \"ENGINE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"SINGLE_ENGINE_RUNTIME\"] = \"SINGLE_ENGINE_RUNTIME\";\n CORE_HASH_STRUCTURE[\"LEGACY_RUNTIME\"] = \"LEGACY_RUNTIME\";\n CORE_HASH_STRUCTURE[\"RUNTIME_POINTER\"] = \"RUNTIME_POINTER\";\n CORE_HASH_STRUCTURE[\"STORE_CONNECTIONS\"] = \"STORE_CONNECTIONS\";\n CORE_HASH_STRUCTURE[\"IDENTIFIED_CONNECTION\"] = \"IDENTIFIED_CONNECTION\";\n // connection\n CORE_HASH_STRUCTURE[\"PACKAGEABLE_CONNECTION\"] = \"PACKAGEABLE_CONNECTION\";\n CORE_HASH_STRUCTURE[\"CONNECTION_POINTER\"] = \"CONNECTION_POINTER\";\n CORE_HASH_STRUCTURE[\"XML_MODEL_CONNECTION\"] = \"XML_MODEL_CONNECTION\";\n CORE_HASH_STRUCTURE[\"JSON_MODEL_CONNECTION\"] = \"JSON_MODEL_CONNECTION\";\n CORE_HASH_STRUCTURE[\"MODEL_CHAIN_CONNECTION\"] = \"MODEL_CHAIN_CONNECTION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_CONNECTION\"] = \"FLAT_DATA_CONNECTION\";\n // aggregation aware mapping\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_MAPPING\"] = \"AGGREGATION_AWARE_MAPPING\";\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_SPECIFICATION\"] = \"AGGREGATION_AWARE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER\"] = \"AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER\";\n CORE_HASH_STRUCTURE[\"AGGREGATE_FUNCTION\"] = \"AGGREGATE_FUNCTION\";\n CORE_HASH_STRUCTURE[\"GROUP_BY_FUNCTION\"] = \"GROUP_BY_FUNCTION\";\n // ---------------------------------- DSL Generation --------------------------------------\n CORE_HASH_STRUCTURE[\"GENERATION_TREE\"] = \"GENERATION_TREE\";\n CORE_HASH_STRUCTURE[\"GENERATION_TREE_NODE\"] = \"GENERATION_TREE_NODE\";\n CORE_HASH_STRUCTURE[\"FILE_GENERATION\"] = \"FILE_GENERATION\";\n CORE_HASH_STRUCTURE[\"CONFIGURATION_PROPERTY\"] = \"CONFIGURATION_PROPERTY\";\n // ---------------------------------- DSL Data --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_EMBEDDED_DATA\"] = \"INTERNAL__UNKNOWN_EMBEDDED_DATA\";\n CORE_HASH_STRUCTURE[\"EXTERNAL_FORMAT_DATA\"] = \"EXTERNAL_FORMAT_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_STORE_DATA\"] = \"MODEL_STORE_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_DATA\"] = \"MODEL_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_EMBEDDED_DATA\"] = \"MODEL_EMBEDDED_DATA\";\n CORE_HASH_STRUCTURE[\"MODEL_INSTANCE_DATA\"] = \"MODEL_INSTANCE_DATA\";\n CORE_HASH_STRUCTURE[\"DATA_ELEMENT_REFERENCE\"] = \"DATA_ELEMENT_REFERENCE\";\n CORE_HASH_STRUCTURE[\"DATA_ELEMENT\"] = \"DATA_ELEMENT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_CSV_DATA\"] = \"RELATIONAL_CSV_DATA\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_TDS\"] = \"RELATIONAL_TDS\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_CSV_DATA_TABLE\"] = \"RELATIONAL_CSV_DATA_TABLE\";\n // ---------------------------------- DSL External Format --------------------------------------\n CORE_HASH_STRUCTURE[\"BINDING\"] = \"BINDING\";\n CORE_HASH_STRUCTURE[\"SCHEMA_SET\"] = \"SCHEMA_SET\";\n CORE_HASH_STRUCTURE[\"SCHEMA\"] = \"SCHEMA\";\n CORE_HASH_STRUCTURE[\"MODEL_UNIT\"] = \"MODEL_UNIT\";\n CORE_HASH_STRUCTURE[\"URL_STREAM\"] = \"URL_STREAM\";\n CORE_HASH_STRUCTURE[\"EXTERNAL_FORMAT_CONNECTION\"] = \"EXTERNAL_FORMAT_CONNECTION\";\n // ---------------------------------- DSL Service --------------------------------------\n CORE_HASH_STRUCTURE[\"SERVICE\"] = \"SERVICE\";\n CORE_HASH_STRUCTURE[\"SERVICE_OWNER\"] = \"SERVICE_OWNER\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_EXECUTION\"] = \"SERVICE_PURE_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_SINGLE_EXECUTION\"] = \"SERVICE_PURE_SINGLE_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_KEYED_EXECUTION_PARAMETER\"] = \"SERVICE_KEYED_EXECUTION_PARAMETER\";\n CORE_HASH_STRUCTURE[\"SERVICE_PURE_MULTI_EXECUTION\"] = \"SERVICE_PURE_MULTI_EXECUTION\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_CONTAINER\"] = \"SERVICE_TEST_CONTAINER\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_SINGLE_EXECUTION_TEST\"] = \"SERVICE_LEGACY_SINGLE_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST\"] = \"SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_LEGACY_MULTI_EXECUTION_TEST\"] = \"SERVICE_LEGACY_MULTI_EXECUTION_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_CONNECTION_TEST_DATA\"] = \"SERVICE_CONNECTION_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_DATA\"] = \"SERVICE_TEST_DATA\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST_SUITE\"] = \"SERVICE_TEST_SUITE\";\n CORE_HASH_STRUCTURE[\"SERVICE_TEST\"] = \"SERVICE_TEST\";\n CORE_HASH_STRUCTURE[\"SERVICE_PARAMETER_VALUE\"] = \"SERVICE_PARAMETER_VALUE\";\n CORE_HASH_STRUCTURE[\"SERVICE_POST_VALIDATION\"] = \"SERVICE_POST_VALIDATION\";\n CORE_HASH_STRUCTURE[\"SERVICE_POST_VALIDATION_ASSERTION\"] = \"SERVICE_POST_VALIDATION_ASSERTION\";\n // execution environment instance\n CORE_HASH_STRUCTURE[\"EXECUTION_ENVIRONMENT_INSTANCE\"] = \"EXECUTION_ENVIRONMENT_INSTANCE\";\n CORE_HASH_STRUCTURE[\"SINGLE_EXECUTION_PARAMETER\"] = \"SINGLE_EXECUTION_PARAMETER\";\n CORE_HASH_STRUCTURE[\"MULTI_EXECUTION_PARAMETER\"] = \"MULTI_EXECUTION_PARAMETER\";\n // ---------------------------------- STO Relational --------------------------------------\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION\"] = \"INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY\"] = \"INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"INTERNAL__UNKNOWN_POST_PROCESSOR\"] = \"INTERNAL__UNKNOWN_POST_PROCESSOR\";\n // database\n CORE_HASH_STRUCTURE[\"DATABASE\"] = \"DATABASE\";\n CORE_HASH_STRUCTURE[\"DATABASE_SCHEMA\"] = \"DATABASE_SCHEMA\";\n CORE_HASH_STRUCTURE[\"DATABASE_JOIN\"] = \"DATABASE_JOIN\";\n CORE_HASH_STRUCTURE[\"DATABASE_FILTER\"] = \"DATABASE_FILTER\";\n CORE_HASH_STRUCTURE[\"DATBASE_VIEW\"] = \"DATBASE_VIEW\";\n CORE_HASH_STRUCTURE[\"DATABASE_SCHEMA_TABLE\"] = \"DATABASE_SCHEMA_TABLE\";\n CORE_HASH_STRUCTURE[\"DATABASE_TABLE_COLUMN\"] = \"DATABASE_TABLE_COLUMN\";\n // relational operation element\n CORE_HASH_STRUCTURE[\"RELATIONAL\"] = \"RELATIONAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_DYNA_FUNC\"] = \"RELATIONAL_OPERATION_DYNA_FUNC\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS\"] = \"RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_LITERAL\"] = \"RELATIONAL_OPERATION_LITERAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_LITERAL_LIST\"] = \"RELATIONAL_OPERATION_LITERAL_LIST\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN\"] = \"RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_TABLE_POINTER\"] = \"RELATIONAL_OPERATION_TABLE_POINTER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_OPERATION_JOIN_POINTER\"] = \"RELATIONAL_OPERATION_JOIN_POINTER\";\n // relational data type\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_VARCHAR\"] = \"RELATIONAL_DATATYPE_VARCHAR\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_CHAR\"] = \"RELATIONAL_DATATYPE_CHAR\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_VARBINARY\"] = \"RELATIONAL_DATATYPE_VARBINARY\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BINARY\"] = \"RELATIONAL_DATATYPE_BINARY\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BIT\"] = \"RELATIONAL_DATATYPE_BIT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_INTEGER\"] = \"RELATIONAL_DATATYPE_INTEGER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_BIGINT\"] = \"RELATIONAL_DATATYPE_BIGINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_SMALLINT\"] = \"RELATIONAL_DATATYPE_SMALLINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_TINYINT\"] = \"RELATIONAL_DATATYPE_TINYINT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_NUMERIC\"] = \"RELATIONAL_DATATYPE_NUMERIC\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DECIMAL\"] = \"RELATIONAL_DATATYPE_DECIMAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DOUBLE\"] = \"RELATIONAL_DATATYPE_DOUBLE\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_FLOAT\"] = \"RELATIONAL_DATATYPE_FLOAT\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_REAL\"] = \"RELATIONAL_DATATYPE_REAL\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_DATE\"] = \"RELATIONAL_DATATYPE_DATE\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_TIMESTAMP\"] = \"RELATIONAL_DATATYPE_TIMESTAMP\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_OTHER\"] = \"RELATIONAL_DATATYPE_OTHER\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_SEMISTRUCTURED\"] = \"RELATIONAL_DATATYPE_SEMISTRUCTURED\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATATYPE_JSON\"] = \"RELATIONAL_DATATYPE_JSON\";\n // relational mapping\n CORE_HASH_STRUCTURE[\"ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION\"] = \"ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"RELATIONAL_INSTANCE_SET_IMPLEMENTATION\"] = \"RELATIONAL_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"REALTIONAL_PROPERTY_MAPPING\"] = \"REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\"] = \"OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING\";\n // milestoning\n CORE_HASH_STRUCTURE[\"BUSINESS_MILESTONING\"] = \"BUSINESS_MILESTONING\";\n CORE_HASH_STRUCTURE[\"BUSINESS_SNAPSHOT_MILESTONING\"] = \"BUSINESS_SNAPSHOT_MILESTONING\";\n CORE_HASH_STRUCTURE[\"PROCESSING_MILESTONING\"] = \"PROCESSING_MILESTONING\";\n // relational database connection\n CORE_HASH_STRUCTURE[\"RELATIONAL_DATABASE_CONNECTION\"] = \"RELATIONAL_DATABASE_CONNECTION\";\n // relational database connection datasource specification\n CORE_HASH_STRUCTURE[\"STATIC_DATASOURCE_SPECIFICATION\"] = \"STATIC_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"LOCAL_H2_DATASOURCE_SPECIFICATION\"] = \"LOCAL_H2_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_H2_DATASOURCE_SPECIFICATION\"] = \"EMBEDDED_H2_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_DATASOURCE_SPECIFICATION\"] = \"SNOWFLAKE_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"REDSHIFT_DATASOURCE_SPECIFICATION\"] = \"REDSHIFT_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"BIGQUERY_DATASOURCE_SPECIFICATION\"] = \"BIGQUERY_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"DATABRICKS_DATASOURCE_SPECIFICATION\"] = \"DATABRICKS_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"SPANNER_DATASOURCE_SPECIFICATION\"] = \"SPANNER_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"TRINO_DATASOURCE_SPECIFICATION\"] = \"TRINO_DATASOURCE_SPECIFICATION\";\n CORE_HASH_STRUCTURE[\"TRINO_SSL_SPECIFICATION\"] = \"TRINO_SSL_SPECIFICATION\";\n // relational database connection authentication strategy\n CORE_HASH_STRUCTURE[\"DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY\"] = \"DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"DEFAULT_H2_AUTHENTICATION_STRATEGY\"] = \"DEFAULT_H2_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY\"] = \"SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"API_TOKEN_AUTHENTICATION_STRATEGY\"] = \"API_TOKEN_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY\"] = \"GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\"] = \"USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"OAUTH_AUTHENTICATION_STRATEGY\"] = \"OAUTH_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY\"] = \"GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\"] = \"MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY\";\n CORE_HASH_STRUCTURE[\"TRINO_DELEGATED_KERBEROS_AUTHENTICATION_STRATEGY\"] = \"TRINO_KEREBEROS_AUTHENTICATION_STRATEGY\";\n // relational database connection post-processors\n CORE_HASH_STRUCTURE[\"MAPPER_POST_PROCESSOR\"] = \"MAPPER_POST_PROCESSOR\";\n CORE_HASH_STRUCTURE[\"SCHEMA_MAPPER\"] = \"SCHEMA_MAPPER\";\n CORE_HASH_STRUCTURE[\"TABLE_MAPPER\"] = \"TABLE_MAPPER\";\n // ---------------------------------- STO Flat-Data --------------------------------------\n CORE_HASH_STRUCTURE[\"FLAT_DATA\"] = \"FLAT_DATA\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_SECTION\"] = \"FLAT_DATA_SECTION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_PROPERTY\"] = \"FLAT_DATA_PROPERTY\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ROOT_RECORD_TYPE\"] = \"FLAT_DATA_ROOT_RECORD_TYPE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_RECORD_TYPE\"] = \"FLAT_DATA_RECORD_TYPE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_RECORD_FIELD\"] = \"FLAT_DATA_RECORD_FIELD\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_STRING\"] = \"FLAT_DATA_STRING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_BOOLEAN\"] = \"FLAT_DATA_BOOLEAN\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_NUMBER\"] = \"FLAT_DATA_NUMBER\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INTEGER\"] = \"FLAT_DATA_INTEGER\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_FLOAT\"] = \"FLAT_DATA_FLOAT\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DECIMAL\"] = \"FLAT_DATA_DECIMAL\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DATE\"] = \"FLAT_DATA_DATE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_DATE_TIME\"] = \"FLAT_DATA_DATE_TIME\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_STRICT_DATE\"] = \"FLAT_DATA_STRICT_DATE\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_INSTANCE_SET_IMPLEMENTATION\"] = \"FLAT_DATA_INSTANCE_SET_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_PROPERTY_MAPPING\"] = \"FLAT_DATA_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ASSOCIATION_IMPLEMENTATION\"] = \"FLAT_DATA_ASSOCIATION_IMPLEMENTATION\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING\"] = \"FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"EMBEDDED_FLAT_DATA_PROPERTY_MAPPING\"] = \"EMBEDDED_FLAT_DATA_PROPERTY_MAPPING\";\n CORE_HASH_STRUCTURE[\"FLAT_DATA_SECTION_POINTER\"] = \"FLAT_DATA_SECTION_POINTER\";\n // -------------------------------------- Function Activator --------------------------------------\n CORE_HASH_STRUCTURE[\"SNOWFLAKE_APP\"] = \"SNOWFLAKE_APP\";\n CORE_HASH_STRUCTURE[\"HOSTED_SERVICE\"] = \"HOSTED_SERVICE\";\n CORE_HASH_STRUCTURE[\"HOSTED_SERVICE_OWNER\"] = \"HOSTED_SERVICE_OWNER\";\n})(CORE_HASH_STRUCTURE || (CORE_HASH_STRUCTURE = {}));\nexport const hashObjectWithoutSourceInformation = (val) => hashObject(val, {\n /**\n * NOTE: this is over-simplification as there could be source information fields with other names\n * see note in {@link pruneSourceInformation}\n */\n excludeKeys: (propKey) => propKey\n .toLowerCase()\n .endsWith(SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX.toLowerCase()),\n});\nexport const hashRawLambda = (parameters, body) => hashArray([\n parameters ? hashObjectWithoutSourceInformation(parameters) : '',\n body ? hashObjectWithoutSourceInformation(body) : '',\n]);\nexport const hashElementPointer = (pointerType, path) => [CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT_POINTER, pointerType ?? '', path]\n .map(hashValue)\n .join(',');\n//# sourceMappingURL=Core_HashUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport hash from 'hash.js';\nimport { default as objectHash, } from 'object-hash';\nimport { assertTrue, isObject, isBoolean, isNumber, isString, isNonNullable, } from '../error/AssertionUtils.js';\nexport const hashValue = (val) => hash.sha1().update(val).digest('hex');\nexport const hashUnknownValue = (val) => {\n assertTrue(isString(val) || isBoolean(val) || isNumber(val), `Can't hash non-primitive value`);\n return hashValue(val);\n};\nexport const hashArray = (arr) => hashValue(arr\n .filter(isNonNullable)\n .map((val) => typeof val === 'string' ||\n typeof val === 'boolean' ||\n typeof val === 'number'\n ? hashValue(val)\n : val.hashCode)\n .join(','));\n/**\n * NOTE: `node-object-hash` seems to be the much more efficient library. But it's based on Node's `crypto` module\n * which is not supported in browser (so we have map `crypto` module to `crypto-browserify` or `crypto-js`).\n * If this object-hashing becomes the performance bottle-neck, we should think about adopting this hashing library\n * See https://www.npmjs.com/package/node-object-hash\n */\nexport const hashObject = (value, options) => {\n assertTrue(isObject(value), `Can't hash non-object value`);\n return objectHash(value, options);\n};\n/**\n * This method can be used to debug hashing.\n *\n * We have tried to come up with a more robust way to debug hash, such as to construct the hash tree, but that's not\n * quite feasible for the following reasons:\n * 1. Since sometimes there are properties we don't drill down like for a class, we just take the path, we don't have\n * a systematic way to construct the hash tree, so we have to rely on the implementation of the hashCode function\n * in each element, which defeats the purpose of having a generic approach for debugging hash\n * 2. If we ignore the implementation detail of `get hashCode` and expand the property if it has `hashCode` then we\n * might risk getting into an infinite loop\n * 3. The manual way to come up with the `get hashCode` is in order to reconcile the differences between metamodels and\n * protocol models. If we only compare metamodels to protocol models for example, the problem might be less complicated,\n * but we're dealing with 2 hash systems (in a way)\n * 4. As such, the best solution at the moment is to come up with a function like this\n * to debug hash where we can put it at a top level structure like `Mapping` and then choose which part of the hash\n * we would like to `explore`\n *\n * @param typesToExpand when we trickle down the object properties, we want to drill down so we want to choose\n * the property to drill down (by its type) since sometimes we don't need to compute the\n * actual hash code for the property (for example: a class, or an enumeration) while computing\n * the hash, just their path.\n */\nexport const debugHash = (obj, typesToExpand, depth = 0) => {\n let res = depth !== 0 ? `${obj.hashCode}` : '';\n res += ` {\\n`;\n Object.entries(obj)\n .filter(([key, value]) => typeof value === 'object' &&\n (!Array.isArray(value) ||\n (value.length !== 0 &&\n value.every((v) => typesToExpand.some((typeToExpand) => v instanceof typeToExpand)))) &&\n (Array.isArray(value) ||\n typesToExpand.some((typeToExpand) => value instanceof typeToExpand)))\n .forEach(([key, value]) => {\n res += `${' '.repeat(depth + 1)}${key}: ${Array.isArray(value)\n ? !value.length\n ? '[]'\n : `[\\n${' '.repeat(depth + 2)}${value\n .map((val, idx) => `${idx}: ${debugHash(val, typesToExpand, depth + 2)}`)\n .join(`\\n${' '.repeat(depth + 2)}`)}\\n${' '.repeat(depth + 1)}]`\n : debugHash(value, typesToExpand, depth + 1)}\\n`;\n });\n res += `${' '.repeat(depth)}}`;\n return res;\n};\n//# sourceMappingURL=HashUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nexport class V1_Multiplicity {\n lowerBound = 0;\n upperBound;\n constructor(lowerBound, upperBound) {\n this.lowerBound = lowerBound;\n this.upperBound = upperBound;\n }\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.MULTIPLICITY,\n this.lowerBound.toString(),\n this.upperBound?.toString() ?? '',\n ]);\n }\n // common multiplicities\n static ZERO = new V1_Multiplicity(0, 0);\n static ZERO_ONE = new V1_Multiplicity(0, 1);\n static ZERO_MANY = new V1_Multiplicity(0, undefined);\n static ONE = new V1_Multiplicity(1, 1);\n static ONE_MANY = new V1_Multiplicity(1, undefined);\n}\n//# sourceMappingURL=V1_Multiplicity.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ValueSpecification {\n}\n//# sourceMappingURL=V1_ValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification, } from '../V1_ValueSpecification.js';\n/**\n * This is the mechanism by which we scale the system. Pretty much any constructs like\n * graph-fetch, path, etc, which have the need to store some data and manifest in value\n * specification space can be wrapped in form of a class instance. Here, we also keep\n * track of the type in order to interpret the value for processing.\n */\nexport class V1_ClassInstance extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n type;\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_ClassInstance(this);\n }\n}\n//# sourceMappingURL=V1_ClassInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../model/valueSpecification/V1_ValueSpecification.js';\nexport class V1_Variable extends V1_ValueSpecification {\n name;\n multiplicity;\n class;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Variable(this);\n }\n}\n//# sourceMappingURL=V1_Variable.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_GraphFetchTree {\n subTrees = [];\n subTypeTrees = [];\n}\n//# sourceMappingURL=V1_GraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_RootGraphFetchTree extends V1_GraphFetchTree {\n class;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_RootGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_RootGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\n/**\n * Similar to class instances, but these constructs are too fundamental for the system\n * so we group them as **core** class instances.\n */\nexport class V1_CoreClassInstance extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_CoreClassInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CoreClassInstance } from './V1_CoreClassInstance.js';\nexport class V1_Lambda extends V1_CoreClassInstance {\n body = [];\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Lambda(this);\n }\n}\n//# sourceMappingURL=V1_Lambda.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\nexport class V1_DataTypeValueSpecification extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_DataTypeValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_Path {\n name;\n startType;\n path = [];\n}\n//# sourceMappingURL=V1_Path.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ValueSpecification } from '../V1_ValueSpecification.js';\nexport class V1_AbstractAppliedFunction extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n}\n//# sourceMappingURL=V1_AbstractAppliedFunction.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AbstractAppliedFunction } from '../raw/V1_AbstractAppliedFunction.js';\nexport class V1_AppliedFunction extends V1_AbstractAppliedFunction {\n function;\n fControl;\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_AppliedFunction(this);\n }\n}\n//# sourceMappingURL=V1_AppliedFunction.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../../model/valueSpecification/V1_ValueSpecification.js';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nexport class V1_Collection extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE_MANY;\n values = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_Collection(this);\n }\n}\n//# sourceMappingURL=V1_Collection.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_DataTypeValueSpecification } from './V1_DataTypeValueSpecification.js';\nexport class V1_PrimitiveValueSpecification extends V1_DataTypeValueSpecification {\n}\n//# sourceMappingURL=V1_PrimitiveValueSpecification.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CDecimal extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CDecimal(this);\n }\n}\n//# sourceMappingURL=V1_CDecimal.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CInteger extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CInteger(this);\n }\n}\n//# sourceMappingURL=V1_CInteger.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CString extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CString(this);\n }\n}\n//# sourceMappingURL=V1_CString.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CFloat extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CFloat(this);\n }\n}\n//# sourceMappingURL=V1_CFloat.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CDate extends V1_PrimitiveValueSpecification {\n}\n//# sourceMappingURL=V1_CDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CDateTime extends V1_CDate {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CDateTime(this);\n }\n}\n//# sourceMappingURL=V1_CDateTime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CStrictDate extends V1_CDate {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CStrictDate(this);\n }\n}\n//# sourceMappingURL=V1_CStrictDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CStrictTime extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CStrictTime(this);\n }\n}\n//# sourceMappingURL=V1_CStrictTime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CBoolean extends V1_PrimitiveValueSpecification {\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CBoolean(this);\n }\n}\n//# sourceMappingURL=V1_CBoolean.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_AggregateValue {\n mapFn;\n aggregateFn;\n}\n//# sourceMappingURL=V1_AggregateValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_Pair {\n first;\n second;\n}\n//# sourceMappingURL=V1_Pair.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_RuntimeInstance {\n runtime;\n}\n//# sourceMappingURL=V1_RuntimeInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ExecutionContextInstance {\n executionContext;\n}\n//# sourceMappingURL=V1_ExecutionContextInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_PropertyGraphFetchTree extends V1_GraphFetchTree {\n property;\n parameters = [];\n alias;\n subType;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_PropertyGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_PropertyGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_GraphFetchTree, } from './V1_GraphFetchTree.js';\nexport class V1_SubTypeGraphFetchTree extends V1_GraphFetchTree {\n subTypeClass;\n accept_GraphFetchTreeVisitor(visitor) {\n return visitor.visit_SubTypeGraphFetchTree(this);\n }\n}\n//# sourceMappingURL=V1_SubTypeGraphFetchTree.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_SerializationConfig {\n includeType;\n typeKeyName;\n includeEnumType;\n removePropertiesWithNullValues;\n removePropertiesWithEmptySets;\n fullyQualifiedTypePath;\n includeObjectReference;\n}\n//# sourceMappingURL=V1_SerializationConfig.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CoreClassInstance } from './V1_CoreClassInstance.js';\nexport class V1_KeyExpression extends V1_CoreClassInstance {\n add;\n expression;\n key;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_KeyExpression(this);\n }\n}\n//# sourceMappingURL=V1_KeyExpression.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_PureList {\n values = [];\n}\n//# sourceMappingURL=V1_PureList.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSAggregateValue {\n name;\n pmapFn;\n aggregateFn;\n}\n//# sourceMappingURL=V1_TDSAggregateValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSColumnInformation {\n name;\n columnFn;\n}\n//# sourceMappingURL=V1_TDSColumnInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSSortInformation {\n column;\n direction;\n}\n//# sourceMappingURL=V1_TDSSortInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSOlapRank {\n function;\n}\n//# sourceMappingURL=V1_TDSOlapRank.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_TDSOlapAggregation {\n function;\n columnName;\n}\n//# sourceMappingURL=V1_TDSOlapAggregation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ColSpecArray {\n colSpecs = [];\n}\n//# sourceMappingURL=V1_ColSpecArray.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ColSpec {\n name;\n type;\n function1;\n function2;\n}\n//# sourceMappingURL=V1_ColSpec.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_RelationStoreAccessor {\n path = [];\n}\n//# sourceMappingURL=V1_RelationStoreAccessor.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const MULTIPLICITY_INFINITE = '*';\nexport const ELEMENT_PATH_DELIMITER = '::';\nexport const MULTIPLICITY_RANGE_OPERATOR = '..';\nexport const PROPERTY_ACCESSOR = '.';\nexport const UNIT_PATH_DELIMITER = '~';\nexport const LAMBDA_PIPE = '|';\nexport const DEFAULT_SOURCE_PARAMETER_NAME = 'src';\nexport const DEFAULT_DATABASE_SCHEMA_NAME = 'default';\nexport const SECTION_INDEX_ELEMENT_PATH = '__internal__::SectionIndex';\nexport const VARIABLE_REFERENCE_TOKEN = '$';\nexport const TYPE_CAST_TOKEN = '@';\nexport const ARROW_FUNCTION_TOKEN = '->';\nexport const LATEST_DATE = '%latest';\nexport const PARSER_SECTION_MARKER = '###';\nexport const FUNCTION_SIGNATURE_MULTIPLICITY_INFINITE_TOKEN = 'MANY';\nexport const DIRECTORY_PATH_DELIMITER = '/';\nexport const SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX = 'sourceInformation';\nexport const RESERVERD_PACKAGE_NAMES = ['$implicit'];\nexport var ROOT_PACKAGE_NAME;\n(function (ROOT_PACKAGE_NAME) {\n ROOT_PACKAGE_NAME[\"CORE\"] = \"CORE\";\n ROOT_PACKAGE_NAME[\"MAIN\"] = \"ROOT\";\n ROOT_PACKAGE_NAME[\"MODEL_GENERATION\"] = \"MODEL_GENERATION_ROOT\";\n ROOT_PACKAGE_NAME[\"SYSTEM\"] = \"SYSTEM_ROOT\";\n ROOT_PACKAGE_NAME[\"PROJECT_DEPENDENCY_ROOT\"] = \"PROJECT_DEPENDENCY_ROOT\";\n})(ROOT_PACKAGE_NAME || (ROOT_PACKAGE_NAME = {}));\nexport var PRIMITIVE_TYPE;\n(function (PRIMITIVE_TYPE) {\n PRIMITIVE_TYPE[\"STRING\"] = \"String\";\n PRIMITIVE_TYPE[\"BOOLEAN\"] = \"Boolean\";\n PRIMITIVE_TYPE[\"BINARY\"] = \"Binary\";\n PRIMITIVE_TYPE[\"NUMBER\"] = \"Number\";\n PRIMITIVE_TYPE[\"INTEGER\"] = \"Integer\";\n PRIMITIVE_TYPE[\"FLOAT\"] = \"Float\";\n PRIMITIVE_TYPE[\"DECIMAL\"] = \"Decimal\";\n PRIMITIVE_TYPE[\"DATE\"] = \"Date\";\n PRIMITIVE_TYPE[\"STRICTDATE\"] = \"StrictDate\";\n PRIMITIVE_TYPE[\"DATETIME\"] = \"DateTime\";\n PRIMITIVE_TYPE[\"STRICTTIME\"] = \"StrictTime\";\n // NOTE: `LatestDate` is a special type that is used for milestoning in store so its used in the body of function and lamdba but never should be exposed to users\n // as such, if there is a day we want to have `LatestDate` in the graph but not exposed to the users\n PRIMITIVE_TYPE[\"LATESTDATE\"] = \"LatestDate\";\n PRIMITIVE_TYPE[\"BYTE\"] = \"Byte\";\n})(PRIMITIVE_TYPE || (PRIMITIVE_TYPE = {}));\nexport var ATOMIC_TEST_TYPE;\n(function (ATOMIC_TEST_TYPE) {\n ATOMIC_TEST_TYPE[\"Service_Test\"] = \"serviceTest\";\n ATOMIC_TEST_TYPE[\"Mapping_Test\"] = \"mappingTest\";\n ATOMIC_TEST_TYPE[\"Function_Test\"] = \"functionTest\";\n})(ATOMIC_TEST_TYPE || (ATOMIC_TEST_TYPE = {}));\n// NOTE: the list of auto-import are kept in `m3.pure` file in `finos/legend-pure`,\n// this includes a more extensive list of packges which contain native functions, classes, etc.\n// See https://github.com/finos/legend-pure/blob/master/legend-pure-m3-core/src/main/resources/platform/pure/m3.pure\nexport const AUTO_IMPORTS = [\n // 'meta::pure::metamodel',\n 'meta::pure::metamodel::type',\n // 'meta::pure::metamodel::type::generics',\n // 'meta::pure::metamodel::relationship',\n // 'meta::pure::metamodel::valuespecification',\n // 'meta::pure::metamodel::multiplicity',\n // 'meta::pure::metamodel::function',\n // 'meta::pure::metamodel::function::property',\n // 'meta::pure::metamodel::extension',\n // 'meta::pure::metamodel::import',\n 'meta::pure::functions::date',\n // 'meta::pure::functions::string',\n // 'meta::pure::functions::collection',\n // 'meta::pure::functions::meta',\n // 'meta::pure::functions::constraints',\n // 'meta::pure::functions::lang',\n // 'meta::pure::functions::boolean',\n // 'meta::pure::functions::tools',\n // 'meta::pure::functions::io',\n // 'meta::pure::functions::math',\n // 'meta::pure::functions::asserts',\n // 'meta::pure::functions::test',\n // 'meta::pure::functions::multiplicity',\n // 'meta::pure::router',\n // 'meta::pure::service',\n // 'meta::pure::tds',\n // 'meta::pure::tools',\n 'meta::pure::profiles',\n];\nexport var CORE_PURE_PATH;\n(function (CORE_PURE_PATH) {\n // type\n CORE_PURE_PATH[\"ANY\"] = \"meta::pure::metamodel::type::Any\";\n CORE_PURE_PATH[\"NIL\"] = \"meta::pure::metamodel::type::Nil\";\n // profile\n CORE_PURE_PATH[\"PROFILE_DOC\"] = \"meta::pure::profiles::doc\";\n CORE_PURE_PATH[\"PROFILE_TEMPORAL\"] = \"meta::pure::profiles::temporal\";\n // classifier paths\n CORE_PURE_PATH[\"PROFILE\"] = \"meta::pure::metamodel::extension::Profile\";\n CORE_PURE_PATH[\"ENUMERATION\"] = \"meta::pure::metamodel::type::Enumeration\";\n CORE_PURE_PATH[\"MEASURE\"] = \"meta::pure::metamodel::type::Measure\";\n CORE_PURE_PATH[\"CLASS\"] = \"meta::pure::metamodel::type::Class\";\n CORE_PURE_PATH[\"ASSOCIATION\"] = \"meta::pure::metamodel::relationship::Association\";\n CORE_PURE_PATH[\"FUNCTION\"] = \"meta::pure::metamodel::function::ConcreteFunctionDefinition\";\n CORE_PURE_PATH[\"FLAT_DATA\"] = \"meta::flatData::metamodel::FlatData\";\n CORE_PURE_PATH[\"DATABASE\"] = \"meta::relational::metamodel::Database\";\n CORE_PURE_PATH[\"MAPPING\"] = \"meta::pure::mapping::Mapping\";\n CORE_PURE_PATH[\"SERVICE\"] = \"meta::legend::service::metamodel::Service\";\n CORE_PURE_PATH[\"CONNECTION\"] = \"meta::pure::runtime::PackageableConnection\";\n CORE_PURE_PATH[\"RUNTIME\"] = \"meta::pure::runtime::PackageableRuntime\";\n CORE_PURE_PATH[\"EXECUTION_ENVIRONMENT\"] = \"meta::legend::service::metamodel::ExecutionEnvironmentInstance\";\n CORE_PURE_PATH[\"FILE_GENERATION\"] = \"meta::pure::generation::metamodel::GenerationConfiguration\";\n CORE_PURE_PATH[\"GENERATION_SPECIFICATION\"] = \"meta::pure::generation::metamodel::GenerationSpecification\";\n CORE_PURE_PATH[\"SECTION_INDEX\"] = \"meta::pure::metamodel::section::SectionIndex\";\n CORE_PURE_PATH[\"DATA_ELEMENT\"] = \"meta::pure::data::DataElement\";\n CORE_PURE_PATH[\"SNOWFLAKE_APP\"] = \"meta::external::function::activator::snowflakeApp::SnowflakeApp\";\n CORE_PURE_PATH[\"HOSTED_SERVICE\"] = \"meta::external::function::activator::hostedService::HostedService\";\n})(CORE_PURE_PATH || (CORE_PURE_PATH = {}));\nexport const PURE_DOC_TAG = 'doc';\nexport const PURE_DEPRECATED_STEREOTYPE = 'deprecated';\nexport var MILESTONING_STEREOTYPE;\n(function (MILESTONING_STEREOTYPE) {\n MILESTONING_STEREOTYPE[\"BUSINESS_TEMPORAL\"] = \"businesstemporal\";\n MILESTONING_STEREOTYPE[\"PROCESSING_TEMPORAL\"] = \"processingtemporal\";\n MILESTONING_STEREOTYPE[\"BITEMPORAL\"] = \"bitemporal\";\n})(MILESTONING_STEREOTYPE || (MILESTONING_STEREOTYPE = {}));\nexport var MILESTONING_VERSION_PROPERTY_SUFFIX;\n(function (MILESTONING_VERSION_PROPERTY_SUFFIX) {\n MILESTONING_VERSION_PROPERTY_SUFFIX[\"ALL_VERSIONS\"] = \"AllVersions\";\n MILESTONING_VERSION_PROPERTY_SUFFIX[\"ALL_VERSIONS_IN_RANGE\"] = \"AllVersionsInRange\";\n})(MILESTONING_VERSION_PROPERTY_SUFFIX || (MILESTONING_VERSION_PROPERTY_SUFFIX = {}));\nexport const MILESTONING_START_DATE_PARAMETER_NAME = 'startDate';\nexport const MILESTONING_END_DATE_PARAMETER_NAME = 'endDate';\nexport const PROCESSING_DATE_MILESTONING_PROPERTY_NAME = 'processingDate';\nexport const BUSINESS_DATE_MILESTONING_PROPERTY_NAME = 'businessDate';\nexport var PackageableElementPointerType;\n(function (PackageableElementPointerType) {\n PackageableElementPointerType[\"CLASS\"] = \"CLASS\";\n PackageableElementPointerType[\"STORE\"] = \"STORE\";\n PackageableElementPointerType[\"MAPPING\"] = \"MAPPING\";\n PackageableElementPointerType[\"RUNTIME\"] = \"RUNTIME\";\n PackageableElementPointerType[\"FUNCTION\"] = \"FUNCTION\";\n PackageableElementPointerType[\"FILE_GENERATION\"] = \"FILE_GENERATION\";\n PackageableElementPointerType[\"SERVICE\"] = \"SERVICE\";\n PackageableElementPointerType[\"DATA\"] = \"DATA\";\n})(PackageableElementPointerType || (PackageableElementPointerType = {}));\nexport var SUPPORTED_FUNCTIONS;\n(function (SUPPORTED_FUNCTIONS) {\n SUPPORTED_FUNCTIONS[\"LET\"] = \"meta::pure::functions::lang::letFunction\";\n SUPPORTED_FUNCTIONS[\"NEW\"] = \"meta::pure::functions::meta::new\";\n // from\n SUPPORTED_FUNCTIONS[\"FROM\"] = \"meta::pure::mapping::from\";\n})(SUPPORTED_FUNCTIONS || (SUPPORTED_FUNCTIONS = {}));\nexport const DATE_TIME_FORMAT_WITH_MILLISECONDS = \"yyyy-MM-dd'T'HH:mm:ss.SSSxxxx\";\nexport const DATE_TIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ssxxxx\";\nexport const DATE_FORMAT = 'yyyy-MM-dd';\n// Generation Const\nexport const DEFAULT_GENERATION_PACKAGE = 'generated';\n// Query\nexport const QUERY_PROFILE_TAG_CLASS = 'class';\nexport const QUERY_PROFILE_PATH = 'meta::pure::profiles::query';\n//# sourceMappingURL=MetaModelConst.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nimport { ELEMENT_PATH_DELIMITER } from '../../../../../../graph/MetaModelConst.js';\nexport class V1_PackageableElement {\n package;\n name;\n /**\n * This logic is specific to the codebase and this is not part of the native metamodel.\n * If needed, we can probably move this out as an utility or do type declaration merge\n * and define this externally using `Object.defineProperty`.\n *\n * @internal model logic\n */\n get path() {\n return `${this.package}${ELEMENT_PATH_DELIMITER}${this.name}`;\n }\n get hashCode() {\n return hashArray([CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT, this.path]);\n }\n}\nexport class V1_PackageableElementPointer {\n type;\n path;\n constructor(type, path) {\n this.type = type;\n this.path = path;\n }\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT_POINTER,\n this.type ?? '',\n this.path,\n ]);\n }\n}\n//# sourceMappingURL=V1_PackageableElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { primitive, createModelSchema, optional } from 'serializr';\nimport { SerializationFactory, optionalCustomUsingModelSchema, } from '@finos/legend-shared';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nimport { V1_PackageableElementPointer } from '../../../model/packageableElements/V1_PackageableElement.js';\nimport { V1_SourceInformation } from '../../../model/V1_SourceInformation.js';\nexport const V1_sourceInformationSerialization = new SerializationFactory(createModelSchema(V1_SourceInformation, {\n sourceId: primitive(),\n startLine: primitive(),\n startColumn: primitive(),\n endLine: primitive(),\n endColumn: primitive(),\n}));\nexport class V1_INTERNAL__PackageableElementWithSourceInformation {\n package;\n name;\n sourceInformation;\n static serialization = new SerializationFactory(createModelSchema(V1_INTERNAL__PackageableElementWithSourceInformation, {\n package: primitive(),\n name: primitive(),\n sourceInformation: optionalCustomUsingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\nexport const V1_packageableElementPointerModelSchema = createModelSchema(V1_PackageableElementPointer, {\n path: primitive(),\n type: optional(primitive()),\n});\nexport const V1_multiplicityModelSchema = createModelSchema(V1_Multiplicity, {\n lowerBound: primitive(),\n upperBound: optional(primitive()),\n});\n//# sourceMappingURL=V1_CoreSerializationHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_SourceInformation {\n sourceId;\n startLine;\n startColumn;\n endLine;\n endColumn;\n}\n//# sourceMappingURL=V1_SourceInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_PathElement {\n}\n//# sourceMappingURL=V1_PathElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PathElement } from './V1_PathElement.js';\nexport class V1_PropertyPathElement extends V1_PathElement {\n property;\n parameters = [];\n}\n//# sourceMappingURL=V1_PropertyPathElement.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AbstractAppliedFunction } from '../raw/V1_AbstractAppliedFunction.js';\nexport class V1_AppliedProperty extends V1_AbstractAppliedFunction {\n class;\n property;\n parameters = [];\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_AppliedProperty(this);\n }\n}\n//# sourceMappingURL=V1_AppliedProperty.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { hashArray } from '@finos/legend-shared';\nexport class V1_Runtime {\n}\nexport class V1_IdentifiedConnection {\n id;\n connection;\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.IDENTIFIED_CONNECTION,\n this.id,\n this.connection,\n ]);\n }\n}\nexport class V1_StoreConnections {\n store;\n storeConnections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.STORE_CONNECTIONS,\n this.store,\n hashArray(this.storeConnections),\n ]);\n }\n}\nexport class V1_ConnectionStores {\n connectionPointer;\n storePointers = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.STORE_CONNECTIONS,\n this.connectionPointer,\n hashArray(this.storePointers),\n ]);\n }\n}\nexport class V1_EngineRuntime extends V1_Runtime {\n mappings = [];\n connectionStores = [];\n connections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.ENGINE_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connectionStores),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_SingleConnectionEngineRuntime extends V1_EngineRuntime {\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.SINGLE_ENGINE_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connectionStores),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_LegacyRuntime extends V1_Runtime {\n mappings = [];\n connections = [];\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.LEGACY_RUNTIME,\n hashArray(this.mappings),\n hashArray(this.connections),\n ]);\n }\n}\nexport class V1_RuntimePointer extends V1_Runtime {\n runtime;\n get hashCode() {\n return hashArray([CORE_HASH_STRUCTURE.RUNTIME_POINTER, this.runtime]);\n }\n}\n//# sourceMappingURL=V1_Runtime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, primitive, list, custom, serialize, deserialize, object, } from 'serializr';\nimport { usingConstantValueSchema, UnsupportedOperationError, usingModelSchema, } from '@finos/legend-shared';\nimport { V1_packageableElementPointerModelSchema } from '../../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nimport { V1_PackageableRuntime } from '../../../model/packageableElements/runtime/V1_PackageableRuntime.js';\nimport { V1_EngineRuntime, V1_IdentifiedConnection, V1_LegacyRuntime, V1_RuntimePointer, V1_StoreConnections, V1_ConnectionStores, V1_SingleConnectionEngineRuntime, } from '../../../model/packageableElements/runtime/V1_Runtime.js';\nimport { V1_serializeConnectionValue, V1_deserializeConnectionValue, V1_connectionPointerModelSchema, } from './V1_ConnectionSerializationHelper.js';\nexport const V1_PACKAGEABLE_RUNTIME_ELEMENT_PROTOCOL_TYPE = 'runtime';\nexport var V1_RuntimeType;\n(function (V1_RuntimeType) {\n V1_RuntimeType[\"RUNTIME_POINTER\"] = \"runtimePointer\";\n V1_RuntimeType[\"LEGACY_RUNTIME\"] = \"legacyRuntime\";\n V1_RuntimeType[\"ENGINE_RUNTIME\"] = \"engineRuntime\";\n V1_RuntimeType[\"SINGLE_ENGINE_RUNTIME\"] = \"localEngineRuntime\";\n})(V1_RuntimeType || (V1_RuntimeType = {}));\nexport const V1_runtimePointerModelSchema = createModelSchema(V1_RuntimePointer, {\n _type: usingConstantValueSchema(V1_RuntimeType.RUNTIME_POINTER),\n runtime: primitive(),\n});\nexport const V1_setupLegacyRuntimeSerialization = (plugins) => {\n createModelSchema(V1_LegacyRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.LEGACY_RUNTIME),\n connections: list(custom((val) => V1_serializeConnectionValue(val, true, plugins), (val) => V1_deserializeConnectionValue(val, true, plugins))),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n};\nexport const V1_setupEngineRuntimeSerialization = (plugins) => {\n createModelSchema(V1_IdentifiedConnection, {\n connection: custom((val) => V1_serializeConnectionValue(val, true, plugins), (val) => V1_deserializeConnectionValue(val, true, plugins)),\n id: primitive(),\n });\n createModelSchema(V1_ConnectionStores, {\n connectionPointer: usingModelSchema(V1_connectionPointerModelSchema),\n storePointers: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n createModelSchema(V1_StoreConnections, {\n store: usingModelSchema(V1_packageableElementPointerModelSchema),\n storeConnections: list(object(V1_IdentifiedConnection)),\n });\n createModelSchema(V1_EngineRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.ENGINE_RUNTIME),\n connectionStores: list(object(V1_ConnectionStores)),\n connections: list(object(V1_StoreConnections)),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n createModelSchema(V1_SingleConnectionEngineRuntime, {\n _type: usingConstantValueSchema(V1_RuntimeType.SINGLE_ENGINE_RUNTIME),\n connectionStores: list(object(V1_ConnectionStores)),\n connections: list(object(V1_StoreConnections)),\n mappings: list(usingModelSchema(V1_packageableElementPointerModelSchema)),\n });\n};\nexport const V1_serializeRuntime = (protocol) => {\n if (protocol instanceof V1_EngineRuntime) {\n return serialize(V1_EngineRuntime, protocol);\n }\n else if (protocol instanceof V1_RuntimePointer) {\n return serialize(V1_runtimePointerModelSchema, protocol);\n }\n // NOTE: we don't want to serialize legacy runtime as we no longer want to circulate it any further\n throw new UnsupportedOperationError(`Can't serialize runtime`, protocol);\n};\nexport const V1_deserializeRuntime = (json) => {\n switch (json._type) {\n case V1_RuntimeType.RUNTIME_POINTER:\n return deserialize(V1_runtimePointerModelSchema, json);\n case V1_RuntimeType.ENGINE_RUNTIME:\n return deserialize(V1_EngineRuntime, json);\n case V1_RuntimeType.LEGACY_RUNTIME:\n case undefined:\n return deserialize(V1_LegacyRuntime, json);\n default:\n throw new UnsupportedOperationError(`Can't deeserialize runtime of type '${json._type}'`);\n }\n};\nexport const V1_serializeRuntimeValue = (protocol) => {\n if (protocol instanceof V1_SingleConnectionEngineRuntime) {\n return serialize(V1_SingleConnectionEngineRuntime, protocol);\n }\n return serialize(V1_EngineRuntime, protocol);\n};\nexport const V1_deserializeRuntimeValue = (json) => {\n if (json._type === V1_RuntimeType.SINGLE_ENGINE_RUNTIME) {\n return deserialize(V1_SingleConnectionEngineRuntime, json);\n }\n return deserialize(V1_EngineRuntime, json);\n};\nexport const V1_packageableRuntimeModelSchema = createModelSchema(V1_PackageableRuntime, {\n _type: usingConstantValueSchema(V1_PACKAGEABLE_RUNTIME_ELEMENT_PROTOCOL_TYPE),\n name: primitive(),\n package: primitive(),\n runtimeValue: custom((val) => V1_serializeRuntimeValue(val), (val) => V1_deserializeRuntimeValue(val)),\n});\n//# sourceMappingURL=V1_RuntimeSerializationHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hashArray } from '@finos/legend-shared';\nimport { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';\nimport { V1_PackageableElement, } from '../../../model/packageableElements/V1_PackageableElement.js';\nexport class V1_PackageableRuntime extends V1_PackageableElement {\n runtimeValue;\n get hashCode() {\n return hashArray([\n CORE_HASH_STRUCTURE.PACKAGEABLE_RUNTIME,\n this.path,\n this.runtimeValue,\n ]);\n }\n accept_PackageableElementVisitor(visitor) {\n return visitor.visit_PackageableRuntime(this);\n }\n}\n//# sourceMappingURL=V1_PackageableRuntime.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class V1_ExecutionContext {\n queryTimeOutInSeconds;\n enableConstraints;\n}\n//# sourceMappingURL=V1_ExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionContext } from './V1_ExecutionContext.js';\nexport class V1_AnalyticsExecutionContext extends V1_ExecutionContext {\n useAnalytics;\n toFlowSetFunction;\n}\n//# sourceMappingURL=V1_AnalyticsExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionContext } from './V1_ExecutionContext.js';\nexport class V1_BaseExecutionContext extends V1_ExecutionContext {\n}\n//# sourceMappingURL=V1_BaseExecutionContext.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ValueSpecification, } from '../../../model/valueSpecification/V1_ValueSpecification.js';\nimport { V1_Multiplicity } from '../../packageableElements/domain/V1_Multiplicity.js';\nexport class V1_PackageableElementPtr extends V1_ValueSpecification {\n multiplicity = V1_Multiplicity.ONE;\n fullPath;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_PackageableElementPtr(this);\n }\n}\n//# sourceMappingURL=V1_PackageableElementPtr.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PackageableElementPtr } from './V1_PackageableElementPtr.js';\nexport class V1_GenericTypeInstance extends V1_PackageableElementPtr {\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_GenericTypeInstance(this);\n }\n}\n//# sourceMappingURL=V1_GenericTypeInstance.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, primitive, serialize, SKIP, list, custom, deserialize, optional, } from 'serializr';\nimport { usingConstantValueSchema, UnsupportedOperationError, usingModelSchema, guaranteeIsString, isString, isPlainObject, } from '@finos/legend-shared';\nimport { V1_Variable } from '../../../model/valueSpecification/V1_Variable.js';\nimport { V1_RootGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_RootGraphFetchTree.js';\nimport { V1_Lambda } from '../../../model/valueSpecification/raw/V1_Lambda.js';\nimport { V1_EnumValue } from '../../../model/valueSpecification/raw/V1_EnumValue.js';\nimport { V1_Path } from '../../../model/valueSpecification/raw/classInstance/path/V1_Path.js';\nimport { V1_AppliedFunction } from '../../../model/valueSpecification/application/V1_AppliedFunction.js';\nimport { V1_Collection } from '../../../model/valueSpecification/raw/V1_Collection.js';\nimport { V1_CDecimal } from '../../../model/valueSpecification/raw/V1_CDecimal.js';\nimport { V1_CInteger } from '../../../model/valueSpecification/raw/V1_CInteger.js';\nimport { V1_CString } from '../../../model/valueSpecification/raw/V1_CString.js';\nimport { V1_CFloat } from '../../../model/valueSpecification/raw/V1_CFloat.js';\nimport { V1_CDateTime } from '../../../model/valueSpecification/raw/V1_CDateTime.js';\nimport { V1_CStrictDate } from '../../../model/valueSpecification/raw/V1_CStrictDate.js';\nimport { V1_CStrictTime } from '../../../model/valueSpecification/raw/V1_CStrictTime.js';\nimport { V1_CLatestDate } from '../../../model/valueSpecification/raw/V1_CLatestDate.js';\nimport { V1_CBoolean } from '../../../model/valueSpecification/raw/V1_CBoolean.js';\nimport { V1_AggregateValue } from '../../../model/valueSpecification/raw/classInstance/V1_AggregateValue.js';\nimport { V1_Pair } from '../../../model/valueSpecification/raw/classInstance/V1_Pair.js';\nimport { V1_RuntimeInstance } from '../../../model/valueSpecification/raw/classInstance/V1_RuntimeInstance.js';\nimport { V1_ExecutionContextInstance } from '../../../model/valueSpecification/raw/classInstance/V1_ExecutionContextInstance.js';\nimport { V1_PropertyGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_PropertyGraphFetchTree.js';\nimport { V1_SubTypeGraphFetchTree } from '../../../model/valueSpecification/raw/classInstance/graph/V1_SubTypeGraphFetchTree.js';\nimport { V1_SerializationConfig } from '../../../model/valueSpecification/raw/classInstance/V1_SerializationConfig.js';\nimport { V1_KeyExpression } from '../../../model/valueSpecification/raw/V1_KeyExpression.js';\nimport { V1_PureList } from '../../../model/valueSpecification/raw/classInstance/V1_PureList.js';\nimport { V1_TDSAggregateValue } from '../../../model/valueSpecification/raw/classInstance/V1_TDSAggregateValue.js';\nimport { V1_TDSColumnInformation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSColumnInformation.js';\nimport { V1_TDSSortInformation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSSortInformation.js';\nimport { V1_TDSOlapRank } from '../../../model/valueSpecification/raw/classInstance/V1_TDSOlapRank.js';\nimport { V1_TDSOlapAggregation } from '../../../model/valueSpecification/raw/classInstance/V1_TDSOlapAggregation.js';\nimport { V1_ColSpecArray } from '../../../model/valueSpecification/raw/classInstance/relation/V1_ColSpecArray.js';\nimport { V1_ColSpec } from '../../../model/valueSpecification/raw/classInstance/relation/V1_ColSpec.js';\nimport { V1_RelationStoreAccessor } from '../../../model/valueSpecification/raw/classInstance/relation/V1_RelationStoreAccessor.js';\nimport { V1_multiplicityModelSchema } from './V1_CoreSerializationHelper.js';\nimport { V1_PropertyPathElement } from '../../../model/valueSpecification/raw/classInstance/path/V1_PropertyPathElement.js';\nimport { V1_AppliedProperty } from '../../../model/valueSpecification/application/V1_AppliedProperty.js';\nimport { V1_serializeRuntime } from './V1_RuntimeSerializationHelper.js';\nimport { V1_AnalyticsExecutionContext } from '../../../model/valueSpecification/raw/executionContext/V1_AnalyticsExecutionContext.js';\nimport { V1_BaseExecutionContext } from '../../../model/valueSpecification/raw/executionContext/V1_BaseExecutionContext.js';\nimport { V1_PackageableElementPtr } from '../../../model/valueSpecification/raw/V1_PackageableElementPtr.js';\nimport { V1_EngineRuntime } from '../../../model/packageableElements/runtime/V1_Runtime.js';\nimport { V1_GenericTypeInstance } from '../../../model/valueSpecification/raw/V1_GenericTypeInstance.js';\nimport { V1_Multiplicity } from '../../../model/packageableElements/domain/V1_Multiplicity.js';\nimport { V1_ClassInstance } from '../../../model/valueSpecification/raw/V1_ClassInstance.js';\nimport { V1_CByteArray } from '../../../model/valueSpecification/raw/V1_CByteArray.js';\nvar V1_ExecutionContextType;\n(function (V1_ExecutionContextType) {\n V1_ExecutionContextType[\"BASE_EXECUTION_CONTEXT\"] = \"BaseExecutionContext\";\n V1_ExecutionContextType[\"ANALYTICS_EXECUTION_CONTEXT\"] = \"AnalyticsExecutionContext\";\n})(V1_ExecutionContextType || (V1_ExecutionContextType = {}));\nvar V1_PathElementType;\n(function (V1_PathElementType) {\n V1_PathElementType[\"PROPERTY_PATH_ELEMENT\"] = \"propertyPath\";\n})(V1_PathElementType || (V1_PathElementType = {}));\nexport var V1_GraphFetchTreeType;\n(function (V1_GraphFetchTreeType) {\n V1_GraphFetchTreeType[\"PROPERTY_GRAPH_FETCH_TREE\"] = \"propertyGraphFetchTree\";\n})(V1_GraphFetchTreeType || (V1_GraphFetchTreeType = {}));\nexport var V1_ClassInstanceType;\n(function (V1_ClassInstanceType) {\n V1_ClassInstanceType[\"ROOT_GRAPH_FETCH_TREE\"] = \"rootGraphFetchTree\";\n V1_ClassInstanceType[\"SUBTYPE_GRAPH_FETCH_TREE\"] = \"subTypeGraphFetchTree\";\n V1_ClassInstanceType[\"PATH\"] = \"path\";\n V1_ClassInstanceType[\"AGGREGATE_VALUE\"] = \"aggregateValue\";\n V1_ClassInstanceType[\"EXECUTION_CONTEXT_INSTANCE\"] = \"executionContextInstance\";\n V1_ClassInstanceType[\"PAIR\"] = \"pair\";\n V1_ClassInstanceType[\"PURE_LIST\"] = \"listInstance\";\n V1_ClassInstanceType[\"RUNTIME_INSTANCE\"] = \"runtimeInstance\";\n V1_ClassInstanceType[\"SERIALIZATION_CONFIG\"] = \"alloySerializationConfig\";\n V1_ClassInstanceType[\"COL_SPEC\"] = \"colSpec\";\n V1_ClassInstanceType[\"COL_SPEC_ARRAY\"] = \"colSpecArray\";\n V1_ClassInstanceType[\"RELATION_STORE_ACCESSOR\"] = \">\";\n V1_ClassInstanceType[\"TDS_AGGREGATE_VALUE\"] = \"tdsAggregateValue\";\n V1_ClassInstanceType[\"TDS_COLUMN_INFORMATION\"] = \"tdsColumnInformation\";\n V1_ClassInstanceType[\"TDS_SORT_INFORMATION\"] = \"tdsSortInformation\";\n V1_ClassInstanceType[\"TDS_OLAP_RANK\"] = \"tdsOlapRank\";\n V1_ClassInstanceType[\"TDS_OLAP_AGGREGATION\"] = \"tdsOlapAggregation\";\n})(V1_ClassInstanceType || (V1_ClassInstanceType = {}));\nvar V1_ValueSpecificationType;\n(function (V1_ValueSpecificationType) {\n V1_ValueSpecificationType[\"VARIABLE\"] = \"var\";\n V1_ValueSpecificationType[\"LAMBDA\"] = \"lambda\";\n V1_ValueSpecificationType[\"KEY_EXPRESSION\"] = \"keyExpression\";\n V1_ValueSpecificationType[\"APPLIED_FUNCTION\"] = \"func\";\n V1_ValueSpecificationType[\"APPLIED_PROPERTY\"] = \"property\";\n V1_ValueSpecificationType[\"PACKAGEABLE_ELEMENT_PTR\"] = \"packageableElementPtr\";\n V1_ValueSpecificationType[\"GENERIC_TYPE_INSTANCE\"] = \"genericTypeInstance\";\n V1_ValueSpecificationType[\"ENUM_VALUE\"] = \"enumValue\";\n V1_ValueSpecificationType[\"COLLECTION\"] = \"collection\";\n V1_ValueSpecificationType[\"CINTEGER\"] = \"integer\";\n V1_ValueSpecificationType[\"CDECIMAL\"] = \"decimal\";\n V1_ValueSpecificationType[\"CSTRING\"] = \"string\";\n V1_ValueSpecificationType[\"CBOOLEAN\"] = \"boolean\";\n V1_ValueSpecificationType[\"CBYTEARRAY\"] = \"byteArray\";\n V1_ValueSpecificationType[\"CFLOAT\"] = \"float\";\n V1_ValueSpecificationType[\"CDATETIME\"] = \"dateTime\";\n V1_ValueSpecificationType[\"CSTRICTDATE\"] = \"strictDate\";\n V1_ValueSpecificationType[\"CSTRICTTIME\"] = \"strictTime\";\n V1_ValueSpecificationType[\"CLATESTDATE\"] = \"latestDate\";\n V1_ValueSpecificationType[\"CLASS_INSTANCE\"] = \"classInstance\";\n // ------------------------------ DEPRECATED ----------------------------------\n V1_ValueSpecificationType[\"HACKED_CLASS\"] = \"hackedClass\";\n V1_ValueSpecificationType[\"HACKED_UNIT\"] = \"hackedUnit\";\n V1_ValueSpecificationType[\"UNIT_TYPE\"] = \"unitType\";\n V1_ValueSpecificationType[\"PRIMITIVE_TYPE\"] = \"primitiveType\";\n V1_ValueSpecificationType[\"CLASS\"] = \"class\";\n V1_ValueSpecificationType[\"ENUM\"] = \"enum\";\n V1_ValueSpecificationType[\"MAPPING_INSTANCE\"] = \"mappingInstance\";\n})(V1_ValueSpecificationType || (V1_ValueSpecificationType = {}));\n// ---------------------------------------- Value Specification --------------------------------------\nexport const V1_variableModelSchema = createModelSchema(V1_Variable, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.VARIABLE),\n class: optional(primitive()),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n name: primitive(),\n});\nexport const V1_lambdaModelSchema = (plugins) => createModelSchema(V1_Lambda, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.LAMBDA),\n body: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n parameters: list(usingModelSchema(V1_variableModelSchema)),\n});\nconst keyExpressionModelSchema = (plugins) => createModelSchema(V1_KeyExpression, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.KEY_EXPRESSION),\n add: optional(primitive()),\n expression: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n key: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n});\nconst appliedFunctionModelSchema = (plugins) => createModelSchema(V1_AppliedFunction, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.APPLIED_FUNCTION),\n function: primitive(),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst appliedPropertyModelSchema = (plugins) => createModelSchema(V1_AppliedProperty, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.APPLIED_PROPERTY),\n class: optional(primitive()),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n property: primitive(),\n});\nconst packageableElementPtrSchema = createModelSchema(V1_PackageableElementPtr, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.PACKAGEABLE_ELEMENT_PTR),\n fullPath: primitive(),\n});\nconst genericTypeInstanceSchema = createModelSchema(V1_GenericTypeInstance, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.GENERIC_TYPE_INSTANCE),\n fullPath: primitive(),\n});\n/**\n * @backwardCompatibility\n */\nconst deserializeHackedUnit = (json) => {\n const protocol = new V1_GenericTypeInstance();\n if (isString(json.unitType)) {\n protocol.fullPath = json.unitType;\n }\n else {\n protocol.fullPath = guaranteeIsString(json.fullPath, `Can't deserialize hacked unit: either field 'fullPath' or 'unitType' must be a non-empty string`);\n }\n return protocol;\n};\n/**\n * @backwardCompatibility\n */\nconst deserializeHackedClass = (json) => {\n const protocol = new V1_GenericTypeInstance();\n protocol.fullPath = guaranteeIsString(json.fullPath, `Can't deserialize hacked class: field 'fullPath' must be a non-empty string`);\n return protocol;\n};\nconst collectionModelSchema = (plugins) => createModelSchema(V1_Collection, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.COLLECTION),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n values: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst enumValueModelSchema = createModelSchema(V1_EnumValue, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.ENUM_VALUE),\n fullPath: primitive(),\n value: primitive(),\n});\nconst CDecimalModelSchema = createModelSchema(V1_CDecimal, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CDECIMAL),\n value: primitive(),\n});\nconst CIntegerModelSchema = createModelSchema(V1_CInteger, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CINTEGER),\n value: primitive(),\n});\nconst CStringModelSchema = createModelSchema(V1_CString, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRING),\n value: primitive(),\n});\nconst CFloatModelSchema = createModelSchema(V1_CFloat, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CFLOAT),\n value: primitive(),\n});\nconst CDateTimeModelSchema = createModelSchema(V1_CDateTime, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CDATETIME),\n value: primitive(),\n});\nconst CStrictTimeModelSchema = createModelSchema(V1_CStrictTime, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRICTTIME),\n value: primitive(),\n});\nconst CStrictDateModelSchema = createModelSchema(V1_CStrictDate, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CSTRICTDATE),\n value: primitive(),\n});\nconst CLatestDateModelSchema = createModelSchema(V1_CLatestDate, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CLATESTDATE),\n});\nconst CBooleanModelSchema = createModelSchema(V1_CBoolean, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CBOOLEAN),\n value: primitive(),\n});\nconst CByteArrayModelSchema = createModelSchema(V1_CByteArray, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CBYTEARRAY),\n value: primitive(),\n});\n/**\n * @backwardCompatibility\n */\nconst deserializePrimitiveValueSpecification = (json, plugins, deserializer) => {\n if (Array.isArray(json.values)) {\n if (json.values.length === 0) {\n const collection = new V1_Collection();\n collection.multiplicity = V1_Multiplicity.ZERO;\n return collection;\n }\n else if (json.values.length === 1) {\n return deserializer({\n ...json,\n value: json.values[0],\n });\n }\n else {\n return V1_deserializeValueSpecification({\n ...json,\n _type: V1_ValueSpecificationType.COLLECTION,\n }, plugins);\n }\n }\n return deserializer(json);\n};\n// ---------------------------------------- Class Instance --------------------------------------\nconst classInstanceModelSchema = (plugins) => createModelSchema(V1_ClassInstance, {\n _type: usingConstantValueSchema(V1_ValueSpecificationType.CLASS_INSTANCE),\n multiplicity: usingModelSchema(V1_multiplicityModelSchema),\n type: primitive(),\n value: custom((val) => V1_serializeClassInstanceValue(val, plugins), (val, context) => V1_deserializeClassInstanceValue(val, context.json.type, plugins)),\n});\n// path\nconst propertyPathElementModelSchema = (plugins) => createModelSchema(V1_PropertyPathElement, {\n _type: usingConstantValueSchema(V1_PathElementType.PROPERTY_PATH_ELEMENT),\n property: primitive(),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nfunction V1_serializePathElement(protocol, plugins) {\n if (protocol instanceof V1_PropertyPathElement) {\n return serialize(propertyPathElementModelSchema(plugins), protocol);\n }\n return SKIP;\n}\nfunction V1_deserializePathElement(json, plugins) {\n switch (json._type) {\n case V1_PathElementType.PROPERTY_PATH_ELEMENT:\n return deserialize(propertyPathElementModelSchema(plugins), json);\n default:\n return SKIP;\n }\n}\nconst pathModelSchema = (plugins) => createModelSchema(V1_Path, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PATH),\n name: primitive(),\n startType: primitive(),\n path: list(custom((val) => V1_serializePathElement(val, plugins), (val) => V1_deserializePathElement(val, plugins))),\n});\n// graph fetch tree\nconst rootGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_RootGraphFetchTree, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE),\n class: primitive(),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n});\nconst propertyGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_PropertyGraphFetchTree, {\n _type: usingConstantValueSchema(V1_GraphFetchTreeType.PROPERTY_GRAPH_FETCH_TREE),\n alias: optional(primitive()),\n parameters: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n property: primitive(),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subType: optional(primitive()),\n});\nconst subTypeGraphFetchTreeModelSchema = (plugins) => createModelSchema(V1_SubTypeGraphFetchTree, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.SUBTYPE_GRAPH_FETCH_TREE),\n subTrees: list(custom((val) => V1_serializeGraphFetchTree(val, plugins), (val) => V1_deserializeGraphFetchTree(val, plugins))),\n subTypeClass: primitive(),\n});\nexport function V1_serializeGraphFetchTree(protocol, plugins) {\n if (protocol instanceof V1_PropertyGraphFetchTree) {\n return serialize(propertyGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RootGraphFetchTree) {\n return serialize(rootGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_SubTypeGraphFetchTree) {\n return serialize(subTypeGraphFetchTreeModelSchema(plugins), protocol);\n }\n throw new UnsupportedOperationError(`Can't serialize graph fetch tree`, protocol);\n}\nexport function V1_deserializeGraphFetchTree(json, plugins) {\n switch (json._type) {\n case V1_GraphFetchTreeType.PROPERTY_GRAPH_FETCH_TREE:\n return deserialize(propertyGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n return deserialize(rootGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.SUBTYPE_GRAPH_FETCH_TREE:\n return deserialize(subTypeGraphFetchTreeModelSchema(plugins), json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize graph fetch tree node of type '${json._type}'`);\n }\n}\n// execution context\nconst analyticsExecutionContextModelSchema = (plugins) => createModelSchema(V1_AnalyticsExecutionContext, {\n _type: usingConstantValueSchema(V1_ExecutionContextType.ANALYTICS_EXECUTION_CONTEXT),\n enableConstraints: optional(primitive()),\n queryTimeOutInSeconds: optional(primitive()),\n toFlowSetFunction: usingModelSchema(V1_lambdaModelSchema(plugins)),\n useAnalytics: primitive(),\n});\nconst baseExecutionContextModelSchema = createModelSchema(V1_BaseExecutionContext, {\n _type: usingConstantValueSchema(V1_ExecutionContextType.BASE_EXECUTION_CONTEXT),\n enableConstraints: optional(primitive()),\n queryTimeOutInSeconds: optional(primitive()),\n});\nfunction V1_serializeExecutionContext(protocol, plugins) {\n if (protocol instanceof V1_AnalyticsExecutionContext) {\n return serialize(analyticsExecutionContextModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_BaseExecutionContext) {\n return serialize(baseExecutionContextModelSchema, protocol);\n }\n return SKIP;\n}\nfunction V1_deserializeExecutionContext(json, plugins) {\n switch (json._type) {\n case V1_ExecutionContextType.ANALYTICS_EXECUTION_CONTEXT:\n return deserialize(analyticsExecutionContextModelSchema(plugins), json);\n case V1_ExecutionContextType.BASE_EXECUTION_CONTEXT:\n return deserialize(baseExecutionContextModelSchema, json);\n default:\n return SKIP;\n }\n}\nconst executionContextInstanceModelSchema = (plugins) => createModelSchema(V1_ExecutionContextInstance, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE),\n executionContext: custom((val) => V1_serializeExecutionContext(val, plugins), (val) => V1_deserializeExecutionContext(val, plugins)),\n});\n// others\nconst aggregationValueModelSchema = (plugins) => createModelSchema(V1_AggregateValue, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.AGGREGATE_VALUE),\n mapFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n aggregateFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst pairModelSchema = (plugins) => createModelSchema(V1_Pair, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PAIR),\n first: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n second: custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins)),\n});\nconst runtimeInstanceModelSchema = createModelSchema(V1_RuntimeInstance, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.RUNTIME_INSTANCE),\n runtime: custom((val) => V1_serializeRuntime(val), (val) => deserialize(V1_EngineRuntime, val)),\n});\nconst pureListModelSchema = (plugins) => createModelSchema(V1_PureList, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.PURE_LIST),\n values: list(custom((val) => V1_serializeValueSpecification(val, plugins), (val) => V1_deserializeValueSpecification(val, plugins))),\n});\nconst serializationConfigModelSchema = createModelSchema(V1_SerializationConfig, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.SERIALIZATION_CONFIG),\n includeType: optional(primitive()),\n typeKeyName: primitive(),\n includeEnumTypee: optional(primitive()),\n removePropertiesWithNullValuese: optional(primitive()),\n removePropertiesWithEmptySetse: optional(primitive()),\n fullyQualifiedTypePathe: optional(primitive()),\n includeObjectReferencee: optional(primitive()),\n});\n// TDS\nconst tdsAggregrateValueModelSchema = (plugins) => createModelSchema(V1_TDSAggregateValue, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_AGGREGATE_VALUE),\n name: primitive(),\n pmapFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n aggregateFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsColumnInformationModelSchema = (plugins) => createModelSchema(V1_TDSColumnInformation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_COLUMN_INFORMATION),\n name: primitive(),\n columnFn: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsSortInformationModelSchema = createModelSchema(V1_TDSSortInformation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_SORT_INFORMATION),\n column: primitive(),\n direction: primitive(),\n});\nconst relationStoreAccessorModelSchema = createModelSchema(V1_RelationStoreAccessor, {\n path: list(primitive()),\n});\nconst colSpecModelSchema = (plugins) => createModelSchema(V1_ColSpec, {\n function1: optional(usingModelSchema(V1_lambdaModelSchema(plugins))),\n function2: optional(usingModelSchema(V1_lambdaModelSchema(plugins))),\n name: primitive(),\n type: optional(primitive()),\n});\nconst colSpecArrayModelSchema = (plugins) => createModelSchema(V1_ColSpecArray, {\n colSpecs: list(usingModelSchema(colSpecModelSchema(plugins))),\n});\nconst tdsOlapRankModelSchema = (plugins) => createModelSchema(V1_TDSOlapRank, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_OLAP_RANK),\n function: usingModelSchema(V1_lambdaModelSchema(plugins)),\n});\nconst tdsOlapAggregationModelSchema = (plugins) => createModelSchema(V1_TDSOlapAggregation, {\n _type: usingConstantValueSchema(V1_ClassInstanceType.TDS_OLAP_AGGREGATION),\n function: usingModelSchema(V1_lambdaModelSchema(plugins)),\n columnName: primitive(),\n});\nexport function V1_deserializeClassInstanceValue(json, type, plugins) {\n switch (type) {\n case V1_ClassInstanceType.PATH:\n return deserialize(pathModelSchema(plugins), json);\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n return deserialize(rootGraphFetchTreeModelSchema(plugins), json);\n case V1_ClassInstanceType.AGGREGATE_VALUE:\n return deserialize(aggregationValueModelSchema(plugins), json);\n case V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE:\n return deserialize(executionContextInstanceModelSchema(plugins), json);\n case V1_ClassInstanceType.PAIR:\n return deserialize(pairModelSchema(plugins), json);\n case V1_ClassInstanceType.PURE_LIST:\n return deserialize(pureListModelSchema(plugins), json);\n case V1_ClassInstanceType.RUNTIME_INSTANCE:\n return deserialize(runtimeInstanceModelSchema, json);\n case V1_ClassInstanceType.SERIALIZATION_CONFIG:\n return deserialize(serializationConfigModelSchema, json);\n case V1_ClassInstanceType.TDS_AGGREGATE_VALUE:\n return deserialize(tdsAggregrateValueModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_COLUMN_INFORMATION:\n return deserialize(tdsColumnInformationModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_OLAP_AGGREGATION:\n return deserialize(tdsOlapAggregationModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_OLAP_RANK:\n return deserialize(tdsOlapRankModelSchema(plugins), json);\n case V1_ClassInstanceType.TDS_SORT_INFORMATION:\n return deserialize(tdsSortInformationModelSchema, json);\n case V1_ClassInstanceType.COL_SPEC:\n return deserialize(colSpecModelSchema(plugins), json);\n case V1_ClassInstanceType.COL_SPEC_ARRAY:\n return deserialize(colSpecArrayModelSchema(plugins), json);\n case V1_ClassInstanceType.RELATION_STORE_ACCESSOR:\n return deserialize(relationStoreAccessorModelSchema, json);\n default: {\n const deserializers = plugins.flatMap((plugin) => plugin.V1_getExtraClassInstanceValueProtocolDeserializers?.() ?? []);\n for (const deserializer of deserializers) {\n const protocol = deserializer(json, type, plugins);\n if (protocol) {\n return protocol;\n }\n }\n throw new UnsupportedOperationError(`Can't deserialize value specification of type '${json._type}': no compatible deserializer available from plugins`);\n }\n }\n}\nexport function V1_serializeClassInstanceValue(protocol, plugins) {\n if (protocol instanceof V1_Path) {\n return serialize(pathModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RootGraphFetchTree) {\n return serialize(rootGraphFetchTreeModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_ExecutionContextInstance) {\n return serialize(executionContextInstanceModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_AggregateValue) {\n return serialize(aggregationValueModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_Pair) {\n return serialize(pairModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_PureList) {\n return serialize(pureListModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RuntimeInstance) {\n return serialize(runtimeInstanceModelSchema, protocol);\n }\n else if (protocol instanceof V1_SerializationConfig) {\n return serialize(serializationConfigModelSchema, protocol);\n }\n else if (protocol instanceof V1_TDSAggregateValue) {\n return serialize(tdsAggregrateValueModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSColumnInformation) {\n return serialize(tdsColumnInformationModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSOlapAggregation) {\n return serialize(tdsOlapAggregationModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSOlapRank) {\n return serialize(tdsOlapRankModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_TDSSortInformation) {\n return serialize(tdsSortInformationModelSchema, protocol);\n }\n else if (protocol instanceof V1_ColSpec) {\n return serialize(colSpecModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_ColSpecArray) {\n return serialize(colSpecArrayModelSchema(plugins), protocol);\n }\n else if (protocol instanceof V1_RelationStoreAccessor) {\n return serialize(relationStoreAccessorModelSchema, protocol);\n }\n const serializers = plugins.flatMap((plugin) => plugin.V1_getExtraClassInstanceValueProtocolSerializers?.() ?? []);\n for (const serializer of serializers) {\n const json = serializer(protocol, plugins);\n if (json) {\n return json;\n }\n }\n throw new UnsupportedOperationError(`Can't serialize class instance value: no compatible serializer available from plugins`, protocol);\n}\n// ---------------------------------------- Serialization Methods --------------------------------------\nclass V1_ValueSpecificationSerializer {\n plugins = [];\n constructor(plugins) {\n this.plugins = plugins;\n }\n visit_INTERNAL__UnknownValueSpecfication(valueSpecification) {\n return valueSpecification.content;\n }\n visit_Variable(valueSpecification) {\n return serialize(V1_variableModelSchema, valueSpecification);\n }\n visit_Lambda(valueSpecification) {\n return serialize(V1_lambdaModelSchema(this.plugins), valueSpecification);\n }\n visit_KeyExpression(valueSpecification) {\n return serialize(keyExpressionModelSchema(this.plugins), valueSpecification);\n }\n visit_PackageableElementPtr(valueSpecification) {\n return serialize(packageableElementPtrSchema, valueSpecification);\n }\n visit_GenericTypeInstance(valueSpecification) {\n return serialize(genericTypeInstanceSchema, valueSpecification);\n }\n visit_AppliedFunction(valueSpecification) {\n return serialize(appliedFunctionModelSchema(this.plugins), valueSpecification);\n }\n visit_AppliedProperty(valueSpecification) {\n return serialize(appliedPropertyModelSchema(this.plugins), valueSpecification);\n }\n visit_Collection(valueSpecification) {\n return serialize(collectionModelSchema(this.plugins), valueSpecification);\n }\n visit_EnumValue(valueSpecification) {\n return serialize(enumValueModelSchema, valueSpecification);\n }\n visit_CInteger(valueSpecification) {\n return serialize(CIntegerModelSchema, valueSpecification);\n }\n visit_CDecimal(valueSpecification) {\n return serialize(CDecimalModelSchema, valueSpecification);\n }\n visit_CString(valueSpecification) {\n return serialize(CStringModelSchema, valueSpecification);\n }\n visit_CBoolean(valueSpecification) {\n return serialize(CBooleanModelSchema, valueSpecification);\n }\n visit_CByteArray(valueSpecification) {\n return serialize(CByteArrayModelSchema, valueSpecification);\n }\n visit_CFloat(valueSpecification) {\n return serialize(CFloatModelSchema, valueSpecification);\n }\n visit_CDateTime(valueSpecification) {\n return serialize(CDateTimeModelSchema, valueSpecification);\n }\n visit_CStrictDate(valueSpecification) {\n return serialize(CStrictDateModelSchema, valueSpecification);\n }\n visit_CStrictTime(valueSpecification) {\n return serialize(CStrictTimeModelSchema, valueSpecification);\n }\n visit_CLatestDate(valueSpecification) {\n return serialize(CLatestDateModelSchema, valueSpecification);\n }\n visit_ClassInstance(valueSpecification) {\n return serialize(classInstanceModelSchema(this.plugins), valueSpecification);\n }\n}\nexport function V1_deserializeValueSpecification(json, plugins) {\n switch (json._type) {\n case V1_ValueSpecificationType.APPLIED_FUNCTION:\n return deserialize(appliedFunctionModelSchema(plugins), json);\n case V1_ValueSpecificationType.APPLIED_PROPERTY:\n return deserialize(appliedPropertyModelSchema(plugins), json);\n case V1_ValueSpecificationType.VARIABLE:\n return deserialize(V1_variableModelSchema, json);\n case V1_ValueSpecificationType.LAMBDA:\n return deserialize(V1_lambdaModelSchema(plugins), json);\n case V1_ValueSpecificationType.KEY_EXPRESSION:\n return deserialize(keyExpressionModelSchema(plugins), json);\n case V1_ValueSpecificationType.COLLECTION:\n return deserialize(collectionModelSchema(plugins), json);\n case V1_ValueSpecificationType.ENUM_VALUE:\n return deserialize(enumValueModelSchema, json);\n // primitive values\n case V1_ValueSpecificationType.CBOOLEAN:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CBooleanModelSchema, val));\n case V1_ValueSpecificationType.CBYTEARRAY: {\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CByteArrayModelSchema, val));\n }\n case V1_ValueSpecificationType.CDATETIME:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CDateTimeModelSchema, val));\n case V1_ValueSpecificationType.CSTRICTTIME:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStrictTimeModelSchema, val));\n case V1_ValueSpecificationType.CDECIMAL:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CDecimalModelSchema, val));\n case V1_ValueSpecificationType.CFLOAT:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CFloatModelSchema, val));\n case V1_ValueSpecificationType.CINTEGER:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CIntegerModelSchema, val));\n case V1_ValueSpecificationType.CLATESTDATE:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CLatestDateModelSchema, val));\n case V1_ValueSpecificationType.CSTRICTDATE:\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStrictDateModelSchema, val));\n case V1_ValueSpecificationType.CSTRING: {\n // This workaround is intended to handle an edge case where CString is sent with empty values\n // we will convert it to an empty string instead\n // See https://github.com/finos/legend-engine/pull/1076\n if (Array.isArray(json.values) &&\n !json.values.length &&\n isPlainObject(json.multiplicity) &&\n json.multiplicity.upperBound === 1) {\n const result = new V1_CString();\n result.value = '';\n return result;\n }\n return deserializePrimitiveValueSpecification(json, plugins, (val) => deserialize(CStringModelSchema, val));\n }\n // class instance\n case V1_ValueSpecificationType.CLASS_INSTANCE:\n return deserialize(classInstanceModelSchema(plugins), json);\n /**\n * NOTE: the following types are here for backward compatibility\n * as some of these are used to be value specifications, but now\n * transformed into class instances\n *\n * @backwardCompatibility\n */\n case V1_ClassInstanceType.PAIR:\n case V1_ClassInstanceType.AGGREGATE_VALUE:\n case V1_ClassInstanceType.EXECUTION_CONTEXT_INSTANCE:\n case V1_ClassInstanceType.PATH:\n case V1_ClassInstanceType.ROOT_GRAPH_FETCH_TREE:\n case V1_ClassInstanceType.PURE_LIST:\n case V1_ClassInstanceType.RUNTIME_INSTANCE:\n case V1_ClassInstanceType.SERIALIZATION_CONFIG:\n case V1_ClassInstanceType.TDS_AGGREGATE_VALUE:\n case V1_ClassInstanceType.TDS_COLUMN_INFORMATION:\n case V1_ClassInstanceType.TDS_OLAP_AGGREGATION:\n case V1_ClassInstanceType.TDS_OLAP_RANK:\n case V1_ClassInstanceType.TDS_SORT_INFORMATION:\n return deserialize(classInstanceModelSchema(plugins), {\n _type: V1_ValueSpecificationType.CLASS_INSTANCE,\n type: json._type,\n value: json,\n });\n // packageable element pointer\n case V1_ValueSpecificationType.HACKED_CLASS: // deprecated\n return deserializeHackedClass(json);\n case V1_ValueSpecificationType.UNIT_TYPE: // deprecated\n case V1_ValueSpecificationType.HACKED_UNIT: // deprecated\n return deserializeHackedUnit(json);\n case V1_ValueSpecificationType.PRIMITIVE_TYPE: // deprecated\n case V1_ValueSpecificationType.ENUM: // deprecated\n case V1_ValueSpecificationType.CLASS: // deprecated\n case V1_ValueSpecificationType.MAPPING_INSTANCE: // deprecated\n case V1_ValueSpecificationType.PACKAGEABLE_ELEMENT_PTR:\n return deserialize(packageableElementPtrSchema, json);\n case V1_ValueSpecificationType.GENERIC_TYPE_INSTANCE:\n return deserialize(genericTypeInstanceSchema, json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize value specification of type '${json._type}'`);\n }\n}\nexport function V1_serializeValueSpecification(protocol, plugins) {\n return protocol.accept_ValueSpecificationVisitor(new V1_ValueSpecificationSerializer(plugins));\n}\n//# sourceMappingURL=V1_ValueSpecificationSerializer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_DataTypeValueSpecification } from './V1_DataTypeValueSpecification.js';\nexport class V1_EnumValue extends V1_DataTypeValueSpecification {\n fullPath;\n value;\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_EnumValue(this);\n }\n}\n//# sourceMappingURL=V1_EnumValue.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_CDate } from './V1_CDate.js';\nexport class V1_CLatestDate extends V1_CDate {\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CLatestDate(this);\n }\n}\n//# sourceMappingURL=V1_CLatestDate.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_PrimitiveValueSpecification } from './V1_PrimitiveValueSpecification.js';\nexport class V1_CByteArray extends V1_PrimitiveValueSpecification {\n value; // the Base64String transformed from byte[] by Jackson\n accept_ValueSpecificationVisitor(visitor) {\n return visitor.visit_CByteArray(this);\n }\n}\n//# sourceMappingURL=V1_CByteArray.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * NOTE: this file holds the most basic utilties to deal with the graph and\n * metamodels. Any methods which requires importing some metamodel or graph\n * are meant to be put into helpers method, e.g. `DomainHelper`.\n *\n * This is to avoid circular dependencies and also to keep things in the\n * right layer\n */\nimport { ELEMENT_PATH_DELIMITER, SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX, } from './MetaModelConst.js';\nimport { findLast, guaranteeNonNullable, isString, recursiveOmit, } from '@finos/legend-shared';\nexport const extractElementNameFromPath = (fullPath) => guaranteeNonNullable(findLast(fullPath.split(ELEMENT_PATH_DELIMITER)));\nexport const extractPackagePathFromPath = (fullPath) => {\n const idx = fullPath.lastIndexOf(ELEMENT_PATH_DELIMITER);\n return idx === -1 ? undefined : fullPath.substring(0, idx);\n};\nexport const isValidIdentifier = (input, allowDollarSymbol) => allowDollarSymbol\n ? Boolean(input.match(/^[a-z][\\w\\d$]*$/))\n : Boolean(input.match(/^[a-z][\\w\\d]*$/));\nexport const matchFunctionName = (functionName, functionFullPaths) => Array.isArray(functionFullPaths)\n ? functionFullPaths.some((functionFullPath) => matchFunctionName(functionName, functionFullPath))\n : functionName === functionFullPaths ||\n extractElementNameFromPath(functionFullPaths) === functionName;\n/**\n * This method concatenate 2 fully-qualified elementh paths to form a single one\n * and then extracts the name and package part from it.\n */\nexport const resolvePackagePathAndElementName = (path, defaultPath) => {\n const index = path.lastIndexOf(ELEMENT_PATH_DELIMITER);\n if (index === -1) {\n return [defaultPath ?? '', path];\n }\n return [\n path.substring(0, index),\n path.substring(index + ELEMENT_PATH_DELIMITER.length, path.length),\n ];\n};\nexport const buildPath = (packagePath, name) => `${guaranteeNonNullable(packagePath, 'Package path is required')}${ELEMENT_PATH_DELIMITER}${guaranteeNonNullable(name, 'Name is required')}`;\nexport const createPath = (packagePath, name) => `${packagePath ? `${packagePath}${ELEMENT_PATH_DELIMITER}` : ''}${name}`;\n// TODO: we might need to support quoted identifier in the future\nexport const isValidPathIdentifier = (val) => Boolean(val.match(/^\\w[\\w$_-]*$/));\nexport const isValidFullPath = (fullPath) => Boolean(fullPath.match(/^(?:\\w[\\w$_-]*)(?:::\\w[\\w$_-]*)+$/));\nexport const isValidPath = (path) => Boolean(path.match(/^(?:\\w[\\w$_-]*)(?:::\\w[\\w$_-]*)*$/));\nexport const fromElementPathToMappingElementId = (className) => className.split(ELEMENT_PATH_DELIMITER).join('_');\n/**\n * Prune source information from object such as raw lambda, raw value specification, etc.\n *\n * NOTE: currently, there is no exhaustive way to do this. Majority of the cases, the source information field\n * is suffixed with `sourceInformation` (e.g. `profileSourceInformation`, `propertyTypeSourceInformation`),\n * however, we have sometimes deviated from this pattern in our protocol model, so we have fields like `classSourceInformation`,\n * etc. So this is really an optimistic, non-exhaustive prune.\n *\n * To do this exhaustively, we need to tweak this method to also check for the structure of the (sub)object to make sure\n * it is structually equivalent to the shape of source information to prune it. However, this is computationally expensive.\n *\n * NOTE: That aside, We should cleanup these in the backend and use pointer instead so source information is coupled\n * with the value instead of having custom-name source information fields like these, polluting the protocol models.\n */\nexport const pruneSourceInformation = (object) => recursiveOmit(object, (obj, propKey) => isString(propKey) &&\n propKey\n .toLowerCase()\n .endsWith(SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX.toLowerCase()));\n//# sourceMappingURL=MetaModelUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var DATA_CUBE_FUNCTIONS;\n(function (DATA_CUBE_FUNCTIONS) {\n // relation\n DATA_CUBE_FUNCTIONS[\"EXTEND\"] = \"meta::pure::functions::relation::extend\";\n DATA_CUBE_FUNCTIONS[\"FILTER\"] = \"meta::pure::functions::relation::filter\";\n DATA_CUBE_FUNCTIONS[\"GROUP_BY\"] = \"meta::pure::functions::relation::groupBy\";\n DATA_CUBE_FUNCTIONS[\"LIMIT\"] = \"meta::pure::functions::relation::limit\";\n DATA_CUBE_FUNCTIONS[\"PIVOT\"] = \"meta::pure::functions::relation::pivot\";\n DATA_CUBE_FUNCTIONS[\"RENAME\"] = \"meta::pure::functions::relation::rename\";\n DATA_CUBE_FUNCTIONS[\"SELECT\"] = \"meta::pure::functions::relation::select\";\n DATA_CUBE_FUNCTIONS[\"SLICE\"] = \"meta::pure::functions::relation::slice\";\n DATA_CUBE_FUNCTIONS[\"SORT\"] = \"meta::pure::functions::relation::sort\";\n // core\n DATA_CUBE_FUNCTIONS[\"CAST\"] = \"meta::pure::functions::lang::cast\";\n DATA_CUBE_FUNCTIONS[\"FROM\"] = \"meta::pure::mapping::from\";\n // sort\n DATA_CUBE_FUNCTIONS[\"ASC\"] = \"meta::pure::functions::relation::ascending\";\n DATA_CUBE_FUNCTIONS[\"DESC\"] = \"meta::pure::functions::relation::descending\";\n // filter\n DATA_CUBE_FUNCTIONS[\"AND\"] = \"meta::pure::functions::boolean::and\";\n DATA_CUBE_FUNCTIONS[\"NOT\"] = \"meta::pure::functions::boolean::not\";\n DATA_CUBE_FUNCTIONS[\"OR\"] = \"meta::pure::functions::boolean::or\";\n // aggregate\n})(DATA_CUBE_FUNCTIONS || (DATA_CUBE_FUNCTIONS = {}));\nexport const DEFAULT_LAMBDA_VARIABLE_NAME = 'x';\nexport const PIVOT_COLUMN_NAME_VALUE_SEPARATOR = '__|__';\nexport var DATA_CUBE_AGGREGATE_FUNCTION;\n(function (DATA_CUBE_AGGREGATE_FUNCTION) {\n DATA_CUBE_AGGREGATE_FUNCTION[\"SUM\"] = \"sum\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"MIN\"] = \"min\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"MAX\"] = \"max\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"COUNT\"] = \"count\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"AVG\"] = \"avg\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"FIRST\"] = \"first\";\n DATA_CUBE_AGGREGATE_FUNCTION[\"LAST\"] = \"last\";\n})(DATA_CUBE_AGGREGATE_FUNCTION || (DATA_CUBE_AGGREGATE_FUNCTION = {}));\nexport var DATA_CUBE_FILTER_OPERATION;\n(function (DATA_CUBE_FILTER_OPERATION) {\n DATA_CUBE_FILTER_OPERATION[\"EQUALS\"] = \"equal\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_EQUAL\"] = \"notEqual\";\n DATA_CUBE_FILTER_OPERATION[\"GREATER_THAN\"] = \"greaterThan\";\n DATA_CUBE_FILTER_OPERATION[\"GREATER_THAN_OR_EQUAL\"] = \"greaterThanOrEqual\";\n DATA_CUBE_FILTER_OPERATION[\"LESS_THAN\"] = \"lessThan\";\n DATA_CUBE_FILTER_OPERATION[\"LESS_THAN_OR_EQUAL\"] = \"lessThanOrEqual\";\n DATA_CUBE_FILTER_OPERATION[\"BLANK\"] = \"isEmpty\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_BLANK\"] = \"isNotEmpty\";\n DATA_CUBE_FILTER_OPERATION[\"CONTAINS\"] = \"contains\";\n DATA_CUBE_FILTER_OPERATION[\"NOT_CONTAINS\"] = \"notContains\";\n DATA_CUBE_FILTER_OPERATION[\"STARTS_WITH\"] = \"startsWith\";\n DATA_CUBE_FILTER_OPERATION[\"ENDS_WITH\"] = \"endsWith\";\n})(DATA_CUBE_FILTER_OPERATION || (DATA_CUBE_FILTER_OPERATION = {}));\nexport var DATA_CUBE_COLUMN_SORT_DIRECTION;\n(function (DATA_CUBE_COLUMN_SORT_DIRECTION) {\n DATA_CUBE_COLUMN_SORT_DIRECTION[\"ASCENDING\"] = \"ascending\";\n DATA_CUBE_COLUMN_SORT_DIRECTION[\"DESCENDING\"] = \"descending\";\n})(DATA_CUBE_COLUMN_SORT_DIRECTION || (DATA_CUBE_COLUMN_SORT_DIRECTION = {}));\n//# sourceMappingURL=DataCubeMetaModelConst.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { cloneSnapshot, } from '../core/DataCubeQuerySnapshot.js';\nimport { LogEvent, assertErrorThrown, deepEqual, guaranteeNonNullable, isBoolean, } from '@finos/legend-shared';\nimport { buildExecutableQueryFromSnapshot } from '../core/DataCubeQueryBuilder.js';\nimport { V1_Lambda, PRIMITIVE_TYPE, extractElementNameFromPath, } from '@finos/legend-graph';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION, DATA_CUBE_FILTER_OPERATION, DATA_CUBE_FUNCTIONS, } from '../DataCubeMetaModelConst.js';\nimport { APPLICATION_EVENT } from '@finos/legend-application';\nexport var GridClientSortDirection;\n(function (GridClientSortDirection) {\n GridClientSortDirection[\"ASCENDING\"] = \"asc\";\n GridClientSortDirection[\"DESCENDING\"] = \"desc\";\n})(GridClientSortDirection || (GridClientSortDirection = {}));\nexport const toRowData = (tds) => tds.rows.map((_row, rowIdx) => {\n const row = {};\n const cols = tds.columns;\n _row.values.forEach((value, colIdx) => {\n // `ag-grid` shows `false` value as empty string so we have\n // call `.toString()` to avoid this behavior.\n row[cols[colIdx]] = isBoolean(value) ? String(value) : value;\n });\n row.rowNumber = rowIdx;\n return row;\n});\nexport class DataCubeGridClientServerSideDataSource {\n grid;\n constructor(grid) {\n this.grid = grid;\n }\n async fetchRows(params) {\n const currentSnapshot = guaranteeNonNullable(this.grid.getLatestSnapshot());\n const syncedSnapshot = this.syncSnapshot(params.request, currentSnapshot);\n if (syncedSnapshot.uuid !== currentSnapshot.uuid) {\n this.grid.publishSnapshot(syncedSnapshot);\n }\n try {\n const executableQuery = buildExecutableQueryFromSnapshot(syncedSnapshot);\n const lambda = new V1_Lambda();\n lambda.body.push(executableQuery);\n const result = await this.grid.dataCubeState.engine.executeQuery(lambda);\n const rowData = toRowData(result.result);\n params.success({ rowData });\n }\n catch (error) {\n assertErrorThrown(error);\n this.grid.dataCubeState.applicationStore.notificationService.notifyError(error);\n params.fail();\n }\n }\n getRows(params) {\n this.fetchRows(params).catch((error) => {\n assertErrorThrown(error);\n this.grid.dataCubeState.applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), `Error ocurred while fetching data for grid should have been handled gracefully`, error);\n });\n }\n syncSnapshot(request, baseSnapshot) {\n let createNew = false;\n // --------------------------------- GROUP BY ---------------------------------\n const groupByExpandedKeys = request.groupKeys;\n const groupByColumns = request.rowGroupCols.map((r) => {\n const column = baseSnapshot.columns.find((col) => col.name === r.id);\n return {\n name: r.id,\n type: guaranteeNonNullable(column).type,\n };\n });\n const groupByAggColumns = request.valueCols.map((v) => {\n const type = baseSnapshot.columns.find((col) => col.name === v.field)?.type;\n return {\n name: v.field,\n type: type,\n function: v.aggFunc,\n };\n });\n let groupByFilter;\n for (let index = 0; index < groupByExpandedKeys.length; index++) {\n const groupFilter = {\n conditions: [\n {\n name: guaranteeNonNullable(groupByColumns.at(index)).name,\n type: PRIMITIVE_TYPE.STRING,\n operation: DATA_CUBE_FILTER_OPERATION.EQUALS,\n value: groupByExpandedKeys.at(index),\n },\n ],\n groupOperation: extractElementNameFromPath(DATA_CUBE_FUNCTIONS.AND),\n };\n groupByFilter = groupFilter;\n }\n // --------------------------------- SORT ---------------------------------\n const newSortColumns = request.sortModel.map((sortInfo) => {\n const column = guaranteeNonNullable(baseSnapshot.columns.find((col) => col.name === sortInfo.colId));\n return {\n name: sortInfo.colId,\n type: column.type,\n direction: sortInfo.sort === GridClientSortDirection.ASCENDING\n ? DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n : DATA_CUBE_COLUMN_SORT_DIRECTION.DESCENDING,\n };\n });\n if (!deepEqual(newSortColumns, baseSnapshot.sortColumns) ||\n !deepEqual(groupByExpandedKeys, baseSnapshot.groupByExpandedKeys) ||\n !deepEqual(groupByColumns, baseSnapshot.groupByColumns) ||\n !deepEqual(groupByAggColumns, baseSnapshot.groupByAggColumns) ||\n !deepEqual(groupByFilter, baseSnapshot.groupByFilter)) {\n createNew = true;\n }\n // --------------------------------- FINALIZE ---------------------------------\n if (createNew) {\n const newSnapshot = cloneSnapshot(baseSnapshot);\n newSnapshot.sortColumns = newSortColumns;\n newSnapshot.groupByExpandedKeys = groupByExpandedKeys;\n newSnapshot.groupByColumns = groupByColumns;\n newSnapshot.groupByAggColumns = groupByAggColumns;\n newSnapshot.groupByFilter = groupByFilter;\n return newSnapshot;\n }\n return baseSnapshot;\n }\n}\n//# sourceMappingURL=DataCubeGridClientEngine.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, optional, primitive } from 'serializr';\nimport { SerializationFactory, usingModelSchema } from '@finos/legend-shared';\nimport { V1_sourceInformationSerialization } from '../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nexport var V1_EngineErrorType;\n(function (V1_EngineErrorType) {\n V1_EngineErrorType[\"COMPILATION\"] = \"COMPILATION\";\n V1_EngineErrorType[\"PARSER\"] = \"PARSER\";\n})(V1_EngineErrorType || (V1_EngineErrorType = {}));\nexport class V1_EngineError {\n message = '';\n errorType;\n sourceInformation;\n static serialization = new SerializationFactory(createModelSchema(V1_EngineError, {\n errorType: optional(primitive()),\n message: primitive(),\n sourceInformation: usingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\n//# sourceMappingURL=V1_EngineError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, makeObservable, observable } from 'mobx';\nimport { DataCubeEditorSortState } from './DataCubeEditorSortState.js';\nimport { DataCubeQueryCodeEditorState } from './DataCubeEditorCodeState.js';\nimport { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSubscriber.js';\nimport { cloneSnapshot, } from '../core/DataCubeQuerySnapshot.js';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nexport var DATA_CUBE_EDITOR_TAB;\n(function (DATA_CUBE_EDITOR_TAB) {\n DATA_CUBE_EDITOR_TAB[\"COLUMNS\"] = \"Columns\";\n DATA_CUBE_EDITOR_TAB[\"VERTICAL_PIVOTS\"] = \"VPivots\";\n DATA_CUBE_EDITOR_TAB[\"HORIZONTAL_PIVOTS\"] = \"HPivots\";\n DATA_CUBE_EDITOR_TAB[\"SORTS\"] = \"Sorts\";\n DATA_CUBE_EDITOR_TAB[\"EXTENDED_COLUMNS\"] = \"Extended Columns\";\n DATA_CUBE_EDITOR_TAB[\"GENERAL_PROPERTIES\"] = \"General Properties\";\n DATA_CUBE_EDITOR_TAB[\"COLUMN_PROPERTIES\"] = \"Column Properties\";\n DATA_CUBE_EDITOR_TAB[\"Code\"] = \"Code\";\n // DEVELOPER_OPTIONS = 'Developer',\n // PIVOT_LAYOUT = 'Pivot Layout',\n})(DATA_CUBE_EDITOR_TAB || (DATA_CUBE_EDITOR_TAB = {}));\nexport class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {\n dataCubeState;\n sort;\n codeEditorState; // TODO: move to editor state\n isPanelOpen = false;\n currentTab = DATA_CUBE_EDITOR_TAB.SORTS;\n constructor(dataCubeState) {\n super(dataCubeState.snapshotManager);\n makeObservable(this, {\n applyChanges: action,\n currentTab: observable,\n setCurrentTab: action,\n isPanelOpen: observable,\n openPanel: action,\n closePanel: action,\n });\n this.codeEditorState = new DataCubeQueryCodeEditorState(this.dataCubeState);\n this.dataCubeState = dataCubeState;\n this.sort = new DataCubeEditorSortState(this.dataCubeState);\n }\n openPanel() {\n this.isPanelOpen = true;\n }\n closePanel() {\n this.isPanelOpen = false;\n }\n setCurrentTab(val) {\n this.currentTab = val;\n }\n applyChanges() {\n // let createNew = false;\n const baseSnapshot = guaranteeNonNullable(this.getLatestSnapshot());\n const snapshot = cloneSnapshot(baseSnapshot);\n const createNew = this.sort.buildSnapshot(snapshot, baseSnapshot);\n if (createNew) {\n this.publishSnapshot(snapshot);\n }\n }\n async applySnapshot(snapshot) {\n this.sort.applySnaphot(snapshot);\n }\n}\n//# sourceMappingURL=DataCubeEditorState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, isString, uuid } from '@finos/legend-shared';\n// Core\nexport var BuilderType;\n(function (BuilderType) {\n BuilderType[\"CLASS_BUILDER\"] = \"classBuilder\";\n BuilderType[\"TDS_BUILDER\"] = \"tdsBuilder\";\n BuilderType[\"JSON_BUILDER\"] = \"json\";\n})(BuilderType || (BuilderType = {}));\nexport var ExecutionActivityType;\n(function (ExecutionActivityType) {\n ExecutionActivityType[\"RELATIONAL\"] = \"relational\";\n ExecutionActivityType[\"RELATIONAL_EXECUTION_ACTIVITY\"] = \"RelationalExecutionActivity\";\n ExecutionActivityType[\"AGGREGATION_AWARE_ACTIVITY\"] = \"aggregationAware\";\n})(ExecutionActivityType || (ExecutionActivityType = {}));\n// TODO: Refactor to use external format (https://github.com/finos/legend-studio/issues/732)\nexport var EXECUTION_SERIALIZATION_FORMAT;\n(function (EXECUTION_SERIALIZATION_FORMAT) {\n EXECUTION_SERIALIZATION_FORMAT[\"CSV\"] = \"CSV\";\n})(EXECUTION_SERIALIZATION_FORMAT || (EXECUTION_SERIALIZATION_FORMAT = {}));\nexport class ResultBuilder {\n _type;\n constructor(type) {\n this._type = type;\n }\n}\n// ------------------------------------------ Execution Activities -----------------------------------------------\nexport class ExecutionActivities {\n}\nexport class RelationalExecutionActivities extends ExecutionActivities {\n sql;\n comment;\n constructor(sql) {\n super();\n this.sql = sql;\n }\n}\nexport class AggregationAwareActivities extends ExecutionActivities {\n rewrittenQuery;\n}\nexport class UnknownExecutionActivities extends ExecutionActivities {\n values;\n constructor(content) {\n super();\n this.values = content;\n }\n}\nexport class ExecutionResult {\n builder;\n activities;\n}\n// ------------------------------------------ Model -----------------------------------------------\nexport class JsonBuilder {\n _type = BuilderType.JSON_BUILDER;\n}\nexport class JsonExecutionResult extends ExecutionResult {\n values;\n}\nexport class RawExecutionResult extends ExecutionResult {\n value;\n constructor(content) {\n super();\n this.value = content;\n }\n}\n// ------------------------------------------ TDS -----------------------------------------------\n/**\n * TODO?: maybe we converge to use TDSColumn\n *\n * Since here, we're building out the result builder config, we don't need\n * to fully resolve all the references, hence we have this simplified version of TDSColumn\n */\nexport class INTERNAL__TDSColumn {\n name;\n type;\n relationalType;\n doc;\n}\nexport class TDSBuilder extends ResultBuilder {\n columns = [];\n constructor() {\n super(BuilderType.TDS_BUILDER);\n }\n}\nexport class TDSRow {\n values = [];\n}\nexport class TabularDataSet {\n columns = [];\n rows = [];\n}\nexport class TDSExecutionResult extends ExecutionResult {\n _UUID = uuid();\n builder = new TDSBuilder();\n result = new TabularDataSet();\n}\nexport class ClassBuilder extends ResultBuilder {\n _type = BuilderType.CLASS_BUILDER;\n}\nexport class ClassExecutionResult extends ExecutionResult {\n builder = new ClassBuilder(BuilderType.CLASS_BUILDER);\n objects;\n}\nexport const getTDSRowRankByColumnInAsc = (a, b, colIndex) => {\n const a1 = a.values[colIndex];\n const b1 = b.values[colIndex];\n if (a1 === null || a1 === undefined) {\n return -1;\n }\n if (b1 === null || b1 === undefined) {\n return 1;\n }\n if (isString(a1) && isString(b1)) {\n return a1.localeCompare(b1);\n }\n else {\n return Number(guaranteeNonNullable(a1)) - Number(guaranteeNonNullable(b1));\n }\n};\n//# sourceMappingURL=ExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PRIMITIVE_TYPE, V1_AppliedFunction, V1_AppliedProperty, V1_CBoolean, V1_CDateTime, V1_CDecimal, V1_CFloat, V1_CInteger, V1_CStrictDate, V1_CStrictTime, V1_CString, V1_ClassInstance, V1_ClassInstanceType, V1_ColSpec, V1_ColSpecArray, V1_Collection, V1_Lambda, V1_Multiplicity, V1_PackageableElementPtr, V1_Variable, V1_deserializeValueSpecification, extractElementNameFromPath, } from '@finos/legend-graph';\nimport { guaranteeNonNullable, guaranteeIsString, guaranteeIsBoolean, guaranteeIsNumber, UnsupportedOperationError, } from '@finos/legend-shared';\nimport { DATA_CUBE_AGGREGATE_FUNCTION, DATA_CUBE_COLUMN_SORT_DIRECTION, DATA_CUBE_FILTER_OPERATION, DATA_CUBE_FUNCTIONS, DEFAULT_LAMBDA_VARIABLE_NAME, } from '../DataCubeMetaModelConst.js';\nfunction createColSpec(name, type, function1, function2) {\n const instance = new V1_ClassInstance();\n instance.type = V1_ClassInstanceType.COL_SPEC;\n const colSpec = new V1_ColSpec();\n colSpec.name = name;\n colSpec.type = type;\n colSpec.function1 = function1;\n colSpec.function2 = function2;\n instance.value = colSpec;\n return instance;\n}\nfunction getAggregationColSpec(column, functionName, columnType, \n// Temporary. Remove it when we support groupBy with empty aggregations\ncolumnName) {\n const colSpec = new V1_ColSpec();\n const aggLambda = new V1_Lambda();\n const property = new V1_AppliedProperty();\n property.property = column;\n property.class = columnType;\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n property.parameters = [defaultVariable];\n aggLambda.body.push(property);\n aggLambda.parameters.push(defaultVariable);\n colSpec.function1 = aggLambda;\n const funcLambda = new V1_Lambda();\n const aggFunc = new V1_AppliedFunction();\n aggFunc.function = functionName;\n const aggVariable = new V1_Variable();\n aggVariable.name = 'agg';\n funcLambda.body.push(aggFunc);\n aggFunc.parameters.push(aggVariable);\n funcLambda.parameters.push(aggVariable);\n colSpec.function2 = funcLambda;\n colSpec.name = columnName ?? column;\n return colSpec;\n}\nfunction getPrimitiveValueSpecification(type, column) {\n switch (type) {\n case PRIMITIVE_TYPE.STRING: {\n const stringValue = new V1_CString();\n stringValue.value = guaranteeIsString(column);\n return stringValue;\n }\n case PRIMITIVE_TYPE.BOOLEAN: {\n const booleanValue = new V1_CBoolean();\n booleanValue.value = guaranteeIsBoolean(column);\n return booleanValue;\n }\n case PRIMITIVE_TYPE.NUMBER:\n case PRIMITIVE_TYPE.DECIMAL: {\n const cDecimal = new V1_CDecimal();\n cDecimal.value = guaranteeIsNumber(column);\n return cDecimal;\n }\n case PRIMITIVE_TYPE.INTEGER: {\n const cInteger = new V1_CInteger();\n cInteger.value = guaranteeIsNumber(column);\n return cInteger;\n }\n case PRIMITIVE_TYPE.FLOAT: {\n const cFloat = new V1_CFloat();\n cFloat.value = guaranteeIsNumber(column);\n return cFloat;\n }\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.DATETIME: {\n const cDateTime = new V1_CDateTime();\n cDateTime.value = guaranteeIsString(column);\n return cDateTime;\n }\n case PRIMITIVE_TYPE.STRICTDATE: {\n const cStrictDate = new V1_CStrictDate();\n cStrictDate.value = guaranteeIsString(column);\n return cStrictDate;\n }\n case PRIMITIVE_TYPE.STRICTTIME: {\n const cStrictTime = new V1_CStrictTime();\n cStrictTime.value = guaranteeIsString(column);\n return cStrictTime;\n }\n default:\n throw new UnsupportedOperationError(`Unsupported dataCube column type ${type}`);\n }\n}\nfunction processFilterQuery(filter) {\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n if ('groupOperation' in filter) {\n const groupFilter = filter;\n let conditionExpressions = [];\n groupFilter.conditions.forEach((condition) => {\n const conditionExpression = processFilterQuery(condition);\n conditionExpressions.push(conditionExpression);\n if (conditionExpressions.length === 2) {\n const groupCondition = groupFilter.groupOperation;\n const groupFunc = new V1_AppliedFunction();\n groupFunc.function = groupCondition;\n groupFunc.parameters = conditionExpressions;\n conditionExpressions = [groupFunc];\n }\n });\n if (conditionExpressions.length === 1) {\n return guaranteeNonNullable(conditionExpressions[0]);\n }\n }\n else {\n const condition = filter;\n const filterCondition = new V1_AppliedFunction();\n const property = new V1_AppliedProperty();\n property.property = condition.name;\n property.class = condition.type;\n property.parameters = [defaultVariable];\n switch (condition.operation) {\n case DATA_CUBE_FILTER_OPERATION.EQUALS:\n case DATA_CUBE_FILTER_OPERATION.GREATER_THAN:\n case DATA_CUBE_FILTER_OPERATION.GREATER_THAN_OR_EQUAL:\n case DATA_CUBE_FILTER_OPERATION.LESS_THAN:\n case DATA_CUBE_FILTER_OPERATION.LESS_THAN_OR_EQUAL:\n case DATA_CUBE_FILTER_OPERATION.CONTAINS:\n case DATA_CUBE_FILTER_OPERATION.ENDS_WITH:\n case DATA_CUBE_FILTER_OPERATION.STARTS_WITH: {\n filterCondition.function = condition.operation;\n filterCondition.parameters.push(property);\n filterCondition.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.BLANK: {\n filterCondition.function = condition.operation;\n filterCondition.parameters.push(property);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_EQUAL: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.EQUALS;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_BLANK: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.BLANK;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n case DATA_CUBE_FILTER_OPERATION.NOT_CONTAINS: {\n filterCondition.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.NOT);\n const filterConditionFunc = new V1_AppliedFunction();\n filterConditionFunc.function = DATA_CUBE_FILTER_OPERATION.CONTAINS;\n filterConditionFunc.parameters.push(property);\n filterConditionFunc.parameters.push(getPrimitiveValueSpecification(condition.type, condition.value));\n filterCondition.parameters.push(filterConditionFunc);\n break;\n }\n default:\n throw new UnsupportedOperationError(`Unsupported filter operation ${condition.operation}`);\n }\n return filterCondition;\n }\n throw new UnsupportedOperationError(`Unsupported dataCube filter`, filter);\n}\nexport function buildExecutableQueryFromSnapshot(snapshot) {\n const sourceQuery = V1_deserializeValueSpecification(snapshot.sourceQuery, []);\n const sequence = [];\n // --------------------------------- LEAF EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FILTER ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY FILTER ---------------------------------\n if (snapshot.groupByFilter) {\n const filter = snapshot.groupByFilter;\n const filterValueSpec = processFilterQuery(filter);\n const filterLambda = new V1_Lambda();\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n filterLambda.body = [filterValueSpec];\n filterLambda.parameters = [defaultVariable];\n const filterFunc = new V1_AppliedFunction();\n filterFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.FILTER);\n filterFunc.parameters.push(filterLambda);\n sequence.push(filterFunc);\n }\n // --------------------------------- RENAME ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY ---------------------------------\n // TODO: @akphi - implement this\n if (snapshot.groupByColumns.length) {\n const groupByInstance = new V1_ClassInstance();\n groupByInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n const groupByColSpecArray = new V1_ColSpecArray();\n const aggregationColSpecArray = new V1_ColSpecArray();\n const aggregationInstance = new V1_ClassInstance();\n aggregationInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n if (snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n const groupKeys = snapshot.groupByExpandedKeys;\n for (let index = 0; index <= groupKeys.length; index++) {\n const currentGroupByColumn = snapshot.groupByColumns[index];\n const columnSpec = new V1_ColSpec();\n columnSpec.name = guaranteeNonNullable(currentGroupByColumn).name;\n groupByColSpecArray.colSpecs.push(columnSpec);\n }\n // Temporary. Remove it later when we support empty aggregations\n if (snapshot.groupByAggColumns.length === 0) {\n const column = guaranteeNonNullable(snapshot.groupByColumns[0]);\n const colSpec = getAggregationColSpec(column.name, DATA_CUBE_AGGREGATE_FUNCTION.COUNT, PRIMITIVE_TYPE.STRING, DATA_CUBE_AGGREGATE_FUNCTION.COUNT);\n aggregationColSpecArray.colSpecs.push(colSpec);\n }\n }\n if (snapshot.groupByExpandedKeys.length === 0 ||\n snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n snapshot.groupByAggColumns.forEach((agg) => {\n const colSpec = getAggregationColSpec(agg.name, agg.function, agg.type);\n aggregationColSpecArray.colSpecs.push(colSpec);\n });\n }\n groupByInstance.value = groupByColSpecArray;\n aggregationInstance.value = aggregationColSpecArray;\n if (groupByColSpecArray.colSpecs.length !== 0 ||\n aggregationColSpecArray.colSpecs.length !== 0) {\n const groupBy = new V1_AppliedFunction();\n groupBy.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.GROUP_BY);\n groupBy.parameters = [groupByInstance, aggregationInstance];\n sequence.push(groupBy);\n }\n }\n // --------------------------------- SELECT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- PIVOT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- CAST ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP EXTEND ---------------------------------\n if (snapshot.groupByExpandedKeys.length !== snapshot.groupByColumns.length) {\n const extendFunc = new V1_AppliedFunction();\n extendFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.EXTEND);\n const classInstance = new V1_ClassInstance();\n classInstance.type = V1_ClassInstanceType.COL_SPEC_ARRAY;\n const colSpecArray = new V1_ColSpecArray();\n classInstance.value = colSpecArray;\n snapshot.columns.forEach((col) => {\n if (!snapshot.groupByColumns.find((c) => c.name === col.name)) {\n const colSpec = new V1_ColSpec();\n const lambda = new V1_Lambda();\n const defaultVariable = new V1_Variable();\n defaultVariable.name = DEFAULT_LAMBDA_VARIABLE_NAME;\n lambda.parameters.push(defaultVariable);\n const variableValue = new V1_CString();\n variableValue.value = '';\n lambda.body.push(variableValue);\n colSpec.function1 = lambda;\n colSpec.name = col.name;\n colSpecArray.colSpecs.push(colSpec);\n }\n });\n extendFunc.parameters.push(classInstance);\n sequence.push(extendFunc);\n }\n // --------------------------------- SORT ---------------------------------\n if (snapshot.sortColumns.length) {\n const sort = new V1_AppliedFunction();\n sort.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT);\n const sortInfos = new V1_Collection();\n sortInfos.multiplicity = new V1_Multiplicity(snapshot.sortColumns.length, snapshot.sortColumns.length);\n snapshot.sortColumns.forEach((sortCol) => {\n if (snapshot.groupByColumns.length ===\n snapshot.groupByExpandedKeys.length ||\n snapshot.groupByColumns.map((col) => col.name).indexOf(sortCol.name) ===\n snapshot.groupByExpandedKeys.length) {\n const sortInfo = new V1_AppliedFunction();\n sortInfo.function = extractElementNameFromPath(sortCol.direction === DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n ? DATA_CUBE_FUNCTIONS.ASC\n : DATA_CUBE_FUNCTIONS.DESC);\n sortInfo.parameters.push(createColSpec(sortCol.name));\n sortInfos.values.push(sortInfo);\n }\n });\n sort.parameters.push(sortInfos);\n if (sortInfos.values.length) {\n sequence.push(sort);\n }\n }\n // --------------------------------- LIMIT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FROM ---------------------------------\n const fromFunc = new V1_AppliedFunction();\n fromFunc.function = extractElementNameFromPath(DATA_CUBE_FUNCTIONS.FROM);\n const runtimePtr = new V1_PackageableElementPtr();\n runtimePtr.fullPath = snapshot.runtime;\n fromFunc.parameters.push(runtimePtr);\n sequence.push(fromFunc);\n // --------------------------------- FINALIZE ---------------------------------\n if (!sequence.length) {\n return sourceQuery;\n }\n for (let i = 0; i < sequence.length; i++) {\n guaranteeNonNullable(sequence[i]).parameters.unshift(i === 0 ? sourceQuery : guaranteeNonNullable(sequence[i - 1]));\n }\n return guaranteeNonNullable(sequence[sequence.length - 1]);\n}\n// export async function buildPersistentQueryFromSnapshot(\n// snapshot: DataCubeQuerySnapshot,\n// ) {\n// return new DataCubeQuery(\n// snapshot.name,\n// snapshot.sourceQuery,\n// snapshot.configuration,\n// );\n// }\n// name!: string;\n// query!: string;\n// partialQuery!: string;\n// source!: DataCubeQuerySource;\n// configuration!: DataCubeConfiguration;\n//# sourceMappingURL=DataCubeQueryBuilder.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class DataCubeQuerySnapshotSubscriber {\n manager;\n latestSnapshot;\n constructor(snapshotManager) {\n this.manager = snapshotManager;\n }\n async receiveSnapshot(snapshot) {\n this.latestSnapshot = snapshot;\n await this.applySnapshot(snapshot);\n }\n publishSnapshot(snapshot) {\n this.latestSnapshot = snapshot;\n this.manager.broadcastSnapshot(snapshot);\n }\n getLatestSnapshot() {\n return this.latestSnapshot;\n }\n}\n//# sourceMappingURL=DataCubeQuerySnapshotSubscriber.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../DataCubeMetaModelConst.js';\nimport { GridClientSortDirection } from './DataCubeGridClientEngine.js';\nimport { PRIMITIVE_TYPE } from '@finos/legend-graph';\n// export const getTDSSortOrder = (sortOrder: string): TDS_SORT_ORDER => {\n// switch (sortOrder) {\n// case 'asc':\n// return TDS_SORT_ORDER.ASCENDING;\n// case 'desc':\n// return TDS_SORT_ORDER.DESCENDING;\n// default:\n// throw new Error(`Unsupported tds sort order ${sortOrder}`);\n// }\n// };\n// const getTDSSortModel = (sort: TDS_SORT_ORDER): string => {\n// switch (sort) {\n// case TDS_SORT_ORDER.ASCENDING:\n// return 'asc';\n// case TDS_SORT_ORDER.DESCENDING:\n// return 'desc';\n// default:\n// throw new Error(`Unsupported`);\n// }\n// };\n// export const getAggregationFunction = (\n// aggFunc: string,\n// ): TDS_AGGREGATION_FUNCTION => {\n// switch (aggFunc) {\n// case 'sum':\n// return TDS_AGGREGATION_FUNCTION.SUM;\n// case 'min':\n// return TDS_AGGREGATION_FUNCTION.MIN;\n// case 'max':\n// return TDS_AGGREGATION_FUNCTION.MAX;\n// case 'count':\n// return TDS_AGGREGATION_FUNCTION.COUNT;\n// default:\n// throw new Error(`Unsupported aggregation function ${aggFunc}`);\n// }\n// };\n// export const getTDSFilterOperation = (\n// filterOperation: string,\n// ): TDS_FILTER_OPERATION => {\n// switch (filterOperation) {\n// case 'equals':\n// return TDS_FILTER_OPERATION.EQUALS;\n// case 'notEqual':\n// return TDS_FILTER_OPERATION.NOT_EQUAL;\n// case 'greaterThan':\n// return TDS_FILTER_OPERATION.GREATER_THAN;\n// case 'greaterThanOrEqual':\n// return TDS_FILTER_OPERATION.GREATER_THAN_OR_EQUAL;\n// case 'lessThan':\n// return TDS_FILTER_OPERATION.LESS_THAN;\n// case 'lessThanOrEqual':\n// return TDS_FILTER_OPERATION.LESS_THAN_OR_EQUAL;\n// case 'blank':\n// return TDS_FILTER_OPERATION.BLANK;\n// case 'notBlank':\n// return TDS_FILTER_OPERATION.NOT_BLANK;\n// case 'contains':\n// return TDS_FILTER_OPERATION.CONTAINS;\n// case 'notContains':\n// return TDS_FILTER_OPERATION.NOT_CONTAINS;\n// case 'startsWith':\n// return TDS_FILTER_OPERATION.STARTS_WITH;\n// case 'endsWith':\n// return TDS_FILTER_OPERATION.ENDS_WITH;\n// default:\n// throw new Error(`Unsupported filter operation ${filterOperation}`);\n// }\n// };\n// export const getFilterColumnType = (type: string): PRIMITIVE_TYPE => {\n// switch (type) {\n// case 'text':\n// return PRIMITIVE_TYPE.STRING;\n// case 'number':\n// return PRIMITIVE_TYPE.NUMBER;\n// case 'boolean':\n// return PRIMITIVE_TYPE.BOOLEAN;\n// case 'date':\n// return PRIMITIVE_TYPE.DATE;\n// default:\n// throw new Error(`Unsupported filter type ${type}`);\n// }\n// };\n// export const getFilterModeltype = (type: PRIMITIVE_TYPE): string => {\n// switch (type) {\n// case PRIMITIVE_TYPE.STRING:\n// return 'text';\n// case PRIMITIVE_TYPE.NUMBER:\n// return 'number';\n// case PRIMITIVE_TYPE.BOOLEAN:\n// return 'boolean';\n// case PRIMITIVE_TYPE.DATE:\n// return 'date';\n// default:\n// throw new Error(`Unsupported filter type ${type}`);\n// }\n// };\n// export const getTDSColumnCustomizations = (\n// result: TDSExecutionResult,\n// columnName: string,\n// tdsRequest?: TDSRequest | undefined,\n// ): object => {\n// if (!tdsRequest) {\n// return {};\n// }\n// const sort = tdsRequest.sort.find((c) => c.column === columnName)?.order;\n// const rowGroup = tdsRequest.groupBy.columns.find((c) => c === columnName);\n// const aggFunc = tdsRequest.groupBy.aggregations.find(\n// (c) => c.column === columnName,\n// );\n// return {\n// sort: sort ? getTDSSortModel(sort) : undefined,\n// rowGroup: Boolean(rowGroup),\n// hide: Boolean(rowGroup),\n// aggFunc: aggFunc?.function,\n// };\n// };\n// export const getAggregationTDSColumnCustomizations = (\n// result: TDSExecutionResult,\n// columnName: string,\n// ): object => {\n// const columnType = result.builder.columns.find(\n// (col) => col.name === columnName,\n// )?.type;\n// switch (columnType) {\n// case PRIMITIVE_TYPE.STRING:\n// return {\n// filter: 'agTextColumnFilter',\n// allowedAggFuncs: ['count'],\n// };\n// case PRIMITIVE_TYPE.DATE:\n// case PRIMITIVE_TYPE.DATETIME:\n// case PRIMITIVE_TYPE.STRICTDATE:\n// return {\n// filter: 'agDateColumnFilter',\n// allowedAggFuncs: ['count'],\n// };\n// case PRIMITIVE_TYPE.DECIMAL:\n// case PRIMITIVE_TYPE.INTEGER:\n// case PRIMITIVE_TYPE.FLOAT:\n// return {\n// filter: 'agNumberColumnFilter',\n// allowedAggFuncs: ['count', 'sum', 'max', 'min', 'avg'],\n// };\n// default:\n// return {\n// allowedAggFuncs: ['count'],\n// };\n// }\n// };\n// TODO: @akphi - do we need a default column definition?\n// export const getDefaultColumnDefintions = (): object => ({\n// minWidth: 50,\n// sortable: true,\n// flex: 1,\n// resizable: true,\n// enableRowGroup: true,\n// allowedAggFuncs: ['count', 'sum', 'max', 'min', 'avg'],\n// enableValue: true,\n// menuTabs: ['filterMenuTab', 'generalMenuTab', 'columnsMenuTab'],\n// });\n// export const getTDSRowData = (tds: TabularDataSet): TDSRowDataType[] =>\n// tds.rows.map((_row, rowIdx) => {\n// const row: TDSRowDataType = {};\n// const cols = tds.columns;\n// _row.values.forEach((value, colIdx) => {\n// // `ag-grid` shows `false` value as empty string so we have\n// // call `.toString()` to avoid this behavior.\n// row[cols[colIdx] as string] = isBoolean(value) ? String(value) : value;\n// });\n// row.rowNumber = rowIdx;\n// return row;\n// });\nfunction buildColumnSortSpecification(colName, snapshot) {\n const sortCol = snapshot.sortColumns.find((c) => c.name === colName);\n if (!sortCol) {\n return {\n sort: null,\n sortIndex: null,\n };\n }\n return {\n sort: sortCol.direction === DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n ? GridClientSortDirection.ASCENDING\n : GridClientSortDirection.DESCENDING,\n sortIndex: snapshot.sortColumns.indexOf(sortCol),\n };\n}\nfunction getAggregationColumnCustomizations(colName, snapshot) {\n const columnType = snapshot.columns.find((col) => col.name === colName)?.type;\n switch (columnType) {\n case PRIMITIVE_TYPE.STRING:\n return [];\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.DATETIME:\n case PRIMITIVE_TYPE.STRICTDATE:\n return [];\n case PRIMITIVE_TYPE.DECIMAL:\n case PRIMITIVE_TYPE.INTEGER:\n case PRIMITIVE_TYPE.FLOAT:\n return ['count', 'sum', 'max', 'min', 'avg'];\n default:\n return [];\n }\n}\nfunction buildColumnGroupBySpecification(colName, snapshot) {\n const rowGroup = snapshot.groupByColumns.find((c) => c.name === colName);\n const aggColumn = snapshot.groupByAggColumns.find((c) => c.name === colName);\n return {\n rowGroup: Boolean(rowGroup),\n hide: Boolean(rowGroup),\n aggFunc: aggColumn ? aggColumn.function : null,\n allowedAggFuncs: getAggregationColumnCustomizations(colName, snapshot),\n };\n}\nexport function generateGridOptionsFromSnapshot(snapshot) {\n const gridOptions = {\n columnDefs: snapshot.columns.map((col) => ({\n headerName: col.name,\n field: col.name,\n ...buildColumnSortSpecification(col.name, snapshot),\n // configurable\n minWidth: 50,\n sortable: true,\n flex: 1,\n resizable: true,\n enableRowGroup: true,\n enableValue: true,\n menuTabs: ['generalMenuTab', 'columnsMenuTab'],\n ...buildColumnGroupBySpecification(col.name, snapshot),\n })),\n };\n return gridOptions;\n}\n//# sourceMappingURL=DataCubeGridQuerySnapshotAnalyzer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { flow, makeObservable, observable } from 'mobx';\nimport { DataCubeGridClientServerSideDataSource } from './DataCubeGridClientEngine.js';\nimport { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSubscriber.js';\nimport { generateGridOptionsFromSnapshot } from './DataCubeGridQuerySnapshotAnalyzer.js';\nexport class DataCubeGridState extends DataCubeQuerySnapshotSubscriber {\n dataCubeState;\n _client;\n clientDataSource;\n clientLicenseKey;\n constructor(dataCubeState) {\n super(dataCubeState.snapshotManager);\n makeObservable(this, {\n clientLicenseKey: observable,\n initialize: flow,\n });\n this.dataCubeState = dataCubeState;\n this.clientDataSource = new DataCubeGridClientServerSideDataSource(this);\n }\n configureClient(val) {\n this._client = val;\n }\n get client() {\n return guaranteeNonNullable(this._client, 'Grid client is not configured');\n }\n *initialize() {\n this.clientLicenseKey =\n (yield this.dataCubeState.editorStore.client.getGridClientLicenseKey());\n }\n async applySnapshot(snapshot) {\n const gridOptions = generateGridOptionsFromSnapshot(snapshot);\n this.client.updateGridOptions(gridOptions);\n }\n}\n//# sourceMappingURL=DataCubeGridState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { deepEqual } from '@finos/legend-shared';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../DataCubeMetaModelConst.js';\nexport class DataCubeEditorSortColumnState {\n column;\n direction;\n constructor(column, direction) {\n makeObservable(this, {\n direction: observable,\n setDirection: action,\n });\n this.column = column;\n this.direction = direction;\n }\n setDirection(val) {\n this.direction = val;\n }\n}\nexport class DataCubeEditorSortState {\n dataCubeState;\n availableColumns = [];\n selectedColumns = [];\n availableColumnsSearchText = '';\n selectedColumnsSearchText = '';\n constructor(dataCubeState) {\n this.dataCubeState = dataCubeState;\n makeObservable(this, {\n availableColumns: observable,\n selectedColumns: observable,\n availableColumnsSearchText: observable,\n selectedColumnsSearchText: observable,\n setAvailableColumns: action,\n setSelectedColumns: action,\n addAvailableColumn: action,\n addSelectedColumn: action,\n addAllAvailableColumns: action,\n addAllSelectedColumns: action,\n setSelectedColumnsSearchText: action,\n setAvailableColumnsSearchText: action,\n availableColumnsSearchResults: computed,\n selectedColumnsSearchResults: computed,\n });\n }\n setAvailableColumns(val) {\n this.availableColumns = val;\n }\n setSelectedColumns(val) {\n this.selectedColumns = val;\n }\n addAvailableColumn(columnName) {\n const column = this.availableColumns.find((col) => col.column.name === columnName);\n if (column) {\n this.setAvailableColumns(this.availableColumns.filter((col) => col.column.name !== columnName));\n this.setSelectedColumns(this.selectedColumns.concat(column));\n }\n }\n addSelectedColumn(columnName) {\n const column = this.selectedColumns.find((col) => col.column.name === columnName);\n if (column) {\n this.setSelectedColumns(this.selectedColumns.filter((col) => col.column.name !== columnName));\n this.setAvailableColumns(this.availableColumns.concat(column));\n }\n }\n addAllAvailableColumns() {\n this.setSelectedColumns(this.selectedColumns.concat(this.availableColumns));\n this.setAvailableColumns([]);\n }\n addAllSelectedColumns() {\n this.setAvailableColumns(this.availableColumns.concat(this.selectedColumns));\n this.setSelectedColumns([]);\n }\n setAvailableColumnsSearchText(val) {\n this.availableColumnsSearchText = val;\n }\n setSelectedColumnsSearchText(val) {\n this.selectedColumnsSearchText = val;\n }\n get availableColumnsSearchResults() {\n if (this.availableColumnsSearchText) {\n return this.availableColumns.filter((col) => col.column.name\n .toLowerCase()\n .includes(this.availableColumnsSearchText.toLowerCase()));\n }\n else {\n return this.availableColumns;\n }\n }\n get selectedColumnsSearchResults() {\n if (this.selectedColumnsSearchText) {\n return this.selectedColumns.filter((col) => col.column.name\n .toLowerCase()\n .includes(this.selectedColumnsSearchText.toLowerCase()));\n }\n else {\n return this.selectedColumns;\n }\n }\n applySnaphot(snapshot) {\n const sortColumns = snapshot.sortColumns;\n this.setAvailableColumns(snapshot.columns\n .filter((col) => !sortColumns.find((sortCol) => sortCol.name === col.name))\n .map((col) => new DataCubeEditorSortColumnState(col, DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING)));\n this.setSelectedColumns(sortColumns.map((sortCol) => new DataCubeEditorSortColumnState(snapshot.columns.find((col) => col.name === sortCol.name), sortCol.direction)));\n }\n buildSnapshot(newSnapshot, baseSnapshot) {\n const newSortColumns = this.selectedColumns.map((sortInfo) => ({\n name: sortInfo.column.name,\n type: sortInfo.column.type,\n direction: sortInfo.direction,\n }));\n if (!deepEqual(newSortColumns, baseSnapshot.sortColumns)) {\n newSnapshot.sortColumns = newSortColumns;\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=DataCubeEditorSortState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class SourceInformation {\n sourceId;\n startLine;\n startColumn;\n endLine;\n endColumn;\n constructor(sourceId, startLine, startColumn, endLine, endColumn) {\n this.sourceId = sourceId;\n this.startLine = startLine;\n this.startColumn = startColumn;\n this.endLine = endLine;\n this.endColumn = endColumn;\n }\n}\n//# sourceMappingURL=SourceInformation.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, optional, primitive } from 'serializr';\nimport { SerializationFactory, usingModelSchema } from '@finos/legend-shared';\nimport { V1_EngineError } from '../../engine/V1_EngineError.js';\nimport { V1_sourceInformationSerialization } from '../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';\nexport class V1_ParserError extends V1_EngineError {\n static serialization = new SerializationFactory(createModelSchema(V1_ParserError, {\n errorType: optional(primitive()),\n message: primitive(),\n sourceInformation: usingModelSchema(V1_sourceInformationSerialization.schema),\n }));\n}\n//# sourceMappingURL=V1_ParserError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ApplicationError } from '@finos/legend-shared';\nimport { makeObservable, observable } from 'mobx';\nexport class EngineError extends ApplicationError {\n sourceInformation;\n}\nexport class ParserError extends EngineError {\n}\nexport class CompilationError extends EngineError {\n constructor(message) {\n super(message);\n makeObservable(this, {\n sourceInformation: observable,\n });\n }\n}\nexport class ExternalFormatError extends CompilationError {\n}\n//# sourceMappingURL=EngineError.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { action, flow, flowResult, makeObservable, observable } from 'mobx';\nimport { HttpStatus, NetworkClientError, assertErrorThrown, uuid, } from '@finos/legend-shared';\nimport { ParserError, SourceInformation, V1_ParserError, } from '@finos/legend-graph';\nexport class DataCubeQueryEditorState {\n uuid = uuid();\n query;\n parserError;\n constructor(query) {\n makeObservable(this, {\n query: observable,\n parserError: observable,\n setQuery: action,\n setParserError: action,\n });\n this.query = query;\n }\n setQuery(val) {\n this.query = val;\n }\n setParserError(parserError) {\n // account for the lambda prefix offset in source information\n if (parserError?.sourceInformation) {\n parserError.sourceInformation = this.processSourceInformation(parserError.sourceInformation);\n }\n this.parserError = parserError;\n }\n processSourceInformation(sourceInformation) {\n const { sourceId, startLine, startColumn, endLine, endColumn } = sourceInformation;\n const lineOffset = 0;\n const columnOffset = 0;\n return new SourceInformation(sourceId, startLine + lineOffset, startColumn - (startLine === 1 ? columnOffset : 0), endLine + lineOffset, endColumn - (endLine === 1 ? columnOffset : 0));\n }\n}\nexport class DataCubeQueryCodeEditorState {\n dataCubeState;\n queryEditorState;\n currentSubQuery;\n constructor(dataCubeState) {\n makeObservable(this, {\n currentSubQuery: observable,\n queryEditorState: observable,\n setCurrentSubQuery: action,\n parseQuery: flow,\n });\n this.dataCubeState = dataCubeState;\n this.queryEditorState = new DataCubeQueryEditorState('');\n }\n setCurrentSubQuery(val) {\n this.currentSubQuery = val;\n }\n *parseQuery() {\n try {\n this.queryEditorState.setParserError(undefined);\n yield flowResult(this.dataCubeState.editorStore.client.parseQuery({\n code: `|${this.queryEditorState.query}`,\n }));\n }\n catch (error) {\n assertErrorThrown(error);\n if (error instanceof NetworkClientError &&\n error.response.status === HttpStatus.BAD_REQUEST) {\n const protocol = V1_ParserError.serialization.fromJson(error.payload);\n const parserError = new ParserError(protocol.message);\n if (protocol.sourceInformation) {\n parserError.sourceInformation = new SourceInformation(protocol.sourceInformation.sourceId, protocol.sourceInformation.startLine, protocol.sourceInformation.startColumn, protocol.sourceInformation.endLine, protocol.sourceInformation.endColumn);\n }\n this.queryEditorState.setParserError(parserError);\n }\n }\n }\n}\n//# sourceMappingURL=DataCubeEditorCodeState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createModelSchema, custom, list, optional, primitive, raw, SKIP, } from 'serializr';\nimport { SerializationFactory, usingModelSchema, } from '@finos/legend-shared';\nimport { ExecutionActivityType } from '../../../../../../graph-manager/action/execution/ExecutionResult.js';\nexport class V1_ResultBuilder {\n static builderSerialization = new SerializationFactory(createModelSchema(V1_ResultBuilder, {\n _type: primitive(),\n }));\n}\nexport class V1_ExecutionActivities {\n}\nexport class V1_RelationalExecutionActivities extends V1_ExecutionActivities {\n sql;\n comment;\n static serialization = new SerializationFactory(createModelSchema(V1_RelationalExecutionActivities, {\n sql: primitive(),\n comment: optional(primitive()),\n }));\n}\nexport class V1_AggregationAwareActivities extends V1_ExecutionActivities {\n rewrittenQuery;\n static serialization = new SerializationFactory(createModelSchema(V1_AggregationAwareActivities, {\n rewrittenQuery: primitive(),\n }));\n}\nexport class V1_ExecutionResult {\n builder;\n activities;\n}\nexport class V1_UnknownExecutionActivity extends V1_ExecutionActivities {\n content;\n constructor(content) {\n super();\n this.content = content;\n }\n}\nexport class V1_JsonExecutionResult extends V1_ExecutionResult {\n values;\n static serialization = new SerializationFactory(createModelSchema(V1_JsonExecutionResult, {\n _type: primitive(),\n builder: usingModelSchema(V1_ResultBuilder.builderSerialization.schema),\n values: raw(),\n }));\n}\n/**\n * TODO?: maybe we converge to use V1_TDSColumn\n *\n * Since here, we're building out the result builder config, we don't need\n * to fully resolve all the references, hence we have this simplified version of V1_TDSColumn\n */\nexport class V1_INTERNAL__TDSColumn {\n name;\n doc;\n type;\n relationalType;\n static serialization = new SerializationFactory(createModelSchema(V1_INTERNAL__TDSColumn, {\n name: primitive(),\n doc: optional(primitive()),\n type: optional(primitive()),\n relationalType: optional(primitive()),\n }));\n}\nexport class V1_TDSBuilder extends V1_ResultBuilder {\n columns = [];\n static serialization = new SerializationFactory(createModelSchema(V1_TDSBuilder, {\n _type: primitive(),\n columns: list(usingModelSchema(V1_INTERNAL__TDSColumn.serialization.schema)),\n }));\n}\nfunction V1_serializeExecutionActivities(value) {\n switch (value._type) {\n case ExecutionActivityType.RELATIONAL:\n return V1_RelationalExecutionActivities.serialization.fromJson(value);\n case ExecutionActivityType.RELATIONAL_EXECUTION_ACTIVITY:\n return V1_RelationalExecutionActivities.serialization.fromJson(value);\n case ExecutionActivityType.AGGREGATION_AWARE_ACTIVITY:\n return V1_AggregationAwareActivities.serialization.fromJson(value);\n default:\n return new V1_UnknownExecutionActivity(value);\n }\n}\nexport class V1_TDSExecutionResult extends V1_ExecutionResult {\n result;\n static serialization = new SerializationFactory(createModelSchema(V1_TDSExecutionResult, {\n builder: usingModelSchema(V1_TDSBuilder.serialization.schema),\n activities: list(custom(() => SKIP, V1_serializeExecutionActivities)),\n result: raw(),\n }));\n}\nexport class V1_ClassExecutionResult extends V1_ExecutionResult {\n objects;\n static serialization = new SerializationFactory(createModelSchema(V1_ClassExecutionResult, {\n builder: usingModelSchema(V1_ResultBuilder.builderSerialization.schema),\n activities: list(custom(() => SKIP, V1_serializeExecutionActivities)),\n objects: raw(),\n }));\n}\nexport class V1_RawExecutionResult extends V1_ExecutionResult {\n value;\n constructor(value) {\n super();\n this.value = value;\n }\n}\n//# sourceMappingURL=V1_ExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_ExecutionResult } from './V1_ExecutionResult.js';\nexport class V1_INTERNAL__UnknownExecutionResult extends V1_ExecutionResult {\n content;\n}\n//# sourceMappingURL=V1_INTERNAL__UnknownExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ExecutionResult } from './ExecutionResult.js';\nexport class INTERNAL__UnknownExecutionResult extends ExecutionResult {\n content;\n}\n//# sourceMappingURL=INTERNAL__UnknownExecutionResult.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { guaranteeNonNullable, UnsupportedOperationError, isString, isNumber, isBoolean, } from '@finos/legend-shared';\nimport { TDSRow, ClassExecutionResult, JsonExecutionResult, TDSExecutionResult, TDSBuilder, INTERNAL__TDSColumn, RawExecutionResult, RelationalExecutionActivities, UnknownExecutionActivities, AggregationAwareActivities, BuilderType, } from '../../../../../../graph-manager/action/execution/ExecutionResult.js';\nimport { V1_ClassExecutionResult, V1_JsonExecutionResult, V1_TDSExecutionResult, V1_RawExecutionResult, V1_RelationalExecutionActivities, V1_UnknownExecutionActivity, V1_AggregationAwareActivities, } from './V1_ExecutionResult.js';\nimport { V1_INTERNAL__UnknownExecutionResult } from './V1_INTERNAL__UnknownExecutionResult.js';\nimport { INTERNAL__UnknownExecutionResult } from '../../../../../action/execution/INTERNAL__UnknownExecutionResult.js';\nconst buildExecutionActivities = (protocol) => {\n if (protocol instanceof V1_RelationalExecutionActivities) {\n const metamodel = new RelationalExecutionActivities(protocol.sql);\n metamodel.comment = protocol.comment;\n return metamodel;\n }\n else if (protocol instanceof V1_AggregationAwareActivities) {\n const metamodel = new AggregationAwareActivities();\n metamodel.rewrittenQuery = guaranteeNonNullable(protocol.rewrittenQuery, `Aggregation aware execution activities 'rewritenQuery' field is missing`);\n return metamodel;\n }\n else if (protocol instanceof V1_UnknownExecutionActivity) {\n const metamodel = new UnknownExecutionActivities(protocol);\n return metamodel;\n }\n throw new UnsupportedOperationError(`Can't build execution activities`, protocol);\n};\nconst buildJSONExecutionResult = (protocol) => {\n const metamodel = new JsonExecutionResult();\n metamodel.values = guaranteeNonNullable(protocol.values, `JSON execution result 'values' field is missing`);\n return metamodel;\n};\nconst INTERNAL__buildTDSColumn = (protocol) => {\n const metamodel = new INTERNAL__TDSColumn();\n metamodel.name = guaranteeNonNullable(protocol.name, `TDS column 'name' field is missing`);\n metamodel.type = protocol.type;\n metamodel.doc = protocol.doc;\n metamodel.relationalType = protocol.relationalType;\n return metamodel;\n};\nconst buildTDSBuilder = (protocol) => {\n const builder = new TDSBuilder();\n builder.columns = protocol.columns.map(INTERNAL__buildTDSColumn);\n return builder;\n};\nconst buildTDSExecutionResult = (protocol) => {\n const metamodel = new TDSExecutionResult();\n metamodel.builder = buildTDSBuilder(guaranteeNonNullable(protocol.builder, `TDS execution result 'builder' field is missing`));\n metamodel.activities = protocol.activities?.map(buildExecutionActivities);\n metamodel.result.columns = protocol.result.columns;\n metamodel.result.rows = protocol.result.rows.map((_row) => {\n const row = new TDSRow();\n row.values = _row.values;\n return row;\n });\n return metamodel;\n};\nconst buildClassExecutionResult = (protocol) => {\n const metamodel = new ClassExecutionResult();\n metamodel.objects = guaranteeNonNullable(protocol.objects, `Class execution result 'objects' field is missing`);\n metamodel.activities = protocol.activities?.map(buildExecutionActivities);\n return metamodel;\n};\nexport const V1_buildExecutionResult = (protocol) => {\n if (protocol instanceof V1_INTERNAL__UnknownExecutionResult) {\n const metamodel = new INTERNAL__UnknownExecutionResult();\n metamodel.content = protocol.content;\n return metamodel;\n }\n else if (protocol instanceof V1_ClassExecutionResult) {\n return buildClassExecutionResult(protocol);\n }\n else if (protocol instanceof V1_TDSExecutionResult) {\n return buildTDSExecutionResult(protocol);\n }\n else if (protocol instanceof V1_JsonExecutionResult) {\n return buildJSONExecutionResult(protocol);\n }\n else if (protocol instanceof V1_RawExecutionResult) {\n return new RawExecutionResult(protocol.value);\n }\n throw new UnsupportedOperationError(`Can't build execution result`, protocol);\n};\nexport const V1_serializeExecutionResult = (json) => {\n if (json === null || isString(json) || isNumber(json) || isBoolean(json)) {\n return new V1_RawExecutionResult(json);\n }\n switch (json.builder?._type) {\n case BuilderType.CLASS_BUILDER:\n return V1_ClassExecutionResult.serialization.fromJson(json);\n case BuilderType.TDS_BUILDER:\n return V1_TDSExecutionResult.serialization.fromJson(json);\n case BuilderType.JSON_BUILDER:\n return V1_JsonExecutionResult.serialization.fromJson(json);\n default: {\n // Fall back to create unknown stub if not supported\n const protocol = new V1_INTERNAL__UnknownExecutionResult();\n protocol.content = json;\n return protocol;\n }\n }\n};\n//# sourceMappingURL=V1_ExecutionHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { SerializationFactory, UnsupportedOperationError, usingConstantValueSchema, usingModelSchema, } from '@finos/legend-shared';\nimport { createModelSchema, custom, deserialize, list, primitive, raw, serialize, } from 'serializr';\nexport class DataCubeQuerySource {\n columns = [];\n query;\n runtime;\n}\nexport class DataCubeQueryColumn {\n name;\n type;\n static serialization = new SerializationFactory(createModelSchema(DataCubeQueryColumn, {\n name: primitive(),\n type: primitive(),\n }));\n}\nvar DATA_CUBE_QUERY_SOURCE_TYPE;\n(function (DATA_CUBE_QUERY_SOURCE_TYPE) {\n DATA_CUBE_QUERY_SOURCE_TYPE[\"REPL_EXECUTED_QUERY\"] = \"REPLExecutedQuery\";\n})(DATA_CUBE_QUERY_SOURCE_TYPE || (DATA_CUBE_QUERY_SOURCE_TYPE = {}));\nexport class DataCubeQuerySourceREPLExecutedQuery extends DataCubeQuerySource {\n static serialization = new SerializationFactory(createModelSchema(DataCubeQuerySourceREPLExecutedQuery, {\n _type: usingConstantValueSchema(DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY),\n columns: list(usingModelSchema(DataCubeQueryColumn.serialization.schema)),\n query: primitive(),\n runtime: primitive(),\n }));\n}\nfunction deserializeQuerySource(json) {\n switch (json._type) {\n case DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY:\n return deserialize(DataCubeQuerySourceREPLExecutedQuery.serialization.schema, json);\n default:\n throw new UnsupportedOperationError(`Can't deserialize data cube query source of type '${json._type}'`);\n }\n}\nfunction serializeQuerySource(object) {\n if (object instanceof DataCubeQuerySourceREPLExecutedQuery) {\n return serialize(DataCubeQuerySourceREPLExecutedQuery.serialization.schema, object);\n }\n throw new UnsupportedOperationError(`Can't serialize data cube query source`, object);\n}\nexport class DataCubeConfiguration {\n}\nexport class DataCubeQuery {\n name;\n query;\n partialQuery;\n source;\n configuration;\n constructor(name, query, configuration) {\n this.name = name;\n this.query = query;\n this.configuration = configuration;\n }\n static serialization = new SerializationFactory(createModelSchema(DataCubeQuery, {\n configuration: raw(), // TODO: @akphi - populate this once we know the shape better\n name: primitive(),\n partialQuery: primitive(),\n query: primitive(),\n source: custom(serializeQuerySource, deserializeQuerySource),\n }));\n}\n//# sourceMappingURL=DataCubeQuery.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_deserializeValueSpecification, V1_serializeValueSpecification, TDSExecutionResult, V1_serializeExecutionResult, V1_buildExecutionResult, } from '@finos/legend-graph';\nimport {} from '../../../server/models/DataCubeEngineModels.js';\nimport { DataCubeQuery } from '../../../server/models/DataCubeQuery.js';\nimport { guaranteeType } from '@finos/legend-shared';\nexport class DataCubeEngine {\n client;\n constructor(client) {\n this.client = client;\n }\n async getGridClientLicenseKey() {\n return this.client.getGridClientLicenseKey();\n }\n async getQueryTypeahead(code, isPartial) {\n return (await this.client.getQueryTypeahead({\n code,\n isPartial,\n }));\n }\n async parseQuery(code, returnSourceInformation) {\n return V1_deserializeValueSpecification(await this.client.parseQuery({ code, returnSourceInformation }), []);\n }\n async getBaseQuery() {\n return DataCubeQuery.serialization.fromJson(await this.client.getBaseQuery());\n }\n async executeQuery(query) {\n const result = await this.client.executeQuery({\n query: V1_serializeValueSpecification(query, []),\n });\n return guaranteeType(V1_buildExecutionResult(V1_serializeExecutionResult(JSON.parse(result.result))), TDSExecutionResult);\n }\n}\n//# sourceMappingURL=DataCubeEngine.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT } from '@finos/legend-application';\nimport { LogEvent, assertErrorThrown, guaranteeNonNullable, } from '@finos/legend-shared';\n// TODO: use this when we implement undo/redo\n// const DATA_CUBE_MAX_SNAPSHOT_COUNT = 100;\nexport class DataCubeQuerySnapshotManager {\n dataCubeState;\n subscribers = [];\n snapshots = [];\n constructor(dataCubeState) {\n this.dataCubeState = dataCubeState;\n }\n get currentSnapshot() {\n return guaranteeNonNullable(this.snapshots[this.snapshots.length - 1]);\n }\n registerSubscriber(subscriber) {\n this.subscribers.push(subscriber);\n }\n broadcastSnapshot(snapshot) {\n this.snapshots.push(snapshot);\n this.subscribers.forEach((subscriber) => {\n const currentSnapshot = subscriber.getLatestSnapshot();\n if (currentSnapshot?.uuid !== snapshot.uuid) {\n subscriber.receiveSnapshot(snapshot).catch((error) => {\n assertErrorThrown(error);\n this.dataCubeState.applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.ILLEGAL_APPLICATION_STATE_OCCURRED), `Error ocurred when subscribers receive and apply new snapshot should be handled gracefully`, error);\n });\n }\n });\n }\n}\n//# sourceMappingURL=DataCubeQuerySnapshotManager.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { V1_AppliedFunction, V1_ClassInstance, V1_ColSpec, V1_Collection, V1_serializeValueSpecification, extractElementNameFromPath, matchFunctionName, } from '@finos/legend-graph';\nimport { DATA_CUBE_FUNCTIONS, DATA_CUBE_COLUMN_SORT_DIRECTION, } from '../DataCubeMetaModelConst.js';\nimport { DataCubeQuerySnapshotColumnOrigin, createSnapshot, } from './DataCubeQuerySnapshot.js';\nimport { assertErrorThrown, assertTrue, assertType, guaranteeNonNullable, } from '@finos/legend-shared';\nconst _SUPPORTED_TOP_LEVEL_FUNCTIONS = [\n { func: DATA_CUBE_FUNCTIONS.EXTEND, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.FILTER, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.GROUP_BY, parameters: 3 },\n { func: DATA_CUBE_FUNCTIONS.LIMIT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.PIVOT, parameters: 3 },\n { func: DATA_CUBE_FUNCTIONS.RENAME, parameters: 2 },\n { func: DATA_CUBE_FUNCTIONS.SELECT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.SORT, parameters: 1 },\n { func: DATA_CUBE_FUNCTIONS.CAST, parameters: 1 },\n];\n// NOTE: this corresponds to the sequence:\n// extend()->rename()->filter()->groupBy()->select()->pivot()->cast()->extend()->sort()->limit()\n// which represents the ONLY query shape that we currently support\nconst _FUNCTION_SEQUENCE_COMPOSITION_PATTERN = [\n { func: DATA_CUBE_FUNCTIONS.EXTEND },\n { func: DATA_CUBE_FUNCTIONS.RENAME, repeat: true }, // rename() can be repeated since each call only allow renaming one column\n { func: DATA_CUBE_FUNCTIONS.FILTER },\n { func: DATA_CUBE_FUNCTIONS.GROUP_BY },\n { func: DATA_CUBE_FUNCTIONS.SELECT },\n { func: DATA_CUBE_FUNCTIONS.PIVOT },\n { func: DATA_CUBE_FUNCTIONS.CAST },\n { func: DATA_CUBE_FUNCTIONS.EXTEND },\n { func: DATA_CUBE_FUNCTIONS.SORT },\n { func: DATA_CUBE_FUNCTIONS.LIMIT },\n];\nconst _FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP = new RegExp(`^${_FUNCTION_SEQUENCE_COMPOSITION_PATTERN\n .map((entry) => `(?:<${extractElementNameFromPath(entry.func)}>)${entry.repeat ? '*' : !entry.required ? '?' : ''}`)\n .join('')}$`);\n/**\n * Since the query created by DataCube will be a chain call of various functions,\n * this utility function will extract that sequence of function calls as well as\n * do various basic checks for the validity, composition, and order of those functions.\n */\nfunction extractQueryFunctionSequence(query) {\n // Make sure this is a sequence of function calls\n if (!(query instanceof V1_AppliedFunction)) {\n throw new Error(`Query sequence must be a sequence of function calls (e.g. x()->y()->z())`);\n }\n const sequence = [];\n let currentQuery = query;\n while (currentQuery instanceof V1_AppliedFunction) {\n const supportedFunc = _SUPPORTED_TOP_LEVEL_FUNCTIONS.find((spec) => matchFunctionName(currentQuery.function, spec.func));\n // Check that all functions in sequence are supported\n if (!supportedFunc) {\n throw new Error(`Found unsupported function ${currentQuery.function}()`);\n }\n if (currentQuery.parameters.length > supportedFunc.parameters) {\n const vs = currentQuery.parameters[0];\n if (!(vs instanceof V1_AppliedFunction)) {\n throw new Error(`Query sequence must be a sequence of function calls (e.g. x()->y()->z())`);\n }\n currentQuery.parameters = currentQuery.parameters.slice(1);\n sequence.unshift(currentQuery);\n currentQuery = vs;\n }\n else {\n sequence.unshift(currentQuery);\n break;\n }\n }\n // Check that sequence follows the supported pattern\n const sequenceFormText = sequence\n .map((func) => `<${extractElementNameFromPath(func.function)}>`)\n .join('');\n if (!sequenceFormText.match(_FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP)) {\n throw new Error(`Unsupported function composition ${sequence.map((fn) => `${extractElementNameFromPath(fn.function)}()`).join('->')} (supported composition: ${_FUNCTION_SEQUENCE_COMPOSITION_PATTERN.map((entry) => `${extractElementNameFromPath(entry.func)}()`).join('->')})`);\n }\n // Special checks\n // Check that the first and second extend() must be separated by either groupBy() or pivot() (i.e. aggregation)\n const firstExtendIndex = sequence.findIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n const secondExtendIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n if (firstExtendIndex !== -1 && firstExtendIndex !== secondExtendIndex) {\n const seq = sequence.slice(firstExtendIndex + 1, secondExtendIndex);\n if (!seq.some((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.GROUP_BY) ||\n matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT))) {\n throw new Error(`Found invalid usage of group-level extend() for query without aggregation such as pivot() and groupBy()`);\n }\n }\n // Check that pivot() and cast() must co-present and stand consecutively in the sequence\n const pivotFunc = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT));\n const castFunc = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.CAST));\n if (Boolean(pivotFunc) !== Boolean(castFunc)) {\n throw new Error(`Found usage of dynamic function pivot() without casting`);\n }\n return sequence;\n}\n/**\n * Turn the function sequence into a map of available functions\n * for easier construction of the snapshot\n */\nfunction extractFunctionMap(sequence) {\n let leafExtend = undefined;\n let groupExtend = undefined;\n const aggregationFuncIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, [\n DATA_CUBE_FUNCTIONS.PIVOT,\n DATA_CUBE_FUNCTIONS.GROUP_BY,\n ]));\n const firstExtendIndex = sequence.findIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n const secondExtendIndex = sequence.findLastIndex((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.EXTEND));\n if (aggregationFuncIndex !== -1) {\n if (firstExtendIndex !== secondExtendIndex) {\n leafExtend = sequence[firstExtendIndex];\n groupExtend = sequence[secondExtendIndex];\n }\n }\n else {\n if (firstExtendIndex !== -1) {\n leafExtend = sequence[firstExtendIndex];\n }\n }\n const rename = sequence.filter((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.RENAME));\n const filter = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.FILTER));\n const groupBy = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.GROUP_BY));\n const select = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.SELECT));\n const pivot = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.PIVOT));\n const cast = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.CAST));\n const sort = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.SORT));\n const limit = sequence.find((func) => matchFunctionName(func.function, DATA_CUBE_FUNCTIONS.LIMIT));\n return {\n leafExtend,\n rename,\n filter,\n groupBy,\n select,\n pivot,\n cast,\n groupExtend,\n sort,\n limit,\n };\n}\n/**\n * Analyze the partial query to build the base snapshot.\n *\n * NOTE: the base snapshot is almost, but not a complete snapshot.\n * It has key information about the partial query filled in, these are the bits\n * required to reconstruct the query just from the snapshot.\n * However, it lacks analytics information, such as extended columns' lambda code,\n * which might be useful for initializing the editors. These should get filled in\n * at a later stage in the analysis/initialization flow.\n *\n * Implementation-wise, this extracts the function call sequence, then walk the\n * sequence in order to fill in the information for the snapshot.\n */\nexport function validateAndBuildBaseSnapshot(baseQuery, analytics) {\n // --------------------------------- BASE ---------------------------------\n // Build the function call sequence and the function map to make the\n // analysis more ergonomic\n const { partialQuery, sourceQuery } = analytics;\n const sequence = partialQuery\n ? extractQueryFunctionSequence(partialQuery)\n : [];\n const funcMap = extractFunctionMap(sequence);\n const snapshot = createSnapshot(baseQuery.name, baseQuery.source.runtime, V1_serializeValueSpecification(sourceQuery, []), baseQuery.configuration);\n // --------------------------------- SOURCE ---------------------------------\n snapshot.originalColumns = baseQuery.source.columns;\n const columns = snapshot.originalColumns.map((col) => ({\n ...col,\n origin: DataCubeQuerySnapshotColumnOrigin.SOURCE,\n }));\n // leafExtendedColumns: DataCubeQueryExtendedColumnSnapshot[] = [];\n // filter: ValueSpecification[0..1]; // TODO\n // renamedColumns: DataCubeQuerySnapshotRenamedColumn[] = [];\n // groupByColumns: DataCubeQuerySnapshotColumn[] = [];\n // groupByAggColumns: DataCubeQuerySnapshotAggregateColumn[] = [];\n // selectedColumns: DataCubeQuerySnapshotColumn[] = [];\n // pivotColumns: DataCubeQuerySnapshotColumn[] = [];\n // pivotAggColumns: DataCubeQuerySnapshotAggregateColumn[] = [];\n // castColumns: DataCubeQuerySnapshotColumn[] = [];\n // groupExtendedColumns: DataCubeQueryExtendedColumnSnapshot[] = [];\n // limit: number | undefined = undefined;\n // configuration: DataCubeConfiguration;\n // --------------------------------- LEAF EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FILTER ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- RENAME ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP BY ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- SELECT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- PIVOT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- CAST ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- GROUP EXTEND ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- SORT ---------------------------------\n if (funcMap.sort) {\n const sortColumns = funcMap.sort.parameters[0];\n assertType(sortColumns, V1_Collection, `Can't process ${extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT)}(): columns cannot be extracted`);\n snapshot.sortColumns = sortColumns.values.map((col) => {\n try {\n assertType(col, V1_AppliedFunction);\n assertTrue(matchFunctionName(col.function, [\n DATA_CUBE_FUNCTIONS.ASC,\n DATA_CUBE_FUNCTIONS.DESC,\n ]));\n const direction = extractElementNameFromPath(col.function) === DATA_CUBE_FUNCTIONS.ASC\n ? DATA_CUBE_COLUMN_SORT_DIRECTION.ASCENDING\n : DATA_CUBE_COLUMN_SORT_DIRECTION.DESCENDING;\n assertTrue(col.parameters.length === 1);\n assertType(col.parameters[0], V1_ClassInstance);\n assertType(col.parameters[0].value, V1_ColSpec);\n const name = col.parameters[0].value.name;\n const type = guaranteeNonNullable(columns.find((c) => c.name === name)).type;\n return { name, type, direction };\n }\n catch {\n throw new Error(`Can't process ${extractElementNameFromPath(DATA_CUBE_FUNCTIONS.SORT)}(): column sort information cannot be extracted`);\n }\n });\n }\n // --------------------------------- LIMIT ---------------------------------\n // TODO: @akphi - implement this\n // --------------------------------- FINALIZE ---------------------------------\n snapshot.columns = columns;\n return snapshot;\n}\nexport async function buildSnapshotFromQuery(baseQuery, engine) {\n let partialQuery;\n if (baseQuery.partialQuery) {\n try {\n partialQuery = await engine.parseQuery(baseQuery.partialQuery);\n }\n catch (error) {\n assertErrorThrown(error);\n throw new Error(`Can't parse partial query [${baseQuery.partialQuery}]: ${error.message}`);\n }\n }\n else {\n partialQuery = undefined;\n }\n let sourceQuery;\n try {\n sourceQuery = await engine.parseQuery(baseQuery.source.query);\n }\n catch (error) {\n assertErrorThrown(error);\n throw new Error(`Can't parse source query [${baseQuery.source.query}]: ${error.message}`);\n }\n const snapshot = validateAndBuildBaseSnapshot(baseQuery, {\n partialQuery,\n sourceQuery,\n });\n return snapshot;\n}\n//# sourceMappingURL=DataCubeQueryAnalyzer.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { flowResult } from 'mobx';\nimport { DataCubeGridState } from './grid/DataCubeGridState.js';\nimport { DataCubeEditorState } from './editor/DataCubeEditorState.js';\nimport { ActionState, assertErrorThrown } from '@finos/legend-shared';\nimport { DataCubeEngine } from './core/DataCubeEngine.js';\nimport { DataCubeQuerySnapshotManager } from './core/DataCubeQuerySnapshotManager.js';\nimport { buildSnapshotFromQuery } from './core/DataCubeQueryAnalyzer.js';\nexport class DataCubeState {\n editorStore;\n applicationStore;\n engine;\n snapshotManager;\n grid;\n editor;\n initState = ActionState.create();\n baseQuery;\n constructor(editorStore) {\n this.editorStore = editorStore;\n this.applicationStore = editorStore.applicationStore;\n this.engine = new DataCubeEngine(this.editorStore.client);\n // NOTE: snapshot manager must be instantiated before subscribers\n this.snapshotManager = new DataCubeQuerySnapshotManager(this);\n this.grid = new DataCubeGridState(this);\n this.editor = new DataCubeEditorState(this);\n }\n async initialize() {\n this.initState.inProgress();\n try {\n await flowResult(this.grid.initialize());\n this.snapshotManager.registerSubscriber(this.grid);\n this.snapshotManager.registerSubscriber(this.editor);\n this.baseQuery = await this.engine.getBaseQuery();\n const initialSnapshot = await buildSnapshotFromQuery(this.baseQuery, this.engine);\n this.snapshotManager.broadcastSnapshot(initialSnapshot);\n this.initState.complete();\n }\n catch (error) {\n assertErrorThrown(error);\n this.initState.fail();\n }\n }\n}\n//# sourceMappingURL=DataCubeState.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { REPLServerClient } from '../../server/REPLServerClient.js';\nimport { NetworkClient } from '@finos/legend-shared';\nimport { makeObservable, observable } from 'mobx';\nimport { DataCubeState } from './DataCubeState.js';\nexport class REPLStore {\n applicationStore;\n client;\n // TODO: when we support multi-view, we would need to support multiple states\n dataCubeState;\n constructor(applicationStore) {\n makeObservable(this, {\n dataCubeState: observable,\n });\n this.applicationStore = applicationStore;\n this.client = new REPLServerClient(new NetworkClient({\n baseUrl: this.applicationStore.config.useDynamicREPLServer\n ? window.location.origin +\n this.applicationStore.config.baseAddress.replace('/repl/', '')\n : this.applicationStore.config.replUrl,\n }));\n this.dataCubeState = new DataCubeState(this);\n }\n}\n//# sourceMappingURL=DataCubeStore.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext, useContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { REPLStore } from '../stores/dataCube/DataCubeStore.js';\nimport { guaranteeNonNullable } from '@finos/legend-shared';\nimport { useApplicationStore } from '@finos/legend-application';\nconst REPLStoreContext = createContext(undefined);\nexport const REPLStoreProvider = ({ children, }) => {\n const applicationStore = useApplicationStore();\n const store = useLocalObservable(() => new REPLStore(applicationStore));\n return (_jsx(REPLStoreContext.Provider, { value: store, children: children }));\n};\nexport const useREPLStore = () => guaranteeNonNullable(useContext(REPLStoreContext), `Can't find REPL store in context`);\nexport const withREPLStore = (WrappedComponent) => function WithREPLStore() {\n return (_jsx(REPLStoreProvider, { children: _jsx(WrappedComponent, {}) }));\n};\n//# sourceMappingURL=REPLStoreProvider.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { LicenseManager } from '@ag-grid-enterprise/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nimport { MenuModule } from '@ag-grid-enterprise/menu';\nimport { AgGridReact } from '@ag-grid-community/react';\nimport { useEffect } from 'react';\n// NOTE: This is a workaround to prevent ag-grid license key check from flooding the console screen\n// with its stack trace in Chrome.\n// We MUST NEVER completely surpress this warning, else it's a violation of the ag-grid license\nconst __INTERNAL__original_console_error = console.error; // eslint-disable-line no-console\n// eslint-disable-next-line no-process-env\nif (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error = (message, ...optionalParams) => {\n console.log(message); // eslint-disable-line no-console\n };\n}\nexport const DataCubeGrid = observer((props) => {\n const { editorStore } = props;\n const dataCubeState = editorStore.dataCubeState;\n useEffect(() => {\n if (dataCubeState.grid.clientLicenseKey) {\n LicenseManager.setLicenseKey(dataCubeState.grid.clientLicenseKey);\n }\n }, [dataCubeState.grid.clientLicenseKey]);\n return (_jsx(_Fragment, { children: _jsx(AgGridReact, { rowGroupPanelShow: \"always\", suppressBrowserResizeObserver: true, suppressScrollOnNewData: true, alwaysMultiSort: true, rowModelType: \"serverSide\", serverSideDatasource: dataCubeState.grid.clientDataSource, suppressAggFuncInHeader: true, suppressServerSideInfiniteScroll: true, modules: [\n // community\n ClientSideRowModelModule,\n // enterprise\n ServerSideRowModelModule,\n RowGroupingModule,\n MenuModule,\n ], onGridReady: (params) => {\n dataCubeState.grid.configureClient(params.api);\n // eslint-disable-next-line no-process-env\n if (process.env.NODE_ENV === 'development') {\n console.error = __INTERNAL__original_console_error; // eslint-disable-line no-console\n }\n }, className: \"ag-theme-balham\" }) }));\n});\n//# sourceMappingURL=DataCubeGrid.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useRef, useEffect, forwardRef, } from 'react';\nimport { CaretDownIcon, TimesIcon, CircleNotchIcon } from '../icon/Icon.js';\nimport { FixedSizeList } from 'react-window';\nimport {} from '@finos/legend-shared';\n/**\n * Previously, these exports rely on ES module interop to expose `default` export\n * properly. But since we use `ESM` for Typescript resolution now, we lose this\n * so we have to workaround by importing these and re-export them from CJS\n *\n * TODO: remove these when the package properly work with Typescript's nodenext\n * module resolution\n *\n * @workaround ESM\n * See https://github.com/microsoft/TypeScript/issues/49298\n */\nimport { default as ReactSelect } from './CJS__ReactSelect.cjs';\nimport { clsx } from '../utils/ComponentUtils.js';\nexport const createFilter = ReactSelect.Select.createFilter;\n// Create props for buttons within selector input option to ensure\n// we don't trigger selector dropdown menu when clicking on these buttons\n// NOTE: react-selector uses `mousedown` event instead of `onclick`\n// See https://stackoverflow.com/a/55663995\nexport const getSelectorInputOptionEmbeddedButtonProps = () => ({\n onMouseDown: (event) => event.stopPropagation(),\n});\n/**\n * This custom list component uses virtualization from `react-window` to help improve performance of\n * `react-select` with large list\n * See https://github.com/bvaughn/react-window/issues/83\n * See https://react-window.now.sh/#/examples/list/fixed-size\n */\nconst CustomMenuList = (props) => {\n const { options, children, getValue, selectProps } = props;\n // Get row height in pixel since `react-window` does not support `rem`\n // See https://stackoverflow.com/questions/45001097/convert-rem-to-px-without-reflow\n let rowHeight = selectProps.optionCustomization?.rowHeight ??\n parseInt(getComputedStyle(document.documentElement).fontSize, 10) * 3.5;\n rowHeight = isNaN(rowHeight) ? 35 : rowHeight;\n const MAX_OPTIONS_LENGTH = 6;\n const [value] = getValue();\n const initialOffset = options.indexOf(value) * rowHeight;\n const scrollToIndex = children.length\n ? children.findIndex((child) => child.props.isFocused)\n : 0;\n // We use `scrollToItem` function to make it possible for react-select to focus on item within `react-window`\n // If we don't have this, if we search and use up/down arrow and once we get past the initial view-able values\n // the list doesn't auto scroll\n // See https://github.com/JedWatson/react-select/issues/2850\n const listRef = useRef(null);\n useEffect(() => {\n listRef.current?.scrollToItem(scrollToIndex);\n }, [scrollToIndex]);\n // Checking for the children list in case there is no match and the list height shrinks down to 0\n // which causes `react-window` to throw an error\n if (children.length) {\n return (_jsx(FixedSizeList, { className: selectProps.darkMode ? 'scrollbar--light selector-menu--dark' : '', ref: listRef, width: \"100%\", height: Math.min(children.length, MAX_OPTIONS_LENGTH) * rowHeight, itemCount: children.length, itemSize: rowHeight, initialScrollOffset: initialOffset, children: ({ index, style }) => (_jsx(\"div\", { style: style, className: \"selector-input__option-wrapper\", children: children[index] })) }));\n }\n // TODO: Maybe a no option thing here\n return (_jsx(\"div\", { className: `selector-menu--no-match ${selectProps.darkMode ? 'selector-menu--dark' : ''}`, children: selectProps.noMatchMessage ?? 'No match found' }));\n};\nconst CustomOption = (props) => {\n const { children, selectProps } = props;\n return (_jsx(ReactSelect.SelectComponents.Option, { ...props, className: clsx(!selectProps.darkMode\n ? {\n 'selector-input__option': true,\n 'selector-input__option--is-focused': props.isFocused,\n 'selector-input__option--is-selected': props.isSelected,\n }\n : {\n 'selector-input--dark__option': true,\n 'selector-input--dark__option--is-focused': props.isFocused,\n 'selector-input--dark__option--is-selected': props.isSelected,\n }, {\n 'selector-input__option--custom': Boolean(selectProps.optionCustomization),\n }), children: children }));\n};\nexport const STYLE_PREFIX = 'selector-input';\nexport const STYLE_PREFIX__DARK = 'selector-input--dark';\nconst LoadingIndicator = () => (_jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__loading-indicator ${STYLE_PREFIX__DARK}__loading-indicator`, children: _jsx(CircleNotchIcon, {}) }));\nconst DropdownIndicator = () => (_jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__dropdown-indicator`, children: _jsx(CaretDownIcon, {}) }));\nconst ClearIndicator = (props) => {\n const { innerProps: { ref, ...innerProps }, } = props;\n return (_jsx(\"div\", { ...innerProps, ref: ref, children: _jsx(\"div\", { className: `${STYLE_PREFIX}__indicator ${STYLE_PREFIX}__clear-indicator`, children: _jsx(TimesIcon, {}) }) }));\n};\n// Enable edit of the selected tag\n// See https://github.com/JedWatson/react-select/issues/1558\nconst CustomInput = (props) => {\n // We need to pass the additional props this way because we're using an old\n // version of react-select where the InputProps interface doesn't include\n // many expected props that can be passed to the Input component.\n const additionalProps = {\n onPaste: props.selectProps.onPaste,\n placeholder: props.selectProps.inputPlaceholder,\n };\n return (_jsx(ReactSelect.Select.components.Input, { ...props, ...additionalProps, isHidden: false }));\n};\nexport const CustomSelectorInput = forwardRef(function CustomSelectorInput(props, ref) {\n const { allowCreating, noMatchMessage, disabled, components, className, darkMode, hasError, ...innerProps } = props;\n // Typescript cannot union the 2 types due to many dissimilarities, this goes on to confuse React.createElement\n // See https://github.com/Microsoft/TypeScript/issues/28631\n // See https://github.com/microsoft/TypeScript/issues/28768\n // The issue is addressed better here\n // See https://github.com/microsoft/TypeScript/issues/28795\n // And the root problem as mentioned\n // See https://github.com/microsoft/TypeScript/issues/7294\n //\n // NOTE: since we're using an outdated version of `react-select`, we would get type issue\n // when we update to `react@18`\n // See https://github.com/finos/legend-studio/issues/615\n const SelectComponent = (allowCreating\n ? ReactSelect.CreatableSelect.default\n : ReactSelect.Select.default);\n const stylePrefix = darkMode ? STYLE_PREFIX__DARK : STYLE_PREFIX;\n return (_jsx(SelectComponent\n // Make the menu always on top\n , { \n // Make the menu always on top\n styles: {\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n }),\n }, menuPortalTarget: document.body, \n // coercing a type for ref as we will eventually remove dependency on `react-select`\n // See https://github.com/finos/legend-studio/issues/615\n ref: ref, isDisabled: Boolean(disabled), className: clsx(stylePrefix, className, {\n 'selector-input--has-error': hasError,\n 'selector-input--custom': Boolean(props.optionCustomization),\n }), classNamePrefix: stylePrefix, components: {\n Option: CustomOption,\n ClearIndicator,\n DropdownIndicator,\n LoadingIndicator,\n MenuList: CustomMenuList,\n Input: CustomInput,\n ...components,\n }, ...innerProps, darkMode, noMatchMessage }));\n});\nexport const compareLabelFn = (a, b) => a.label.localeCompare(b.label);\n//# sourceMappingURL=CustomSelectorInput.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { PlusIcon, SearchIcon, TimesIcon, clsx, ChevronLeftIcon, ChevronRightIcon, CustomSelectorInput, } from '@finos/legend-art';\nimport { DATA_CUBE_COLUMN_SORT_DIRECTION } from '../../../stores/dataCube/DataCubeMetaModelConst.js';\nexport const DataCubeEditorSortPanel = observer((props) => {\n const { editorStore } = props;\n const sortState = editorStore.dataCubeState.editor.sort;\n const onAvailabeColumnsSearchTextChange = (event) => {\n sortState.setAvailableColumnsSearchText(event.target.value);\n };\n const onSelectedColumnsSearchTextChange = (event) => {\n sortState.setSelectedColumnsSearchText(event.target.value);\n };\n const clearAvailableColumnsSearchText = () => {\n sortState.setAvailableColumnsSearchText('');\n };\n const clearSelectedColumnsSearchText = () => {\n sortState.setSelectedColumnsSearchText('');\n };\n const sortOptions = Array.from(Object.values(DATA_CUBE_COLUMN_SORT_DIRECTION)).map((val) => ({\n label: val,\n value: val,\n }));\n const onAvailableColumnsSortOptionsChanged = (columnName) => (option) => {\n const column = sortState.availableColumns.find((col) => col.column.name === columnName);\n if (column) {\n column.setDirection(option.value);\n }\n };\n const onSelectedColumnsSortOptionsChanged = (columnName) => (option) => {\n const column = sortState.selectedColumns.find((col) => col.column.name === columnName);\n if (column) {\n column.setDirection(option.value);\n }\n };\n return (_jsx(\"div\", { className: \"repl__hpivot__sort__editor\", children: _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__header\", children: \"Sorts\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__description\", children: \"Available sort columns:\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__container\", children: [_jsx(\"div\", { className: \"query-builder-property-search-panel__header\", children: _jsxs(\"div\", { className: \"query-builder-property-search-panel__input__container\", children: [_jsx(\"input\", { className: clsx('query-builder-property-search-panel__input', {\n 'query-builder-property-search-panel__input--searching': sortState.availableColumnsSearchText,\n }), spellCheck: false, onChange: onAvailabeColumnsSearchTextChange, value: sortState.availableColumnsSearchText, placeholder: \"Search\" }), !sortState.availableColumnsSearchText ? (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"query-builder-property-search-panel__input__search__icon\", children: _jsx(SearchIcon, {}) }) })) : (_jsx(\"button\", { className: \"query-builder-property-search-panel__input__clear-btn\", tabIndex: -1, onClick: clearAvailableColumnsSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }) }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root\", onDoubleClick: () => sortState.addAllAvailableColumns(), children: [_jsx(PlusIcon, {}), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root__label\", children: \"All\" })] }), sortState.availableColumnsSearchResults.map((col) => (_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children__name\", onDoubleClick: () => sortState.addAvailableColumn(col.column.name), children: col.column.name }), _jsx(CustomSelectorInput, { className: \"repl__hpivot__sort__column__editor__available__columns__children__order\", options: sortOptions, onChange: onAvailableColumnsSortOptionsChanged(col.column.name), value: { label: col.direction, value: col.direction }, isClearable: false, darkMode: false })] }, col.column.name)))] })] })] }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__actions\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__action\", children: _jsxs(\"button\", { tabIndex: -1, \n // onClick={clearSearch}\n title: \"Add\", children: [\"Add\", _jsx(ChevronRightIcon, {})] }) }), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__action\", children: _jsxs(\"button\", { tabIndex: -1, \n // onClick={clearSearch}\n title: \"Remove\", children: [_jsx(ChevronLeftIcon, {}), \"Remove\"] }) })] }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__selected__columns\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__description\", children: \"Selected sort columns:\" }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__container\", children: [_jsx(\"div\", { className: \"query-builder-property-search-panel__header\", children: _jsxs(\"div\", { className: \"query-builder-property-search-panel__input__container\", children: [_jsx(\"input\", { className: clsx('query-builder-property-search-panel__input', {\n 'query-builder-property-search-panel__input--searching': sortState.selectedColumnsSearchText,\n }), spellCheck: false, onChange: onSelectedColumnsSearchTextChange, value: sortState.selectedColumnsSearchText, placeholder: \"Search\" }), !sortState.selectedColumnsSearchText ? (_jsx(_Fragment, { children: _jsx(\"div\", { className: \"query-builder-property-search-panel__input__search__icon\", children: _jsx(SearchIcon, {}) }) })) : (_jsx(\"button\", { className: \"query-builder-property-search-panel__input__clear-btn\", tabIndex: -1, onClick: clearSelectedColumnsSearchText, title: \"Clear\", children: _jsx(TimesIcon, {}) }))] }) }), _jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__content\", children: [_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root\", onDoubleClick: () => sortState.addAllSelectedColumns(), children: [_jsx(PlusIcon, {}), _jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__root__label\", children: \"All\" })] }), sortState.selectedColumnsSearchResults.map((col) => (_jsxs(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children\", children: [_jsx(\"div\", { className: \"repl__hpivot__sort__column__editor__available__columns__children__name\", onDoubleClick: () => sortState.addSelectedColumn(col.column.name), children: col.column.name }), _jsx(CustomSelectorInput, { className: \"repl__hpivot__sort__column__editor__available__columns__children__order\", options: sortOptions, onChange: onSelectedColumnsSortOptionsChanged(col.column.name), value: { label: col.direction, value: col.direction }, isClearable: false, darkMode: false })] }, col.column.name)))] })] })] })] })] }) }));\n});\n//# sourceMappingURL=DataCubeEditorSortPanel.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { TimesIcon, clsx, BasePopover, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ModalHeaderActions, ModalTitle, } from '@finos/legend-art';\nimport { DATA_CUBE_EDITOR_TAB } from '../../../stores/dataCube/editor/DataCubeEditorState.js';\nimport { DataCubeEditorSortPanel } from './DataCubeEditorSortPanel.js';\nexport const PivotPanelEditor = observer((props) => {\n const { triggerElement, editorStore } = props;\n const dataCubeState = editorStore.dataCubeState;\n const applicationStore = editorStore.applicationStore;\n const closeEditor = () => {\n dataCubeState.editor.closePanel();\n };\n const selectedTab = dataCubeState.editor.currentTab;\n const tabOptions = [\n // DATA_CUBE_EDITOR_TAB.COLUMNS,\n DATA_CUBE_EDITOR_TAB.SORTS,\n // DATA_CUBE_EDITOR_TAB.HORIZONTAL_PIVOTS,\n // DATA_CUBE_EDITOR_TAB.VERTICAL_PIVOTS,\n // DATA_CUBE_EDITOR_TAB.GENERAL_PROPERTIES,\n // DATA_CUBE_EDITOR_TAB.COLUMN_PROPERTIES,\n ];\n const setSelectedTab = (tab) => {\n dataCubeState.editor.setCurrentTab(tab);\n };\n const onClickOk = () => {\n dataCubeState.editor.applyChanges();\n dataCubeState.editor.closePanel();\n };\n return (_jsx(BasePopover, { open: dataCubeState.editor.isPanelOpen, onClose: closeEditor, anchorEl: triggerElement, anchorOrigin: {\n vertical: 'center',\n horizontal: 'center',\n }, transformOrigin: {\n vertical: 'center',\n horizontal: 'center',\n }, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: \"editor-modal embedded-runtime-editor\", children: [_jsxs(ModalHeader, { children: [_jsx(ModalTitle, { title: \"cube properties\" }), _jsx(ModalHeaderActions, { children: _jsx(\"button\", { className: \"modal__header__action\", tabIndex: -1, onClick: closeEditor, children: _jsx(TimesIcon, {}) }) })] }), _jsx(ModalBody, { children: _jsxs(\"div\", { style: { height: '100%', width: '100%' }, children: [_jsx(\"div\", { className: \"panel__header uml-element-editor__tabs__header \", children: _jsx(\"div\", { className: \"uml-element-editor__tabs\", children: tabOptions.map((tab) => (_jsx(\"div\", { onClick: () => setSelectedTab(tab), className: clsx('uml-element-editor__tab', {\n 'uml-element-editor__tab--active': tab === selectedTab,\n }), children: tab }, tab))) }) }), selectedTab === DATA_CUBE_EDITOR_TAB.SORTS && (_jsx(DataCubeEditorSortPanel, { editorStore: editorStore }))] }) }), _jsx(ModalFooter, { className: \"repl__modal__footer\", children: _jsxs(\"div\", { className: \"search-modal__actions\", children: [_jsx(ModalFooterButton, { text: \"Ok\", onClick: onClickOk }), _jsx(ModalFooterButton, { text: \"Close\", onClick: closeEditor }), _jsx(ModalFooterButton, { text: \"Apply\", onClick: () => dataCubeState.editor.applyChanges() })] }) })] }) }));\n});\n//# sourceMappingURL=DataCubeEditor.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { observer } from 'mobx-react-lite';\nimport { useREPLStore } from '../REPLStoreProvider.js';\nimport { useEffect, useRef } from 'react';\nimport { DataCubeGrid } from './grid/DataCubeGrid.js';\nimport { PivotPanelEditor } from './editor/DataCubeEditor.js';\nimport { useApplicationStore } from '@finos/legend-application';\nexport const DataCube = observer(() => {\n const dataCubeStore = useREPLStore();\n const applicationStore = useApplicationStore();\n const dataCubeState = dataCubeStore.dataCubeState;\n const pivotPanelButtonRef = useRef(null);\n useEffect(() => {\n dataCubeState.initialize().catch(applicationStore.alertUnhandledError);\n }, [dataCubeState, applicationStore]);\n return (_jsxs(\"div\", { className: \"repl\", children: [_jsx(\"div\", { className: \"repl__header\", children: _jsxs(\"div\", { className: \"repl__header__content\", children: [_jsx(\"div\", { className: \"repl__header__content__title\", children: \"Legend DataCube\" }), _jsx(\"div\", { className: \"repl__header__actions\" })] }) }), _jsx(\"div\", { className: \"repl__content\", children: _jsx(DataCubeGrid, { editorStore: dataCubeStore }) }), _jsxs(\"div\", { className: \"repl__footer\", children: [_jsx(\"div\", { className: \"repl__footer__pivot\", ref: pivotPanelButtonRef, onClick: () => dataCubeState.editor.openPanel(), children: \"Pivot\" }), _jsx(\"div\", { className: \"repl__footer__filter\", children: \"Filter\" }), dataCubeState.editor.isPanelOpen && (_jsx(PivotPanelEditor, { editorStore: dataCubeStore, triggerElement: pivotPanelButtonRef.current }))] })] }));\n});\n//# sourceMappingURL=DataCube.js.map","import { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { ApplicationComponentFrameworkProvider } from './ApplicationComponentFrameworkProvider.js';\nimport { useApplicationStore } from './ApplicationStoreProvider.js';\nimport { useApplicationPlatform } from './ApplicationPlatformProvider.js';\nexport const ApplicationFrameworkProvider = observer((props) => {\n const { children } = props;\n const platform = useApplicationPlatform();\n const applicationStore = useApplicationStore();\n useEffect(() => {\n applicationStore\n .initialize(platform)\n .catch(applicationStore.alertUnhandledError);\n }, [applicationStore, platform]);\n if (!applicationStore.initState.hasSucceeded) {\n return _jsx(_Fragment, {});\n }\n // TODO: would be great if we can have <React.StrictMode> here but since Mobx React is not ready for\n // concurrency yet, we would have to wait\n // See https://github.com/mobxjs/mobx/issues/2526\n return (_jsx(ApplicationComponentFrameworkProvider, { children: children }));\n});\n//# sourceMappingURL=ApplicationFrameworkProvider.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class LegendREPLBaseStore {\n applicationStore;\n pluginManager;\n constructor(applicationStore) {\n this.applicationStore = applicationStore;\n this.pluginManager = applicationStore.pluginManager;\n }\n}\n//# sourceMappingURL=LegendREPLBaseStore.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContext } from 'react';\nimport { useLocalObservable } from 'mobx-react-lite';\nimport { ApplicationFrameworkProvider, useApplicationStore, } from '@finos/legend-application';\nimport { LegendREPLBaseStore, } from '../stores/LegendREPLBaseStore.js';\nexport const useLegendREPLApplicationStore = () => useApplicationStore();\nconst LegendREPLBaseStoreContext = createContext(undefined);\nconst LegendREPLBaseStoreProvider = ({ children }) => {\n const applicationStore = useLegendREPLApplicationStore();\n const store = useLocalObservable(() => new LegendREPLBaseStore(applicationStore));\n return (_jsx(LegendREPLBaseStoreContext.Provider, { value: store, children: children }));\n};\nexport const LegendREPLFrameworkProvider = ({ children }) => (_jsx(ApplicationFrameworkProvider, { children: _jsx(LegendREPLBaseStoreProvider, { children: children }) }));\n//# sourceMappingURL=LegendREPLFrameworkProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BrowserEnvironmentProvider, Route, Switch, } from '@finos/legend-application/browser';\nimport { DataCube } from './dataCube/DataCube.js';\nimport { LegendREPLFrameworkProvider } from './LegendREPLFrameworkProvider.js';\nimport { observer } from 'mobx-react-lite';\nimport { withREPLStore } from './REPLStoreProvider.js';\nexport const LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN = Object.freeze({\n DATA_CUBE: `/dataCube`,\n});\nexport const LegendREPLRouter = withREPLStore(observer(() => (_jsx(\"div\", { className: \"app\", children: _jsx(Switch, { children: _jsx(Route, { exact: true, path: [LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN.DATA_CUBE], component: \n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n DataCube }) }) }))));\nexport const LegendREPLWebApplication = (props) => {\n const { baseUrl } = props;\n return (_jsx(BrowserEnvironmentProvider, { baseUrl: baseUrl, children: _jsx(LegendREPLFrameworkProvider, { children: _jsx(LegendREPLRouter, {}) }) }));\n};\n//# sourceMappingURL=LegendREPLApplication.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { LegendApplicationPlugin } from '@finos/legend-application';\nexport class LegendREPLApplicationPlugin extends LegendApplicationPlugin {\n /**\n * This helps to better type-check for this empty abtract type\n * See https://github.com/finos/legend-studio/blob/master/docs/technical/typescript-usage.md#understand-typescript-structual-type-system\n */\n _$nominalTypeBrand;\n install(pluginManager) {\n pluginManager.registerApplicationPlugin(this);\n }\n}\n//# sourceMappingURL=LegendREPLApplicationPlugin.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var PURE_GRAMMAR_TOKEN;\n(function (PURE_GRAMMAR_TOKEN) {\n PURE_GRAMMAR_TOKEN[\"WHITESPACE\"] = \"\";\n PURE_GRAMMAR_TOKEN[\"KEYWORD\"] = \"keyword\";\n PURE_GRAMMAR_TOKEN[\"IDENTIFIER\"] = \"identifier\";\n PURE_GRAMMAR_TOKEN[\"OPERATOR\"] = \"operator\";\n PURE_GRAMMAR_TOKEN[\"DELIMITER\"] = \"delimiter\";\n PURE_GRAMMAR_TOKEN[\"PARSER\"] = \"parser\";\n PURE_GRAMMAR_TOKEN[\"NUMBER\"] = \"number\";\n PURE_GRAMMAR_TOKEN[\"DATE\"] = \"date\";\n PURE_GRAMMAR_TOKEN[\"COLOR\"] = \"color\";\n PURE_GRAMMAR_TOKEN[\"PACKAGE\"] = \"package\";\n PURE_GRAMMAR_TOKEN[\"STRING\"] = \"string\";\n PURE_GRAMMAR_TOKEN[\"COMMENT\"] = \"comment\";\n PURE_GRAMMAR_TOKEN[\"LANGUAGE_STRUCT\"] = \"language-struct\";\n PURE_GRAMMAR_TOKEN[\"MULTIPLICITY\"] = \"multiplicity\";\n PURE_GRAMMAR_TOKEN[\"GENERICS\"] = \"generics\";\n PURE_GRAMMAR_TOKEN[\"PROPERTY\"] = \"property\";\n PURE_GRAMMAR_TOKEN[\"PARAMETER\"] = \"parameter\";\n PURE_GRAMMAR_TOKEN[\"VARIABLE\"] = \"variable\";\n PURE_GRAMMAR_TOKEN[\"TYPE\"] = \"type\";\n PURE_GRAMMAR_TOKEN[\"INVALID\"] = \"invalid\";\n})(PURE_GRAMMAR_TOKEN || (PURE_GRAMMAR_TOKEN = {}));\n//# sourceMappingURL=PureLanguage.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getNonNullableEntry, isNonNullable, isString, } from '@finos/legend-shared';\nconst parseVSCodeTheme = (rawData) => {\n const rules = [];\n rawData.tokenColors.forEach((tokenColor) => {\n if (!tokenColor.settings) {\n return;\n }\n let scopes = [];\n if (isString(tokenColor.scope)) {\n scopes = tokenColor.scope\n .replace(/^[,]+/, '')\n .replace(/[,]+$/, '')\n .split(',')\n .map((scope) => scope.trim());\n }\n else if (Array.isArray(tokenColor.scope)) {\n scopes = tokenColor.scope;\n }\n else {\n scopes = [''];\n }\n const baseRule = {};\n if (tokenColor.settings.foreground &&\n isString(tokenColor.settings.foreground)) {\n baseRule.foreground = tokenColor.settings.foreground;\n }\n if (tokenColor.settings.background &&\n isString(tokenColor.settings.background)) {\n baseRule.background = tokenColor.settings.background;\n }\n if (tokenColor.settings.fontStyle &&\n isString(tokenColor.settings.fontStyle)) {\n baseRule.fontStyle = tokenColor.settings.fontStyle;\n }\n scopes.forEach((scope) => {\n if (isNonNullable(scope) || !Object.keys(baseRule).length) {\n return;\n }\n const rule = {\n ...baseRule,\n token: scope,\n };\n rules.push(rule);\n });\n });\n const colors = {};\n Object.entries(rawData.colors).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n if (value.length) {\n colors[key] = getNonNullableEntry(value, 0);\n }\n }\n else {\n colors[key] = value;\n }\n });\n return {\n base: 'vs-dark',\n inherit: true,\n rules: rules,\n colors,\n };\n};\nexport const buildCodeEditorTheme = (vscodeThemeData, baseTheme, colorsOverride, rulesOverride) => {\n const baseThemeData = parseVSCodeTheme(vscodeThemeData);\n return {\n ...baseThemeData,\n base: baseTheme,\n colors: { ...baseThemeData.colors, ...colorsOverride },\n rules: [...baseThemeData.rules, ...rulesOverride],\n };\n};\n//# sourceMappingURL=MonacoEditorThemeUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { PURE_GRAMMAR_TOKEN } from './PureLanguage.js';\nimport { buildCodeEditorTheme } from './themes/MonacoEditorThemeUtils.js';\nimport SOLARIZED_DARK_THEME_DATA from './themes/solarized-dark-color-theme.json' assert { type: 'json' };\nimport GITHUB_DARK_THEME_DATA from './themes/Github-Theme-dark.json' assert { type: 'json' };\nimport GITHUB_DARK_DIMMED_THEME_DATA from './themes/Github-Theme-dark-dimmed.json' assert { type: 'json' };\nimport MATERIAL_DEFAULT_THEME_DATA from './themes/Material-Theme-Default.json' assert { type: 'json' };\nimport MATERIAL_DARKER_THEME_DATA from './themes/Material-Theme-Darker.json' assert { type: 'json' };\nimport ONE_DARK_PRO_THEME_DATA from './themes/OneDark-Pro.json' assert { type: 'json' };\nimport ONE_DARK_PRO_DARKER_THEME_DATA from './themes/OneDark-Pro-darker.json' assert { type: 'json' };\nconst BASE_PURE_LANGUAGE_COLOR_TOKENS = [\n // NOTE: `monaco-editor` only accepts HEX values, not CSS variables\n { token: PURE_GRAMMAR_TOKEN.IDENTIFIER, foreground: 'dcdcaa' },\n { token: PURE_GRAMMAR_TOKEN.NUMBER, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.DATE, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.COLOR, foreground: 'b5cea8' },\n { token: PURE_GRAMMAR_TOKEN.PACKAGE, foreground: '808080' },\n { token: PURE_GRAMMAR_TOKEN.PARSER, foreground: 'c586c0' },\n { token: PURE_GRAMMAR_TOKEN.LANGUAGE_STRUCT, foreground: 'c586c0' },\n { token: PURE_GRAMMAR_TOKEN.MULTIPLICITY, foreground: '2d796b' },\n { token: PURE_GRAMMAR_TOKEN.GENERICS, foreground: '2d796b' },\n { token: PURE_GRAMMAR_TOKEN.PROPERTY, foreground: '9cdcfe' },\n { token: PURE_GRAMMAR_TOKEN.PARAMETER, foreground: '9cdcfe' },\n { token: PURE_GRAMMAR_TOKEN.VARIABLE, foreground: '4fc1ff' },\n { token: PURE_GRAMMAR_TOKEN.TYPE, foreground: '3dc9b0' },\n { token: `${PURE_GRAMMAR_TOKEN.STRING}.escape`, foreground: 'd7ba7d' },\n];\nexport var CODE_EDITOR_THEME;\n(function (CODE_EDITOR_THEME) {\n CODE_EDITOR_THEME[\"DEFAULT_DARK\"] = \"default-dark\";\n CODE_EDITOR_THEME[\"GITHUB_DARK\"] = \"github-dark\";\n CODE_EDITOR_THEME[\"GITHUB_DARK_DIMMED\"] = \"github-dark-dimmed\";\n CODE_EDITOR_THEME[\"SOLARIZED_DARK\"] = \"solarized-dark\";\n CODE_EDITOR_THEME[\"ONE_DARK_PRO\"] = \"one-dark-pro\";\n CODE_EDITOR_THEME[\"ONE_DARK_PRO_DARKER\"] = \"one-dark-pro-darker\";\n CODE_EDITOR_THEME[\"MATERIAL_DEFAULT\"] = \"material-default\";\n CODE_EDITOR_THEME[\"MATERIAL_DARKER\"] = \"material-darker\";\n // default themes in Monaco editor\n // See https://github.com/microsoft/vscode/blob/main/src/vs/editor/standalone/common/themes.ts\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_LIGHT\"] = \"vs\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_DARK\"] = \"vs-dark\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_HC_BLACK\"] = \"hc-black\";\n CODE_EDITOR_THEME[\"BUILT_IN__VSCODE_HC_LIGHT\"] = \"hc-light\";\n})(CODE_EDITOR_THEME || (CODE_EDITOR_THEME = {}));\nexport const DEFAULT_DARK_THEME = {\n base: 'vs-dark',\n inherit: true,\n colors: {},\n rules: [\n ...BASE_PURE_LANGUAGE_COLOR_TOKENS,\n // NOTE: correct a problem with syntax highlighting of string in SQL\n { token: 'string.sql', foreground: 'ce9178' },\n { token: 'white.sql', foreground: 'd4d4d4' },\n { token: 'identifier.sql', foreground: 'd4d4d4' },\n { token: 'operator.sql', foreground: 'd4d4d4' },\n ],\n};\nexport const SOLARIZED_DARK_THEME = buildCodeEditorTheme(SOLARIZED_DARK_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const GITHUB_DARK_THEME = buildCodeEditorTheme(GITHUB_DARK_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const GITHUB_DARK_DIMMED_THEME = buildCodeEditorTheme(GITHUB_DARK_DIMMED_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const MATERIAL_DEFAULT_THEME = buildCodeEditorTheme(MATERIAL_DEFAULT_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const MATERIAL_DARKER_THEME = buildCodeEditorTheme(MATERIAL_DARKER_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const ONE_DARK_PRO_THEME = buildCodeEditorTheme(ONE_DARK_PRO_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\nexport const ONE_DARK_PRO_DARKER_THEME = buildCodeEditorTheme(ONE_DARK_PRO_DARKER_THEME_DATA, CODE_EDITOR_THEME.BUILT_IN__VSCODE_DARK, {}, []);\n//# sourceMappingURL=CodeEditorTheme.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { APPLICATION_EVENT, DEFAULT_MONOSPACED_FONT_FAMILY, } from '@finos/legend-application';\nimport { LogEvent } from '@finos/legend-shared';\nimport { editor as monacoEditorAPI, KeyCode, KeyMod, MarkerSeverity, } from 'monaco-editor';\nimport { CODE_EDITOR_THEME, DEFAULT_DARK_THEME, GITHUB_DARK_DIMMED_THEME, GITHUB_DARK_THEME, MATERIAL_DARKER_THEME, MATERIAL_DEFAULT_THEME, ONE_DARK_PRO_DARKER_THEME, ONE_DARK_PRO_THEME, SOLARIZED_DARK_THEME, } from './CodeEditorTheme.js';\n/**\n * Normally `monaco-editor` worker disposes after 5 minutes staying idle, but we fasten\n * this pace just in case the usage of the editor causes memory-leak somehow\n */\nexport const disposeCodeEditor = (editor) => {\n editor.dispose();\n // NOTE: just to be sure, we dispose the model after disposing the editor\n editor.getModel()?.dispose();\n};\nexport const disposeDiffCodeEditor = (editor) => {\n editor.dispose();\n editor.getOriginalEditor().getModel()?.dispose();\n editor.getModifiedEditor().getModel()?.dispose();\n};\n/**\n * Get the text value with LF line ending.\n * This is needed since if there are CR `\\r` characters in the text input\n * (e.g. users of Windows doing copy/paste)\n * the default mode of `monaco-editor` is `TextDefined` which means if the text\n * contains CR character(s), it will automatically be treated as CRLF. As such, we want\n * an utility method to extract the text value with line ending option LF\n * to force omission of CR characters\n * See https://github.com/finos/legend-studio/issues/608\n */\nexport const getCodeEditorValue = (editor) => editor.getModel()?.getValue(monacoEditorAPI.EndOfLinePreference.LF) ?? '';\nexport const getBaseCodeEditorOptions = () => ({\n contextmenu: false,\n copyWithSyntaxHighlighting: false,\n // NOTE: These following font options are needed (and CSS font-size option `.monaco-editor * { font-size: ... }` as well)\n // in order to make the editor appear properly on multiple platform, the ligatures option is needed for Mac to display properly\n // otherwise the cursor position relatively to text would be off\n // Another potential cause for this misaligment is that the fonts are being lazy-loaded and made available after `monaco-editor`\n // calculated the font-width, for this, we can use `remeasureFonts`, but our case here, `fontLigatures: true` seems\n // to do the trick\n // See https://github.com/microsoft/monaco-editor/issues/392\n fontSize: 14,\n // Enforce a fixed font-family to make cross platform display consistent (i.e. Mac defaults to use `Menlo` which is bigger than\n // `Consolas` on Windows, etc.)\n fontFamily: 'Roboto Mono',\n // Enable font ligature: glyphs which combine the shapes of certain sequences of characters into a new form that makes for\n // a more harmonious reading experience.\n fontLigatures: true,\n // Make sure hover or widget shown near boundary are not truncated by setting their position to `fixed`\n fixedOverflowWidgets: true,\n detectIndentation: false, // i.e. so we can force tab-size\n tabSize: 2,\n // The typing is currently not correct for `bracketPairColorization`, until this is fixed, we will remove the cast\n // See https://github.com/microsoft/monaco-editor/issues/3013\n 'bracketPairColorization.enabled': false,\n automaticLayout: true,\n});\nexport const getBaseConsoleOptions = () => ({\n ...getBaseCodeEditorOptions(),\n fontSize: 12,\n extraEditorClassName: 'monaco-editor--small-font',\n readOnly: true,\n glyphMargin: false,\n folding: false,\n lineNumbers: 'off',\n lineDecorationsWidth: 10,\n lineNumbersMinChars: 0,\n minimap: {\n enabled: false,\n },\n guides: {\n bracketPairs: false,\n bracketPairsHorizontal: false,\n highlightActiveBracketPair: false,\n indentation: false,\n highlightActiveIndentation: false,\n },\n renderLineHighlight: 'none',\n});\nexport const moveCursorToPosition = (editor, position) => {\n if (!editor.hasTextFocus()) {\n editor.focus();\n } // focus the editor first so that it can shows the cursor\n editor.revealPositionInCenter(position, 0);\n editor.setPosition(position);\n};\nconst INTERNAL__DUMMY_PROBLEM_MARKER_OWNER = 'dummy_problem_marker_owner';\nexport const setErrorMarkers = (editorModel, errors, ownerId) => {\n monacoEditorAPI.setModelMarkers(editorModel, ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER, errors.map((error) => ({\n startLineNumber: error.startLineNumber,\n startColumn: error.startColumn,\n endLineNumber: error.endLineNumber,\n endColumn: error.endColumn + 1, // add a 1 to endColumn as monaco editor range is not inclusive\n // NOTE: when the message is empty, no error tooltip is shown, we want to avoid this\n message: error.message === '' ? '(no error message)' : error.message,\n severity: MarkerSeverity.Error,\n })));\n};\nexport const setWarningMarkers = (editorModel, warnings, ownerId) => {\n monacoEditorAPI.setModelMarkers(editorModel, ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER, warnings.map((warning) => ({\n startLineNumber: warning.startLineNumber,\n startColumn: warning.startColumn,\n endColumn: warning.endColumn,\n endLineNumber: warning.endLineNumber,\n message: warning.message === '' ? '(no warning message)' : warning.message,\n severity: MarkerSeverity.Warning,\n })));\n};\nexport const clearMarkers = (ownerId) => {\n monacoEditorAPI.removeAllMarkers(ownerId ?? INTERNAL__DUMMY_PROBLEM_MARKER_OWNER);\n};\n/**\n * This method eliminates CR '\\r' character(s) in the provided text value.\n */\nexport const normalizeLineEnding = (val) => val.replace(/\\r/g, '');\n// We need to dynamically adjust the width of the line number gutter, otherwise as the document gets\n// larger, the left margin will start to shrink\n// See https://github.com/microsoft/monaco-editor/issues/2206\nexport const resetLineNumberGutterWidth = (editor) => {\n const currentValue = editor.getValue();\n editor.updateOptions({\n lineNumbersMinChars: Math.max(Math.floor(Math.log10(currentValue.split(/\\r\\n|\\r|\\n/g).length)) + 3, 5),\n });\n};\nexport const configureCodeEditorComponent = async (applicationStore) => {\n /**\n * Since we use a custom fonts for text-editor, we want to make sure the font is loaded before any text-editor is opened\n * this is to ensure\n */\n const fontLoadFailureErrorMessage = `Monospaced font '${DEFAULT_MONOSPACED_FONT_FAMILY}' has not been loaded properly, code editor might not display properly`;\n await Promise.all([400, 700].map((weight) => document.fonts.load(`${weight} 1em ${DEFAULT_MONOSPACED_FONT_FAMILY}`)))\n .then(() => {\n if (document.fonts.check(`1em ${DEFAULT_MONOSPACED_FONT_FAMILY}`)) {\n monacoEditorAPI.remeasureFonts();\n }\n else {\n applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_SETUP__FAILURE), fontLoadFailureErrorMessage);\n }\n })\n .catch(() => applicationStore.logService.error(LogEvent.create(APPLICATION_EVENT.APPLICATION_SETUP__FAILURE), fontLoadFailureErrorMessage));\n // override native hotkeys supported by monaco-editor\n // here we map these keys to a dummy command that would just dispatch the key combination\n // to the application keyboard shortcut service, effectively bypassing the command associated\n // with the native keybinding\n const OVERRIDE_DEFAULT_KEYBINDING_COMMAND = 'legend.code-editor.override-default-keybinding';\n monacoEditorAPI.registerCommand(OVERRIDE_DEFAULT_KEYBINDING_COMMAND, (accessor, ...args) => {\n applicationStore.keyboardShortcutsService.dispatch(args[0]);\n });\n const hotkeyMapping = [\n [KeyCode.F1, 'F1'], // show command center\n [KeyCode.F8, 'F8'], // show error\n [KeyCode.F9, 'F9'], // toggle debugger breakpoint\n [KeyMod.WinCtrl | KeyCode.KeyG, 'Control+KeyG'], // go-to line command\n [KeyMod.WinCtrl | KeyCode.KeyB, 'Control+KeyB'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyO, 'Control+KeyO'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyD, 'Control+KeyD'], // cursor move (core command)\n [KeyMod.WinCtrl | KeyCode.KeyP, 'Control+KeyP'], // cursor move (core command)\n [KeyMod.Shift | KeyCode.F10, 'Shift+F10'], // show editor context menu\n [KeyMod.WinCtrl | KeyCode.F2, 'Control+F2'], // change all instances\n [KeyMod.WinCtrl | KeyCode.F12, 'Control+F12'], // go-to definition\n ];\n monacoEditorAPI.addKeybindingRules(hotkeyMapping.map(([nativeCodeEditorKeyBinding, keyCombination]) => ({\n keybinding: nativeCodeEditorKeyBinding,\n command: OVERRIDE_DEFAULT_KEYBINDING_COMMAND,\n commandArgs: keyCombination,\n })));\n // themes\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.DEFAULT_DARK, DEFAULT_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.SOLARIZED_DARK, SOLARIZED_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.GITHUB_DARK, GITHUB_DARK_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.GITHUB_DARK_DIMMED, GITHUB_DARK_DIMMED_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.MATERIAL_DEFAULT, MATERIAL_DEFAULT_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.MATERIAL_DARKER, MATERIAL_DARKER_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.ONE_DARK_PRO, ONE_DARK_PRO_THEME);\n monacoEditorAPI.defineTheme(CODE_EDITOR_THEME.ONE_DARK_PRO_DARKER, ONE_DARK_PRO_DARKER_THEME);\n};\nexport var CODE_EDITOR_LANGUAGE;\n(function (CODE_EDITOR_LANGUAGE) {\n CODE_EDITOR_LANGUAGE[\"TEXT\"] = \"plaintext\";\n CODE_EDITOR_LANGUAGE[\"PURE\"] = \"pure\";\n CODE_EDITOR_LANGUAGE[\"JSON\"] = \"json\";\n CODE_EDITOR_LANGUAGE[\"JAVA\"] = \"java\";\n CODE_EDITOR_LANGUAGE[\"MARKDOWN\"] = \"markdown\";\n CODE_EDITOR_LANGUAGE[\"SQL\"] = \"sql\";\n CODE_EDITOR_LANGUAGE[\"XML\"] = \"xml\";\n CODE_EDITOR_LANGUAGE[\"YAML\"] = \"yaml\";\n CODE_EDITOR_LANGUAGE[\"GRAPHQL\"] = \"graphql\";\n})(CODE_EDITOR_LANGUAGE || (CODE_EDITOR_LANGUAGE = {}));\n//# sourceMappingURL=CodeEditorUtils.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DATE_FORMAT, ELEMENT_PATH_DELIMITER, MULTIPLICITY_INFINITE, MULTIPLICITY_RANGE_OPERATOR, PRIMITIVE_TYPE, } from '../MetaModelConst.js';\nimport { PrimitiveType } from '../metamodel/pure/packageableElements/domain/PrimitiveType.js';\nimport { Enumeration } from '../metamodel/pure/packageableElements/domain/Enumeration.js';\nimport { formatDate } from '@finos/legend-shared';\nexport var PURE_ELEMENT_NAME;\n(function (PURE_ELEMENT_NAME) {\n PURE_ELEMENT_NAME[\"PROFILE\"] = \"Profile\";\n PURE_ELEMENT_NAME[\"CLASS\"] = \"Class\";\n PURE_ELEMENT_NAME[\"ENUMERATION\"] = \"Enum\";\n PURE_ELEMENT_NAME[\"MEASURE\"] = \"Measure\";\n PURE_ELEMENT_NAME[\"ASSOCIATION\"] = \"Association\";\n PURE_ELEMENT_NAME[\"FUNCTION\"] = \"function\";\n PURE_ELEMENT_NAME[\"MAPPING\"] = \"Mapping\";\n PURE_ELEMENT_NAME[\"FLAT_DATA\"] = \"FlatData\";\n PURE_ELEMENT_NAME[\"DATABASE\"] = \"Database\";\n PURE_ELEMENT_NAME[\"SERVICE\"] = \"Service\";\n PURE_ELEMENT_NAME[\"RUNTIME\"] = \"Runtime\";\n PURE_ELEMENT_NAME[\"CONNECTION\"] = \"Connection\";\n PURE_ELEMENT_NAME[\"FILE_GENERATION\"] = \"FileGeneration\";\n PURE_ELEMENT_NAME[\"GENERATION_SPECIFICATION\"] = \"GenerationSpecification\";\n PURE_ELEMENT_NAME[\"DATA_ELEMENT\"] = \"Data\";\n PURE_ELEMENT_NAME[\"EXECUTION_ENVIRONMENT\"] = \"ExecutionEnvironment\";\n})(PURE_ELEMENT_NAME || (PURE_ELEMENT_NAME = {}));\nexport var PURE_CONNECTION_NAME;\n(function (PURE_CONNECTION_NAME) {\n PURE_CONNECTION_NAME[\"JSON_MODEL_CONNECTION\"] = \"JsonModelConnection\";\n PURE_CONNECTION_NAME[\"XML_MODEL_CONNECTION\"] = \"XmlModelConnection\";\n PURE_CONNECTION_NAME[\"MODEL_CHAIN_CONNECTION\"] = \"ModelChainConnection\";\n PURE_CONNECTION_NAME[\"RELATIONAL_DATABASE_CONNECTION\"] = \"RelationalDatabaseConnection\";\n PURE_CONNECTION_NAME[\"FLAT_DATA_CONNECTION\"] = \"FlatDataConnection\";\n})(PURE_CONNECTION_NAME || (PURE_CONNECTION_NAME = {}));\nexport var PURE_PARSER;\n(function (PURE_PARSER) {\n PURE_PARSER[\"PURE\"] = \"Pure\";\n PURE_PARSER[\"CONNECTION\"] = \"Connection\";\n PURE_PARSER[\"RUNTIME\"] = \"Runtime\";\n PURE_PARSER[\"MAPPING\"] = \"Mapping\";\n PURE_PARSER[\"SERVICE\"] = \"Service\";\n PURE_PARSER[\"FLATDATA\"] = \"FlatData\";\n PURE_PARSER[\"RELATIONAL\"] = \"Relational\";\n PURE_PARSER[\"GENERATION_SPECIFICATION\"] = \"GenerationSpecification\";\n PURE_PARSER[\"FILE_GENERATION_SPECIFICATION\"] = \"FileGeneration\";\n PURE_PARSER[\"DATA\"] = \"Data\";\n})(PURE_PARSER || (PURE_PARSER = {}));\nexport const generateMultiplicityString = (lowerBound, upperBound) => {\n if (lowerBound === upperBound) {\n return lowerBound.toString();\n }\n else if (lowerBound === 0 && upperBound === undefined) {\n return MULTIPLICITY_INFINITE;\n }\n return `${lowerBound}${MULTIPLICITY_RANGE_OPERATOR}${upperBound ?? MULTIPLICITY_INFINITE}`;\n};\nexport const generateDefaultParameterValueForType = (type, index) => {\n if (!type) {\n return `param${index}`;\n }\n if (type instanceof Enumeration) {\n return type.values.length !== 0\n ? `${type.path}.${type.values[0]?.name}`\n : `param${index}`;\n }\n else if (type instanceof PrimitiveType) {\n switch (type.name) {\n case PRIMITIVE_TYPE.BOOLEAN:\n return true;\n case PRIMITIVE_TYPE.FLOAT:\n case PRIMITIVE_TYPE.DECIMAL:\n return 0.0;\n case PRIMITIVE_TYPE.NUMBER:\n case PRIMITIVE_TYPE.INTEGER:\n return 0;\n case PRIMITIVE_TYPE.DATE:\n case PRIMITIVE_TYPE.STRICTDATE:\n return `%${formatDate(new Date(), DATE_FORMAT)}`;\n case PRIMITIVE_TYPE.DATETIME:\n return `%${formatDate(new Date(), DATE_FORMAT)}T00:00:00`;\n case PRIMITIVE_TYPE.STRICTTIME:\n return `%00:00:00`;\n case PRIMITIVE_TYPE.STRING:\n return \"''\";\n default:\n return `param${index}`;\n }\n }\n // Other non-primitive types, e.g. Class\n return `param${index}`;\n};\nexport const generateFunctionCallString = (element) => {\n let lambdaString = '';\n if (element.parameters.length > 0) {\n for (let i = 0; i < element.parameters.length; i++) {\n const paramType = element.parameters[i]?.type.value;\n const separator = i !== element.parameters.length - 1 ? ', ' : '';\n lambdaString =\n lambdaString +\n generateDefaultParameterValueForType(paramType, i) +\n separator;\n }\n }\n return `${element.package?.path}${ELEMENT_PATH_DELIMITER}${element.functionName}(${lambdaString})`;\n};\nexport const generateFunctionPrettyName = (element, options) => `${options?.fullPath ? `${element.package?.path}${ELEMENT_PATH_DELIMITER}` : ''}${element.functionName}(${element.parameters\n .map((p) => !options?.notIncludeParamName\n ? `${p.name}: ${p.type.value.name}[${generateMultiplicityString(p.multiplicity.lowerBound, p.multiplicity.upperBound)}]`\n : `${p.type.value.name}[${generateMultiplicityString(p.multiplicity.lowerBound, p.multiplicity.upperBound)}]`)\n .join(', ')}): ${element.returnType.value.name}[${generateMultiplicityString(element.returnMultiplicity.lowerBound, element.returnMultiplicity.upperBound)}]`.replaceAll(/\\s*/gu, (val) => {\n if (options?.spacing) {\n return val;\n }\n return '';\n});\n//# sourceMappingURL=PureLanguageHelper.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable prefer-named-capture-group */\nimport { PURE_ELEMENT_NAME, PURE_CONNECTION_NAME } from '@finos/legend-graph';\nimport { languages as monacoLanguagesAPI } from 'monaco-editor';\nimport { PURE_GRAMMAR_TOKEN } from './PureLanguage.js';\nimport { CODE_EDITOR_LANGUAGE } from './CodeEditorUtils.js';\n/**\n * The postfix to be added to all token types, i.e. identifier.pure, number.pure, etc.\n */\nconst PURE_GRAMMAR_TOKEN_POSTFIX = '.pure';\n// Taken from `monaco-languages` configuration for Java in order to do propert brace matching\n// See https://github.com/microsoft/monaco-languages/blob/master/src/java/java.ts\nconst configuration = {\n // NOTE: Pure identifier includes $ but not in the first position (as that is parsed as a variable)\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^`~!@#%^$&*()\\-=+[{\\]}\\\\|;:'\",.<>/?\\s][^`~!@#%^&*()\\-=+[{\\]}\\\\|;:'\",.<>/?\\s]*)/,\n comments: {\n lineComment: '//',\n blockComment: ['/*', '*/'],\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n { open: '<', close: '>' },\n { open: '<<', close: '>>' },\n ],\n folding: {\n markers: {\n start: new RegExp('^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))'),\n end: new RegExp('^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))'),\n },\n },\n};\n/**\n * Create new monarch definition to support syntax-highlighting\n * See https://microsoft.github.io/monaco-editor/monarch.html\n *\n * The way SQL monarch definition is organized is good and worth learning from\n * See https://github.com/microsoft/monaco-languages/blob/master/src/sql/sql.ts\n *\n * NOTE: using `monarch` only allows fairly very basic syntax-highlighting\n * to actually do full AST analysis, we might need something more serious like\n * using TextMate grammar which is used by VSCode itself\n * See https://github.com/microsoft/monaco-editor#faq\n * See https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide\n */\nconst generateLanguageMonarch = (extraKeywords) => \n// TODO: complete syntax-highlighter for core features like constraint, derived properties, etc.\n// TODO: add syntax highlighting for modules/plugins (come up with a plugin mechanism to do this).\n({\n defaultToken: 'invalid',\n tokenPostfix: PURE_GRAMMAR_TOKEN_POSTFIX,\n keywords: [\n ...extraKeywords,\n // relational\n 'Schema',\n 'Table',\n 'Join',\n 'View',\n 'primaryKey',\n 'groupBy',\n 'mainTable',\n // native\n 'let',\n 'extends',\n 'true',\n 'false',\n 'projects',\n // elements\n PURE_ELEMENT_NAME.CLASS,\n PURE_ELEMENT_NAME.ASSOCIATION,\n PURE_ELEMENT_NAME.ENUMERATION,\n PURE_ELEMENT_NAME.MEASURE,\n PURE_ELEMENT_NAME.PROFILE,\n PURE_ELEMENT_NAME.FUNCTION,\n PURE_ELEMENT_NAME.MAPPING,\n PURE_ELEMENT_NAME.RUNTIME,\n PURE_ELEMENT_NAME.CONNECTION,\n PURE_ELEMENT_NAME.FILE_GENERATION,\n PURE_ELEMENT_NAME.GENERATION_SPECIFICATION,\n PURE_ELEMENT_NAME.DATA_ELEMENT,\n // connections\n PURE_CONNECTION_NAME.JSON_MODEL_CONNECTION,\n PURE_CONNECTION_NAME.MODEL_CHAIN_CONNECTION,\n PURE_CONNECTION_NAME.XML_MODEL_CONNECTION,\n // mapping\n 'include',\n 'EnumerationMapping',\n 'Pure',\n 'AssociationMapping',\n 'XStore',\n 'AggregationAware',\n /**\n * @modularize\n * See https://github.com/finos/legend-studio/issues/65\n */\n PURE_ELEMENT_NAME.SERVICE,\n PURE_ELEMENT_NAME.FLAT_DATA,\n PURE_ELEMENT_NAME.DATABASE,\n PURE_CONNECTION_NAME.FLAT_DATA_CONNECTION,\n PURE_CONNECTION_NAME.RELATIONAL_DATABASE_CONNECTION,\n 'Relational',\n ],\n operators: [\n '=',\n '>',\n '<',\n '!',\n '~',\n '?',\n ':',\n '==',\n '<=',\n '>=',\n '&&',\n '||',\n '++',\n '--',\n '+',\n '-',\n '*',\n '/',\n '&',\n '|',\n '^',\n '%',\n '->',\n '#{',\n '}#',\n '@',\n '<<',\n '>>',\n ],\n languageStructs: ['import', 'native'],\n // common regular expressions to be used in tokenizer\n identifier: /[a-zA-Z_$][\\w$]*/,\n symbols: /[=><!~?:&|+\\-*/^%#@]+/,\n escapes: /\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n digits: /\\d+(_+\\d+)*/,\n octaldigits: /[0-7]+(_+[0-7]+)*/,\n binarydigits: /[0-1]+(_+[0-1]+)*/,\n hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,\n multiplicity: /\\[(?:[a-zA-Z0-9]+(?:\\.\\.(?:[a-zA-Z0-9]+|\\*|))?|\\*)\\]/,\n package: /(?:[\\w_]+::)+/,\n // NOTE: generics is a little tricky because in order to do it right, we have to\n // do some sort of bracket matching, but we just can use a simple tokenizer here\n // so to account for cases like `<Nil,Any|*>)->` `Function<{T[1]->Boolean[1]}>[1]`\n // we have to make sure the content does not contain any `:` or `.` characters\n // in order to avoid the accidental greedy match with inputs like\n // `function doSomething<T>(a: Function<T[1]->Boolean[1]>)`\n // nor we want to make sure the last character of the content is not `-` to avoid\n // accidentally matching `->` as the end of the generics\n generics: /(?:(?:<\\w+>)|(?:<[^:.@^()]+[^-]>))/,\n date: /%-?\\d+(?:-\\d+(?:-\\d+(?:T(?:\\d+(?::\\d+(?::\\d+(?:.\\d+)?)?)?)(?:[+-][0-9]{4})?)))/,\n time: /%\\d+(?::\\d+(?::\\d+(?:.\\d+)?)?)?/,\n tokenizer: {\n root: [\n // NOTE: since `monaco-editor` Monarch is only meant for tokenizing\n // and the need to highlight Pure syntax is more than just token-based,\n // but semantic/syntax-based we have to create these complex rules.\n // the things to note here is these are not meant to match multilines\n // and they must be placed before identifier rules since token matching\n // is run in order\n // See https://github.com/microsoft/monaco-editor/issues/316#issuecomment-273555698\n // See https://github.com/microsoft/monaco-editor/issues/571#issuecomment-342555050\n // See https://microsoft.github.io/monaco-editor/monarch.html\n { include: '@pure' },\n { include: '@date' },\n { include: '@color' },\n // parser markers\n [\n // NOTE: any leading whitespace to the section header is considered invalid syntax\n /^\\s*###[\\w]+/,\n PURE_GRAMMAR_TOKEN.PARSER,\n ],\n // identifiers and keywords\n [\n /(@identifier)/,\n {\n cases: {\n '@languageStructs': PURE_GRAMMAR_TOKEN.LANGUAGE_STRUCT,\n '@keywords': `${PURE_GRAMMAR_TOKEN.KEYWORD}.$0`,\n // function descriptor\n '([a-zA-Z_$][\\\\w$]*)_((\\\\w+_(([a-zA-Z0-9]+)|(\\\\$[a-zA-Z0-9]+_[a-zA-Z0-9]+\\\\$)))__)*(\\\\w+_(([a-zA-Z0-9]+)|(\\\\$[a-zA-Z0-9]+_[a-zA-Z0-9]+\\\\$)))_': PURE_GRAMMAR_TOKEN.TYPE,\n '@default': PURE_GRAMMAR_TOKEN.IDENTIFIER,\n },\n },\n ],\n // whitespace\n { include: '@whitespace' },\n // delimiters and operators\n [/[{}()[\\]]/, '@brackets'],\n [/[<>](?!@symbols)/, '@brackets'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': PURE_GRAMMAR_TOKEN.OPERATOR,\n '@default': PURE_GRAMMAR_TOKEN.IDENTIFIER,\n },\n },\n ],\n { include: '@number' },\n // delimiter: after number because of .\\d floats\n [/[;,.]/, PURE_GRAMMAR_TOKEN.DELIMITER],\n // strings\n // NOTE: including non-teminated string so as people type ', we can start showing them that they're working on a string\n [/'([^'\\\\]|\\\\.)*$/, `${PURE_GRAMMAR_TOKEN.STRING}.invalid`],\n [/'/, PURE_GRAMMAR_TOKEN.STRING, '@string'],\n { include: '@characters' },\n ],\n pure: [\n // type\n [/(@package\\*)/, [PURE_GRAMMAR_TOKEN.PACKAGE]], // import path\n [\n /(@package?)(@identifier)(@generics?)(\\s*)(@multiplicity)/,\n [\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.MULTIPLICITY,\n ],\n ],\n [\n /(@package)(@identifier)(@generics?)/,\n [\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n ],\n ],\n // special operators that uses type (e.g. constructor, cast)\n [\n /([@^])(\\s*)(@package?)(@identifier)(@generics?)(@multiplicity?)/,\n [\n `${PURE_GRAMMAR_TOKEN.TYPE}.operator`,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.PACKAGE,\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.GENERICS,\n PURE_GRAMMAR_TOKEN.MULTIPLICITY,\n ],\n ],\n // property / parameter\n [\n /(\\.\\s*)(@identifier)/,\n [PURE_GRAMMAR_TOKEN.DELIMITER, PURE_GRAMMAR_TOKEN.PROPERTY],\n ],\n [\n /(@identifier)(\\s*=)/,\n [PURE_GRAMMAR_TOKEN.PROPERTY, PURE_GRAMMAR_TOKEN.OPERATOR],\n ],\n [\n /(@identifier)(\\.)(@identifier)/,\n [\n PURE_GRAMMAR_TOKEN.TYPE,\n PURE_GRAMMAR_TOKEN.OPERATOR,\n PURE_GRAMMAR_TOKEN.PROPERTY,\n ],\n ], // could be: property chain, profile tag, and stereotype\n [\n /(@identifier)(\\s*:)/,\n [PURE_GRAMMAR_TOKEN.PARAMETER, PURE_GRAMMAR_TOKEN.OPERATOR],\n ],\n // variables\n [\n /(let)(\\s+)(@identifier)(\\s*=)/,\n [\n PURE_GRAMMAR_TOKEN.KEYWORD,\n PURE_GRAMMAR_TOKEN.WHITESPACE,\n PURE_GRAMMAR_TOKEN.VARIABLE,\n PURE_GRAMMAR_TOKEN.OPERATOR,\n ],\n ],\n [/(\\$@identifier)/, [`${PURE_GRAMMAR_TOKEN.VARIABLE}.reference`]],\n ],\n date: [\n [/(%latest)/, [`${PURE_GRAMMAR_TOKEN.DATE}.latest`]],\n [/(@date)/, [PURE_GRAMMAR_TOKEN.DATE]],\n [/(@time)/, [`${PURE_GRAMMAR_TOKEN.DATE}.time`]],\n ],\n color: [[/(#[0-9a-fA-F]{6})/, [PURE_GRAMMAR_TOKEN.COLOR]]],\n number: [\n [\n /(@digits)[eE]([-+]?(@digits))?[fFdD]?/,\n `${PURE_GRAMMAR_TOKEN.NUMBER}.float`,\n ],\n [\n /(@digits)\\.(@digits)([eE][-+]?(@digits))?[fFdD]?/,\n `${PURE_GRAMMAR_TOKEN.NUMBER}.float`,\n ],\n [/0[xX](@hexdigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.hex`],\n [/0(@octaldigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.octal`],\n [/0[bB](@binarydigits)[Ll]?/, `${PURE_GRAMMAR_TOKEN.NUMBER}.binary`],\n [/(@digits)[fFdD]/, `${PURE_GRAMMAR_TOKEN.NUMBER}.float`],\n [/(@digits)[lL]?/, PURE_GRAMMAR_TOKEN.NUMBER],\n ],\n whitespace: [\n [/[ \\t\\r\\n]+/, PURE_GRAMMAR_TOKEN.WHITESPACE],\n [/\\/\\*\\*(?!\\/)/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@doc'],\n [/\\/\\*/, PURE_GRAMMAR_TOKEN.COMMENT, '@comment'],\n [/\\/\\/.*$/, PURE_GRAMMAR_TOKEN.COMMENT],\n ],\n comment: [\n [/[^/*]+/, PURE_GRAMMAR_TOKEN.COMMENT],\n // [/\\/\\*/, PURE_GRAMMAR_TOKEN.COMMENT, '@push' ], // nested comment not allowed :-(\n // [/\\/\\*/, ${PURE_GRAMMAR_TOKEN.COMMENT}.invalid` ], // this breaks block comments in the shape of /* //*/\n [/\\*\\//, PURE_GRAMMAR_TOKEN.COMMENT, '@pop'],\n [/[/*]/, PURE_GRAMMAR_TOKEN.COMMENT],\n ],\n // Identical copy of comment above, except for the addition of .doc\n doc: [\n [/[^/*]+/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`],\n // [/\\/\\*/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@push' ], // nested comment not allowed :-(\n [/\\/\\*/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc.invalid`],\n [/\\*\\//, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`, '@pop'],\n [/[/*]/, `${PURE_GRAMMAR_TOKEN.COMMENT}.doc`],\n ],\n string: [\n [/[^\\\\']+/, PURE_GRAMMAR_TOKEN.STRING],\n [/@escapes/, `${PURE_GRAMMAR_TOKEN.STRING}.escape`],\n [/\\\\./, `${PURE_GRAMMAR_TOKEN.STRING}.escape.invalid`],\n [/'/, PURE_GRAMMAR_TOKEN.STRING, '@pop'],\n ],\n characters: [\n [/'[^\\\\']'/, PURE_GRAMMAR_TOKEN.STRING],\n [\n /(')(@escapes)(')/,\n [\n PURE_GRAMMAR_TOKEN.STRING,\n `${PURE_GRAMMAR_TOKEN.STRING}.escape`,\n PURE_GRAMMAR_TOKEN.STRING,\n ],\n ],\n [/'/, `${PURE_GRAMMAR_TOKEN.STRING}.invalid`],\n ],\n },\n});\nexport function setupPureLanguageService(options) {\n monacoLanguagesAPI.register({ id: CODE_EDITOR_LANGUAGE.PURE });\n monacoLanguagesAPI.setLanguageConfiguration(CODE_EDITOR_LANGUAGE.PURE, configuration);\n monacoLanguagesAPI.setMonarchTokensProvider(CODE_EDITOR_LANGUAGE.PURE, generateLanguageMonarch(options?.extraKeywords ?? []));\n}\n//# sourceMappingURL=PureLanguageService.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport packageJson from '../../package.json' assert { type: 'json' };\nimport { LegendREPLApplicationPlugin } from '../stores/LegendREPLApplicationPlugin.js';\nimport { configureCodeEditorComponent, setupPureLanguageService, } from '@finos/legend-lego/code-editor';\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nexport class Core_LegendREPLApplicationPlugin extends LegendREPLApplicationPlugin {\n static NAME = packageJson.extensions.applicationREPLPlugin;\n constructor() {\n super(Core_LegendREPLApplicationPlugin.NAME, packageJson.version);\n }\n getExtraApplicationSetups() {\n return [\n async (applicationStore) => {\n ModuleRegistry.registerModules([\n ClientSideRowModelModule,\n RowGroupingModule,\n ]);\n await configureCodeEditorComponent(applicationStore);\n setupPureLanguageService();\n },\n ];\n }\n}\n//# sourceMappingURL=Core_LegendREPLApplicationPlugin.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createRoot } from 'react-dom/client';\nimport { LegendApplication, ApplicationStoreProvider, Core_LegendApplicationPlugin, getApplicationRootElement, } from '@finos/legend-application';\nimport { LegendREPLApplicationConfig, } from './LegendREPLApplicationConfig.js';\nimport { LegendREPLPluginManager } from './LegendREPLPluginManager.js';\nimport { LegendREPLWebApplication } from '../components/LegendREPLApplication.js';\nimport { Core_LegendREPLApplicationPlugin } from '../components/Core_LegendREPLApplicationPlugin.js';\nexport class LegendREPL extends LegendApplication {\n static create() {\n const application = new LegendREPL(LegendREPLPluginManager.create());\n application.withBasePlugins([\n new Core_LegendApplicationPlugin(),\n new Core_LegendREPLApplicationPlugin(),\n ]);\n application.withBasePresets([]);\n return application;\n }\n async configureApplication(input) {\n return new LegendREPLApplicationConfig(input);\n }\n async loadApplication(applicationStore) {\n createRoot(getApplicationRootElement()).render(_jsx(ApplicationStoreProvider, { store: applicationStore, children: _jsx(LegendREPLWebApplication, { baseUrl: this.baseAddress }) }));\n }\n}\n//# sourceMappingURL=LegendREPL.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { WebConsole, } from '@finos/legend-shared';\nimport { LegendREPL } from './application/LegendREPL.js';\nimport { Core_LegendREPLApplicationPlugin } from './components/Core_LegendREPLApplicationPlugin.js';\nexport class LegendREPLWebApplication {\n static getPresetCollection() {\n return [];\n }\n static getPluginCollection() {\n return [new Core_LegendREPLApplicationPlugin(), new WebConsole()];\n }\n static run(baseUrl) {\n LegendREPL.create()\n .setup({ baseAddress: baseUrl })\n .withPresets(LegendREPLWebApplication.getPresetCollection())\n .withPlugins(LegendREPLWebApplication.getPluginCollection())\n .start()\n .catch((e) => {\n throw e;\n });\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LegendREPLWebApplication } from '@finos/legend-application-repl';\nimport '../lib/tailwind.css'; // eslint-disable-line @finos/legend-studio/no-cross-workspace-non-export-usage\nimport './index.scss';\n\n// Resolve baseUrl relatively for application to work in vscode code-server\nconst relativeBaseUrl = new URL('./', window.location.href).pathname;\nLegendREPLWebApplication.run(relativeBaseUrl);\n","\"use strict\";\n/**\n * Copyright (c) 2020-present, Goldman Sachs\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Previously, these exports rely on ES module interop to expose `default` export\n * properly. But since we use `ESM` for Typescript resolution now, we lose this\n * so we have to workaround by importing these and re-export them from CJS\n *\n * TODO: remove these when the package properly work with Typescript's nodenext\n * module resolution\n *\n * @workaround ESM\n * See https://github.com/microsoft/TypeScript/issues/49298\n *\n * In addition to that, due to our upgrade to Typescript 5.0, we are forced to enable\n * --verbatimModuleSyntax flag, so we have to use CommonJS syntax in this file\n * See https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#verbatimmodulesyntax\n */\nconst CreatableSelect = require(\"react-select/creatable\");\nconst Select = require(\"react-select\");\nmodule.exports = {\n CreatableSelect,\n Select,\n SelectComponents: Select.components,\n};\n//# sourceMappingURL=CJS__ReactSelect.cjs.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunk_finos_legend_application_repl_deployment\"] = globalThis[\"webpackChunk_finos_legend_application_repl_deployment\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(5912)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","LOG_LEVEL","PluginInfo","name","version","signature","uuid","constructor","this","getName","getVersion","getSignature","getUUID","getInfo","info","configure","configData","AbstractPluginManager","plugins","presets","usePlugins","usePresets","Object","keys","forEach","key","configObj","preset","plugin","install","filter","getHiddenPluginNames","includes","map","sort","a","b","localeCompare","getHiddenPresetNames","LogEvent","channel","timestamp","Date","now","create","event","LoggerPlugin","level","DEBUG","setLevel","pluginManager","registerLoggerPlugin","debug","data","_debug","INFO","_info","warn","WARN","_warn","error","ERROR","_error","LogService","loggers","registerPlugins","loggerPlugins","logger","console","WebConsole","super","length","noop","ApplicationError","Error","message","undefined","detail","EnrichedError","overideMessage","messageLines","match","stack","split","slice","join","captureStackTrace","IllegalStateError","unsupportedObject","value","options","opts","obj","printFunctionName","maxDepth","deep","pickBy","val","replace","printObject","assertErrorThrown","returnUndefOnError","fn","AssertionError","isNonNullable","assertType","clazz","guaranteeNonEmptyString","str","assertNonEmptyString","assertionValue","isNaN","isPlainObject","guaranteeIsString","assertIsString","guaranteeIsNumber","assertIsNumber","guaranteeIsBoolean","assertIsBoolean","HttpStatus","CHARSET","HttpHeader","ContentType","HttpMethod","DEFAULT_CLIENT_REQUEST_OPTIONS","mode","credentials","redirect","mergeRequestHeaders","headersOne","headersTwo","requestHeaders","entries","NetworkClientError","response","payload","status","statusText","url","summary","JSON","stringify","payloadAsObject","parse","extractMessage","substring","processResponse","async","init","responseProcessConfig","preprocess","ok","text","Promise","reject","skipProcessing","resolve","NO_CONTENT","accept","headers","Accept","APPLICATION_JSON","json","TEXT_PLAIN","createRequestHeaders","method","baseRequestHeaders","GET","CONTENT_TYPE","NetworkClient","baseUrl","config","get","parameters","requestProcessConfig","request","put","PUT","post","POST","DELETE","requestUrl","URL","fullUrl","Array","isArray","subVal","searchParams","append","toString","makeUrl","body","enableCompression","Blob","compressData","APPLICATION_ZLIB","requestInit","fetch","then","UNAUTHORIZED","autoReAuthenticateUrl","id","previous","document","getElementById","remove","element","createElement","src","style","display","addEventListener","appendChild","autoReAuthenticate","resp","catch","TypeError","couldBeCORS","fileName","content","contentType","blob","type","createObjectURL","link","download","href","click","removeChild","location","APPLICATION_EVENT","SerializationFactory","schema","deserializeNullAsUndefined","Boolean","toJson","fromJson","optionalCustomUsingModelSchema","DocumentationEntry","markdownText","title","related","static","documentationKey","entry","serialization","collectKeyedDocumentationEntriesFromConfig","rawEntries","DocumentationService","links","docRegistry","Map","contextualDocIndex","applicationStore","documentationUrl","documentationLinkEntries","getApplicationPlugins","flatMap","getExtraKeyedDocumentationEntries","hasDocEntry","logService","DOCUMENTATION_LOAD__SKIP","set","keyedDocumentationEntries","contextualDocEntries","getExtraContextualDocumentationEntries","missingDocumentationEntries","uniq","getExtraRequiredDocumentationKeys","concat","has","push","DOCUMENTATION_REQUIREMENT_CHECK__FAILURE","hasContextualDocEntry","context","CONTEXTUAL_DOCUMENTATION_LOAD__SKIP","existingDocEntry","getDocEntry","getContextualDocEntry","getAllDocEntries","from","values","publishDocRegistry","result","publishContextualDocIndex","ACTION_STATE","CORE_TRACER_TAG","ActionState","state","_message","_messageFormatter","INITIAL","setMessage","setMessageFormatter","reset","inProgress","IN_PROGRESS","fail","FAILED","pass","SUCCEEDED","complete","hasSucceeded","sync","exportData","isInInitialState","isInProgress","hasFailed","hasCompleted","Trace","traceEntries","setup","bootstrap","clientSpan","reportSuccess","concludeClientSpan","reportError","close","concludeServerSpan","serverSpan","TracerService","createTrace","traceData","trace","createClientSpan","createServerSpan","FuzzySearchEngine","ADVANCED_FUZZY_SEARCH_MODE","VIRTUAL_ASSISTANT_TAB","FuzzySearchAdvancedConfigState","currentMode","STANDARD","onSearchModeChange","isAdvancedSearchActive","setCurrentMode","generateSearchText","INCLUDE","EXACT","INVERSE","VirtualAssistantDocumentationEntry","isOpen","docEntry","setIsOpen","VirtualAssistantContextualDocumentationEntry","isValidVirtualAssistantDocumentationEntry","AssistantService","panelRenderingKey","isHidden","isPanelMaximized","selectedTab","SEARCH","currentDocumentationEntry","searchEngine","searchConfigurationState","searchState","searchText","searchResults","showSearchConfigurationMenu","isOverSearchLimit","currentContextualDocumentationEntry","setIsHidden","setIsPanelMaximized","setSelectedTab","setSearchText","resetSearch","search","openDocumentationEntry","refreshPanelRendering","setShowSearchConfigurationMenu","documentationService","includeScore","shouldSort","ignoreLocation","threshold","weight","useExtendedSearch","navigationContextService","currentContext","openDocumentationEntryLink","shouldDisplayVirtualAssistantDocumentationEntry","navigationService","navigator","visitAddress","hideAssistant","toggleAssistant","limit","DOCUMENTATION_SEARCH_RESULTS_LIMIT","item","EventService","notifierPlugins","registerEventNotifierPlugins","notify","LegendApplicationTelemetryHelper","logEvent_ApplicationInitializationSucceeded","service","logEvent","APPLICATION_LOAD__SUCCESS","application","appName","appVersion","env","browser","userAgent","screen","height","window","width","logEvent_ApplicationContextAccessed","APPLICATION_CONTEXT__ACCESS","logEvent_VirtualAssistantDocumentationEntryAccessed","VIRTUAL_ASSISTANT_DOCUMENTATION_ENTRY__ACCESS","logEvent_ApplicationUsageInterrupted","APPLICATION_USAGE__INTERRUPT","ApplicationNavigationContextService","contextStack","pop","newContextStack","ctx","isTransient","find","getExtraAccessEventLoggingApplicationContextKeys","telemetryService","existingCtx","idx","indexOf","CommandService","commandRegistry","registerCommand","deregisterCommand","command","commandKey","COMMAND_CENTER_REGISTRATION__FAILURE","delete","runCommand","args","trigger","action","KeyboardShortcutsService","keyMap","commandKeyMap","isHotkeysBlocked","addHotkey","blockGlobalHotkeys","unblockGlobalHotkeys","getExtraKeyedCommandConfigEntries","shortcuts","defaultKeyboardShortcut","additionalKeyboardShortcuts","shortcut","keyCombination","dispatch","mappedCommandKeys","commandService","DEFAULT_MONOSPACED_FONT_FAMILY","DEFAULT_DATE_TIME_FORMAT","DISPLAY_ANSI_ESCAPE","ANSI_moveCursor","line","column","ConsoleSearchConfiguration","searchInput","useRegex","matchWholeWord","matchCaseSensitive","resultCount","currentResultIndex","setSearchInput","el","focus","Console","searchConfig","setSearchRegex","setSearchWholeWord","setSearchCaseSensitive","setSearchResultCount","setSearchCurrentResultIndex","Terminal","preserveLog","setPreserveLog","showHelp","showCommonANSIEscapeSequences","capitalize","toUpperCase","TITLE_CASE_EXCEPTION_WORDS","toTitleCase","trim","toLowerCase","prettyCONSTName","chunk","charAt","KEYBOARD_NAMED_KEY","parseKeybinding","press","modifiers","isMatchingKeyPressData","keyPressData","code","every","modifier","getModifierState","SHIFT","META","ALT","CONTROL","isMatchingKeyCombination","LegendCustomMUITheme","createTheme","transitions","LegendStyleProvider","props","children","StyledEngineProvider","injectFirst","ThemeProvider","theme","generateSimpleDIVComponent","componentName","divClassName","component","className","displayName","Modal","darkMode","ModalTitle","icon","ModalHeader","ModalHeaderActions","ModalBody","ModalFooter","ModalFooterButton","onClick","inProgressText","disabled","formatText","preventFormSubmit","isDarkMode","isFormatText","isSecondary","isPreventFormSubmit","ActionAlertType","ActionAlertActionType","AlertService","blockingAlertInfo","actionAlertInfo","setBlockingAlert","setActionAlertInfo","alertInfo","keyboardShortcutsService","notificationService","notifyIllegalState","ApplicationStoreContext","createContext","useApplicationStore","useContext","ApplicationStoreProvider","store","Provider","getActionButtonClassName","PROCEED_WITH_CAUTION","PROCEED","ActionAlertContent","prompt","onClose","onEnter","actions","handleClose","alertService","Dialog","open","TransitionProps","onSubmit","preventDefault","default","handler","e","autoFocus","label","ActionAlert","PanelLoadingIndicator","isLoading","ref","useRef","useEffect","current","parentElement","classList","add","BlockingAlert","classes","root","container","layoutService","TEMPORARY__isLightColorThemeEnabled","showLoading","CloseIcon","ThinVerticalDragHandleIcon","TimesIcon","TimesCircleIcon","PlusIcon","CogIcon","CaretDownIcon","QuestionCircleIcon","InfoCircleIcon","SearchIcon","MinusCircleIcon","CheckCircleIcon","ExclamationTriangleIcon","BugIcon","CircleNotchIcon","EmptyWindowRestoreIcon","WindowMaximizeIcon","MapMarkerIcon","WizardHatIcon","FaceLaughWinkIcon","FaceSadTearIcon","BeardIcon","SunglassesIcon","ChevronDownIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","DEFAULT_NOTIFICATION_HIDE_TIME","NOTIFCATION_SEVERITY","Notification","severity","autoHideDuration","NotificationService","notification","setNotification","notifySuccess","notifyWarning","notifyError","SUCCESS","WARNING","ILEGAL_STATE","notifyUnsupportedFeature","featureName","notifyAndReturnAlternativeOnError","alternative","NotificationManager","isExpanded","setIsExpanded","useState","notificationIcon","handleCopy","guardUnhandledError","clipboardService","copyTextToClipboard","anchorOriginBottomRight","anchorOrigin","vertical","horizontal","reason","tabIndex","BaseMenu","otherProps","paper","list","transitionDuration","ContextMenu","menuProps","onOpen","contextMenuRoot","anchorEl","setAnchorEl","left","setLeft","top","setTop","stopPropagation","onContextMenu","containerRect","getBoundingClientRect","containerLeft","scrollX","documentElement","scrollLeft","containerTop","scrollY","scrollTop","clientX","clientY","target","eventTarget","elementsFromPoint","some","anchorPosition","anchorReference","BackdropProps","invisible","disableRestoreFocus","MenuContent","forwardRef","MenuContentItem","MarkdownTextViewer","initialize","startOnLoad","contentLoaded","remarkPlugins","components","_props","node","rest","exec","groups","language","BlankPanelContent","contentRef","contentWidth","contentHeight","u","refreshMode","refreshRate","refreshOptions","trailing","showContent","setShowContent","containerRef","containerWidth","containerHeight","DEFAULT_CONTENT_PADDING","BaseRadioGroup","size","targetOptionsValuesInMatrix","arr","stepSize","matrix","i","transformToMatrix","row","op","FormControlLabel","control","Radio","BasePopover","LEGEND_APPLICATION_DOCUMENTATION_KEY","VirtualAssistantDocumentationEntryViewer","toggleExpand","copyDocumentationKey","elevation","rel","VirtualAssistantContextualSupportPanel","contextualEntry","assistantService","copyContextIDToClipboard","copyCurrentContextIDToClipboard","copyContextStackToClipboard","VirtualAssistantSearchPanel","searchInputRef","debouncedSearch","useMemo","debounce","querySelectorAll","activeElement","spellCheck","onChange","placeholder","QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX","searchMode","format","VirtualAssistantPanel","triggerElement","extraViewConfigurations","getExtraVirtualAssistantViewConfigurations","currentExtensionView","hideBackdrop","PaperProps","disableEnforceFocus","transformOrigin","onKeyDown","CONTEXTUAL_SUPPORT","autoExpandOnOpen","renderer","VirtualAssistant","isDragging","setIsDragging","_key","_setKey","assistantRef","toggleAssistantPanel","bounds","onStart","onStop","nodeRef","handle","APPLICATION_COMPONENT_ELEMENT_ID","PLATFORM_NATIVE_KEYBOARD_SHORTCUTS","BackdropContainer","elementId","ApplicationComponentFrameworkProvider","keyBindingMap","keyCombinations","combinations","buildHotkeysConfiguration","onKeyEvent","possibleMatches","timer","KeyboardEvent","uniqBy","combination","parsedKeyCombination","remainingExpectedKeyPresses","currentExpectedKeyPress","clearTimeout","setTimeout","clear","bind","createKeybindingsHandler","removeEventListener","onVisibilityChange","hidden","timeService","recordUsageInterruption","showBackdrop","Portal","getElementByID","backdropContainerElementID","BACKDROP_CONTAINER","Backdrop","DndProvider","backend","TOP_LEVEL_CONTAINER","LEGEND_XTERM_THEME","foreground","background","cursor","selectionBackground","black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","LEGEND_XTERM_SEARCH_THEME","matchOverviewRuler","activeMatchColorOverviewRuler","matchBackground","activeMatchBackground","DEFAULT_COMMAND_HEADER","BOLD","BRIGHT_BLUE","RESET","MAGENTA","COMMAND_START","XTerm","instance","resizer","searcher","webLinkProvider","_TEMPORARY__onKeyListener","_TEMPORARY__onDataListener","commandHistory","currentCommandSearchString","commandHistoryNavigationIdx","isRunningCommand","setupState","allowProposedApi","fontSize","letterSpacing","fontWeight","fontWeightBold","fontFamily","tabStopWidth","overviewRulerWidth","scrollback","convertEol","scrollOnUserInput","configuration","onContextLoss","dispose","loadAddon","unicode","activeVersion","attachCustomKeyEventHandler","hasSelection","urlRegex","regex","commands","commandConfig","aliases","TERMINAL_COMMAND_CONFIGURATION_CHECK__FAILURE","onDidChangeResults","resultIndex","onKey","domEvent","replaceAll","addCommandToHistory","matchingCommand","arg","finally","isFlushed","abort","deleteFromCommand","altKey","ctrlKey","computeCursorJumpMovement","movement","computeCursorMovement","scrollLines","scroll","write","seq","writeToCommand","dispatchEvent","setCommandFromHistory","onData","startsWith","trimEnd","getCommandRange","buffer","active","cols","commandText","commandFirstLine","repeat","startY","cursorIdx","baseY","cursorY","getLine","translateToString","cursorX","startX","endY","endX","back","range","distance","foundWord","rows","maxDistance","Math","min","abs","newCursorX","newCursorY","abs_cursorY","ceil","max","floor","viewportY","right","setCommand","cursorMovement","isSetup","isFocused","textarea","mount","autoResize","fit","at","unshift","padEnd","newCommand","newSystemCommand","DIM","flushScreen","isLastLineEmpty","lineText","scrollToTop","resetANSIStyling","scrollToBottom","BRIGHT_BLACK","BRIGHT_GREEN","description","usage","systemCommand","RED","output","findNext","decorations","wholeWord","caseSensitive","incremental","clearSearch","clearDecorations","clearSelection","findPrevious","getContent","lines","copy","getSelection","alertUnhandledError","copyAll","TerminalService","terminal","UNKNOWN_USER_ID","IdentityService","currentUser","setCurrentUser","isAnonymous","LEGEND_APPLICATION_COLOR_THEME","LocalStorage","localStorage","setItem","getItem","removeItem","hasItem","StorageStore","storeIndex","storageService","getIndex","getValue","getNumericValue","getStringValue","getBooleanValue","getObjectValue","assertIsObject","guaranteeIsObject","hasValue","persistValue","updateIndex","StorageService","storage","applicationStorageKey","index","isEmpty","TelemetryService","userId","identityService","appEnv","appSessionId","appStartTime","eventType","TimeService","interruptions","finalizeTimingsRecord","stopWatch","timings","totalTime","elapsed","startTime","endTime","record","fromEntries","records","total","numberOfInteruptions","interruption","__numberOfInteruptions","DEFAULT_DARK_COLOR_THEME","DEFAULT_DARK","TEMPORARY__globalCSSClassName","colors","LEGACY_LIGHT_COLOR_THEME","LEGACY_LIGHT","HIGH_CONTRAST_LIGHT_COLOR_THEME","HIGH_CONTRAST_LIGHT","LEGEND_APPLICATION_SETTING_KEY","LEGEND_APPLICATION_SETTING_CONFIG","COLOR_THEME","defaultValue","LayoutService","colorThemeRegistry","currentColorTheme","setBackdropContainerElementID","setShowBackdrop","setColorTheme","getExtraColorThemes","colorTheme","COLOR_THEME_CONFIGURATION_CHECK__FAILURE","themeKey","settingService","TEMPORARY__syncGlobalCSSClassName","querySelector","previousTheme","newColorTheme","previousColorTheme","persist","getColor","ClipboardService","clipboard","writeText","notifySuccessMessage","NavigationService","SettingService","registry","getExtraSettingConfigurationEntries","SETTING_CONFIGURATION_CHECK__FAILURE","SETTING_RETRIVE_FAILURE","DefaultNavigator","goToLocation","reload","goToAddress","address","generateAddress","updateCurrentLocation","updateCurrentZone","zone","resetZone","getCurrentBaseAddress","getCurrentAddress","getCurrentLocation","getCurrentLocationParameters","getCurrentLocationParameterValue","getCurrentZone","blockNavigation","blockCheckers","onBlock","onNativePlatformNavigationBlock","unblockNavigation","isNavigationBlocked","INTERNAL__internalizeTransientParameter","UserDataService","USER_DATA_RETRIEVE_FAILURE","isSemVer","test","RELEASE_UPDATE_TYPE","APPLICATION_LAST_OPENED_VERSION","ReleaseNotesService","releaseNotes","showCurrentReleaseModal","showReleaseLog","isConfigured","setShowCurrentRelease","setReleaseLog","release","notes","note","collectReleaseNotes","getViewedVersion","userDataService","updateViewedVersion","showVersion","versionNotes","lastOpenedVersion","val2","numeric","showableVersions","ApplicationStore","extensionStates","initState","platform","terminalService","releaseNotesService","eventService","tracerService","getLoggerPlugins","getEventNotifierPlugins","getTelemetryServicePlugins","getTracerServicePlugins","getExtraApplicationExtensionStateBuilders","creator","getNavigator","APPLICATION_LOAD__FAILURE","ILLEGAL_APPLICATION_STATE_OCCURRED","actionFn","DOWNLOAD_EVENTS","LegendApplicationLogger","LegendApplicationWebConsole","LegendApplication","basePresets","basePlugins","baseAddress","pluginRegister","_isConfigured","downloadHelperServiceWorkerPath","downloadHelper","withBasePresets","withPresets","withBasePlugins","withPlugins","withDownloadHelper","path","withReleaseNotes","setupApplicationStore","fetchApplicationConfiguration","client","versionData","origin","APPLICATION_CONFIGURATION__FAILURE","configureApplication","extensions","loadDocumentationRegistryData","all","documentationRegistryEntries","getExtraDocumentationRegistryEntries","simple","docData","patterns","RegExp","pattern","DOCUMENTATION_FETCH__FAILURE","start","extensionConfigData","getExtraApplicationSetups","loadApplication","workerPath","serviceWorker","register","reg","registerDownloadHelperServiceWorker","LEGEND_APPLICATION_ROOT_ELEMENT_TAG","LegendApplicationPlugin","Core_LegendApplicationPlugin","NAME","registerApplicationPlugin","enforceActions","LegendApplicationConfig","appVersionBuildTime","appVersionCommitId","input","storageKey","getDefaultApplicationStorageKey","documentation","contextualEntries","buildTime","commitSHA","resolveAbsoluteUrl","LegendREPLApplicationConfig","replUrl","useDynamicREPLServer","repl","dynamic","LegendApplicationPluginManager","telemetryServicePlugins","tracerServicePlugins","eventNotifierPlugins","applicationPlugins","registerTelemetryServicePlugin","registerTracerServicePlugin","registerEventNotifierPlugin","LegendREPLPluginManager","pureProtocolProcessorPlugins","pureGraphManagerPlugins","pureGraphPlugins","registerPureProtocolProcessorPlugin","registerPureGraphManagerPlugin","registerPureGraphPlugin","getPureGraphManagerPlugins","getPureProtocolProcessorPlugins","getPureGraphPlugins","LEGEND_APPLICATION_PARAM_TOKEN","BrowserNavigator","historyAPI","_isNavigationBlocked","_forceBypassNavigationBlocking","_blockCheckers","_beforeUnloadListener","checker","returnValue","historyApiClient","ignoreBlocking","onProceed","createHref","pathname","hash","withAppRoot","isFullUrl","parseUrl","query","getQueryParameters","paramValue","decodeURIComponent","getQueryParameterValue","history","pushState","onpopstate","forward","currentZone","params","stringifyQueryParams","ApplicationPlatform","BrowserPlatform","initialColorTheme","INITIAL_COLOR_THEME","ApplicationPlatformContext","BrowserPlatformProvider","BrowserEnvironmentProvider","basename","REPLServerClient","networkClient","dataCube","getGridClientLicenseKey","getQueryTypeahead","parseQuery","getQueryCode","getBaseQuery","getRelationReturnType","executeQuery","DataCubeQuerySnapshotColumnOrigin","CORE_HASH_STRUCTURE","cloneSnapshot","snapshot","clone","sha1","update","digest","hashCode","V1_Multiplicity","lowerBound","upperBound","MULTIPLICITY","V1_ValueSpecification","V1_ClassInstance","multiplicity","ONE","accept_ValueSpecificationVisitor","visitor","visit_ClassInstance","V1_Variable","class","visit_Variable","V1_GraphFetchTree","subTrees","subTypeTrees","V1_RootGraphFetchTree","accept_GraphFetchTreeVisitor","visit_RootGraphFetchTree","V1_CoreClassInstance","V1_Lambda","visit_Lambda","V1_DataTypeValueSpecification","V1_Path","startType","V1_AbstractAppliedFunction","V1_AppliedFunction","function","fControl","visit_AppliedFunction","V1_Collection","ONE_MANY","visit_Collection","V1_PrimitiveValueSpecification","V1_CDecimal","visit_CDecimal","V1_CInteger","visit_CInteger","V1_CString","visit_CString","V1_CFloat","visit_CFloat","V1_CDate","V1_CDateTime","visit_CDateTime","V1_CStrictDate","visit_CStrictDate","V1_CStrictTime","visit_CStrictTime","V1_CBoolean","visit_CBoolean","V1_AggregateValue","mapFn","aggregateFn","V1_Pair","first","second","V1_RuntimeInstance","runtime","V1_ExecutionContextInstance","executionContext","V1_PropertyGraphFetchTree","property","alias","subType","visit_PropertyGraphFetchTree","V1_SubTypeGraphFetchTree","subTypeClass","visit_SubTypeGraphFetchTree","V1_SerializationConfig","includeType","typeKeyName","includeEnumType","removePropertiesWithNullValues","removePropertiesWithEmptySets","fullyQualifiedTypePath","includeObjectReference","V1_KeyExpression","expression","visit_KeyExpression","V1_PureList","V1_TDSAggregateValue","pmapFn","V1_TDSColumnInformation","columnFn","V1_TDSSortInformation","direction","V1_TDSOlapRank","V1_TDSOlapAggregation","columnName","V1_ColSpecArray","colSpecs","V1_ColSpec","function1","function2","V1_RelationStoreAccessor","ROOT_PACKAGE_NAME","ATOMIC_TEST_TYPE","PRIMITIVE_TYPE","CORE_PURE_PATH","MILESTONING_STEREOTYPE","MILESTONING_VERSION_PROPERTY_SUFFIX","PackageableElementPointerType","SUPPORTED_FUNCTIONS","V1_PackageableElement","package","PACKAGEABLE_ELEMENT","V1_sourceInformationSerialization","sourceId","startLine","startColumn","endLine","endColumn","V1_INTERNAL__PackageableElementWithSourceInformation","sourceInformation","PACKAGEABLE_ELEMENT_POINTER","V1_multiplicityModelSchema","V1_PathElement","V1_PropertyPathElement","V1_AppliedProperty","visit_AppliedProperty","V1_Runtime","mappings","connectionStores","connections","ENGINE_RUNTIME","SINGLE_ENGINE_RUNTIME","V1_RuntimePointer","RUNTIME_POINTER","V1_RuntimeType","V1_runtimePointerModelSchema","_type","runtimeValue","PACKAGEABLE_RUNTIME","accept_PackageableElementVisitor","visit_PackageableRuntime","V1_serializeRuntimeValue","protocol","V1_deserializeRuntimeValue","V1_ExecutionContext","queryTimeOutInSeconds","enableConstraints","V1_AnalyticsExecutionContext","useAnalytics","toFlowSetFunction","V1_BaseExecutionContext","V1_PackageableElementPtr","fullPath","visit_PackageableElementPtr","V1_GenericTypeInstance","visit_GenericTypeInstance","V1_ExecutionContextType","V1_PathElementType","V1_GraphFetchTreeType","V1_ClassInstanceType","V1_ValueSpecificationType","V1_variableModelSchema","VARIABLE","V1_lambdaModelSchema","LAMBDA","V1_serializeValueSpecification","V1_deserializeValueSpecification","keyExpressionModelSchema","KEY_EXPRESSION","appliedFunctionModelSchema","APPLIED_FUNCTION","appliedPropertyModelSchema","APPLIED_PROPERTY","packageableElementPtrSchema","PACKAGEABLE_ELEMENT_PTR","genericTypeInstanceSchema","GENERIC_TYPE_INSTANCE","deserializeHackedUnit","unitType","deserializeHackedClass","collectionModelSchema","COLLECTION","enumValueModelSchema","visit_EnumValue","ENUM_VALUE","CDecimalModelSchema","CDECIMAL","CIntegerModelSchema","CINTEGER","CStringModelSchema","CSTRING","CFloatModelSchema","CFLOAT","CDateTimeModelSchema","CDATETIME","CStrictTimeModelSchema","CSTRICTTIME","CStrictDateModelSchema","CSTRICTDATE","CLatestDateModelSchema","visit_CLatestDate","CLATESTDATE","CBooleanModelSchema","CBOOLEAN","CByteArrayModelSchema","visit_CByteArray","CBYTEARRAY","deserializePrimitiveValueSpecification","deserializer","collection","ZERO","classInstanceModelSchema","CLASS_INSTANCE","pathModelSchema","rootGraphFetchTreeModelSchema","executionContextInstanceModelSchema","aggregationValueModelSchema","pairModelSchema","pureListModelSchema","runtimeInstanceModelSchema","serializationConfigModelSchema","tdsAggregrateValueModelSchema","tdsColumnInformationModelSchema","tdsOlapAggregationModelSchema","tdsOlapRankModelSchema","tdsSortInformationModelSchema","colSpecModelSchema","colSpecArrayModelSchema","relationStoreAccessorModelSchema","serializers","V1_getExtraClassInstanceValueProtocolSerializers","serializer","V1_serializeClassInstanceValue","PATH","ROOT_GRAPH_FETCH_TREE","AGGREGATE_VALUE","EXECUTION_CONTEXT_INSTANCE","PAIR","PURE_LIST","RUNTIME_INSTANCE","SERIALIZATION_CONFIG","TDS_AGGREGATE_VALUE","TDS_COLUMN_INFORMATION","TDS_OLAP_AGGREGATION","TDS_OLAP_RANK","TDS_SORT_INFORMATION","COL_SPEC","COL_SPEC_ARRAY","RELATION_STORE_ACCESSOR","deserializers","V1_getExtraClassInstanceValueProtocolDeserializers","V1_deserializeClassInstanceValue","propertyPathElementModelSchema","PROPERTY_PATH_ELEMENT","V1_serializePathElement","V1_deserializePathElement","V1_serializeGraphFetchTree","V1_deserializeGraphFetchTree","propertyGraphFetchTreeModelSchema","PROPERTY_GRAPH_FETCH_TREE","subTypeGraphFetchTreeModelSchema","SUBTYPE_GRAPH_FETCH_TREE","analyticsExecutionContextModelSchema","ANALYTICS_EXECUTION_CONTEXT","baseExecutionContextModelSchema","BASE_EXECUTION_CONTEXT","V1_serializeExecutionContext","V1_deserializeExecutionContext","V1_serializeRuntime","includeEnumTypee","removePropertiesWithNullValuese","removePropertiesWithEmptySetse","fullyQualifiedTypePathe","includeObjectReferencee","V1_ValueSpecificationSerializer","visit_INTERNAL__UnknownValueSpecfication","valueSpecification","HACKED_CLASS","UNIT_TYPE","HACKED_UNIT","ENUM","CLASS","MAPPING_INSTANCE","extractElementNameFromPath","findLast","matchFunctionName","functionName","functionFullPaths","functionFullPath","DATA_CUBE_FUNCTIONS","DEFAULT_LAMBDA_VARIABLE_NAME","DATA_CUBE_AGGREGATE_FUNCTION","DATA_CUBE_FILTER_OPERATION","DATA_CUBE_COLUMN_SORT_DIRECTION","GridClientSortDirection","V1_EngineErrorType","DATA_CUBE_EDITOR_TAB","BuilderType","ExecutionActivityType","EXECUTION_SERIALIZATION_FORMAT","getAggregationColSpec","columnType","colSpec","aggLambda","defaultVariable","funcLambda","aggFunc","aggVariable","getPrimitiveValueSpecification","STRING","stringValue","BOOLEAN","booleanValue","NUMBER","DECIMAL","cDecimal","INTEGER","cInteger","FLOAT","cFloat","DATE","DATETIME","cDateTime","STRICTDATE","cStrictDate","STRICTTIME","cStrictTime","processFilterQuery","condition","filterCondition","operation","EQUALS","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","CONTAINS","ENDS_WITH","STARTS_WITH","BLANK","NOT_EQUAL","NOT","filterConditionFunc","NOT_BLANK","NOT_CONTAINS","groupFilter","conditionExpressions","conditions","conditionExpression","groupCondition","groupOperation","groupFunc","buildExecutableQueryFromSnapshot","sourceQuery","sequence","groupByFilter","filterValueSpec","filterLambda","filterFunc","FILTER","groupByColumns","groupByInstance","groupByColSpecArray","aggregationColSpecArray","aggregationInstance","groupByExpandedKeys","groupKeys","currentGroupByColumn","columnSpec","groupByAggColumns","COUNT","agg","groupBy","GROUP_BY","extendFunc","EXTEND","classInstance","colSpecArray","columns","col","c","lambda","variableValue","sortColumns","SORT","sortInfos","sortCol","sortInfo","ASCENDING","ASC","DESC","createColSpec","fromFunc","FROM","runtimePtr","DataCubeGridClientServerSideDataSource","grid","fetchRows","currentSnapshot","getLatestSnapshot","syncedSnapshot","syncSnapshot","publishSnapshot","executableQuery","dataCubeState","engine","rowData","tds","_row","rowIdx","colIdx","String","rowNumber","success","getRows","baseSnapshot","createNew","rowGroupCols","r","valueCols","v","field","AND","newSortColumns","sortModel","colId","DESCENDING","newSnapshot","DataCubeQuerySnapshotSubscriber","manager","latestSnapshot","snapshotManager","receiveSnapshot","applySnapshot","broadcastSnapshot","buildColumnSortSpecification","colName","sortIndex","getAggregationColumnCustomizations","buildColumnGroupBySpecification","rowGroup","aggColumn","hide","allowedAggFuncs","DataCubeGridState","_client","clientDataSource","clientLicenseKey","configureClient","editorStore","gridOptions","columnDefs","headerName","minWidth","sortable","flex","resizable","enableRowGroup","enableValue","menuTabs","generateGridOptionsFromSnapshot","updateGridOptions","DataCubeEditorSortColumnState","setDirection","DataCubeEditorSortState","availableColumns","selectedColumns","availableColumnsSearchText","selectedColumnsSearchText","setAvailableColumns","setSelectedColumns","addAvailableColumn","addSelectedColumn","addAllAvailableColumns","addAllSelectedColumns","setSelectedColumnsSearchText","setAvailableColumnsSearchText","availableColumnsSearchResults","selectedColumnsSearchResults","applySnaphot","buildSnapshot","SourceInformation","V1_EngineError","errorType","V1_ParserError","EngineError","ParserError","DataCubeQueryEditorState","parserError","setQuery","setParserError","processSourceInformation","DataCubeQueryCodeEditorState","queryEditorState","currentSubQuery","setCurrentSubQuery","BAD_REQUEST","DataCubeEditorState","codeEditorState","isPanelOpen","currentTab","SORTS","applyChanges","setCurrentTab","openPanel","closePanel","ResultBuilder","ExecutionActivities","RelationalExecutionActivities","sql","comment","AggregationAwareActivities","rewrittenQuery","UnknownExecutionActivities","ExecutionResult","builder","activities","JsonExecutionResult","RawExecutionResult","INTERNAL__TDSColumn","relationalType","doc","TDSBuilder","TDS_BUILDER","TDSRow","TabularDataSet","TDSExecutionResult","_UUID","ClassBuilder","CLASS_BUILDER","ClassExecutionResult","objects","V1_ResultBuilder","V1_ExecutionActivities","V1_RelationalExecutionActivities","V1_AggregationAwareActivities","V1_ExecutionResult","V1_UnknownExecutionActivity","V1_JsonExecutionResult","builderSerialization","V1_INTERNAL__TDSColumn","V1_TDSBuilder","V1_serializeExecutionActivities","RELATIONAL","RELATIONAL_EXECUTION_ACTIVITY","AGGREGATION_AWARE_ACTIVITY","V1_TDSExecutionResult","V1_ClassExecutionResult","V1_RawExecutionResult","V1_INTERNAL__UnknownExecutionResult","INTERNAL__UnknownExecutionResult","buildExecutionActivities","metamodel","INTERNAL__buildTDSColumn","V1_buildExecutionResult","buildClassExecutionResult","buildTDSBuilder","buildTDSExecutionResult","buildJSONExecutionResult","DataCubeQuerySource","DataCubeQueryColumn","DATA_CUBE_QUERY_SOURCE_TYPE","DataCubeQuerySourceREPLExecutedQuery","REPL_EXECUTED_QUERY","deserializeQuerySource","serializeQuerySource","object","DataCubeQuery","partialQuery","source","DataCubeEngine","isPartial","returnSourceInformation","guaranteeType","JSON_BUILDER","V1_serializeExecutionResult","DataCubeQuerySnapshotManager","subscribers","snapshots","registerSubscriber","subscriber","_SUPPORTED_TOP_LEVEL_FUNCTIONS","func","LIMIT","PIVOT","RENAME","SELECT","CAST","_FUNCTION_SEQUENCE_COMPOSITION_PATTERN","_FUNCTION_SEQUENCE_COMPOSITION_PATTERN_REGEXP","required","DataCubeState","editor","baseQuery","initialSnapshot","analytics","funcMap","leafExtend","groupExtend","aggregationFuncIndex","findLastIndex","firstExtendIndex","findIndex","secondExtendIndex","rename","select","pivot","cast","extractFunctionMap","currentQuery","supportedFunc","spec","vs","pivotFunc","castFunc","extractQueryFunctionSequence","originalColumns","leafExtendedColumns","renamedColumns","pivotColumns","pivotAggColumns","castColumns","groupExtendedColumns","createSnapshot","SOURCE","validateAndBuildBaseSnapshot","buildSnapshotFromQuery","REPLStore","REPLStoreContext","REPLStoreProvider","DataCubeGrid","setLicenseKey","rowGroupPanelShow","suppressBrowserResizeObserver","suppressScrollOnNewData","alwaysMultiSort","rowModelType","serverSideDatasource","suppressAggFuncInHeader","suppressServerSideInfiniteScroll","modules","M","onGridReady","api","createFilter","CustomMenuList","selectProps","rowHeight","optionCustomization","parseInt","getComputedStyle","initialOffset","scrollToIndex","child","listRef","scrollToItem","itemCount","itemSize","initialScrollOffset","noMatchMessage","CustomOption","Option","isSelected","STYLE_PREFIX","STYLE_PREFIX__DARK","LoadingIndicator","DropdownIndicator","ClearIndicator","innerProps","CustomInput","additionalProps","onPaste","inputPlaceholder","Input","CustomSelectorInput","allowCreating","hasError","SelectComponent","stylePrefix","styles","menuPortal","base","zIndex","menuPortalTarget","isDisabled","classNamePrefix","MenuList","DataCubeEditorSortPanel","sortState","sortOptions","onDoubleClick","option","isClearable","PivotPanelEditor","closeEditor","tabOptions","tab","DataCube","dataCubeStore","pivotPanelButtonRef","ApplicationFrameworkProvider","LegendREPLBaseStore","LegendREPLBaseStoreContext","LegendREPLBaseStoreProvider","LegendREPLFrameworkProvider","LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN","freeze","DATA_CUBE","LegendREPLRouter","WrappedComponent","exact","LegendREPLWebApplication","LegendREPLApplicationPlugin","_$nominalTypeBrand","PURE_GRAMMAR_TOKEN","buildCodeEditorTheme","vscodeThemeData","baseTheme","colorsOverride","rulesOverride","baseThemeData","rawData","rules","tokenColors","tokenColor","settings","scopes","scope","baseRule","fontStyle","rule","token","array","inherit","parseVSCodeTheme","BASE_PURE_LANGUAGE_COLOR_TOKENS","IDENTIFIER","COLOR","PACKAGE","PARSER","LANGUAGE_STRUCT","GENERICS","PROPERTY","PARAMETER","TYPE","CODE_EDITOR_THEME","DEFAULT_DARK_THEME","SOLARIZED_DARK_THEME","BUILT_IN__VSCODE_DARK","GITHUB_DARK_THEME","GITHUB_DARK_DIMMED_THEME","MATERIAL_DEFAULT_THEME","MATERIAL_DARKER_THEME","ONE_DARK_PRO_THEME","ONE_DARK_PRO_DARKER_THEME","CODE_EDITOR_LANGUAGE","PURE_ELEMENT_NAME","PURE_CONNECTION_NAME","PURE_PARSER","wordPattern","comments","lineComment","blockComment","brackets","autoClosingPairs","surroundingPairs","folding","markers","end","Core_LegendREPLApplicationPlugin","extraKeywords","registerModules","fontLoadFailureErrorMessage","fonts","load","check","remeasureFonts","APPLICATION_SETUP__FAILURE","OVERRIDE_DEFAULT_KEYBINDING_COMMAND","accessor","hotkeyMapping","KeyCode","F1","F8","F9","KeyMod","WinCtrl","KeyG","KeyB","KeyO","KeyD","KeyP","Shift","F10","F2","F12","addKeybindingRules","nativeCodeEditorKeyBinding","keybinding","commandArgs","defineTheme","SOLARIZED_DARK","GITHUB_DARK","GITHUB_DARK_DIMMED","MATERIAL_DEFAULT","MATERIAL_DARKER","ONE_DARK_PRO","ONE_DARK_PRO_DARKER","configureCodeEditorComponent","PURE","setLanguageConfiguration","setMonarchTokensProvider","defaultToken","tokenPostfix","keywords","ASSOCIATION","ENUMERATION","MEASURE","PROFILE","FUNCTION","MAPPING","RUNTIME","CONNECTION","FILE_GENERATION","GENERATION_SPECIFICATION","DATA_ELEMENT","JSON_MODEL_CONNECTION","MODEL_CHAIN_CONNECTION","XML_MODEL_CONNECTION","SERVICE","FLAT_DATA","DATABASE","FLAT_DATA_CONNECTION","RELATIONAL_DATABASE_CONNECTION","operators","languageStructs","identifier","symbols","escapes","digits","octaldigits","binarydigits","hexdigits","generics","date","time","tokenizer","include","cases","KEYWORD","OPERATOR","DELIMITER","pure","WHITESPACE","color","number","whitespace","COMMENT","string","characters","LegendREPL","rootEl","getElementsByTagName","setAttribute","getApplicationRootElement","render","getPresetCollection","getPluginCollection","run","relativeBaseUrl","CreatableSelect","Select","module","exports","SelectComponents","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","splice","n","getter","__esModule","d","getPrototypeOf","t","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}