This is an automated email from the ASF dual-hosted git repository. porcelli pushed a commit to branch KOGITO-8015-feature-preview in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools-temporary-rnd-do-not-use.git
commit d15d841ac9d900b2828467bb07df507d6502c4b5 Merge: 888e11c9f6 e3b20102d6 Author: Guilherme Caponetto <[email protected]> AuthorDate: Thu Feb 9 11:27:08 2023 -0300 Merge remote-tracking branch 'kiegroup/main' into KOGITO-8015-feature-preview .ci/jenkins/Jenkinsfile | 4 +- .ci/jenkins/Jenkinsfile.vscode | 50 +- .github/actions/setup-env/action.yml | 7 +- .../ci_sonar_analysis_stunner_editors.yml | 4 +- .gitignore | 10 - README.md | 4 +- .../commit-message-validation-service/Makefile | 29 + .../commit-message-validation-service/README.md | 31 + .../commit-message-validation-service/env/index.js | 39 + examples/commit-message-validation-service/go.mod | 29 + examples/commit-message-validation-service/go.sum | 107 + examples/commit-message-validation-service/main.go | 44 + .../commit-message-validation-service/package.json | 41 + .../pkg/metadata/config.go | 7 +- .../pkg/validate.go | 56 + .../pkg/validators/issuePrefix.go | 47 + .../pkg/validators/length.go | 53 + .../pkg/validators/validator.go | 15 +- package.json | 4 +- packages/.gitignore | 1 + packages/boxed-expression-component/package.json | 4 +- .../dashbuilder-component-map/src/MapComponent.tsx | 11 +- .../dashbuilder-component-uniforms/package.json | 2 +- packages/dashbuilder-editor/package.json | 5 +- .../{editor => api}/DashbuilderEditorChannelApi.ts | 3 +- .../src/api}/index.ts | 2 +- .../src/editor/DashbuilderEditorFactory.ts | 2 +- .../src/editor/DashbuilderEditorView.tsx | 2 +- packages/dashbuilder-editor/src/editor/index.ts | 2 +- .../src/impl/DashbuilderEditorChannelApiImpl.ts | 109 + .../src/impl}/index.ts | 3 +- .../src/monaco/DashbuilderMonacoEditor.tsx | 15 +- .../src/monaco/augmentation/codeLenses/index.ts | 62 + .../src/monaco/augmentation/commands/index.ts | 42 + .../src/monaco/augmentation/completion/index.ts | 156 + .../language/schemas/dashbuilderSchema.ts | 194 +- packages/dashbuilder-language-service/LICENSE | 201 + packages/dashbuilder-language-service/README.md | 1 + .../env/index.js} | 13 +- .../jest.config.js} | 50 +- .../package.json | 31 +- .../api/DashbuilderLanguageServiceChannelApi.ts | 45 + .../src/api}/index.ts | 8 +- .../code-completions/dashbuilder-completion.ts | 41 + .../src/assets/code-completions/index.ts | 1 + .../src/assets/schemas/dashbuilder.ts} | 194 +- .../src/assets/schemas}/index.ts | 4 +- .../src/channel/DashbuilderLanguageService.ts | 259 + .../DashbuilderLanguageServiceCodeCompletion.ts | 77 + .../DashbuilderLanguageServiceCodeLenses.ts | 50 + .../src/channel/indentText.ts | 37 + .../src/channel}/index.ts | 5 +- .../src/channel/types.ts | 43 + .../tests/DashbuilderLanguageService.test.ts | 115 + .../DashbuilderLanguageService.test.ts.snap | 210 + .../tests/testUtils.ts | 48 + .../tsconfig.json | 4 +- packages/dashbuilder-viewer/dev-webapp/App.tsx | 5 +- .../displayer/client/widgets/DisplayerError.java | 56 - .../client/widgets/DisplayerErrorWidget.html | 1 + .../client/widgets/DisplayerErrorWidget.java | 30 +- .../displayer/client/widgets/DisplayerViewer.java | 45 +- .../renderer/client/metric/MetricDisplayer.java | 1 - .../dashbuilder/client/RuntimeClientLoader.java | 26 +- .../external/ExternalDataCallbackCoordinator.java | 124 + .../external/ExternalDataSetClientProvider.java | 90 +- .../client/navbar/DashboardListMenuBuilder.java | 56 - .../client/resources/i18n/AppConstants.java | 4 + .../dashbuilder/client/screens/EmptyScreen.java | 9 + .../dashbuilder/client/screens/RouterScreen.java | 9 +- .../client/screens/view/EmptyScreenView.java | 10 + .../client/setup/RuntimeClientSetup.java | 3 + .../dashbuilder/client/widgets/UploadWidget.java | 2 +- .../client/widgets/view/DashboardCardView.css} | 22 +- .../client/widgets/view/DashboardCardView.html | 2 +- .../client/resources/i18n/AppConstants.properties | 4 +- .../src/main/webapp/setup.js | 5 +- .../ExternalDataCallbackCoordinatorTest.java | 144 + .../dataset/group/AggregateFunctionType.java | 5 +- .../function/AggregateFunctionManagerImpl.java | 1 + .../dataset/engine/function/MedianFunction.java | 75 + .../engine/function/AggregateFunctionsTest.java | 16 + .../env/index.js} | 17 +- packages/dmn-language-service/jest.config.js | 32 + .../{form => dmn-language-service}/package.json | 30 +- packages/dmn-language-service/src/index.ts | 93 + .../dmn-language-service/tests/fixtures/model.dmn | 26 + .../dmn-language-service/tests/fixtures/nested.dmn | 24 + .../tests/fixtures/recursive.dmn | 25 + packages/dmn-language-service/tests/index.test.ts | 93 + .../tsconfig.json | 3 +- packages/extended-services/package.json | 2 +- packages/form-dmn/package.json | 2 +- packages/form/package.json | 2 +- packages/form/src/FormHook.tsx | 2 +- packages/git-cors-proxy-image/env/index.js | 2 +- packages/git-cors-proxy-image/package.json | 2 +- packages/i18n-common-dictionary/src/names.ts | 2 + .../it-tests/cypress/e2e/both-bpmn-dmn.cy.ts | 6 +- .../it-tests/cypress/e2e/dmn-editable.cy.ts | 6 +- packages/kie-editors-standalone/package.json | 4 +- packages/kie-sandbox-image/README.md | 99 +- packages/kn-plugin-workflow/README.md | 2 +- packages/monaco-editor/package.json | 2 +- packages/online-editor/build/defaultEnvJson.ts | 23 +- packages/online-editor/env/index.js | 12 + packages/online-editor/package.json | 5 +- packages/online-editor/src/App.tsx | 4 +- .../switchExpression/switchExpression.test.ts | 61 + .../online-editor/src/aboutModal/AboutButton.tsx | 116 + .../online-editor/src/accounts/AccountsContext.tsx | 21 + .../online-editor/src/accounts/AccountsIcon.tsx | 33 +- .../ConnectToGitSection.tsx} | 226 +- .../openshift/ConnectToOpenShiftSection.tsx | 2 +- .../src/authProviders/AuthProvidersApi.ts | 31 +- .../src/authProviders/AuthProvidersGallery.tsx | 10 + .../src/authSessions/AuthSessionApi.ts | 1 + .../src/authSessions/AuthSessionsContext.tsx | 16 +- .../src/authSessions/AuthSessionsList.tsx | 2 +- .../src/authSessions/CompatibleAuthSessions.ts | 6 +- packages/online-editor/src/bitbucket/Hooks.tsx | 230 + .../DmnRunnerInputsDispatchContextProvider.tsx | 6 + .../src/dmnRunnerInputs/DmnRunnerInputsHook.tsx | 32 +- .../src/editor/CreateGistOrSnippetModal.tsx | 301 + .../src/editor/CreateGitHubRepositoryModal.tsx | 225 - .../src/editor/CreateGitRepositoryModal.tsx | 341 + .../src/editor/DeleteDropdownWithConfirmation.tsx | 1 + .../src/editor/DmnRunner/DmnRunnerContext.tsx | 12 +- .../src/editor/DmnRunner/DmnRunnerDockToggle.tsx | 42 +- .../DmnRunner/DmnRunnerDrawerPanelContent.tsx | 24 +- .../src/editor/DmnRunner/DmnRunnerLoading.tsx | 48 +- .../src/editor/DmnRunner/DmnRunnerProvider.tsx | 163 +- .../src/editor/DmnRunner/DmnRunnerStatus.ts | 4 +- .../src/editor/DmnRunner/DmnRunnerTable.tsx | 18 +- packages/online-editor/src/editor/EditorPage.tsx | 42 +- .../src/editor/EditorPageDockDrawer.tsx | 80 +- .../src/editor/EditorPageDockToggleItem.tsx | 39 + .../online-editor/src/editor/EditorToolbar.tsx | 726 +- packages/online-editor/src/editor/FileSwitcher.tsx | 2 +- .../KieSandboxExtendedServicesButtons.tsx | 4 +- .../src/editor/LoadOrganizationsSelect.tsx | 236 + .../src/editor/NewFileDropdownMenu.tsx | 21 +- .../NotificationsPanelDockToggle.tsx | 33 +- packages/online-editor/src/editor/Validation.tsx | 133 + packages/online-editor/src/env/EnvJson.ts | 2 + packages/online-editor/src/github/Hooks.tsx | 6 +- packages/online-editor/src/home/HomePage.tsx | 9 - packages/online-editor/src/home/UploadCard.tsx | 2 +- packages/online-editor/src/i18n/OnlineI18n.ts | 146 +- packages/online-editor/src/i18n/locales/en.ts | 205 +- .../importFromUrl/ImportFromUrlHomePageCard.tsx | 4 +- .../src/importFromUrl/ImportableUrlHooks.tsx | 136 +- .../src/importFromUrl/NewWorkspaceFromUrlPage.tsx | 38 +- .../src/importFromUrl/fetchSingleFileContent.ts | 51 +- .../KieSandboxExtendedServicesClient.ts} | 65 +- .../KieSandboxExtendedServicesContext.tsx | 2 + .../KieSandboxExtendedServicesContextProvider.tsx | 6 +- .../KieSandboxExtendedServicesIcon.tsx | 4 +- .../KieSandboxExtendedServicesModal.tsx | 40 +- packages/online-editor/src/navigation/Routes.ts | 11 +- .../src/openshift/KieSandboxOpenShiftService.ts | 1 - .../src/pageTemplate/OnlineEditorPage.tsx | 4 +- .../src/switchExpression/switchExpression.ts | 60 + .../CommitMessageValidationService.ts | 51 + .../src/workspace/components/PromiseModal.tsx | 87 + .../workspace/components/WorkspaceCommitModal.tsx | 148 + .../src/workspace/components/WorkspaceLabel.tsx | 92 +- .../components/WorkspaceStatusIndicator.tsx | 2 +- ...ontextProviderWithCustomCommitMessagesModal.tsx | 53 + packages/online-editor/static/resources/style.css | 49 +- packages/online-editor/webpack.config.ts | 10 + packages/pmml-editor/package.json | 2 +- packages/root-env/env/index.js | 4 +- .../it-tests/e2e/TrySample.cy.ts | 8 +- packages/serverless-logic-web-tools/package.json | 7 +- packages/serverless-logic-web-tools/src/App.tsx | 5 +- .../Deploy/ConfirmOptions/SwfDeployOptions.tsx | 2 +- .../src/editor/EditorPage.tsx | 36 +- .../DashbuilderLanguageServiceChannelApiImpl.ts | 39 + .../editor/api/RemoteServiceRegistryCatalogApi.ts | 10 +- .../src/editor/api/SwfServiceCatalogStore.ts | 75 +- .../serviceRegistry/ServiceRegistrySettingsTab.tsx | 8 +- .../com/ait/lienzo/client/core/util/Geometry.java | 7 +- .../ait/lienzo/test/stub/overlays/DomGlobal.java | 26 + .../stunner/sw/client/shapes/StateShape.java | 77 +- .../stunner/sw/client/shapes/StateShapeView.java | 11 +- .../stunner/sw/client/shapes/StateShapeTest.java | 241 + .../src/channel/SwfLanguageService.ts | 13 +- .../channel/SwfLanguageServiceCodeCompletion.ts | 13 +- .../tests/SwfLanguageServiceConfigs.ts | 7 +- .../SwfJsonLanguageService.test.ts.snap | 20 +- .../SwfYamlLanguageService.test.ts.snap | 28 +- .../src/api/index.ts | 1 + .../src/api/types.ts | 25 +- .../src/channel/parsers/impl/SpecParser.ts} | 22 +- .../parsers/impl/asyncapi/AsyncApiParser.ts | 30 + .../src/channel/parsers/impl/asyncapi/asyncapi.ts | 171 + .../src/channel/parsers/impl/asyncapi/types.ts | 158 + .../src/channel/parsers/impl/convertSource.ts | 32 + .../channel/parsers/impl/openapi/OpenApiParser.ts | 30 + .../channel/parsers/{ => impl/openapi}/openapi.ts | 50 +- .../src/channel/parsers/index.ts | 4 +- .../src/channel/parsers/parseApiContent.ts | 53 + .../channel/parsers/asyncapi/asyncapi.test.ts | 84 + .../tests/channel/parsers/examples/http.yaml | 61 + .../tests/channel/parsers/examples/message.yaml | 49 + .../channel/parsers/{ => openapi}/openapi.test.ts | 49 +- .../tests/channel/parsers/parseApiContent.test.ts | 63 + .../package.json | 2 - .../src/swf/resources/SwfTextEditorResources.ts | 11 +- .../editor/ScenarioSimulationEditorWrapper.java | 6 +- .../client/editor/ScenarioSimulationView.java | 4 + .../client/editor/ScenarioSimulationViewImpl.java | 27 + .../client/models/AbstractScesimGridModel.java | 14 +- .../i18n/ScenarioSimulationEditorConstants.java | 4 + .../client/widgets/ScenarioGridPanel.java | 2 +- .../ScenarioSimulationEditorConstants.properties | 3 + .../client/models/AbstractScesimGridModelTest.java | 98 +- .../client/widgets/ScenarioGridPanelTest.java | 15 +- .../kogito/client/docks/KogitoEditorDock.java | 3 + .../ScenarioSimulationEditorKogitoWrapper.java | 19 +- .../kogito/client/docks/KogitoEditorDockTest.java | 29 +- .../ScenarioSimulationEditorKogitoWrapperTest.java | 9 + packages/stunner-editors/kie-wb-common-bom/pom.xml | 32 +- .../stunner-editors/kie-wb-common-dmn/README.md | 41 +- .../kie-dmn-feel-gwt-functions/pom.xml | 83 + .../feel/gwt/functions/api/FunctionDefinition.java | 42 + .../functions/api/FunctionDefinitionStrings.java} | 29 +- .../functions/api/FunctionOverrideVariation.java | 80 + .../dmn/feel/gwt/functions/api/HumanReadable.java} | 13 +- .../kie/dmn/feel/gwt/functions/api/Parameter.java} | 36 +- .../org/kie/dmn/feel/gwt/functions/api/Type.java} | 44 +- .../functions/client/FEELFunctionProvider.java} | 15 +- .../dmn/feel/gwt/functions/rebind/FileCreator.java | 88 + .../rebind/FunctionProviderGenerator.java | 55 + .../feel/gwt/functions/rebind/MethodTemplates.java | 185 + .../gwt/functions/DMNFeelGWTFunctions.gwt.xml} | 30 +- .../api/FunctionOverrideVariationTest.java | 51 + .../feel/gwt/functions/rebind/FileCreatorTest.java | 111 + .../rebind/FunctionProviderGeneratorTest.java | 89 + .../gwt/functions/rebind/MethodTemplatesTest.java | 244 + .../kie-wb-common-dmn/kie-dmn-feel-gwt/pom.xml | 120 + .../src/main/java/org/kie/dmn/feel/FEEL.java | 189 + .../dmn/feel/codegen/feel11/CodegenStringUtil.java | 42 + .../feel11/CompiledFEELSemanticMappings.java | 78 + .../feel/codegen/feel11/ProcessedExpression.java | 78 + .../kie/dmn/feel/entrypoint/FEELEntryPoint.java} | 17 +- .../org/kie/dmn/feel/lang/ast/ContextNode.java | 98 + .../org/kie/dmn/feel/lang/ast/FunctionDefNode.java | 180 + .../org/kie/dmn/feel/lang/ast/InfixOpNode.java | 418 + .../java/org/kie/dmn/feel/lang/ast/RangeNode.java | 160 + .../ast/visitor/ASTTemporalConstantVisitor.java | 234 + .../visitor/DMNDTAnalyserValueFromNodeVisitor.java | 191 + .../dmn/feel/lang/impl/EvaluationContextImpl.java | 213 + .../java/org/kie/dmn/feel/lang/impl/FEELImpl.java | 206 + .../lang/types/impl/ImmutableFPAWrappingPOJO.java | 48 + .../dmn/feel/marshaller/FEELCodeMarshaller.java | 69 + .../dmn/feel/marshaller/FEELStringMarshaller.java | 94 + .../dmn/feel/parser/feel11/FEELErrorHandler.java} | 19 +- .../org/kie/dmn/feel/parser/feel11/FEELParser.java | 153 + .../parser/feel11/FEELParserErrorListener.java | 205 + .../kie/dmn/feel/parser/feel11/ParserHelper.java | 355 + .../runtime/decisiontables/DecisionTableImpl.java | 50 + .../feel/runtime/functions/BaseFEELFunction.java | 612 + .../feel/runtime/functions/BuiltInFunctions.java | 80 + .../runtime/functions/DateAndTimeFunction.java | 195 + .../dmn/feel/runtime/functions/DateFunction.java | 101 + .../feel/runtime/functions/DurationFunction.java | 65 + .../feel/runtime/functions/MatchesFunction.java | 54 + .../dmn/feel/runtime/functions/StringFunction.java | 50 + .../feel/runtime/functions/SubstringFunction.java | 55 + .../dmn/feel/runtime/functions/TimeFunction.java | 154 + .../runtime/functions/extended/InvokeFunction.java | 94 + .../extended/KieExtendedDMNFunctions.java | 72 + .../org/kie/dmn/feel/runtime/impl/RangeImpl.java | 161 + .../domino/logger/ConsoleLoggerAdapter.java | 445 + .../org/kie/dmn/feel/super/org/slf4j/Logger.java | 260 + .../org/kie/dmn/feel/util/AssignableFromUtil.java} | 22 +- .../java/org/kie/dmn/feel/util/EvalHelper.java | 708 + .../src/main/java/org/kie/dmn/feel/util/Msg.java | 150 + .../main/java/org/kie/dmn/feel/util/MsgUtil.java | 41 + .../main/java/org/kie/dmn/feel/util/TypeUtil.java | 320 + .../resources/org/kie/dmn/feel/DMNFeelGWT.gwt.xml | 42 + .../kie/dmn/feel/util/AssignableFromUtilTest.java} | 51 +- .../test/resources/META-INF/ErraiApp.properties | 19 + .../kie-wb-common-dmn-client/pom.xml | 26 +- .../docks/navigator/DecisionNavigatorDock.java | 16 +- .../client/docks/preview/PreviewDiagramDock.java | 17 +- .../DecisionTableEditorDefinitionEnricher.java | 87 +- .../editors/types/common/ItemDefinitionUtils.java | 8 + .../common/typed/string/StringSelector.java | 9 +- .../client/marshaller/DMNMarshallerService.java | 8 +- .../dmn/client/widgets/panel/DMNGridPanel.java | 17 - .../docks/navigator/DecisionNavigatorDockTest.java | 46 +- .../PreviewDiagramDockTest.java} | 89 +- .../DecisionTableEditorDefinitionEnricherTest.java | 177 +- .../types/common/ItemDefinitionUtilsTest.java | 15 + .../common/typed/string/StringSelectorTest.java | 24 + .../kie-wb-common-dmn-webapp-common/pom.xml | 102 - .../main/resources/META-INF/ErraiApp.properties | 31 - .../src/main/resources/META-INF/beans.xml | 20 - .../dmn/webapp/common/DMNWebappCommon.gwt.xml | 32 - .../kie-wb-common-dmn-webapp-kogito-common/pom.xml | 10 +- .../client/docks/KogitoDecisionNavigatorDock.java | 96 - .../client/docks/KogitoPreviewDiagramDock.java | 68 - .../common/client/docks/KogitoPropertiesDock.java | 16 +- .../client/editor/AbstractDMNDiagramEditor.java | 45 +- .../kogito/common/DMNWebappKogitoCommon.gwt.xml | 1 - .../common/client/docks/BaseKogitoDockTest.java | 38 +- .../docks/KogitoDecisionNavigatorDockTest.java | 94 - .../client/docks/KogitoPreviewDiagramDockTest.java | 38 - .../editor/AbstractDMNDiagramEditorTest.java | 53 +- .../pom.xml | 42 +- .../showcase/client/editor/DMNDiagramEditor.java | 2 +- .../src/main/webapp/static/sample.dmn | 0 .../src/main/webapp/test.html | 71 +- .../client/selenium/locator/CommonCSSLocator.java | 4 +- .../README.md | 49 - .../pom.xml | 712 - .../client/alternatives/DMNClientModels.java | 281 - .../alternatives/KogitoResourceContentService.java | 80 - .../showcase/client/editor/DMNDiagramEditor.java | 246 - .../client/editor/DMNDiagramEditorActivity.java | 128 - .../dmn/showcase/client/feel/FEELDemoEditor.java | 201 - .../showcase/client/feel/FEELDemoEditorView.html | 37 - .../showcase/client/feel/FEELDemoEditorView.java | 95 - .../main/resources/META-INF/ErraiApp.properties | 31 - .../src/main/resources/log4j.xml | 38 - .../src/main/resources/logback.xml | 34 - .../dmn/showcase/DMNKogitoTestingWebapp.gwt.xml | 41 - .../src/main/webapp/WEB-INF/beans.xml | 69 - .../webapp/WEB-INF/jboss-deployment-structure.xml | 23 - .../src/main/webapp/WEB-INF/web.xml | 27 - .../src/main/webapp/editor.html | 50 - .../src/main/webapp/favicon.ico | Bin 494 -> 0 bytes .../src/main/webapp/index.html | 46 - .../src/main/webapp/model/readme.md | 1 - .../src/main/webapp/static/test.js | 89 - packages/stunner-editors/kie-wb-common-dmn/pom.xml | 4 +- .../client/widgets/editor/StunnerEditor.java | 1 + .../client/widgets/editor/StunnerEditorTest.java | 20 +- .../command/impl/PasteSelectionSessionCommand.java | 25 +- .../impl/PasteSelectionSessionCommandTest.java | 29 +- .../pom.xml | 17 + .../marshall/service/BPMNClientDiagramService.java | 7 +- .../common/widgets/client/errorpage/ErrorPage.html | 13 +- .../common/widgets/client/errorpage/ErrorPage.java | 28 +- .../errorpage/{ErrorPage.css => ErrorPage.less} | 6 +- .../search/component/SearchBarComponent.java | 6 + .../search/component/SearchBarComponentView.java | 9 + .../search/component/SearchBarComponentTest.java | 10 + .../component/SearchBarComponentViewTest.java | 20 + packages/stunner-editors/pom.xml | 37 +- .../uberfire/client/docks/view/DockResizeBar.java | 11 +- .../org/uberfire/client/docks/view/DocksBars.java | 4 +- .../client/docks/view/bars/DocksCollapsedBar.java | 4 +- .../client/docks/view/bars/DocksExpandedBar.java | 19 +- .../client/docks/view/items/AbstractDockItem.java | 7 - .../docks/view/items/AbstractSideDockItem.java | 2 - .../client/docks/view/items/SouthDockItem.java | 109 - .../client/docks/view/items/SouthDockItem.ui.xml | 23 - .../org/uberfire/client/resources/DocksCss.java | 21 - .../org/uberfire/client/resources/css/docks.css | 38 - .../docks/view/bars/DocksExpandedBarTest.java | 4 +- .../docks/view/items/AbstractDockItemOuiaTest.java | 10 +- .../client/docks/view/items/SouthDockItemTest.java | 134 - .../client/widget/layer/impl/DefaultGridLayer.java | 46 +- .../widget/layer/impl/DefaultGridLayerTest.java | 72 +- .../views/pfly/multipage/MultiPageEditorImpl.java | 9 + .../views/pfly/tab/TabPanelWithDropdowns.java | 39 +- .../pfly/multipage/MultiPageEditorImplTest.java | 46 + .../views/pfly/tab/TabPanelWithDropdownsTest.java | 18 +- .../workbench/docks/UberfireDockPosition.java | 22 - .../workbench/docks/UberfireDocksContainer.java | 8 +- .../widgets/multipage/MultiPageEditor.java | 2 + .../client/workbench/docks/UberfireDockTest.java | 8 +- packages/unitables-dmn/package.json | 2 +- packages/unitables/package.json | 2 +- packages/unitables/src/boxed/CustomTable.tsx | 12 +- .../package.json | 40 +- .../src/debounce.ts} | 17 +- .../builtInVsCodeEditorDashbuilderContributions.ts | 224 + .../src/extension/commandIds.ts | 2 + .../src/extension/extension.ts | 12 + .../VsCodeDashbuilderLanguageService.ts | 46 + .../src/extension/setupDashboardEditorControls.ts | 17 +- .../tsconfig.json | 3 +- .../package.json | 2 +- .../.mocharc.json | 3 +- .../README.md | 4 +- .../it-tests/helpers/VSCodeTestHelper.ts | 2 +- .../it-tests/helpers/swf/SwfEditorTestHelper.ts | 128 +- .../applicant-request-decision.sw.json | 59 + ...orkflow-editor-extension-autocompletion.test.ts | 12 +- ...kflow-editor-extension-basic-operations.test.ts | 12 +- ...low-editor-extension-diagram-navigation.test.ts | 77 + ...verless-workflow-editor-extension-smoke.test.ts | 10 +- .../it-tests/settings.json | 2 +- .../package.json | 6 +- .../SwfServiceCatalogSupportActions.ts | 4 +- .../fs/FsWatchingServiceCatalogRelativeStore.ts | 19 +- .../ServiceRegistryInstanceClient.ts | 49 +- .../extension/setupDiagramEditorCompanionTab.ts | 11 +- .../vscode-extension-yard-editor/.mocharc.json | 3 +- packages/vscode-extension-yard-editor/package.json | 2 +- .../src/VsCodeKieEditorsCustomEditorProvider.ts | 2 +- .../pom.xml | 4 +- packages/webpack-base/package.json | 2 +- .../src/context/WorkspacesContext.tsx | 8 +- .../src/context/WorkspacesContextProvider.tsx | 67 +- .../workspaces-git-fs/src/hooks/WorkspaceHooks.tsx | 7 +- .../src/services/WorkspaceDescriptorService.tsx | 25 +- .../src/services/WorkspaceService.tsx | 2 +- .../src/worker/WorkspacesWorkerApiImpl.ts | 73 +- .../src/worker/api/WorkspaceOrigin.tsx | 33 +- .../src/worker/api/WorkspacesWorkerGitApi.ts | 19 +- pnpm-lock.yaml | 20624 +++++++++++-------- repo/graph.dot | 15 +- repo/graph.json | 30 +- scripts/bootstrap/bootstrap.js | 2 +- 420 files changed, 29856 insertions(+), 14780 deletions(-) diff --cc packages/serverless-logic-web-tools/package.json index f023e2d7a8,75bd46dd96..f4be1a6cf8 --- a/packages/serverless-logic-web-tools/package.json +++ b/packages/serverless-logic-web-tools/package.json @@@ -16,14 -16,14 +16,15 @@@ "main": "dist/index.js", "scripts": { "build:dev": "rimraf dist && webpack --env dev", - "build:prod": "pnpm lint && pnpm test && rimraf dist && webpack && pnpm test:it", + "build:prod": "pnpm lint && pnpm test && rimraf dist && webpack", "cy:open": "cypress open --project it-tests --config baseUrl=$(build-env serverlessLogicWebTools.dev.cypressUrl)", "cy:run": "cypress run --headed -b chrome --project it-tests --config baseUrl=$(build-env serverlessLogicWebTools.dev.cypressUrl)", + "format": "prettier --write './src/**/*.{tsx,ts,js}'", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", + "postreport": "jrm ./dist-it-tests/junit-transformed.xml \"./dist-it-tests/junit-report*.xml\"", "start": "webpack serve --host 0.0.0.0 --env dev", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"", - "test:it": "run-script-if --ignore-errors \"$(build-env integrationTests.ignoreFailures)\" --bool \"$(build-env integrationTests.run)\" --then \"pnpm rimraf ./dist-it-tests\" \"pnpm start-server-and-test start https-get://0.0.0.0:$(build-env serverlessLogicWebTools.dev.port) cy:run\"" + "test:it": "run-script-if --ignore-errors \"$(build-env integrationTests.ignoreFailures)\" --bool \"$(build-env integrationTests.run)\" --then \"pnpm rimraf ./dist-it-tests\" \"pnpm start-server-and-test start https-get://0.0.0.0:$(build-env serverlessLogicWebTools.dev.port) cy:run\" \"pnpm postreport\"" }, "dependencies": { "@kie-tools-core/editor": "workspace:*", diff --cc packages/serverless-logic-web-tools/src/App.tsx index eb5d51eb35,f44b318453..6041811fe6 --- a/packages/serverless-logic-web-tools/src/App.tsx +++ b/packages/serverless-logic-web-tools/src/App.tsx @@@ -36,8 -35,10 +36,11 @@@ export const App = () => [EnvContextProvider, {}], [KieSandboxExtendedServicesContextProvider, {}], [SettingsContextProvider, {}], + [NewSettingsContextProvider, {}], - [WorkspacesContextProvider, { workspacesSharedWorkerScriptUrl: "workspace/worker/sharedWorker.js" }], + [ + WorkspacesContextProvider, + { workspacesSharedWorkerScriptUrl: "workspace/worker/sharedWorker.js", shouldRequireCommitMessage: false }, + ], [OpenShiftContextProvider, {}], [VirtualServiceRegistryContextProvider, {}], [NavigationContextProvider, {}], diff --cc packages/serverless-logic-web-tools/src/editor/EditorPage.tsx index 1380f6a45d,e52f11bc0c..fab131e3ac --- a/packages/serverless-logic-web-tools/src/editor/EditorPage.tsx +++ b/packages/serverless-logic-web-tools/src/editor/EditorPage.tsx @@@ -31,9 -31,10 +31,9 @@@ import { useHistory } from "react-route import { AlertsController } from "../alerts/Alerts"; import { LoadingSpinner } from "./LoadingSpinner"; import { useEditorEnvelopeLocator } from "../envelopeLocator/EditorEnvelopeLocatorContext"; - import { isEditable, isServerlessWorkflow } from "../extension"; + import { isDashbuilder, isEditable, isServerlessWorkflow } from "../extension"; import { useAppI18n } from "../i18n"; import { useRoutes } from "../navigation/Hooks"; -import { OnlineEditorPage } from "../pageTemplate/OnlineEditorPage"; import { useQueryParams } from "../queryParams/QueryParamsContext"; import { useCancelableEffect } from "@kie-tools-core/react-hooks/dist/useCancelableEffect"; import { useController } from "@kie-tools-core/react-hooks/dist/useController"; @@@ -386,56 -414,57 +413,55 @@@ export function EditorPage(props: Props }, [swfEditorChannelApi] ); - return ( - <OnlineEditorPage> - <PromiseStateWrapper - promise={workspaceFilePromise} - pending={<LoadingSpinner />} - rejected={(errors) => <EditorPageErrorPage errors={errors} path={props.fileRelativePath} />} - resolved={(file) => ( - <> - <Page> - <EditorToolbar - workspaceFile={file.workspaceFile} - editor={editor} - alerts={alerts} - alertsRef={alertsRef} - editorPageDock={editorPageDock} - /> - <Divider /> - <EditorPageDockDrawer - ref={editorPageDockRef} - isEditorReady={editor?.isReady} - workspaceFile={file.workspaceFile} - onNotificationClick={onNotificationClick} - > - <PageSection hasOverflowScroll={true} padding={{ default: "noPadding" }}> - <div style={{ height: "100%" }}> - {!isEditorReady && <LoadingSpinner />} - <div style={{ display: isEditorReady ? "inline" : "none" }}> - {embeddedEditorFile && ( - <EmbeddedEditor - /* FIXME: By providing a different `key` everytime, we avoid calling `setContent` twice on the same Editor. - * This is by design, and after setContent supports multiple calls on the same instance, we can remove that. - */ - key={uniqueFileId} - ref={editorRef} - file={embeddedEditorFile} - editorEnvelopeLocator={editorEnvelopeLocator} - channelType={ChannelType.ONLINE_MULTI_FILE} - locale={locale} - customChannelApiImpl={apiImpl} - stateControl={stateControl} - isReady={isReady} - /> - )} - </div> + <PromiseStateWrapper + promise={workspaceFilePromise} + pending={<LoadingSpinner />} + rejected={(errors) => <EditorPageErrorPage errors={errors} path={props.fileRelativePath} />} + resolved={(file) => ( + <> + <Page> + <EditorToolbar + workspaceFile={file.workspaceFile} + editor={editor} + alerts={alerts} + alertsRef={alertsRef} + editorPageDock={editorPageDock} + /> + <Divider /> + <EditorPageDockDrawer + ref={editorPageDockRef} + isEditorReady={editor?.isReady} + workspaceFile={file.workspaceFile} + onNotificationClick={onNotificationClick} + > + <PageSection hasOverflowScroll={true} padding={{ default: "noPadding" }}> + <div style={{ height: "100%" }}> + {!isEditorReady && <LoadingSpinner />} + <div style={{ display: isEditorReady ? "inline" : "none" }}> + {embeddedEditorFile && ( + <EmbeddedEditor + /* FIXME: By providing a different `key` everytime, we avoid calling `setContent` twice on the same Editor. + * This is by design, and after setContent supports multiple calls on the same instance, we can remove that. + */ + key={uniqueFileId} + ref={editorRef} + file={embeddedEditorFile} + editorEnvelopeLocator={editorEnvelopeLocator} + channelType={ChannelType.ONLINE_MULTI_FILE} + locale={locale} + customChannelApiImpl={apiImpl} + stateControl={stateControl} + isReady={isReady} + /> + )} </div> - </PageSection> - </EditorPageDockDrawer> - </Page> - </> - )} - /> - </OnlineEditorPage> + </div> + </PageSection> + </EditorPageDockDrawer> + </Page> + </> + )} + /> ); } diff --cc pnpm-lock.yaml index 72a47a3011,944702b941..b6ab909f03 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@@ -11747,13 -14470,15 +14470,13 @@@ packages resolution: { integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== } engines: { node: ">=0.10.0" } - dev: true - /ansi-regex/3.0.1: + /[email protected]: resolution: { integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== } engines: { node: ">=4" } - dev: true - /ansi-regex/5.0.1: + /[email protected]: resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } engines: { node: ">=8" } @@@ -13257,8 -15983,9 +15981,8 @@@ resolution: { integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== } engines: { node: ">=0.10.0" } - dev: true - /collect-v8-coverage/1.0.1: + /[email protected]: resolution: { integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== } dev: true @@@ -13367,8 -16100,9 +16097,8 @@@ resolution: { integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== } engines: { node: ^12.20.0 || >=14 } - dev: true - /common-tags/1.8.0: + /[email protected]: resolution: { integrity: sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== } engines: { node: ">=4.0.0" } @@@ -14772,8 -17528,9 +17524,8 @@@ resolution: { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } engines: { node: ">=0.10.0" } - dev: true - /decamelize/4.0.0: + /[email protected]: resolution: { integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== } engines: { node: ">=10" } @@@ -18341,14 -21045,9 +21040,14 @@@ engines: { node: ">=0.10.0" } dependencies: number-is-nan: 1.0.1 - dev: true + + /is-fullwidth-code-point/2.0.0: + resolution: + { integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== } + engines: { node: ">=4" } + dev: false - /is-fullwidth-code-point/3.0.0: + /[email protected]: resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } engines: { node: ">=8" } @@@ -18499,8 -21199,9 +21199,8 @@@ resolution: { integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== } engines: { node: ">=0.10.0" } - dev: true - /is-stream/2.0.0: + /[email protected]: resolution: { integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== } engines: { node: ">=8" } @@@ -18584,11 -21279,12 +21278,11 @@@ engines: { node: ">= 8.0.0" } dev: true - /isexe/2.0.0: + /[email protected]: resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } - dev: true - /isobject/2.1.0: + /[email protected]: resolution: { integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== } engines: { node: ">=0.10.0" } @@@ -20358,15 -23052,9 +23050,15 @@@ resolution: { integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== } engines: { node: ">=8" } - dev: true + + /lru-cache/4.1.5: + resolution: + { integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== } + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 - /lru-cache/6.0.0: + /[email protected]: resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } engines: { node: ">=10" } @@@ -21517,8 -24196,9 +24200,8 @@@ engines: { node: ">=4" } dependencies: path-key: 2.0.1 - dev: true - /npm-run-path/4.0.1: + /[email protected]: resolution: { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== } engines: { node: ">=8" } @@@ -21558,8 -24238,9 +24241,8 @@@ resolution: { integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== } engines: { node: ">=0.10.0" } - dev: true - /numeral/2.0.6: + /[email protected]: resolution: { integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA== } dev: false @@@ -21855,8 -24515,9 +24517,8 @@@ resolution: { integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== } engines: { node: ">=4" } - dev: true - /p-finally/2.0.1: + /[email protected]: resolution: { integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== } engines: { node: ">=8" } @@@ -22193,8 -24830,9 +24831,8 @@@ resolution: { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } engines: { node: ">=4" } - dev: true - /path-exists/4.0.0: + /[email protected]: resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } engines: { node: ">=8" } @@@ -22210,8 -24848,9 +24848,8 @@@ resolution: { integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== } engines: { node: ">=4" } - dev: true - /path-key/3.1.1: + /[email protected]: resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } engines: { node: ">=8" } @@@ -24531,13 -27189,16 +27188,15 @@@ escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.1 + transitivePeerDependencies: + - supports-color dev: true - /set-blocking/2.0.0: + /[email protected]: resolution: { integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== } - dev: true - /set-immediate-shim/1.0.1: + /[email protected]: resolution: { integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== } engines: { node: ">=0.10.0" } @@@ -24602,8 -27262,9 +27260,8 @@@ engines: { node: ">=0.10.0" } dependencies: shebang-regex: 1.0.0 - dev: true - /shebang-command/2.0.0: + /[email protected]: resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } engines: { node: ">=8" } @@@ -24615,8 -27276,9 +27273,8 @@@ resolution: { integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== } engines: { node: ">=0.10.0" } - dev: true - /shebang-regex/3.0.0: + /[email protected]: resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } engines: { node: ">=8" } @@@ -25204,17 -27852,9 +27848,17 @@@ code-point-at: 1.1.0 is-fullwidth-code-point: 1.0.0 strip-ansi: 3.0.1 - dev: true + + /string-width/2.1.1: + resolution: + { integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== } + engines: { node: ">=4" } + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: false - /string-width/4.2.3: + /[email protected]: resolution: { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } engines: { node: ">=8" } @@@ -25275,16 -27915,9 +27919,16 @@@ engines: { node: ">=0.10.0" } dependencies: ansi-regex: 2.1.1 - dev: true + + /strip-ansi/4.0.0: + resolution: + { integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== } + engines: { node: ">=4" } + dependencies: + ansi-regex: 3.0.1 + dev: false - /strip-ansi/6.0.1: + /[email protected]: resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } engines: { node: ">=8" } @@@ -25316,8 -27949,9 +27960,8 @@@ resolution: { integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== } engines: { node: ">=0.10.0" } - dev: true - /strip-final-newline/2.0.0: + /[email protected]: resolution: { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== } engines: { node: ">=6" } @@@ -27535,18 -30144,20 +30154,18 @@@ is-symbol: 1.0.4 dev: true - /which-module/2.0.0: + /[email protected]: resolution: { integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== } - dev: true - /which/1.3.1: + /[email protected]: resolution: { integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== } hasBin: true dependencies: isexe: 2.0.0 - dev: true - /which/2.0.2: + /[email protected]: resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } engines: { node: ">= 8" } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
