From 8bb17a78a45649874b86cd20bfa79a2012f3f2cb Mon Sep 17 00:00:00 2001 From: Fabrizio Antonangeli Date: Fri, 6 Sep 2024 17:55:33 +0200 Subject: [PATCH] kie-issues#1059: EPIC - Sonataflow management console (#2532) Co-authored-by: Paulo Martins Co-authored-by: Guilherme Caponetto <638737+caponetto@users.noreply.github.com> Co-authored-by: Tiago Bento <1584568+tiagobento@users.noreply.github.com> --- .gitignore | 3 + README.md | 7 +- packages/kogito-management-console/README.md | 18 +- packages/kogito-task-console/README.md | 22 +- .../serverless-logic-web-tools/package.json | 6 +- .../package.json | 19 +- .../server/MockData/controllers.js | 498 -- .../server/MockData/forms/ApplyForVisa.js | 99 - .../server/MockData/forms/ConfirmTravel.js | 85 - .../server/MockData/graphql.js | 4176 -------------- .../server/MockData/mutationRest.js | 103 - .../server/MockData/openAPI/openapi.json | 5106 ----------------- .../process-forms-schema/ApplyForVisa.js | 91 - .../process-forms-schema/ConfirmTravel.js | 80 - .../server/MockData/rest.js | 101 - .../server/config/index.js | 7 - .../server/server.js | 447 -- .../server/static/flightBooking.svg | 290 - .../server/static/hotelBooking.svg | 290 - .../server/static/travels.svg | 1744 ------ .../webpack.config.js | 2 +- .../sonataflow-deployment-webapp/package.json | 6 +- .../static/q/openapi.json | 1248 ---- .../webpack.config.js | 8 + packages/sonataflow-dev-app/README.md | 56 + .../env/index.js} | 24 +- packages/sonataflow-dev-app/package.json | 40 + .../src/MockData/controllers.js | 147 + .../MockData/customDashboard/age.dash.yaml | 0 .../src}/MockData/customDashboard/data.js | 0 .../customDashboard/products.dash.yaml | 0 .../examples/html_hiring_HRInterview.config | 0 .../examples/html_hiring_HRInterview.html | 0 .../examples/html_hiring_ITInterview.config | 0 .../examples/html_hiring_ITInterview.html | 0 .../examples/react_hiring_HRInterview.config | 0 .../examples/react_hiring_HRInterview.tsx | 0 .../examples/react_hiring_ITInterview.config | 0 .../examples/react_hiring_ITInterview.tsx | 0 .../src}/MockData/forms/formData.js | 0 .../src/MockData/graphql.js | 498 ++ .../src/MockData/openAPI/openapi.json | 2603 +++++++++ .../src}/MockData/types.js | 257 +- .../server => sonataflow-dev-app/src}/app.js | 5 +- .../src/config/index.js} | 24 +- packages/sonataflow-dev-app/src/server.js | 211 + .../README.md | 46 + .../env/index.js | 58 + .../package.json | 18 + .../Containerfile | 51 + .../README.md | 136 + .../entrypoint.sh | 27 + .../env/index.js} | 38 +- .../package.json | 39 + .../README.md | 76 + .../build/defaultEnvJson.ts | 41 + .../dev/config/sonataflow-realm.json | 1996 +++++++ .../env/index.js | 51 + .../jest.config.js | 37 + .../package.json | 119 + .../MonitoringReport.dash.yml | 300 + .../WorkflowDetails.dash.yml | 255 + .../resources/monitoring-webapp/setup.js | 36 + ...ess-workflow-combined-editor-envelope.html | 45 + ...less-workflow-diagram-editor-envelope.html | 45 + ...verless-workflow-text-editor-envelope.html | 45 + .../serve.json | 3 + .../src/alerts/Alerts.tsx | 194 + .../src/alerts/GlobalAlertsContext.tsx | 125 + .../ManagementConsole/ManagementConsole.tsx | 89 + .../ManagementConsoleNav.tsx | 67 + .../ManagementConsoleRoutes.tsx | 55 + .../src/components/console/index.ts | 21 + .../MonitoringContainer.tsx | 34 + .../pages/MonitoringPage/MonitoringPage.tsx | 180 + .../TriggerCloudEventPage.tsx | 118 + .../WorkflowDefinitionsPage.tsx | 91 + .../WorkflowDetailsPage.tsx | 113 + .../WorkflowFormPage/WorkflowFormPage.tsx | 159 + .../WorkflowInstancesPage.tsx | 78 + .../src/components/styles.css | 55 + .../src/declare.d.ts | 27 + .../src/env/Env.ts | 36 + .../src/env/EnvConstants.ts} | 8 +- .../src/env/EnvJson.ts | 27 + ...erlessWorkflowCombinedEditorEnvelopeApp.ts | 42 + ...verlessWorkflowDiagramEditorEnvelopeApp.ts | 45 + ...ServerlessWorkflowTextEditorEnvelopeApp.ts | 39 + .../src/favicon.ico | Bin 0 -> 122476 bytes .../src/index.html | 35 + .../src/index.tsx | 107 + .../src/navigation/Routes.ts | 138 + .../src/static/env.json | 1 + .../sonataflowManagementConsoleLogo.svg | 22 + .../tsconfig.json | 22 + .../webpack.config.ts | 207 + pnpm-lock.yaml | 2401 +++++++- repo/graph.dot | 19 + repo/graph.json | 83 + 99 files changed, 11469 insertions(+), 14952 deletions(-) delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/controllers.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ApplyForVisa.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ConfirmTravel.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/graphql.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/mutationRest.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/openAPI/openapi.json delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ApplyForVisa.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ConfirmTravel.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/MockData/rest.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/config/index.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/server.js delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/static/flightBooking.svg delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/static/hotelBooking.svg delete mode 100644 packages/serverless-workflow-dev-ui-webapp/server/static/travels.svg delete mode 100644 packages/sonataflow-deployment-webapp/static/q/openapi.json create mode 100644 packages/sonataflow-dev-app/README.md rename packages/{serverless-workflow-dev-ui-webapp/server/MockData/forms/HRInterview.js => sonataflow-dev-app/env/index.js} (63%) create mode 100644 packages/sonataflow-dev-app/package.json create mode 100644 packages/sonataflow-dev-app/src/MockData/controllers.js rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/customDashboard/age.dash.yaml (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/customDashboard/data.js (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/customDashboard/products.dash.yaml (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/html_hiring_HRInterview.config (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/html_hiring_HRInterview.html (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/html_hiring_ITInterview.config (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/html_hiring_ITInterview.html (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/react_hiring_HRInterview.config (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/react_hiring_HRInterview.tsx (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/react_hiring_ITInterview.config (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/examples/react_hiring_ITInterview.tsx (100%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/forms/formData.js (100%) create mode 100644 packages/sonataflow-dev-app/src/MockData/graphql.js create mode 100644 packages/sonataflow-dev-app/src/MockData/openAPI/openapi.json rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/MockData/types.js (54%) rename packages/{serverless-workflow-dev-ui-webapp/server => sonataflow-dev-app/src}/app.js (94%) rename packages/{serverless-workflow-dev-ui-webapp/server/MockData/forms/ITInterview.js => sonataflow-dev-app/src/config/index.js} (63%) create mode 100644 packages/sonataflow-dev-app/src/server.js create mode 100644 packages/sonataflow-management-console-image-env/README.md create mode 100644 packages/sonataflow-management-console-image-env/env/index.js create mode 100644 packages/sonataflow-management-console-image-env/package.json create mode 100644 packages/sonataflow-management-console-image/Containerfile create mode 100644 packages/sonataflow-management-console-image/README.md create mode 100644 packages/sonataflow-management-console-image/entrypoint.sh rename packages/{serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/hiring.js => sonataflow-management-console-image/env/index.js} (65%) create mode 100644 packages/sonataflow-management-console-image/package.json create mode 100644 packages/sonataflow-management-console-webapp/README.md create mode 100644 packages/sonataflow-management-console-webapp/build/defaultEnvJson.ts create mode 100644 packages/sonataflow-management-console-webapp/dev/config/sonataflow-realm.json create mode 100644 packages/sonataflow-management-console-webapp/env/index.js create mode 100644 packages/sonataflow-management-console-webapp/jest.config.js create mode 100644 packages/sonataflow-management-console-webapp/package.json create mode 100644 packages/sonataflow-management-console-webapp/resources/monitoring-webapp/MonitoringReport.dash.yml create mode 100644 packages/sonataflow-management-console-webapp/resources/monitoring-webapp/WorkflowDetails.dash.yml create mode 100644 packages/sonataflow-management-console-webapp/resources/monitoring-webapp/setup.js create mode 100644 packages/sonataflow-management-console-webapp/resources/serverless-workflow-combined-editor-envelope.html create mode 100644 packages/sonataflow-management-console-webapp/resources/serverless-workflow-diagram-editor-envelope.html create mode 100644 packages/sonataflow-management-console-webapp/resources/serverless-workflow-text-editor-envelope.html create mode 100644 packages/sonataflow-management-console-webapp/serve.json create mode 100644 packages/sonataflow-management-console-webapp/src/alerts/Alerts.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/alerts/GlobalAlertsContext.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/console/index.ts create mode 100644 packages/sonataflow-management-console-webapp/src/components/containers/MonitoringContainer/MonitoringContainer.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/MonitoringPage/MonitoringPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/TriggerCloudEventPage/TriggerCloudEventPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDefinitionsPage/WorkflowDefinitionsPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDetailsPage/WorkflowDetailsPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/pages/WorkflowInstancesPage/WorkflowInstancesPage.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/components/styles.css create mode 100644 packages/sonataflow-management-console-webapp/src/declare.d.ts create mode 100644 packages/sonataflow-management-console-webapp/src/env/Env.ts rename packages/{serverless-workflow-dev-ui-webapp/server/MockData/forms/EmptyForm.js => sonataflow-management-console-webapp/src/env/EnvConstants.ts} (83%) create mode 100644 packages/sonataflow-management-console-webapp/src/env/EnvJson.ts create mode 100644 packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowCombinedEditorEnvelopeApp.ts create mode 100644 packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowDiagramEditorEnvelopeApp.ts create mode 100644 packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowTextEditorEnvelopeApp.ts create mode 100644 packages/sonataflow-management-console-webapp/src/favicon.ico create mode 100644 packages/sonataflow-management-console-webapp/src/index.html create mode 100644 packages/sonataflow-management-console-webapp/src/index.tsx create mode 100644 packages/sonataflow-management-console-webapp/src/navigation/Routes.ts create mode 100644 packages/sonataflow-management-console-webapp/src/static/env.json create mode 100644 packages/sonataflow-management-console-webapp/src/static/sonataflowManagementConsoleLogo.svg create mode 100644 packages/sonataflow-management-console-webapp/tsconfig.json create mode 100644 packages/sonataflow-management-console-webapp/webpack.config.ts diff --git a/.gitignore b/.gitignore index 093ed7e9b4e..c2d59f24779 100644 --- a/.gitignore +++ b/.gitignore @@ -77,6 +77,9 @@ package-lock.json ## dev-deployment-dmn-form-webapp !packages/dev-deployment-dmn-form-webapp/build +## sonataflow-management-console-webapp +!packages/sonataflow-management-console-webapp/build + ## vscode-* **/.vscode-test/ **/.vscode-test-web/ diff --git a/README.md b/README.md index 5d41dc7ffd7..e0ec6ec186d 100644 --- a/README.md +++ b/README.md @@ -222,9 +222,10 @@ The Apache KIE Tools project contains several applications. To develop each one #### Serverless Logic Web Tools 1. After you've successfully built the project following the instructions above, go to `packages/serverless-logic-web-tools`. -1. Open a terminal and run `pnpm start`. This will start a `webpack serve` instance with the Serverless Logic Web Tools resources. -1. From now on you can use the development version of the Serverless Logic Web Tools by accessing `https://localhost:9020`. -1. Run the CORS Proxy by running `pnpm start` at `packages/cors-proxy`. +2. Open a terminal and run `pnpm start`. This will start a `webpack serve` instance with the Serverless Logic Web Tools resources. +3. From now on you can use the development version of the Serverless Logic Web Tools by accessing `https://localhost:9020`. +4. Run the CORS Proxy by running `pnpm start` at `packages/cors-proxy`. +5. (Optional) To try the "Runtime Tools" functionalities, run the SonataFlow Dev App by running `pnpm start` at `packages/sonataflow-dev-app`, then open `https://localhost:9020/#/settings/runtime-tools` and set `http://localhost:4000/graphql` in the "Data Index URL" field #### Standalone Editors (DMN and BPMN) diff --git a/packages/kogito-management-console/README.md b/packages/kogito-management-console/README.md index 3d15fc82877..8c8368c8092 100644 --- a/packages/kogito-management-console/README.md +++ b/packages/kogito-management-console/README.md @@ -73,15 +73,15 @@ This package contains the `Containerfile/Dockerfile` and scripts to build a cont | Name | Description | Default | | :----------------------------------------------------: | :-----------------------------------------------------------: | :-------------------------------------------------------------------------------------------: | | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE` | Env Mode: "PROD" or "DEV". PROD enables Keycloak integration. | "PROD" | - | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_APP_NAME` | Management Console app name. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_APP_VERSION` | Management Console app version. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.ts ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_APP_NAME` | Management Console app name. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_APP_VERSION` | Management Console app version. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.js ](../runtime-tools-management-console-webapp/build/defaultEnvJson.js) | ### Examples diff --git a/packages/kogito-task-console/README.md b/packages/kogito-task-console/README.md index 4b662f4adfd..23229fca149 100644 --- a/packages/kogito-task-console/README.md +++ b/packages/kogito-task-console/README.md @@ -73,17 +73,17 @@ This package contains the `Containerfile/Dockerfile` and scripts to build a cont | Name | Description | Default | | :---------------------------------------------------------: | :-----------------------------------------------------------: | :-------------------------------------------------------------------------------------: | | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE` | Env Mode: "PROD" or "DEV". PROD enables Keycloak integration. | "PROD" | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_NAME` | Task Console app name. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_VERSION` | Task Console app version. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_STATES_LIST` | Pre-selected task states. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_ACTIVE_STATES_LIST` | Pre-selected task active states. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.ts ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_NAME` | Task Console app name. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_VERSION` | Task Console app version. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_STATES_LIST` | Pre-selected task states. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_ACTIVE_STATES_LIST` | Pre-selected task active states. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | + | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | ### Examples diff --git a/packages/serverless-logic-web-tools/package.json b/packages/serverless-logic-web-tools/package.json index f45861951dc..956b68928e7 100644 --- a/packages/serverless-logic-web-tools/package.json +++ b/packages/serverless-logic-web-tools/package.json @@ -21,7 +21,9 @@ "cy:run": "cypress run --headed -b chrome --project e2e-tests --config baseUrl=$(build-env serverlessLogicWebTools.dev.cypressUrl)", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", "postreport": "jrm ./dist-tests-e2e/junit-transformed.xml \"./dist-tests-e2e/junit-report*.xml\"", - "start": "webpack serve --host 0.0.0.0 --env dev", + "start": "concurrently 'pnpm start:dev-webapp' 'pnpm start:sonataflow-dev-app'", + "start:dev-webapp": "webpack serve --host 0.0.0.0 --env dev", + "start:sonataflow-dev-app": "npm --prefix ./node_modules/@kie-tools/sonataflow-dev-app run start", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"", "test-e2e": "run-script-if --ignore-errors \"$(build-env endToEndTests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"pnpm rimraf ./dist-tests-e2e\" \"pnpm start-server-and-test start https-get://0.0.0.0:$(build-env serverlessLogicWebTools.dev.port) cy:run\" \"pnpm postreport\"" }, @@ -107,6 +109,7 @@ "@kie-tools/serverless-logic-web-tools-base-builder-image-env": "workspace:*", "@kie-tools/serverless-logic-web-tools-swf-builder-image-env": "workspace:*", "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env": "workspace:*", + "@kie-tools/sonataflow-dev-app": "workspace:*", "@kie-tools/tsconfig": "workspace:*", "@svgr/webpack": "6.2.1", "@testing-library/jest-dom": "^6.4.6", @@ -119,6 +122,7 @@ "@types/react-router": "^5.1.20", "@types/react-router-dom": "^5.3.3", "@types/uuid": "^8.3.0", + "concurrently": "^8.2.2", "copy-webpack-plugin": "^11.0.0", "cypress": "^13.13.0", "cypress-file-upload": "^5.0.8", diff --git a/packages/serverless-workflow-dev-ui-webapp/package.json b/packages/serverless-workflow-dev-ui-webapp/package.json index 75e06dd750e..de497013527 100644 --- a/packages/serverless-workflow-dev-ui-webapp/package.json +++ b/packages/serverless-workflow-dev-ui-webapp/package.json @@ -21,10 +21,10 @@ "scripts": { "build:dev": "rimraf dist && webpack --env dev", "build:prod": "pnpm lint && rimraf dist && webpack", - "dev": "concurrently 'pnpm start' 'pnpm run dev:server'", - "dev:server": "node ./server/app.js", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", - "start": "webpack serve --host 0.0.0.0 --env dev", + "start": "concurrently 'pnpm start:dev-webapp' 'pnpm start:sonataflow-dev-app'", + "start:dev-webapp": "webpack serve --host 0.0.0.0 --env dev", + "start:sonataflow-dev-app": "npm --prefix ./node_modules/@kie-tools/sonataflow-dev-app run start", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, "dependencies": { @@ -56,8 +56,7 @@ "react-dom": "^17.0.2", "react-moment": "0.9.7", "react-router": "^5.3.4", - "react-router-dom": "^5.3.4", - "uuid": "^8.3.2" + "react-router-dom": "^5.3.4" }, "devDependencies": { "@babel/core": "^7.16.0", @@ -67,6 +66,7 @@ "@kie-tools/eslint": "workspace:*", "@kie-tools/jest-base": "workspace:*", "@kie-tools/root-env": "workspace:*", + "@kie-tools/sonataflow-dev-app": "workspace:*", "@kie-tools/tsconfig": "workspace:*", "@types/history": "^4.7.3", "@types/jest": "^29.5.12", @@ -74,24 +74,18 @@ "@types/react-dom": "^17.0.5", "@types/react-router": "^5.1.20", "@types/react-router-dom": "^5.3.3", - "@types/uuid": "^8.3.0", - "apollo-server-express": "^3.13.0", - "body-parser": "^1.20.2", + "@types/testing-library__jest-dom": "^5.9.1", "concurrently": "^8.2.2", "copy-webpack-plugin": "^11.0.0", - "cors": "^2.8.5", "css-loader": "^5.2.6", - "express": "^4.19.2", "file-loader": "^6.2.0", "filemanager-webpack-plugin": "^7.0.0", - "graphql": "14.3.1", "html-webpack-plugin": "^5.3.2", "https-browserify": "^1.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", "jest-when": "^3.6.0", - "lodash": "^4.17.21", "monaco-editor-webpack-plugin": "^7.0.1", "node-polyfill-webpack-plugin": "^2.0.1", "raw-loader": "^4.0.2", @@ -100,7 +94,6 @@ "stream-http": "^3.2.0", "style-loader": "^2.0.0", "svg-url-loader": "^8.0.0", - "swagger-ui-express": "^5.0.0", "ts-jest": "^29.1.5", "typescript": "^5.5.3", "url": "^0.11.3", diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/controllers.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/controllers.js deleted file mode 100644 index 591fd5ba101..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/controllers.js +++ /dev/null @@ -1,498 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const restData = require("./rest"); -const graphData = require("./graphql"); -const path = require("path"); -const _ = require("lodash"); -const fs = require("fs"); -const confirmTravelForm = require("./forms/ConfirmTravel"); -const applyForVisaForm = require("./forms/ApplyForVisa"); -const hrInterviewForm = require("./forms/HRInterview"); -const itInterviewForm = require("./forms/ITInterview"); -const emptyForm = require("./forms/EmptyForm"); -const formData = require("../MockData/forms/formData"); -const customDashboardData = require("../MockData/customDashboard/data"); -const hiringSchema = require("./process-forms-schema/hiring"); -const { v4: uuidv4 } = require("uuid"); -const tasksUnableToTransition = [ - "047ec38d-5d57-4330-8c8d-9bd67b53a529", - "841b9dba-3d91-4725-9de3-f9f4853b417e", - "5fe852de-8d00-4197-9936-3842c648fe12345", - "5fe852de-8d00-4197-9936-3842c648fe123422", -]; - -const taskWithoutForm = ["475e3eb3-1de4-4f68-a146-79c236353a03", "615b9143-1468-4028-b454-6122e2139f5c"]; - -const taskWithEmptyForm = ["45a73767-5da3-49bf-9c40-d533c3e77ef3", "809aae9e-f0bf-4892-b0c9-4be80664d2aa"]; - -const formsUnableToSave = ["html_hiring_ITInterview", "react_hiring_ITInterview"]; - -const processSvg = [ - "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - "8035b580-6ae4-4aa8-9ec0-e18e19809e0blmnop", - "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", -]; -module.exports = controller = { - showError: (req, res) => { - console.log("called", req.params.processId, req.params.processInstanceId); - const { process } = restData.management; - const processId = process.filter((data) => { - return data.processId === req.params.processId; - }); - const error = processId[0].instances.filter((err) => { - return err.processInstanceId === req.params.processInstanceId; - }); - res.send(error[0].error); - }, - callRetrigger: (req, res) => { - const { process } = restData.management; - const processId = process.filter((data) => { - return data.processId === req.params.processId; - }); - const error = processId[0].instances.filter((err) => { - return err.processInstanceId === req.params.processInstanceId; - }); - switch (error[0].retrigger) { - case "success": - res.send(error[0].retrigger); - break; - case "Authentication failed": - res.status(401).send(error[0].retrigger); - break; - case "Authorization failed": - res.status(403).send(error[0].retrigger); - break; - case "Internal server error": - res.status(500).send(error[0].retrigger); - break; - } - }, - callSkip: (req, res) => { - const { process } = restData.management; - const processId = process.filter((data) => { - return data.processId === req.params.processId; - }); - const error = processId[0].instances.filter((err) => { - return err.processInstanceId === req.params.processInstanceId; - }); - switch (error[0].skip) { - case "success": - res.send(error[0].skip); - break; - case "Authentication failed": - res.status(401).send(error[0].skip); - break; - case "Authorization failed": - res.status(403).send(error[0].skip); - break; - case "Internal server error": - res.status(500).send(error[0].skip); - break; - } - }, - callAbort: (req, res) => { - const failedAbortInstances = ["8035b580-6ae4-4aa8-9ec0-e18e19809e0b2", "8035b580-6ae4-4aa8-9ec0-e18e19809e0b3"]; - const data = graphData.ProcessInstanceData.filter((data) => { - return data.id === req.params.processInstanceId; - }); - if (failedAbortInstances.includes(data[0].id)) { - res.status(404).send("process not found"); - } else { - data[0].state = "ABORTED"; - res.status(200).send("success"); - } - }, - callNodeRetrigger: (req, res) => { - const data = graphData.ProcessInstanceData.filter((data) => { - return data.id === req.params.processInstanceId; - }); - const nodeObject = data[0].nodes.filter((node) => node.id === req.params.nodeInstanceId); - if (nodeObject[0].name.includes("not found")) { - res.status(404).send("node not found"); - } else { - nodeObject[0].enter = new Date().toISOString(); - res.status(200).send(data[0]); - } - }, - callNodeCancel: (req, res) => { - const data = graphData.ProcessInstanceData.filter((data) => { - return data.id === req.params.processInstanceId; - }); - const nodeObject = data[0].nodes.filter((node) => node.id === req.params.nodeInstanceId); - if (nodeObject[0].name.includes("not found")) { - res.status(404).send("node not found"); - } else { - nodeObject[0].exit = new Date().toIProcessInstanceDataSOString(); - res.status(200).send(data[0]); - } - }, - handleJobReschedule: (req, res) => { - const data = graphData.JobsData.find((data) => { - return data.id === req.params.id; - }); - if ( - req.params.id !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0" && - req.body.repeatInterval && - req.body.repeatLimit - ) { - data.expirationTime = req.body.expirationTime; - data.repeatInterval = req.body.repeatInterval; - data.repeatLimit = req.body.repeatLimit; - } else { - if (req.params.id !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0") { - data.expirationTime = req.body.expirationTime; - } - } - if (req.params.id !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0") { - res.status(200).send(data); - } else { - res.status(400).send("job not rescheduled"); - } - }, - - callNodeTrigger: (req, res) => { - const graphData = require("./graphql"); - const processInstance = graphData.ProcessInstanceData.filter((process) => { - return process.id === req.params.processInstanceId; - }); - const nodeObject = processInstance[0].nodes.filter((node, index) => { - if (index !== processInstance[0].nodes.length - 1) { - return node.definitionId === req.params.nodeId; - } - }); - - if (nodeObject.length === 0) { - res.status(404).send("node not found"); - } else { - const node = { ...nodeObject[0] }; - node.enter = new Date().toISOString(); - node.exit = null; - processInstance[0].nodes.unshift(node); - res.status(200).send({}); - } - }, - - getTriggerableNodes: (req, res) => { - if (req.params.processId !== null || req.params.processId !== undefined) { - res.send([ - { - nodeDefinitionId: "_BDA56801-1155-4AF2-94D4-7DAADED2E3C0", - name: "Send visa application", - id: 1, - type: "ActionNode", - uniqueId: "1", - }, - { - nodeDefinitionId: "_175DC79D-C2F1-4B28-BE2D-B583DFABF70D", - name: "Book", - id: 2, - type: "Split", - uniqueId: "2", - }, - { - nodeDefinitionId: "_E611283E-30B0-46B9-8305-768A002C7518", - name: "visasrejected", - id: 3, - type: "EventNode", - uniqueId: "3", - }, - ]); - } else { - res.send([]); - } - }, - - callJobCancel: (req, res) => { - const mockFailedJobs = ["dad3aa88-5c1e-4858-a919-6123c675a0fa_0"]; - const graphData = require("./graphql"); - const jobData = graphData.JobsData.filter((job) => job.id === req.params.jobId); - if (mockFailedJobs.includes(jobData[0].id) || jobData.length === 0) { - res.status(404).send("job not found"); - } else { - jobData[0].status = "CANCELED"; - jobData[0].lastUpdate = new Date().toISOString(); - res.status(200).send(jobData[0]); - } - }, - dispatchSVG: (req, res) => { - try { - if (processSvg.includes(req.params.id)) { - if (req.params.processId === "travels") { - res.sendFile(path.resolve(__dirname + "/../static/travels.svg")); - } else if (req.params.processId === "flightBooking") { - res.sendFile(path.resolve(__dirname + "/../static/flightBooking.svg")); - } else if (req.params.processId === "hotelBooking") { - res.sendFile(path.resolve(__dirname + "/../static/hotelBooking.svg")); - } - } else { - res.send(null); - } - } catch (error) { - res.status(404).send(error); - } - }, - callCompleteTask: (req, res) => { - console.log(`......Transition task: --taskId:${req.params.taskId}`); - - const task = graphData.UserTaskInstances.find((userTask) => { - return userTask.id === req.params.taskId; - }); - - if (tasksUnableToTransition.includes(task.id)) { - res.status(500).send("Unexpected failure when doing a transition!"); - } else { - const phase = req.query.phase; - - if (phase === "complete") { - task.state = "Completed"; - task.completed = new Date().toISOString(); - } - - res.send(task.inputs); - } - }, - - getTaskForm: (req, res) => { - console.log( - `......Get Task Form Schema: --processId:${req.params.processId} --piId:${req.params.processInstanceId} --taskId:${req.params.taskId}` - ); - - const task = graphData.UserTaskInstances.find((userTask) => { - return userTask.id === req.params.taskId; - }); - - const clearPhases = task.completed || task.state === "Aborted"; - - if (taskWithEmptyForm.includes(task.id)) { - const form = _.cloneDeep(emptyForm); - if (clearPhases) { - delete form.phases; - } - res.send(JSON.stringify(form)); - return; - } - - if (taskWithoutForm.includes(task.id)) { - res.status(500).send("Error: cannot load form"); - return; - } - - res.send(JSON.stringify(getTaskSchema(task.name, clearPhases))); - }, - - getTaskDefinitionForm: (req, res) => { - console.log( - `......Get Task Definition Form Schema: --processId:${req.params.processId} --TaskName:${req.params.taskName}` - ); - - res.send(JSON.stringify(getTaskSchema(req.params.taskName, true))); - }, - - getCustomDashboards: (req, res) => { - const filterNames = req.query.names.split(";"); - if (filterNames[0].length === 0) { - res.send(customDashboardData); - } else { - const filteredCustomDashboards = []; - filterNames.forEach((name) => { - customDashboardData.forEach((customDashboard) => { - if (customDashboard.name === name) { - filteredCustomDashboards.push(customDashboard); - } - }); - }); - res.send(filteredCustomDashboards); - } - }, - - getCustomDashboardContent: (req, res) => { - const dashboardName = req.params.name; - let content = ""; - if (dashboardName === "age.dash.yaml") { - content = fs.readFileSync(__dirname + "/customDashboard/age.dash.yaml", "utf-8"); - } - if (dashboardName === "products.dash.yaml") { - content = fs.readFileSync(__dirname + "/customDashboard/products.dash.yaml", "utf-8"); - } - res.send(content); - }, - - getForms: (req, res) => { - const formFilterNames = req.query.names.split(";"); - if (formFilterNames[0].length === 0) { - res.send(formData); - } else { - const filteredForms = []; - formFilterNames.forEach((name) => { - formData.forEach((form) => { - if (form.name === name) { - filteredForms.push(form); - } - }); - }); - res.send(filteredForms); - } - }, - - getFormContent: (req, res) => { - console.log(`......Get Custom Form Content: --formName:${req.params.formName}`); - const formName = req.params.formName; - const formInfo = formData.filter((datum) => datum.name === formName); - - if (formInfo.length === 0) { - res.status(500).send("Cannot find form"); - return; - } - let sourceString; - - const configString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.config`), "utf8"); - if (formInfo[0].type.toLowerCase() === "html") { - sourceString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.html`), "utf8"); - } else if (formInfo[0].type.toLowerCase() === "tsx") { - sourceString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.tsx`), "utf8"); - } - const response = { - formInfo: formInfo[0], - source: sourceString, - configuration: JSON.parse(configString), - }; - - res.send(response); - }, - - saveFormContent: (req, res) => { - console.log(`......Save Form Content: --formName:${req.params.formName}`); - if (formsUnableToSave.includes(req.params.formName)) { - res.status(500).send("Unexpected failure saving form!"); - } else { - res.send("Saved!"); - } - }, - - getProcessFormSchema: (req, res) => { - console.log(`processName: ${req.params.processName}`); - const processName = req.params.processName; - let schema; - if (processName === "hiring") { - schema = _.cloneDeep(hiringSchema); - } else { - res.status(500).send("internal server error"); - } - res.send(JSON.stringify(schema)); - }, - - startProcessInstance: (req, res) => { - const businessKey = req.query.businessKey ? req.query.businessKey : null; - const processId = uuidv4(); - const processInstance = { - id: processId, - processId: "hiring", - businessKey: businessKey, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "Hiring", - rootProcessInstanceId: null, - roles: [], - state: "ACTIVE", - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - serviceUrl: null, - endpoint: "http://localhost:4000", - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-34578e904e6b", - message: "some thing went wrong", - }, - addons: [], - variables: - '{"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Bangalore","country":"India","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "27107f38-d888-4edf-9a4f-11b9e6d751b6", - enter: "2019-10-22T03:37:30.798Z", - exit: "2019-10-22T03:37:30.798Z", - type: "EndNode", - }, - ], - milestones: [], - childProcessInstances: [], - }; - if (businessKey && businessKey.toLowerCase() === "error") { - res.status(500).send("internal server error"); - } - graphData["ProcessInstanceData"].push(processInstance); - res.send({ - id: processId, - }); - }, - triggerCloudEvent: (req, res) => { - console.log( - `......Trigger Cloud Event:: id: ${req.headers["ce-id"]} type: ${req.headers["ce-type"]} source: ${req.headers["ce-source"]}` - ); - - if (req.body.type === "error") { - res.status(500).send("internal server error"); - } - if (req.body.kogitobusinesskey) { - console.log(`Starting Serverless workflow with business key: ${req.body.kogitobusinesskey}`); - return res.status(200).send(req.body.kogitobusinesskey); - } else if (req.body.kogitoprocrefid) { - console.log(`Serverless Workflow with id ${req.body.kogitoprocrefid} successfully completed`); - return res.status(200).send(req.body.kogitoprocrefid); - } - - return res.status(200).send("Cloud Event successfully triggered"); - }, -}; - -function getTaskSchema(taskName, clearPhases) { - let schema; - - console.log(`Getting Schema for task: ${taskName} --clearPhases: ${clearPhases}`); - - switch (taskName) { - case "ConfirmTravel": { - schema = _.cloneDeep(confirmTravelForm); - break; - } - case "VisaApplication": { - schema = _.cloneDeep(applyForVisaForm); - break; - } - case "HRInterview": { - schema = _.cloneDeep(hrInterviewForm); - break; - } - - case "ITInterview": { - schema = _.cloneDeep(itInterviewForm); - break; - } - } - - if (clearPhases) { - delete schema.phases; - } - - return schema; -} diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ApplyForVisa.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ApplyForVisa.js deleted file mode 100644 index f2fa840959e..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ApplyForVisa.js +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = ApplyForVisaForm = { - $schema: "https://json-schema.org/draft/2019-09/schema", - type: "object", - properties: { - trip: { - type: "object", - properties: { - city: { - type: "string", - }, - country: { - type: "string", - }, - begin: { - type: "string", - format: "date-time", - }, - end: { - type: "string", - format: "date-time", - }, - visaRequired: { - type: "boolean", - }, - }, - required: ["city"], - input: true, - output: false, - }, - traveller: { - type: "object", - properties: { - firstName: { type: "string" }, - lastName: { type: "string" }, - email: { type: "string", format: "email" }, - nationality: { type: "string" }, - address: { - type: "object", - properties: { - street: { - type: "string", - }, - city: { - type: "string", - }, - zipCode: { - type: "string", - }, - country: { - type: "string", - }, - }, - }, - }, - input: true, - output: false, - }, - visaApplication: { - type: "object", - properties: { - firstName: { type: "string" }, - lastName: { type: "string" }, - city: { - type: "string", - }, - country: { - type: "string", - }, - duration: { - type: "integer", - }, - passportNumber: { type: "string" }, - nationality: { type: "string" }, - }, - input: true, - output: true, - }, - }, - phases: ["complete", "release"], -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ConfirmTravel.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ConfirmTravel.js deleted file mode 100644 index d769e346462..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ConfirmTravel.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = ConfirmTravelForm = { - $schema: "https://json-schema.org/draft/2019-09/schema", - type: "object", - properties: { - flight: { - type: "object", - properties: { - flightNumber: { - type: "string", - }, - seat: { - type: "string", - }, - gate: { - type: "string", - }, - departure: { - type: "string", - format: "date-time", - }, - arrival: { - type: "string", - format: "date-time", - }, - }, - input: true, - }, - hotel: { - type: "object", - properties: { - name: { - type: "string", - }, - address: { - type: "object", - properties: { - street: { - type: "string", - }, - city: { - type: "string", - }, - zipCode: { - type: "string", - }, - country: { - type: "string", - }, - }, - }, - phone: { - type: "string", - }, - bookingNumber: { - type: "string", - }, - room: { - type: "string", - }, - }, - input: true, - output: true, - }, - }, - phases: ["complete", "release"], -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/graphql.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/graphql.js deleted file mode 100644 index 711892ad325..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/graphql.js +++ /dev/null @@ -1,4176 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = { - ProcessInstanceData: [ - { - id: "a1e139d5-4e77-48c9-84ae-34578e904e5a", - processId: "hotelBooking", - businessKey: "T1234HotelBooking01", - parentProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - parentProcessInstance: { - id: "e4448857-fa0c-403b-ad69-f0a353458b9d", - processName: "travels", - businessKey: "T1234", - }, - processName: "HotelBooking", - rootProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - roles: [], - state: "COMPLETED", - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - serviceUrl: null, - endpoint: "http://localhost:4000", - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-34578e904e6b", - message: "some thing went wrong", - }, - addons: [], - variables: - '{"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Bangalore","country":"India","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "27107f38-d888-4edf-9a4f-11b9e6d751b6", - enter: "2019-10-22T03:37:30.798Z", - exit: "2019-10-22T03:37:30.798Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book hotel", - definitionId: "ServiceTask_1", - id: "41b3f49e-beb3-4b5f-8130-efd28f82b971", - enter: "2019-10-22T03:37:30.795Z", - exit: "2019-10-22T03:37:30.798Z", - type: "WorkItemNode", - }, - { - nodeId: "2", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "4165a571-2c79-4fd0-921e-c6d5e7851b67", - enter: "2019-10-22T03:37:30.793Z", - exit: "2019-10-22T03:37:30.795Z", - type: "StartNode", - }, - ], - milestones: [ - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75i86", - name: "Manager decision", - status: "COMPLETED", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m36", - name: "Milestone 1: Order placed", - status: "ACTIVE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m66", - name: "Milestone 2: Order shipped", - status: "AVAILABLE", - }, - ], - childProcessInstances: [], - }, - { - id: "a23e6c20-02c2-4c2b-8c5c-e988a0adf863", - processId: "flightBooking", - businessKey: "T1234FlightBooking01", - parentProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - parentProcessInstance: { - id: "e4448857-fa0c-403b-ad69-f0a353458b9d", - processName: "travels", - businessKey: "T1234", - }, - processName: "FlightBooking", - rootProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - roles: [], - state: "ERROR", - addons: ["jobs-management", "prometheus-monitoring"], - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - error: { - nodeDefinitionId: "_a23e6c20-02c2-4c2b-8c5c-e988a0adf87c", - message: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim idest laborum.", - }, - start: "2019-10-22T03:40:44.089Z", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "e6c20-02c2-4c2b-8c5c-e988a0adf87c", - id: "8ac1fc9d-6de2-4b23-864e-ba79315db317", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "_a23e6c20-02c2-4c2b-8c5c-e988a0adf87c", - id: "2efa0617-d155-44dc-9b1e-38efc0dcec02", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "849d5bf2-4032-4897-8b30-179ce9d3444b", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "StartNode", - }, - ], - milestones: [ - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75ze6", - name: "Manager decision", - status: "COMPLETED", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75a56", - name: "Milestone 1: Order placed", - status: "ACTIVE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75q76", - name: "Milestone 2: Order shipped", - status: "AVAILABLE", - }, - ], - childProcessInstances: [], - }, - { - id: "a23e6c20-02c2-4c2b-8c5c-e988a0adf862", - processId: "flightBooking", - businessKey: "T1234FlightBooking02", - parentProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - parentProcessInstance: { - id: "e4448857-fa0c-403b-ad69-f0a353458b9d", - processName: "travels", - businessKey: "T1234", - }, - processName: "FlightBooking", - rootProcessInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - roles: [], - state: "COMPLETED", - serviceUrl: null, - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - endpoint: "http://localhost:4000", - error: { - nodeDefinitionId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf823", - message: "some thing went wrong", - }, - addons: [], - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "8ac1fc9d-6de2-4b23-864e-ba79315db317", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "ServiceTask_1", - id: "2efa0617-d155-44dc-9b1e-38efc0dcec02", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "849d5bf2-4032-4897-8b30-179ce9d3444b", - enter: "2019-10-22T03:37:30.804Z", - exit: "2019-10-22T03:37:30.804Z", - type: "StartNode", - }, - ], - milestones: [ - { - id: "27107f38-d888-4edf-9a4f-11b9e6d751g6", - name: "Manager decision", - status: "COMPLETED", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75v36", - name: "Milestone 1: Order placed", - status: "ACTIVE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75o96", - name: "Milestone 2: Order shipped", - status: "AVAILABLE", - }, - ], - childProcessInstances: [], - }, - { - id: "e4448857-fa0c-403b-ad69-f0a353458b9d", - processId: "travels", - businessKey: "T1234", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ERROR", - rootProcessInstanceId: null, - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - error: { - nodeDefinitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - message: "Something went wrong", - }, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Bangalore","country":"India","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "870bdda0-be04-4e59-bb0b-f9b665eaacc9", - enter: "2019-10-22T03:37:38.586Z", - exit: "2019-10-22T03:37:38.586Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "6b4a4fe9-4aab-4e8c-bb79-27b8b6b88d1f", - enter: "2019-10-22T03:37:30.807Z", - exit: "2019-10-22T03:37:38.586Z", - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "dd33de7c-c39c-484a-83a8-3e1b007fce95", - enter: "2019-10-22T03:37:30.793Z", - exit: "2019-10-22T03:37:30.803Z", - type: "SubProcessNode", - }, - { - nodeId: "4", - name: "Join", - definitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - id: "08c153e8-2766-4675-81f7-29943efdf411", - enter: "2019-10-22T03:37:30.806Z", - exit: "2019-10-22T03:37:30.807Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "683cf307-f082-4a8e-9c85-d5a11b13903a", - enter: "2019-10-22T03:37:30.803Z", - exit: "2019-10-22T03:37:30.806Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "cf057e58-4113-46c0-be13-6de42ea8377e", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.803Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "415a52c0-dc1f-4a93-9238-862dc8072262", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "52d64298-3f28-4aba-a812-dba4077c9665", - enter: "2019-10-22T03:37:30.79Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "6fdee287-08f6-49c2-af2d-2d125ba76ab7", - enter: "2019-10-22T03:37:30.755Z", - exit: "2019-10-22T03:37:30.79Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "d98c1762-9d3c-4228-9ffc-bc3f423079c0", - enter: "2019-10-22T03:37:30.753Z", - exit: "2019-10-22T03:37:30.754Z", - type: "StartNode", - }, - ], - milestones: [ - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m26", - name: "Manager decision", - status: "COMPLETED", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75uu26", - name: "Milestone 1: Order placed", - status: "ACTIVE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75mi86", - name: "Milestone 2: Order shipped", - status: "AVAILABLE", - }, - ], - childProcessInstances: [ - { - id: "a23e6c20-02c2-4c2b-8c5c-e988a0adf862", - processName: "FlightBooking", - businessKey: "T1234FlightBooking02", - }, - { - id: "a1e139d5-4e77-48c9-84ae-34578e904e5a", - processName: "HotelBooking", - businessKey: "T1234HotelBooking01", - }, - { - id: "a23e6c20-02c2-4c2b-8c5c-e988a0adf863", - processName: "FlightBooking", - businessKey: "T1234FlightBooking01", - }, - ], - }, - - { - id: "tEE12-fo54-l665-mp112-akou112345566", - processId: "travels", - businessKey: "TEE12", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ERROR", - rootProcessInstanceId: null, - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - error: { - nodeDefinitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - message: "Something went wrong", - }, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Bangalore","country":"India","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "870bdda0-be04-4e59-bb0b-f9b665eaacc9", - enter: "2019-10-22T03:37:38.586Z", - exit: "2019-10-22T03:37:38.586Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "6b4a4fe9-4aab-4e8c-bb79-27b8b6b88d1f", - enter: "2019-10-22T03:37:30.807Z", - exit: "2019-10-22T03:37:38.586Z", - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "dd33de7c-c39c-484a-83a8-3e1b007fce95", - enter: "2019-10-22T03:37:30.793Z", - exit: "2019-10-22T03:37:30.803Z", - type: "SubProcessNode", - }, - { - nodeId: "4", - name: "Join", - definitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - id: "08c153e8-2766-4675-81f7-29943efdf411", - enter: "2019-10-22T03:37:30.806Z", - exit: "2019-10-22T03:37:30.807Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "683cf307-f082-4a8e-9c85-d5a11b13903a", - enter: "2019-10-22T03:37:30.803Z", - exit: "2019-10-22T03:37:30.806Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "cf057e58-4113-46c0-be13-6de42ea8377e", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.803Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "415a52c0-dc1f-4a93-9238-862dc8072262", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "52d64298-3f28-4aba-a812-dba4077c9665", - enter: "2019-10-22T03:37:30.79Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "6fdee287-08f6-49c2-af2d-2d125ba76ab7", - enter: "2019-10-22T03:37:30.755Z", - exit: "2019-10-22T03:37:30.79Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "d98c1762-9d3c-4228-9ffc-bc3f423079c0", - enter: "2019-10-22T03:37:30.753Z", - exit: "2019-10-22T03:37:30.754Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "RZ11-tu77-hj321-bnfhe1-xdr2134", - processId: "travels", - businessKey: "MPTQ", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ERROR", - rootProcessInstanceId: null, - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - error: { - nodeDefinitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - message: "Something went wrong", - }, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Bangalore","country":"India","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Bangalore","country":"India","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Bangalore","country":"US","street":"Bangalore","zipCode":"560093"},"email":"ajaganat@redhat.com","firstName":"Ajay","lastName":"Jaganathan","nationality":"US"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "870bdda0-be04-4e59-bb0b-f9b665eaacc9", - enter: "2019-10-22T03:37:38.586Z", - exit: "2019-10-22T03:37:38.586Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "6b4a4fe9-4aab-4e8c-bb79-27b8b6b88d1f", - enter: "2019-10-22T03:37:30.807Z", - exit: "2019-10-22T03:37:38.586Z", - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "dd33de7c-c39c-484a-83a8-3e1b007fce95", - enter: "2019-10-22T03:37:30.793Z", - exit: "2019-10-22T03:37:30.803Z", - type: "SubProcessNode", - }, - { - nodeId: "4", - name: "Join", - definitionId: "_2140F05A-364F-40B3-BB7B-B12927065DF8", - id: "08c153e8-2766-4675-81f7-29943efdf411", - enter: "2019-10-22T03:37:30.806Z", - exit: "2019-10-22T03:37:30.807Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "683cf307-f082-4a8e-9c85-d5a11b13903a", - enter: "2019-10-22T03:37:30.803Z", - exit: "2019-10-22T03:37:30.806Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "cf057e58-4113-46c0-be13-6de42ea8377e", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.803Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "415a52c0-dc1f-4a93-9238-862dc8072262", - enter: "2019-10-22T03:37:30.792Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "52d64298-3f28-4aba-a812-dba4077c9665", - enter: "2019-10-22T03:37:30.79Z", - exit: "2019-10-22T03:37:30.792Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "6fdee287-08f6-49c2-af2d-2d125ba76ab7", - enter: "2019-10-22T03:37:30.755Z", - exit: "2019-10-22T03:37:30.79Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "d98c1762-9d3c-4228-9ffc-bc3f423079c0", - enter: "2019-10-22T03:37:30.753Z", - exit: "2019-10-22T03:37:30.754Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "fc1b6535-d557-40df-82c8-b425b9dc531b", - processId: "flightBooking", - businessKey: "Tra234FlightBooking01", - parentProcessInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - parentProcessInstance: { - id: "538f9feb-5a14-4096-b791-2055b38da7c6", - processName: "travels", - businessKey: "Tra234", - }, - processName: "FlightBooking", - rootProcessInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - roles: [], - state: "ERROR", - addons: ["prometheus-monitoring"], - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - error: { - nodeDefinitionId: "_cq125e139d5-4e77-48c9-84ae-34578e90433n", - message: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim idest laborum.", - }, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-23T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-23T22:00:00Z[UTC]","city":"New York","country":"US","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Berlin","country":"Germany","street":"Bakers","zipCode":"100200"},"email":"cristiano@redhat.com","firstName":"Cristiano","lastName":"Nicolai","nationality":"German"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "18d9e3df-22d2-429c-98d7-f4f2a7b1b471", - enter: "2019-10-22T03:40:44.086Z", - exit: "2019-10-22T03:40:44.086Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "_cq125e139d5-4e77-48c9-84ae-34578e90433n", - id: "8a533611-9766-428f-b7ff-78156fc4851d", - enter: "2019-10-22T03:40:44.086Z", - exit: "2019-10-22T03:40:44.086Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "2f423120-13ea-4277-97f6-6b7a4b4630d0", - enter: "2019-10-22T03:40:44.086Z", - exit: "2019-10-22T03:40:44.086Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "ff65b793-bb88-4567-b7e3-73eee35772a4", - processId: "hotelBooking", - businessKey: "Tra234HotelBooking01", - parentProcessInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - parentProcessInstance: { - id: "538f9feb-5a14-4096-b791-2055b38da7c6", - processName: "travels", - businessKey: "Tra234", - }, - rootProcessInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - processName: "HotelBooking", - roles: [], - state: "ABORTED", - addons: ["process-management"], - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-34578ek1839b", - message: "Something went wrong", - }, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - variables: - '{"trip":{"begin":"2019-10-23T22:00:00Z[UTC]","city":"New York","country":"US","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"New York","country":"US","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Berlin","country":"Germany","street":"Bakers","zipCode":"100200"},"email":"cristiano@redhat.com","firstName":"Cristiano","lastName":"Nicolai","nationality":"German"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "ed36cd72-5e52-4a53-9d0d-865c98781282", - enter: "2019-10-22T03:40:44.088Z", - exit: "2019-10-22T03:40:44.088Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book hotel", - definitionId: "ServiceTask_1", - id: "040cd02a-7f4c-4d41-bda5-4889f82e921f", - enter: "2019-10-22T03:40:44.088Z", - exit: "2019-10-22T03:40:44.088Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "8528c7bf-8ac8-401f-b7e5-6f3e69b9f9f2", - enter: "2019-10-22T03:40:44.088Z", - exit: "2019-10-22T03:40:44.088Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "538f9feb-5a14-4096-b791-2055b38da7c6", - processId: "travels", - businessKey: "Tra234", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - rootProcessInstanceId: null, - roles: [], - state: "ERROR", - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - start: "2019-10-22T03:40:44.089Z", - error: { - nodeDefinitionId: "__a1e139d5-4e77-48c9-84ae-34578e9817n", - message: "Something went wrong", - }, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-23T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-23T22:00:00Z[UTC]","city":"New York","country":"US","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"New York","country":"US","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Berlin","country":"Germany","street":"Bakers","zipCode":"100200"},"email":"cristiano@redhat.com","firstName":"Cristiano","lastName":"Nicolai","nationality":"German"}}', - nodes: [ - { - nodeId: "1", - name: "Confirm travel", - definitionId: "__a1e139d5-4e77-48c9-84ae-34578e9817n", - id: "69e0a0f5-2360-4174-a8f8-a892a31fc2f9", - enter: "2019-10-22T03:40:44.089Z", - exit: "2019-10-22T04:42:07.246Z", - type: "HumanTaskNode", - }, - { - nodeId: "2", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "4cb855b9-e3e4-488d-ae1a-9ea3b8490dba", - enter: "2019-10-22T03:40:44.086Z", - exit: "2019-10-22T03:40:44.087Z", - type: "SubProcessNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "1da9af80-c70e-47b8-9c87-964468fc0b46", - enter: "2019-10-22T03:40:44.089Z", - exit: "2019-10-22T03:40:44.089Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "f9b90c32-51da-4986-9603-8c800a6b71b1", - enter: "2019-10-22T03:40:44.087Z", - exit: "2019-10-22T03:40:44.089Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "f8d7fe9e-0f3e-4919-8fa7-82e0b6821aa9", - enter: "2019-10-22T03:40:44.085Z", - exit: "2019-10-22T03:40:44.087Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "55fd6d56-e4d4-4021-b6c6-02c3c5cb86ce", - enter: "2019-10-22T03:40:44.085Z", - exit: "2019-10-22T03:40:44.085Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "fe6b2d9e-6cfd-415a-8e92-5d2be541c3ff", - enter: "2019-10-22T03:40:44.085Z", - exit: "2019-10-22T03:40:44.085Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "3bd30bf9-96ba-4f5d-9ed0-981963288418", - enter: "2019-10-22T03:40:44.07Z", - exit: "2019-10-22T03:40:44.085Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "739fc473-157d-4b4e-8ad6-e4c28499d24e", - enter: "2019-10-22T03:40:44.07Z", - exit: "2019-10-22T03:40:44.07Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "fc1b6535-d557-40df-82c8-b425b9dc531b", - processName: "FlightBooking", - businessKey: "Tra234FlightBooking01", - }, - { - id: "ff65b793-bb88-4567-b7e3-73eee35772a4", - processName: "HotelBooking", - businessKey: "Tra234HotelBooking01", - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0blmnop", - processId: "travels", - businessKey: "Tr1122", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - addons: ["process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-12-22T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel not found", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [ - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75i86", - name: "Manager decision", - status: "COMPLETED", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m36", - name: "Milestone 1: Order placed", - status: "ACTIVE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m66", - name: "Milestone 2: Order shipped", - status: "AVAILABLE", - }, - { - id: "27107f38-d888-4edf-9a4f-11b9e6d75m88", - name: "Milestone 3: Order delivered and closed with customer sign off", - status: "ACTIVE", - }, - ], - childProcessInstances: [], - }, - { - id: "e735128t-6tt7-4aa8-9ec0-e18e19809e0b", - processId: "travels", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - businessKey: null, - state: "COMPLETED", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000", - addons: ["process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-12-22T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0bccddee", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - processName: "travels", - roles: [], - state: "SUSPENDED", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - addons: ["jobs-management", "prometheus-monitoring", "process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processId: "flightBooking", - businessKey: "Trrr", - parentProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - parentProcessInstance: { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - processName: "travels", - businessKey: null, - }, - processName: "FlightBooking", - rootProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - roles: [], - state: "COMPLETED", - serviceUrl: null, - endpoint: "http://localhost:4000", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-81c77-48c9-84ae-34578e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "7244ba1b-75ec-4789-8c65-499a0c5b1a6f", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "ServiceTask_1", - id: "2f588da5-a323-4111-9017-3093ef9319d1", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "6ed7aa17-4bb1-48e3-b34a-5a4c5773dff2", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eaccd", - processName: "FlightBooking test 1", - businessKey: null, - }, - ], - }, - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eaccd", - processId: "flightBooking test1", - parentProcessInstanceId: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - parentProcessInstance: { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - businessKey: null, - processName: "FlightBooking test 1", - rootProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - roles: [], - state: "SUSPENDED", - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-81c77-48c9-84ae-34578e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "7244ba1b-75ec-4789-8c65-499a0c5b1a6f", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "ServiceTask_1", - id: "2f588da5-a323-4111-9017-3093ef9319d1", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "6ed7aa17-4bb1-48e3-b34a-5a4c5773dff2", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eajabbcc", - processName: "FlightBooking test 2", - businessKey: null, - }, - ], - }, - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eajabbcc", - processId: "flightBooking test2", - businessKey: "TP444", - parentProcessInstanceId: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eaccd", - parentProcessInstance: { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21eaccd", - processName: "FlightBooking test 1", - businessKey: null, - }, - rootProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - processName: "FlightBooking test 2", - roles: [], - state: "COMPLETED", - serviceUrl: null, - endpoint: "http://localhost:4000", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-81c77-48c9-84ae-34578e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "7244ba1b-75ec-4789-8c65-499a0c5b1a6f", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book flight", - definitionId: "ServiceTask_1", - id: "2f588da5-a323-4111-9017-3093ef9319d1", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "6ed7aa17-4bb1-48e3-b34a-5a4c5773dff2", - enter: "2019-10-22T04:43:01.144Z", - exit: "2019-10-22T04:43:01.144Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processId: "hotelBooking", - businessKey: "TM111", - parentProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - parentProcessInstance: { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - processName: "travels", - businessKey: null, - }, - rootProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - processName: "HotelBooking", - roles: [], - state: "COMPLETED", - serviceUrl: null, - endpoint: "http://localhost:4000", - addons: ["jobs-management", "prometheus-monitoring"], - error: { - nodeDefinitionId: "a1qa139d5-4e77-181x8c9-84ae-34578e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - variables: - '{"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "7a770672-8493-4566-8288-515c0b5360a8", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book hotel", - definitionId: "ServiceTask_1", - id: "f10ed686-84f0-48b6-844e-5cfafa32a7bc", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "5a6bd73e-1d3d-43d9-8f27-8081c3014716", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0basadadads", - processId: "travels", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels", - roles: [], - state: "ABORTED", - businessKey: "TL111", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-12-22T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88abc", - processName: "hotelBooking", - businessKey: "Hotel11", - }, - ], - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88abc", - processId: "hotelBooking", - parentProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0basadadads", - parentProcessInstance: { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0basadadads", - processName: "travels", - businessKey: null, - }, - rootProcessInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0basadadads", - processName: "HotelBooking", - businessKey: "Hotel11", - roles: [], - state: "COMPLETED", - serviceUrl: null, - endpoint: "http://localhost:4000", - addons: ["jobs-management", "prometheus-monitoring"], - error: { - nodeDefinitionId: "a1qa139d5-4e77-181x8c9-84ae-34578e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: "2019-10-22T05:40:44.089Z", - variables: - '{"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "End Event 1", - definitionId: "EndEvent_1", - id: "7a770672-8493-4566-8288-515c0b5360a8", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "EndNode", - }, - { - nodeId: "2", - name: "Book hotel", - definitionId: "ServiceTask_1", - id: "f10ed686-84f0-48b6-844e-5cfafa32a7bc", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "WorkItemNode", - }, - { - nodeId: "3", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "5a6bd73e-1d3d-43d9-8f27-8081c3014716", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.146Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b1", - processId: "travels", - businessKey: "travels001", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels1", - roles: [], - state: "ACTIVE", - serviceUrl: "http://localhost:4000", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: ["process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b2", - processId: "travels", - businessKey: "Tp111", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels2", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: ["process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b3", - processId: "travels", - businessKey: "Travels@123", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels3", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000/", - endpoint: "http://localhost:4000/", - addons: ["process-management"], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b4", - processId: "travels", - businessKey: "TTTTT", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels4", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b5", - processId: "travels", - businessKey: "Tr11111111", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels5", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b6", - processId: "travels", - businessKey: "Trav99", - parentProcessInstance: null, - parentProcessInstanceId: null, - processName: "travels6", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b8", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels8", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b9", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels9", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b10", - processId: "travels", - businessKey: "newTravels", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels10", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b11", - processId: "travels", - businessKey: "Trav11test", - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels11", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: "http://localhost:4000", - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b12", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels12", - roles: [], - state: "ACTIVE", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - { - id: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b13abbccccc", - processId: "travels", - businessKey: null, - parentProcessInstanceId: null, - parentProcessInstance: null, - processName: "travels13", - roles: [], - state: "COMPLETED", - rootProcessInstanceId: null, - serviceUrl: null, - endpoint: "http://localhost:4000/", - addons: [], - error: { - nodeDefinitionId: "a1e139d5-4e77-48c9-84ae-3459188e90433n", - message: "Something went wrong", - }, - start: "2019-10-22T03:40:44.089Z", - lastUpdate: "2019-12-25T03:40:44.089Z", - end: null, - variables: - '{"flight":{"arrival":"2019-10-30T22:00:00Z[UTC]","departure":"2019-10-22T22:00:00Z[UTC]","flightNumber":"MX555"},"hotel":{"address":{"city":"Berlin","country":"Germany","street":"street","zipCode":"12345"},"bookingNumber":"XX-012345","name":"Perfect hotel","phone":"09876543"},"trip":{"begin":"2019-10-22T22:00:00Z[UTC]","city":"Berlin","country":"Germany","end":"2019-10-30T22:00:00Z[UTC]","visaRequired":false},"traveller":{"address":{"city":"Karkow","country":"Poland","street":"palna","zipCode":"200300"},"email":"rob@redhat.com","firstName":"Rob","lastName":"Rob","nationality":"Polish"}}', - nodes: [ - { - nodeId: "1", - name: "Book Flight", - definitionId: "CallActivity_2", - id: "7cdeba99-cd36-4425-980d-e59d44769a3e", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "SubProcessNode", - }, - { - nodeId: "2", - name: "Confirm travel", - definitionId: "UserTask_2", - id: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - enter: "2019-10-22T04:43:01.148Z", - exit: null, - type: "HumanTaskNode", - }, - { - nodeId: "3", - name: "Join", - definitionId: "ParallelGateway_2", - id: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - enter: "2019-10-22T04:43:01.148Z", - exit: "2019-10-22T04:43:01.148Z", - type: "Join", - }, - { - nodeId: "4", - name: "Book Hotel", - definitionId: "CallActivity_1", - id: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - enter: "2019-10-22T04:43:01.146Z", - exit: "2019-10-22T04:43:01.148Z", - type: "SubProcessNode", - }, - { - nodeId: "5", - name: "Book", - definitionId: "ParallelGateway_1", - id: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.146Z", - type: "Split", - }, - { - nodeId: "6", - name: "Join", - definitionId: "ExclusiveGateway_2", - id: "b2761011-3043-4f48-82bd-1395bf651a91", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Join", - }, - { - nodeId: "7", - name: "is visa required", - definitionId: "ExclusiveGateway_1", - id: "a91a2600-d0cd-46ff-a6c6-b3081612d1af", - enter: "2019-10-22T04:43:01.143Z", - exit: "2019-10-22T04:43:01.143Z", - type: "Split", - }, - { - nodeId: "8", - name: "Visa check", - definitionId: "BusinessRuleTask_1", - id: "1baa5de4-47cc-45a8-8323-005388191e4f", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.143Z", - type: "RuleSetNode", - }, - { - nodeId: "9", - name: "StartProcess", - definitionId: "StartEvent_1", - id: "90e5a337-1c26-4fcc-8ee2-d20e6ba2a1a3", - enter: "2019-10-22T04:43:01.135Z", - exit: "2019-10-22T04:43:01.135Z", - type: "StartNode", - }, - ], - milestones: [], - childProcessInstances: [ - { - id: "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", - processName: "FlightBooking", - businessKey: null, - }, - { - id: "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - processName: "HotelBooking", - businessKey: null, - }, - ], - }, - ], - JobsData: [ - { - id: "6e74a570-31c8-4020-bd70-19be2cb625f3_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: null, - status: "EXECUTED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/6e74a570-31c8-4020-bd70-19be2cb625f3_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: "0", - retries: 1, - lastUpdate: "2020-08-27T03:35:50.147Z", - expirationTime: null, - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - executionCounter: 2, - }, - { - id: "dad3aa88-5c1e-4858-a919-6123c675a0fa_1", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 3, - lastUpdate: "2020-07-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - executionCounter: 6, - }, - { - id: "2234dde-npce1-2908-b3131-6123c675a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "CANCELED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 2, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - executionCounter: 0, - }, - { - id: "T3113e-vbg43-2234-lo89-cpmw3214ra0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "ERROR", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: 30300, - repeatLimit: 3, - scheduledId: null, - retries: 7, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - executionCounter: 3, - }, - { - id: "bff4ee-11qw23-6675-po987-qwedfrt45a0fa_5", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "RETRY", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 15, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "b2761011-3043-4f48-82bd-1395bf651a91", - executionCounter: 2, - }, - { - id: "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 2, - lastUpdate: "2020-06-29T03:35:54.635Z", - expirationTime: "2020-08-29T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: null, - executionCounter: 0, - }, - { - id: "dad3aa88-5c1e-4858-a919-uey23c675a0fa_0", - processId: "travels", - processInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 5, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "08c153e8-2766-4675-81f7-29943efdf411", - executionCounter: 0, - }, - { - id: "6e74a570-31c8-4020-bd70-o413be2cb625f3_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: null, - status: "EXECUTED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/6e74a570-31c8-4020-bd70-19be2cb625f3_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: "0", - retries: 0, - lastUpdate: "2020-08-27T03:35:50.147Z", - expirationTime: null, - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "fd2e12d5-6a4b-4c75-9f31-028d3f032a95", - executionCounter: 5, - }, - { - id: "dad3aa88-5c1e-4858-a919-61ai21c675a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "843bd287-fb6e-4ee7-a304-ba9b430e52d8", - executionCounter: 7, - }, - { - id: "2234dde-npce1-2908-b3131-i15333c675a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "CANCELED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "7f7d74c1-78f7-49be-b5ad-8d132f46a49c", - executionCounter: 3, - }, - { - id: "T3113e-vbg43-2234-lo89-u8103214ra0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "ERROR", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: 30300, - repeatLimit: 3, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "af0d984c-4abd-4f5c-83a8-426e6b3d102a", - executionCounter: 2, - }, - { - id: "bff4ee-11qw23-6675-po987-qwedfrt45a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "RETRY", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "b2761011-3043-4f48-82bd-1395bf651a91", - executionCounter: 9, - }, - { - id: "eff4ee-11qw23-6675-pokau97-ql10s5ut45a0fa_0", - processId: "travels", - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-29T03:35:54.635Z", - expirationTime: "2020-08-29T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: null, - executionCounter: 1, - }, - { - id: "dad3aa88-5c1e-4858-a919-781ns75a0fa_0", - processId: "travels", - processInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - rootProcessId: "", - status: "SCHEDULED", - priority: 0, - callbackEndpoint: - "http://localhost:8080/management/jobs/travels/instances/5c56eeff-4cbf-3313-a325-4c895e0afced/timers/dad3aa88-5c1e-4858-a919-6123c675a0fa_0", - repeatInterval: null, - repeatLimit: null, - scheduledId: null, - retries: 0, - lastUpdate: "2020-08-27T03:35:54.635Z", - expirationTime: "2020-08-27T04:35:54.631Z", - endpoint: "http://localhost:4000/jobs", - nodeInstanceId: "08c153e8-2766-4675-81f7-29943efdf411", - executionCounter: 8, - }, - ], - UserTaskInstances: [ - { - id: "45a73767-5da3-49bf-9c40-d533c3e77ef3", - description: null, - name: "VisaApplication", - priority: "1", - processInstanceId: "9ae7ce3b-d49c-4f35-b843-8ac3d22fa427", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "admin", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-02-19T11:11:56.282Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"Skippable":"true","trip":{"city":"Boston","country":"US","begin":"2020-02-19T23:00:00.000+01:00","end":"2020-02-26T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","traveller":{"firstName":"Rachel","lastName":"White","email":"rwhite@gorle.com","nationality":"Polish","address":{"street":"Cabalone","city":"Zerf","zipCode":"765756","country":"Poland"}},"Priority":"1"}', - outputs: "{}", - referenceName: "Apply for visa (Empty Form)", - lastUpdate: "2020-02-19T11:11:56.282Z", - endpoint: - "http://localhost:4000/travels/9ae7ce3b-d49c-4f35-b843-8ac3d22fa427/VisaApplication/45a73767-5da3-49bf-9c40-d533c3e77ef3", - }, - { - id: "047ec38d-5d57-4330-8c8d-9bd67b53a529", - description: "", - name: "ConfirmTravel", - priority: "1", - processInstanceId: "9ae407dd-cdfa-4722-8a49-0a6d2e14550d", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "paulo", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-02-19T10:59:34.185Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null}}', - outputs: "{}", - referenceName: "Confirm travel (Submit fails)", - lastUpdate: "2020-02-19T13:22:40.909Z", - endpoint: - "http://localhost:4000/travels/9ae407dd-cdfa-4722-8a49-0a6d2e14550d/VisaApplication/047ec38d-5d57-4330-8c8d-9bd67b53a529", - }, - { - id: "f6be5b6b-34de-4b06-b6e7-05bcf8ba7f54", - description: "", - name: "ConfirmTravel", - priority: "1", - processInstanceId: "4bfdd404-c46a-4751-b401-b1428a30fa07", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Completed", - actualOwner: "paulo", - adminGroups: [], - adminUsers: [], - completed: "2020-02-19T10:49:24.623Z", - started: "2020-02-19T10:49:16.559Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null}}', - outputs: "{}", - referenceName: "Confirm travel", - endpoint: - "http://localhost:4000/travels/4bfdd404-c46a-4751-b401-b1428a30fa07/ConfirmTravel/f6be5b6b-34de-4b06-b6e7-05bcf8ba7f54", - }, - { - id: "5cead49f-7649-410a-89ff-840cc52adf52", - description: "", - name: "ConfirmTravel", - priority: "1", - processInstanceId: "7e31993d-8c9a-45e8-997d-7156632a520f", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Aborted", - actualOwner: "john", - adminGroups: [], - adminUsers: [], - completed: "2020-02-19T09:55:52.574Z", - started: "2020-02-19T09:55:38.81Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null}}', - outputs: "{}", - referenceName: "Confirm travel (Details Error)", - endpoint: - "http://localhost:4000/travels/7e31993d-8c9a-45e8-997d-7156632a520f/ConfirmTravel/5cead49f-7649-410a-89ff-840cc52adf52", - }, - { - id: "841b9dba-3d91-4725-9de3-f9f4853b417e", - name: "VisaApplication", - referenceName: "Apply for visa (Submit fail)", - description: null, - priority: "1", - processInstanceId: "a84df9ba-f41e-47cb-9aa5-67cffff2c5bc", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "john", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:02.386Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"trip":{"city":"New York","country":"US","begin":"2019-12-09T23:00:00.000+01:00","end":"2019-12-14T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","Priority":"1","Skippable":"true","traveller":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com","nationality":"Polish","address":{"street":"polna","city":"Krakow","zipCode":"32000","country":"Poland"}},"GroupId":"group1"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:02.39Z", - endpoint: - "http://localhost:4000/travels/a84df9ba-f41e-47cb-9aa5-67cffff2c5bc/VisaApplication/841b9dba-3d91-4725-9de3-f9f4853b417e", - }, - { - id: "475e3eb3-1de4-4f68-a146-79c236353a03", - name: "VisaApplication", - referenceName: "Apply for visa (No Form)", - description: null, - priority: "1", - processInstanceId: "5c10ec86-4cf5-4de2-a5ab-d962893f079d", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:04.88Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: ["john", "poul"], - inputs: - '{"trip":{"city":"New York","country":"US","begin":"2019-12-09T23:00:00.000+01:00","end":"2019-12-14T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","Priority":"1","Skippable":"true","traveller":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com","nationality":"Polish","address":{"street":"polna","city":"Krakow","zipCode":"32000","country":"Poland"}},"GroupId":"group1"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:04.884Z", - endpoint: - "http://localhost:4000/travels/5c10ec86-4cf5-4de2-a5ab-d962893f079d/VisaApplication/475e3eb3-1de4-4f68-a146-79c236353a03", - }, - { - id: "c6fedd33-8fea-4adf-97a0-9d2b6676e9d0", - name: "VisaApplication", - referenceName: "Apply for visa", - description: null, - priority: "1", - processInstanceId: "9d19c8ec-aa5c-4681-9bb5-ff8cbce08091", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:07.075Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"trip":{"city":"New York","country":"US","begin":"2019-12-09T23:00:00.000+01:00","end":"2019-12-14T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","Priority":"1","Skippable":"true","traveller":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com","nationality":"Polish","address":{"street":"polna","city":"Krakow","zipCode":"32000","country":"Poland"}},"GroupId":"group1"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:07.079Z", - endpoint: - "http://localhost:4000/travels/9d19c8ec-aa5c-4681-9bb5-ff8cbce08091/VisaApplication/c6fedd33-8fea-4adf-97a0-9d2b6676e9d0", - }, - { - id: "809aae9e-f0bf-4892-b0c9-4be80664d2aa", - name: "ConfirmTravel", - referenceName: "Confirm travel (Empty Form)", - description: null, - priority: "1", - processInstanceId: "5204b2d2-54ec-4f07-8f8c-3079a1f5fe9b", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:15.381Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:15.389Z", - endpoint: - "http://localhost:4000/travels/5204b2d2-54ec-4f07-8f8c-3079a1f5fe9b/ConfirmTravel/809aae9e-f0bf-4892-b0c9-4be80664d2aa", - }, - { - id: "615b9143-1468-4028-b454-6122e2139f5c", - name: "ConfirmTravel", - referenceName: "Confirm travel (No Form)", - description: null, - priority: "1", - processInstanceId: "d6685e24-0aad-4e5c-a64f-29e95cae9e5e", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:18.044Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:18.05Z", - endpoint: - "http://localhost:4000/travels/d6685e24-0aad-4e5c-a64f-29e95cae9e5e/ConfirmTravel/615b9143-1468-4028-b454-6122e2139f5c", - }, - { - id: "2e37c623-a535-4eb1-ae5b-6eaf7f4039c3", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "40ab14f0-3a10-4ffd-96e1-05b0028943b4", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:20.832Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:20.835Z", - endpoint: - "http://localhost:4000/travels/40ab14f0-3a10-4ffd-96e1-05b0028943b4/ConfirmTravel/2e37c623-a535-4eb1-ae5b-6eaf7f4039c3", - }, - { - id: "3c1d6da4-436a-4728-bc24-9a69781bcbac", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "e1d4b174-a9b5-465b-b142-018df18d87d8", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:23.698Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:00:23.701Z", - endpoint: - "http://localhost:4000/travels/e1d4b174-a9b5-465b-b142-018df18d87d8/ConfirmTravel/3c1d6da4-436a-4728-bc24-9a69781bcbac", - }, - { - id: "86ddb2c7-c8e1-435f-a274-a8b0eb066ac1", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "b8eebfe7-45f4-4ce7-9019-1740222b302a", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:01:12.65Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:01:12.655Z", - endpoint: - "http://localhost:4000/travels/b8eebfe7-45f4-4ce7-9019-1740222b302a/ConfirmTravel/86ddb2c7-c8e1-435f-a274-a8b0eb066ac1", - }, - { - id: "9e1e0601-f7bd-4ad3-88ca-57afc9e3cf9d", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "0c469bbf-988b-44e0-8fc9-90286500c519", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:01:14.412Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:01:14.416Z", - endpoint: - "http://localhost:4000/travels/0c469bbf-988b-44e0-8fc9-90286500c519/ConfirmTravel/9e1e0601-f7bd-4ad3-88ca-57afc9e3cf9d", - }, - { - id: "a3eefa9a-51b0-4820-bc99-94c370389ed5", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "718f44c2-e574-482c-9a24-60d17e474dde", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:01:16.421Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:01:16.426Z", - endpoint: - "http://localhost:4000/travels/718f44c2-e574-482c-9a24-60d17e474dde/ConfirmTravel/a3eefa9a-51b0-4820-bc99-94c370389ed5", - }, - { - id: "aa9f477c-5172-4913-956a-6c76f7278207", - name: "VisaApplication", - referenceName: "Apply for visa", - description: "", - priority: "1", - processInstanceId: "fe523245-05e2-4a0c-abf7-a774cfe9d3f9", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Completed", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: "2020-07-30T09:22:16.417Z", - started: "2020-07-30T08:59:55.64Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"trip":{"city":"New York","country":"US","begin":"2019-12-09T23:00:00.000+01:00","end":"2019-12-14T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","Priority":"1","Skippable":"true","traveller":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com","nationality":"Polish","address":{"street":"polna","city":"Krakow","zipCode":"32000","country":"Poland"}},"GroupId":"group1"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:22:16.446Z", - endpoint: - "http://localhost:4000/travels/fe523245-05e2-4a0c-abf7-a774cfe9d3f9/VisaApplication/aa9f477c-5172-4913-956a-6c76f7278207", - }, - { - id: "99bb167f-144a-42fb-8f40-b80f34f5bed9", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: "", - priority: "1", - processInstanceId: "28f63147-b948-4a63-acce-ec2c5c5f15ca", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Aborted", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T08:59:44.749Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:32:14.556Z", - endpoint: - "http://localhost:4000/travels/28f63147-b948-4a63-acce-ec2c5c5f15ca/ConfirmTravel/99bb167f-144a-42fb-8f40-b80f34f5bed9", - }, - { - id: "2f8e0452-b50d-40f8-a657-b32c812828ef", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: "", - priority: "1", - processInstanceId: "53923218-2a54-40c5-8b01-872d8dd2ec67", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Completed", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: "2020-07-30T09:40:26.896Z", - started: "2020-07-30T08:59:47.779Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:40:26.901Z", - endpoint: - "http://localhost:4000/travels/53923218-2a54-40c5-8b01-872d8dd2ec67/ConfirmTravel/2f8e0452-b50d-40f8-a657-b32c812828ef", - }, - { - id: "5ac50f25-192c-4719-9847-f9b8bdfe3381", - name: "VisaApplication", - referenceName: "Apply for visa", - description: "", - priority: "1", - processInstanceId: "8e0eb71c-b5a3-44a3-9b82-d786781a6598", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Completed", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: "2020-07-30T09:43:29.625Z", - started: "2020-07-30T08:59:58.565Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"trip":{"city":"New York","country":"US","begin":"2019-12-09T23:00:00.000+01:00","end":"2019-12-14T23:00:00.000+01:00","visaRequired":true},"TaskName":"VisaApplication","NodeName":"Apply for visa","Priority":"1","Skippable":"true","traveller":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com","nationality":"Polish","address":{"street":"polna","city":"Krakow","zipCode":"32000","country":"Poland"}},"GroupId":"group1"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:43:29.628Z", - endpoint: - "http://localhost:4000/travels/8e0eb71c-b5a3-44a3-9b82-d786781a6598/VisaApplication/5ac50f25-192c-4719-9847-f9b8bdfe3381", - }, - { - id: "e878bca4-84f6-46a3-a864-9632ab490cab", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: "", - priority: "1", - processInstanceId: "a413fc40-b192-4879-94aa-dc84d0394f67", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Aborted", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T09:00:13.404Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T09:44:00.082Z", - endpoint: - "http://localhost:4000/travels/a413fc40-b192-4879-94aa-dc84d0394f67/ConfirmTravel/e878bca4-84f6-46a3-a864-9632ab490cab", - }, - { - id: "61676d8f-56b7-4bc3-bd40-4c905d4ab176", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "90a4d7db-c41f-4e01-b6b1-201be823bc07", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T12:57:33.309Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T12:57:33.318Z", - endpoint: - "http://localhost:4000/travels/90a4d7db-c41f-4e01-b6b1-201be823bc07/ConfirmTravel/61676d8f-56b7-4bc3-bd40-4c905d4ab176", - }, - { - id: "0a65028e-c02b-41f9-9260-5b703fb27a27", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "fdc72f2c-41fe-440e-bbf6-22510fa4766d", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:05:52.696Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T13:05:52.699Z", - endpoint: - "http://localhost:4000/travels/fdc72f2c-41fe-440e-bbf6-22510fa4766d/ConfirmTravel/0a65028e-c02b-41f9-9260-5b703fb27a27", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fee1", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f77bf4", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/travels/b4096227-2c8a-463f-a7a9-776027f77bf4/ConfirmTravel/5fe852de-8d00-4197-9936-3842c648fee1", - }, - { - id: "61676d8f-56b7-4bc3-bd40-4c905d4ab1762", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "90a4d7db-c41f-4e01-b6b1-201be823bc07", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "mary", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T12:57:33.309Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T12:57:33.318Z", - endpoint: - "http://localhost:4000/travels/90a4d7db-c41f-4e01-b6b1-201be823bc07/ConfirmTravel/61676d8f-56b7-4bc3-bd40-4c905d4ab1762", - }, - { - id: "0a65028e-c02b-41f9-9260-5b703fb27a271", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "fdc72f2c-41fe-440e-bbf6-22510fa4766d", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "mary", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:05:52.696Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T13:05:52.699Z", - endpoint: - "http://localhost:4000/travels/fdc72f2c-41fe-440e-bbf6-22510fa4766d/ConfirmTravel/0a65028e-c02b-41f9-9260-5b703fb27a271", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fee134", - name: "ConfirmTravel", - referenceName: "Confirm travel", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f77bf4", - processId: "travels", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: "mary", - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: [], - potentialUsers: [], - inputs: - '{"flight":{"flightNumber":"MX555","seat":null,"gate":null,"departure":"2019-12-09T23:00:00.000+01:00","arrival":"2019-12-14T23:00:00.000+01:00"},"TaskName":"ConfirmTravel","NodeName":"Confirm travel","Priority":"1","Skippable":"true","hotel":{"name":"Perfect hotel","address":{"street":"street","city":"New York","zipCode":"12345","country":"US"},"phone":"09876543","bookingNumber":"XX-012345","room":null},"GroupId":"group2"}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/travels/b4096227-2c8a-463f-a7a9-776027f77bf4/ConfirmTravel/5fe852de-8d00-4197-9936-3842c648fee134", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fe1234", - name: "HRInterview", - referenceName: "Human Resources Interview (HTML)", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f71234", - processId: "html_hiring", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"candidate": {"name": "Harry Potter", "email": "harrypotter@example.com", "salary": 30000,"skills": "Java, Kogito", "birthday": "2019-12-10T00:00:00.000+02:00"}}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/hiring/b4096227-2c8a-463f-a7a9-776027f71234/HRInterview/5fe852de-8d00-4197-9936-3842c648fe1234", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fe12345", - name: "HRInterview", - referenceName: "Human Resources Interview (HTML - submit failure)", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f712345", - processId: "html_hiring", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"candidate": {"name": "Harry Potter", "email": "harrypotter@example.com", "salary": 30000,"skills": "Java, Kogito", "birthday": "2019-12-10T00:00:00.000+02:00"}}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/hiring/b4096227-2c8a-463f-a7a9-776027f712345/HRInterview/5fe852de-8d00-4197-9936-3842c648fe12345", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fe12342", - name: "HRInterview", - referenceName: "Human Resources Interview (React)", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f712342", - processId: "react_hiring", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"candidate": {"name": "Harry Potter", "email": "harrypotter@example.com", "salary": 30000,"skills": "Java, Kogito", "birthday": "2019-12-10T00:00:00.000+02:00"}}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/hiring/b4096227-2c8a-463f-a7a9-776027f712342/HRInterview/5fe852de-8d00-4197-9936-3842c648fe12342", - }, - { - id: "5fe852de-8d00-4197-9936-3842c648fe123422", - name: "HRInterview", - referenceName: "Human Resources Interview (React - submit failure)", - description: null, - priority: "1", - processInstanceId: "b4096227-2c8a-463f-a7a9-776027f7123422", - processId: "react_hiring", - rootProcessInstanceId: null, - rootProcessId: null, - state: "Ready", - actualOwner: null, - adminGroups: [], - adminUsers: [], - completed: null, - started: "2020-07-30T13:08:20.509Z", - excludedUsers: [], - potentialGroups: ["employees", "interns", "managers"], - potentialUsers: [], - inputs: - '{"candidate": {"name": "Harry Potter", "email": "harrypotter@example.com", "salary": 30000,"skills": "Java, Kogito", "birthday": "2019-12-10T00:00:00.000+02:00"}}', - outputs: "{}", - lastUpdate: "2020-07-30T13:23:26.824Z", - endpoint: - "http://localhost:4000/hiring/b4096227-2c8a-463f-a7a9-776027f7123422/HRInterview/5fe852de-8d00-4197-9936-3842c648fe123422", - }, - ], -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/mutationRest.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/mutationRest.js deleted file mode 100644 index c77a57dbde7..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/mutationRest.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = restData = { - management: { - process: [ - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf863", - skip: "Internal server error", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf864", - skip: "success", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf865", - skip: "failed", - retrigger: "failed", - aborted: "Internal server error", - }, - { - processInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - skip: "success", - retrigger: "Authentication failed", - aborted: "Authorization failed", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf867", - skip: "failed", - retrigger: "failed", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf868", - skip: "success", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - skip: "success", - retrigger: "Authentication failed", - aborted: "success", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0bccddee", - skip: "failed", - retrigger: "success", - aborted: "success", - }, - { - processInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - { - processInstanceId: "tEE12-fo54-l665-mp112-akou112345566", - skip: "Authentication failed", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "RZ11-tu77-hj321-bnfhe1-xdr2134", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b1", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b2", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - ], - }, -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/openAPI/openapi.json b/packages/serverless-workflow-dev-ui-webapp/server/MockData/openAPI/openapi.json deleted file mode 100644 index 6b2023ec3f6..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/openAPI/openapi.json +++ /dev/null @@ -1,5106 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "process-usertasks-timer-quarkus-with-console API", - "version": "2.0.0-SNAPSHOT" - }, - "paths": { - "/dataindex/forms/count": { - "get": { - "tags": ["Data Index Service"], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/dataindex/jobs/count": { - "get": { - "tags": ["Data Index Service"], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/dataindex/processInstances/count": { - "get": { - "tags": ["Data Index Service"], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/dataindex/tasks/count": { - "get": { - "tags": ["Data Index Service"], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/forms/count": { - "get": { - "tags": ["Forms Service"], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/forms/list": { - "get": { - "tags": ["Forms Service"], - "parameters": [ - { - "name": "names", - "in": "query", - "schema": { - "$ref": "#/components/schemas/FormFilter" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/forms/{formName}": { - "get": { - "tags": ["Forms Service"], - "parameters": [ - { - "name": "formName", - "in": "path", - "required": true, - "schema": { - "pattern": "\\S+", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - }, - "post": { - "tags": ["Forms Service"], - "parameters": [ - { - "name": "formName", - "in": "path", - "required": true, - "schema": { - "pattern": "\\S+", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FormContent" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "businessKey", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelInput" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/HRInterview/schema": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/ITInterview/schema": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/Task/schema": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/schema": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - - "/formError/schema": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - - "/formError": { - "get": { - "tags": ["Hiring Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "businessKey", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelInput" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - - "/hiring/{id}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModel" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_13_TaskModel" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "complete", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "abort", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/attachments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/attachments/{attachmentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/comments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/comments/{commentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/phases/{phase}": { - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "phase", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/HRInterview/{taskId}/schema": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_12_TaskModel" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "complete", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "abort", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/attachments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/attachments/{attachmentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/comments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/comments/{commentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/phases/{phase}": { - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "phase", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/ITInterview/{taskId}/schema": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/{id}/Task/{taskId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_2_TaskModel" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "complete", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "abort", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/Task/{taskId}/attachments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/Task/{taskId}/attachments/{attachmentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/Task/{taskId}/comments": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/Task/{taskId}/comments/{commentId}": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "put": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "delete": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/hiring/{id}/Task/{taskId}/phases/{phase}": { - "post": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "phase", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HiringModelOutput" - } - } - } - } - } - } - }, - "/hiring/{id}/Task/{taskId}/schema": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/hiring/{id}/tasks": { - "get": { - "tags": ["Hiring Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaskModel" - } - } - } - } - } - } - } - }, - "/management/jobs/{processId}/instances/{processInstanceId}/timers/{timerId}": { - "post": { - "tags": ["Callback Jobs Service Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "timerId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "schema": { - "format": "int32", - "default": "0", - "type": "integer" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}": { - "delete": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/error": { - "get": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/nodeInstances": { - "get": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/nodeInstances/{nodeInstanceId}": { - "post": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "nodeInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - }, - "delete": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "nodeInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/nodes/{nodeId}": { - "post": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "nodeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/retrigger": { - "post": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/instances/{processInstanceId}/skip": { - "post": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/nodes": { - "get": { - "tags": ["Process Instance Management Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/onboarding": { - "get": { - "tags": ["Onboarding Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - } - } - }, - "/onboarding/Task/schema": { - "get": { - "tags": ["Onboarding Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/onboarding/schema": { - "get": { - "tags": ["Onboarding Resource"], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/onboarding/{id}": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - }, - "put": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModel" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - } - }, - "/onboarding/{id}/Task/{taskId}": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Onboarding_1_TaskModel" - } - } - } - } - } - }, - "put": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - } - } - } - } - } - }, - "post": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "complete", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "phase", - "in": "query", - "schema": { - "default": "abort", - "type": "string" - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/attachments": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/attachments/{attachmentId}": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "put": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentInfo" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - } - } - }, - "delete": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "attachmentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/comments": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - } - }, - "post": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/comments/{commentId}": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "put": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Comment" - } - } - } - } - } - }, - "delete": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "commentId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/phases/{phase}": { - "post": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "phase", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OnboardingModelOutput" - } - } - } - } - } - } - }, - "/onboarding/{id}/Task/{taskId}/schema": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "taskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": {} - } - } - } - } - } - } - }, - "/onboarding/{id}/tasks": { - "get": { - "tags": ["Onboarding Resource"], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaskModel" - } - } - } - } - } - } - } - }, - "/svg/processes/{processId}": { - "get": { - "tags": ["Process Svg Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/svg/processes/{processId}/instances/{processInstanceId}": { - "get": { - "tags": ["Process Svg Resource"], - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - } - }, - "components": { - "schemas": { - "Attachment": { - "type": "object", - "properties": { - "id": { - "type": "object" - }, - "content": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "format": "date", - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "AttachmentInfo": { - "type": "object", - "properties": { - "uri": { - "format": "uri", - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "Candidate": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "email": { - "type": "string" - }, - "salary": { - "format": "int32", - "type": "integer" - }, - "skills": { - "type": "string" - } - } - }, - "Comment": { - "type": "object", - "properties": { - "id": { - "type": "object" - }, - "content": { - "type": "string" - }, - "updatedAt": { - "format": "date", - "type": "string" - }, - "updatedBy": { - "type": "string" - } - } - }, - "FormConfiguration": { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "resources": { - "$ref": "#/components/schemas/FormResources" - } - } - }, - "FormContent": { - "type": "object", - "properties": { - "source": { - "type": "string" - }, - "configuration": { - "$ref": "#/components/schemas/FormConfiguration" - } - } - }, - "FormFilter": { - "type": "object", - "properties": { - "names": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "FormResources": { - "type": "object", - "properties": { - "scripts": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "styles": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "HiringModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "candidate": { - "$ref": "#/components/schemas/Candidate" - }, - "it_approval": { - "type": "boolean" - }, - "hr_approval": { - "type": "boolean" - } - } - }, - "HiringModelInput": { - "type": "object", - "properties": { - "candidate": { - "$ref": "#/components/schemas/Candidate" - }, - "it_approval": { - "type": "boolean" - }, - "hr_approval": { - "type": "boolean" - } - } - }, - "HiringModelOutput": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "candidate": { - "$ref": "#/components/schemas/Candidate" - }, - "it_approval": { - "type": "boolean" - }, - "hr_approval": { - "type": "boolean" - } - } - }, - "Hiring_12_TaskInput": { - "type": "object", - "properties": { - "candidate": { - "$ref": "#/components/schemas/Candidate" - } - } - }, - "Hiring_12_TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "$ref": "#/components/schemas/Hiring_12_TaskInput" - }, - "results": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - }, - "params": { - "$ref": "#/components/schemas/Hiring_12_TaskOutput" - } - } - }, - "Hiring_12_TaskOutput": { - "type": "object", - "properties": { - "approve": { - "type": "boolean" - } - } - }, - "Hiring_13_TaskInput": { - "type": "object", - "properties": { - "candidate": { - "$ref": "#/components/schemas/Candidate" - } - } - }, - "Hiring_13_TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "$ref": "#/components/schemas/Hiring_13_TaskInput" - }, - "results": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - }, - "params": { - "$ref": "#/components/schemas/Hiring_13_TaskOutput" - } - } - }, - "Hiring_13_TaskOutput": { - "type": "object", - "properties": { - "approve": { - "type": "boolean" - } - } - }, - "Hiring_2_TaskInput": { - "type": "object", - "properties": { - "candidate": { - "$ref": "#/components/schemas/Candidate" - }, - "hrApproval": { - "type": "boolean" - }, - "itApproval": { - "type": "boolean" - } - } - }, - "Hiring_2_TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "$ref": "#/components/schemas/Hiring_2_TaskInput" - }, - "results": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - }, - "params": { - "$ref": "#/components/schemas/Hiring_2_TaskOutput" - } - } - }, - "Hiring_2_TaskOutput": { - "type": "object" - }, - "OnboardingModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "candidate": { - "$ref": "#/components/schemas/Candidate" - } - } - }, - "OnboardingModelOutput": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "candidate": { - "$ref": "#/components/schemas/Candidate" - } - } - }, - "Onboarding_1_TaskInput": { - "type": "object", - "properties": { - "candidate": { - "$ref": "#/components/schemas/Candidate" - } - } - }, - "Onboarding_1_TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "$ref": "#/components/schemas/Onboarding_1_TaskInput" - }, - "results": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - }, - "params": { - "$ref": "#/components/schemas/Onboarding_1_TaskOutput" - } - } - }, - "Onboarding_1_TaskOutput": { - "type": "object" - }, - "TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "type": "object" - }, - "results": { - "type": "object" - } - } - } - } - } -} diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ApplyForVisa.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ApplyForVisa.js deleted file mode 100644 index 60d3dd8ac15..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ApplyForVisa.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = ApplyForVisaForm = { - type: "object", - properties: { - trip: { - type: "object", - properties: { - city: { - type: "string", - }, - country: { - type: "string", - }, - begin: { - type: "string", - format: "date-time", - }, - end: { - type: "string", - format: "date-time", - }, - visaRequired: { - type: "boolean", - }, - }, - required: ["city"], - }, - traveller: { - type: "object", - properties: { - firstName: { type: "string" }, - lastName: { type: "string" }, - email: { type: "string", format: "email" }, - nationality: { type: "string" }, - address: { - type: "object", - properties: { - street: { - type: "string", - }, - city: { - type: "string", - }, - zipCode: { - type: "string", - }, - country: { - type: "string", - }, - }, - }, - }, - }, - visaApplication: { - type: "object", - properties: { - firstName: { type: "string" }, - lastName: { type: "string" }, - city: { - type: "string", - }, - country: { - type: "string", - }, - duration: { - type: "integer", - }, - passportNumber: { type: "string" }, - nationality: { type: "string" }, - }, - }, - }, -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ConfirmTravel.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ConfirmTravel.js deleted file mode 100644 index 9f2ded970e2..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/ConfirmTravel.js +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = ConfirmTravelForm = { - type: "object", - properties: { - flight: { - type: "object", - properties: { - flightNumber: { - type: "string", - }, - seat: { - type: "string", - }, - gate: { - type: "string", - }, - departure: { - type: "string", - format: "date-time", - }, - arrival: { - type: "string", - format: "date-time", - }, - }, - }, - hotel: { - type: "object", - properties: { - name: { - type: "string", - }, - address: { - type: "object", - properties: { - street: { - type: "string", - }, - city: { - type: "string", - }, - zipCode: { - type: "string", - }, - country: { - type: "string", - }, - }, - }, - phone: { - type: "string", - }, - bookingNumber: { - type: "string", - }, - room: { - type: "string", - }, - }, - }, - }, -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/rest.js b/packages/serverless-workflow-dev-ui-webapp/server/MockData/rest.js deleted file mode 100644 index 986891276b0..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/rest.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = restData = { - management: { - process: [ - { - processId: "flightBooking", - instances: [ - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf863", - skip: "Internal server error", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf864", - skip: "success", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf865", - skip: "failed", - retrigger: "failed", - aborted: "Internal server error", - }, - ], - }, - { - processId: "travels", - instances: [ - { - processInstanceId: "e4448857-fa0c-403b-ad69-f0a353458b9d", - skip: "success", - retrigger: "Authentication failed", - aborted: "Authorization failed", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf867", - skip: "failed", - retrigger: "failed", - aborted: "Internal server error", - }, - { - processInstanceId: "a23e6c20-02c2-4c2b-8c5c-e988a0adf868", - skip: "success", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - skip: "success", - retrigger: "Authentication failed", - aborted: "success", - }, - { - processInstanceId: "8035b580-6ae4-4aa8-9ec0-e18e19809e0bccddee", - skip: "failed", - retrigger: "success", - aborted: "success", - }, - { - processInstanceId: "538f9feb-5a14-4096-b791-2055b38da7c6", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - { - processInstanceId: "tEE12-fo54-l665-mp112-akou112345566", - skip: "Authentication failed", - retrigger: "success", - aborted: "Internal server error", - }, - { - processInstanceId: "RZ11-tu77-hj321-bnfhe1-xdr2134", - skip: "success", - retrigger: "Authentication failed", - aborted: "Internal server error", - }, - ], - }, - ], - }, -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/config/index.js b/packages/serverless-workflow-dev-ui-webapp/server/config/index.js deleted file mode 100644 index b5beb65227d..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/config/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const commonConfig = { - env: process.env.NODE_ENV || "development", - port: parseInt(process.env.PORT, 10) || 4000, - corsDomain: process.env.CORS_DOMAIN || "*", -}; - -module.exports = commonConfig; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/server.js b/packages/serverless-workflow-dev-ui-webapp/server/server.js deleted file mode 100644 index 9ab93e429ca..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/server.js +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// HTTP SERVER -const express = require("express"); -const swaggerUi = require("swagger-ui-express"); -const swaggerApiDoc = require("./MockData/openAPI/openapi.json"); -var cors = require("cors"); -const app = express(); -const { ApolloServer, gql } = require("apollo-server-express"); -var bodyParser = require("body-parser"); -// GraphQL - Apollo -const { GraphQLScalarType } = require("graphql"); -const uuidv1 = require("uuid"); -const _ = require("lodash"); -// Config -const config = require("./config"); - -//Mock data -const data = require("./MockData/graphql"); -const controller = require("./MockData/controllers"); -const typeDefs = require("./MockData/types"); -const mutationRestData = require("./MockData/mutationRest"); - -const swaggerOptions = { - swaggerOptions: { - url: "/q/openapi.json", - }, -}; - -function setPort(port = 4000) { - app.set("port", parseInt(port, 10)); -} - -function listen() { - const port = app.get("port") || config.port; - app.listen(port, () => { - console.log(`The server is running and listening at http://localhost:${port}`); - }); -} -// parse application/x-www-form-urlencoded -app.use(bodyParser.urlencoded({ extended: false })); - -// parse application/json -app.use(bodyParser.json()); -app.use( - cors({ - origin: config.corsDomain, // Be sure to switch to your production domain - optionsSuccessStatus: 200, - }) -); -app.get("/q/openapi.json", (req, res) => res.json(swaggerApiDoc)); -app.use("/docs", swaggerUi.serveFiles(null, swaggerOptions), swaggerUi.setup(null, swaggerOptions)); - -//Rest Api's -// http://localhost:4000/management/processes/{processId}/instances/{processInstanceId}/error - -app.post("/", controller.triggerCloudEvent); -app.put("/", controller.triggerCloudEvent); - -app.post("/management/processes/:processId/instances/:processInstanceId/error", controller.showError); -app.post("/management/processes/:processId/instances/:processInstanceId/skip", controller.callSkip); -app.post("/management/processes/:processId/instances/:processInstanceId/retrigger", controller.callRetrigger); -app.delete("/management/processes/:processId/instances/:processInstanceId", controller.callAbort); -app.post( - "/management/processes/:processId/instances/:processInstanceId/nodeInstances/:nodeInstanceId", - controller.callNodeRetrigger -); -app.delete( - "/management/processes/:processId/instances/:processInstanceId/nodeInstances/:nodeInstanceId", - controller.callNodeCancel -); -app.patch("/jobs/:id", controller.handleJobReschedule); -app.post("/management/processes/:processId/instances/:processInstanceId/nodes/:nodeId", controller.callNodeTrigger); -app.get("/management/processes/:processId/nodes", controller.getTriggerableNodes); -app.delete("/jobs/:jobId", controller.callJobCancel); -app.get("/svg/processes/:processId/instances/:id", controller.dispatchSVG); - -app.post("/:processId/:processInstanceId/:taskName/:taskId", controller.callCompleteTask); - -app.get("/:processId/:processInstanceId/:taskName/:taskId/schema", controller.getTaskForm); - -app.get("/:processId/:taskName/schema", controller.getTaskDefinitionForm); - -app.get("/forms/list", controller.getForms); -app.get("/customDashboard/list", controller.getCustomDashboards); -app.get("/customDashboard/:name", controller.getCustomDashboardContent); -app.get("/forms/:formName", controller.getFormContent); -app.post("/forms/:formName", controller.saveFormContent); - -app.post("/hiring", controller.startProcessInstance); -app.get("/:processName/schema", controller.getProcessFormSchema); - -function timeout(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -function paginatedResult(arr, offset, limit) { - let paginatedArray = arr.slice(offset, offset + limit); - console.log("offset : ", offset); - console.log("limit : ", limit); - if (offset > arr.length && paginatedArray.length === 0) { - let prevData = arr.slice(offset - limit, limit); - return prevData; - } - return paginatedArray; -} - -function setProcessInstanceState(processInstanceId, state) { - const processInstance = data.ProcessInstanceData.filter((data) => data.id === processInstanceId); - processInstance[0].state = state; -} - -const processSvg = [ - "8035b580-6ae4-4aa8-9ec0-e18e19809e0b", - "a1e139d5-4e77-48c9-84ae-34578e904e5a", - "8035b580-6ae4-4aa8-9ec0-e18e19809e0blmnop", - "2d962eef-45b8-48a9-ad4e-9cde0ad6af88", - "c54ca5b0-b975-46e2-a9a0-6a86bf7ac21e", -]; -const fs = require("fs"); - -//init svg -data.ProcessInstanceData.forEach((datum) => { - if (processSvg.includes(datum.id)) { - if (datum.processId === "travels") { - console.log("travels"); - datum.diagram = fs.readFileSync(__dirname + "/static/travels.svg", "utf8"); - } else if (datum.processId === "flightBooking") { - datum.diagram = fs.readFileSync(__dirname + "/static/flightBooking.svg"); - } else if (datum.processId === "hotelBooking") { - datum.diagram = fs.readFileSync(__dirname + "/static/hotelBooking.svg"); - } - } else { - datum.diagram = null; - } - if (datum.processId !== null || datum.processId !== undefined) { - datum.nodeDefinitions = [ - { - nodeDefinitionId: "_BDA56801-1155-4AF2-94D4-7DAADED2E3C0", - name: "Send visa application", - id: 1, - type: "ActionNode", - uniqueId: "1", - }, - { - nodeDefinitionId: "_175DC79D-C2F1-4B28-BE2D-B583DFABF70D", - name: "Book", - id: 2, - type: "Split", - uniqueId: "2", - }, - { - nodeDefinitionId: "_E611283E-30B0-46B9-8305-768A002C7518", - name: "visasrejected", - id: 3, - type: "EventNode", - uniqueId: "3", - }, - ]; - } else { - datum.nodeDefinition = null; - } -}); - -// Provide resolver functions for your schema fields -const resolvers = { - Mutation: { - ProcessInstanceRetry: async (parent, args) => { - const successRetryInstances = ["8035b580-6ae4-4aa8-9ec0-e18e19809e0b2", "8035b580-6ae4-4aa8-9ec0-e18e19809e0b3"]; - const { process } = mutationRestData.management; - const processInstance = process.filter((data) => { - return data.processInstanceId === args["id"]; - }); - if (successRetryInstances.includes(processInstance[0].id)) { - setProcessInstanceState(processInstance[0].processInstanceId, "ACTIVE"); - processInstance[0].state = "ACTIVE"; - } - return processInstance[0].retrigger; - }, - ProcessInstanceSkip: async (parent, args) => { - const { process } = mutationRestData.management; - const processInstance = process.filter((data) => { - return data.processInstanceId === args["id"]; - }); - - return processInstance[0].skip; - }, - - ProcessInstanceAbort: async (parent, args) => { - const failedAbortInstances = ["8035b580-6ae4-4aa8-9ec0-e18e19809e0b2", "8035b580-6ae4-4aa8-9ec0-e18e19809e0b3"]; - const { process } = mutationRestData.management; - const processInstance = process.filter((data) => { - return data.processInstanceId === args["id"]; - }); - if (failedAbortInstances.includes(processInstance[0].id)) { - return "process not found"; - } else { - setProcessInstanceState(processInstance[0].processInstanceId, "ABORTED"); - processInstance[0].state = "ABORTED"; - return processInstance[0].abort; - } - }, - - ProcessInstanceUpdateVariables: async (parent, args) => { - const processInstance = data.ProcessInstanceData.filter((datum) => { - return datum.id === args["id"]; - }); - processInstance[0].variables = args["variables"]; - return processInstance[0].variables; - }, - - NodeInstanceTrigger: async (parent, args) => { - const nodeData = data.ProcessInstanceData.filter((data) => { - return data.id === args["id"]; - }); - const nodeObject = nodeData[0].nodes.filter((node, index) => { - if (index !== nodeData[0].nodes.length - 1) { - return node.id === args["nodeId"]; - } - }); - if (nodeObject.length === 0) { - throw new Error("node not found"); - } else { - const node = { ...nodeObject[0] }; - node.enter = new Date().toISOString(); - node.exit = null; - nodeData[0].nodes.unshift(node); - return nodeData[0]; - } - }, - - NodeInstanceCancel: async (parent, args) => { - const nodeData = data.ProcessInstanceData.filter((data) => { - return data.id === args["id"]; - }); - const nodeObject = nodeData[0].nodes.filter((node) => node.id === args["nodeInstanceId"]); - if (nodeObject[0].name.includes("not found")) { - throw new Error("node not found"); - } else { - nodeObject[0].exit = new Date().toISOString(); - return nodeObject[0]; - } - }, - - NodeInstanceRetrigger: async (parent, args) => { - const nodeData = data.ProcessInstanceData.filter((data) => { - return data.id === args["id"]; - }); - const nodeObject = nodeData[0].nodes.filter((node) => node.id === args["nodeInstanceId"]); - if (nodeObject[0].name.includes("not found")) { - throw new Error("node not found"); - } else { - nodeObject[0].exit = new Date().toISOString(); - return nodeObject[0]; - } - }, - - JobCancel: async (parent, args) => { - const mockFailedJobs = ["dad3aa88-5c1e-4858-a919-6123c675a0fa_0"]; - const jobData = data.JobsData.filter((job) => job.id === args["id"]); - if (mockFailedJobs.includes(jobData[0].id) || jobData.length === 0) { - return "job not found"; - } else { - jobData[0].status = "CANCELED"; - jobData[0].lastUpdate = new Date().toISOString(); - return jobData[0]; - } - }, - - JobReschedule: async (parent, args) => { - const data = data.JobsData.find((data) => { - return data.id === args["id"]; - }); - if ( - args["id"] !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0" && - args["data"].repeatInterval && - args["data"].repeatLimit - ) { - data.expirationTime = args["data"].expirationTime; - data.repeatInterval = args["data"].repeatInterval; - data.repeatLimit = args["data"].repeatLimit; - } else { - if (args["id"] !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0") { - data.expirationTime = args["data"].expirationTime; - } - } - if (args["id"] !== "eff4ee-11qw23-6675-pokau97-qwedjut45a0fa_0") { - return data; - } else { - return "job not rescheduled"; - } - }, - }, - - Query: { - ProcessInstances: async (parent, args) => { - let result = data.ProcessInstanceData.filter((datum) => { - console.log("args", args["where"]); - if (args["where"].id && args["where"].id.equal) { - return datum.id == args["where"].id.equal; - } else if (args["where"].rootProcessInstanceId && args["where"].rootProcessInstanceId.equal) { - return datum.rootProcessInstanceId == args["where"].rootProcessInstanceId.equal; - } else if (args["where"].parentProcessInstanceId && args["where"].parentProcessInstanceId.equal) { - return datum.parentProcessInstanceId == args["where"].parentProcessInstanceId.equal; - } else if (args["where"].parentProcessInstanceId.isNull) { - if (args["where"].or === undefined || (args["where"].or && args["where"].or.length === 0)) { - return datum.parentProcessInstanceId == null && args["where"].state.in.includes(datum.state); - } else { - if ( - datum.parentProcessInstanceId === null && - args["where"].state.in.includes(datum.state) && - datum.businessKey !== null - ) { - for (let i = 0; i < args["where"].or.length; i++) { - if ( - datum.businessKey && - datum.businessKey.toLowerCase().indexOf(args["where"].or[i].businessKey.like.toLowerCase()) > -1 - ) { - return true; - } - } - return false; - } - } - } else { - return false; - } - }); - if (args["orderBy"]) { - console.log("orderBy args: ", args["orderBy"]); - result = _.orderBy( - result, - _.keys(args["orderBy"]).map((key) => key), - _.values(args["orderBy"]).map((value) => value.toLowerCase()) - ); - } - await timeout(2000); - if (args["pagination"]) { - result = paginatedResult(result, args["pagination"].offset, args["pagination"].limit); - } - console.log("result length: " + result.length); - return result; - }, - Jobs: async (parent, args) => { - if (Object.keys(args).length > 0) { - const result = data.JobsData.filter((jobData) => { - console.log("Job data args->", args["where"].processInstanceId); - if (args["where"].processInstanceId && args["where"].processInstanceId.equal) { - return jobData.processInstanceId == args["where"].processInstanceId.equal; - } else if (args["where"].status && args["where"].status.in) { - return args["where"].status.in.includes(jobData.status); - } - }); - console.log("orderby", args["orderBy"]); - await timeout(2000); - if (args["orderBy"] && Object.values(args["orderBy"])[0] === "ASC") { - const orderArg = Object.keys(args["orderBy"])[0]; - result.sort((a, b) => { - if (orderArg === "lastUpdate" || orderArg === "expirationTime") { - return new Date(a[orderArg]) - new Date(b[orderArg]); - } else if (orderArg === "status") { - return a[orderArg].localeCompare(b[orderArg]); - } else { - return a[orderArg] - b[orderArg]; - } - }); - } else if (args["orderBy"] && Object.values(args["orderBy"])[0] === "DESC") { - const orderArg = Object.keys(args["orderBy"])[0]; - result.sort((a, b) => { - if (orderArg === "lastUpdate" || orderArg === "expirationTime") { - return new Date(b[orderArg]) - new Date(a[orderArg]); - } else if (orderArg === "status") { - return b[orderArg].localeCompare(a[orderArg]); - } else { - return b[orderArg] - a[orderArg]; - } - }); - } - if (args["pagination"]) { - return paginatedResult(result, args["pagination"].offset, args["pagination"].limit); - } - - return result; - } - }, - }, - - DateTime: new GraphQLScalarType({ - name: "DateTime", - description: "DateTime custom scalar type", - parseValue(value) { - return value; - }, - serialize(value) { - return value; - }, - parseLiteral(ast) { - return null; - }, - }), -}; - -const mocks = { - DateTime: () => new Date().toUTCString(), - Travels: () => ({ - id: () => uuidv1(), - }), - VisaApplications: () => ({ - id: () => uuidv1(), - }), -}; - -const server = new ApolloServer({ - typeDefs, - resolvers, - mocks, - mockEntireSchema: false, - introspection: true, - playground: true, -}); - -server.start().then(() => { - server.applyMiddleware({ app }); -}); - -module.exports = { - getApp: () => app, - setPort, - listen, -}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/static/flightBooking.svg b/packages/serverless-workflow-dev-ui-webapp/server/static/flightBooking.svg deleted file mode 100644 index 1659bf4f4dc..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/static/flightBooking.svg +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Flight Booked - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Book - - - flight - - - - - - - - - - - - - - - - - - - - - - StartProcess - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/serverless-workflow-dev-ui-webapp/server/static/hotelBooking.svg b/packages/serverless-workflow-dev-ui-webapp/server/static/hotelBooking.svg deleted file mode 100644 index 39967c5d95e..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/static/hotelBooking.svg +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Hotel Booked - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Book - - - hotel - - - - - - - - - - - - - - - - - - - - - - StartProcess - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/serverless-workflow-dev-ui-webapp/server/static/travels.svg b/packages/serverless-workflow-dev-ui-webapp/server/static/travels.svg deleted file mode 100644 index 17024e1267a..00000000000 --- a/packages/serverless-workflow-dev-ui-webapp/server/static/travels.svg +++ /dev/null @@ -1,1744 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Book Hotel - - - - - - - - - - - - - - - - - - - - - - StartProcess - - - - - - - - - - - - - - - - - - - - - - - - - - - - - is visa required - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - wait for visa decision - - - - - - - - - - - - - - - - - - - - - - Travel Confirmed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Visa Rejected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Book Flight - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Email - - - rejection - - - notice - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Confirm - - - travel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Apply - - - for visa - - - - - - - - - - - - - - - - - - - - - - - Visa - - - check - - - - - - - - - - - - - - - - - - - - - - - - - - - - - visasapproved - - - - - - - - - - - - - - - - - - - - - - - - - - - - - visasrejected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Book - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Send visa application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no need for visa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - visa - - - required - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js index 0fd0bc161f5..8f66faab9e4 100644 --- a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js +++ b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js @@ -59,7 +59,7 @@ module.exports = async (env) => // redirect all POST request to test the local cluster environment return ( req.method === "POST" || - ["/svg", "/forms", "/customDashboard", "/q/openapi.json"].some((path) => pathname === path) + ["/svg", "/forms", "/customDashboard", "/q/openapi.json"].some((path) => pathname.startsWith(path)) ); }, target: "http://localhost:4000", diff --git a/packages/sonataflow-deployment-webapp/package.json b/packages/sonataflow-deployment-webapp/package.json index 2feddb2c641..8a0223e7f51 100644 --- a/packages/sonataflow-deployment-webapp/package.json +++ b/packages/sonataflow-deployment-webapp/package.json @@ -18,7 +18,9 @@ "build:dev": "rimraf dist && webpack --env dev", "build:prod": "pnpm lint && pnpm test && rimraf dist && webpack", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", - "start": "webpack serve --host 0.0.0.0 --env dev", + "start": "concurrently 'pnpm start:dev-webapp' 'pnpm start:sonataflow-dev-app'", + "start:dev-webapp": "webpack serve --host 0.0.0.0 --env dev", + "start:sonataflow-dev-app": "npm --prefix ./node_modules/@kie-tools/sonataflow-dev-app run start", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, "dependencies": { @@ -61,12 +63,14 @@ "@kie-tools/eslint": "workspace:*", "@kie-tools/jest-base": "workspace:*", "@kie-tools/root-env": "workspace:*", + "@kie-tools/sonataflow-dev-app": "workspace:*", "@kie-tools/tsconfig": "workspace:*", "@types/jest": "^29.5.12", "@types/react": "^17.0.6", "@types/react-dom": "^17.0.5", "@types/react-router": "^5.1.20", "@types/react-router-dom": "^5.3.3", + "concurrently": "^8.2.2", "copy-webpack-plugin": "^11.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", diff --git a/packages/sonataflow-deployment-webapp/static/q/openapi.json b/packages/sonataflow-deployment-webapp/static/q/openapi.json deleted file mode 100644 index 8420da94f96..00000000000 --- a/packages/sonataflow-deployment-webapp/static/q/openapi.json +++ /dev/null @@ -1,1248 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "serverless-logic-web-tools-swf-deployment-quarkus-app API", - "version": "0.0.0" - }, - "tags": [ - { - "name": "service" - } - ], - "paths": { - "/callback": { - "get": { - "tags": ["Callback Resource Test"], - "operationId": "getCallbackTest", - "responses": { - "200": { - "description": "OK", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - } - } - }, - "post": { - "tags": ["Callback Resource Test"], - "operationId": "postCallbackTest", - "parameters": [ - { - "name": "limit", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - } - } - } - }, - "/customDashboard/count": { - "get": { - "tags": ["Custom Dashboard Service"], - "operationId": "getCustomDashboardFilesCount", - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/customDashboard/list": { - "get": { - "tags": ["Custom Dashboard Service"], - "operationId": "getCustomDashboardFiles", - "parameters": [ - { - "name": "names", - "in": "query", - "schema": { - "$ref": "#/components/schemas/CustomDashboardFilter" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/customDashboard/{name}": { - "get": { - "tags": ["Custom Dashboard Service"], - "operationId": "getCustomDashboardFileContent", - "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "schema": { - "pattern": "\\S+", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/graphql": { - "get": { - "operationId": "reactiveGraphQLHandlerGet", - "responses": { - "204": { - "description": "No Content" - } - } - }, - "post": { - "operationId": "reactiveGraphQLHandlerPost", - "responses": { - "201": { - "description": "Created" - } - } - } - }, - "/jobs": { - "post": { - "tags": ["Job Resource"], - "operationId": "createJob", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduledJob" - } - } - } - } - } - } - }, - "/jobs/{id}": { - "get": { - "tags": ["Job Resource"], - "operationId": "getJob", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduledJob" - } - } - } - } - } - }, - "delete": { - "tags": ["Job Resource"], - "operationId": "deleteJob", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduledJob" - } - } - } - } - } - }, - "patch": { - "tags": ["Job Resource"], - "operationId": "patchJob", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduledJob" - } - } - } - } - } - } - }, - "/management/jobs/{processId}/instances/{processInstanceId}/timers/{timerId}": { - "post": { - "tags": ["Callback Jobs Service Resource"], - "operationId": "triggerTimer", - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "processInstanceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "timerId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "schema": { - "format": "int32", - "default": "0", - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/sources": { - "get": { - "tags": ["Source Files Resource"], - "operationId": "getSourceFileByUri", - "parameters": [ - { - "name": "uri", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/source": { - "get": { - "tags": ["Source Files Resource"], - "operationId": "getSourceFileByProcessId", - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/management/processes/{processId}/sources": { - "get": { - "tags": ["Source Files Resource"], - "operationId": "getSourceFilesByProcessId", - "parameters": [ - { - "name": "processId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SourceFile" - } - } - } - } - } - } - } - }, - "/management/shutdown": { - "post": { - "tags": ["Job Service Management Resource"], - "operationId": "shutdownHook", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": {} - } - } - } - } - }, - "/messaging/topics": { - "get": { - "tags": ["Quarkus Topics Information Resource"], - "operationId": "getTopics", - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/service": { - "get": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "getResources_service", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonNodeModelOutput" - } - } - } - } - } - } - }, - "post": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "createResource_service", - "parameters": [ - { - "name": "businessKey", - "in": "query", - "schema": { - "default": "", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "title": "service_input", - "required": ["name"], - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/service/schema": { - "get": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "getResourceSchema_service", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "object" - } - } - } - } - } - } - } - }, - "/service/{id}": { - "get": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "getResource_service", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNodeModelOutput" - } - } - } - } - } - }, - "put": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "updateModel_service", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "title": "service_input", - "required": ["name"], - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNodeModelOutput" - } - } - } - } - } - }, - "delete": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "deleteResource_service", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNodeModelOutput" - } - } - } - } - } - }, - "patch": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "updateModelPartial_service", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "title": "service_input", - "required": ["name"], - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNodeModelOutput" - } - } - } - } - } - } - }, - "/service/{id}/tasks": { - "get": { - "tags": ["service"], - "summary": "service", - "description": "", - "operationId": "getTasks_service", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "group", - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "user", - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaskModel" - } - } - } - } - } - } - } - }, - "/upload": { - "post": { - "tags": ["Hot Reload Resource"], - "operationId": "handleUpload", - "responses": { - "200": { - "description": "OK" - } - } - } - }, - "/v2/jobs": { - "post": { - "tags": ["Job Resource V 2"], - "operationId": "createJobV2", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobV2" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobV2" - } - } - } - } - } - } - }, - "/v2/jobs/{id}": { - "get": { - "tags": ["Job Resource V 2"], - "operationId": "getJobV2", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobV2" - } - } - } - } - } - }, - "delete": { - "tags": ["Job Resource V 2"], - "operationId": "deleteJobV2", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobV2" - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "CronSchedule": { - "description": "Cron schedules establishes that a job must be executed with a periodicity based on a unix like crontab expression.", - "required": ["expression"], - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/Schedule" - } - ], - "properties": { - "expression": { - "description": "Cron expression for the job execution, for more information see.", - "type": "string" - }, - "timeZone": { - "description": "Time zone for the cron programming, for example \"Europe/Madrid\". For more information see.", - "type": "string" - } - } - }, - "CustomDashboardFilter": { - "type": "object", - "properties": { - "names": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "HttpRecipient": { - "description": "Recipient definition that executes a http request on a given url and sends the configured \"payload\" as the body.", - "required": ["url", "method"], - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/Recipient" - } - ], - "properties": { - "url": { - "description": "Url of the recipient that will receive the request.", - "type": "string" - }, - "method": { - "description": "Http method to use for the request.", - "default": "POST", - "enum": ["POST", "GET", "HEAD", "PUT", "DELETE", "PATCH", "OPTIONS"], - "type": "string" - }, - "headers": { - "description": "Http headers to send with the request.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "queryParams": { - "description": "Http query parameters to send with the request.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "payload": { - "$ref": "#/components/schemas/HttpRecipientPayloadData" - } - } - }, - "HttpRecipientBinaryPayloadData": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/HttpRecipientPayloadData" - } - ], - "properties": { - "data": { - "format": "binary", - "type": "string" - } - } - }, - "HttpRecipientJsonPayloadData": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/HttpRecipientPayloadData" - } - ], - "properties": { - "data": { - "$ref": "#/components/schemas/JsonNode" - } - } - }, - "HttpRecipientPayloadData": { - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "binary": "#/components/schemas/HttpRecipientBinaryPayloadData", - "string": "#/components/schemas/HttpRecipientStringPayloadData", - "json": "#/components/schemas/HttpRecipientJsonPayloadData" - } - } - }, - "HttpRecipientStringPayloadData": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/HttpRecipientPayloadData" - } - ], - "properties": { - "data": { - "type": "string" - } - } - }, - "Job": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "expirationTime": { - "$ref": "#/components/schemas/ZonedDateTime" - }, - "priority": { - "format": "int32", - "type": "integer" - }, - "callbackEndpoint": { - "type": "string" - }, - "processInstanceId": { - "type": "string" - }, - "rootProcessInstanceId": { - "type": "string" - }, - "processId": { - "type": "string" - }, - "rootProcessId": { - "type": "string" - }, - "nodeInstanceId": { - "type": "string" - }, - "repeatInterval": { - "format": "int64", - "type": "integer" - }, - "repeatLimit": { - "format": "int32", - "type": "integer" - } - } - }, - "JobExecutionResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "string" - }, - "timestamp": { - "$ref": "#/components/schemas/ZonedDateTime" - }, - "jobId": { - "type": "string" - } - } - }, - "JobStatus": { - "enum": ["ERROR", "EXECUTED", "SCHEDULED", "RETRY", "CANCELED"], - "type": "string" - }, - "JobV2": { - "description": "Defines a job that can be managed by the jobs service.", - "required": ["schedule", "retry", "recipient"], - "type": "object", - "properties": { - "id": { - "description": "The unique identifier of the job in the system, this value is set by the jobs service.", - "type": "string" - }, - "correlationId": { - "description": "Logical user provided identifier of the job in the system.", - "type": "string" - }, - "state": { - "$ref": "#/components/schemas/State" - }, - "schedule": { - "$ref": "#/components/schemas/Schedule" - }, - "retry": { - "$ref": "#/components/schemas/Retry" - }, - "recipient": { - "$ref": "#/components/schemas/Recipient" - }, - "executionTimeout": { - "format": "int64", - "description": "Optional configuration that establishes the time limit for the current Job execution attempt to finish. When this timeout is exceeded the execution attempt is considered as failed, and depending on the Job retry configuration, the execution can be retried or the Job will be marked as ERROR. Every Recipient type has a default timeout configuration that will apply automatically if this value is not set, and a maximum timeout configuration that can not be exceeded by current value.", - "type": "integer" - }, - "executionTimeoutUnit": { - "description": "The unit for the executionTimeout. If the executionTimeout is set and the unit is left empty MILLISECONDS are assumed. If the unit is set and the executionTimeout is left empty this value is ignored.", - "type": "string", - "allOf": [ - { - "$ref": "#/components/schemas/TemporalUnit" - } - ] - } - } - }, - "JsonNode": { - "type": "object" - }, - "JsonNodeModelInput": { - "type": "object", - "properties": { - "workflowdata": { - "type": "object" - } - } - }, - "JsonNodeModelOutput": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "workflowdata": { - "type": "object" - } - } - }, - "OffsetDateTime": { - "format": "date-time", - "type": "string", - "example": "2022-03-10T12:15:50-04:00" - }, - "Recipient": { - "description": "Generic definition for a Recipient, users must provide instances of subclasses of this schema to create a job.", - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "http": "#/components/schemas/HttpRecipient", - "sink": "#/components/schemas/SinkRecipient" - } - } - }, - "Retry": { - "description": "The retry configuration establishes the number of times a failing job execution must be retried before it’s considered as FAILED.", - "type": "object", - "properties": { - "maxRetries": { - "format": "int32", - "description": "Number of retries to execute in case of failures.", - "default": 3, - "type": "integer" - }, - "delay": { - "format": "int64", - "description": "Time delay between the retries.", - "default": 0, - "type": "integer" - }, - "delayUnit": { - "$ref": "#/components/schemas/TemporalUnit" - }, - "maxDuration": { - "format": "int64", - "description": "Maximum amount of time to continue retrying if no successful execution was produced.", - "default": 180000, - "type": "integer" - }, - "durationUnit": { - "$ref": "#/components/schemas/TemporalUnit" - } - } - }, - "Schedule": { - "description": "Generic definition for a Schedule, users must provide instances of subclasses of this schema.", - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "cron": "#/components/schemas/CronSchedule", - "timer": "#/components/schemas/TimerSchedule" - } - } - }, - "ScheduledJob": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "expirationTime": { - "$ref": "#/components/schemas/ZonedDateTime" - }, - "priority": { - "format": "int32", - "type": "integer" - }, - "callbackEndpoint": { - "type": "string" - }, - "processInstanceId": { - "type": "string" - }, - "rootProcessInstanceId": { - "type": "string" - }, - "processId": { - "type": "string" - }, - "rootProcessId": { - "type": "string" - }, - "nodeInstanceId": { - "type": "string" - }, - "repeatInterval": { - "format": "int64", - "type": "integer" - }, - "repeatLimit": { - "format": "int32", - "type": "integer" - }, - "scheduledId": { - "type": "string" - }, - "retries": { - "format": "int32", - "type": "integer" - }, - "status": { - "$ref": "#/components/schemas/JobStatus" - }, - "lastUpdate": { - "$ref": "#/components/schemas/ZonedDateTime" - }, - "executionCounter": { - "format": "int32", - "type": "integer" - }, - "executionResponse": { - "$ref": "#/components/schemas/JobExecutionResponse" - } - } - }, - "SourceFile": { - "type": "object", - "properties": { - "uri": { - "type": "string" - } - } - }, - "State": { - "description": "Available states for a Job.", - "enum": ["SCHEDULED", "RETRY", "EXECUTED", "ERROR", "CANCELED"], - "type": "string" - }, - "TaskModel": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "format": "int32", - "type": "integer" - }, - "phase": { - "type": "string" - }, - "phaseStatus": { - "type": "string" - }, - "parameters": { - "type": "object" - }, - "results": { - "type": "object" - } - } - }, - "TemporalUnit": { - "enum": ["MILLIS", "SECONDS", "MINUTES", "HOURS", "DAYS"], - "type": "string" - }, - "TimerSchedule": { - "description": "Timer schedules establishes that a job must be executed at a given date time and can be repeated a configurable number of times.", - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/Schedule" - } - ], - "properties": { - "startTime": { - "description": "Initial fire time for the job in the ISO-8601 standard.", - "type": "string", - "allOf": [ - { - "$ref": "#/components/schemas/OffsetDateTime" - } - ], - "example": "2023-01-30T12:01:15+01:00" - }, - "repeatCount": { - "format": "int32", - "description": "Number of times that the job execution must be repeated.", - "default": 0, - "type": "integer" - }, - "delay": { - "format": "int64", - "description": "Time delay between executions.", - "default": 0, - "type": "integer" - }, - "delayUnit": { - "$ref": "#/components/schemas/TemporalUnit" - } - } - }, - "ZonedDateTime": { - "format": "date-time", - "type": "string", - "example": "2022-03-10T12:15:50-04:00" - }, - "service_input": { - "title": "service_input", - "required": ["name"], - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } -} diff --git a/packages/sonataflow-deployment-webapp/webpack.config.js b/packages/sonataflow-deployment-webapp/webpack.config.js index 8de0b210ffb..04f5504fcd9 100644 --- a/packages/sonataflow-deployment-webapp/webpack.config.js +++ b/packages/sonataflow-deployment-webapp/webpack.config.js @@ -99,6 +99,14 @@ module.exports = async (env) => client: { overlay: false, }, + proxy: [ + { + context: (path, req) => req.method === "POST" || path === "/q/openapi.json", + target: "http://localhost:4000", + secure: false, + changeOrigin: true, + }, + ], }, resolve: { fallback: { diff --git a/packages/sonataflow-dev-app/README.md b/packages/sonataflow-dev-app/README.md new file mode 100644 index 00000000000..6c734a6da97 --- /dev/null +++ b/packages/sonataflow-dev-app/README.md @@ -0,0 +1,56 @@ + + +# SonataFlow Dev App + +### Description + +The SonataFlow Dev App is intended for development purposes only. It provides mock data for SonataFlow GraphQL and OpenAPI endpoints, allowing local tests for SonataFlow related applications and images. + +### Usage + +### Usage + +To run the development app, use the following command: + +`pnpm start` + +--- + +Apache KIE (incubating) is an effort undergoing incubation at The Apache Software +Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is +required of all newly accepted projects until a further review indicates that +the infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of the +code, it does indicate that the project has yet to be fully endorsed by the ASF. + +Some of the incubating project’s releases may not be fully compliant with ASF +policy. For example, releases may have incomplete or un-reviewed licensing +conditions. What follows is a list of known issues the project is currently +aware of (note that this list, by definition, is likely to be incomplete): + +- Hibernate, an LGPL project, is being used. Hibernate is in the process of + relicensing to ASL v2 +- Some files, particularly test files, and those not supporting comments, may + be missing the ASF Licensing Header + +If you are planning to incorporate this work into your product/project, please +be aware that you will need to conduct a thorough licensing review to determine +the overall implications of including this work. For the current status of this +project through the Apache Incubator visit: +https://incubator.apache.org/projects/kie.html diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/HRInterview.js b/packages/sonataflow-dev-app/env/index.js similarity index 63% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/HRInterview.js rename to packages/sonataflow-dev-app/env/index.js index 7b17e755846..61bc742bd66 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/HRInterview.js +++ b/packages/sonataflow-dev-app/env/index.js @@ -17,21 +17,11 @@ * under the License. */ -module.exports = HRInterview = { - $schema: "https://json-schema.org/draft/2019-09/schema", - type: "object", - properties: { - candidate: { - type: "object", - properties: { - email: { type: "string" }, - name: { type: "string" }, - salary: { type: "integer" }, - skills: { type: "string" }, - }, - input: true, - }, - approve: { type: "boolean", output: true }, +const { varsWithName, composeEnv } = require("@kie-tools-scripts/build-env"); + +module.exports = composeEnv([require("@kie-tools/root-env/env")], { + vars: varsWithName({}), + get env() { + return {}; }, - phases: ["complete", "start", "claim", "release"], -}; +}); diff --git a/packages/sonataflow-dev-app/package.json b/packages/sonataflow-dev-app/package.json new file mode 100644 index 00000000000..6e385562abf --- /dev/null +++ b/packages/sonataflow-dev-app/package.json @@ -0,0 +1,40 @@ +{ + "private": true, + "name": "@kie-tools/sonataflow-dev-app", + "version": "0.0.0", + "license": "Apache-2.0", + "author": "", + "keywords": [], + "homepage": "https://github.com/apache/incubator-kie-tools", + "repository": { + "type": "git", + "url": "https://github.com/apache/incubator-kie-tools.git" + }, + "bugs": { + "url": "https://github.com/apache/incubator-kie-tools/issues" + }, + "main": "index.js", + "scripts": { + "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", + "start": "nodemon ./src/app.js", + "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" + }, + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@kie-tools/eslint": "workspace:*", + "@kie-tools/root-env": "workspace:*", + "apollo-server-express": "^3.13.0", + "babel-jest": "^25.5.1", + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "express": "^4.19.2", + "express-rate-limit": "^7.4.0", + "graphql": "14.3.1", + "jest": "^29.7.0", + "lodash": "^4.17.21", + "nodemon": "^3.1.4", + "swagger-ui-express": "^5.0.0", + "uuid": "^8.3.2" + } +} diff --git a/packages/sonataflow-dev-app/src/MockData/controllers.js b/packages/sonataflow-dev-app/src/MockData/controllers.js new file mode 100644 index 00000000000..86e440fc96e --- /dev/null +++ b/packages/sonataflow-dev-app/src/MockData/controllers.js @@ -0,0 +1,147 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +const path = require("path"); +const fs = require("fs"); +const formData = require("../MockData/forms/formData"); +const customDashboardData = require("../MockData/customDashboard/data"); +const { v4: uuidv4 } = require("uuid"); + +const formsUnableToSave = ["html_hiring_ITInterview", "react_hiring_ITInterview"]; + +/** + * Check if the formName is one of the accepted ones + * + * @param {string} formName + */ +function validateFormName(formName) { + return [ + "html_hiring_HRInterview", + "html_hiring_ITInterview", + "react_hiring_HRInterview", + "react_hiring_ITInterview", + ].includes(formName); +} + +module.exports = controller = { + getCustomDashboards: (req, res) => { + const filterNames = req.query.names.split(";"); + if (filterNames[0].length === 0) { + res.send(customDashboardData); + } else { + const filteredCustomDashboards = []; + filterNames.forEach((name) => { + customDashboardData.forEach((customDashboard) => { + if (customDashboard.name === name) { + filteredCustomDashboards.push(customDashboard); + } + }); + }); + res.send(filteredCustomDashboards); + } + }, + + getCustomDashboardContent: (req, res) => { + const dashboardName = req.params.name; + let content = ""; + if (dashboardName === "age.dash.yaml") { + content = fs.readFileSync(__dirname + "/customDashboard/age.dash.yaml", "utf-8"); + } + if (dashboardName === "products.dash.yaml") { + content = fs.readFileSync(__dirname + "/customDashboard/products.dash.yaml", "utf-8"); + } + res.send(content); + }, + + getForms: (req, res) => { + const formFilterNames = req.query.names.split(";"); + if (formFilterNames[0].length === 0) { + res.send(formData); + } else { + const filteredForms = []; + formFilterNames.forEach((name) => { + formData.forEach((form) => { + if (form.name === name) { + filteredForms.push(form); + } + }); + }); + res.send(filteredForms); + } + }, + + getFormContent: (req, res) => { + console.log(`......Get Custom Form Content: --formName:${req.params.formName}`); + const formName = req.params.formName; + const formInfo = formData.filter((datum) => datum.name === formName); + + if (formInfo.length === 0 || !validateFormName(formName)) { + res.status(500).send("Cannot find form"); + return; + } + let sourceString; + + const configString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.config`), "utf8"); + if (formInfo[0].type.toLowerCase() === "html") { + sourceString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.html`), "utf8"); + } else if (formInfo[0].type.toLowerCase() === "tsx") { + sourceString = fs.readFileSync(path.join(`${__dirname}/forms/examples/${formName}.tsx`), "utf8"); + } + const response = { + formInfo: formInfo[0], + source: sourceString, + configuration: JSON.parse(configString), + }; + + res.send(response); + }, + + saveFormContent: (req, res) => { + console.log(`......Save Form Content: --formName:${req.params.formName}`); + if (formsUnableToSave.includes(req.params.formName)) { + res.status(500).send("Unexpected failure saving form!"); + } else { + res.send("Saved!"); + } + }, + + startProcessInstance: (_req, res) => { + res.send({ + id: uuidv4(), + }); + }, + + triggerCloudEvent: (req, res) => { + console.log( + `......Trigger Cloud Event:: id: ${req.headers["ce-id"]} type: ${req.headers["ce-type"]} source: ${req.headers["ce-source"]}` + ); + + if (req.body.type === "error") { + res.status(500).send("internal server error"); + } + if (req.body.kogitobusinesskey) { + console.log(`Starting Serverless workflow with business key: ${req.body.kogitobusinesskey}`); + return res.status(200).send(encodeURIComponent(req.body.kogitobusinesskey)); + } else if (req.body.kogitoprocrefid) { + console.log(`Serverless Workflow with id ${req.body.kogitoprocrefid} successfully completed`); + return res.status(200).send(encodeURIComponent(req.body.kogitoprocrefid)); + } + + return res.status(200).send("Cloud Event successfully triggered"); + }, +}; diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/age.dash.yaml b/packages/sonataflow-dev-app/src/MockData/customDashboard/age.dash.yaml similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/age.dash.yaml rename to packages/sonataflow-dev-app/src/MockData/customDashboard/age.dash.yaml diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/data.js b/packages/sonataflow-dev-app/src/MockData/customDashboard/data.js similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/data.js rename to packages/sonataflow-dev-app/src/MockData/customDashboard/data.js diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/products.dash.yaml b/packages/sonataflow-dev-app/src/MockData/customDashboard/products.dash.yaml similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/customDashboard/products.dash.yaml rename to packages/sonataflow-dev-app/src/MockData/customDashboard/products.dash.yaml diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_HRInterview.config b/packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_HRInterview.config similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_HRInterview.config rename to packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_HRInterview.config diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_HRInterview.html b/packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_HRInterview.html similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_HRInterview.html rename to packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_HRInterview.html diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_ITInterview.config b/packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_ITInterview.config similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_ITInterview.config rename to packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_ITInterview.config diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_ITInterview.html b/packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_ITInterview.html similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/html_hiring_ITInterview.html rename to packages/sonataflow-dev-app/src/MockData/forms/examples/html_hiring_ITInterview.html diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_HRInterview.config b/packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_HRInterview.config similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_HRInterview.config rename to packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_HRInterview.config diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_HRInterview.tsx b/packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_HRInterview.tsx similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_HRInterview.tsx rename to packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_HRInterview.tsx diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_ITInterview.config b/packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_ITInterview.config similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_ITInterview.config rename to packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_ITInterview.config diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_ITInterview.tsx b/packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_ITInterview.tsx similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/examples/react_hiring_ITInterview.tsx rename to packages/sonataflow-dev-app/src/MockData/forms/examples/react_hiring_ITInterview.tsx diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/formData.js b/packages/sonataflow-dev-app/src/MockData/forms/formData.js similarity index 100% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/formData.js rename to packages/sonataflow-dev-app/src/MockData/forms/formData.js diff --git a/packages/sonataflow-dev-app/src/MockData/graphql.js b/packages/sonataflow-dev-app/src/MockData/graphql.js new file mode 100644 index 00000000000..33f4f6fd014 --- /dev/null +++ b/packages/sonataflow-dev-app/src/MockData/graphql.js @@ -0,0 +1,498 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +module.exports = { + ProcessInstanceData: [ + { + id: "e995b0d2-078a-488f-8346-0176ed8d5033", + processId: "service", + processName: "Hello Service", + businessKey: null, + parentProcessInstanceId: null, + parentProcessInstance: null, + roles: [], + variables: { + workflowdata: { + name: "test", + result: true, + }, + }, + state: "COMPLETED", + start: "2024-05-30T11:09:06.133Z", + lastUpdate: "2024-05-30T11:09:26.859Z", + end: "2024-05-30T11:09:26.858Z", + addons: ["source-files", "cloudevents", "knative-eventing", "jobs-management"], + endpoint: "http://localhost:4000/service", + serviceUrl: "http://localhost:4000", + source: + '{\n "id": "service",\n "specVersion": "0.8.0",\n "name": "Hello Service",\n "start": "Service",\n "dataInputSchema": "specs/workflow-service-schema.json",\n "functions": [\n {\n "name": "isWinner",\n "operation": "specs/workflow-service-openapi.json#isWinner",\n "type": "rest"\n }\n ],\n "states": [\n {\n "name": "Service",\n "type": "operation",\n "actions": [\n {\n "name": "CallService",\n "functionRef": {\n "refName": "isWinner",\n "arguments": {}\n }\n }\n ],\n "end": true\n }\n ]\n}', + error: null, + childProcessInstances: [], + nodes: [ + { + id: "497b304c-8e32-4a24-8bb6-c0dbd6109693", + nodeId: "2", + name: "End", + enter: "2024-05-30T11:09:26.858Z", + exit: "2024-05-30T11:09:26.858Z", + type: "EndNode", + definitionId: "_jbpm-unique-28", + __typename: "NodeInstance", + }, + { + id: "24449104-ed61-4a28-bb5c-55911184feae", + nodeId: "3", + name: "Service", + enter: "2024-05-30T11:09:06.135Z", + exit: "2024-05-30T11:09:26.857Z", + type: "CompositeContextNode", + definitionId: "_jbpm-unique-29", + __typename: "NodeInstance", + }, + { + id: "fd699046-64ba-415f-9362-ddb6a09e172c", + nodeId: "8", + name: "EmbeddedEnd", + enter: "2024-05-30T11:09:26.857Z", + exit: "2024-05-30T11:09:26.857Z", + type: "EndNode", + definitionId: "_jbpm-unique-33", + __typename: "NodeInstance", + }, + { + id: "6099f2af-0170-4a0b-a5eb-0ea212573876", + nodeId: "7", + name: "Script", + enter: "2024-05-30T11:09:26.857Z", + exit: "2024-05-30T11:09:26.857Z", + type: "ActionNode", + definitionId: "_jbpm-unique-32", + __typename: "NodeInstance", + }, + { + id: "4ce7a05d-da28-45ec-a326-3a27cb2da2d6", + nodeId: "6", + name: "isWinner", + enter: "2024-05-30T11:09:06.137Z", + exit: "2024-05-30T11:09:26.857Z", + type: "WorkItemNode", + definitionId: "_jbpm-unique-31", + __typename: "NodeInstance", + }, + { + id: "92fe7466-d562-46be-a709-88e9564343da", + nodeId: "4", + name: "EmbeddedStart", + enter: "2024-05-30T11:09:06.136Z", + exit: "2024-05-30T11:09:06.136Z", + type: "StartNode", + definitionId: "_jbpm-unique-30", + __typename: "NodeInstance", + }, + { + id: "e30f54f0-773d-472e-90b7-4a36ce73ce38", + nodeId: "1", + name: "Start", + enter: "2024-05-30T11:09:06.134Z", + exit: "2024-05-30T11:09:06.134Z", + type: "StartNode", + definitionId: "_jbpm-unique-27", + __typename: "NodeInstance", + }, + ], + milestones: [], + __typename: "ProcessInstance", + }, + { + id: "30c5ac5a-a310-48eb-b820-01939a7bd606", + processId: "yamlgreet", + processName: "Greeting workflow", + businessKey: null, + parentProcessInstanceId: null, + parentProcessInstance: null, + roles: [], + variables: { + workflowdata: { + name: "Robert", + greeting: "Hello from YAML Workflow, ", + language: "English", + }, + }, + state: "ERROR", + start: "2024-05-30T11:08:49.509Z", + lastUpdate: "2024-05-30T11:08:49.533Z", + end: "2024-05-30T11:08:49.531Z", + addons: ["source-files", "cloudevents", "knative-eventing", "jobs-management"], + endpoint: "http://localhost:4000/yamlgreet", + serviceUrl: "http://localhost:4000", + source: + "id: yamlgreet\nversion: '1.0'\nname: Greeting workflow\ndescription: YAML based greeting workflow\nexpressionLang: jsonpath\nstart: ChooseOnLanguage\nfunctions:\n - name: greetFunction\n type: custom\n operation: sysout\nstates:\n - name: ChooseOnLanguage\n type: switch\n dataConditions:\n - condition: \"${$.[?(@.language == 'English')]}\"\n transition: GreetInEnglish\n - condition: \"${$.[?(@.language == 'Spanish')]}\"\n transition: GreetInSpanish\n defaultCondition:\n transition: GreetInEnglish\n - name: GreetInEnglish\n type: inject\n data:\n greeting: 'Hello from YAML Workflow, '\n transition: GreetPerson\n - name: GreetInSpanish\n type: inject\n data:\n greeting: 'Saludos desde YAML Workflow, '\n transition: GreetPerson\n - name: GreetPerson\n type: operation\n actions:\n - name: greetAction\n functionRef:\n refName: greetFunction\n arguments:\n message: \"$.greeting $.name\"\n end:\n terminate: true\n", + error: null, + childProcessInstances: [], + nodes: [ + { + id: "533b19ed-10e5-42d1-a03a-f227c2a387ea", + nodeId: "2", + name: "End", + enter: "2024-05-30T11:08:49.531Z", + exit: "2024-05-30T11:08:49.531Z", + type: "EndNode", + definitionId: "_jbpm-unique-13", + __typename: "NodeInstance", + }, + { + id: "4f4b4e08-14ea-483f-a16c-fdcffa6f4f8d", + nodeId: "6", + name: "GreetPerson", + enter: "2024-05-30T11:08:49.529Z", + exit: "2024-05-30T11:08:49.531Z", + type: "CompositeContextNode", + definitionId: "_jbpm-unique-17", + __typename: "NodeInstance", + }, + { + id: "41c669d5-2491-491b-95a2-315a8aa94f6a", + nodeId: "11", + name: "EmbeddedEnd", + enter: "2024-05-30T11:08:49.531Z", + exit: "2024-05-30T11:08:49.531Z", + type: "EndNode", + definitionId: "_jbpm-unique-21", + __typename: "NodeInstance", + }, + { + id: "7ccb8991-0825-4ec3-9b97-ec8a6158c940", + nodeId: "10", + name: "Script", + enter: "2024-05-30T11:08:49.53Z", + exit: "2024-05-30T11:08:49.53Z", + type: "ActionNode", + definitionId: "_jbpm-unique-20", + __typename: "NodeInstance", + }, + { + id: "4507ef41-2e4a-4646-80a5-6d9c8d1f42d7", + nodeId: "9", + name: "greetFunction", + enter: "2024-05-30T11:08:49.53Z", + exit: "2024-05-30T11:08:49.53Z", + type: "ActionNode", + definitionId: "_jbpm-unique-19", + __typename: "NodeInstance", + }, + { + id: "f61359dc-ae09-45d8-912f-dfde81758d33", + nodeId: "7", + name: "EmbeddedStart", + enter: "2024-05-30T11:08:49.529Z", + exit: "2024-05-30T11:08:49.529Z", + type: "StartNode", + definitionId: "_jbpm-unique-18", + __typename: "NodeInstance", + }, + { + id: "4029f68f-d1b8-4337-ad2f-9df8c6132d3c", + nodeId: "13", + name: "Join-GreetPerson", + enter: "2024-05-30T11:08:49.529Z", + exit: "2024-05-30T11:08:49.529Z", + type: "Join", + definitionId: "_jbpm-unique-23", + __typename: "NodeInstance", + }, + { + id: "382aac0d-743f-4183-bd0a-ea23eb1fbd13", + nodeId: "4", + name: "GreetInEnglish", + enter: "2024-05-30T11:08:49.528Z", + exit: "2024-05-30T11:08:49.528Z", + type: "ActionNode", + definitionId: "_jbpm-unique-15", + __typename: "NodeInstance", + }, + { + id: "70478aa1-fa54-4c17-a76a-4fd567fb9d96", + nodeId: "12", + name: "Join-GreetInEnglish", + enter: "2024-05-30T11:08:49.527Z", + exit: "2024-05-30T11:08:49.527Z", + type: "Join", + definitionId: "_jbpm-unique-22", + __typename: "NodeInstance", + }, + { + id: "08da8e80-5790-488d-a228-fe79a1a40b7d", + nodeId: "3", + name: "ChooseOnLanguage", + enter: "2024-05-30T11:08:49.51Z", + exit: "2024-05-30T11:08:49.527Z", + type: "Split", + definitionId: "3", + __typename: "NodeInstance", + }, + { + id: "e7ca942d-984a-4822-8e59-fef3409e03f2", + nodeId: "1", + name: "Start", + enter: "2024-05-30T11:08:49.509Z", + exit: "2024-05-30T11:08:49.51Z", + type: "StartNode", + definitionId: "_jbpm-unique-12", + __typename: "NodeInstance", + }, + ], + milestones: [], + __typename: "ProcessInstance", + }, + { + id: "c154e49a-2e7a-4a88-83b2-4a9116dd152f", + processId: "jsongreet", + processName: "Greeting workflow", + businessKey: null, + parentProcessInstanceId: null, + parentProcessInstance: null, + roles: [], + variables: { + workflowdata: { + name: "Fabrizio", + greeting: "Saludos desde JSON Workflow, ", + language: "Spanish", + }, + }, + state: "COMPLETED", + start: "2024-05-30T11:08:23.348Z", + lastUpdate: "2024-05-30T11:08:23.355Z", + end: "2024-05-30T11:08:23.353Z", + addons: ["source-files", "cloudevents", "knative-eventing", "jobs-management"], + endpoint: "http://localhost:4000/jsongreet", + serviceUrl: "http://localhost:4000", + source: + '{\n "id": "jsongreet",\n "version": "1.0",\n "name": "Greeting workflow",\n "description": "JSON based greeting workflow",\n "start": "ChooseOnLanguage",\n "functions": [\n {\n "name": "greetFunction",\n "type": "custom",\n "operation": "sysout"\n }\n ],\n "states": [\n {\n "name": "ChooseOnLanguage",\n "type": "switch",\n "dataConditions": [\n {\n "condition": "${ .language == \\"English\\" }",\n "transition": "GreetInEnglish"\n },\n {\n "condition": "${ .language == \\"Spanish\\" }",\n "transition": "GreetInSpanish"\n }\n ],\n "defaultCondition": {\n "transition": "GreetInEnglish"\n }\n },\n {\n "name": "GreetInEnglish",\n "type": "inject",\n "data": {\n "greeting": "Hello from JSON Workflow, "\n },\n "transition": "GreetPerson"\n },\n {\n "name": "GreetInSpanish",\n "type": "inject",\n "data": {\n "greeting": "Saludos desde JSON Workflow, "\n },\n "transition": "GreetPerson"\n },\n {\n "name": "GreetPerson",\n "type": "operation",\n "actions": [\n {\n "name": "greetAction",\n "functionRef": {\n "refName": "greetFunction",\n "arguments": {\n "message": ".greeting+.name"\n }\n }\n }\n ],\n "end": true\n }\n ]\n}\n', + error: null, + childProcessInstances: [], + nodes: [ + { + id: "08db72d0-3edd-419c-8338-40960e378e67", + nodeId: "2", + name: "End", + enter: "2024-05-30T11:08:23.353Z", + exit: "2024-05-30T11:08:23.353Z", + type: "EndNode", + definitionId: "_jbpm-unique-1", + __typename: "NodeInstance", + }, + { + id: "64f78cad-d8e5-4cfb-9361-6ba01f5e4053", + nodeId: "6", + name: "GreetPerson", + enter: "2024-05-30T11:08:23.351Z", + exit: "2024-05-30T11:08:23.352Z", + type: "CompositeContextNode", + definitionId: "_jbpm-unique-5", + __typename: "NodeInstance", + }, + { + id: "129ebf4e-b7e5-4eef-9942-46fdfd9af692", + nodeId: "11", + name: "EmbeddedEnd", + enter: "2024-05-30T11:08:23.352Z", + exit: "2024-05-30T11:08:23.352Z", + type: "EndNode", + definitionId: "_jbpm-unique-9", + __typename: "NodeInstance", + }, + { + id: "6936a361-ba14-4a8b-9f5c-7ea3cf5085c9", + nodeId: "10", + name: "Script", + enter: "2024-05-30T11:08:23.352Z", + exit: "2024-05-30T11:08:23.352Z", + type: "ActionNode", + definitionId: "_jbpm-unique-8", + __typename: "NodeInstance", + }, + { + id: "c3700476-a24b-49b4-bf71-2cd4b9b24dbe", + nodeId: "9", + name: "greetFunction", + enter: "2024-05-30T11:08:23.352Z", + exit: "2024-05-30T11:08:23.352Z", + type: "ActionNode", + definitionId: "_jbpm-unique-7", + __typename: "NodeInstance", + }, + { + id: "b97d84c4-b532-4416-9582-31892a6618e1", + nodeId: "7", + name: "EmbeddedStart", + enter: "2024-05-30T11:08:23.352Z", + exit: "2024-05-30T11:08:23.352Z", + type: "StartNode", + definitionId: "_jbpm-unique-6", + __typename: "NodeInstance", + }, + { + id: "313e29e6-6712-4013-b0b0-bd2ac1206c42", + nodeId: "13", + name: "Join-GreetPerson", + enter: "2024-05-30T11:08:23.351Z", + exit: "2024-05-30T11:08:23.351Z", + type: "Join", + definitionId: "_jbpm-unique-11", + __typename: "NodeInstance", + }, + { + id: "4f548748-8b66-43ca-b41e-674c5125d65d", + nodeId: "5", + name: "GreetInSpanish", + enter: "2024-05-30T11:08:23.349Z", + exit: "2024-05-30T11:08:23.351Z", + type: "ActionNode", + definitionId: "_jbpm-unique-4", + __typename: "NodeInstance", + }, + { + id: "474f3db4-eb79-4879-acf7-a6f4c7b9910f", + nodeId: "3", + name: "ChooseOnLanguage", + enter: "2024-05-30T11:08:23.349Z", + exit: "2024-05-30T11:08:23.349Z", + type: "Split", + definitionId: "3", + __typename: "NodeInstance", + }, + { + id: "58bb6572-0864-4952-9893-88f042e7e71e", + nodeId: "1", + name: "Start", + enter: "2024-05-30T11:08:23.349Z", + exit: "2024-05-30T11:08:23.349Z", + type: "StartNode", + definitionId: "_jbpm-unique-0", + __typename: "NodeInstance", + }, + ], + milestones: [], + __typename: "ProcessInstance", + }, + { + id: "2bf6fac3-b06a-49a8-abd8-ac1a44ca9750", + processId: "hello", + processName: "Hello World", + businessKey: null, + parentProcessInstanceId: null, + parentProcessInstance: null, + roles: [], + variables: { + workflowdata: { + message: "Hello World", + }, + }, + state: "COMPLETED", + start: "2024-05-30T11:07:57.536Z", + lastUpdate: "2024-05-30T11:07:57.541Z", + end: "2024-05-30T11:07:57.538Z", + addons: ["source-files", "cloudevents", "knative-eventing", "jobs-management"], + endpoint: "http://localhost:4000/hello", + serviceUrl: "http://localhost:4000", + source: + '{\n "id": "hello",\n "specVersion": "0.8.0",\n "name": "Hello World",\n "start": "HelloWorld",\n "states": [\n {\n "name": "HelloWorld",\n "type": "inject",\n "data": {\n "message": "Hello World"\n },\n "end": true\n }\n ]\n}', + error: null, + childProcessInstances: [], + nodes: [ + { + id: "5ac4532b-3323-480e-a0e0-f5c5821780c8", + nodeId: "2", + name: "End", + enter: "2024-05-30T11:07:57.538Z", + exit: "2024-05-30T11:07:57.538Z", + type: "EndNode", + definitionId: "_jbpm-unique-25", + __typename: "NodeInstance", + }, + { + id: "2031aaac-635c-448b-b372-044fd408268e", + nodeId: "3", + name: "HelloWorld", + enter: "2024-05-30T11:07:57.537Z", + exit: "2024-05-30T11:07:57.538Z", + type: "ActionNode", + definitionId: "_jbpm-unique-26", + __typename: "NodeInstance", + }, + { + id: "17d1a632-b5c7-4a28-84a9-d381e296c812", + nodeId: "1", + name: "Start", + enter: "2024-05-30T11:07:57.536Z", + exit: "2024-05-30T11:07:57.537Z", + type: "StartNode", + definitionId: "_jbpm-unique-24", + __typename: "NodeInstance", + }, + ], + milestones: [], + __typename: "ProcessInstance", + }, + ], + ProcessDefinitionData: [ + { + id: "service", + endpoint: "http://localhost:4000/service", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "systout", + endpoint: "http://localhost:4000/systout", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "jsongreet", + endpoint: "http://localhost:4000/jsongreet", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "hello", + endpoint: "http://localhost:4000/hello", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "order", + endpoint: "http://localhost:4000/order", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "yamlgreet", + endpoint: "http://localhost:4000/yamlgreet", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + { + id: "formError", + endpoint: "http://localhost:4000/formError", + serviceUrl: "http://localhost:4000", + __typename: "ProcessDefinition", + }, + ], + JobsData: [], +}; diff --git a/packages/sonataflow-dev-app/src/MockData/openAPI/openapi.json b/packages/sonataflow-dev-app/src/MockData/openAPI/openapi.json new file mode 100644 index 00000000000..70af41f110d --- /dev/null +++ b/packages/sonataflow-dev-app/src/MockData/openAPI/openapi.json @@ -0,0 +1,2603 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "serverless-workflow-greeting-quarkus API", + "version": "1.0-SNAPSHOT" + }, + "tags": [ + { + "name": "hello" + }, + { + "name": "jsongreet", + "description": "JSON based greeting workflow" + }, + { + "name": "order", + "description": "Order Workflow Sample" + }, + { + "name": "service" + }, + { + "name": "systout" + }, + { + "name": "yamlgreet", + "description": "YAML based greeting workflow" + }, + { + "name": "formError" + } + ], + "paths": { + "/callback": { + "get": { + "tags": ["Callback Resource Test"], + "operationId": "getCallbackTest", + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": ["Callback Resource Test"], + "operationId": "postCallbackTest", + "parameters": [ + { + "name": "limit", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/customDashboard/count": { + "get": { + "tags": ["Custom Dashboard Service"], + "operationId": "getCustomDashboardFilesCount", + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/customDashboard/list": { + "get": { + "tags": ["Custom Dashboard Service"], + "operationId": "getCustomDashboardFiles", + "parameters": [ + { + "name": "names", + "in": "query", + "schema": { + "$ref": "#/components/schemas/CustomDashboardFilter" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/customDashboard/{name}": { + "get": { + "tags": ["Custom Dashboard Service"], + "operationId": "getCustomDashboardFileContent", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "pattern": "\\S+", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/graphql": { + "get": { + "operationId": "reactiveGraphQLHandlerGet", + "responses": { + "204": { + "description": "No Content" + } + } + }, + "post": { + "operationId": "reactiveGraphQLHandlerPost", + "responses": { + "201": { + "description": "Created" + } + } + } + }, + "/hello": { + "get": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "getResources_hello", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "createResource_hello", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/hello/schema": { + "get": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "getResourceSchema_hello", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/hello/{id}": { + "get": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "getResource_hello", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "updateModel_hello", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "deleteResource_hello", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "updateModelPartial_hello", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/hello/{id}/tasks": { + "get": { + "tags": ["hello"], + "summary": "hello", + "description": "", + "operationId": "getTasks_hello", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + "/jobs": { + "post": { + "tags": ["Job Resource"], + "operationId": "createJob", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduledJob" + } + } + } + } + } + } + }, + "/jobs/{id}": { + "get": { + "tags": ["Job Resource"], + "operationId": "getJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduledJob" + } + } + } + } + } + }, + "delete": { + "tags": ["Job Resource"], + "operationId": "deleteJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduledJob" + } + } + } + } + } + }, + "patch": { + "tags": ["Job Resource"], + "operationId": "patchJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduledJob" + } + } + } + } + } + } + }, + "/jsongreet": { + "get": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "getResources_jsongreet", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "createResource_jsongreet", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/jsongreet/schema": { + "get": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "getResourceSchema_jsongreet", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/jsongreet/{id}": { + "get": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "getResource_jsongreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "updateModel_jsongreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "deleteResource_jsongreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "updateModelPartial_jsongreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/jsongreet/{id}/tasks": { + "get": { + "tags": ["jsongreet"], + "summary": "jsongreet", + "description": "", + "operationId": "getTasks_jsongreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + "/management/jobs/{processId}/instances/{processInstanceId}/timers/{timerId}": { + "post": { + "tags": ["Callback Jobs Service Resource"], + "operationId": "triggerTimer", + "parameters": [ + { + "name": "processId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "processInstanceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timerId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "schema": { + "format": "int32", + "default": "0", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/management/processes/sources": { + "get": { + "tags": ["Source Files Resource"], + "operationId": "getSourceFileByUri", + "parameters": [ + { + "name": "uri", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/management/processes/{processId}/source": { + "get": { + "tags": ["Source Files Resource"], + "operationId": "getSourceFileByProcessId", + "parameters": [ + { + "name": "processId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/management/processes/{processId}/sources": { + "get": { + "tags": ["Source Files Resource"], + "operationId": "getSourceFilesByProcessId", + "parameters": [ + { + "name": "processId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceFile" + } + } + } + } + } + } + } + }, + "/management/shutdown": { + "post": { + "tags": ["Job Service Management Resource"], + "operationId": "shutdownHook", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": {} + } + } + } + } + }, + "/messaging/topics": { + "get": { + "tags": ["Quarkus Topics Information Resource"], + "operationId": "getTopics", + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/order": { + "get": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "getResources_order", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "createResource_order", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/order/schema": { + "get": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "getResourceSchema_order", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/order/{id}": { + "get": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "getResource_order", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "updateModel_order", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "deleteResource_order", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "updateModelPartial_order", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/order/{id}/tasks": { + "get": { + "tags": ["order"], + "summary": "order", + "description": "", + "operationId": "getTasks_order", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + "/service": { + "get": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "getResources_service", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "createResource_service", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "service_input", + "required": ["name"], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/service/schema": { + "get": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "getResourceSchema_service", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/service/{id}": { + "get": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "getResource_service", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "updateModel_service", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "service_input", + "required": ["name"], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "deleteResource_service", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "updateModelPartial_service", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "service_input", + "required": ["name"], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/service/{id}/tasks": { + "get": { + "tags": ["service"], + "summary": "service", + "description": "", + "operationId": "getTasks_service", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + "/systout": { + "get": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "getResources_systout", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "createResource_systout", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/systout/schema": { + "get": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "getResourceSchema_systout", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/systout/{id}": { + "get": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "getResource_systout", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "updateModel_systout", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "deleteResource_systout", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "updateModelPartial_systout", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/systout/{id}/tasks": { + "get": { + "tags": ["systout"], + "summary": "systout", + "description": "", + "operationId": "getTasks_systout", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + "/v2/jobs": { + "post": { + "tags": ["Job Resource V 2"], + "operationId": "createJobV2", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobV2" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobV2" + } + } + } + } + } + } + }, + "/v2/jobs/{id}": { + "get": { + "tags": ["Job Resource V 2"], + "operationId": "getJobV2", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobV2" + } + } + } + } + } + }, + "delete": { + "tags": ["Job Resource V 2"], + "operationId": "deleteJobV2", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobV2" + } + } + } + } + } + } + }, + "/yamlgreet": { + "get": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "getResources_yamlgreet", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "post": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "createResource_yamlgreet", + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "default": "", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/yamlgreet/schema": { + "get": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "getResourceSchema_yamlgreet", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "/yamlgreet/{id}": { + "get": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "getResource_yamlgreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "put": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "updateModel_yamlgreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "delete": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "deleteResource_yamlgreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + }, + "patch": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "updateModelPartial_yamlgreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelInput" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNodeModelOutput" + } + } + } + } + } + } + }, + "/yamlgreet/{id}/tasks": { + "get": { + "tags": ["yamlgreet"], + "summary": "yamlgreet", + "description": "", + "operationId": "getTasks_yamlgreet", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "group", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "user", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskModel" + } + } + } + } + } + } + } + }, + + "/formError/schema": { + "get": { + "tags": ["formError"], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + } + } + } + } + }, + + "/formError": { + "get": { + "tags": ["formError"], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": {} + } + } + } + }, + "post": { + "tags": ["formError"], + "parameters": [ + { + "name": "businessKey", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": {} + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + } + }, + "components": { + "schemas": { + "CronSchedule": { + "description": "Cron schedules establishes that a job must be executed with a periodicity based on a unix like crontab expression.", + "required": ["expression"], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Schedule" + } + ], + "properties": { + "expression": { + "description": "Cron expression for the job execution, for more information see.", + "type": "string" + }, + "timeZone": { + "description": "Time zone for the cron programming, for example \"Europe/Madrid\". For more information see.", + "type": "string" + } + } + }, + "CustomDashboardFilter": { + "type": "object", + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "HttpRecipient": { + "description": "Recipient definition that executes a http request on a given url and sends the configured \"payload\" as the body.", + "required": ["url", "method"], + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Recipient" + } + ], + "properties": { + "url": { + "description": "Url of the recipient that will receive the request.", + "type": "string" + }, + "method": { + "description": "Http method to use for the request.", + "default": "POST", + "enum": ["POST", "GET", "HEAD", "PUT", "DELETE", "PATCH", "OPTIONS"], + "type": "string" + }, + "headers": { + "description": "Http headers to send with the request.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "queryParams": { + "description": "Http query parameters to send with the request.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "payload": { + "$ref": "#/components/schemas/HttpRecipientPayloadData" + } + } + }, + "HttpRecipientBinaryPayloadData": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/HttpRecipientPayloadData" + } + ], + "properties": { + "data": { + "format": "binary", + "type": "string" + } + } + }, + "HttpRecipientJsonPayloadData": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/HttpRecipientPayloadData" + } + ], + "properties": { + "data": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "HttpRecipientPayloadData": { + "required": ["type"], + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "binary": "#/components/schemas/HttpRecipientBinaryPayloadData", + "string": "#/components/schemas/HttpRecipientStringPayloadData", + "json": "#/components/schemas/HttpRecipientJsonPayloadData" + } + } + }, + "HttpRecipientStringPayloadData": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/HttpRecipientPayloadData" + } + ], + "properties": { + "data": { + "type": "string" + } + } + }, + "Job": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "expirationTime": { + "$ref": "#/components/schemas/ZonedDateTime" + }, + "priority": { + "format": "int32", + "type": "integer" + }, + "callbackEndpoint": { + "type": "string" + }, + "processInstanceId": { + "type": "string" + }, + "rootProcessInstanceId": { + "type": "string" + }, + "processId": { + "type": "string" + }, + "rootProcessId": { + "type": "string" + }, + "nodeInstanceId": { + "type": "string" + }, + "repeatInterval": { + "format": "int64", + "type": "integer" + }, + "repeatLimit": { + "format": "int32", + "type": "integer" + } + } + }, + "JobExecutionResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "timestamp": { + "$ref": "#/components/schemas/ZonedDateTime" + }, + "jobId": { + "type": "string" + } + } + }, + "JobStatus": { + "enum": ["ERROR", "EXECUTED", "SCHEDULED", "RETRY", "CANCELED"], + "type": "string" + }, + "JobV2": { + "description": "Defines a job that can be managed by the jobs service.", + "required": ["schedule", "retry", "recipient"], + "type": "object", + "properties": { + "id": { + "description": "The unique identifier of the job in the system, this value is set by the jobs service.", + "type": "string" + }, + "correlationId": { + "description": "Logical user provided identifier of the job in the system.", + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/State" + }, + "schedule": { + "$ref": "#/components/schemas/Schedule" + }, + "retry": { + "$ref": "#/components/schemas/Retry" + }, + "recipient": { + "$ref": "#/components/schemas/Recipient" + }, + "executionTimeout": { + "format": "int64", + "description": "Optional configuration that establishes the time limit for the current Job execution attempt to finish. When this timeout is exceeded the execution attempt is considered as failed, and depending on the Job retry configuration, the execution can be retried or the Job will be marked as ERROR. Every Recipient type has a default timeout configuration that will apply automatically if this value is not set, and a maximum timeout configuration that can not be exceeded by current value.", + "type": "integer" + }, + "executionTimeoutUnit": { + "description": "The unit for the executionTimeout. If the executionTimeout is set and the unit is left empty MILLISECONDS are assumed. If the unit is set and the executionTimeout is left empty this value is ignored.", + "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/TemporalUnit" + } + ] + } + } + }, + "JsonNode": { + "type": "object" + }, + "JsonNodeModelInput": { + "type": "object", + "properties": { + "workflowdata": { + "type": "object" + } + } + }, + "JsonNodeModelOutput": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "workflowdata": { + "type": "object" + } + } + }, + "OffsetDateTime": { + "format": "date-time", + "type": "string", + "example": "2022-03-10T12:15:50-04:00" + }, + "Recipient": { + "description": "Generic definition for a Recipient, users must provide instances of subclasses of this schema to create a job.", + "required": ["type"], + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "http": "#/components/schemas/HttpRecipient", + "sink": "#/components/schemas/SinkRecipient" + } + } + }, + "Retry": { + "description": "The retry configuration establishes the number of times a failing job execution must be retried before it’s considered as FAILED.", + "type": "object", + "properties": { + "maxRetries": { + "format": "int32", + "description": "Number of retries to execute in case of failures.", + "default": 3, + "type": "integer" + }, + "delay": { + "format": "int64", + "description": "Time delay between the retries.", + "default": 0, + "type": "integer" + }, + "delayUnit": { + "$ref": "#/components/schemas/TemporalUnit" + }, + "maxDuration": { + "format": "int64", + "description": "Maximum amount of time to continue retrying if no successful execution was produced.", + "default": 180000, + "type": "integer" + }, + "durationUnit": { + "$ref": "#/components/schemas/TemporalUnit" + } + } + }, + "Schedule": { + "description": "Generic definition for a Schedule, users must provide instances of subclasses of this schema.", + "required": ["type"], + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "cron": "#/components/schemas/CronSchedule", + "timer": "#/components/schemas/TimerSchedule" + } + } + }, + "ScheduledJob": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "expirationTime": { + "$ref": "#/components/schemas/ZonedDateTime" + }, + "priority": { + "format": "int32", + "type": "integer" + }, + "callbackEndpoint": { + "type": "string" + }, + "processInstanceId": { + "type": "string" + }, + "rootProcessInstanceId": { + "type": "string" + }, + "processId": { + "type": "string" + }, + "rootProcessId": { + "type": "string" + }, + "nodeInstanceId": { + "type": "string" + }, + "repeatInterval": { + "format": "int64", + "type": "integer" + }, + "repeatLimit": { + "format": "int32", + "type": "integer" + }, + "scheduledId": { + "type": "string" + }, + "retries": { + "format": "int32", + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/JobStatus" + }, + "lastUpdate": { + "$ref": "#/components/schemas/ZonedDateTime" + }, + "executionCounter": { + "format": "int32", + "type": "integer" + }, + "executionResponse": { + "$ref": "#/components/schemas/JobExecutionResponse" + } + } + }, + "SourceFile": { + "type": "object", + "properties": { + "uri": { + "type": "string" + } + } + }, + "State": { + "description": "Available states for a Job.", + "enum": ["SCHEDULED", "RETRY", "EXECUTED", "ERROR", "CANCELED"], + "type": "string" + }, + "TaskModel": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "format": "int32", + "type": "integer" + }, + "phase": { + "type": "string" + }, + "phaseStatus": { + "type": "string" + }, + "parameters": { + "type": "object" + }, + "results": { + "type": "object" + } + } + }, + "TemporalUnit": { + "enum": ["MILLIS", "SECONDS", "MINUTES", "HOURS", "DAYS"], + "type": "string" + }, + "TimerSchedule": { + "description": "Timer schedules establishes that a job must be executed at a given date time and can be repeated a configurable number of times.", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Schedule" + } + ], + "properties": { + "startTime": { + "description": "Initial fire time for the job in the ISO-8601 standard.", + "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/OffsetDateTime" + } + ], + "example": "2023-01-30T12:01:15+01:00" + }, + "repeatCount": { + "format": "int32", + "description": "Number of times that the job execution must be repeated.", + "default": 0, + "type": "integer" + }, + "delay": { + "format": "int64", + "description": "Time delay between executions.", + "default": 0, + "type": "integer" + }, + "delayUnit": { + "$ref": "#/components/schemas/TemporalUnit" + } + } + }, + "ZonedDateTime": { + "format": "date-time", + "type": "string", + "example": "2022-03-10T12:15:50-04:00" + }, + "service_input": { + "title": "service_input", + "required": ["name"], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } +} diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/types.js b/packages/sonataflow-dev-app/src/MockData/types.js similarity index 54% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/types.js rename to packages/sonataflow-dev-app/src/MockData/types.js index b9c4ef9e1b1..cdf6c23ef90 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/types.js +++ b/packages/sonataflow-dev-app/src/MockData/types.js @@ -20,22 +20,10 @@ const { gql } = require("apollo-server-express"); module.exports = typeDefs = gql` scalar DateTime + scalar JSON schema { query: Query - mutation: Mutation - } - - type Mutation { - ProcessInstanceSkip(id: String): String - ProcessInstanceAbort(id: String): String - ProcessInstanceRetry(id: String): String - ProcessInstanceUpdateVariables(id: String, variables: String): String - NodeInstanceTrigger(id: String, nodeId: String): String - NodeInstanceCancel(id: String, nodeInstanceId: String): String - NodeInstanceRetrigger(id: String, nodeInstanceId: String): String - JobCancel(id: String): String - JobReschedule(id: String, data: String): String } type Query { @@ -44,12 +32,7 @@ module.exports = typeDefs = gql` orderBy: ProcessInstanceOrderBy pagination: Pagination ): [ProcessInstance] - Travels(where: TravelsArgument, orderBy: TravelsOrderBy, pagination: Pagination): [Travels] - VisaApplications( - where: VisaApplicationsArgument - orderBy: VisaApplicationsOrderBy - pagination: Pagination - ): [VisaApplications] + ProcessDefinitions: [ProcessDefinition] Jobs(where: JobArgument, orderBy: JobOrderBy, pagination: Pagination): [Job] } @@ -68,7 +51,7 @@ module.exports = typeDefs = gql` nodes: [NodeInstance!]! nodeDefinitions: [Node!] milestones: [Milestones!] - variables: String + variables: JSON start: DateTime! end: DateTime businessKey: String @@ -80,35 +63,10 @@ module.exports = typeDefs = gql` diagram: String } - type KogitoMetadata { - lastUpdate: DateTime! - processInstances: [ProcessInstanceMeta] - } - - input KogitoMetadataOrderBy { - lastUpdate: OrderBy - } - - input KogitoMetadataArgument { - lastUpdate: DateArgument - processInstances: ProcessInstanceMetaArgument - } - - type ProcessInstanceMeta { + type ProcessDefinition { id: String! - processId: String! - processName: String - parentProcessInstanceId: String - rootProcessInstanceId: String - rootProcessId: String - roles: [String!] - state: ProcessInstanceState! endpoint: String! - start: DateTime! - end: DateTime - lastUpdate: DateTime! - businessKey: String - serviceUrl: String + serviceUrl: String! } type ProcessInstanceError { @@ -281,11 +239,6 @@ module.exports = typeDefs = gql` in: [ProcessInstanceState] } - type Subscription { - ProcessInstanceAdded: ProcessInstance! - ProcessInstanceUpdated: ProcessInstance! - } - enum OrderBy { ASC DESC @@ -296,206 +249,6 @@ module.exports = typeDefs = gql` offset: Int } - type Travels { - flight: Flight - hotel: Hotel - id: String - traveller: Traveller - trip: Trip - visaApplication: VisaApplication - metadata: KogitoMetadata - } - - type Flight { - arrival: String - departure: String - flightNumber: String - gate: String - seat: String - } - - type Hotel { - address: Address - bookingNumber: String - name: String - phone: String - room: String - } - - type Address { - city: String - country: String - street: String - zipCode: String - } - - type Traveller { - address: Address - email: String - firstName: String - lastName: String - nationality: String - } - - type Trip { - begin: String - city: String - country: String - end: String - visaRequired: Boolean - } - - type VisaApplication { - approved: Boolean - city: String - country: String - duration: Int - firstName: String - lastName: String - nationality: String - passportNumber: String - } - - input TravelsArgument { - and: [TravelsArgument!] - or: [TravelsArgument!] - flight: FlightArgument - hotel: HotelArgument - id: IdArgument - traveller: TravellerArgument - trip: TripArgument - visaApplication: VisaApplicationArgument - metadata: KogitoMetadataArgument - } - - input FlightArgument { - arrival: StringArgument - departure: StringArgument - flightNumber: StringArgument - gate: StringArgument - seat: StringArgument - } - - input HotelArgument { - address: AddressArgument - bookingNumber: StringArgument - name: StringArgument - phone: StringArgument - room: StringArgument - } - - input AddressArgument { - city: StringArgument - country: StringArgument - street: StringArgument - zipCode: StringArgument - } - - input TravellerArgument { - address: AddressArgument - email: StringArgument - firstName: StringArgument - lastName: StringArgument - nationality: StringArgument - } - - input TripArgument { - begin: StringArgument - city: StringArgument - country: StringArgument - end: StringArgument - visaRequired: BooleanArgument - } - - input VisaApplicationArgument { - approved: BooleanArgument - city: StringArgument - country: StringArgument - duration: NumericArgument - firstName: StringArgument - lastName: StringArgument - nationality: StringArgument - passportNumber: StringArgument - } - - input TravelsOrderBy { - flight: FlightOrderBy - hotel: HotelOrderBy - traveller: TravellerOrderBy - trip: TripOrderBy - visaApplication: VisaApplicationOrderBy - metadata: KogitoMetadataOrderBy - } - - input FlightOrderBy { - arrival: OrderBy - departure: OrderBy - flightNumber: OrderBy - gate: OrderBy - seat: OrderBy - } - - input HotelOrderBy { - address: AddressOrderBy - bookingNumber: OrderBy - name: OrderBy - phone: OrderBy - room: OrderBy - } - - input AddressOrderBy { - city: OrderBy - country: OrderBy - street: OrderBy - zipCode: OrderBy - } - - input TravellerOrderBy { - address: AddressOrderBy - email: OrderBy - firstName: OrderBy - lastName: OrderBy - nationality: OrderBy - } - - input TripOrderBy { - begin: OrderBy - city: OrderBy - country: OrderBy - end: OrderBy - visaRequired: OrderBy - } - - input VisaApplicationOrderBy { - approved: OrderBy - city: OrderBy - country: OrderBy - duration: OrderBy - firstName: OrderBy - lastName: OrderBy - nationality: OrderBy - passportNumber: OrderBy - } - - type VisaApplications { - id: String - visaApplication: VisaApplication - metadata: KogitoMetadata - } - - input VisaApplicationsArgument { - and: [VisaApplicationsArgument!] - or: [VisaApplicationsArgument!] - id: IdArgument - visaApplication: VisaApplicationArgument - metadata: KogitoMetadataArgument - } - - input VisaApplicationsOrderBy { - visaApplication: VisaApplicationOrderBy - metadata: KogitoMetadataOrderBy - } - input JobArgument { and: [JobArgument!] or: [JobArgument!] diff --git a/packages/serverless-workflow-dev-ui-webapp/server/app.js b/packages/sonataflow-dev-app/src/app.js similarity index 94% rename from packages/serverless-workflow-dev-ui-webapp/server/app.js rename to packages/sonataflow-dev-app/src/app.js index a57e55c0079..e515d2b03d7 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/app.js +++ b/packages/sonataflow-dev-app/src/app.js @@ -1,4 +1,4 @@ -/* +/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -7,7 +7,7 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - const server = require("./server"); server.listen(); diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ITInterview.js b/packages/sonataflow-dev-app/src/config/index.js similarity index 63% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ITInterview.js rename to packages/sonataflow-dev-app/src/config/index.js index 90632c89da2..8fe1dc33c35 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/ITInterview.js +++ b/packages/sonataflow-dev-app/src/config/index.js @@ -16,22 +16,10 @@ * specific language governing permissions and limitations * under the License. */ - -module.exports = HRInterview = { - $schema: "https://json-schema.org/draft/2019-09/schema", - type: "object", - properties: { - approve: { type: "boolean", output: true }, - candidate: { - type: "object", - properties: { - email: { type: "string" }, - name: { type: "string" }, - salary: { type: "integer" }, - skills: { type: "string" }, - }, - input: true, - }, - }, - phases: ["complete", "start", "claim", "release"], +const commonConfig = { + env: process.env.NODE_ENV || "development", + port: parseInt(process.env.PORT, 10) || 4000, + corsDomain: process.env.CORS_DOMAIN || "*", }; + +module.exports = commonConfig; diff --git a/packages/sonataflow-dev-app/src/server.js b/packages/sonataflow-dev-app/src/server.js new file mode 100644 index 00000000000..4be09f446dd --- /dev/null +++ b/packages/sonataflow-dev-app/src/server.js @@ -0,0 +1,211 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// HTTP SERVER +const express = require("express"); +const rateLimit = require("express-rate-limit"); +const swaggerUi = require("swagger-ui-express"); +const swaggerApiDoc = require("./MockData/openAPI/openapi.json"); +var cors = require("cors"); +const app = express(); +const { ApolloServer } = require("apollo-server-express"); +var bodyParser = require("body-parser"); +// GraphQL - Apollo +const { GraphQLScalarType } = require("graphql"); +const _ = require("lodash"); +// Config +const config = require("./config"); + +//Mock data +const data = require("./MockData/graphql"); +const controller = require("./MockData/controllers"); +const typeDefs = require("./MockData/types"); + +const DEFAULT_TIMEOUT = 2000; + +const swaggerOptions = { + swaggerOptions: { + url: "/q/openapi.json", + }, +}; + +// set up rate limiter: maximum of 100 requests per minute to fix error "Missing rate limiting" +var limiter = rateLimit({ + windowMs: 15 * 60 * 1000, + max: 100, +}); + +function setPort(port = 4000) { + app.set("port", parseInt(port, 10)); +} + +function listen() { + const port = app.get("port") || config.port; + app.listen(port, () => { + console.log(`The server is running and listening at http://localhost:${port}`); + }); +} +// parse application/x-www-form-urlencoded +app.use(bodyParser.urlencoded({ extended: false })); + +// parse application/json +app.use(bodyParser.json()); +app.use( + cors({ + origin: config.corsDomain, // Be sure to switch to your production domain + optionsSuccessStatus: 200, + }) +); + +// handle empty GraphQL queries +app.use((req, res, next) => { + if (req.body && req.body.query === "") { + return res.status(200).send(); + } + next(); +}); + +app.use(limiter); + +app.post("/", controller.triggerCloudEvent); +app.put("/", controller.triggerCloudEvent); + +app.get("/q/openapi.json", (req, res) => res.json(swaggerApiDoc)); +app.use("/docs", swaggerUi.serveFiles(null, swaggerOptions), swaggerUi.setup(null, swaggerOptions)); + +app.get("/forms/list", controller.getForms); +app.get("/customDashboard/list", controller.getCustomDashboards); +app.get("/customDashboard/:name", controller.getCustomDashboardContent); +app.get("/forms/:formName", controller.getFormContent); +app.post("/forms/:formName", controller.saveFormContent); + +app.post(/^\/(service|hello|systout|jsongreet|order|yamlgreet)$/, controller.startProcessInstance); + +function timeout(ms = DEFAULT_TIMEOUT) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +function paginatedResult(arr, offset, limit) { + let paginatedArray = arr.slice(offset, offset + limit); + console.log("offset : ", offset); + console.log("limit : ", limit); + if (offset > arr.length && paginatedArray.length === 0) { + let prevData = arr.slice(offset - limit, limit); + return prevData; + } + return paginatedArray; +} +// Provide resolver functions for your schema fields +const resolvers = { + Query: { + ProcessInstances: async (parent, args) => { + let result = data.ProcessInstanceData.filter((datum) => { + console.log("args", args["where"]); + if (!args["where"]) { + return true; + } else if (args["where"].id && args["where"].id.equal) { + return datum.id == args["where"].id.equal; + } else if (args["where"].id && args["where"].id.in) { + return args["where"].id.in.includes(datum.id); + } else if (args["where"].rootProcessInstanceId && args["where"].rootProcessInstanceId.equal) { + return datum.rootProcessInstanceId == args["where"].rootProcessInstanceId.equal; + } else if (args["where"].parentProcessInstanceId && args["where"].parentProcessInstanceId.equal) { + return datum.parentProcessInstanceId == args["where"].parentProcessInstanceId.equal; + } else if (args["where"].parentProcessInstanceId && args["where"].parentProcessInstanceId.isNull) { + if (args["where"].or === undefined || (args["where"].or && args["where"].or.length === 0)) { + return datum.parentProcessInstanceId == null && args["where"].state.in.includes(datum.state); + } else { + if ( + datum.parentProcessInstanceId === null && + args["where"].state.in.includes(datum.state) && + datum.businessKey !== null + ) { + for (let i = 0; i < args["where"].or.length; i++) { + if ( + datum.businessKey && + datum.businessKey.toLowerCase().indexOf(args["where"].or[i].businessKey.like.toLowerCase()) > -1 + ) { + return true; + } + } + return false; + } + } + } else { + return false; + } + }); + if (args["orderBy"]) { + console.log("orderBy args: ", args["orderBy"]); + result = _.orderBy( + result, + _.keys(args["orderBy"]).map((key) => key), + _.values(args["orderBy"]).map((value) => value.toLowerCase()) + ); + } + await timeout(); + if (args["pagination"]) { + result = paginatedResult(result, args["pagination"].offset, args["pagination"].limit); + } + console.log("result length: " + result.length); + return result; + }, + ProcessDefinitions: async () => { + await timeout(); + return data.ProcessDefinitionData; + }, + Jobs: () => [], + }, + + DateTime: new GraphQLScalarType({ + name: "DateTime", + description: "DateTime custom scalar type", + parseValue(value) { + return value; + }, + serialize(value) { + return value; + }, + parseLiteral(ast) { + return null; + }, + }), +}; + +const mocks = { + DateTime: () => new Date().toUTCString(), +}; + +const server = new ApolloServer({ + typeDefs, + resolvers, + mocks, + mockEntireSchema: false, + introspection: true, + playground: true, +}); + +server.start().then(() => { + server.applyMiddleware({ app }); +}); + +module.exports = { + getApp: () => app, + setPort, + listen, +}; diff --git a/packages/sonataflow-management-console-image-env/README.md b/packages/sonataflow-management-console-image-env/README.md new file mode 100644 index 00000000000..e12fb70d4ea --- /dev/null +++ b/packages/sonataflow-management-console-image-env/README.md @@ -0,0 +1,46 @@ + + +## @kie-tools/sonataflow-management-console-image-env + +This package provides the environment variables used to configure, run and deploy the `sonataflow-management-console-image`. + +--- + +Apache KIE (incubating) is an effort undergoing incubation at The Apache Software +Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is +required of all newly accepted projects until a further review indicates that +the infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of the +code, it does indicate that the project has yet to be fully endorsed by the ASF. + +Some of the incubating project’s releases may not be fully compliant with ASF +policy. For example, releases may have incomplete or un-reviewed licensing +conditions. What follows is a list of known issues the project is currently +aware of (note that this list, by definition, is likely to be incomplete): + +- Hibernate, an LGPL project, is being used. Hibernate is in the process of + relicensing to ASL v2 +- Some files, particularly test files, and those not supporting comments, may + be missing the ASF Licensing Header + +If you are planning to incorporate this work into your product/project, please +be aware that you will need to conduct a thorough licensing review to determine +the overall implications of including this work. For the current status of this +project through the Apache Incubator visit: +https://incubator.apache.org/projects/kie.html diff --git a/packages/sonataflow-management-console-image-env/env/index.js b/packages/sonataflow-management-console-image-env/env/index.js new file mode 100644 index 00000000000..c27ae69d323 --- /dev/null +++ b/packages/sonataflow-management-console-image-env/env/index.js @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { varsWithName, getOrDefault, composeEnv } = require("@kie-tools-scripts/build-env"); + +const rootEnv = require("@kie-tools/root-env/env"); + +module.exports = composeEnv([rootEnv], { + vars: varsWithName({ + SONATAFLOW_MANAGEMENT_CONSOLE__registry: { + default: "docker.io", + description: "E.g., `docker.io` or `quay.io`.", + }, + SONATAFLOW_MANAGEMENT_CONSOLE__account: { + default: "apache", + description: "E.g,. `apache` or `kie-tools-bot`", + }, + SONATAFLOW_MANAGEMENT_CONSOLE__name: { + default: "incubator-kie-sonataflow-management-console", + description: "Name of the image itself.", + }, + SONATAFLOW_MANAGEMENT_CONSOLE__buildTag: { + default: rootEnv.env.root.streamName, + description: "Tag version of this image. E.g., `main` or `10.0.x` or `10.0.0", + }, + SONATAFLOW_MANAGEMENT_CONSOLE__port: { + default: 8080, + description: "The internal container port.", + }, + }), + get env() { + return { + sonataflowManagementConsoleImageEnv: { + registry: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE__registry), + account: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE__account), + name: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE__name), + buildTag: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE__buildTag), + port: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE__port), + }, + }; + }, +}); diff --git a/packages/sonataflow-management-console-image-env/package.json b/packages/sonataflow-management-console-image-env/package.json new file mode 100644 index 00000000000..2cafc6cae67 --- /dev/null +++ b/packages/sonataflow-management-console-image-env/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "name": "@kie-tools/sonataflow-management-console-image-env", + "version": "0.0.0", + "description": "", + "license": "Apache-2.0", + "homepage": "https://github.com/apache/incubator-kie-tools", + "repository": { + "type": "git", + "url": "https://github.com/apache/incubator-kie-tools.git" + }, + "bugs": { + "url": "https://github.com/apache/incubator-kie-tools/issues" + }, + "devDependencies": { + "@kie-tools/root-env": "workspace:*" + } +} diff --git a/packages/sonataflow-management-console-image/Containerfile b/packages/sonataflow-management-console-image/Containerfile new file mode 100644 index 00000000000..1d0e875c37b --- /dev/null +++ b/packages/sonataflow-management-console-image/Containerfile @@ -0,0 +1,51 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +FROM --platform=linux/amd64 registry.access.redhat.com/ubi9/ubi-minimal:9.4 + +ARG KOGITO_MANAGEMENT_CONSOLE_PORT=8080 + +ENV SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE="PROD" + +COPY entrypoint.sh dist-dev/image-env-to-json-standalone dist-dev/EnvJson.schema.json /tmp/ + +RUN microdnf --disableplugin=subscription-manager -y install httpd \ + && microdnf --disableplugin=subscription-manager clean all \ + && echo "Mutex posixsem" >> /etc/httpd/conf/httpd.conf \ + && sed -i -e "/#ServerName www.example.com:80/aHeader set Content-Security-Policy \"frame-ancestors 'self';\"" /etc/httpd/conf/httpd.conf \ + && sed -i -e 's/Options Indexes FollowSymLinks/Options -Indexes +FollowSymLinks/' /etc/httpd/conf/httpd.conf \ + && sed -i "s/Listen 80/Listen ${KOGITO_MANAGEMENT_CONSOLE_PORT}/g" /etc/httpd/conf/httpd.conf \ + && sed -i "s/#ServerName www.example.com:80/ServerName 127.0.0.1:${KOGITO_MANAGEMENT_CONSOLE_PORT}/g" /etc/httpd/conf/httpd.conf \ + && sed -i '$ a ServerTokens Prod' /etc/httpd/conf/httpd.conf \ + && sed -i '$ a ServerSignature Off' /etc/httpd/conf/httpd.conf \ + && sed -i -e '//a RewriteEngine on\n RewriteCond %{REQUEST_FILENAME} -f [OR]\n RewriteCond %{REQUEST_FILENAME} -d\n RewriteRule ^ - [L]\n RewriteRule ^ index.html [L]' /etc/httpd/conf/httpd.conf \ + && chmod -R g=u /etc/httpd/conf \ + && mkdir /management-console \ + && mv -t /management-console /tmp/entrypoint.sh /tmp/image-env-to-json-standalone /tmp/EnvJson.schema.json \ + && chgrp -R 0 /var/log/httpd /var/run/httpd /var/www/html /management-console \ + && chmod -R g=u /var/log/httpd /var/run/httpd /var/www/html /management-console \ + && chmod +x /management-console/entrypoint.sh /management-console/image-env-to-json-standalone + +COPY dist-dev/sonataflow-management-console-webapp /management-console/app + +RUN if [ -f /management-console/app/env.json ]; then chmod a+w /management-console/app/env.json; fi + +EXPOSE ${KOGITO_MANAGEMENT_CONSOLE_PORT} + +USER 1000 + +ENTRYPOINT [ "/management-console/entrypoint.sh" ] diff --git a/packages/sonataflow-management-console-image/README.md b/packages/sonataflow-management-console-image/README.md new file mode 100644 index 00000000000..da8611713a2 --- /dev/null +++ b/packages/sonataflow-management-console-image/README.md @@ -0,0 +1,136 @@ + + +# SonataFlow Management Console Image + +This package contains the `Containerfile/Dockerfile` and scripts to build a container image for SonataFlow Management Console. It also generated a JSON Schema for the `env.json` file, enabling it to be validated. + +## Additional requirements + +- docker + +## Build + +- Enable the image to be built: + + ```bash + export KIE_TOOLS_BUILD__buildContainerImages=true + ``` + +- (Optional) The image name and tags can be customized by setting the following environment variables: + + ```bash + export KOGITO_MANAGEMENT_CONSOLE__registry= + export KOGITO_MANAGEMENT_CONSOLE__account= + export KOGITO_MANAGEMENT_CONSOLE__name= + export KOGITO_MANAGEMENT_CONSOLE__buildTag= + ``` + + > Default values can be found [here](./env/index.js). + +- After optionally setting up the environment variables, run the following in the root folder of the repository to build the package: + + ```bash + pnpm -F @kie-tools/sonataflow-management-console-image... build:prod + ``` + +- Then check if the image is correctly stored: + + ```bash + docker images + ``` + +## Run + +- Start up a clean container with: + + ```bash + docker run -t -p 8080:8080 -i --rm docker.io/apache/incubator-kie-sonataflow-management-console:main + ``` + + Management Console will be up at http://localhost:8080 + +## Customization + +1. Run a container with custom environment variables: + + [comment]: <> (//TODO: Use EnvJson.schema.json to generate this documentation somehow.. See https://github.com/kiegroup/kie-issues/issues/16) + + | Name | Description | Default | + | :-------------------------------------------------: | :-----------------------------------------------------------: | :----------------------------------------------------------------------------------------: | + | `SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE` | Env Mode: "PROD" or "DEV". PROD enables Keycloak integration. | "PROD" | + | `SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_NAME` | Management Console app name. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_VERSION` | Management Console app version. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `SONATAFLOW_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.ts ](../sonataflow-management-console-webapp/build/defaultEnvJson.ts) | + + ### Examples + + 1. Using a different Data Index Service. + + ```bash + docker run -t -p 8080:8080 -e SONATAFLOW_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT= -i --rm docker.io/apache/incubator-kie-sonataflow-management-console:main + ``` + + _NOTE: Replace `docker` with `podman` if necessary._ + +2. Write a custom `Containerfile/Dockerfile` from the image: + + ```docker + FROM docker.io/apache/incubator-kie-sonataflow-management-console:main + + ENV SONATAFLOW_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT= + ``` + +3. Create the application from the image in OpenShift and set the deployment environment variable right from the OpenShift UI. + +## Custom Port + +The port used internally on the container can be changed: + +When building, set the `SONATAFLOW_MANAGEMENT_CONSOLE__port` environment variable to any port you want, and the Containerfile will be built using that port. + +--- + +Apache KIE (incubating) is an effort undergoing incubation at The Apache Software +Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is +required of all newly accepted projects until a further review indicates that +the infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of the +code, it does indicate that the project has yet to be fully endorsed by the ASF. + +Some of the incubating project’s releases may not be fully compliant with ASF +policy. For example, releases may have incomplete or un-reviewed licensing +conditions. What follows is a list of known issues the project is currently +aware of (note that this list, by definition, is likely to be incomplete): + +- Hibernate, an LGPL project, is being used. Hibernate is in the process of + relicensing to ASL v2 +- Some files, particularly test files, and those not supporting comments, may + be missing the ASF Licensing Header + +If you are planning to incorporate this work into your product/project, please +be aware that you will need to conduct a thorough licensing review to determine +the overall implications of including this work. For the current status of this +project through the Apache Incubator visit: +https://incubator.apache.org/projects/kie.html diff --git a/packages/sonataflow-management-console-image/entrypoint.sh b/packages/sonataflow-management-console-image/entrypoint.sh new file mode 100644 index 00000000000..1b92377150b --- /dev/null +++ b/packages/sonataflow-management-console-image/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Copying the Task Console assets here is essential for when the container is running with the readOnlyRootFilesystem flag. +# But, just like any other directory modified during runtime, the /var/www/html must be a mounted volume in the container in this case. +cp -R /management-console/app/* /var/www/html + +/management-console/image-env-to-json-standalone --directory /var/www/html --json-schema /management-console/EnvJson.schema.json + +httpd -D FOREGROUND diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/hiring.js b/packages/sonataflow-management-console-image/env/index.js similarity index 65% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/hiring.js rename to packages/sonataflow-management-console-image/env/index.js index 570d929e590..f6ac7101201 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/process-forms-schema/hiring.js +++ b/packages/sonataflow-management-console-image/env/index.js @@ -17,31 +17,17 @@ * under the License. */ -module.exports = { - type: "object", - properties: { - Candidate: { - type: "object", - properties: { - email: { - type: "string", - }, - name: { - type: "string", - }, - salary: { - type: "integer", - }, - skills: { - type: "string", - }, +const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/build-env"); + +const rootEnv = require("@kie-tools/root-env/env"); + +module.exports = composeEnv([rootEnv, require("@kie-tools/sonataflow-management-console-image-env/env")], { + vars: varsWithName({}), + get env() { + return { + sonataflowManagementConsoleImage: { + version: require("../package.json").version, }, - }, - hr_approval: { - type: "boolean", - }, - it_approval: { - type: "boolean", - }, + }; }, -}; +}); diff --git a/packages/sonataflow-management-console-image/package.json b/packages/sonataflow-management-console-image/package.json new file mode 100644 index 00000000000..7d2f34500b9 --- /dev/null +++ b/packages/sonataflow-management-console-image/package.json @@ -0,0 +1,39 @@ +{ + "private": true, + "name": "@kie-tools/sonataflow-management-console-image", + "version": "0.0.0", + "description": "", + "license": "Apache-2.0", + "homepage": "https://github.com/apache/incubator-kie-tools", + "repository": { + "type": "git", + "url": "https://github.com/apache/incubator-kie-tools.git" + }, + "bugs": { + "url": "https://github.com/apache/incubator-kie-tools/issues" + }, + "scripts": { + "build:dev": "pnpm cleanup && pnpm env-json:schema:generate && pnpm copy:assets && run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm image:docker:build\"", + "build:prod": "pnpm cleanup && pnpm env-json:schema:generate && pnpm copy:assets && run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm image:docker:build\"", + "cleanup": "rimraf dist-dev && mkdir dist-dev", + "copy:assets": "pnpm copy:webapp-assets && pnpm copy:image-env-to-json", + "copy:image-env-to-json": "run-script-os", + "copy:image-env-to-json:linux:darwin": "cp ./node_modules/@kie-tools/image-env-to-json/dist/linux/image-env-to-json-standalone ./dist-dev/", + "copy:image-env-to-json:win32": "pnpm powershell \"Copy-Item ./node_modules/@kie-tools/image-env-to-json/dist/linux/image-env-to-json-standalone ./dist-dev/\"", + "copy:webapp-assets": "run-script-os", + "copy:webapp-assets:linux:darwin": "cp -R ./node_modules/@kie-tools/sonataflow-management-console-webapp/dist/ ./dist-dev/sonataflow-management-console-webapp", + "copy:webapp-assets:win32": "pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/sonataflow-management-console-webapp/dist/ ./dist-dev/sonataflow-management-console-webapp\"", + "env-json:schema:generate": "ts-json-schema-generator --tsconfig ./node_modules/@kie-tools/sonataflow-management-console-webapp/tsconfig.json --path ./node_modules/@kie-tools/sonataflow-management-console-webapp/src/env/EnvJson.ts --type EnvJson --id EnvJson --out ./dist-dev/EnvJson.schema.json", + "image:docker:build": "kie-tools--image-builder build -r \"$(build-env sonataflowManagementConsoleImageEnv.registry)\" -a \"$(build-env sonataflowManagementConsoleImageEnv.account)\" -n \"$(build-env sonataflowManagementConsoleImageEnv.name)\" -t \"$(build-env sonataflowManagementConsoleImageEnv.buildTag)\" --build-arg SONATAFLOW_MANAGEMENT_CONSOLE_PORT=\"$(build-env sonataflowManagementConsoleImageEnv.port)\"" + }, + "devDependencies": { + "@kie-tools/image-builder": "workspace:*", + "@kie-tools/image-env-to-json": "workspace:*", + "@kie-tools/root-env": "workspace:*", + "@kie-tools/sonataflow-management-console-image-env": "workspace:*", + "@kie-tools/sonataflow-management-console-webapp": "workspace:*", + "rimraf": "^3.0.2", + "run-script-os": "^1.1.6", + "ts-json-schema-generator": "^1.1.2" + } +} diff --git a/packages/sonataflow-management-console-webapp/README.md b/packages/sonataflow-management-console-webapp/README.md new file mode 100644 index 00000000000..e201efa6ad0 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/README.md @@ -0,0 +1,76 @@ + + +# SonataFlow Management Console Webapp + +The Sonataflow Management Console Webapp is a production-ready web application designed for managing and monitoring serverless workflows. It includes security features such as user authentication integrating with Keycloak Server. + +## Enabling Keycloak security + +### Starting and Configuring the Keycloak Server + +To start a Keycloak Server you can use Docker and just run the following command: + +``` +docker run -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -v ./dev/config/sonataflow-realm.json:/opt/keycloak/data/import/realm.json -p 8280:8080 registry.redhat.io/rhbk/keycloak-rhel9:24 start-dev --import-realm +``` + +You should be able to access your Keycloak Server at [localhost:8280/admin](http://localhost:8280/admin) +and verify keycloak server is running properly: log in as the admin user to access the Keycloak Administration Console. +Username should be admin and password admin. + +The following are the users available in keycloak + +| Login | Password | Roles | +| ----- | -------- | ------------------- | +| admin | admin | _admin_, _managers_ | +| alice | alice | _user_ | +| jdoe | jdoe | _managers_ | + +To change any of this client configuration access to http://localhost:8280/admin/master/console/#/kogito. + +### Changing configs + +Enable `PROD` env mode by running the app with: + +`SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__sonataflowEnvMode=PROD pnpm start` + +--- + +Apache KIE (incubating) is an effort undergoing incubation at The Apache Software +Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is +required of all newly accepted projects until a further review indicates that +the infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of the +code, it does indicate that the project has yet to be fully endorsed by the ASF. + +Some of the incubating project’s releases may not be fully compliant with ASF +policy. For example, releases may have incomplete or un-reviewed licensing +conditions. What follows is a list of known issues the project is currently +aware of (note that this list, by definition, is likely to be incomplete): + +- Hibernate, an LGPL project, is being used. Hibernate is in the process of + relicensing to ASL v2 +- Some files, particularly test files, and those not supporting comments, may + be missing the ASF Licensing Header + +If you are planning to incorporate this work into your product/project, please +be aware that you will need to conduct a thorough licensing review to determine +the overall implications of including this work. For the current status of this +project through the Apache Incubator visit: +https://incubator.apache.org/projects/kie.html diff --git a/packages/sonataflow-management-console-webapp/build/defaultEnvJson.ts b/packages/sonataflow-management-console-webapp/build/defaultEnvJson.ts new file mode 100644 index 00000000000..ac51ebae736 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/build/defaultEnvJson.ts @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { EnvJson } from "../src/env/EnvJson"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import { env } from "../env"; + +const buildEnv: any = env; // build-env is not typed + +const version = require("../package.json").version; + +export const defaultEnvJson: EnvJson = { + KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID: "kogito-console-react", + KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK: false, + KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL: "http://localhost:8280/realms/kogito/.well-known/openid-configuration", + KOGITO_CONSOLES_KEYCLOAK_REALM: "kogito", + KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY: 30, + KOGITO_CONSOLES_KEYCLOAK_URL: "http://localhost:8280", + SONATAFLOW_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT: buildEnv.sonataflowManagementConsoleWebapp.sonataflowDataIndexUrl, + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_NAME: "SonataFlow Management Console", + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_VERSION: version, + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE: buildEnv.sonataflowManagementConsoleWebapp.sonataflowEnvMode, +}; diff --git a/packages/sonataflow-management-console-webapp/dev/config/sonataflow-realm.json b/packages/sonataflow-management-console-webapp/dev/config/sonataflow-realm.json new file mode 100644 index 00000000000..1969c55cad9 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/dev/config/sonataflow-realm.json @@ -0,0 +1,1996 @@ +{ + "realm": "kogito", + "notBefore": 0, + "revokeRefreshToken": false, + "refreshTokenMaxReuse": 0, + "accessTokenLifespan": 300, + "accessTokenLifespanForImplicitFlow": 900, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 36000, + "ssoSessionIdleTimeoutRememberMe": 0, + "ssoSessionMaxLifespanRememberMe": 0, + "offlineSessionIdleTimeout": 2592000, + "offlineSessionMaxLifespanEnabled": false, + "offlineSessionMaxLifespan": 5184000, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "enabled": true, + "sslRequired": "external", + "registrationAllowed": false, + "registrationEmailAsUsername": false, + "rememberMe": false, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": false, + "editUsernameAllowed": false, + "bruteForceProtected": false, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "name": "confidential", + "composite": false, + "clientRole": false, + "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b", + "attributes": {} + }, + { + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "composite": false, + "clientRole": false, + "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b", + "attributes": {} + }, + { + "name": "admin", + "composite": false, + "clientRole": false, + "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b", + "attributes": {} + }, + { + "name": "user", + "composite": false, + "clientRole": false, + "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b", + "attributes": {} + }, + { + "name": "offline_access", + "description": "${role_offline-access}", + "composite": false, + "clientRole": false, + "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b", + "attributes": {} + } + ], + "client": { + "realm-management": [ + { + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "realm-admin", + "description": "${role_realm-admin}", + "composite": true, + "composites": { + "client": { + "realm-management": [ + "impersonation", + "manage-identity-providers", + "view-identity-providers", + "view-realm", + "query-users", + "manage-clients", + "manage-events", + "manage-realm", + "view-authorization", + "manage-authorization", + "view-users", + "create-client", + "query-clients", + "query-groups", + "manage-users", + "view-clients", + "view-events", + "query-realms" + ] + } + }, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "realm-management": ["query-groups", "query-users"] + } + }, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "realm-management": ["query-clients"] + } + }, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + }, + { + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "376bd940-e50a-4495-80fc-9c6c07312748", + "attributes": {} + } + ], + "security-admin-console": [], + "admin-cli": [], + "kogito-service": [ + { + "name": "uma_protection", + "composite": false, + "clientRole": true, + "containerId": "0ac5df91-e044-4051-bd03-106a3a5fb9cc", + "attributes": {} + } + ], + "broker": [ + { + "name": "read-token", + "description": "${role_read-token}", + "composite": false, + "clientRole": true, + "containerId": "53d4fe53-a039-471e-886a-28eddc950e95", + "attributes": {} + } + ], + "account": [ + { + "name": "view-profile", + "description": "${role_view-profile}", + "composite": false, + "clientRole": true, + "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d", + "attributes": {} + }, + { + "name": "manage-account", + "description": "${role_manage-account}", + "composite": true, + "composites": { + "client": { + "account": ["manage-account-links"] + } + }, + "clientRole": true, + "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d", + "attributes": {} + }, + { + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "composite": false, + "clientRole": true, + "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d", + "attributes": {} + } + ] + } + }, + "groups": [], + "defaultRoles": ["uma_authorization", "offline_access"], + "requiredCredentials": ["password"], + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "otpSupportedApplications": ["FreeOTP", "Google Authenticator"], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": ["offline_access"] + } + ], + "clients": [ + { + "clientId": "account", + "name": "${client_account}", + "baseUrl": "/auth/realms/kogito/account", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "0136c3ef-0dfd-4b13-a6d0-2c8b6358edec", + "defaultRoles": ["view-profile", "manage-account"], + "redirectUris": ["/auth/realms/kogito/account/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "a951803a-79c7-46a6-8197-e32835286971", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "e1f7edd7-e15c-43b4-8736-ff8204d16836", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "kogito-frontend", + "rootUrl": "http://localhost:8082", + "adminUrl": "http://localhost:8082", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "secret", + "redirectUris": ["http://localhost:8082/*"], + "webOrigins": ["http://localhost:8082"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"], + "access": { + "view": true, + "configure": true, + "manage": true + } + }, + { + "clientId": "kogito-app", + "rootUrl": "http://localhost:8080", + "adminUrl": "http://localhost:8080", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "secret", + "redirectUris": ["http://localhost:8080/*"], + "webOrigins": ["*"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"], + "access": { + "view": true, + "configure": true, + "manage": true + } + }, + { + "clientId": "kogito-service", + "rootUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "secret", + "redirectUris": ["*"], + "webOrigins": ["*"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": true, + "authorizationServicesEnabled": true, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "name": "Client ID", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientId", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientId", + "jsonType.label": "String" + } + }, + { + "name": "Client IP Address", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientAddress", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientAddress", + "jsonType.label": "String" + } + }, + { + "name": "Client Host", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientHost", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientHost", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"], + "authorizationSettings": { + "allowRemoteResourceManagement": true, + "policyEnforcementMode": "ENFORCING", + "resources": [ + { + "name": "User Resource", + "ownerManagedAccess": false, + "attributes": {}, + "_id": "df1b74a9-3f10-499d-a581-368de48e512b", + "uris": ["/api/users/*"] + }, + { + "name": "Administration Resource", + "ownerManagedAccess": false, + "attributes": {}, + "_id": "7124e2f1-e6dc-44b4-87ab-24b010090b97", + "uris": ["/api/admin/*"] + } + ], + "policies": [ + { + "name": "Any User Policy", + "description": "Any user granted with the user role can access something", + "type": "role", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "roles": "[{\"id\":\"user\",\"required\":false}]" + } + }, + { + "name": "Only Administrators", + "description": "Only administrators can access", + "type": "role", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "roles": "[{\"id\":\"admin\",\"required\":false}]" + } + }, + { + "name": "User Resource Permission", + "type": "resource", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "resources": "[\"User Resource\"]", + "applyPolicies": "[\"Any User Policy\"]" + } + }, + { + "name": "Administration Resource Permission", + "type": "resource", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "resources": "[\"Administration Resource\"]", + "applyPolicies": "[\"Only Administrators\"]" + } + } + ], + "scopes": [], + "decisionStrategy": "UNANIMOUS" + } + }, + { + "clientId": "kogito-console-react", + "rootUrl": "http://localhost:9025", + "adminUrl": "http://localhost:9025/", + "baseUrl": "http://localhost:9025/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": ["*"], + "webOrigins": ["*"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "kogito-console-quarkus", + "rootUrl": "http://localhost:8380", + "adminUrl": "http://localhost:8380/", + "baseUrl": "http://localhost:8380/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": ["http://localhost:8380/*"], + "webOrigins": ["*"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "multivalued": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "kogito-jobs-service", + "rootUrl": "http://localhost:8080", + "adminUrl": "http://localhost:8080", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "secret", + "redirectUris": ["http://localhost:8080/*"], + "webOrigins": ["http://localhost:8080"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"], + "access": { + "view": true, + "configure": true, + "manage": true + } + }, + { + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "c41b709a-a012-4c69-89d7-4f926dba0619", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + }, + { + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "baseUrl": "/auth/admin/kogito/console/index.html", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "e571b211-2550-475d-b87f-116ff54091ee", + "redirectUris": ["/auth/admin/kogito/console/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"], + "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"] + } + ], + "clientScopes": [ + { + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${addressScopeConsentText}" + }, + "protocolMappers": [ + { + "name": "address", + "protocol": "openid-connect", + "protocolMapper": "oidc-address-mapper", + "consentRequired": false, + "config": { + "user.attribute.formatted": "formatted", + "user.attribute.country": "country", + "user.attribute.postal_code": "postal_code", + "userinfo.token.claim": "true", + "user.attribute.street": "street", + "id.token.claim": "true", + "user.attribute.region": "region", + "access.token.claim": "true", + "user.attribute.locality": "locality" + } + } + ] + }, + { + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${emailScopeConsentText}" + }, + "protocolMappers": [ + { + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "name": "email verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "emailVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email_verified", + "jsonType.label": "boolean" + } + } + ] + }, + { + "name": "microprofile-jwt", + "description": "Microprofile - JWT built-in scope", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "name": "upn", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "upn", + "jsonType.label": "String" + } + }, + { + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "multivalued": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + } + ] + }, + { + "name": "offline_access", + "description": "OpenID Connect built-in scope: offline_access", + "protocol": "openid-connect", + "attributes": { + "consent.screen.text": "${offlineAccessScopeConsentText}", + "display.on.consent.screen": "true" + } + }, + { + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${phoneScopeConsentText}" + }, + "protocolMappers": [ + { + "name": "phone number verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "phoneNumberVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number_verified", + "jsonType.label": "boolean" + } + }, + { + "name": "phone number", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "phoneNumber", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number", + "jsonType.label": "String" + } + } + ] + }, + { + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${profileScopeConsentText}" + }, + "protocolMappers": [ + { + "name": "nickname", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "nickname", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "nickname", + "jsonType.label": "String" + } + }, + { + "name": "zoneinfo", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "zoneinfo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "zoneinfo", + "jsonType.label": "String" + } + }, + { + "name": "updated at", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "updatedAt", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "updated_at", + "jsonType.label": "String" + } + }, + { + "name": "birthdate", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "birthdate", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "birthdate", + "jsonType.label": "String" + } + }, + { + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "name": "middle name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "middleName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "middle_name", + "jsonType.label": "String" + } + }, + { + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "name": "gender", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "gender", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "gender", + "jsonType.label": "String" + } + }, + { + "name": "picture", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "picture", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "picture", + "jsonType.label": "String" + } + }, + { + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "name": "profile", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "profile", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "profile", + "jsonType.label": "String" + } + }, + { + "name": "website", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "website", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "website", + "jsonType.label": "String" + } + } + ] + }, + { + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "true", + "consent.screen.text": "${rolesScopeConsentText}" + }, + "protocolMappers": [ + { + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "realm_access.roles", + "jsonType.label": "String", + "multivalued": "true" + } + }, + { + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + }, + { + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String", + "multivalued": "true" + } + } + ] + }, + { + "name": "web-origins", + "description": "OpenID Connect scope for add allowed web origins to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false", + "consent.screen.text": "" + }, + "protocolMappers": [ + { + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": {} + } + ] + } + ], + "defaultDefaultClientScopes": ["role_list", "profile", "email", "roles", "web-origins"], + "defaultOptionalClientScopes": ["offline_access", "address", "phone", "microprofile-jwt"], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + }, + "smtpServer": {}, + "eventsEnabled": false, + "eventsListeners": ["jboss-logging"], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-full-name-mapper", + "saml-user-attribute-mapper", + "saml-user-property-mapper", + "oidc-address-mapper", + "saml-role-list-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-usermodel-property-mapper" + ] + } + }, + { + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": ["true"], + "client-uris-must-match": ["true"] + } + }, + { + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": ["200"] + } + }, + { + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "oidc-full-name-mapper", + "saml-role-list-mapper", + "saml-user-property-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-address-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper" + ] + } + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEowIBAAKCAQEAn5T13suF8mlS+pJXp0U1bto41nW55wpcs+Rps8ZVCRyJKWqzwSCYnI7lm0rB2wBpAAO4OPoj1zlmVoFmBPsDU9Xf7rjsJb5LIzIQDCZY44aSDZt6RR+gakPiQvlzHyW/RozYpngDJF7TsTD7rdRF1xQ4RprfBF8fwK/xsU7pxbeom5xDHZhz3fiw8s+7UdbmnazDHfAjU58aUrLGgVRfUsuoHjtsptYlOIXEifaeMetXZE+HhqLYRHQPDap5fbBJl773Trosn7N9nmzN4x1xxGj9So21WC5UboQs9sAIVgizc4omjZ5Y4RN9HLH7G4YwJctNntzmnJhDui9zAO+zSQIDAQABAoIBADi+F7rTtVoft0Cfnok8o6Y58/HVxHdxiMryUd95iy0FN4RBi48FTx6D9QKFz25Ws/8sU2n3D51srIXf1u24b1N0/f39RQKaqk7mcyxOylaEuBQcj5pah4ihgKd92UBfBKdKV5LBo6RgD3e2yhbiHr8+UlBQqzH7vOef6Bm6zIbfmi3N88swAJhP0YizRZFklsbmLsK6nkwyro00CHJvPVKSBbM+ad+/zIBsLw56MvNngB5TuFguUgoljd6M1T2z4utmZGlTUqrfE1onAVLJZoGnRohyIr7dJEg6YxWR70PxsgmkDKyeRvet9P1trO0n+OSprusfrC3cHJStabap1V0CgYEA1A/CtsqTnjdYYsB19eumZgdpzUgNc/YEAzZ/OWb8yTLoB2ncci+63A1rXHUXAqJFY7vtjn5mxv7SuASNbUrzq+6KfZvC1x9XEtnczqT/ypunNfxmIZuj8Nuu6vtURguZ8kPPwdkI8toTizRFeRE5ZDBvoQryiEVYugfHaHT5vzsCgYEAwKWODwquI0Lv9BuwdNVrBXQpkKh3ZfYOA7i9xvhxlM7xUu8OMCwwCPn3r7vrW5APjTqX4h330mJ44SLEs+7gbCUs4BbJBLA6g0ChlHa9PTkxp6tk2nDF/B34fxiZSRkE85L+d+at0Dc3hnlzLCJCzJawGpoPniPU9e4w0p4dN0sCgYAsGnMGjS8SUrRhJWHjGXVr9tK8TOXvXhULjgP7rj2Yoqu7Dvs4DFEyft/7RKbad2EzEtyfLA64CDtO5jN7rYDsGxpWcVSeZPg5BXJ0z8AbJTArfCjJiJMZ/rZsTIUEZFlKF2xYBolj6JLz+pUQTtK+0YwF1D8ItFN1rTR9twZSDQKBgQC6sPXNX+VH6LuPTjIf1x8CxwLs3EXxOpV0R9kp9GRl+HJnk6GlT30xhcThufQo5KAdllXQXIhoiuNoEoCbevhj9Vbax1oBQCNERSMRNEzKAx46xd9TzYwgeo7x5E3QR/3DaoVOfu+cY5ZcrF/PulgP2kxJS1mtQD5GIpGP2oinpwKBgGqiqTFPqRcelx76vBvTU+Jp1zM62T4AotbMrSQR/oUvqHe5Ytj/SbZx+wbbHAiyGgV700Mosyviik83YEAbR3kdOPjgYvAJJW2Y3jEMdQ7MwriXz8XLh5BGmYfVjkSOJXed9ua9WlYLKOJeXXv191BbDvrx5NXuJyVVU4vJx3YZ" + ], + "certificate": [ + "MIICnTCCAYUCBgFp4EYIrjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdwcm90ZWFuMB4XDTE5MDQwMjIyNTYxOVoXDTI5MDQwMjIyNTc1OVowEjEQMA4GA1UEAwwHcHJvdGVhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ+U9d7LhfJpUvqSV6dFNW7aONZ1uecKXLPkabPGVQkciSlqs8EgmJyO5ZtKwdsAaQADuDj6I9c5ZlaBZgT7A1PV3+647CW+SyMyEAwmWOOGkg2bekUfoGpD4kL5cx8lv0aM2KZ4AyRe07Ew+63URdcUOEaa3wRfH8Cv8bFO6cW3qJucQx2Yc934sPLPu1HW5p2swx3wI1OfGlKyxoFUX1LLqB47bKbWJTiFxIn2njHrV2RPh4ai2ER0Dw2qeX2wSZe+9066LJ+zfZ5szeMdccRo/UqNtVguVG6ELPbACFYIs3OKJo2eWOETfRyx+xuGMCXLTZ7c5pyYQ7ovcwDvs0kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAVtmRKDb4OK5iSA46tagMBkp6L7WuPpCWuHGWwobEP+BecYsShW7zP3s12oA8SNSwbhvu0CRqgzxhuypgf3hKQFVU153Erv4hzkj+8S0s5LR/ZE7tDNY2lzJ3yQKXy3Md7EkuzzvOZ50MTrcSKAanWq/ZW1OTnrtGymj5zGJnTg7mMnJzEIGePxkvPu/QdchiPBLqxfZYm1jsFGY25djOC3N/KmVcRVmPRGuu6D8tBFHlKoPfZYPdbMvsvs24aupHKRcZ+ofTCpK+2Qo8c0pSSqeEYHGmuGqC6lC6ozxtxSABPO9Q1R1tZBU7Kg5HvXUwwmoVS3EGub46YbHqbmWMLg==" + ], + "priority": ["100"] + } + }, + { + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": ["96afd00e-85cf-4d35-b18e-061d3813d8b2"], + "secret": ["qBFGKdUGf6xDgKphnRfoFzIzaFHJW4bYnZ9MinPFzN38X5_ctq-2u1q5RdZzeJukXvk2biHB8_s3DxWmmLZFsA"], + "priority": ["100"], + "algorithm": ["HS256"] + } + }, + { + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "kid": ["b04473d3-8395-4016-b455-19a9e951106b"], + "secret": ["x68mMOVdz3qKWzltzReV0g"], + "priority": ["100"] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "authenticationFlows": [ + { + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "idp-email-verification", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-jwt", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-secret-jwt", + "requirement": "ALTERNATIVE", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-x509", + "requirement": "ALTERNATIVE", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "http challenge", + "description": "An authentication flow based on challenge-response HTTP Authentication Schemes", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "no-cookie-redirect", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "basic-auth", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "basic-auth-otp", + "requirement": "DISABLED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-credential-email", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + } + ], + "authenticatorConfig": [ + { + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "priority": 10, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": false, + "defaultAction": false, + "priority": 20, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "priority": 30, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 40, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "priority": 50, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "direct grant", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "_browser_header.xXSSProtection": "1; mode=block", + "_browser_header.xFrameOptions": "SAMEORIGIN", + "_browser_header.strictTransportSecurity": "max-age=31536000; includeSubDomains", + "permanentLockout": "false", + "quickLoginCheckMilliSeconds": "1000", + "_browser_header.xRobotsTag": "none", + "maxFailureWaitSeconds": "900", + "minimumQuickLoginWaitSeconds": "60", + "failureFactor": "30", + "actionTokenGeneratedByUserLifespan": "300", + "maxDeltaTimeSeconds": "43200", + "_browser_header.xContentTypeOptions": "nosniff", + "offlineSessionMaxLifespan": "5184000", + "actionTokenGeneratedByAdminLifespan": "43200", + "_browser_header.contentSecurityPolicyReportOnly": "", + "bruteForceProtected": "false", + "_browser_header.contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "waitIncrementSeconds": "60", + "offlineSessionMaxLifespanEnabled": "false" + }, + "users": [ + { + "username": "admin", + "enabled": true, + "totp": false, + "emailVerified": false, + "credentials": [ + { + "type": "password", + "hashedSaltedValue": "NICTtwsvSxJ5hL8hLAuleDUv9jwZcuXgxviMXvR++cciyPtiIEStEaJUyfA9DOir59awjPrHOumsclPVjNBplA==", + "salt": "T/2P5o5oxFJUEk68BRURRg==", + "hashIterations": 27500, + "counter": 0, + "algorithm": "pbkdf2-sha256", + "digits": 0, + "period": 0, + "createdDate": 1554245879354, + "config": {} + } + ], + "disableableCredentialTypes": ["password"], + "requiredActions": [], + "realmRoles": ["admin", "confidential", "user"], + "notBefore": 0, + "groups": [] + }, + { + "username": "alice", + "enabled": true, + "totp": false, + "emailVerified": false, + "credentials": [ + { + "type": "password", + "hashedSaltedValue": "A3okqV2T/ybXTVEgKfosoSjP8Yc9IZbFP/SY4cEd6hag7TABQrQ6nUSuwagGt96l8cw1DTijO75PqX6uiTXMzw==", + "salt": "sl4mXx6T9FypPH/s9TngfQ==", + "hashIterations": 27500, + "counter": 0, + "algorithm": "pbkdf2-sha256", + "digits": 0, + "period": 0, + "createdDate": 1554245879116, + "config": {} + } + ], + "disableableCredentialTypes": ["password"], + "requiredActions": [], + "realmRoles": ["user"], + "notBefore": 0, + "groups": [] + }, + { + "username": "jdoe", + "enabled": true, + "totp": false, + "emailVerified": false, + "credentials": [ + { + "type": "password", + "hashedSaltedValue": "JV3DUNLjqOadjbBOtC4rvacQI553CGaDGAzBS8MR5ReCr7SwF3E6CsW3T7/XO8ITZAsch8+A/6loeuCoVLLJrg==", + "salt": "uCbOH7HZtyDtMd0E9DG/nw==", + "hashIterations": 27500, + "counter": 0, + "algorithm": "pbkdf2-sha256", + "digits": 0, + "period": 0, + "createdDate": 1554245879227, + "config": {} + } + ], + "disableableCredentialTypes": ["password"], + "requiredActions": [], + "realmRoles": ["confidential", "user"], + "notBefore": 0, + "groups": [] + } + ], + "keycloakVersion": "6.0.0", + "userManagedAccessAllowed": false +} diff --git a/packages/sonataflow-management-console-webapp/env/index.js b/packages/sonataflow-management-console-webapp/env/index.js new file mode 100644 index 00000000000..0c418cfb794 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/env/index.js @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/build-env"); + +module.exports = composeEnv([require("@kie-tools/root-env/env")], { + vars: varsWithName({ + SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__sonataflowDataIndexUrl: { + default: "http://localhost:4000/graphql", + description: "URL for the Data Index service", + }, + SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__sonataflowEnvMode: { + default: "DEV", + description: "DEV or PROD. PROD enables Keycloak integration", + }, + SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__host: { + default: "localhost", + description: "Webpack server hostname", + }, + SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__port: { + default: "9025", + description: "Webpack server port", + }, + }), + get env() { + return { + sonataflowManagementConsoleWebapp: { + sonataflowDataIndexUrl: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__sonataflowDataIndexUrl), + sonataflowEnvMode: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__sonataflowEnvMode), + host: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__host), + port: getOrDefault(this.vars.SONATAFLOW_MANAGEMENT_CONSOLE_WEBAPP__port), + }, + }; + }, +}); diff --git a/packages/sonataflow-management-console-webapp/jest.config.js b/packages/sonataflow-management-console-webapp/jest.config.js new file mode 100644 index 00000000000..80d530eef24 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/jest.config.js @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + globals: { + "ts-jest": { + tsconfig: "/tsconfig.json", + }, + }, + reporters: ["default", ["jest-junit", { outputFile: "./dist-tests/junit-report.xml" }]], + moduleDirectories: ["node_modules", "src"], + moduleFileExtensions: ["js", "jsx", "ts", "tsx"], + testRegex: "/tests/unit/.*\\.test\\.(jsx?|tsx?)$", + transform: { + "^.+\\.jsx?$": ["babel-jest", { presets: [["@babel/env", { targets: { node: "current" } }], "@babel/react"] }], + "^.+\\.tsx?$": "ts-jest", + }, + moduleNameMapper: { + "\\.(css|less|sass|scss)$": "/tests/__mocks__/styleMock.js", + }, +}; diff --git a/packages/sonataflow-management-console-webapp/package.json b/packages/sonataflow-management-console-webapp/package.json new file mode 100644 index 00000000000..981efbee3a7 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/package.json @@ -0,0 +1,119 @@ +{ + "name": "@kie-tools/sonataflow-management-console-webapp", + "version": "0.0.0", + "license": "Apache-2.0", + "author": "", + "keywords": [], + "homepage": "https://github.com/apache/incubator-kie-tools", + "repository": { + "type": "git", + "url": "https://github.com/apache/incubator-kie-tools.git" + }, + "bugs": { + "url": "https://github.com/apache/incubator-kie-tools/issues" + }, + "main": "index.js", + "scripts": { + "build:dev": "rimraf dist && webpack --env dev", + "build:prod": "pnpm lint && pnpm test && rimraf dist && webpack", + "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", + "start": "concurrently 'pnpm start:dev-webapp' 'pnpm start:sonataflow-dev-app'", + "start:dev-webapp": "webpack serve --host 0.0.0.0 --env dev", + "start:sonataflow-dev-app": "npm --prefix ./node_modules/@kie-tools/sonataflow-dev-app run start", + "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" + }, + "dependencies": { + "@kie-tools-core/editor": "workspace:*", + "@kie-tools-core/keyboard-shortcuts": "workspace:*", + "@kie-tools-core/react-hooks": "workspace:*", + "@kie-tools/dashbuilder-client": "workspace:*", + "@kie-tools/runtime-tools-components": "workspace:*", + "@kie-tools/runtime-tools-process-enveloped-components": "workspace:*", + "@kie-tools/runtime-tools-process-gateway-api": "workspace:*", + "@kie-tools/runtime-tools-process-webapp-components": "workspace:*", + "@kie-tools/runtime-tools-shared-enveloped-components": "workspace:*", + "@kie-tools/runtime-tools-shared-gateway-api": "workspace:*", + "@kie-tools/runtime-tools-shared-webapp-components": "workspace:*", + "@kie-tools/runtime-tools-swf-gateway-api": "workspace:*", + "@kie-tools/runtime-tools-swf-webapp-components": "workspace:*", + "@kie-tools/serverless-workflow-combined-editor": "workspace:*", + "@kie-tools/serverless-workflow-diagram-editor-assets": "workspace:*", + "@kie-tools/serverless-workflow-diagram-editor-envelope": "workspace:*", + "@kie-tools/serverless-workflow-text-editor": "workspace:*", + "@patternfly/patternfly": "^4.224.2", + "@patternfly/react-core": "^4.276.6", + "apollo-cache-inmemory": "1.6.6", + "apollo-client": "2.6.10", + "apollo-link-context": "^1.0.20", + "apollo-link-error": "1.1.13", + "apollo-link-http": "1.5.17", + "graphql": "14.3.1", + "history": "^4.9.0", + "monaco-editor": "^0.39.0", + "react": "^17.0.2", + "react-apollo": "3.1.3", + "react-apollo-hooks": "^0.5.0", + "react-dom": "^17.0.2", + "react-router": "^5.3.4", + "react-router-dom": "^5.3.4" + }, + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@graphql-codegen/add": "^3.2.3", + "@graphql-codegen/cli": "^2.16.5", + "@graphql-codegen/introspection": "^2.2.3", + "@graphql-codegen/typescript": "^2.8.8", + "@graphql-codegen/typescript-operations": "^2.5.13", + "@graphql-codegen/typescript-react-apollo": "^3.3.7", + "@kie-tools-core/webpack-base": "workspace:*", + "@kie-tools/eslint": "workspace:*", + "@kie-tools/root-env": "workspace:*", + "@kie-tools/sonataflow-dev-app": "workspace:*", + "@kie-tools/tsconfig": "workspace:*", + "@testing-library/jest-dom": "^6.4.6", + "@types/enzyme": "^3.10.13", + "@types/jest": "^29.5.12", + "@types/react": "^17.0.6", + "@types/react-dom": "^17.0.5", + "@types/react-router": "^5.1.20", + "@types/react-router-dom": "^5.3.3", + "@types/webpack": "^4.41.33", + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", + "babel-jest": "^25.5.1", + "concurrently": "^8.2.2", + "copy-webpack-plugin": "^11.0.0", + "core-js": "3.6.5", + "css-loader": "^5.2.6", + "css-minimizer-webpack-plugin": "^5.0.1", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.6.2", + "file-loader": "^6.2.0", + "filemanager-webpack-plugin": "^7.0.0", + "html-webpack-plugin": "^5.3.2", + "https-browserify": "^1.0.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^29.7.0", + "jest-junit": "^16.0.0", + "mini-css-extract-plugin": "^2.7.6", + "monaco-editor-webpack-plugin": "^7.0.1", + "node-polyfill-webpack-plugin": "^2.0.1", + "rimraf": "^3.0.2", + "sass-loader": "^12.3.0", + "start-server-and-test": "^2.0.3", + "stream-http": "^3.2.0", + "style-loader": "^2.0.0", + "svg-url-loader": "^8.0.0", + "ts-jest": "^29.1.5", + "ts-loader": "^9.4.2", + "ts-node": "^10.9.2", + "tsconfig-paths-webpack-plugin": "^3.5.2", + "typescript": "^5.5.3", + "url": "^0.11.3", + "url-loader": "^4.1.1", + "webpack": "^5.94.0", + "webpack-cli": "^4.10.0", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0" + } +} diff --git a/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/MonitoringReport.dash.yml b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/MonitoringReport.dash.yml new file mode 100644 index 00000000000..e52c0081322 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/MonitoringReport.dash.yml @@ -0,0 +1,300 @@ +properties: + dataIndexUrl: ${dataIndexUrl} + # seconds + refresh: 10 + + # cards size (change the template for width) + cardsHeight: 80 +global: + allowUrlProperties: true + settings: + refresh: + interval: ${refresh} + columns: + - id: Total + pattern: "#" + html: + html: >- +
+

${value}

+

${title}

+
+datasets: + - uuid: nodes + expression: >- + $.data.ProcessInstances.( + $map(nodes, function($n){ + [processId,$n.type, $n.name, $n.exit ? $toMillis($n.exit) - $toMillis($n.enter) : -1] + }); + ) + url: ${dataIndexUrl}/?query=%7BProcessInstances%7BprocessId%20nodes%7B%20nodeId%20type%20name%20enter%20exit%20%7D%7D%7D%0A + columns: + - id: workflowId + - id: type + - id: name + - id: time + type: number + - uuid: workflows + expression: >- + $.data.ProcessInstances.[ id, businessKey ? businessKey : "", processId, processName, state, $fromMillis($toMillis(start)), $fromMillis($toMillis(lastUpdate)), end ? $toMillis(end) - $toMillis(start) : -1, error ? error.message : ""] + url: ${dataIndexUrl}/?query=%7BProcessInstances%7Bid%20processId%20businessKey%20processName%20serviceUrl%20state%20start%20end%20lastUpdate%20error%20%7Bmessage%7D%7D%7D%0A + columns: + - id: id + - id: businessKey + - id: workflowId + - id: workflowName + - id: state + - id: startDate + type: DATE + - id: lastUpdate + type: DATE + - id: duration + type: number + - id: errorMessage +pages: + - properties: + margin-left: 5px + rows: + - columns: + - span: "11" + components: + - html: "Filter" + properties: + font-weight: bolder + - properties: + width: "150px" + margin-bottom: "20px" + settings: + type: SELECTOR + filter: + notification: true + lookup: + uuid: workflows + group: + - columnGroup: + source: workflowId + functions: + - source: workflowId + column: Workflow + - properties: + margin-left: 30px + text-align: center + columns: + - span: 2 + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "fa fa-cubes"; + filter: + listening: true + general: + title: Workflows + lookup: + uuid: workflows + group: + - functions: + - source: Total + function: COUNT + - span: 2 + properties: + color: blue + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "fa fa-check"; + filter: + listening: true + general: + title: Completed + lookup: + uuid: workflows + filter: + - column: state + function: EQUALS_TO + args: + - COMPLETED + group: + - functions: + - source: Total + function: COUNT + - span: 2 + properties: + color: green + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "pficon pficon-ok"; + filter: + listening: true + general: + title: Active + lookup: + uuid: workflows + filter: + - column: state + function: EQUALS_TO + args: + - ACTIVE + group: + - functions: + - source: Total + function: COUNT + - span: 2 + properties: + color: orange + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "fa fa-clock-o"; + filter: + listening: true + general: + title: Pending + lookup: + uuid: workflows + filter: + - column: state + function: EQUALS_TO + args: + - PENDING + group: + - functions: + - source: Total + function: COUNT + - span: 2 + properties: + color: orange + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "fa fa-ban"; + filter: + listening: true + general: + title: Aborted + lookup: + uuid: workflows + filter: + - column: state + function: EQUALS_TO + args: + - ABORTED + group: + - functions: + - source: Total + function: COUNT + - span: 2 + properties: + color: red + components: + - settings: + type: METRIC + html: + javascript: document.getElementById(${this}.id + "Icon").className = "pficon-error-circle-o"; + filter: + listening: true + general: + title: Error + lookup: + uuid: workflows + filter: + - column: state + function: EQUALS_TO + args: + - ERROR + group: + - functions: + - source: Total + function: COUNT + - columns: + - components: + - html: "
" + - columns: + - components: + - settings: + type: barchart + general: + title: Functions and States Average Duration + chart: + resizable: true + extraConfiguration: >- + { + "yAxis": { + "name": "Time (ms)", + "nameLocation": "middle", + "nameGap": "45", + "nameTextStyle": { + "fontStyle": "italic" + } + } + } + filter: + listening: true + lookup: + uuid: nodes + filter: + - column: name + function: NOT_IN + args: + - EmbeddedStart + - EmbeddedEnd + - Script + - column: type + function: NOT_IN + args: + - Join + sort: + - column: Time (ms) + order: DESCENDING + group: + - columnGroup: + source: name + functions: + - source: name + - source: time + function: AVERAGE + column: Time (ms) + - columns: + - components: + - html:

Workflow List

+ - columns: + - components: + - settings: + component: table + external: + width: 100% + height: 500px + filter: + listening: true + lookup: + uuid: workflows + sort: + - column: lastUpdate + order: DESCENDING + group: + - columnsGroup: + source: workflowId + functions: + - source: id + column: Instance ID + - source: businessKey + column: Business Key + - source: workflowId + column: ID + - source: workflowName + column: Name + - source: state + column: State + - source: startDate + column: Start Date + - source: lastUpdate + column: Last Update + - source: duration + column: Duration + - source: errorMessage + column: Error Message diff --git a/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/WorkflowDetails.dash.yml b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/WorkflowDetails.dash.yml new file mode 100644 index 00000000000..efb8e0d9b20 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/WorkflowDetails.dash.yml @@ -0,0 +1,255 @@ +properties: + dataIndexUrl: ${dataIndexUrl} + # charts size + chartsWidth: 95% + chartsHeight: 450px + + cardsHeight: 80 + cardsWidth: 90% + + workflowId: c1722210-c0ba-4449-a007-f1725fd8afe4 + +global: + allowUrlProperties: true + settings: + html: + html: >- +
+

${value}

+

${title}

+
+datasets: + - uuid: nodes + expression: >- + $.data.ProcessInstances.( + $start := $min(nodes.($toMillis(enter))); + $end := $max(nodes.(exit ? $toMillis(exit) : -1)) - $start; + $map(nodes, function($n) { + [ + processId, + state, + id, + start, + 0, + $end , + $end / 2, + variables, + $n.type, + $n.name, + $n.nodeId, + $toMillis($n.enter), + $toMillis($n.enter) - $start, + $n.exit ? $toMillis($n.exit) - $start : -1, + $n.exit ? $toMillis($n.exit) - $toMillis($n.enter) : -1 + ] + }); + ) + url: ${dataIndexUrl}/?query=%7BProcessInstances(where%3A%7Bid%3A%7Bin%3A%20%5B"${workflowId}"%5D%7D%7D)%7BprocessId%20state%20id%20start%20lastUpdate%20variables%20nodes%20%7Bid%20nodeId%20name%20type%20enter%20exit%7D%7D%7D%0A + columns: + - id: workflowId + type: label + - id: state + type: label + - id: id + type: label + - id: workflowStartDate + type: date + - id: start + type: label + - id: end + type: number + - id: middle + type: label + - id: variables + type: label + - id: type + type: label + - id: name + type: label + - id: nodeId + type: number + - id: nodeStartMillis + type: number + - id: nodeStart + type: number + - id: nodeEnd + type: number + - id: duration + type: label +pages: + - properties: + margin-left: 10px + rows: + - columns: + - components: + - settings: + type: METRIC + general: + title: State + html: + html: >- + ${value} ${workflowId} + columns: + - id: end + pattern: "#" + lookup: + uuid: nodes + group: + - functions: + - source: workflowId + - columns: + - span: 4 + components: + - settings: + type: METRIC + general: + title: Start + html: + javascript: >- + document.getElementById(${this}.id + "Icon").className = "fa fa-calendar"; + columns: + - id: end + pattern: "#" + lookup: + uuid: nodes + group: + - functions: + - source: workflowStartDate + - span: 4 + components: + - settings: + type: METRIC + general: + title: State + html: + javascript: >- + if ( "${value}" === "ERROR") { + ${this}.style.color = 'red'; + document.getElementById(${this}.id + "Icon").className = "pficon-error-circle-o"; + } + else if ( "${value}" === "COMPLETED") { + ${this}.style.color = 'blue'; + document.getElementById(${this}.id + "Icon").className = "fa fa-check"; + } else if ( "${value}" === "ACTIVE") { + ${this}.style.color = 'green'; + document.getElementById(${this}.id + "Icon").className = "pficon pficon-on-running"; + } else { + document.getElementById(${this}.id + "Icon").className = ""; + } + columns: + - id: end + pattern: "#" + lookup: + uuid: nodes + group: + - functions: + - source: state + - span: 4 + components: + - settings: + type: METRIC + general: + title: Duration (ms) + html: + javascript: >- + document.getElementById(${this}.id + "Icon").className = "fa fa-clock-o"; + columns: + - id: end + pattern: "#" + lookup: + uuid: nodes + group: + - functions: + - source: end + - columns: + - components: + - settings: + component: echarts + echarts: + option: >- + { + "xAxis":{ + "position": "top", + "type": "value" + }, + "yAxis": { + "type": "category" + }, + "series":[ + { + "itemStyle": { + "color": "#b8f2c5", + "opacity": "0.5" + }, + "emphasis" : { + "disabled": "true" + }, + "tooltip": { + "formatter": "{b}" + }, + "type":"boxplot", + "name": "Duration", + "encode":{ + "x": ["start", "nodeStart", "middle", "nodeEnd", "end"], + "y": "name", + "itemName": ["Node Duration"] + } + }, + { + "name": "detail", + "type": "scatter", + "symbolSize": "0", + "tooltip": { + "trigger": "none" + }, + "label": { + "show": "true", + "position": "right", + "align": "left", + "verticalAlign": "middle", + "fontSize": "15", + "formatter": "{@duration} ms", + "fontWeight": "bolder" + }, + "emphasis" : { + "disabled": "true" + }, + "itemStyle": { + "color": "#d00000" + }, + "encode": { + "x": "nodeStart", + "y": "name", + "label": "Duration", + "itemName": "Duration" + } + } + ] + } + external: + width: "${chartsWidth}" + height: "${chartsHeight}" + filter: + listening: "true" + lookup: + uuid: nodes + filter: + - column: name + function: NOT_IN + args: + - EmbeddedStart + - EmbeddedEnd + - Script + - column: type + function: NOT_IN + args: + - Join + - column: nodeEnd + function: NOT_IN + args: + - -1 + sort: + - column: nodeStartMillis + order: DESCENDING + - column: nodeId + order: DESCENDING diff --git a/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/setup.js b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/setup.js new file mode 100644 index 00000000000..95972bb4668 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/monitoring-webapp/setup.js @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +dashbuilder = { + /* + // possible modes are EDITOR and CLIENT - if dashboards is set then CLIENT mode is assumed + mode: "CLIENT", + // The list of client dashboards - if CLIENT mode is used and no list is provided, than the dashboard "dashboard.yml" will be attempted to load. If no dashboard is found, then client opens for upload. + // The dashboard can also be an URL + dashboards: [ "dashboard1.yaml", "dashboard2.json"], + + // base path to look for dashboards. Default is / + path: "/path", + + // Set this as true to always hide the nav bar + hideNavBar: true +*/ + hideNavBar: true, + dashboards: ["MonitoringReport.dash.yml", "WorkflowDetails.dash.yml"], +}; diff --git a/packages/sonataflow-management-console-webapp/resources/serverless-workflow-combined-editor-envelope.html b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-combined-editor-envelope.html new file mode 100644 index 00000000000..ae63b3331e4 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-combined-editor-envelope.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + +
+ + + diff --git a/packages/sonataflow-management-console-webapp/resources/serverless-workflow-diagram-editor-envelope.html b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-diagram-editor-envelope.html new file mode 100644 index 00000000000..074742c333e --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-diagram-editor-envelope.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + +
+ + + diff --git a/packages/sonataflow-management-console-webapp/resources/serverless-workflow-text-editor-envelope.html b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-text-editor-envelope.html new file mode 100644 index 00000000000..52b1d6c94b1 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/resources/serverless-workflow-text-editor-envelope.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + +
+ + + diff --git a/packages/sonataflow-management-console-webapp/serve.json b/packages/sonataflow-management-console-webapp/serve.json new file mode 100644 index 00000000000..a6a2350fd07 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/serve.json @@ -0,0 +1,3 @@ +{ + "rewrites": [{ "source": "**/*", "destination": "/index.html" }] +} diff --git a/packages/sonataflow-management-console-webapp/src/alerts/Alerts.tsx b/packages/sonataflow-management-console-webapp/src/alerts/Alerts.tsx new file mode 100644 index 00000000000..4d172967489 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/alerts/Alerts.tsx @@ -0,0 +1,194 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as React from "react"; +import { useCallback, useEffect, useImperativeHandle, useMemo, useState } from "react"; +import { AlertGroup } from "@patternfly/react-core/dist/js/components/AlertGroup"; + +type MapValueType = A extends Map ? V : never; + +export type AlertDelegate = ( + args: { close: () => void; secondsUntilAutoClose?: number } & Partial, + staticArgs: T +) => React.ReactNode; + +export interface AlertAutoCloseArgs { + durationInSeconds: number; +} + +export interface AlertsController { + closeAll(): void; + show(key: string, staticArgs: unknown): void; + close(key: string): void; + set(key: string, alertDelegate: AlertDelegate, autoCloseArgs?: AlertAutoCloseArgs): void; +} + +const AUTO_CLOSE_ALERTS_REFRESH_RATE_IN_MS = 1000; + +type AlertControl = { + alertDelegate: AlertDelegate; + autoCloseArgs?: AlertAutoCloseArgs; + isShowing: boolean; + lastShowedAt?: Date; + staticArgs: unknown; +}; + +type AlertsProps = { + className?: string; +}; + +export const Alerts = React.forwardRef((props, forwardedRef) => { + const [alerts, setAlerts] = useState(new Map()); + const [autoCloseAlertsControl, setAutoCloseAlertsControl] = useState( + new Map }>() + ); + + const changeValueForKeys = useCallback( + (prev: typeof alerts, keys: string[], args: Partial>) => { + const newAlerts = new Map(prev); + for (const key of keys) { + newAlerts.set(key, { ...newAlerts.get(key)!, ...args }); + } + return newAlerts; + }, + [] + ); + + const imperativeHandle = useMemo(() => { + return { + closeAll: () => { + setAlerts((prev) => changeValueForKeys(prev, [...prev.keys()], { isShowing: false })); + }, + close: (key) => { + setAlerts((prev) => (prev.has(key) ? changeValueForKeys(prev, [key], { isShowing: false }) : prev)); + }, + show: (key, staticArgs) => { + setAlerts((prev) => + prev.has(key) + ? changeValueForKeys(prev, [key], { isShowing: true, lastShowedAt: new Date(), staticArgs }) + : prev + ); + }, + set: (key, alertDelegate, autoCloseArgs) => { + setAlerts((prev) => { + const next = new Map(prev); + next.set(key, { + alertDelegate, + isShowing: prev.get(key)?.isShowing ?? false, + lastShowedAt: prev.get(key)?.lastShowedAt, + staticArgs: prev.get(key)?.staticArgs, + autoCloseArgs, + }); + return next; + }); + }, + }; + }, [changeValueForKeys]); + + useImperativeHandle(forwardedRef, () => imperativeHandle, [imperativeHandle]); + + const startRefreshingAlertWithKey = useCallback( + (k: string) => { + return setInterval(() => { + setAutoCloseAlertsControl((prev) => { + const next = new Map(prev); + const prevAlert = prev.get(k)!; + + if (prevAlert.secondsLeft > 1) { + next.set(k, { ...prevAlert, secondsLeft: prevAlert.secondsLeft - 1 }); + } else { + imperativeHandle.close(k); + } + + return next; + }); + }, AUTO_CLOSE_ALERTS_REFRESH_RATE_IN_MS); + }, + [imperativeHandle] + ); + + useEffect(() => { + setAutoCloseAlertsControl((prev) => { + const next = new Map(prev); + [...alerts.entries()].forEach(([k, v]) => { + if (v.isShowing && prev.has(k) && v.autoCloseArgs) { + next.set(k, { secondsLeft: v.autoCloseArgs.durationInSeconds, interval: prev.get(k)!.interval }); + } + // + else if (v.isShowing && !prev.has(k) && v.autoCloseArgs) { + const interval = startRefreshingAlertWithKey(k); + next.set(k, { secondsLeft: v.autoCloseArgs.durationInSeconds, interval }); + } + // + else if (!v.isShowing) { + const saved = prev.get(k); + if (saved) { + clearInterval(saved.interval); + next.delete(k); + } + } + }); + return next; + }); + }, [alerts, startRefreshingAlertWithKey]); + + return ( + +
+ {[...alerts.entries()] + .filter(([_, { isShowing }]) => isShowing) + .sort(([_, a], [__, b]) => a.lastShowedAt!.getTime() - b.lastShowedAt!.getTime()) // show newest at the bottom + .map(([key, { alertDelegate, autoCloseArgs, staticArgs }]) => ( + + {alertDelegate( + { + close: () => imperativeHandle.close(key), + secondsUntilAutoClose: + autoCloseAlertsControl.get(key)?.secondsLeft ?? autoCloseArgs?.durationInSeconds, + durationInSeconds: autoCloseArgs?.durationInSeconds, + }, + staticArgs + )} +
+
+ ))} +
+
+ ); +}); + +export function useAlert( + alertsController: AlertsController | undefined, + delegate: AlertDelegate, + autoCloseArgs?: AlertAutoCloseArgs +) { + const key = useMemo(() => `${Math.random()}`, []); + + useEffect(() => { + alertsController?.set(key, delegate, autoCloseArgs); + }, [alertsController, key, delegate, autoCloseArgs]); + + return useMemo( + () => ({ + close: () => alertsController?.close(key), + show: (staticArgs: T) => alertsController?.show(key, staticArgs), + }), + [alertsController, key] + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/alerts/GlobalAlertsContext.tsx b/packages/sonataflow-management-console-webapp/src/alerts/GlobalAlertsContext.tsx new file mode 100644 index 00000000000..74c2d06bece --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/alerts/GlobalAlertsContext.tsx @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as React from "react"; +import { useContext, createContext, PropsWithChildren, useMemo, useCallback } from "react"; +import { useController } from "@kie-tools-core/react-hooks/dist/useController"; +import { AlertAutoCloseArgs, AlertDelegate, Alerts, AlertsController } from "./Alerts"; + +export interface GlobalAlertsContextType { + alerts: AlertsController | undefined; + alertsRef: (controller: AlertsController) => void; +} + +export interface GlobalAlertsDispatchContextType { + closeAll(): void; + close(key: string): void; + show(key: string, staticArgs: unknown): void; + set( + key: string, + alertDelegate: AlertDelegate, + autoCloseArgs?: AlertAutoCloseArgs + ): { + close: () => void | undefined; + show: (staticArgs?: unknown) => void | undefined; + }; +} + +export const GlobalAlertsContext = createContext({} as any); +export const GlobalAlertsDispatchContext = createContext({} as any); + +export function GlobalAlertsContextProvider(props: PropsWithChildren<{}>) { + const [alerts, alertsRef] = useController(); + + const value = useMemo( + () => ({ + alerts, + alertsRef, + }), + [alerts, alertsRef] + ); + + const closeAll = useCallback(() => { + alerts?.closeAll(); + }, [alerts]); + + const close = useCallback( + (key: string) => { + alerts?.close(key); + }, + [alerts] + ); + + const show = useCallback( + (key: string, staticArgs: unknown) => { + alerts?.show(key, staticArgs); + }, + [alerts] + ); + + const set = useCallback( + (key: string, alertDelegate: AlertDelegate, autoCloseArgs?: AlertAutoCloseArgs) => { + // This setTimeout is a hack to block a setState from hapenning while Alerts is still rendering + setTimeout(() => { + return alerts?.set(key, alertDelegate, autoCloseArgs); + }); + + return { + close: () => alerts?.close(key), + show: (staticArgs: unknown) => alerts?.show(key, staticArgs), + }; + }, + [alerts] + ); + + const dispatch = useMemo( + () => ({ + closeAll, + close, + show, + set, + }), + [close, closeAll, set, show] + ); + + return ( + + + + {props.children} + + + ); +} + +export function useGlobalAlertsContext() { + return useContext(GlobalAlertsContext); +} + +export function useGlobalAlertsDispatchContext() { + return useContext(GlobalAlertsDispatchContext); +} + +export function useGlobalAlert(delegate: AlertDelegate, autoCloseArgs?: AlertAutoCloseArgs) { + const { set } = useGlobalAlertsDispatchContext(); + + const key = useMemo(() => `${Math.random()}`, []); + + return set(key, delegate, autoCloseArgs); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx new file mode 100644 index 00000000000..956f1ca73e1 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx @@ -0,0 +1,89 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import * as React from "react"; +import { useCallback } from "react"; +import { HashRouter as Router, Route, Switch } from "react-router-dom"; +import { ApolloProvider } from "react-apollo"; +import { ApolloClient } from "apollo-client"; +import { + KogitoAppContextProvider, + UserContext, +} from "@kie-tools/runtime-tools-components/dist/contexts/KogitoAppContext"; +import { PageLayout } from "@kie-tools/runtime-tools-components/dist/components/PageLayout"; +import { WorkflowListContextProviderWithApolloClient } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowList"; +import { WorkflowDefinitionListContextProviderWithApolloClient } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDefinitionList"; +import { WorkflowFormContextProvider } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowForm"; +import { WorkflowDetailsContextProviderWithApolloClient } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDetails"; +import { CloudEventFormContextProvider } from "@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventForm"; +import ManagementConsoleNav from "../ManagementConsoleNav/ManagementConsoleNav"; +import managementConsoleLogo from "../../../static/sonataflowManagementConsoleLogo.svg"; +import { GlobalAlertsContextProvider } from "../../../alerts/GlobalAlertsContext"; + +interface IOwnProps { + apolloClient: ApolloClient; + userContext: UserContext; + children: React.ReactElement; +} + +const ManagementConsole: React.FC = ({ apolloClient, userContext, children }) => { + const renderPage = useCallback( + (routeProps) => { + return ( + routeProps.history.push("/")} + withHeader={true} + PageNav={} + ouiaId="management-console" + > + {children} + + ); + }, + [children] + ); + + return ( + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default ManagementConsole; diff --git a/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx new file mode 100644 index 00000000000..b43619a0760 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx @@ -0,0 +1,67 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import * as React from "react"; +import { Nav, NavItem, NavList } from "@patternfly/react-core/dist/js/components/Nav"; +import { Link } from "react-router-dom"; +import { ouiaAttribute } from "@kie-tools/runtime-tools-components/dist/ouiaTools"; +import { routes } from "../../../navigation/Routes"; + +interface IOwnProps { + pathname: string; +} + +const ManagementConsoleNav: React.FC = ({ pathname }) => { + return ( + + ); +}; + +export default ManagementConsoleNav; diff --git a/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx new file mode 100644 index 00000000000..68f7917347a --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import * as React from "react"; +import { Redirect, Route, Switch } from "react-router-dom"; +import { routes } from "../../../navigation/Routes"; +import { TriggerCloudEventPage } from "../../pages/TriggerCloudEventPage/TriggerCloudEventPage"; +import MonitoringPage from "../../pages/MonitoringPage/MonitoringPage"; +import { WorkflowDefinitionsPage } from "../../pages/WorkflowDefinitionsPage/WorkflowDefinitionsPage"; +import { WorkflowInstancesPage } from "../../pages/WorkflowInstancesPage/WorkflowInstancesPage"; +import { WorkflowDetailsPage } from "../../pages/WorkflowDetailsPage/WorkflowDetailsPage"; +import { WorkflowFormPage } from "../../pages/WorkflowFormPage/WorkflowFormPage"; + +const ManagementConsoleRoutes: React.FC = () => { + return ( + + } + /> + + + + {({ match }) => } + + + {({ match }) => } + + + + + + + + + ); +}; + +export default ManagementConsoleRoutes; diff --git a/packages/sonataflow-management-console-webapp/src/components/console/index.ts b/packages/sonataflow-management-console-webapp/src/components/console/index.ts new file mode 100644 index 00000000000..0d170461365 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/console/index.ts @@ -0,0 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +export { default as ManagementConsole } from "./ManagementConsole/ManagementConsole"; +export { default as ManagementConsoleNav } from "./ManagementConsoleNav/ManagementConsoleNav"; +export { default as ManagementConsoleRoutes } from "./ManagementConsoleRoutes/ManagementConsoleRoutes"; diff --git a/packages/sonataflow-management-console-webapp/src/components/containers/MonitoringContainer/MonitoringContainer.tsx b/packages/sonataflow-management-console-webapp/src/components/containers/MonitoringContainer/MonitoringContainer.tsx new file mode 100644 index 00000000000..6f99804e576 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/containers/MonitoringContainer/MonitoringContainer.tsx @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from "react"; +import { Dashboard, MonitoringView } from "@kie-tools/runtime-tools-shared-enveloped-components/dist/monitoring"; + +interface Props { + dataIndexUrl?: string; + dashboard?: Dashboard; + workflow?: string; +} + +const MonitoringContainer: React.FC = ({ workflow, dashboard, dataIndexUrl }) => { + const _dashboard = dashboard || Dashboard.MONITORING; + return ; +}; + +export default MonitoringContainer; diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/MonitoringPage/MonitoringPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/MonitoringPage/MonitoringPage.tsx new file mode 100644 index 00000000000..8a08b3e5343 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/MonitoringPage/MonitoringPage.tsx @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { ReactText, useCallback, useEffect, useState } from "react"; +import { Toolbar, ToolbarContent, ToolbarGroup, ToolbarItem } from "@patternfly/react-core/dist/js/components/Toolbar"; +import { Select, SelectOption, SelectVariant } from "@patternfly/react-core/dist/js/components/Select"; +import { Tab, Tabs, TabTitleText } from "@patternfly/react-core/dist/js/components/Tabs"; +import { Card } from "@patternfly/react-core/dist/js/components/Card"; +import { PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { + OUIAProps, + ouiaPageTypeAndObjectId, + componentOuiaProps, +} from "@kie-tools/runtime-tools-components/dist/ouiaTools"; +import { PageSectionHeader } from "@kie-tools/runtime-tools-components/dist/components/PageSectionHeader"; +import MonitoringContainer from "../../containers/MonitoringContainer/MonitoringContainer"; +import { + KogitoEmptyState, + KogitoEmptyStateType, +} from "@kie-tools/runtime-tools-components/dist/components/KogitoEmptyState"; +import "../../styles.css"; +import { WorkflowInstance, WorkflowInstanceState } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { Dashboard } from "@kie-tools/runtime-tools-shared-enveloped-components/dist/monitoring"; +import { + WorkflowListGatewayApi, + useWorkflowListGatewayApi, +} from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowList"; +import { OrderBy } from "@kie-tools/runtime-tools-shared-gateway-api/dist/types"; + +interface Props { + dataIndexUrl?: string; +} +const MonitoringPage: React.FC = ({ ouiaId, ouiaSafe, dataIndexUrl }) => { + const gatewayApi: WorkflowListGatewayApi = useWorkflowListGatewayApi(); + const [hasWorkflow, setHasWorkflow] = useState(false); + const [loading, setLoading] = useState(true); + const [openWorkflowSelect, setOpenWorkflowSelect] = useState(false); + const [dashboard, setDashboard] = useState(Dashboard.MONITORING); + const [workflowList, setWorkflowList] = useState([]); + const [selectedWorkflow, setSelectedWorkflow] = useState(); + const [activeTabKey, setActiveTabKey] = useState(0); + + const initialLoad = useCallback( + () => + gatewayApi.initialLoad( + { + status: [ + WorkflowInstanceState.Aborted, + WorkflowInstanceState.Active, + WorkflowInstanceState.Completed, + WorkflowInstanceState.Error, + WorkflowInstanceState.Suspended, + ], + businessKey: [], + }, + { start: OrderBy.DESC } + ), + [gatewayApi] + ); + + const loadWorkflowList = useCallback(() => { + gatewayApi.query(0, 1000).then((list) => { + setSelectedWorkflow(list[0]); + setWorkflowList(list); + }); + }, [gatewayApi]); + + useEffect(() => { + const intervaId = setInterval(() => { + if (!hasWorkflow) { + initialLoad(); + gatewayApi.query(0, 1).then((list) => { + if (list.length > 0) { + setHasWorkflow(true); + loadWorkflowList(); + } + setLoading(false); + }); + } + }, 500); + return () => clearInterval(intervaId); + }, [hasWorkflow, loading, gatewayApi, initialLoad, loadWorkflowList]); + + useEffect(() => { + if (dashboard === Dashboard.DETAILS) { + loadWorkflowList(); + } + }, [dashboard, loadWorkflowList]); + + useEffect(() => { + return ouiaPageTypeAndObjectId("monitoring"); + }); + + return ( + + + {hasWorkflow ? ( + <> + { + setActiveTabKey(tabIndex); + const dashboard = tabIndex === 0 ? Dashboard.MONITORING : Dashboard.DETAILS; + setDashboard(dashboard); + loadWorkflowList(); + }} + isBox + variant="light300" + style={{ + background: "white", + }} + > + Summary}> + Workflows}> + + + + {dashboard === Dashboard.DETAILS && ( + + + + + + + + + + )} + + + + + ) : ( + + )} + + ); +}; + +export default MonitoringPage; diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/TriggerCloudEventPage/TriggerCloudEventPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/TriggerCloudEventPage/TriggerCloudEventPage.tsx new file mode 100644 index 00000000000..f2f97533081 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/TriggerCloudEventPage/TriggerCloudEventPage.tsx @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback } from "react"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Text, TextContent, TextVariants } from "@patternfly/react-core/dist/js/components/Text"; +import { CloudEventFormContainer } from "@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventFormContainer"; +import { Alert, AlertActionCloseButton } from "@patternfly/react-core/dist/js/components/Alert"; +import { useGlobalAlert } from "../../../alerts/GlobalAlertsContext"; +import { WorkflowDefinition } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { useHistory } from "react-router"; + +const PAGE_TITLE = "Trigger Cloud Event"; +const KUBESMARTS_CLOUD_SOURCE = "/local/kubesmarts"; + +export function TriggerCloudEventPage() { + const history = useHistory(); + const workflowDefinition: WorkflowDefinition = (history.location.state as any)["workflowDefinition"]; + + const triggerEventSuccessAlert = useGlobalAlert<{ message: string }>( + useCallback(({ close }, { message }) => { + return ( + } + /> + ); + }, []), + { durationInSeconds: 5 } + ); + + const startWorkflowErrorAlert = useGlobalAlert<{ message: string }>( + useCallback(({ close }, { message }) => { + return ( + + Something went wrong while triggering your workflow. +
+ {`Reason: ${message}`} + + } + aria-live="polite" + data-testid="alert-upload-error" + actionClose={} + /> + ); + }, []), + { durationInSeconds: 5 } + ); + + const onStartWorkflowError = useCallback( + (error) => { + const message = error?.message || "Unknown error. More details in the developer tools console."; + startWorkflowErrorAlert.show({ message }); + }, + [startWorkflowErrorAlert] + ); + + const onTriggerEventSuccessAlert = useCallback(() => { + triggerEventSuccessAlert.show({ message: "The cloud event has been successfully triggered." }); + }, [triggerEventSuccessAlert]); + + const onTriggerStartCloudEventSuccess = useCallback( + (businessKey: string) => { + triggerEventSuccessAlert.show({ + message: `A workflow with business key ${businessKey} has been successfully triggered.`, + }); + }, + [triggerEventSuccessAlert] + ); + + return ( + + + + {PAGE_TITLE} + + Trigger a cloud event to start new workflow instances or to send HTTP Cloud Events to active workflow + instances that are waiting for an event to advance. + + + + + + + + + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDefinitionsPage/WorkflowDefinitionsPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDefinitionsPage/WorkflowDefinitionsPage.tsx new file mode 100644 index 00000000000..39a32fde1f3 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDefinitionsPage/WorkflowDefinitionsPage.tsx @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback } from "react"; +import { WorkflowDefinitionListContainer } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDefinitionListContainer"; +import { Card } from "@patternfly/react-core/dist/esm/components/Card"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Text, TextContent, TextVariants } from "@patternfly/react-core/dist/js/components/Text"; +import { useHistory } from "react-router"; +import { routes } from "../../../navigation/Routes"; +import { WorkflowDefinition } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { CloudEventPageSource } from "@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventForm"; + +const PAGE_TITLE = "Workflow Definitions"; + +export function WorkflowDefinitionsPage() { + const history = useHistory(); + + const onOpenWorkflowForm = useCallback( + (workflowDefinition: WorkflowDefinition) => { + history.push({ + pathname: routes.runtimeToolsWorkflowForm.path({ workflowName: workflowDefinition.workflowName }), + state: { + workflowDefinition: { + workflowName: workflowDefinition.workflowName, + endpoint: workflowDefinition.endpoint, + serviceUrl: workflowDefinition.serviceUrl, + }, + }, + }); + }, + [history] + ); + + const onOpenTriggerCloudEventForWorkflow = useCallback( + (workflowDefinition: WorkflowDefinition) => { + history.push({ + pathname: routes.runtimeToolsTriggerCloudEventForWorkflowDefinition.path({ + workflowName: workflowDefinition.workflowName, + }), + state: { + workflowDefinition: { + workflowName: workflowDefinition.workflowName, + endpoint: workflowDefinition.endpoint, + serviceUrl: workflowDefinition.serviceUrl, + }, + source: CloudEventPageSource.DEFINITIONS, + }, + }); + }, + [history] + ); + + return ( + + + + {PAGE_TITLE} + + Start new workflow instances from the SonataFlow service linked in your Runtime Tools settings. + + + + + + + + + + + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDetailsPage/WorkflowDetailsPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDetailsPage/WorkflowDetailsPage.tsx new file mode 100644 index 00000000000..249d103ca98 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowDetailsPage/WorkflowDetailsPage.tsx @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback, useEffect, useState } from "react"; +import { KogitoSpinner } from "@kie-tools/runtime-tools-components/dist/components/KogitoSpinner"; +import { ServerErrors } from "@kie-tools/runtime-tools-components/dist/components/ServerErrors"; +import { ouiaPageTypeAndObjectId } from "@kie-tools/runtime-tools-components/dist/ouiaTools"; +import { WorkflowInstance } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { + WorkflowDetailsGatewayApi, + useWorkflowDetailsGatewayApi, +} from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDetails"; +import { WorkflowDetailsContainer } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDetailsContainer"; +import { Card } from "@patternfly/react-core/dist/js/components/Card"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Text, TextContent, TextVariants } from "@patternfly/react-core/dist/js/components/Text"; +import { Bullseye } from "@patternfly/react-core/dist/js/layouts/Bullseye"; +import { useHistory } from "react-router"; +import { routes } from "../../../navigation/Routes"; + +const PAGE_TITLE = "Workflow Details"; + +interface WorkflowListContainerProps { + workflowId: string; +} +export function WorkflowDetailsPage(props: WorkflowListContainerProps) { + const history = useHistory(); + const gatewayApi: WorkflowDetailsGatewayApi = useWorkflowDetailsGatewayApi(); + + const [workflowInstance, setWorkflowInstance] = useState({} as WorkflowInstance); + const [isLoading, setIsLoading] = useState(false); + const [fetchError, setFetchError] = useState(""); + + useEffect(() => { + gatewayApi + .workflowDetailsQuery(props.workflowId) + .then((response) => { + setWorkflowInstance(response); + }) + .catch((error) => { + setFetchError(error); + }) + .finally(() => { + setIsLoading(false); + }); + }, [gatewayApi, props.workflowId]); + + useEffect(() => { + return ouiaPageTypeAndObjectId("workflow-details"); + }); + + const onOpenWorkflowInstanceDetails = useCallback( + (workflowId: string) => { + history.push(`/`); + history.push(routes.runtimeToolsWorkflowDetails.path({ workflowId })); + }, + [history] + ); + + return ( + + + + {PAGE_TITLE} + + Explore the execution status, details, timeline and variables of a workflow instance. + + + + + + {isLoading && ( + + + + )} + + {!isLoading && workflowInstance && Object.keys(workflowInstance).length > 0 && !fetchError ? ( + + ) : ( + <> + {fetchError.length > 0 && ( + + + + + + )} + + )} + + + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx new file mode 100644 index 00000000000..5dbe599717f --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback, useEffect, useRef } from "react"; +import { InlineEdit, InlineEditApi } from "@kie-tools/runtime-tools-components/dist/components/InlineEdit"; +import { ouiaPageTypeAndObjectId } from "@kie-tools/runtime-tools-components/dist/ouiaTools"; +import { WorkflowDefinition } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { + WorkflowFormGatewayApi, + useWorkflowFormGatewayApi, +} from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowForm"; +import { WorkflowFormContainer } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowFormContainer"; +import { Alert, AlertActionCloseButton, AlertActionLink } from "@patternfly/react-core/dist/js/components/Alert"; +import { Card, CardBody } from "@patternfly/react-core/dist/js/components/Card"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Text, TextContent, TextVariants } from "@patternfly/react-core/dist/js/components/Text"; +import { useHistory } from "react-router"; +import { routes } from "../../../navigation/Routes"; +import { useGlobalAlert } from "../../../alerts/GlobalAlertsContext"; + +const PAGE_TITLE = "Start new workflow"; + +export function WorkflowFormPage() { + const history = useHistory(); + const gatewayApi: WorkflowFormGatewayApi = useWorkflowFormGatewayApi(); + + const inlineEditRef = useRef(null); + + const workflowDefinition: WorkflowDefinition = (history.location.state as any)["workflowDefinition"]; + + const onResetForm = useCallback(() => { + gatewayApi.setBusinessKey(""); + inlineEditRef.current!.reset(); + }, [gatewayApi]); + + const getBusinessKey = () => { + return gatewayApi.getBusinessKey(); + }; + + useEffect(() => { + onResetForm(); + return ouiaPageTypeAndObjectId("workflow-form"); + }, [onResetForm]); + + const startWorkflowSuccessAlert = useGlobalAlert<{ workflowId: string }>( + useCallback( + ({ close }, { workflowId }) => { + const viewDetails = () => { + history.push({ + pathname: routes.runtimeToolsWorkflowDetails.path({ workflowId }), + }); + close(); + }; + + return ( + } + actionLinks={ + <> + {"View details"} + {"Ignore"} + + } + /> + ); + }, + [history] + ), + { durationInSeconds: 5 } + ); + + const startWorkflowErrorAlert = useGlobalAlert<{ message: string }>( + useCallback(({ close }, { message }) => { + return ( + + Something went wrong while triggering your workflow. +
+ {`Reason: ${message}`} + + } + aria-live="polite" + data-testid="alert-upload-error" + actionClose={} + /> + ); + }, []), + { durationInSeconds: 5 } + ); + + const onStartWorkflowError = useCallback( + (error: any) => { + const message = + error?.response?.data?.message + " " + error?.response?.data?.cause || + error?.message || + "Unknown error. More details in the developer tools console."; + startWorkflowErrorAlert.show({ message }); + }, + [startWorkflowErrorAlert] + ); + + const onStartWorkflowSuccess = useCallback( + (workflowId: string) => { + startWorkflowSuccessAlert.show({ workflowId }); + }, + [startWorkflowSuccessAlert] + ); + + return ( + + + + {PAGE_TITLE} + gatewayApi.setBusinessKey(bk)} + getBusinessKey={getBusinessKey} + /> + + + + + + + + + + + + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowInstancesPage/WorkflowInstancesPage.tsx b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowInstancesPage/WorkflowInstancesPage.tsx new file mode 100644 index 00000000000..4c269fb966b --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/pages/WorkflowInstancesPage/WorkflowInstancesPage.tsx @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback } from "react"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Text, TextContent, TextVariants } from "@patternfly/react-core/dist/js/components/Text"; +import { WorkflowListContainer } from "@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowListContainer"; +import { CloudEventPageSource } from "@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventForm"; +import { useHistory } from "react-router"; +import { WorkflowListState } from "@kie-tools/runtime-tools-swf-gateway-api/dist/types"; +import { routes } from "../../../navigation/Routes"; + +const PAGE_TITLE = "Workflow Instances"; + +export function WorkflowInstancesPage() { + const history = useHistory(); + + const initialState: WorkflowListState = history.location && (history.location.state as WorkflowListState); + + const onOpenWorkflowDetails = useCallback( + (args: { workflowId: string; state: WorkflowListState }) => { + history.push({ + pathname: routes.runtimeToolsWorkflowDetails.path({ workflowId: args.workflowId }), + state: args.state, + }); + }, + [history] + ); + + const onOpenTriggerCloudEventForWorkflow = useCallback( + (workflowId: string) => { + history.push({ + pathname: routes.runtimeToolsTriggerCloudEventForWorkflow.path({ workflowId }), + state: { + source: CloudEventPageSource.INSTANCES, + }, + }); + }, + [history] + ); + + return ( + + + + {PAGE_TITLE} + + List and view workflows from the Data Index linked in your Runtime Tools settings. + + + + + + + + + ); +} diff --git a/packages/sonataflow-management-console-webapp/src/components/styles.css b/packages/sonataflow-management-console-webapp/src/components/styles.css new file mode 100644 index 00000000000..aa2fb0be83e --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/components/styles.css @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +.kogito-management-console__card-size { + height: 100%; + position: relative; +} + +.kogito--global-alert-container { + top: 30px; +} + +.kogito--alert-container { + position: fixed; + display: flex; + width: 100%; + justify-content: center; + align-items: center; + pointer-events: none; + z-index: 99999; +} + +.kogito--alert-list { + max-width: 700px; + min-width: 200px; + z-index: 999999; + position: absolute; + display: block; + left: 50%; + transform: translateX(-50%); +} + +.kogito--alert-container .pf-c-alert { + pointer-events: visible; +} + +.Dev-ui__card-size, +.Dev-ui__custom-dashboard-viewer > div { + height: 100%; +} diff --git a/packages/sonataflow-management-console-webapp/src/declare.d.ts b/packages/sonataflow-management-console-webapp/src/declare.d.ts new file mode 100644 index 00000000000..a10d5b0989c --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/declare.d.ts @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +declare module "*.svg" { + const content: string; + export default content; +} + +declare module "*.png" { + const content1: string; + export default content1; +} diff --git a/packages/sonataflow-management-console-webapp/src/env/Env.ts b/packages/sonataflow-management-console-webapp/src/env/Env.ts new file mode 100644 index 00000000000..10abd1638de --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/env/Env.ts @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ENV_FILE_PATH } from "./EnvConstants"; +import { EnvJson } from "./EnvJson"; + +export async function initEnv(): Promise { + return fetch(ENV_FILE_PATH) + .then(async (response) => { + if (!response.ok) { + throw new Error(`Failed to fetch ${ENV_FILE_PATH}: ${response.statusText}`); + } + + const envJson = await response.json(); + return envJson as EnvJson; + }) + .catch((e) => { + console.error(e); + }); +} diff --git a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/EmptyForm.js b/packages/sonataflow-management-console-webapp/src/env/EnvConstants.ts similarity index 83% rename from packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/EmptyForm.js rename to packages/sonataflow-management-console-webapp/src/env/EnvConstants.ts index 4a10d3f0a12..aeacafb0e7a 100644 --- a/packages/serverless-workflow-dev-ui-webapp/server/MockData/forms/EmptyForm.js +++ b/packages/sonataflow-management-console-webapp/src/env/EnvConstants.ts @@ -17,8 +17,6 @@ * under the License. */ -module.exports = ConfirmTravelForm = { - $schema: "https://json-schema.org/draft/2019-09/schema", - type: "object", - phases: ["complete", "release"], -}; +export const ENV_FILE_PATH = "/env.json"; + +export const ENV_PREFIX = "SONATAFLOW_MANAGEMENT_CONSOLE" as const; diff --git a/packages/sonataflow-management-console-webapp/src/env/EnvJson.ts b/packages/sonataflow-management-console-webapp/src/env/EnvJson.ts new file mode 100644 index 00000000000..ae330fffb65 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/env/EnvJson.ts @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { KogitoConsolesKeycloakEnv } from "@kie-tools/runtime-tools-components/dist/utils/KeycloakClient"; + +export interface EnvJson extends KogitoConsolesKeycloakEnv { + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE: "DEV" | "PROD"; + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_NAME: string; + SONATAFLOW_MANAGEMENT_CONSOLE_KOGITO_APP_VERSION: string; + SONATAFLOW_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT: string; +} diff --git a/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowCombinedEditorEnvelopeApp.ts b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowCombinedEditorEnvelopeApp.ts new file mode 100644 index 00000000000..346a4e5c03e --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowCombinedEditorEnvelopeApp.ts @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as EditorEnvelope from "@kie-tools-core/editor/dist/envelope"; +import { NoOpKeyboardShortcutsService } from "@kie-tools-core/keyboard-shortcuts/dist/envelope"; +import { + ServerlessWorkflowCombinedEditorApi, + ServerlessWorkflowCombinedEditorChannelApi, + ServerlessWorkflowCombinedEditorEnvelopeApi, +} from "@kie-tools/serverless-workflow-combined-editor/dist/api"; +import { ServerlessWorkflowCombinedEditorFactory } from "@kie-tools/serverless-workflow-combined-editor/dist/editor"; +import { ServerlessWorkflowCombinedEditorEnvelopeApiImpl } from "@kie-tools/serverless-workflow-combined-editor/dist/envelope"; + +EditorEnvelope.initCustom< + ServerlessWorkflowCombinedEditorApi, + ServerlessWorkflowCombinedEditorEnvelopeApi, + ServerlessWorkflowCombinedEditorChannelApi +>({ + container: document.getElementById("swf-combined-editor-envelope-app")!, + bus: { postMessage: (message, targetOrigin, _) => window.parent.postMessage(message, targetOrigin!, _) }, + apiImplFactory: { + create: (args) => + new ServerlessWorkflowCombinedEditorEnvelopeApiImpl(args, new ServerlessWorkflowCombinedEditorFactory()), + }, + keyboardShortcutsService: new NoOpKeyboardShortcutsService(), +}); diff --git a/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowDiagramEditorEnvelopeApp.ts b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowDiagramEditorEnvelopeApp.ts new file mode 100644 index 00000000000..94729de8599 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowDiagramEditorEnvelopeApp.ts @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as EditorEnvelope from "@kie-tools-core/editor/dist/envelope"; +import { + ServerlessWorkflowDiagramEditorChannelApi, + ServerlessWorkflowDiagramEditorEnvelopeApi, +} from "@kie-tools/serverless-workflow-diagram-editor-envelope/dist/api"; +import { + ServerlessWorkflowDiagramEditor, + ServerlessWorkflowDiagramEditorEnvelopeApiImpl, + ServerlessWorkflowDiagramEditorFactory, +} from "@kie-tools/serverless-workflow-diagram-editor-envelope/dist/envelope"; + +EditorEnvelope.initCustom< + ServerlessWorkflowDiagramEditor, + ServerlessWorkflowDiagramEditorEnvelopeApi, + ServerlessWorkflowDiagramEditorChannelApi +>({ + container: document.getElementById("swf-diagram-editor-envelope-app")!, + bus: { postMessage: (message, targetOrigin, _) => window.parent.postMessage(message, targetOrigin!, _) }, + apiImplFactory: { + create: (args) => + new ServerlessWorkflowDiagramEditorEnvelopeApiImpl( + args, + new ServerlessWorkflowDiagramEditorFactory({ shouldLoadResourcesDynamically: true }) + ), + }, +}); diff --git a/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowTextEditorEnvelopeApp.ts b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowTextEditorEnvelopeApp.ts new file mode 100644 index 00000000000..39d4415c02e --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/envelope/ServerlessWorkflowTextEditorEnvelopeApp.ts @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as EditorEnvelope from "@kie-tools-core/editor/dist/envelope"; +import { + ServerlessWorkflowTextEditorApi, + ServerlessWorkflowTextEditorChannelApi, + ServerlessWorkflowTextEditorEnvelopeApi, +} from "@kie-tools/serverless-workflow-text-editor/dist/api"; +import { ServerlessWorkflowTextEditorFactory } from "@kie-tools/serverless-workflow-text-editor/dist/editor"; +import { ServerlessWorkflowTextEditorEnvelopeApiImpl } from "@kie-tools/serverless-workflow-text-editor/dist/envelope"; + +EditorEnvelope.initCustom< + ServerlessWorkflowTextEditorApi, + ServerlessWorkflowTextEditorEnvelopeApi, + ServerlessWorkflowTextEditorChannelApi +>({ + container: document.getElementById("swf-text-editor-envelope-app")!, + bus: { postMessage: (message, targetOrigin, _) => window.parent.postMessage(message, targetOrigin!, _) }, + apiImplFactory: { + create: (args) => new ServerlessWorkflowTextEditorEnvelopeApiImpl(args, new ServerlessWorkflowTextEditorFactory()), + }, +}); diff --git a/packages/sonataflow-management-console-webapp/src/favicon.ico b/packages/sonataflow-management-console-webapp/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..39237098444ba09cd588bf70a80a86e0200191ee GIT binary patch literal 122476 zcmXV11yoe;(_TOt0SQ4GQ9zKC?vifl4h0EmSURLpLILSU>F)0CSbAaUUYe!(F2DcB zIUKl$!|eM`Ju}bD1%Z%2XrQMrBoGbgK?ek~0DkxP|KBqs1`_DAE(jzh_W#ckAka@! zBoI6M|DN;TfMd}QA~{LM*;C)rO0l7881T& z)x=-m7wd=-brcc3$PM&IRZVu0&=!+tdK-fl6!a#=*3EMC2=6=M;oP%eAXn(f@3b)m znskISn`&t}DkMW2#K^g(Qp-Xkwg}nLs z%g4>qppgqI1f{1?iCq7K;kUI9+^@GKCv{5OMu%%|&YB~H1n0{Fd4J7**q$zJrW3Yq z;U0&dy$Pyk{{jZl%73r_wfZa4j@4BUp=L9JS16iSYW`XrVm#GnmANn@XGY1)Zetvn z{Wfh6r!(_?o=qIBKasNbeYkpR2-8`Cv=uV*T}UX+(x~UvYP$;``!USneNQCHPYrL! z-!>G_oG?_2`jI%}dIJKY_o5|MO@=a%xXEJo*(;8BuCKC=XQ|o)3hcWBk+jV3j$!7S zU7hGt&BVO)xKrKjN+DqM@XuN5DZiz^F}qa zn+l^lh@$q7URH_CT@WxjoGp8s7xGNz{HHJMplWZ)I6u(s@fK5!LJoFICu^~Z zqy56dIV?glkV+d`Zx~-hl|}NaV^+y72bcHP{5d1ivz>1G4nCcK3tUM7qR$;PJh1Ts za^t>55#qH5fX&Uar*)d5hj?(87@3gCDy4smTRDB8k5zbGL+JB0lP+9fJh^M{?H-lv z2HxP5uU~{GJ_$VV$N7G-=|`tn&as5_KYMc2stq%PfAW;sA@DAOY{nR5F$~yT%sw-Z zH%?d6gn%^^Zol&|t(n5yqNLe*b-2J_CBZ6K>PH-FYxh+!nN!0Od@Mwyt5MQ`68w6| zz7^W1X2yph=CSuX7&~n|axiY|vkUqi-^T*VTSrIo0KrO#*Kl`BQQ_sz4UPibUXhbo zfVsY`q|EKT&^XBuybHfmSsfHcK>HATe5F^W+VSDlqrZua_F!zj#jGs7ny}2!Xk>p! z!WDVr&Y_0Mk!#iQZ&^r)7buo1<5|<$kD-koJbODs4hSWK95 zNUPiunaWa5G_s?~4ps&~&3Mh-;ltrBd-zm~%SslD$JdSz6z%J)cdkuN{>NkCYZ zTVQ>~>$P|{;i4;nWx+>?1-a_y?4O!$+r&I4J%N+Zd~q^<^rJW7xN$}otmxP2{l+3% z`#NSl--Ph*jHIFy7j)kuv?3Y*KQnM(wkCi=qr5`8gAi`Qep6iEqY~Qz)b2Y zu8_2@wUJQ%njMZZM-bc#Sz=~d-#qiiq%}X}BRfH-RVdYDJ4Ur?tHpWHmMY5UW?-66 z(+C@)MfGQ#UK7QPwy%saZ4lq{Ju0@Q9)JF^hAOf^1t$f*(urxE-ATUML88*2N<^Rh z+->`1Pn<*+X#iX6&beeRjMj9BV$V^Kd#lSxg1^$5^?q7^`6{S5CXU5xz3?;@S`mC@ z51c(%{@?_+z;p#Y>DgZ3-Eu)?VRml?Z1t_cAE_n7%hlfYyumKgM4e~zY1(0reF>BG zDlBNDYd06n%8shkNj_|}=bx_{b!or6-jeZib1Q*z1cTmzf|S;7>O{%NOny#j{^Z~5 zy}9@J(G%xm#@dJR=I;@Xe5`_jEY{vqHA~YOmZR>du;q9<=QGE<^4Px`|1R#{a7(nQ z44&ra z#}j%~|9%q3_)e8jdhJF{zZ}n^Jw%%%Ggo{%xdblmVDROTS4#Cy;N( zSjoIkno9@FZId6|0yD#8a`^6pphzE2UZeWgzt%%hWf`TUBKOQU60)-PZ#){13E#vK za!ei6pv@U%r${7S`U*Cpjd+IsGWkntE&;Jh$VBSYL7MOLSibyNh7mm9tQn<=zvk%7 zH4e1+=D?-7fRw^IFq&4PUuUO;IK{h8AFby;mz*)fzo-ldb+X+ze!=U@$2?sln1|n^ zPT!Ddd0Bx%ZE)ts5kJU9w$g2_56^Vf-XO^$^o^)3SK9jN=!CFoLE!jEBo z>2r7fJuTEhJ;0-^IG4hgqM?mU#J{Q76s$}u|ArS=qxW;v6o50Njg@MM`?>Ywio!G1 zCGv~8T7gDXO+XwL!;?7YtK_H5^7HaW+4=j04y5ct-#T@V?=xCofmnZR{PFLAoM9Wc zZ6b*~68e`SmPa`}a-K)iB$_BMV|i+GAS&7w7H?{8k9TJlD$2@-;ECA|K)wRu$G&XM zS)B@4kCd;T#$-F63NI86HA)%P_0GCeZ92oGWer5<4Y0h!pb@jb$z{uUB{==_q((vn zno53QyCvh+M|k-gIWs7tVA9vAt1q>}I^I*q@={PN-+K5TxbL^vm%(RXX;YJvS}1=o zzIK4LIY$K7l7_(Po6!6MKT4zYXw1oQ?7onL$V3vtHIJubnaCljN=UVhvo>~Y7nYjW zuDiM#FUq!r7(h<%P2*_eoeb@fxEiADo~}ydZ$Lq+B{OQ`=yv!9r{(3n^xJL5jM>P! zG{|1*+|_)R`T{)ebp{}DxF-^O4AVyULoa9`8-@XmvQ3Hs$%7j>~WUKE9k7@1;z(a45y()pdQ78K1#As9}B5ZDXNsdi?d7Z z(%g5k6qQ!};W1!#Rh_t6z)7<4IYB=@XwZ?b)GNJNooF(8)ypZYS)!Bt^7L*7R}Gxp z2iUX}_Z=uAd@d1}H>k9DOGQ(@0F#<`jq%liPbMnT*Sl$6w{1cRB5`_FO)&$NlYV zlsxRQtDjCZ*Z-QFmuZ*l0%K;;i1p~KwqnNp%R{(;IZsAZ>Ob;DN>u|g;5>}f1TTTBVKQ19&MALslNOCzGkNIC+IjwD%@yYVv_Yuwp;e_ds88Vm# zKu@~))j@Obc`k1t9UXic3j3LK*$R{`!3~9rbyFB(>jlsrxVHp`W6#}q{hIM6iP_HS zIL;aOeF{|@E6aOVo5P)mM7KWXf?QC!ob7#-q~wb8v`Iz7AKvtvz{xoEl0InIYxIN_ z<)=vN*4(Bcrv@9Rij~lgxLN@ocyA^fSh*+~y=00yM_HEp>x%)lj;(U2mTA0v8BF0! zko*1zIc8@TnQyBcnlG(Xg(ZQ1pFOS79p8-=aZc@e5Kmh@Z>hAq)Lh8qq)ER20I@$Z zfnZrz`gjj_dM2@b(ZtkXwrscSSq-Uw0{VZ-KviBv^35WGysNR!zX|>? zxT3D!H?BQwA4F*y$RRnzTS4pCRQDWq*YQH&`*Tu{qql|IYl=i@0r7vci6z3Y3xd#( z2B5>MtjKUHmjkP|Rqjjs;u*~nbIQ-a?dxNZVNCqRT~^Od8i|aU>&NI@WL#f=y(!@v z-*|>LpQeIA8<9F$?_fD%PAD$0_M(nQsHnuU)n*wsnub&%Iz9+@|CpwT+$<5gf)j0j z+%O@PphaBrfHJlx3rX=$Y8z~43&PiC3{<~DT~_$OsackERCFp5PtmHv6BhaH(Q{5L zCl%0uKm)Qv5-z$S*d{T0-GW&&MPN6cn}Wd*dTjKGi>&PE=qYZ)%os?Fzb_eGIwVha zO`T}>mHf>xByrmQQ=K?z5eG;i1EhqT4If{PYxO>}iFNw~o_n#TTDZ95!Fh~LDf8)H-n8ksVnwxf1KUoF!d zkgZeR*9a)w=rhaFJ$vNkT}V^Fpp|cKNTnq*U>TXT7TyWCF>it8RJJ;&jzB`Y3?l_( zG=46b44!sBirFFE1=g!mhVV4cOc+FKMo-x3yxE=Z^Sfefa>k^U3P4e?{A^bBbuJUuLZH@k_#p5bg`QO>Qr?8U>zj(p$ z6{D17_@DLLdU9R#0`%_n2YdV3u@mwI$MGh;$6`A_MDT%o^rT_>9)1GU6uiFNJ?Fz0 z96SXFx!qPd8y}yX_TKskd2&bYiu$sfz)qkhU=g5Wtnj6c#dm;yb!yB#Y5+#oNv#O4_$@3yxCfpd+=E zT5;NWR@8yaR-TVx*vuCHQ#KE6^qOFObrp=?X|XPwOIv?8B36U6l=i-~ zx7{zD+kcZuh=$KH&Q+u4ew44i7`j|uZ*g`YV%ro~&kU-t6wtu-s+LAR(Mi>-2^5nE zvvq2MHU!~kcatUaHXP|z)#+iv+4pH&1EieJoa=BC25IOjBmF|?bXO+2@=jRvr?Ojx zS|RW$HC6dxVt>9iTu2wiU%wtX!&>ikW|TI3iMa!%s0j>%z+nq()cUfD*Vtw-(XrxO zg-?yEqf4{HCpdrx3LUS!OilkPC@QR)8H1#HLaD#HFUU^FSPj=uM>D)qDuo{+Y_EGMC2O zM%2U%;?N2e?fh+n^GVPnuvcGS_17njLY61x5mo>4KwKU1+G`ZGL+2uLaUB{Rp5OVI zr;?LXK8MhnMI$h8dgn|Gr$iXfufMV6_$efsf}4xLi9J%bHMljBlE?xD@j~)B1udUp zBoY`Y%@5nf5A=W`7Ih{*J{dv+B@x|~S;E>Up`{Z`Bd7J@?M)=EeK6HUbd}&TM12F> zKk;ahA=p)O)jJPdRIGi(fb)Z?B^Q$ObT$>)OxpT%UVAm>4k)|5(@MpU{UvRTFG%it z`(Q|W`UmJyk}zbeqpVk}q10oC%C!Z$TB`Aj4K%H|{v26gEGuG9sexB7`{d(U*#CS^ z=f@8qzD#D++rA493&hM;)|psdY!lw&qrV%AY*^7Ta(yg!Z4ex>)Cgv+IT&^Q8)1ut z-z4a*s1wQ*!OO2S8OOrsU>0v}17-!nl|$?IM~r%*e;ErHa2po38vmg09#L(Xx-6tp zI%3vv*FS6lv3k#w-tJ9NVMB_qsB)& zZn3f0nTwkQFHweABIF}M?RLhS`7{M0*22GqIRat@JhNj5p1h<-aZt_D8fZa83{)#j z6N}W2il?nsP_g4f8{d9xE2uJK`SP^aDHE}4;4=-^2yVX~@Yzn-d|re5iA0w170RQB zryzq`kULdPx_TNMyFY1r=Ri*1m%1E3VssMu;}%DIz1!-2XRl_;zdq)~(?voJTB<6& z@Eg&zdiOm_nc5t>>EWBkNicB-*mSOto_aA&p2(B`z?2~ulEMQvLy?6FLcpDiV)RA2 zc3?j8mXBDG?HARr{%QF)WyPB+Y`01b7EIUNh)rg;NP^| z!Q$oo1@4r}59{8VzYrVs$Mj%B ze?mL8yHq7(@5QATCd)Ck=ZYVirsfz4e%!zcKmSqN?|{w;e58bt?z+h^$8jDbBQ-Q= zk#rtKpSI>RI9<)y97X|hYe8XYP*W2fiN9`fn~9CvvGylDp<)+VPhQ#+?W%GUY5B5i zzF{RY^&%N+Wy=*G8x+92T%5-fC@56+#oqdb70mp@zH+*T;q(yyhvHx+%cbf>%2n#1 z(jxZ^Xv2eC7BeW@_$vt%=B%mR((dbtv!ckVOb~cf4y3v4D*?g7zCmn1)T4tbsLHYp zn2h`dy-=NaoPOiB~n9E-4@yy~=4f0aS zdpuYF*we^I`5pVP-ss5&xtG=}v7y5D0!*IzHIbEqv&O{9$TV(7p;1|7*FusX=*RB@ zd5?QKU(NOXC!2Zw-)3N28&dOtoF<{$eA+)yBttm6gRuGKgCC1m^x#Ho(SXZTFsC>% zlubwEO_UM!y#$}>#HdD-bDH*7ERd(FX30@qvL0X9;cG}9{_7Q;sxiG?(aw4Mm)t3? za8nlT)h4kNJf2ud_WFfn2t>~zR2Tinr=evDhIm`h*u56ItNyH=1$9ft>}_qG;EYEt z35Y}OaGU#pVmiL+&94i17pcw$S>M6v+aShPPBOM={Yn&}CIWjQHI0OV1|o%lOr-is zMd}*NC6+V2OM2q5KP|zL7qsj7YhVA^=qXK4BH%xF7ayv|=>qT;(}rr1VaMFF+O}7u zhw-NG$1RPDzlR4m`Tl`2NMWdX?-uInCNa#srsvj z4!3)9@XwwZltS3&AZxT+FOi-s5x)~eVnWxtWUr}ywE7|z2)b-w9$739GMT$ZMG=C; zD7_dj1335>E+aR$6EN(#EUpSbJS2Oc>n(4zh7PmWU@gt+I!>c;%4-cRcS?(jbG0_d z+UOd3_#R`_#HvMIYueW_s|1jMDjW}y$?D}GIn!x-6SE;P;pB!7lugS1fcs6|Lc`%v zF_$w-qf>6kef5EMZh3>~NBAmq4lTCJg+R=Q$4eT*p1oa_mie{%EoVieh3R|%;)$6R zm=i5Df0-~IOToB9f$E0}D_Lc&3J^@Vxe+k-+#B-{=O7h^9qsbzyQ;9Vk1ay8TjM zuP@~&%CCXheWlE1FzOnf83A5SfT=2cm68UVt1mP&$U~Akxn7&nwiUVyBWu(~Yq0vGF&PC8)tR1(hKzD$aGy=hL;H`DaN2f?Y z6IojsW^s8FX6Zb(XR&mNc$CfP;+3zP3JDN%o7=){mtllblEgu1G3j_nKO-9#pY|Wn5oVLiy+{B5~Ut zukM+uH$jXu=O;_M4a&02yl2LrwC2*bUMteXvpZ}ib5Bb@me@@j^OB3qK!TZmI*~M>%)z*kGKdr9(qEB$zB`8Hak|%D?E}VRc27 zx7`4LQg#raPi}wre8~$hZc%>#&h^-n+YGs;x>Xo5N?Kwlech6#f!yv~l-@%JW%6v* za%~+!!>YV3M{YAu{d*WQZL?Qe^ z)1(pxT-}j7Dr|}U<&w>%U%h2HpwKR%QGBdY!hc#R9njv&e9T-}gmr;GDEC7izO|31r#;tYTjePQ&`Zskv{2NMtslVjm3p|eDWKXoJE9RxapA1wA>sfG^Q!Af~Lvn z3!|Vzt1_&G2f}U{7_?F+>z=lY&5DbXR5X*xMhH7r8p|pRAzE$Mz$Ak>3u++ zsjktw^SwgUPTxado)fl(THl-0033G*0_ece}B6 zy4SO&e#mvqPN}{jmN0PTuREY>I3({Mm|vg2Xp9v1r4K}dH4Yr4&Q|iKH1-$!s^#xs zQqX{g-`$YLH;qKt5Q?y!>$De<++P1+1!?#grdSG&ydkFkSvfoB0|Use4G-tmdAw2E z^offi3o*_j-EWdnk)H{XSwnT@zk$Hc%n=Lim_XN##WqHA1GZya(ecY{{RDPx-oXtZ zc@KJ;!j)ZM5r0*Fzv*?^1Bzq9g4PA&f0P+ACisUUPrvWgryq>dD_@?orsdONJ3LCB0g-9$rVTXBJ>T`jYO4>3KZg2-lX`b} z$wp_n)Uj-)+}xx^I!w2YZ?o!v^6fl17p)H%QYJrh37a7TuxKNqDaO(h!0~|x`{1-? zy_l7nl?~F!c5cS9FGt*3Z=TqYLlFiEgUV{>dxmDwuOxNGXF+>^WeV$xdW?6>Nzzfu z6)v(p5=^`uP013V&N>*h4_v*TV~r@2RO!O@d&=V~Nzq>S*d}dLd>sW`i)3!4Xg zE@B3JvUQHNYJ782=?r*t2~z}(%Ozo=FF`W)t){AUBq0xh5$_M*R6PL07bWHBmPog< z5Ze}W?d~Jg@-9*?pwbz7Up5oi^ebMH5|)T_mwm;q@0ehXwAJS=ub#*BD^{-#m%LxJ z6mk}g>hCdmThOp{u+53tcz-?pIVM#4077 z($H^*vI6&i2Y6>h)`}c5`_Nv-&eSU5wsUL6d&K^|iv8oZK4@S%OK~%N!y!5Ox%Qk7 z&~s$7^)*=zl>Ui<`p$-gU0>Jdr~#bDViNas84Ui7zW`~nTs!WW1+Nb}f@>kab~o@! z%ji+%=(Z18%$`Q7Wol5${1@DL7>+_9L1b#F+wCHIBx17|w~!eqT#?>)W-7X^e<@B&@T_V7IC2}3VcpH6D4li5?i2Cx1vWu-1#OHDMZ-oi6 zff=RtOW-hfJp+I3v}A_P#TY=ts+A2vaXikvBwpj5!!lZc$8hDbDd7IEDw5Fobd@@3 z@(lvDnzz%9FqZ8air~{qO~l{2xikbGecvB= zeyA<#N6gzSU=QO}@~e5VG^=N1je>bf(T1POkLWTe)_3?8D8so{sKK~WdcN`p`#~S5 zHFPOmq-r#XWE>!*rU*yiwwe4|&D_+J$ZblA)vwMIW_0$Ki^`!K9tk%?Nq-@p4&VwR z?tu4zUAv8wZb?55k;xUlOA=DOfVVw7*rWPCNGqu;B{xR|P>Z)xFZh4}n=*jK&r1X2 zY4>9z?H_IyHRoUeBY{YMKF#E?Vq#@Y2as2ffe-`j?8X%gVPJ5?jditu^eBSKp1`=r z< zyyQmwlIM0YwY7}|1ZjA=@=yEBE)73BsNayx=Pc_v%oA+BmK>s8o~8T5AKVU)14)JT z=}LbqmN)ewIK^29xt6hi{O<2F05F=R$suS+r7u5GZ3@JujYvO#>nxh4MO^%f|F4s$ zaW7hSMLu4syv3^;s-;L4u+fl_N2*GgLax^_p+C2}%KF#XHlNkUv*7xzLqk*1KSq%W zw#|^ec}fEeHJ1&$Fb~)`Yky(G!@*#DLPbE?*~?viGwYgHOO)@GlxQ@`t}q<`7F#yN zB0;F5DBYp3asBTCX@2)B#2w^JYP@9vxWR$NliUZm?}HcxCS}H~L=F|oTSxh0r}hX$ z_+B4T`7u=e0SI{ECpa5|(-CA}m6Pq;xhrUI@KAO~Yf1yM#*oE?b2~E^G`vrGcpWmJ z0m1me8QY^>@I;M%fy&zb2(;b{OtR$!+G$6BO89B5 zG};EgJEPoW%%dvOCyzv88i2P0L!tM9M@iULKep4;w9t#`;AKuPjk>o*=zakZcFD%# z^~EUz|GHOxL#VX{BgiDzPKQ zXu17c+29-36xtWAdx%D`(E+IElq3Q$==wTF)=1$`F@m~fF{Apb_~A~`Hm(1R?Xd}@ zssU4sto(1*Y?R*EmqOu#&Y7bvbUJnOc+!iL zoKQ!4oeX`n?cs3Y1=D8&Pnl;(52ncFe z)~z?*@#xo;x3GfE!2{p1TO(|zB*XEuL-F|K9Eo3{)? z=$@Y=1zZyX?fEGVP_5Mm;RmR++x>qa zKUC2c?XR_8e-LA<^Dbd*lEgfD+$DRTWzpj?!MrF8fl0@Iz52@+>Jf^5@fw4AluvMh zQWZn(nM>W4u8P=R7U6nyLTGAD$f^!noau|ALtO3Sr6TZhP zGMeTu&TUjKnD*Rv3Q6EOry+Ll*aPnQ>wSy;OlVfn)lqd>dgw0W5Je6yi-MmmyM)RY z)A4tT%{oy%Zs@?~fyj+dRoQIN2T6h!Ou~-C{ltUj1ZNaKOgjp=@?u)!x>vs;@h4%Y zV5n8l)ryPoOLIQ0%2b1eKcz?0A0TKx>@b$*tAbu>6{0Oa-8VWIYRJ2FBZAHI4)m;6 z;I*Qd4-meuaVW^T1AI+W^IyL=K<({&`L>K{lAuVf^Z|dI-vL-q8vK_zcTTdMsFF#ZQ%v-oqX9;CbUYVRUger0ELqXQyE)>_ zm&e*ni&Xm>CtoF)iJuL#O3<8LLeJ~V$R`y=TjImzqel||xv9`JMNHM;g}VWFmVoEC zV79T83r6B6FzRQ#(N0r~E}Hku`Y^1T#uvVMg~32Jz5U;Y1cmTCgFGTHhirpeZL z!G01ZL!_zpl`~0E+qduAdl#eYmq5|lld*DT{+oxP)<0FP@LvTQV^^~?w6o{2N?~kr zoyMm3Hx;&9fN$4r0q+1@Rle_mec`aEw57$n`=cUQ|at`-E! z3?>25BEQ*iwLX^qc{?tLZU;E|qf=8Cv2T(Js~*o7(v6);m}MT|oAsQ9e?;Ve`x-!% zc`3iSft?a1-J8h^#MqUg80cug6c>xOwEcSf>XVPuZ z9mDtATSI8ACa7^PO*X8^q?jo%19!4+_x(ja_=mW*4^FgKdqW<`MdiO;qLqxaTWN+F zIUOXpZJ$Eazy9KfAH+G#*3|t6%{wU`hhlyf^eGC5xNo~PCo?A8i|y*CO@!a({pb+a z%&3}|(;@v@)BwE>!cTyY8QlYAoUiFQhfu%sT|&R$;n%+UQy9GA+v*l2=xa5!AgEqo z+Ivk+%UPKt;S;}H$X*WKZUujrgUM7`Rvp#+$inHsRvk? zjhVM}oNkWDZ1NI0<$7}FYe`5Z-e1MoC;`p1kwojOXh#>wk%e^DNyqtvEfBfgE4$%a zG*tqrRtfCqL8A3Gg1^&NkkBCcrr^fxq1&N}Z9GJ1s-FJJBGFSCI8E5=y5|$Fc#v`G zy`>mSHJRq*srhMT4;_^Ief)3v>yyN`-4|Pt%by%96efQLQN>hs>a3DtT%A2*n@cOj za6Wl%EcRzVly=1sI`M{@8{u(hOZktl7PB zl|$x^KfU|4^msS)$O_sc7#@gw34nCAl(Wv^@F$0@q;3`lG_lcJX*{}MAb=1Hl%=HX zaty?k-~Hqbyh)3D=J6Wb<|yUE?*3X3M4`E|fF1d+$FxiUVYnO_mzYWbx=Do-nYDc8 z{ys&nECd$9bh;$3<4YBL)w<~g1QPXDikuu~R*a#e&oo&Q*E{)$k!o76~JoQJ1MzrKd!u#x{h5#2G71D5cr!6swEMu@9-Qz$&*;uom*V&SaIr+ zq;x|F;3Pyi=6^gT>`{|r#SgDyM2#QMD51M(Ck1Zk#My7gbB5u|M0{su-3Nq(?P+U? zJI%xnlVnNZ&JbN!Wlezw41=ke?qYYW@eLY0;U5H@jD7NE0a3Z19_HX@WrC01GMdUU zzQt4pjD!2UC)pL#O>XEU*?begs%bNQDu3#goEdZfE6b%-KI~^NI>dpDEE(S1O&4>$ zju%S8G(O*;jKBmEyjuCs5NnaXnrQ1xZD-C0bC}-M7&8c+FG6L~Ya^SZ>hq=zZRzX# z6pwaq>e2VI?_}l zjs0A>^NlIW1fcEAy`Ejj+#~Z)5A1Qs*G+e9(zV15zUS6Iog2>Hj4LR8hzf`RQ@P=y zx|Xfe_AR#4l4p=H_+yUNjJ{FLAkW}$ZoijqbVNy=Pn;BLAgu4A zRN!9?vO(3%1ybS2MSq{D%h8HVI9G2zhnRLB`?ej- z(>&5Nz_Y7c(Ud7_T*2kllI84zPi3hH^Z7Iz z19edB3Z4^=Es9p~&u~k>|BR<_-(Qm}ne=y5zHz-YIjgD8m*~PUB}mloaTc%J?r5C< zy~9j`#+!s>gy=T}5{6pt&o$DTcJ3aWFYoJBbnRTJV}AC*zdpV*am|x70gnPx86L2xn&v`LhaiKdocPbBm&^tV zWvI>*Nvs8%hfmUAVQTZaZ%C`vWgyQ7{8G?v>yR@QI}4&YsYJc>YTlr!472`sJlZ4m zwtev`F6WLzn|Bbr{@;0nhq>q$kkMx1O0xHcZ5sxQm0Xht%5Q^Oej?$_qIYmaMB4s* zSVrUxSCqQF@=G~?1SFq6=OB#rHT@+b&*EJhU41JSR1Vqqh`j|i=o69PRe!YZ18`nl zecN1RtcbZ78QW5+X^&9y6F3xk$|`)MA0XZYV%J6DcNM}Fmy)-w{35XL@`uP7hUiS$ zUWUqFQ1mxatq~tl>eG3KI7yt=PRXvMhSt4jTTy!o6Fz2RqI*P*PNj)r|ucKHP2^F@CusB~b++S`~K zv|l-^iJzV5RQq9Jmp7m>sM778B+__J?QFc;@1e-Tz~RUGxq*Di(Ca|;XL@yuKK>F0 zzn(aP?G&X%H2%C(U?x7u`_TEmY5Ata2F)LAyXJ!#`{b0ggf4c5)RyS3l#W}k2Pc0A z@5i#8S75&cF-7cK#gi(y{+{sjwnsPuZ!fgcyfE%Jikq!OB*vG((X#>bnEvw{@rAl# zRN5Kdod3QJz-j&54Ags!2Gd?#?bxHSg}5AE`;&1*X!L#_S!0Ivpt)^h5pcmZijm%$ zp*{qTLcI3dmYy8NAZLVZ_%%=3<_X$nJ)kH4{y>mHl0 zbDFF6ZsAH%&+hZ?q{U6J2)F||^S>8h=wkV$?w1ahg3(x@wI5e6KfK~=hfJP-5vj-9 zt~n598ap9DZB(>#f`9G5@f_$n6BeVGo$7{bNDwKDG))%`&jMr#cz4Cmqg5%zu*vPP z(-k18|g=Yi&1igjWIkR#g%Y8B1?A`I!u*e4;PI; z?o$Eh*8qkG_9N{7fU~xcSk3EC<9yinKuB&){TLdiMwZ&;TrdSQ(qb{t#b@2%^BHTi z)|R|mG=a~c{8HI?W^}&I<`M16FFlHf$Wmj3SKK}eBY;b;odh2I1;+A(#T4A2uvj#a zk7}c-N~zD01oZWy(OH@`k2F#N2p>`T6{zjpHF zOLYEQaP9mJk$YjUXAaw3tyCC6DK~dND8nnV#XHUkU2fQPbZ;}EsbPo}_vy-X_!t?iO@awmg~wc?_ICf2=uB`UQ;JB}7%Kx1aYXpWQoSXCSXtXZ0n#HizXP0D(mOy3pr*lKlW#E`K#!$UmF=Oc>hIcZfbvEqms$5mK&%$5Z5y)MA zw<(@aw5MSZ0qECUML4taQWTV9aRoHCwzCx~^3=V53_Jo`bA{$xoNJCvSa1D{i7{+i zTdO}{K28utr-@GY*T-8q=0M_;4Qm00a&IE?)9N|exd)4T-#hF#_g#P1@;l*N)U$ma zGCcTWeQO2Tv$1A5+3v|Fc`q<7!q8V7d(EVK;~*~@qtok79+;tUViFK-B;D)mj1iqd z-ni`T?}CRSYT04B@&d{Z7wl<(BPl_s!x8{p{1UW4FfR%QZkuTA2mW|UOA|1PqGgCe zhr9fB`L~DsnCcRr>@Lo-D{KTH)sHN*R|2mC4=YEEKF)8`>4a)A{wv2}^$if|j z85B~PelWKl*B5ENi9xO$&xj?xr36ng=lLv9KcxGwkwiAW?>eGtNgrVgy~lJ%qi(c+ z^nS`sTzttNjE|5r=z5*+Do*)sUA`#yaJT6#wppW!^n~(aej~Q9>Y?Al${{lygYLQ(L**KRt&P>I;s%5maV;gVVYi&#eS~kXwR8k!n zxy|QeRzlKzgj3%J8SPVGY}y_7RpCm2lLnt@KSvjuQsDtv}y|ZL-I&PnLuq z4$6jays`OZifw`I2B!@z!K+{r%C4rxf*771z@d%{!V5J?W+J#MRP^?&3|7 zmcf;t#ywQAKuLX)KAuavzetf64{T&vs*J1+AF~+O++u$q&q`Y0JJW8L#}~mrww@#q zWu$x=ri<}71g~#<<4Ns(ZGiywGSTx^HR+$r-5PXKK0zx%EEfs3r39{XIQ0v+4ST5V z9ycT+s)m-h*#rT(e<=o6rru&jzI(HdU7G$654%0h#0rAP$AY+0_`L+iL#1@basC><^5p^YE5AXT`4rpDLL`9oc&h>5 z|8Alr>XZusba%L^%!2qd?sw!GSPf(Hvk8Jl0eZZZC)a=G>~VBfWh zvx;`xVR_w~^ElyadfG%N9W^R=4~`^QR`Zk`q=YFz4^2N;hZP^i(>~`?aXdUUJAU}k z2F`e_1D)nZ4fqrcr{~v75rnK92x3{ctug5;k|_fVznu~e)D?<=u~-vsP(LrXTxEH% zj#CPiZE4m0mvmGbJ!4{F=e!{tHZwjl;M*1hXVu|#)S5?RX3#?Qe2vX4>r6g*(m!f4 zK@{N4%-lyU)mxH;UAiainjK*pMh5@eRP{lMR)iD6PQnd|p(IPOV2WkE*{A;eMI-<@ zM=pw!X;Uc^3bWIMeZK#_rDDsLPl~DqO3f>qJrN>CaPz%sB*V1s-7;_)I(KN>SmpQcW&Fvr^`b&^G(yXz;Fq1C+zDHWqemf z)O#xOIsVpac1<`FVKF-Zlr8_kAr3?i=`pbPM{~SKn!MVDS{Gqpiak9~w^ujZdz(0! z8MMvMz-P=pb9g5Wm7s{HXOYPomql`DXx)4x5+mGa+waoPpUhiiOpgfvVX~Zh+;!s8 z|EkIHe8J&AxVfUwe|y7B;QjDdpaNdxRs1eWasMz)bTMte49gHn72MN1h8sV*W0;yd zxI;eBo-sUU;kM1>ls#%V32ynUWugph65jeVzPjr9IPQKTq1Bh+Ybf-p7-0}t`DY#= z;yOp%gMBH`AL}SYPmRu%_nftiA3Gw(F;l*q8NFE{K{RYMyP;n(&~CnV%6XZgY>s~G zIy@A3(h(^+TPdiW#hanw-42B(7=&}-gg?t5=$ z{_|#EUxv}(iN#I-D2nSj`F}m%D7;wrhu^5rx9;lu|4rn;P|P-3@h63)u;{DfdYcPP zdlm=yw{5>^y-n7;@jiZe2frA%UMauYvvhQp?}k^UzBWaF>*RVqJih2$cyOu9f|9>J zkGtJX8P;7U^>KZ(gQl1A*D{!@-uiX7TdQ4iJKn}QG#2}d zvrp!lx<5JkKz;otJ z7T1+k^=Eo6#AX7ixbHbRdA}Zuie0aF-ZgP$EWO>N_LP23=QnE=-%I-Xr^VqRax~L6 zC$BrKI$_kUv#XKXKh2yrrWDMw$Sccy>`!g+TJDS0M8AqryV{ne=d9^jI$-m%$u}bC zddFrjBo4GX99;IQyJpUNr-F6QRYK2wnH@claWTfW$2|M%s%EgrCRL%YuaVy6FT>mh zF)CiHFT3%d(jhwBd<4c-Vgrr*yDX(IrqYb-49_@Sk7W*US5&nyxV@)GNu#{ zSP*bjxz$+nGv=^P<*fGU=Phrg46_;9aqSeVUUo|AeseP06d$>8I%7ka`|IH!jhJPj z>(;@M!3NpcH2=WjcQXupIwUEVS^l^CcZD%qj(pma^!56&`4)1gyLd#WCEc*sjV0|r z`uc0uGWDYQrNN8suLtinXc{=F)dm=WO%V`Rpqj;<6?EVdAEQjdtb3KHoMVDqgm38#3=;fNreU z;x(<6R^NTyy~NFG2CSLgp|a6;2wA?#18wu%-PFX>rU!PN-uU$jy;;T*vvnD<8{WQB z`}dxlR=|}Gmyh}su9@UDeCMQ>CTl(n8XWRsQsTBp^kHRvzB%7k)*v#v2jBa40OnD* zGJV5P2+lFQQ*mm|W~HuK#i8z{?*_hU7j=qppLT-k-OsyI%HCL5WEL{#U$eZS{RRhp z(kLY@Uj6MKW1k5WBiqlaH{@)ys5x_RJzd$YhqrXRU{TyZ-jBPTv-m5uy-^p#GWEZ& z=PXOQR5-I;S>HEf^^axW(4Dhc^`3=X#h{Y)&z??`SDd46Y#*twm(#a{yNka0+iwR+ zfA3LSsP-Z^T1kz$$nM3oX=jvsPB2>?xY1#YrrDD#q1mCkjvv`dJp5x_^Hl$I-3#sgRbaGlmxC8cZ#< zc{`?Hf?}p6^|-_QSpRL0X4;I6)tQ>^893-B6uC97{}}H`T3P{!2(RaoLUl^p24Ud1~0{%CvJtc-C}NtTWuyZ1TT zFa11}&L%`^%&BRrnr@2~ryLy7V@l`tYj3ML%SX|*wkidB4t=HGlHmhw zzD2m2ZRQns#=bU9ChF$o?7mIX`8(RK)Ni*^>+Apfz01*Ci`0d8ZLta$v05W!=Jc4|;CiA3TDvPboOPLG?XoV4lxR8zYO0``36(v-U43 z{e6D1iPLUtqZZ0rlaCXhw<_!nE!1CJOtREoE?0^An2{5Hi=VpO_i4n_ha;VJyS=g` zuh2}%y*Fr6LeM6+-6`|zY5$ymMwc%k4U12kv+Mf$>E=demroU!o>4h=^IKBq!F^i2 z+DLH>v^r{a$bI=H@MU01MoE*cMs&FGZ(3CO)h}hriWOrH9x%6?K60`1&>McyG{4|O^Ot{HCy4VT&n!Bzn96(o@GP#>|OEpbhD@332 z8n>yaJ;O4j8*>Tn_;b55t#jN~pN>|r%y90aXm#4jd$?KrnCFRo`mF4G^~$F8H+7fH zBjK{=kK`cJFSfUm?LP&ySo1N%_R3nu*t{cZD!bK=6)a$`x-Fm?7qlr!m}aF=te2i9EYe<{6U4}Mn%F(~_I%5k&L^TX5BevkX75Qk-`+!U!`s2jGh2r& zS{}bF^v=6EYxOA;d{*hK`_KCM&|YaJGrOC$WLPGTV~RM@7X|_K}Wgwa~svc;ZFEBpU$Pt-}ulvntW+HtMAEIy04O{H|bVlr>Wp=6k9R=WerPfzVZ@&E}>z3#9Xcn_x^l)*CQJ=r$?SC0FlkJ{;Jd&JD zz1A(v^T0|wTv^rO-m)>v!XHiNd{ypkP(vuG`R{b#q>s;NUO zdU|t->!v#wE4Hh;&i$zCeLroS^W6n$TOZ$A>uY^cPG#X{+o%m2pZ2orVnxq=T=stD z#N0nU&pUbV>py?~G$wTKji;-PmM<&q+OD|E!vg*P0zE8_+nMUSU$))YS94)l%#`qs z?yCZHy|s*#smCi-Eb#5$+}Gw9j!M*SC0uSRiuXK=>iI;Gh2`96JYD)*zfAC(kBP*elAL)UbvdA zGb4%Yv+eFyg)6h(k{&KSdjvOm88FVdiM*4!Z-s+S%LzU0#(W$*eM#sNr%{ZMG0`W~ z6d#;3D8D;%&cO%Pg?DtXmlT4$^FL3qu^9Ntd%3YgkX6S6M#_^S(_UZBv!40M(WIXzQy4kv`#Zk1oRq~)3;8?Gun z9M)fZ{-WuIAILCM!NRb$%ltQC6&otf#p*tIV4PFF{L`7x*Y8U&=I9jcD3(|2XinNb zX~fdg@a*XS^~%wC*|cQ1xl+!ii_Mzp=q;F#7xespdRYN~`F)zz>zVD>TP+G#mTNCR z6CG0UFg@o`ld~rhx2)7vU9sg7*;BLlZL@<;$%8MgGb<#8nOV9ht`5QS|4plN(WB(H z6~?-6K5lxG@mNi9ftBX{#|eK0dg?nYUTyO1?{_)gmj>7l8}Mb%{`;35?{%Lx+1O6a zQNiPk?rcVu?z5$%Mg@fSaE$JCKDKz8f@x3x;(cfUUyT>7Q}ynX+Ihi|&Hs*==HU0S z>zSD8#b<1zBJzVa+{)2De@)N-^Wm+*3lFKv4Vb?EOp$l@oh5f(TP?eG@A3WE-28>E z77CBc|Gw{~(CUi6)&$BaSb;fkN1#(qtDJOsuW8F~^rHJ!JnE@YGUEEae&dfS&yQH0-)<9<^;VP{C&q1OHC{wo`n z+Qy6s%4qEf`$biFU6JppyNh;i=hw?`<<0zG-eah!j67&Wb3et`cAMQJ{?zJyKKe;k z**yCd)3jh8t_tr3_IJIy&)Du|{nXATdPJaY!G=fUuPKiBulvPyt%CGpmxoS&xJa*W zWWmMJN91CscGlFgP@P!Vj7T$7^&I(a|GHhjPt3de#-(X}cAgw=^0v z#?U0TAnyF?znhGj^~W{&D~j#=r(4oNyy1-r8##~zZ{zP!De|sFZ(FFhwAp7U85}vPKSMtGYnQFKXzLY zi(9s=2+$2s=>{91S@ies{o6i9T*c$C0mURo&zR8Z|B`M$bpNDxYGiVh!&G|{s-H@E z&+*OvSOxobwbmeeC+ z^vvH@YJR66V~wrex`o6h#N?KH-1a!g7sm>d1(;8r8*3Txw$>muFW{O^HDsOB@+ z8ZC2w3oW_Rk6kXTBuOc?1Z*vQ4_gn*|fX+pi zmK&Z<+O#uJdhAX>!0+>Z_D%&R;!ER`l!XmJ~mBSckO*R-H4(&hD#tI(j;} zyko%EuFsclp6D2+=zr>_t?A?ims@+k-ZnkvRy&)!k=;GMsaoxIqz`d_H8n`VU=Lvk z8xvmqcbEN%E~iXZ-g(=-d|T-aM{=QUjK+v9p;II0#9Fupt)eK!DrTA&1x&fQXYPg0 z!G{Of^x3DMRo;BM=CoGrayn?dkoRhP!7cf!?U$364Alp(+_}!%H^h@{9sNhKZmg41 z=$8rzu*fD1P{$5U__f4MGAHdvqDKNfg&W_99u0_zNx@R6#2}0q%Vi^eB`$oU-H|O zJfEyPd)SJjYg`60{ynywe065AP2hv+pZi;?xvwt&P2+UChjD9s%}g~fIb3kR9C6Le zG-bWt@3yAx#`S($u;BMC-o5%a3t1W(FlKwdsVl=?J<$$*_wV8_u-#*)XU7ck&$#Zn zSbWg`{?S`bkMH$);&idgwQqm9X6fB>?|3`ND=Fgw)ogN?Uhf>w`j42Swoel_E0k+L zWvS!&@Q*59OU~q9^(uGx`%0+#%7>Cw*5R7=Z(A(_uI6{jn0HpsobAQLvuPR zn@)2bx1re#ANg$h#T1kLjQ@tb@V^~a@U#naQ_?+6I%ukoxD`&lG(`hyd=D%X$MKPUi+=p-7wvQYX@l?fXm35yqj$1lM_g>YD zuMcVM@5CFJ&6k@w`O>P(ipNM6&9B(5@hmv&YkKru=D9&fKlhlVxX|hR?EVAid6aIQ zeX(cm)u}1dlsA)G7SAuA=rlsncVzH@fC#gawrAAU`)j4YdH0R}`IU{GC0aOk@J=V3S2H@W6&@$SlX(=S>r%kHO5cGy2V^Nhi<2gjD$>?!T#=J4Ef zti88%BX^rAdI*3ZID{kF!JT(f3AB=yZj*G-io)IR3#`eO9(cd}8y zy>BC6lf^tjZvJ0e+&sIFxd8hb%Z(p9Wz6-_bGNC$xeH!^O^ zet6Cio?im-rb2uTpsoY78L+4Hub(t(K!p-3r>xERO<5~W1Mpi)qJ*C!k;9&o$n;zi znf8q|oJx>}zZQ`oE}32iY36~AJO|tGP}YiH4*8LlwUb+^YG+8JN*X;+p!+7unsLLS z>}~?Ag8-usb;DUm`ykT@u!;9z6OVuoNAMA3Wi3Y2Mz8n=6i``*(SoEIJqGYT0eELY znXVAMTnmXeKmWnBhlng?&6tzQ+KFSp9$Ge_sv1q!1GE_OB+ZyXfcbv#WztS^JIo+z`JbM*~00@@b|(56@lJ^{Z-^Xtc^0g`5H3&4FTl=Za6 zg*&HDfc69>G7aot3D`m9Cy?0m@Uxw&XeG!4?k0eHLgU7rn;k^OL0xewNh|TEtRKMp z9qM(|Ai!OE>hWBCHz#&t43lXU&}ImP_5ya-{S-g&e=Xttz6Egq@^h7W9(F?x{|x;~ zPL2JY0QLD{;OoPG;m*w#s08#cQo#oPY;2A|nH<>^%KX}2Wu6=E9M{O<#ZW(70q=w+ zjlm9}%y)z`f9qG7=fIg)T?6_Pq5sH_q?M!~%Qiq7P8$liGk#$&1orH9L5Yfi_rX9} zv;ipd#(?|#U)YO?J| zHiH3VdK18YJK+BFw&_`ziTg;VmqWd9J@^8t>@QMPXO{azzskIr$~-sw!SN)m_|4EZ zkSad_V_WjT(`J}oCE`3A3F?fS9%cC&nNFY$kaUuz!Vf5G$HV-qB=Ac~6+ke)@yiAz z?gN>AAYr{U)CU0bxj^NJJ&S(XKt1>~W_=)WZbQBZ0B=K}uPofzkH2i7K5QTybl)&- zL%@0<5VTFdmwV3hUp7z=Hc;6=P_KPNfO7|+SWdjTg@4(Apy`$3yL}CbJAu5i2w5!X~ZB+X(`8bbIo8d_pnJDOJ%Qvt75 z!rB1DStco*d8J#QHoy&k^Z_#$H8vlRuv8fQVXuwmfKehZoFsX#zHFd2`~!j-oexM* z)=3t4{{g^ux+L)xB<=dJf!grT$jl-v=SMW2dH{|MXfsR&@d3DB3E&eV2u6~AM$$G= z8~*qXxD%Mtc<`_67Y+uz_|6%GXH$P(?2&kY7yf_;_V;88ic5VyCkY$ihdrp;lXx2!40Ina?P8!bX1K=9&V=VSDeo3ZTR~rx%fAj&D{Th!C zfc1k8?D(saQ*aI6BS~Tt7 z1H#~sKH$O?MkB#L;yq%{hCh7IK(>58C%>ZDfUx+Z4;VYO5%>U(IsoVrzG)%b_#^+q z+JLb5qYv=9*f@Lu%n@G3R{lL21OCF=fGGH=0a5Tr zAK-B=QTFQrl&I&3{{Ss!zfYbl;ZFizzj*yyVzqNNvEC({u-~3TIPAwMY})`OA{XX_V4q)CpfXv)UqvU0$jK`sc>O9W2;yCKp-{LAV*@8VW!wjl!@dFL zU4Vwm686ZeAo!zgNYVz-2aFge!#;pH7R3C%A+GO`seV5}@t3p>966OB!|wo?8?Md3 zZ(PDRX&Nv7lC%LvGWY-^+4TX?4~*+O#I~-tzU)Yt@{joAPg3uKL&s&;2ULB#@<4sz zCa!!$!Cz7~keHN7Xpe<&{>k9@F!TZJ2TV?g3zzyzM^yYJWdpA6@iK~k^fAEfY<=M- zu6*i(za(rRfssj2M$4WLP^LtC0VWs4g-d;YVFUXP$(|2@^}!c@R{X_n199;g z1o|8Qgs`pj$ z%G@Us$A4sQ?x#4~|J-b#q@;ovF*)@ou>lLq{^$dad2#mvGH(Oq zFj(uGT)qAizat7VJw~}?f$9tY_aDFqjN|SDWZDKO5f7C$;<4&i{R4SqW*nft@JAnT zzU`ha~$1@i$?YXg)>p8G#n;V)JDzjI>Wkof22mk~op z3+4l)&jzUFu;-5|%h%U-9H5mfHQ#^WhJ8cgk3L|}-+2Pn16aIE&AWgc9x^~vu^vl# z4?vwYs2?DQB?1oufB&h<2BdaOxS{cXoBfSY`%5?<(4aOziK-s!t?j+fc^&x0??0v^ z-_k}6jX(N;ZLYZ@>80NN0GXaf(oU=%>*K_kR~T@Y%C!N~fIs?x!TQ4c04z)OY6FzW zCA=`^bq~gf>*f2;!ul6!z#o0UmVKi6fO@k5GCf{dOZ4wQqiq1M68-+Wu-N1C(t>}+ zn{UJr5q&^C*gysNnW?Hs>7 zl?6S@GLHh=0GSpC>$y7A1yf<;f?fv!<;${uWr278Hb5;PQ6l-y>kt-SL7oTw83C2b zf*xg=$J%XxT1p~^j}rtdNj(F4od;Ad%lefC-nrO7If)#$KvK90nr=Tb1IGw909D9> z9%Y$FHXEoQk?HmWb&>^zNutle_qcG3V2dp4R#tdt+5nlp4ZhtWmcD&)83yPN{Q%m) zFFzo;IWwqR7nsK@F4)AH4t!4z{eT_Nulj)aZ2)y@2YWV2Rk`OhAQdg(x6re6;1$TBnfp6?1`qfV;x(&pk4%u}oYv;f}_7(pc zFA&}aP-peprzt(UPJNny?{U62Xq4@kuv65ylGb9N+< z2I@wQo9-IRHINVI5#e4_zkI=W8$?|=!(3a5%-fMh+W~o1fN);%&)i>xvZD?LN+U*+ z=82@4i2X&lz91e*8vU^(c|w^@pl&49{W+4h0Zd<6i@DAS*P5mM1a^RHDwo0>nxDqk z3u;5~J$l@Sb{P<^SC(YiYlyUQJw2?cX0#SmA3y7JpeNjaz!WG1NS4PE@csS-$P927 zYW@AsiaopB1GJdq%D5lV0U)X0mkfAh`4!~#Ado7KiLuM{>s&MqfG)A!i2Dy5*Ku1o@Sc zST&%cos9cgi3sr>YtZyOXGx#jV!MKXhMsFro=AXWpZ-*%#*4=WRNXff?=ia7eX-Hv^rdYK{>fCtP9M?*&?JeZ_Bl0-FK-B%U6Y~ zqE{yX%vApLD<3Fgg%v8psjP5Sf-bCZRf4Qwl?c_zS7lJ0e3i`A$;-(xGf4d&pP50( z_b^jrm+xU_hTnsg8FGZ#vS%{DmOYb!DrHs1QX&X8c9;xthEv(o2L?mf!@wYC*oFN* zFw7oAhB?AD*ae0;!!_6k0XV}o!~q-N4A&3`1mqV^t;t_Ye&LXs&o|{4cB%Qiytu

v1 zVWvN4V~FYR*%;8r^w=2Kf?>7{nZfTFGP5Iy>I|64vq@a_zN*eZzcPMx23sn_tOTo) zt4^>gIfAHCnNro`EDl-Gt1w~;TlokxLiOWt4OLKitMVUM(yu(jO+rQixd6$_^@e}= zjgpgl+P;#Q;d=Ok{;?*?n$aX!&twT}8(e_S0tEv7Mg>O}+L|VdJ zXc$LKmdUviB+ckQK%TiEpC4&BHCME62U7`1BNuey2Wtc7f*w2816(3!F+e*}9(WxK zGG7ImOGK0THBoCkGOYw`;~MOLGZywflbXIal4dN(O)~?T!)xVzI1jl*xknBQgE9qs zIXA2xKyGc2`(?e!&8aJL*b7)6ttGP2iWm{fWm}N@7|31TV6s>1f?7_ZM7V=3v=LDp zp`wA@>L7DM!^_Q4rpRHiRz6OmbF4u2Ss?dksgs>$3uIa`_yr5002Scj0c5%y$m|4E zA+@rzbTFKX`y;N0@*sd@{2zgLjU1%6UHau_FAq?6phRsUiD4Zn^pk-u>v?b6YAo4h z684;_gZ2CouKfv++XAS19vkSi_WFrfcotShe$P`YMD+(Cw;E6}P>p_eaq3`@=4(QQ z%uj|o-bbIPCER-fWNrh5Ycy)e&I*f52bu;nV&3w4uqk{uf=snrdd)lV>=Bl%wH?Kw z1C;+!NUG#*0LvyN(!HjX+(RI*7LY)5Q|hV%ls_{oi?Ci2Sr2{%z7xc!t_*Y6aNg$2 z+A!yKy)HUn$^YPSNqh1CJO{AdFf^CIe{9DpAf z%V`53BkVI*H~BHXFgoCr|8_t<*#IT{D!cr^cSoQSamX)>4mjmU8!)x52OEICH1LCe zuyg=CL;qskv1d<15If)|zyF=&dMX3abJ^s-%FesE&iUzpoBU`4Q)h%rUI*lGKa?M2 z#eF|>#U(RmI=pmHoBUUA)`JZ|-+GnoFwP)e+viNLHXYO^e@12&G08&GHh|v@P9y=Z zmYn=bBFs$(waJfV;L0_4mq@rx4Q*qTeXB&|1)I7N@R4{B@`-r#w3rBaUQFD7lug_Y zNG9&yPay&yrVx++NoCgmQC?0$8yG)b!ZtvOZ~@uRNko3w%l%VvdF5av+kbw3(GRk6 z%FYU3@|Ca+ki*Y{?6^*^PW3)+@o_JEZt|ll1l2)$MiyZ>ElhIdfE*SGy#L3I|GHk| zCBHB_IOolfp!{@{J*=*>a*NMTenEABHeg^ZAsc|P_lA^TP#t()kdO^j%HJUNkFv9V z{QN;$dKU55B)a&^0nEDq{OjHSvE*hQOTSeRsp$noTtY^zbm(}3B;-f`SFi6smdxzO zH}Bw^gYc~(ZgnJy)`4KY4ahH<`VWuyAG_?VbLYL4-`uNL9gxGZ{$mAHukU}B%k?34Gk_o>cVl?_wOy$hYny|2-`o{{>3#VV%32l?|*ju@f^Q7 zHmJ%5kROTafJ}q-Z{_?t$V=?~AEL;QI@q}VyA4QG2V^?4|D&o8WS%tOkMgIaml6X< z)co$8MC^bPJ{M)jAIL7&{!b=uLi&G{o%OTZn*Bpr6t51bC9uzOjro+ovsn7SS#~6< z{i6<&Qo#mvfAmLU(*b-_rV{z@|G;;h$3IxI55|x1|@>q_=h~C zFY@>oyX@kSKOy-mp~A%m>Z}8pa}8;5oj(iLVLyW(?M{?yb;TcTz}E5I4}O5fi^yex z9L{z8v(gVT_qi5o{F}uO=TRK;$0gQo1DK!CIv~?t@|!yi>1qQBH2;B9X7;c+J0en{@T>HDntNjepw|$G)C2aRU_Vj`kSKETii2rh z2QuU}hglHJB>fEVi2aFkfv{h>E_2KBs?xyz*&6+Il9oYS=>y+5zQCGiwH40K0pXY{ zYwiJ-8`d~1-os~bOiBev;`R+q?5ZsUU~>T_Y;lKFZ2^QDfFN^MgDq8?6)08hf&e=p zq~d+p%D@GWu*Cr$zVACzy_Z4NCJFkGI{uVc$Ew{L6jGU&{*u`zf}|PM3i@DlVEy!JXqR~a1p&eS z546N8!gIJrhkIeGl_^m=un$BlV6DM^z(Wh*X9}$Sy#kak^msg(mJjiLVExe)@Z0sa zH#F$E74T~dlq@vQwavRE(~@DWxh>2al^7;~dlTT<9C%I>8{eGrkZEav2h>>@V)d`U zcW2=F8c=<#lZL*Hu&c1JL_B&88k-G2s`H(@$ip2K)=MJ z?h5y?y;y5sny@k;|F3E3;==&^H|#;hb(|3R#yx4%fPTl&g`&tKaVn7ET z89%(Ifk#_*K6#xBDg%rE7q8O@EDK^O2WUr7*I@TYz$@+*p3IA9&U=E$z~Ub%@sc*cId-c*JsBAPBFuJyV+uocuov6(a`Fe!%)R@T5~4U&37HCIct`h{4j;;==&m z$;kU^Vff_rET;_I_^NZk6%@Yb$~W2%Qt(qT?d?IP2LW$& zo}0zVKgz*RhPlhcfI;OtlSF>{<#(SO|NLYKdMpMEpnnE1JPl7ETV z5Ax3X)n-e9K`F$*y6kgQIcHDo<(I`b>*#TzkeECpo|s}8UV|pXTI4#_DWFde?8k$j zee=6toBgx+$2nH2l2}Ir{gJ@i8h-royU&k*lmp)pm=5PVu1@ti>`N6x{Xr1^87bfA zEQ(DAN+i}F>Rf*lgnz_fjq~@p$90#1nh*P}Fxz1ugUIz~vSK)Cd1D@n6NTj)R&E{kzre$EtRW!0mTV zIfcbKl;|J&PpV|# z*?+~EA1f>@|A@g-ySG2^kLmG|0mcUCW~_3{d4%}2_8+o%<#wEJ`-a%GGpAPCxFd() zq#4Vyxbn|i2I^IqzsGZI2IBwFf6I+$NniUB2WkrRe+o1v1H4uDpG%rgUg@*R@BzkO z)j92jR~XX8agSnN>DR|SkfE3~oHmXZuiWkdZ`e14GBm`u=2&F|^EQI9Zf-0JbPeL8 zEu{dl(yXr|<|*>{9lLOl4wh*gJE(PR0PcxPF3bb-5~!@Q^U3QR(nH^h?+20IaS%@s z`7mwFgQt(=#V5aekT%x0v92Lhe>*(Si+{8gY>RMxukzzbl>3ku*7>mC9qZotK)m?l zb`SfEF)r49Yt+R=;ioQfAb-S!)t8EGQtT7JevQN`!gIWK8fXoWE|6Gs4HLbXle{WF zDF;)BV7`$8P9X}xX+>~!!C7E%L;>NCIe$t2`>}FblAK)SG$lE?RD2G;rph{oU>Lr% z$vV1V7*;8A9`SO0{#-CKE_{UGbvAxeG0Y|pOHP*DocdttsakI#ReEIU6(Z=vLoB`H zJgwe9qkyXCX>|~No)*-vnnNAY0Ooz{1iA|p1C&)oF;EY<2lscv7@Pr&BQ}R@#qxtR zJ3$_h=j&|2`!uN8$P0`ki0rE&epASI9pw2z@O(MP(Wp>A3R?^M5bB$-kZ%{rGeq=! zIrt#cf^l@MT>h2wE!MK*0Qq7)ifetA z7Y~?!d}1as9Ofg`)H8?uRoejTIu+*K#8j6}$a^QJ?Cjy%c))jr z&4IGn^W%2TjR#i#aq$_1x}LD}7-*0u1M>!dSrhl#!kj#?@<$zP+ZQJ!27m?ASM%0A zCok+gu;(8Wmq832DWne2M{6hDc=2KgkJ%40^8xM}#V}-B-T2@{1 z=f*=sRE7}qs;HR1Ncv}j0DmPV6~y)fX@tw}xN7=qvY>n4Q8Dj(wdtGlI;Z|wJm8)K z?BzmWUs!2>SO&PYBYwD6TmCT#Uzz=uLi0eTVcr7!pW5i2Ked+>+)2YcRlzUxpPQBYJ?lL{fsMl(73Z@Ke8tx^A|%D+ba zi!<-KglqCZ4TkU!^{*-(5C=wG@~SOv6%Pz(C-JO@L;T(n;(-BexZWryzaQj}dI$!p zVNZ1kV_H1r=Hv;UM|(h<s zKyrcZ10*>if2?>RRq3QcnwU1`QQcJmd1F5XbW1S%DysV_n(^cs4 zB0N6;ZEg}I$@K^KTR)|*rk-KiF7#I6RYn0O&OSAB`Nff>Rz>J@omPzPM;8u5|V%%Ee zV;Ye$`NXYz$;9f7+~&kH<0B7T^T+sMQ84zaSzEsYlm8#|$KoI3<8Q(0H$PxosShf~ zt$`o%!Wo|$@#P0>AwJq7)1Dy?(|%ZT=ozOG`;O$-AdRsp9BELQ_ETj;=tIy?)X+n1 zVR&CapB}A7A2vLTX&@ifw#X$u-os~Vlpj_(VzXzKU9s>*jF`G&e-_V+6riscytoT^ OA|!r4)^ivKg literal 0 HcmV?d00001 diff --git a/packages/sonataflow-management-console-webapp/src/index.html b/packages/sonataflow-management-console-webapp/src/index.html new file mode 100644 index 00000000000..e5399705478 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/index.html @@ -0,0 +1,35 @@ + + + + + + SonataFlow Management Console + + + + + + +

+ + + diff --git a/packages/sonataflow-management-console-webapp/src/index.tsx b/packages/sonataflow-management-console-webapp/src/index.tsx new file mode 100644 index 00000000000..52a3859d1d6 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/index.tsx @@ -0,0 +1,107 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import * as React from "react"; +import * as ReactDOM from "react-dom"; +import ApolloClient from "apollo-client"; +import "@patternfly/patternfly/patternfly.css"; +import "@patternfly/patternfly/patternfly-addons.css"; +import "@patternfly/react-core/dist/styles/base.css"; +import { HttpLink } from "apollo-link-http"; +import { setContext } from "apollo-link-context"; +import { onError } from "apollo-link-error"; +import { InMemoryCache, NormalizedCacheObject } from "apollo-cache-inmemory"; +import ManagementConsole from "./components/console/ManagementConsole/ManagementConsole"; +import ManagementConsoleRoutes from "./components/console/ManagementConsoleRoutes/ManagementConsoleRoutes"; +import { KeycloakUnavailablePage } from "@kie-tools/runtime-tools-components/src/common/components/KeycloakUnavailablePage"; +import { ServerUnavailablePage } from "@kie-tools/runtime-tools-shared-webapp-components/dist/ServerUnavailablePage"; +import { UserContext } from "@kie-tools/runtime-tools-components/dist/contexts/KogitoAppContext"; +import { + isAuthEnabled, + updateKeycloakToken, + getToken, + appRenderWithAxiosInterceptorConfig, +} from "@kie-tools/runtime-tools-components/dist/utils/KeycloakClient"; +import { initEnv } from "./env/Env"; +import { ENV_PREFIX } from "./env/EnvConstants"; +import { EnvJson } from "./env/EnvJson"; + +const onLoadFailure = (): void => { + ReactDOM.render(, document.getElementById("root")); +}; + +const appRender = async (ctx: UserContext) => { + const httpLink = new HttpLink({ + uri: (window as any)["DATA_INDEX_ENDPOINT"], + }); + const fallbackUI = onError(({ networkError }: any) => { + if (networkError && networkError.stack === "TypeError: Failed to fetch") { + // eslint-disable-next-line react/no-render-return-value + return ReactDOM.render( + + window.location.reload()} /> + , + document.getElementById("root") + ); + } + }); + + const setGQLContext = setContext((_, { headers }) => { + if (!isAuthEnabled()) { + return { + headers, + }; + } + return new Promise((resolve, reject) => { + updateKeycloakToken() + .then(() => { + const token = getToken(); + resolve({ + headers: { + ...headers, + authorization: token ? `Bearer ${token}` : "", + }, + }); + }) + .catch(() => { + reject(); + }); + }); + }); + + const cache = new InMemoryCache(); + const client: ApolloClient = new ApolloClient({ + cache, + link: setGQLContext.concat(fallbackUI.concat(httpLink)), + }); + ReactDOM.render( + + + , + document.getElementById("root") + ); +}; + +initEnv().then((env) => { + if (env) { + Object.keys(env).forEach((key) => { + (window as any)[key.replace(`${ENV_PREFIX}_`, "")] = env[key as keyof EnvJson]; + }); + } + appRenderWithAxiosInterceptorConfig((ctx: UserContext) => appRender(ctx), onLoadFailure); +}); diff --git a/packages/sonataflow-management-console-webapp/src/navigation/Routes.ts b/packages/sonataflow-management-console-webapp/src/navigation/Routes.ts new file mode 100644 index 00000000000..139c2dad526 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/navigation/Routes.ts @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const IS_HASH_ROUTER = true; +const SETTINGS_ROUTE = "/settings"; + +export enum QueryParams { + SETTINGS = "settings", + URL = "url", + BRANCH = "branch", + REMOVE_REMOTE = "removeRemote", + RENAME_WORKSPACE = "renameWorkspace", + SAMPLE_ID = "sampleId", + SAMPLES_CATEGORY = "category", + FILTERS = "filters", + SORT_BY = "sortBy", +} + +export enum PathParams { + EXTENSION = "extension", + WORKSPACE_ID = "workspaceId", + FILE_RELATIVE_PATH = "fileRelativePath", + WORKFLOW_ID = "workflowId", + WORKFLOW_NAME = "workflowName", +} + +export class Route< + T extends { + pathParams?: any; + queryParams?: any; + }, +> { + constructor(private readonly pathDelegate: (pathParams: { [k in T["pathParams"]]: string }) => string) {} + + public url(args: { + base?: string; + pathParams: { [k in T["pathParams"]]: string }; + queryParams?: Partial<{ [k in T["queryParams"]]: string }>; + }) { + const SEP = args.base?.endsWith("/") ? "" : "/"; + const HASH = IS_HASH_ROUTER ? "#" : ""; + const path = this.pathDelegate(args.pathParams); + const queryParams = args.queryParams ?? {}; + + if (!args.base && Object.keys(queryParams).length <= 0) { + return `${HASH}${path}`; + } + + if (!args.base) { + return `${HASH}${path}?${this.queryString(queryParams)}`; + } + + if (Object.keys(queryParams).length <= 0) { + return `${args.base}${SEP}${HASH}${path}`; + } + + return `${args.base}${SEP}${HASH}${path}?${this.queryString(queryParams)}`; + } + + public queryString(queryParams: Partial<{ [k in T["queryParams"]]: string }>) { + return decodeURIComponent(new URLSearchParams(queryParams as Record).toString()); + } + + public queryArgs(queryString: QueryParamsImpl): QueryParamsImpl { + return queryString; + } + + public path(pathParams: { [k in T["pathParams"]]: string }) { + return this.pathDelegate(pathParams); + } +} + +export interface QueryParamsImpl { + has(name: Q): boolean; + get(name: Q): string | undefined; + with(name: Q, value: string): QueryParamsImpl; + without(name: Q): QueryParamsImpl; + toString(): string; +} + +export function newQueryParamsImpl(queryString: string): QueryParamsImpl { + return { + has: (name) => new URLSearchParams(queryString).has(name), + get: (name) => { + const val = new URLSearchParams(queryString).get(name); + return !val ? undefined : decodeURIComponent(val); + }, + with: (name, value) => { + const urlSearchParams = new URLSearchParams(queryString); + urlSearchParams.set(name, value); + return newQueryParamsImpl(decodeURIComponent(urlSearchParams.toString())); + }, + without: (name) => { + const urlSearchParams = new URLSearchParams(queryString); + urlSearchParams.delete(name); + return newQueryParamsImpl(decodeURIComponent(urlSearchParams.toString())); + }, + toString: () => { + return decodeURIComponent(new URLSearchParams(queryString).toString()); + }, + }; +} + +export const routes = { + home: new Route<{}>(() => `/`), + runtimeToolsWorkflowInstances: new Route<{}>(() => `/WorkflowInstances`), + runtimeToolsWorkflowDefinitions: new Route<{}>(() => `/WorkflowDefinitions`), + runtimeToolsWorkflowDetails: new Route<{ + queryParams: QueryParams.FILTERS | QueryParams.SORT_BY; + pathParams: PathParams.WORKFLOW_ID; + }>(({ workflowId }) => `/WorkflowDetails/${workflowId}`), + runtimeToolsWorkflowForm: new Route<{ + pathParams: PathParams.WORKFLOW_NAME; + }>(({ workflowName }) => `/WorkflowDefinition/${workflowName}`), + runtimeToolsTriggerCloudEventForWorkflow: new Route<{ + pathParams: PathParams.WORKFLOW_ID; + }>(({ workflowId }) => `/WorkflowInstances/${workflowId}`), + runtimeToolsTriggerCloudEventForWorkflowDefinition: new Route<{ + pathParams: PathParams.WORKFLOW_NAME; + }>(({ workflowName }) => `/WorkflowDefinition/${workflowName}/trigger-cloud-event`), + monitoring: new Route<{}>(() => `/Monitoring`), +}; diff --git a/packages/sonataflow-management-console-webapp/src/static/env.json b/packages/sonataflow-management-console-webapp/src/static/env.json new file mode 100644 index 00000000000..0bcdd4c5d7c --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/static/env.json @@ -0,0 +1 @@ +{ "This file is placeholder": "Actual content is set at webpack.config.ts" } diff --git a/packages/sonataflow-management-console-webapp/src/static/sonataflowManagementConsoleLogo.svg b/packages/sonataflow-management-console-webapp/src/static/sonataflowManagementConsoleLogo.svg new file mode 100644 index 00000000000..18bd61eeb2a --- /dev/null +++ b/packages/sonataflow-management-console-webapp/src/static/sonataflowManagementConsoleLogo.svg @@ -0,0 +1,22 @@ + + + + + kie_icon_rgb_fullcolor_default + + + + + + + + diff --git a/packages/sonataflow-management-console-webapp/tsconfig.json b/packages/sonataflow-management-console-webapp/tsconfig.json new file mode 100644 index 00000000000..3a7f3a5ac10 --- /dev/null +++ b/packages/sonataflow-management-console-webapp/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@kie-tools/tsconfig/tsconfig.esm.json", + "compilerOptions": { + "declaration": false, + "declarationMap": false, + "esModuleInterop": true, + "jsx": "react-jsx", + "noImplicitAny": false, + "noImplicitThis": true, + "strictNullChecks": false + }, + "include": ["src"], + "preserveSymlinks": true, + + "ts-node": { + "esm": true, + "compilerOptions": { + "esModuleInterop": true, + "module": "CommonJS" + } + } +} diff --git a/packages/sonataflow-management-console-webapp/webpack.config.ts b/packages/sonataflow-management-console-webapp/webpack.config.ts new file mode 100644 index 00000000000..64b6a69f93c --- /dev/null +++ b/packages/sonataflow-management-console-webapp/webpack.config.ts @@ -0,0 +1,207 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as path from "path"; +import { merge } from "webpack-merge"; +import NodePolyfillPlugin from "node-polyfill-webpack-plugin"; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import MonacoWebpackPlugin from "monaco-editor-webpack-plugin"; +import CopyPlugin from "copy-webpack-plugin"; +import FileManagerPlugin from "filemanager-webpack-plugin"; +import common from "@kie-tools-core/webpack-base/webpack.common.config"; +import * as swEditorAssets from "@kie-tools/serverless-workflow-diagram-editor-assets"; +import { defaultEnvJson } from "./build/defaultEnvJson"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import { env } from "./env"; + +const BG_IMAGES_DIRNAME = "bgimages"; +const buildEnv: any = env; // build-env is not typed + +export default async (env: any, argv: any) => { + return [ + { + ...merge(common(env), { + entry: { + index: path.resolve(__dirname, "src", "index.tsx"), + "serverless-workflow-combined-editor-envelope": + "./src/envelope/ServerlessWorkflowCombinedEditorEnvelopeApp.ts", + "serverless-workflow-diagram-editor-envelope": "./src/envelope/ServerlessWorkflowDiagramEditorEnvelopeApp.ts", + "serverless-workflow-text-editor-envelope": "./src/envelope/ServerlessWorkflowTextEditorEnvelopeApp.ts", + }, + plugins: [ + new HtmlWebpackPlugin({ + template: "./src/index.html", + inject: false, + minify: false, + }), + new CopyPlugin({ + patterns: [ + { from: "./resources", to: "./resources" }, + { + from: "./resources/serverless-workflow-combined-editor-envelope.html", + to: "./serverless-workflow-combined-editor-envelope.html", + }, + { + from: "./resources/serverless-workflow-diagram-editor-envelope.html", + to: "./serverless-workflow-diagram-editor-envelope.html", + }, + { + from: "./resources/serverless-workflow-text-editor-envelope.html", + to: "./serverless-workflow-text-editor-envelope.html", + }, + { + from: path.join(path.dirname(require.resolve("@kie-tools/dashbuilder-client/package.json")), "/dist"), + to: "./monitoring-webapp", + }, + { + from: "./resources/monitoring-webapp", + to: "./monitoring-webapp", + }, + { + from: "./src/static/env.json", + to: "./env.json", + transform: () => JSON.stringify(defaultEnvJson, null, 2), + }, + { + from: swEditorAssets.swEditorPath(), + to: "./diagram", + globOptions: { ignore: ["**/WEB-INF/**/*", "**/*.html"] }, + }, + { + context: swEditorAssets.swEditorFontsPath(), + from: "fontawesome-webfont.*", + to: "./fonts", + force: true, + }, + ], + }), + new FileManagerPlugin({ + events: { + onEnd: { + mkdir: ["./dist/resources/webapp/"], + copy: [ + { source: "./dist/*.js", destination: "./dist/resources/webapp/" }, + { source: "./dist/*.map", destination: "./dist/resources/webapp/" }, + { source: "./dist/fonts", destination: "./dist/resources/webapp/fonts" }, + { + source: "./dist/monitoring-webapp", + destination: "./dist/resources/webapp/monitoring-webapp", + }, + ], + }, + }, + }), + new MonacoWebpackPlugin({ + languages: ["json"], + }), + new NodePolyfillPlugin(), + ], + module: { + rules: [ + { + test: /\.(css|sass|scss)$/, + use: [require.resolve("style-loader"), require.resolve("css-loader"), require.resolve("sass-loader")], + }, + { + test: /\.(svg|ttf|eot|woff|woff2)$/, + use: { + loader: require.resolve("file-loader"), + options: { + // Limit at 50k. larger files emited into separate files + limit: 5000, + outputPath: "fonts", + name: "[path][name].[ext]", + }, + }, + }, + { + test: /\.svg$/, + include: (input) => input.indexOf("background-filter.svg") > 1, + use: [ + { + loader: require.resolve("url-loader"), + options: { + limit: 5000, + outputPath: "svgs", + name: "[name].[ext]", + }, + }, + ], + }, + { + test: /\.svg$/, + include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, + use: { + loader: require.resolve("svg-url-loader"), + options: {}, + }, + }, + { + test: /\.(jpg|jpeg|png|gif)$/i, + use: [ + { + loader: require.resolve("url-loader"), + options: { + limit: 5000, + outputPath: "images", + name: "[name].[ext]", + }, + }, + ], + }, + ], + }, + resolve: { + fallback: { + https: require.resolve("https-browserify"), + http: require.resolve("stream-http"), + }, + }, + ignoreWarnings: [/Failed to parse source map/], + }), + devServer: { + static: { + directory: "./dist", + }, + host: buildEnv.sonataflowManagementConsoleWebapp.host, + port: buildEnv.sonataflowManagementConsoleWebapp.port, + compress: true, + historyApiFallback: false, + hot: true, + client: { + overlay: { + warnings: false, + errors: true, + runtimeErrors: false, + }, + progress: true, + }, + proxy: { + "/svg": { + target: "http://localhost:4000", + secure: false, + changeOrigin: true, + }, + }, + }, + }, + ]; +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8300116ac53..6e4a4dfe55a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -976,7 +976,7 @@ importers: version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/blocks': specifier: ^7.3.2 - version: 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/manager-api': specifier: ^7.3.2 version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -985,10 +985,10 @@ importers: version: 7.4.6 '@storybook/react': specifier: ^7.3.2 - version: 7.4.6(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) + version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -1033,7 +1033,7 @@ importers: version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3))) react-json-view: specifier: ^1.21.3 - version: 1.21.3(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -1042,7 +1042,7 @@ importers: version: 1.1.6 storybook: specifier: ^7.3.2 - version: 7.4.6(encoding@0.1.13) + version: 7.4.6 ts-jest: specifier: ^29.1.5 version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(esbuild@0.18.20)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) @@ -3363,7 +3363,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/d3-drag': specifier: ^3.0.3 version: 3.0.7 @@ -3604,7 +3604,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.23.9)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/jest-when': specifier: ^3.5.5 version: 3.5.5 @@ -7186,7 +7186,7 @@ importers: version: 3.2.3(graphql@14.3.1) '@graphql-codegen/cli': specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3) + version: 2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) '@graphql-codegen/introspection': specifier: ^2.2.3 version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) @@ -7445,7 +7445,7 @@ importers: version: 3.2.3(graphql@14.3.1) '@graphql-codegen/cli': specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3) + version: 2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) '@graphql-codegen/introspection': specifier: ^2.2.3 version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) @@ -7819,7 +7819,7 @@ importers: version: 3.2.3(graphql@14.3.1) '@graphql-codegen/cli': specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3) + version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) '@graphql-codegen/introspection': specifier: ^2.2.3 version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) @@ -8388,7 +8388,7 @@ importers: version: 3.2.3(graphql@14.3.1) '@graphql-codegen/cli': specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3) + version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) '@graphql-codegen/introspection': specifier: ^2.2.3 version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) @@ -8621,7 +8621,7 @@ importers: version: 3.2.3(graphql@14.3.1) '@graphql-codegen/cli': specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3) + version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) '@graphql-codegen/introspection': specifier: ^2.2.3 version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) @@ -8832,7 +8832,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.18.10)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/lodash': specifier: ^4.14.168 version: 4.14.169 @@ -9183,6 +9183,9 @@ importers: '@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env': specifier: workspace:* version: link:../serverless-logic-web-tools-swf-dev-mode-image-env + '@kie-tools/sonataflow-dev-app': + specifier: workspace:* + version: link:../sonataflow-dev-app '@kie-tools/tsconfig': specifier: workspace:* version: link:../tsconfig @@ -9219,6 +9222,9 @@ importers: '@types/uuid': specifier: ^8.3.0 version: 8.3.0 + concurrently: + specifier: ^8.2.2 + version: 8.2.2 copy-webpack-plugin: specifier: ^11.0.0 version: 11.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) @@ -9636,9 +9642,6 @@ importers: react-router-dom: specifier: ^5.3.4 version: 5.3.4(react@17.0.2) - uuid: - specifier: ^8.3.2 - version: 8.3.2 devDependencies: '@babel/core': specifier: ^7.16.0 @@ -9661,6 +9664,9 @@ importers: '@kie-tools/root-env': specifier: workspace:* version: link:../root-env + '@kie-tools/sonataflow-dev-app': + specifier: workspace:* + version: link:../sonataflow-dev-app '@kie-tools/tsconfig': specifier: workspace:* version: link:../tsconfig @@ -9682,39 +9688,24 @@ importers: '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 - '@types/uuid': - specifier: ^8.3.0 - version: 8.3.0 - apollo-server-express: - specifier: ^3.13.0 - version: 3.13.0(encoding@0.1.13)(express@4.19.2)(graphql@14.3.1) - body-parser: - specifier: ^1.20.2 - version: 1.20.2 + '@types/testing-library__jest-dom': + specifier: ^5.9.1 + version: 5.14.9 concurrently: specifier: ^8.2.2 version: 8.2.2 copy-webpack-plugin: specifier: ^11.0.0 version: 11.0.0(webpack@5.94.0(webpack-cli@4.10.0)) - cors: - specifier: ^2.8.5 - version: 2.8.5 css-loader: specifier: ^5.2.6 version: 5.2.7(webpack@5.94.0(webpack-cli@4.10.0)) - express: - specifier: ^4.19.2 - version: 4.19.2 file-loader: specifier: ^6.2.0 version: 6.2.0(webpack@5.94.0(webpack-cli@4.10.0)) filemanager-webpack-plugin: specifier: ^7.0.0 version: 7.0.0(webpack@5.94.0(webpack-cli@4.10.0)) - graphql: - specifier: 14.3.1 - version: 14.3.1 html-webpack-plugin: specifier: ^5.3.2 version: 5.5.3(webpack@5.94.0(webpack-cli@4.10.0)) @@ -9733,9 +9724,6 @@ importers: jest-when: specifier: ^3.6.0 version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - lodash: - specifier: ^4.17.21 - version: 4.17.21 monaco-editor-webpack-plugin: specifier: ^7.0.1 version: 7.0.1(monaco-editor@0.39.0)(monaco-yaml@4.0.4(monaco-editor@0.39.0))(webpack@5.94.0(webpack-cli@4.10.0)) @@ -9760,9 +9748,6 @@ importers: svg-url-loader: specifier: ^8.0.0 version: 8.0.0(webpack@5.94.0(webpack-cli@4.10.0)) - swagger-ui-express: - specifier: ^5.0.0 - version: 5.0.0(express@4.19.2) ts-jest: specifier: ^29.1.5 version: 29.1.5(@babel/core@7.23.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.0))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) @@ -10706,6 +10691,9 @@ importers: '@kie-tools/root-env': specifier: workspace:* version: link:../root-env + '@kie-tools/sonataflow-dev-app': + specifier: workspace:* + version: link:../sonataflow-dev-app '@kie-tools/tsconfig': specifier: workspace:* version: link:../tsconfig @@ -10724,6 +10712,9 @@ importers: '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 + concurrently: + specifier: ^8.2.2 + version: 8.2.2 copy-webpack-plugin: specifier: ^11.0.0 version: 11.0.0(webpack@5.94.0(webpack-cli@4.10.0)) @@ -10770,6 +10761,57 @@ importers: specifier: ^5.9.0 version: 5.9.0 + packages/sonataflow-dev-app: + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.24.9 + '@babel/preset-env': + specifier: ^7.16.0 + version: 7.24.7(@babel/core@7.24.9) + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + apollo-server-express: + specifier: ^3.13.0 + version: 3.13.0(encoding@0.1.13)(express@4.19.2)(graphql@14.3.1) + babel-jest: + specifier: ^25.5.1 + version: 25.5.1(@babel/core@7.24.9) + body-parser: + specifier: ^1.20.2 + version: 1.20.2 + cors: + specifier: ^2.8.5 + version: 2.8.5 + express: + specifier: ^4.19.2 + version: 4.19.2 + express-rate-limit: + specifier: ^7.4.0 + version: 7.4.0(express@4.19.2) + graphql: + specifier: 14.3.1 + version: 14.3.1 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + nodemon: + specifier: ^3.1.4 + version: 3.1.4 + swagger-ui-express: + specifier: ^5.0.0 + version: 5.0.0(express@4.19.2) + uuid: + specifier: ^8.3.2 + version: 8.3.2 + packages/sonataflow-devmode-image: devDependencies: '@kie-tools/python-venv': @@ -10806,6 +10848,313 @@ importers: specifier: workspace:* version: link:../root-env + packages/sonataflow-management-console-image: + devDependencies: + '@kie-tools/image-builder': + specifier: workspace:* + version: link:../image-builder + '@kie-tools/image-env-to-json': + specifier: workspace:* + version: link:../image-env-to-json + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/sonataflow-management-console-image-env': + specifier: workspace:* + version: link:../sonataflow-management-console-image-env + '@kie-tools/sonataflow-management-console-webapp': + specifier: workspace:* + version: link:../sonataflow-management-console-webapp + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + ts-json-schema-generator: + specifier: ^1.1.2 + version: 1.1.2 + + packages/sonataflow-management-console-image-env: + devDependencies: + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + + packages/sonataflow-management-console-webapp: + dependencies: + '@kie-tools-core/editor': + specifier: workspace:* + version: link:../editor + '@kie-tools-core/keyboard-shortcuts': + specifier: workspace:* + version: link:../keyboard-shortcuts + '@kie-tools-core/react-hooks': + specifier: workspace:* + version: link:../react-hooks + '@kie-tools/dashbuilder-client': + specifier: workspace:* + version: link:../dashbuilder-client + '@kie-tools/runtime-tools-components': + specifier: workspace:* + version: link:../runtime-tools-components + '@kie-tools/runtime-tools-process-enveloped-components': + specifier: workspace:* + version: link:../runtime-tools-process-enveloped-components + '@kie-tools/runtime-tools-process-gateway-api': + specifier: workspace:* + version: link:../runtime-tools-process-gateway-api + '@kie-tools/runtime-tools-process-webapp-components': + specifier: workspace:* + version: link:../runtime-tools-process-webapp-components + '@kie-tools/runtime-tools-shared-enveloped-components': + specifier: workspace:* + version: link:../runtime-tools-shared-enveloped-components + '@kie-tools/runtime-tools-shared-gateway-api': + specifier: workspace:* + version: link:../runtime-tools-shared-gateway-api + '@kie-tools/runtime-tools-shared-webapp-components': + specifier: workspace:* + version: link:../runtime-tools-shared-webapp-components + '@kie-tools/runtime-tools-swf-gateway-api': + specifier: workspace:* + version: link:../runtime-tools-swf-gateway-api + '@kie-tools/runtime-tools-swf-webapp-components': + specifier: workspace:* + version: link:../runtime-tools-swf-webapp-components + '@kie-tools/serverless-workflow-combined-editor': + specifier: workspace:* + version: link:../serverless-workflow-combined-editor + '@kie-tools/serverless-workflow-diagram-editor-assets': + specifier: workspace:* + version: link:../serverless-workflow-diagram-editor-assets + '@kie-tools/serverless-workflow-diagram-editor-envelope': + specifier: workspace:* + version: link:../serverless-workflow-diagram-editor-envelope + '@kie-tools/serverless-workflow-text-editor': + specifier: workspace:* + version: link:../serverless-workflow-text-editor + '@patternfly/patternfly': + specifier: ^4.224.2 + version: 4.224.2 + '@patternfly/react-core': + specifier: ^4.276.6 + version: 4.276.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + apollo-cache-inmemory: + specifier: 1.6.6 + version: 1.6.6(graphql@14.3.1) + apollo-client: + specifier: 2.6.10 + version: 2.6.10(graphql@14.3.1) + apollo-link-context: + specifier: ^1.0.20 + version: 1.0.20(graphql@14.3.1) + apollo-link-error: + specifier: 1.1.13 + version: 1.1.13(graphql@14.3.1) + apollo-link-http: + specifier: 1.5.17 + version: 1.5.17(graphql@14.3.1) + graphql: + specifier: 14.3.1 + version: 14.3.1 + history: + specifier: ^4.9.0 + version: 4.10.1 + monaco-editor: + specifier: ^0.39.0 + version: 0.39.0 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-apollo: + specifier: 3.1.3 + version: 3.1.3(@types/react@17.0.21)(apollo-cache@1.3.5(graphql@14.3.1))(apollo-client@2.6.10(graphql@14.3.1))(apollo-link@1.2.14(graphql@14.3.1))(apollo-utilities@1.3.4(graphql@14.3.1))(graphql@14.3.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-apollo-hooks: + specifier: ^0.5.0 + version: 0.5.0(apollo-client@2.6.10(graphql@14.3.1))(graphql@14.3.1)(react@17.0.2) + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-router: + specifier: ^5.3.4 + version: 5.3.4(react@17.0.2) + react-router-dom: + specifier: ^5.3.4 + version: 5.3.4(react@17.0.2) + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.23.9 + '@babel/preset-env': + specifier: ^7.16.0 + version: 7.23.9(@babel/core@7.23.9) + '@graphql-codegen/add': + specifier: ^3.2.3 + version: 3.2.3(graphql@14.3.1) + '@graphql-codegen/cli': + specifier: ^2.16.5 + version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) + '@graphql-codegen/introspection': + specifier: ^2.2.3 + version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) + '@graphql-codegen/typescript': + specifier: ^2.8.8 + version: 2.8.8(encoding@0.1.13)(graphql@14.3.1) + '@graphql-codegen/typescript-operations': + specifier: ^2.5.13 + version: 2.5.13(encoding@0.1.13)(graphql@14.3.1) + '@graphql-codegen/typescript-react-apollo': + specifier: ^3.3.7 + version: 3.3.7(encoding@0.1.13)(graphql-tag@2.12.6(graphql@14.3.1))(graphql@14.3.1) + '@kie-tools-core/webpack-base': + specifier: workspace:* + version: link:../webpack-base + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/sonataflow-dev-app': + specifier: workspace:* + version: link:../sonataflow-dev-app + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3))) + '@types/enzyme': + specifier: ^3.10.13 + version: 3.10.18 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/react': + specifier: ^17.0.6 + version: 17.0.21 + '@types/react-dom': + specifier: ^17.0.5 + version: 17.0.8 + '@types/react-router': + specifier: ^5.1.20 + version: 5.1.20 + '@types/react-router-dom': + specifier: ^5.3.3 + version: 5.3.3 + '@types/webpack': + specifier: ^4.41.33 + version: 4.41.39 + '@wojtekmaj/enzyme-adapter-react-17': + specifier: ^0.8.0 + version: 0.8.0(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + babel-jest: + specifier: ^25.5.1 + version: 25.5.1(@babel/core@7.23.9) + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + core-js: + specifier: 3.6.5 + version: 3.6.5 + css-loader: + specifier: ^5.2.6 + version: 5.2.7(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + css-minimizer-webpack-plugin: + specifier: ^5.0.1 + version: 5.0.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + enzyme: + specifier: ^3.11.0 + version: 3.11.0 + enzyme-to-json: + specifier: ^3.6.2 + version: 3.6.2(enzyme@3.11.0) + file-loader: + specifier: ^6.2.0 + version: 6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + filemanager-webpack-plugin: + specifier: ^7.0.0 + version: 7.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + html-webpack-plugin: + specifier: ^5.3.2 + version: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + https-browserify: + specifier: ^1.0.0 + version: 1.0.0 + identity-obj-proxy: + specifier: ^3.0.0 + version: 3.0.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + mini-css-extract-plugin: + specifier: ^2.7.6 + version: 2.9.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + monaco-editor-webpack-plugin: + specifier: ^7.0.1 + version: 7.0.1(monaco-editor@0.39.0)(monaco-yaml@4.0.4(monaco-editor@0.39.0))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + node-polyfill-webpack-plugin: + specifier: ^2.0.1 + version: 2.0.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + sass-loader: + specifier: ^12.3.0 + version: 12.4.0(sass@1.77.6)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + start-server-and-test: + specifier: ^2.0.3 + version: 2.0.3 + stream-http: + specifier: ^3.2.0 + version: 3.2.0 + style-loader: + specifier: ^2.0.0 + version: 2.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + svg-url-loader: + specifier: ^8.0.0 + version: 8.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@25.5.1(@babel/core@7.23.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + ts-loader: + specifier: ^9.4.2 + version: 9.4.2(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3) + tsconfig-paths-webpack-plugin: + specifier: ^3.5.2 + version: 3.5.2 + typescript: + specifier: ^5.5.3 + version: 5.5.3 + url: + specifier: ^0.11.3 + version: 0.11.3 + url-loader: + specifier: ^4.1.1 + version: 4.1.1(file-loader@6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + webpack: + specifier: ^5.94.0 + version: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) + webpack-cli: + specifier: ^4.10.0 + version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) + webpack-dev-server: + specifier: ^4.15.1 + version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) + webpack-merge: + specifier: ^5.9.0 + version: 5.9.0 + packages/sonataflow-operator: devDependencies: '@kie-tools/python-venv': @@ -10901,7 +11250,7 @@ importers: version: 3.0.3(webpack@5.94.0(esbuild@0.18.20)) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) + version: 7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) '@storybook/theming': specifier: ^7.3.2 version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -13367,10 +13716,6 @@ packages: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.18.6': - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -15636,6 +15981,11 @@ packages: '@chevrotain/utils@9.1.0': resolution: {integrity: sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ==} + '@cnakazawa/watch@1.0.4': + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -16387,10 +16737,18 @@ packages: resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@25.5.1': + resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} + engines: {node: '>= 8.3'} + '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@25.5.0': + resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} + engines: {node: '>= 8.3'} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -18484,6 +18842,9 @@ packages: '@types/chai@4.3.7': resolution: {integrity: sha512-/k+vesl92vMvMygmQrFe9Aimxi6oQXFUX9mA5HanTrKUSAMoLauSi6PNFOdRw0oeqilaW600GNx2vSaT2f8aIQ==} + '@types/cheerio@0.22.35': + resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} + '@types/chrome@0.0.193': resolution: {integrity: sha512-R8C84oqvk8A8C8G1viBd8qLpDr86Y/jwD+KLgzUekbIT9RGds6a9GnlQyg8P7ltnGogTMHkiEQK0ZlcrvTeo3Q==} @@ -18641,6 +19002,9 @@ packages: '@types/emscripten@1.39.6': resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} + '@types/enzyme@3.10.18': + resolution: {integrity: sha512-RaO/TyyHZvXkpzinbMTZmd/S5biU4zxkvDsn22ujC29t9FMSzq8tnn8f2MxQ2P8GVhFRG5jTAL05DXKyTtpEQQ==} + '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} @@ -18737,6 +19101,9 @@ packages: '@types/istanbul-lib-report@3.0.0': resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + '@types/istanbul-reports@1.1.1': + resolution: {integrity: sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==} + '@types/istanbul-reports@3.0.0': resolution: {integrity: sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==} @@ -18980,12 +19347,21 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/source-list-map@0.1.6': + resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} + '@types/ssri@7.1.1': resolution: {integrity: sha512-DPP/jkDaqGiyU75MyMURxLWyYLwKSjnAuGe9ZCsLp9QZOpXmDfuevk769F0BS86TmRuD5krnp06qw9nSoNO+0g==} '@types/stack-utils@2.0.0': resolution: {integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==} + '@types/tapable@1.0.12': + resolution: {integrity: sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==} + + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + '@types/through@0.0.30': resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} @@ -18998,6 +19374,9 @@ packages: '@types/treeify@1.0.3': resolution: {integrity: sha512-hx0o7zWEUU4R2Amn+pjCBQQt23Khy/Dk56gQU5xi5jtPL1h83ACJCeFaB2M/+WO1AntvWrSoVnnCAfI1AQH4Cg==} + '@types/uglify-js@3.17.5': + resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} + '@types/underscore@1.11.2': resolution: {integrity: sha512-Ls2ylbo7++ITrWk2Yc3G/jijwSq5V3GT0tlgVXEl2kKYXY3ImrtmTCoE2uyTWFRI5owMBriloZFWbE1SXOsE7w==} @@ -19010,6 +19389,12 @@ packages: '@types/vscode@1.67.0': resolution: {integrity: sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g==} + '@types/webpack-sources@3.2.3': + resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} + + '@types/webpack@4.41.39': + resolution: {integrity: sha512-otxUJvoi6FbBq/64gGH34eblpKLgdi+gf08GaAh8Bx6So0ZZic028Ev/SUxD22gbthMKCkeeiXEat1kHLDJfYg==} + '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} @@ -19022,6 +19407,9 @@ packages: '@types/yargs-parser@15.0.0': resolution: {integrity: sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==} + '@types/yargs@15.0.4': + resolution: {integrity: sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==} + '@types/yargs@17.0.24': resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} @@ -19261,6 +19649,18 @@ packages: '@wojtekmaj/date-utils@1.5.0': resolution: {integrity: sha512-0mq88lCND6QiffnSDWp+TbOxzJSwy2V/3XN+HwWZ7S2n19QAgR5dy5hRVhlECXvQIq2r+VcblBu+S9V+yMcxXw==} + '@wojtekmaj/enzyme-adapter-react-17@0.8.0': + resolution: {integrity: sha512-zeUGfQRziXW7R7skzNuJyi01ZwuKCH8WiBNnTgUJwdS/CURrJwAhWsfW7nG7E30ak8Pu3ZwD9PlK9skBfAoOBw==} + peerDependencies: + enzyme: ^3.0.0 + react: ^17.0.0-0 + react-dom: ^17.0.0-0 + + '@wojtekmaj/enzyme-adapter-utils@0.2.0': + resolution: {integrity: sha512-ZvZm9kZxZEKAbw+M1/Q3iDuqQndVoN8uLnxZ8bzxm7KgGTBejrGRoJAp8f1EN8eoO3iAjBNEQnTDW/H4Ekb0FQ==} + peerDependencies: + react: ^17.0.0-0 + '@wry/context@0.4.4': resolution: {integrity: sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==} @@ -19601,6 +20001,9 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -19740,6 +20143,18 @@ packages: aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -19759,6 +20174,14 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.filter@1.0.4: + resolution: {integrity: sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==} + engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -19782,6 +20205,10 @@ packages: resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} @@ -19808,6 +20235,10 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} @@ -19849,6 +20280,11 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + attr-accept@2.2.2: resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} engines: {node: '>=4'} @@ -19891,6 +20327,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + babel-jest@25.5.1: + resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -19917,6 +20359,10 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-jest-hoist@25.5.0: + resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} + engines: {node: '>= 8.3'} + babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20011,6 +20457,11 @@ packages: babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + babel-preset-current-node-syntax@0.1.4: + resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -20021,6 +20472,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@25.5.0: + resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20043,6 +20500,10 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -20138,6 +20599,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -20280,6 +20745,10 @@ packages: resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} engines: {node: ^16.14.0 || >=18.0.0} + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + cache-content-type@1.0.1: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} @@ -20360,6 +20829,10 @@ packages: capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + capture-exit@2.0.0: + resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} + engines: {node: 6.* || 8.* || >= 10.*} + case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} @@ -20469,6 +20942,10 @@ packages: cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + classcat@5.0.4: resolution: {integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==} @@ -20618,6 +21095,10 @@ packages: collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -20799,6 +21280,10 @@ packages: copy-anything@2.0.3: resolution: {integrity: sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==} + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + copy-webpack-plugin@11.0.0: resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -21258,6 +21743,18 @@ packages: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} @@ -21341,6 +21838,10 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-uri-component@0.2.0: + resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} + engines: {node: '>=0.10'} + decompress-maybe@1.0.0: resolution: {integrity: sha512-av8/KhXWRUYQ7lGTl/9Gtizz3nQ+7NqDFm/I4Lx+JvTbzHiD4WqfqxMO4YYi91FTqffoBDCYPfIvofwQZwZ3ZQ==} @@ -21453,6 +21954,18 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} @@ -21559,10 +22072,6 @@ packages: resolution: {integrity: sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==} engines: {node: '>=0.3.1'} - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -21578,6 +22087,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dns-packet@5.6.0: resolution: {integrity: sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==} engines: {node: '>=6'} @@ -21774,10 +22286,6 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} - enhanced-resolve@5.9.3: - resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} - engines: {node: '>=10.13.0'} - enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -21816,6 +22324,18 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + enzyme-shallow-equal@1.0.7: + resolution: {integrity: sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==} + + enzyme-to-json@3.6.2: + resolution: {integrity: sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==} + engines: {node: '>=6.0.0'} + peerDependencies: + enzyme: ^3.4.0 + + enzyme@3.11.0: + resolution: {integrity: sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==} + err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -21837,6 +22357,13 @@ packages: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} + es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + engines: {node: '>= 0.4'} + + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -21857,10 +22384,18 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} @@ -22187,6 +22722,9 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + exec-sh@0.3.4: + resolution: {integrity: sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==} + execa@0.7.0: resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} engines: {node: '>=4'} @@ -22222,6 +22760,10 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -22233,10 +22775,24 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + express-rate-limit@7.4.0: + resolution: {integrity: sha512-v1204w3cXu5gCDmAvgvzI6qjzZzoMWKnyVDk3ACgfswTQLYiGen+r8w0VnXnGMmzEN/g8fwIQ4JrFFd4ZP6ssg==} + engines: {node: '>= 16'} + peerDependencies: + express: 4 || 5 || ^5.0.0-beta.1 + express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -22244,6 +22800,10 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + extract-files@11.0.0: resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} engines: {node: ^12.20 || >= 14.13} @@ -22405,6 +22965,10 @@ packages: resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} engines: {node: '>=8'} + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -22502,6 +23066,10 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -22546,6 +23114,10 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + framer-motion@7.10.3: resolution: {integrity: sha512-k2ccYeZNSpPg//HTaqrU+4pRq9f9ZpaaN7rr0+Rx5zA4wZLbk547wtDzge2db1sB+1mnJ6r59P4xb+aEIi/W+w==} peerDependencies: @@ -22618,10 +23190,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -22703,9 +23271,17 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + get-user-locale@1.5.1: resolution: {integrity: sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag==} + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} @@ -22915,6 +23491,22 @@ packages: has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -22981,6 +23573,9 @@ packages: resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} engines: {node: '>=14'} + html-element-map@1.3.1: + resolution: {integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==} + html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -23319,6 +23914,16 @@ packages: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} + is-accessor-descriptor@0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v0.1.7 + + is-accessor-descriptor@1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v1.0.1 + is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -23370,6 +23975,20 @@ packages: is-core-module@2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + is-data-descriptor@0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v0.1.5 + + is-data-descriptor@1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v1.0.1 + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -23377,6 +23996,14 @@ packages: is-deflate@1.0.0: resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + is-descriptor@0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + + is-descriptor@1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -23387,6 +24014,14 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -23463,6 +24098,10 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} engines: {node: '>=16'} @@ -23471,6 +24110,10 @@ packages: resolution: {integrity: sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==} engines: {node: '>= 0.4'} + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -23540,6 +24183,9 @@ packages: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} + is-subset@0.1.1: + resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} + is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -23613,6 +24259,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -23741,6 +24391,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@25.5.1: + resolution: {integrity: sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==} + engines: {node: '>= 8.3'} + jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -23774,6 +24428,10 @@ packages: jest-resolve: optional: true + jest-regex-util@25.2.6: + resolution: {integrity: sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==} + engines: {node: '>= 8.3'} + jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -23794,10 +24452,18 @@ packages: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-serializer@25.5.0: + resolution: {integrity: sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==} + engines: {node: '>= 8.3'} + jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@25.5.0: + resolution: {integrity: sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==} + engines: {node: '>= 8.3'} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -23818,6 +24484,10 @@ packages: peerDependencies: jest: '>= 25' + jest-worker@25.5.0: + resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} + engines: {node: '>= 8.3'} + jest-worker@27.4.6: resolution: {integrity: sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==} engines: {node: '>= 10.13.0'} @@ -24136,6 +24806,18 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -24340,9 +25022,15 @@ packages: lodash.difference@4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + lodash.flatten@4.4.0: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + lodash.flow@3.5.0: resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} @@ -24355,6 +25043,9 @@ packages: lodash.isboolean@3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + lodash.isinteger@4.0.4: resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} @@ -24519,6 +25210,10 @@ packages: map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true @@ -24617,6 +25312,10 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -24743,6 +25442,9 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -24797,6 +25499,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -24870,6 +25576,9 @@ packages: mongo-object@0.1.4: resolution: {integrity: sha512-QtYk0gupWEn2+iB+DDRt1L+WbcNYvJRaHdih/dcqthOa1DbnREUGSs2WGcW478GNYpElflo/yybZXu0sTiRXHg==} + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + morgan@1.10.0: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} engines: {node: '>= 0.8.0'} @@ -24920,6 +25629,10 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -24937,6 +25650,10 @@ packages: engines: {node: '>=10'} hasBin: true + nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + needle@3.2.0: resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} engines: {node: '>= 4.4.x'} @@ -25190,6 +25907,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} @@ -25204,6 +25925,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -25230,6 +25955,10 @@ packages: object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} @@ -25494,6 +26223,10 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + patch-package@6.4.7: resolution: {integrity: sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==} engines: {npm: '>5'} @@ -25728,6 +26461,10 @@ packages: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -26172,9 +26909,19 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + ramda@0.29.0: resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -26634,6 +27381,10 @@ packages: resolution: {integrity: sha512-wnWtnywepjg/eHIgWR97R7UuM5i+qHLA195qdN9UPKvcMqfn60+67S8sPPW3vDlSEfYHoFkKU8IvpCNty3zQvQ==} engines: {node: '>=10'} + realpath-native@2.0.0: + resolution: {integrity: sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==} + engines: {node: '>=8'} + recast@0.21.5: resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} engines: {node: '>= 4'} @@ -26689,6 +27440,10 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + regex-parser@2.2.11: resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} @@ -26750,6 +27505,14 @@ packages: renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + repeat-element@1.1.3: + resolution: {integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + replace-in-file@7.1.0: resolution: {integrity: sha512-1uZmJ78WtqNYCSuPC9IWbweXkGxPOtk2rKuar8diTw7naVIQZiE3Tm8ACx2PCMXDtVH6N+XxwaRY2qZ2xHPqXw==} engines: {node: '>=10'} @@ -26809,6 +27572,10 @@ packages: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -26846,6 +27613,10 @@ packages: resumer@0.0.0: resolution: {integrity: sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==} + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -26883,7 +27654,6 @@ packages: rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: @@ -26911,6 +27681,13 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + rst-selector-parser@2.2.3: + resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} + + rsvp@4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -26944,6 +27721,10 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -26961,6 +27742,13 @@ packages: safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} @@ -26968,6 +27756,12 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sane@4.1.0: + resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} + engines: {node: 6.* || 8.* || >= 10.*} + deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added + hasBin: true + sanitize-filename-ts@1.0.2: resolution: {integrity: sha512-bON2VOJoappmaBHlnxvBNk5R7HkUAsirf5m1M5Kz15uZykDGbHfGPCQNcEQKR8HrQhgh9CmQ6Xe9y71yM9ywkw==} @@ -27146,6 +27940,10 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -27284,6 +28082,18 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + socket.io-adapter@2.3.3: resolution: {integrity: sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==} @@ -27342,12 +28152,20 @@ packages: peerDependencies: webpack: ^5.72.1 + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-url@0.4.0: + resolution: {integrity: sha512-liJwHPI9x9d9w5WSIjM58MqGmmb7XzNqwdUA3kSBQ4lmDngexlKwawGzK3J1mKXi6+sysoMDlpVyZh9sv5vRfw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -27385,6 +28203,10 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} @@ -27432,6 +28254,10 @@ packages: engines: {node: '>=16'} hasBin: true + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -27521,12 +28347,8 @@ packages: string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} - string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} string.prototype.trimend@1.0.6: @@ -27535,6 +28357,9 @@ packages: string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} @@ -27917,10 +28742,22 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + tocbot@4.21.2: resolution: {integrity: sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==} @@ -28143,17 +28980,33 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + typed-assert@1.0.8: resolution: {integrity: sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==} @@ -28263,6 +29116,10 @@ packages: peerDependencies: react: ^18.0.0 || ^17.0.0 || ^16.8.0 + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -28316,6 +29173,10 @@ packages: unplugin@1.5.0: resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -28347,6 +29208,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} @@ -28426,6 +29291,10 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + utf8-byte-length@1.0.4: resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} @@ -29250,7 +30119,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1801.3(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0))(webpack@5.92.1(esbuild@0.21.5)) + '@angular-devkit/build-webpack': 0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.92.1(esbuild@0.21.5)))(webpack@5.92.1(esbuild@0.21.5)) '@angular-devkit/core': 18.1.3(chokidar@3.6.0) '@angular/build': 18.1.3(@angular/compiler-cli@18.1.3(@angular/compiler@18.1.3(@angular/core@18.1.3(rxjs@7.5.2)(zone.js@0.14.8)))(typescript@5.5.3))(@types/node@22.5.2)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.38)(stylus@0.59.0)(terser@5.29.2)(typescript@5.5.3) '@angular/compiler-cli': 18.1.3(@angular/compiler@18.1.3(@angular/core@18.1.3(rxjs@7.5.2)(zone.js@0.14.8)))(typescript@5.5.3) @@ -29336,7 +30205,7 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0))(webpack@5.92.1(esbuild@0.21.5))': + '@angular-devkit/build-webpack@0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.92.1(esbuild@0.21.5)))(webpack@5.92.1(esbuild@0.21.5))': dependencies: '@angular-devkit/architect': 0.1801.3(chokidar@3.6.0) rxjs: 7.8.1 @@ -30020,14 +30889,14 @@ snapshots: dependencies: '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/generator@7.23.6': dependencies: '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/generator@7.24.7': @@ -30044,10 +30913,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.18.6': - dependencies: - '@babel/types': 7.25.2 - '@babel/helper-annotate-as-pure@7.22.5': dependencies: '@babel/types': 7.25.2 @@ -30772,7 +31637,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/parser@7.17.9': dependencies: @@ -30857,14 +31722,14 @@ snapshots: '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.16.12) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.9) @@ -30945,14 +31810,14 @@ snapshots: '@babel/plugin-proposal-async-generator-functions@7.16.8(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.16.12) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.16.12) '@babel/plugin-proposal-async-generator-functions@7.16.8(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.24.9) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) @@ -30992,14 +31857,14 @@ snapshots: dependencies: '@babel/core': 7.16.12 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.16.12) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.16.12) '@babel/plugin-proposal-class-static-block@7.17.6(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.9) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) '@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.18.10)': @@ -31012,13 +31877,13 @@ snapshots: '@babel/plugin-proposal-dynamic-import@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-dynamic-import@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.18.10)': @@ -31030,13 +31895,13 @@ snapshots: '@babel/plugin-proposal-export-namespace-from@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-export-namespace-from@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.18.10)': @@ -31048,13 +31913,13 @@ snapshots: '@babel/plugin-proposal-json-strings@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-json-strings@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.18.10)': @@ -31066,13 +31931,13 @@ snapshots: '@babel/plugin-proposal-logical-assignment-operators@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.16.12) '@babel/plugin-proposal-logical-assignment-operators@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.18.10)': @@ -31084,13 +31949,13 @@ snapshots: '@babel/plugin-proposal-nullish-coalescing-operator@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-nullish-coalescing-operator@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.18.10)': @@ -31108,13 +31973,13 @@ snapshots: '@babel/plugin-proposal-numeric-separator@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.16.12) '@babel/plugin-proposal-numeric-separator@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.18.10)': @@ -31125,19 +31990,19 @@ snapshots: '@babel/plugin-proposal-object-rest-spread@7.17.3(@babel/core@7.16.12)': dependencies: - '@babel/compat-data': 7.21.7 + '@babel/compat-data': 7.23.5 '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.16.12) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.16.12) '@babel/plugin-proposal-object-rest-spread@7.17.3(@babel/core@7.24.9)': dependencies: - '@babel/compat-data': 7.21.7 + '@babel/compat-data': 7.23.5 '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.9) @@ -31162,13 +32027,13 @@ snapshots: '@babel/plugin-proposal-optional-catch-binding@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-optional-catch-binding@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.18.10)': @@ -31180,14 +32045,14 @@ snapshots: '@babel/plugin-proposal-optional-chaining@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.16.12) '@babel/plugin-proposal-optional-chaining@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) @@ -31233,17 +32098,17 @@ snapshots: '@babel/plugin-proposal-private-property-in-object@7.16.7(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.16.12) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.16.12) '@babel/plugin-proposal-private-property-in-object@7.16.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.24.9) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) '@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.18.10)': @@ -31352,7 +32217,6 @@ snapshots: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.24.8 - optional: true '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.9)': dependencies: @@ -32028,14 +32892,14 @@ snapshots: dependencies: '@babel/core': 7.16.12 '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.16.12) '@babel/plugin-transform-async-to-generator@7.16.8(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.24.9) '@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.18.10)': @@ -35414,6 +36278,11 @@ snapshots: '@chevrotain/utils@9.1.0': {} + '@cnakazawa/watch@1.0.4': + dependencies: + exec-sh: 0.3.4 + minimist: 1.2.8 + '@colors/colors@1.5.0': {} '@cspotcode/source-map-support@0.8.1': @@ -35699,7 +36568,7 @@ snapshots: graphql: 14.3.1 tslib: 2.4.0 - '@graphql-codegen/cli@2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3)': + '@graphql-codegen/cli@2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3)': dependencies: '@babel/generator': 7.23.6 '@babel/template': 7.23.9 @@ -35728,7 +36597,7 @@ snapshots: inquirer: 8.2.4 is-glob: 4.0.3 json-to-pretty-yaml: 1.2.2 - listr2: 4.0.5(enquirer@2.3.6) + listr2: 4.0.5(enquirer@2.4.1) log-symbols: 4.1.0 shell-quote: 1.8.1 string-env-interpolation: 1.0.1 @@ -35750,7 +36619,7 @@ snapshots: - typescript - utf-8-validate - '@graphql-codegen/cli@2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.3.6)(graphql@14.3.1)(typescript@5.5.3)': + '@graphql-codegen/cli@2.16.5(@babel/core@7.24.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3)': dependencies: '@babel/generator': 7.23.6 '@babel/template': 7.23.9 @@ -35779,7 +36648,7 @@ snapshots: inquirer: 8.2.4 is-glob: 4.0.3 json-to-pretty-yaml: 1.2.2 - listr2: 4.0.5(enquirer@2.3.6) + listr2: 4.0.5(enquirer@2.4.1) log-symbols: 4.1.0 shell-quote: 1.8.1 string-env-interpolation: 1.0.1 @@ -36327,7 +37196,7 @@ snapshots: cli-spinners: 2.9.2 cli-width: 4.1.0 mute-stream: 1.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 signal-exit: 4.1.0 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 @@ -36774,11 +37643,32 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 + '@jest/transform@25.5.1': + dependencies: + '@babel/core': 7.24.9 + '@jest/types': 25.5.0 + babel-plugin-istanbul: 6.1.1 + chalk: 3.0.0 + convert-source-map: 1.7.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 25.5.1 + jest-regex-util: 25.2.6 + jest-util: 25.5.0 + micromatch: 4.0.5 + pirates: 4.0.6 + realpath-native: 2.0.0 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + '@jest/transform@29.7.0': dependencies: '@babel/core': 7.24.9 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -36794,6 +37684,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/types@25.5.0': + dependencies: + '@types/istanbul-lib-coverage': 2.0.1 + '@types/istanbul-reports': 1.1.1 + '@types/yargs': 15.0.4 + chalk: 3.0.0 + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -36814,7 +37711,7 @@ snapshots: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -37323,7 +38220,7 @@ snapshots: dependencies: playwright: 1.45.2 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -37337,11 +38234,12 @@ snapshots: source-map: 0.7.4 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) optionalDependencies: + '@types/webpack': 4.41.39 type-fest: 4.21.0 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -37355,10 +38253,11 @@ snapshots: source-map: 0.7.4 webpack: 5.94.0(esbuild@0.18.20) optionalDependencies: + '@types/webpack': 4.41.39 type-fest: 4.21.0 webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -37372,11 +38271,12 @@ snapshots: source-map: 0.7.4 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) optionalDependencies: + '@types/webpack': 4.41.39 type-fest: 4.21.0 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -37390,6 +38290,7 @@ snapshots: source-map: 0.7.4 webpack: 5.94.0(webpack-cli@4.10.0) optionalDependencies: + '@types/webpack': 4.41.39 type-fest: 4.21.0 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 @@ -38723,7 +39624,7 @@ snapshots: '@severlessworkflow/sdk-typescript@3.0.3': dependencies: - ajv: 8.11.0 + ajv: 8.12.0 js-yaml: 4.1.0 '@sideway/address@4.1.4': @@ -39015,6 +39916,39 @@ snapshots: - encoding - supports-color + '@storybook/blocks@7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@storybook/channels': 7.4.6 + '@storybook/client-logger': 7.4.6 + '@storybook/components': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/core-events': 7.4.6 + '@storybook/csf': 0.1.1 + '@storybook/docs-tools': 7.4.6 + '@storybook/global': 5.0.0 + '@storybook/manager-api': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/preview-api': 7.4.6 + '@storybook/theming': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/types': 7.4.6 + '@types/lodash': 4.14.169 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.3.2(react@17.0.2) + memoizerific: 1.11.3 + polished: 4.2.2 + react: 17.0.2 + react-colorful: 5.6.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + telejson: 7.2.0 + tocbot: 4.21.2 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - encoding + - supports-color + '@storybook/blocks@7.6.13(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: '@storybook/channels': 7.6.13 @@ -39048,6 +39982,28 @@ snapshots: - encoding - supports-color + '@storybook/builder-manager@7.4.6': + dependencies: + '@fal-works/esbuild-plugin-global-externals': 2.1.2 + '@storybook/core-common': 7.4.6 + '@storybook/manager': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@types/ejs': 3.1.3 + '@types/find-cache-dir': 3.2.1 + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) + browser-assert: 1.2.1 + ejs: 3.1.9 + esbuild: 0.18.20 + esbuild-plugin-alias: 0.2.1 + express: 4.19.2 + find-cache-dir: 3.3.1 + fs-extra: 11.2.0 + process: 0.11.10 + util: 0.12.5 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/builder-manager@7.4.6(encoding@0.1.13)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 @@ -39152,7 +40108,7 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))': + '@storybook/builder-webpack5@7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))': dependencies: '@babel/core': 7.24.9 '@storybook/addons': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39160,9 +40116,9 @@ snapshots: '@storybook/client-api': 7.4.6 '@storybook/client-logger': 7.4.6 '@storybook/components': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core-common': 7.4.6(encoding@0.1.13) + '@storybook/core-common': 7.4.6 '@storybook/core-events': 7.4.6 - '@storybook/core-webpack': 7.4.6(encoding@0.1.13) + '@storybook/core-webpack': 7.4.6 '@storybook/global': 5.0.0 '@storybook/manager-api': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/node-logger': 7.4.6 @@ -39380,6 +40336,55 @@ snapshots: telejson: 7.2.0 tiny-invariant: 1.3.1 + '@storybook/cli@7.4.6': + dependencies: + '@babel/core': 7.24.9 + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) + '@babel/types': 7.23.9 + '@ndelangen/get-tarball': 3.0.9 + '@storybook/codemod': 7.4.6 + '@storybook/core-common': 7.4.6 + '@storybook/core-events': 7.4.6 + '@storybook/core-server': 7.4.6 + '@storybook/csf-tools': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/telemetry': 7.4.6 + '@storybook/types': 7.4.6 + '@types/semver': 7.5.2 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.8.1 + execa: 5.1.1 + express: 4.19.2 + find-up: 5.0.0 + fs-extra: 11.1.1 + get-npm-tarball-url: 2.0.3 + get-port: 5.1.1 + giget: 1.1.3 + globby: 11.1.0 + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)) + leven: 3.1.0 + ora: 5.4.1 + prettier: 2.8.8 + prompts: 2.4.2 + puppeteer-core: 2.1.1 + read-pkg-up: 7.0.1 + semver: 7.5.4 + simple-update-notifier: 2.0.0 + strip-json-comments: 3.1.1 + tempy: 1.0.1 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@storybook/cli@7.4.6(encoding@0.1.13)': dependencies: '@babel/core': 7.24.9 @@ -39574,6 +40579,35 @@ snapshots: '@storybook/client-logger': 7.6.13 '@storybook/preview-api': 7.6.13 + '@storybook/core-common@7.4.6': + dependencies: + '@storybook/core-events': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/types': 7.4.6 + '@types/find-cache-dir': 3.2.1 + '@types/node': 16.18.58 + '@types/node-fetch': 2.6.6 + '@types/pretty-hrtime': 1.0.1 + chalk: 4.1.2 + esbuild: 0.18.20 + esbuild-register: 3.5.0(esbuild@0.18.20) + file-system-cache: 2.3.0 + find-cache-dir: 3.3.1 + find-up: 5.0.0 + fs-extra: 11.1.1 + glob: 10.4.5 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.6.11 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/core-common@7.4.6(encoding@0.1.13)': dependencies: '@storybook/core-events': 7.4.6 @@ -39640,6 +40674,55 @@ snapshots: dependencies: ts-dedent: 2.2.0 + '@storybook/core-server@7.4.6': + dependencies: + '@aw-web-design/x-default-browser': 1.4.126 + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-manager': 7.4.6 + '@storybook/channels': 7.4.6 + '@storybook/core-common': 7.4.6 + '@storybook/core-events': 7.4.6 + '@storybook/csf': 0.1.2 + '@storybook/csf-tools': 7.4.6 + '@storybook/docs-mdx': 0.1.0 + '@storybook/global': 5.0.0 + '@storybook/manager': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/preview-api': 7.4.6 + '@storybook/telemetry': 7.4.6 + '@storybook/types': 7.4.6 + '@types/detect-port': 1.3.3 + '@types/node': 16.18.58 + '@types/pretty-hrtime': 1.0.1 + '@types/semver': 7.5.2 + better-opn: 3.0.2 + chalk: 4.1.2 + cli-table3: 0.6.1 + compression: 1.7.4 + detect-port: 1.5.1 + express: 4.19.2 + fs-extra: 11.2.0 + globby: 11.1.0 + ip: 2.0.0 + lodash: 4.17.21 + open: 8.4.0 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.6.2 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 + util: 0.12.5 + util-deprecate: 1.0.2 + watchpack: 2.4.2 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@storybook/core-server@7.4.6(encoding@0.1.13)': dependencies: '@aw-web-design/x-default-browser': 1.4.126 @@ -39738,6 +40821,17 @@ snapshots: - supports-color - utf-8-validate + '@storybook/core-webpack@7.4.6': + dependencies: + '@storybook/core-common': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/types': 7.4.6 + '@types/node': 16.18.58 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/core-webpack@7.4.6(encoding@0.1.13)': dependencies: '@storybook/core-common': 7.4.6(encoding@0.1.13) @@ -39805,6 +40899,18 @@ snapshots: '@storybook/docs-mdx@0.1.0': {} + '@storybook/docs-tools@7.4.6': + dependencies: + '@storybook/core-common': 7.4.6 + '@storybook/preview-api': 7.4.6 + '@storybook/types': 7.4.6 + '@types/doctrine': 0.0.3 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/docs-tools@7.4.6(encoding@0.1.13)': dependencies: '@storybook/core-common': 7.4.6(encoding@0.1.13) @@ -39884,15 +40990,15 @@ snapshots: '@storybook/postinstall@7.4.6': {} - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.16.12) '@babel/preset-react': 7.22.15(@babel/core@7.16.12) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) - '@storybook/core-webpack': 7.4.6(encoding@0.1.13) - '@storybook/docs-tools': 7.4.6(encoding@0.1.13) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + '@storybook/core-webpack': 7.4.6 + '@storybook/docs-tools': 7.4.6 '@storybook/node-logger': 7.4.6 - '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) + '@storybook/react': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) '@types/node': 16.18.58 '@types/semver': 7.5.2 @@ -39921,11 +41027,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.23.9)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.9) '@babel/preset-react': 7.22.15(@babel/core@7.23.9) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20)) '@storybook/core-webpack': 7.4.6(encoding@0.1.13) '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/node-logger': 7.4.6 @@ -39958,11 +41064,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.18.10)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.18.10) '@babel/preset-react': 7.22.15(@babel/core@7.18.10) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -39996,11 +41102,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.0) '@babel/preset-react': 7.22.15(@babel/core@7.23.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -40034,11 +41140,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.9)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.9) '@babel/preset-react': 7.22.15(@babel/core@7.23.9) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -40162,11 +41268,11 @@ snapshots: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - '@storybook/react-webpack5@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: - '@storybook/builder-webpack5': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) - '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) + '@storybook/builder-webpack5': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/react': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 16.18.58 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -40190,10 +41296,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.23.9)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 16.18.58 react: 17.0.2 @@ -40218,10 +41324,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.18.10)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.18.10)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -40244,10 +41350,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(esbuild@0.18.20)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -40270,10 +41376,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.23.9)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.9)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -40327,6 +41433,37 @@ snapshots: - encoding - supports-color + '@storybook/react@7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)': + dependencies: + '@storybook/client-logger': 7.4.6 + '@storybook/core-client': 7.4.6 + '@storybook/docs-tools': 7.4.6 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 7.4.6 + '@storybook/react-dom-shim': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/types': 7.4.6 + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 16.18.58 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-element-to-jsx-string: 15.0.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + ts-dedent: 2.2.0 + type-fest: 2.19.0 + util-deprecate: 1.0.2 + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/react@7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)': dependencies: '@storybook/client-logger': 7.6.13 @@ -40377,6 +41514,20 @@ snapshots: '@storybook/client-logger': 7.4.6 '@storybook/preview-api': 7.4.6 + '@storybook/telemetry@7.4.6': + dependencies: + '@storybook/client-logger': 7.4.6 + '@storybook/core-common': 7.4.6 + '@storybook/csf-tools': 7.4.6 + chalk: 4.1.2 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.6 + fs-extra: 11.2.0 + read-pkg-up: 7.0.1 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/telemetry@7.4.6(encoding@0.1.13)': dependencies: '@storybook/client-logger': 7.4.6 @@ -40740,11 +41891,15 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.5.2 + '@types/node': 20.14.13 '@types/responselike': 1.0.3 '@types/chai@4.3.7': {} + '@types/cheerio@0.22.35': + dependencies: + '@types/node': 20.14.2 + '@types/chrome@0.0.193': dependencies: '@types/filesystem': 0.0.32 @@ -40927,6 +42082,11 @@ snapshots: '@types/emscripten@1.39.6': {} + '@types/enzyme@3.10.18': + dependencies: + '@types/cheerio': 0.22.35 + '@types/react': 17.0.21 + '@types/escodegen@0.0.6': {} '@types/eslint-scope@3.7.3': @@ -41043,6 +42203,11 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.1 + '@types/istanbul-reports@1.1.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.1 + '@types/istanbul-lib-report': 3.0.0 + '@types/istanbul-reports@3.0.0': dependencies: '@types/istanbul-lib-report': 3.0.0 @@ -41090,7 +42255,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.5.2 + '@types/node': 20.14.13 '@types/leaflet@0.7.35': dependencies: @@ -41258,7 +42423,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.5.2 + '@types/node': 20.14.13 '@types/retry@0.12.2': {} @@ -41321,12 +42486,20 @@ snapshots: dependencies: '@types/node': 20.14.13 + '@types/source-list-map@0.1.6': {} + '@types/ssri@7.1.1': dependencies: '@types/node': 20.14.2 '@types/stack-utils@2.0.0': {} + '@types/tapable@1.0.12': {} + + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 29.5.12 + '@types/through@0.0.30': dependencies: '@types/node': 20.14.2 @@ -41337,6 +42510,10 @@ snapshots: '@types/treeify@1.0.3': {} + '@types/uglify-js@3.17.5': + dependencies: + source-map: 0.6.1 + '@types/underscore@1.11.2': {} '@types/unist@2.0.8': {} @@ -41345,6 +42522,21 @@ snapshots: '@types/vscode@1.67.0': {} + '@types/webpack-sources@3.2.3': + dependencies: + '@types/node': 20.14.13 + '@types/source-list-map': 0.1.6 + source-map: 0.7.4 + + '@types/webpack@4.41.39': + dependencies: + '@types/node': 20.14.13 + '@types/tapable': 1.0.12 + '@types/uglify-js': 3.17.5 + '@types/webpack-sources': 3.2.3 + anymatch: 3.1.2 + source-map: 0.6.1 + '@types/wrap-ansi@3.0.0': {} '@types/ws@8.5.12': @@ -41357,6 +42549,10 @@ snapshots: '@types/yargs-parser@15.0.0': {} + '@types/yargs@15.0.4': + dependencies: + '@types/yargs-parser': 15.0.0 + '@types/yargs@17.0.24': dependencies: '@types/yargs-parser': 15.0.0 @@ -41754,6 +42950,26 @@ snapshots: '@wojtekmaj/date-utils@1.5.0': {} + '@wojtekmaj/enzyme-adapter-react-17@0.8.0(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@wojtekmaj/enzyme-adapter-utils': 0.2.0(react@17.0.2) + enzyme: 3.11.0 + enzyme-shallow-equal: 1.0.7 + has: 1.0.3 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 17.0.2 + react-test-renderer: 17.0.2(react@17.0.2) + + '@wojtekmaj/enzyme-adapter-utils@0.2.0(react@17.0.2)': + dependencies: + function.prototype.name: 1.1.6 + has: 1.0.3 + object.fromentries: 2.0.7 + prop-types: 15.8.1 + react: 17.0.2 + '@wry/context@0.4.4': dependencies: '@types/node': 20.14.2 @@ -42210,6 +43426,13 @@ snapshots: any-promise@1.3.0: {} + anymatch@2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + anymatch@3.1.2: dependencies: normalize-path: 3.0.0 @@ -42429,6 +43652,12 @@ snapshots: dependencies: deep-equal: 2.2.3 + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -42454,6 +43683,17 @@ snapshots: array-union@2.1.0: {} + array-unique@0.3.2: {} + + array.prototype.filter@1.0.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-array-method-boxes-properly: 1.0.0 + es-object-atoms: 1.0.0 + is-string: 1.0.7 + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.7 @@ -42496,7 +43736,18 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 @@ -42536,6 +43787,8 @@ snapshots: assertion-error@1.1.0: {} + assign-symbols@1.0.0: {} + ast-types@0.14.2: dependencies: tslib: 2.6.2 @@ -42572,6 +43825,8 @@ snapshots: at-least-node@1.0.0: {} + atob@2.1.2: {} + attr-accept@2.2.2: {} auto-bind@4.0.0: {} @@ -42631,6 +43886,34 @@ snapshots: dependencies: '@babel/core': 7.24.9 + babel-jest@25.5.1(@babel/core@7.23.9): + dependencies: + '@babel/core': 7.23.9 + '@jest/transform': 25.5.1 + '@jest/types': 25.5.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 25.5.0(@babel/core@7.23.9) + chalk: 3.0.0 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@25.5.1(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + '@jest/transform': 25.5.1 + '@jest/types': 25.5.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 25.5.0(@babel/core@7.24.9) + chalk: 3.0.0 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + babel-jest@29.7.0(@babel/core@7.16.12): dependencies: '@babel/core': 7.16.12 @@ -42785,6 +44068,12 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-jest-hoist@25.5.0: + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__traverse': 7.20.5 + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.0 @@ -43004,6 +44293,36 @@ snapshots: babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} + babel-preset-current-node-syntax@0.1.4(@babel/core@7.23.9): + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + + babel-preset-current-node-syntax@0.1.4(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + babel-preset-current-node-syntax@1.0.1(@babel/core@7.16.12): dependencies: '@babel/core': 7.16.12 @@ -43121,6 +44440,18 @@ snapshots: transitivePeerDependencies: - supports-color + babel-preset-jest@25.5.0(@babel/core@7.23.9): + dependencies: + '@babel/core': 7.23.9 + babel-plugin-jest-hoist: 25.5.0 + babel-preset-current-node-syntax: 0.1.4(@babel/core@7.23.9) + + babel-preset-jest@25.5.0(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + babel-plugin-jest-hoist: 25.5.0 + babel-preset-current-node-syntax: 0.1.4(@babel/core@7.24.9) + babel-preset-jest@29.6.3(@babel/core@7.16.12): dependencies: '@babel/core': 7.16.12 @@ -43165,6 +44496,16 @@ snapshots: base64id@2.0.0: {} + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 @@ -43303,6 +44644,21 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + braces@3.0.2: dependencies: fill-range: 7.0.1 @@ -43528,6 +44884,18 @@ snapshots: tar: 6.2.0 unique-filename: 3.0.0 + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + cache-content-type@1.0.1: dependencies: mime-types: 2.1.35 @@ -43603,7 +44971,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001646 + caniuse-lite: 1.0.30001655 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -43619,6 +44987,10 @@ snapshots: tslib: 2.6.2 upper-case-first: 2.0.2 + capture-exit@2.0.0: + dependencies: + rsvp: 4.8.5 + case-sensitive-paths-webpack-plugin@2.4.0: {} caseless@0.12.0: {} @@ -43791,6 +45163,13 @@ snapshots: cjs-module-lexer@1.2.3: {} + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + classcat@5.0.4: {} classnames@2.3.2: {} @@ -43928,6 +45307,11 @@ snapshots: collect-v8-coverage@1.0.1: {} + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -44106,6 +45490,8 @@ snapshots: dependencies: is-what: 3.14.1 + copy-descriptor@0.1.1: {} + copy-webpack-plugin@11.0.0(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)): dependencies: fast-glob: 3.3.2 @@ -44924,6 +46310,24 @@ snapshots: whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dataloader@2.2.2: {} date-fns@2.30.0: @@ -44993,6 +46397,8 @@ snapshots: decimal.js@10.4.3: {} + decode-uri-component@0.2.0: {} + decompress-maybe@1.0.0: dependencies: bzip2-maybe: 1.0.0 @@ -45133,6 +46539,19 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.6 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.2 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + defined@1.0.1: {} defu@6.1.2: {} @@ -45222,8 +46641,6 @@ snapshots: diff@4.0.1: {} - diff@5.0.0: {} - diff@5.1.0: {} diff@5.2.0: {} @@ -45238,6 +46655,8 @@ snapshots: dependencies: path-type: 4.0.0 + discontinuous-range@1.0.0: {} + dns-packet@5.6.0: dependencies: '@leichtgewicht/ip-codec': 2.0.4 @@ -45459,11 +46878,6 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 - enhanced-resolve@5.9.3: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -45489,6 +46903,43 @@ snapshots: environment@1.1.0: {} + enzyme-shallow-equal@1.0.7: + dependencies: + hasown: 2.0.2 + object-is: 1.1.5 + + enzyme-to-json@3.6.2(enzyme@3.11.0): + dependencies: + '@types/cheerio': 0.22.35 + enzyme: 3.11.0 + lodash: 4.17.21 + react-is: 16.13.1 + + enzyme@3.11.0: + dependencies: + array.prototype.flat: 1.3.2 + cheerio: 1.0.0-rc.10 + enzyme-shallow-equal: 1.0.7 + function.prototype.name: 1.1.6 + has: 1.0.3 + html-element-map: 1.3.1 + is-boolean-object: 1.1.1 + is-callable: 1.2.7 + is-number-object: 1.0.5 + is-regex: 1.1.4 + is-string: 1.0.7 + is-subset: 0.1.1 + lodash.escape: 4.0.1 + lodash.isequal: 4.5.0 + object-inspect: 1.13.1 + object-is: 1.1.5 + object.assign: 4.1.5 + object.entries: 1.1.6 + object.values: 1.1.7 + raf: 3.4.1 + rst-selector-parser: 2.2.3 + string.prototype.trim: 1.2.9 + err-code@2.0.3: {} errno@0.1.8: @@ -45511,7 +46962,7 @@ snapshots: call-bind: 1.0.7 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -45534,7 +46985,7 @@ snapshots: object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 + string.prototype.trim: 1.2.9 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 typed-array-length: 1.0.4 @@ -45573,7 +47024,7 @@ snapshots: regexp.prototype.flags: 1.5.2 safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 + string.prototype.trim: 1.2.9 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.0 @@ -45583,6 +47034,57 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + es-abstract@1.23.2: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-array-method-boxes-properly@1.0.0: {} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -45622,12 +47124,22 @@ snapshots: es-module-lexer@1.5.4: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.4 has: 1.0.3 has-tostringtag: 1.0.2 + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 @@ -46000,6 +47512,8 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.2.1 + exec-sh@0.3.4: {} + execa@0.7.0: dependencies: cross-spawn: 5.1.0 @@ -46066,6 +47580,18 @@ snapshots: exit@0.1.2: {} + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + expand-template@2.0.3: {} expect@29.7.0: @@ -46078,6 +47604,10 @@ snapshots: exponential-backoff@3.1.1: {} + express-rate-limit@7.4.0(express@4.19.2): + dependencies: + express: 4.19.2 + express@4.19.2: dependencies: accepts: 1.3.8 @@ -46114,6 +47644,15 @@ snapshots: transitivePeerDependencies: - supports-color + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + extend@3.0.2: {} external-editor@3.1.0: @@ -46122,6 +47661,19 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + extract-files@11.0.0: {} extract-zip@1.7.0: @@ -46177,7 +47729,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-parse@1.0.3: {} @@ -46223,12 +47775,6 @@ snapshots: transitivePeerDependencies: - encoding - fbemitter@3.0.0(encoding@0.1.13): - dependencies: - fbjs: 3.0.2(encoding@0.1.13) - transitivePeerDependencies: - - encoding - fbjs-css-vars@1.0.2: {} fbjs@3.0.2: @@ -46355,6 +47901,13 @@ snapshots: strip-outer: 1.0.1 trim-repeated: 1.0.0 + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 @@ -46455,14 +48008,6 @@ snapshots: flow-parser@0.218.0: {} - flux@4.0.3(encoding@0.1.13)(react@17.0.2): - dependencies: - fbemitter: 3.0.0(encoding@0.1.13) - fbjs: 3.0.2(encoding@0.1.13) - react: 17.0.2 - transitivePeerDependencies: - - encoding - flux@4.0.3(react@17.0.2): dependencies: fbemitter: 3.0.0 @@ -46489,6 +48034,8 @@ snapshots: dependencies: is-callable: 1.2.7 + for-in@1.0.2: {} + foreground-child@2.0.0: dependencies: cross-spawn: 7.0.3 @@ -46598,6 +48145,10 @@ snapshots: fraction.js@4.3.7: {} + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + framer-motion@7.10.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: '@motionone/dom': 10.16.2 @@ -46680,18 +48231,11 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -46763,10 +48307,18 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + get-user-locale@1.5.1: dependencies: lodash.memoize: 4.1.2 + get-value@2.0.6: {} + getos@3.2.1: dependencies: async: 3.2.3 @@ -47048,6 +48600,25 @@ snapshots: has-unicode@2.0.1: {} + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + has@1.0.3: dependencies: function-bind: 1.1.2 @@ -47126,6 +48697,11 @@ snapshots: hpagent@1.2.0: {} + html-element-map@1.3.1: + dependencies: + array.prototype.filter: 1.0.4 + call-bind: 1.0.7 + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -47596,6 +49172,14 @@ snapshots: is-relative: 1.0.0 is-windows: 1.0.2 + is-accessor-descriptor@0.1.6: + dependencies: + kind-of: 3.2.2 + + is-accessor-descriptor@1.0.0: + dependencies: + kind-of: 6.0.3 + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -47644,16 +49228,46 @@ snapshots: dependencies: has: 1.0.3 + is-data-descriptor@0.1.4: + dependencies: + kind-of: 3.2.2 + + is-data-descriptor@1.0.0: + dependencies: + kind-of: 6.0.3 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 is-deflate@1.0.0: {} + is-descriptor@0.1.6: + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + + is-descriptor@1.0.2: + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + is-docker@2.2.1: {} is-docker@3.0.0: {} + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + is-extglob@2.1.1: {} is-finalizationregistry@1.0.2: @@ -47715,10 +49329,16 @@ snapshots: is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} + is-network-error@1.1.0: {} is-number-object@1.0.5: {} + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + is-number@7.0.0: {} is-path-cwd@2.2.0: {} @@ -47768,6 +49388,8 @@ snapshots: dependencies: better-path-resolve: 1.0.0 + is-subset@0.1.1: {} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 @@ -47829,6 +49451,10 @@ snapshots: isexe@3.1.1: {} + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + isobject@3.0.1: {} isomorphic-git@1.11.1(patch_hash=j7cg2tlxujycdt53drg3qdvfbi): @@ -48417,6 +50043,25 @@ snapshots: jest-get-type@29.6.3: {} + jest-haste-map@25.5.1: + dependencies: + '@jest/types': 25.5.0 + '@types/graceful-fs': 4.1.3 + anymatch: 3.1.2 + fb-watchman: 2.0.1 + graceful-fs: 4.2.11 + jest-serializer: 25.5.0 + jest-util: 25.5.0 + jest-worker: 25.5.0 + micromatch: 4.0.5 + sane: 4.1.0 + walker: 1.0.8 + which: 2.0.2 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -48474,6 +50119,8 @@ snapshots: optionalDependencies: jest-resolve: 29.7.0 + jest-regex-util@25.2.6: {} + jest-regex-util@29.6.3: {} jest-resolve-dependencies@29.7.0: @@ -48548,6 +50195,10 @@ snapshots: transitivePeerDependencies: - supports-color + jest-serializer@25.5.0: + dependencies: + graceful-fs: 4.2.11 + jest-snapshot@29.7.0: dependencies: '@babel/core': 7.24.9 @@ -48573,6 +50224,14 @@ snapshots: transitivePeerDependencies: - supports-color + jest-util@25.5.0: + dependencies: + '@jest/types': 25.5.0 + chalk: 3.0.0 + graceful-fs: 4.2.11 + is-ci: 2.0.0 + make-dir: 3.1.0 + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -48620,6 +50279,11 @@ snapshots: dependencies: jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-worker@25.5.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 7.2.0 + jest-worker@27.4.6: dependencies: '@types/node': 20.14.2 @@ -49147,6 +50811,16 @@ snapshots: dependencies: json-buffer: 3.0.1 + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@5.1.0: {} + kind-of@6.0.3: {} klaw-sync@6.0.0: @@ -49329,7 +51003,7 @@ snapshots: optionalDependencies: enquirer: 2.4.1 - listr2@4.0.5(enquirer@2.3.6): + listr2@4.0.5(enquirer@2.4.1): dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 @@ -49340,7 +51014,7 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 optionalDependencies: - enquirer: 2.3.6 + enquirer: 2.4.1 listr2@8.2.3: dependencies: @@ -49418,8 +51092,12 @@ snapshots: lodash.difference@4.5.0: {} + lodash.escape@4.0.1: {} + lodash.flatten@4.4.0: {} + lodash.flattendeep@4.4.0: {} + lodash.flow@3.5.0: {} lodash.get@4.4.2: {} @@ -49428,6 +51106,8 @@ snapshots: lodash.isboolean@3.0.3: {} + lodash.isequal@4.5.0: {} + lodash.isinteger@4.0.4: {} lodash.isnumber@3.0.3: {} @@ -49616,6 +51296,10 @@ snapshots: map-stream@0.1.0: {} + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + markdown-it@12.3.2: dependencies: argparse: 2.0.1 @@ -49709,6 +51393,24 @@ snapshots: methods@1.1.2: {} + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.5: dependencies: braces: 3.0.2 @@ -49768,7 +51470,7 @@ snapshots: mini-css-extract-plugin@2.8.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): dependencies: - schema-utils: 4.0.0 + schema-utils: 4.2.0 tapable: 2.2.1 webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) @@ -49812,6 +51514,8 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimist@1.2.6: {} + minimist@1.2.8: {} minimisted@2.0.1: @@ -49869,6 +51573,11 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + mkdirp-classic@0.5.3: {} mkdirp-infer-owner@2.0.0: @@ -49938,14 +51647,14 @@ snapshots: monaco-editor-webpack-plugin@7.0.1(monaco-editor@0.39.0)(monaco-yaml@4.0.4(monaco-editor@0.39.0))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): dependencies: - loader-utils: 2.0.2 + loader-utils: 2.0.4 monaco-editor: 0.39.0 monaco-yaml: 4.0.4(monaco-editor@0.39.0) webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) monaco-editor-webpack-plugin@7.0.1(monaco-editor@0.39.0)(monaco-yaml@4.0.4(monaco-editor@0.39.0))(webpack@5.94.0(webpack-cli@4.10.0)): dependencies: - loader-utils: 2.0.2 + loader-utils: 2.0.4 monaco-editor: 0.39.0 monaco-yaml: 4.0.4(monaco-editor@0.39.0) webpack: 5.94.0(webpack-cli@4.10.0) @@ -49963,7 +51672,7 @@ snapshots: monaco-yaml@4.0.4(monaco-editor@0.39.0): dependencies: '@types/json-schema': 7.0.15 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 monaco-editor: 0.39.0 monaco-marker-data-provider: 1.1.0(monaco-editor@0.39.0) monaco-worker-manager: 2.0.1(monaco-editor@0.39.0) @@ -49976,6 +51685,8 @@ snapshots: mongo-object@0.1.4: {} + moo@0.5.2: {} + morgan@1.10.0: dependencies: basic-auth: 2.0.1 @@ -50030,6 +51741,22 @@ snapshots: nanoid@3.3.7: {} + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + napi-build-utils@1.0.2: {} native-promise-only@0.8.1: {} @@ -50046,6 +51773,13 @@ snapshots: split2: 3.2.2 through2: 4.0.2 + nearley@2.20.1: + dependencies: + commander: 2.20.3 + moo: 0.5.2 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + needle@3.2.0: dependencies: debug: 3.2.7 @@ -50102,6 +51836,10 @@ snapshots: node-fetch-native@1.4.0: {} + node-fetch@2.6.11: + dependencies: + whatwg-url: 5.0.0 + node-fetch@2.6.11(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -50401,6 +52139,12 @@ snapshots: object-assign@4.1.1: {} + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + object-inspect@1.12.3: {} object-inspect@1.13.1: {} @@ -50412,6 +52156,10 @@ snapshots: object-keys@1.1.1: {} + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + object.assign@4.1.4: dependencies: call-bind: 1.0.7 @@ -50456,6 +52204,10 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.21.2 + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + object.values@1.1.6: dependencies: call-bind: 1.0.7 @@ -50754,6 +52506,8 @@ snapshots: no-case: 3.0.4 tslib: 2.6.2 + pascalcase@0.1.1: {} + patch-package@6.4.7: dependencies: '@yarnpkg/lockfile': 1.1.0 @@ -50763,7 +52517,7 @@ snapshots: fs-extra: 7.0.1 is-ci: 2.0.0 klaw-sync: 6.0.0 - minimist: 1.2.8 + minimist: 1.2.6 open: 7.4.2 rimraf: 2.7.1 semver: 5.7.1 @@ -50982,6 +52736,8 @@ snapshots: transitivePeerDependencies: - supports-color + posix-character-classes@0.1.1: {} + possible-typed-array-names@1.0.0: {} postcss-calc@9.0.1(postcss@8.4.38): @@ -51427,8 +53183,19 @@ snapshots: quick-lru@5.1.1: {} + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + railroad-diagrams@1.0.0: {} + ramda@0.29.0: {} + randexp@0.4.6: + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -51743,18 +53510,6 @@ snapshots: react-is@18.1.0: {} - react-json-view@1.21.3(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): - dependencies: - flux: 4.0.3(encoding@0.1.13)(react@17.0.2) - react: 17.0.2 - react-base16-styling: 0.6.0 - react-dom: 17.0.2(react@17.0.2) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.3(@types/react@17.0.21)(react@17.0.2) - transitivePeerDependencies: - - '@types/react' - - encoding - react-json-view@1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: flux: 4.0.3(react@17.0.2) @@ -51858,7 +53613,6 @@ snapshots: object-assign: 4.1.1 react: 17.0.2 react-is: 17.0.2 - optional: true react-side-effect@2.1.2(react@17.0.2): dependencies: @@ -51920,7 +53674,6 @@ snapshots: react-is: 17.0.2 react-shallow-renderer: 16.15.0(react@17.0.2) scheduler: 0.20.2 - optional: true react-textarea-autosize@8.3.3(@types/react@17.0.21)(react@17.0.2): dependencies: @@ -52088,6 +53841,8 @@ snapshots: realpath-missing@1.1.0: {} + realpath-native@2.0.0: {} + recast@0.21.5: dependencies: ast-types: 0.15.2 @@ -52159,6 +53914,11 @@ snapshots: dependencies: '@babel/runtime': 7.23.6 + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + regex-parser@2.2.11: {} regexp-to-ast@0.5.0: {} @@ -52246,6 +54006,10 @@ snapshots: lodash: 4.17.21 strip-ansi: 6.0.1 + repeat-element@1.1.3: {} + + repeat-string@1.6.1: {} + replace-in-file@7.1.0: dependencies: chalk: 4.1.2 @@ -52295,6 +54059,8 @@ snapshots: postcss: 8.4.38 source-map: 0.6.1 + resolve-url@0.2.1: {} + resolve.exports@2.0.2: {} resolve@1.22.1: @@ -52341,6 +54107,8 @@ snapshots: dependencies: through: 2.3.8 + ret@0.1.15: {} + retry@0.12.0: {} retry@0.13.1: {} @@ -52400,7 +54168,7 @@ snapshots: '@rollup/rollup-win32-arm64-msvc': 4.18.0 '@rollup/rollup-win32-ia32-msvc': 4.18.0 '@rollup/rollup-win32-x64-msvc': 4.18.0 - fsevents: 2.3.2 + fsevents: 2.3.3 rollup@4.19.2: dependencies: @@ -52426,6 +54194,13 @@ snapshots: rrweb-cssom@0.6.0: {} + rst-selector-parser@2.2.3: + dependencies: + lodash.flattendeep: 4.4.0 + nearley: 2.20.1 + + rsvp@4.8.5: {} + run-applescript@7.0.0: {} run-async@2.4.1: {} @@ -52457,6 +54232,13 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -52477,10 +54259,34 @@ snapshots: get-intrinsic: 1.2.4 is-regex: 1.1.4 + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + safe-stable-stringify@2.4.1: {} safer-buffer@2.1.2: {} + sane@4.1.0: + dependencies: + '@cnakazawa/watch': 1.0.4 + anymatch: 2.0.0 + capture-exit: 2.0.0 + exec-sh: 0.3.4 + execa: 1.0.0 + fb-watchman: 2.0.1 + micromatch: 3.1.10 + minimist: 1.2.8 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + sanitize-filename-ts@1.0.2: dependencies: truncate-utf8-bytes: 1.0.2 @@ -52528,7 +54334,7 @@ snapshots: sass@1.77.6: dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 immutable: 4.0.0 source-map-js: 1.2.0 @@ -52718,6 +54524,13 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -52808,7 +54621,7 @@ snapshots: '@sinonjs/commons': 1.8.3 '@sinonjs/fake-timers': 7.1.2 '@sinonjs/samsam': 6.0.2 - diff: 5.0.0 + diff: 5.1.0 nise: 5.1.0 supports-color: 7.2.0 @@ -52861,6 +54674,29 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + socket.io-adapter@2.3.3: {} socket.io-parser@4.0.4: @@ -52939,6 +54775,14 @@ snapshots: source-map-js: 1.2.0 webpack: 5.92.1(esbuild@0.21.5) + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.0 + urix: 0.1.0 + source-map-support@0.5.13: dependencies: buffer-from: 1.1.1 @@ -52949,6 +54793,8 @@ snapshots: buffer-from: 1.1.1 source-map: 0.6.1 + source-map-url@0.4.0: {} + source-map@0.5.7: {} source-map@0.6.1: {} @@ -52994,6 +54840,10 @@ snapshots: transitivePeerDependencies: - supports-color + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + split2@3.2.2: dependencies: readable-stream: 3.6.0 @@ -53057,6 +54907,11 @@ snapshots: transitivePeerDependencies: - supports-color + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + statuses@1.5.0: {} statuses@2.0.1: {} @@ -53069,6 +54924,15 @@ snapshots: store2@2.14.2: {} + storybook@7.4.6: + dependencies: + '@storybook/cli': 7.4.6 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + storybook@7.4.6(encoding@0.1.13): dependencies: '@storybook/cli': 7.4.6(encoding@0.1.13) @@ -53176,35 +55040,36 @@ snapshots: regexp.prototype.flags: 1.5.2 side-channel: 1.0.4 - string.prototype.trim@1.2.7: + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.21.2 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 - string.prototype.trim@1.2.8: + string.prototype.trimend@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 - string.prototype.trimend@1.0.6: + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.21.2 + es-abstract: 1.22.3 - string.prototype.trimend@1.0.7: + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 string.prototype.trimstart@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.21.2 + es-abstract: 1.23.2 string.prototype.trimstart@1.0.7: dependencies: @@ -53379,7 +55244,7 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.1 + picocolors: 1.1.0 stable: 0.1.8 svgo@3.2.0: @@ -53390,7 +55255,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.1 + picocolors: 1.1.0 swagger-ui-dist@5.11.2: {} @@ -53459,7 +55324,7 @@ snapshots: object-inspect: 1.12.3 resolve: 1.22.8 resumer: 0.0.0 - string.prototype.trim: 1.2.7 + string.prototype.trim: 1.2.9 through: 2.3.8 tar-fs@1.16.3: @@ -53754,10 +55619,26 @@ snapshots: to-fast-properties@2.0.0: {} + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + tocbot@4.21.2: {} toidentifier@1.0.1: {} @@ -53977,6 +55858,24 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.23.0) + ts-jest@29.1.5(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@25.5.1(@babel/core@7.23.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 5.5.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.23.9 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 25.5.1(@babel/core@7.23.9) + ts-jest@29.1.5(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 @@ -54072,7 +55971,7 @@ snapshots: '@types/json-schema': 7.0.15 commander: 9.4.1 glob: 8.1.0 - json5: 2.2.3 + json5: 2.2.1 normalize-path: 3.0.0 safe-stable-stringify: 2.4.1 typescript: 4.8.4 @@ -54080,7 +55979,7 @@ snapshots: ts-loader@9.4.2(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.9.3 + enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 typescript: 5.5.3 @@ -54089,7 +55988,7 @@ snapshots: ts-loader@9.4.2(typescript@5.5.3)(webpack@5.94.0(webpack-cli@4.10.0)): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.9.3 + enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 typescript: 5.5.3 @@ -54098,7 +55997,7 @@ snapshots: ts-loader@9.4.2(typescript@5.5.3)(webpack@5.94.0): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.9.3 + enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 typescript: 5.5.3 @@ -54270,6 +56169,12 @@ snapshots: get-intrinsic: 1.2.4 is-typed-array: 1.1.13 + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.7 @@ -54277,6 +56182,14 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.7 @@ -54285,12 +56198,30 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-length@1.0.4: dependencies: call-bind: 1.0.7 for-each: 0.3.3 is-typed-array: 1.1.13 + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + typed-assert@1.0.8: {} typed-rest-client@1.8.4: @@ -54403,6 +56334,13 @@ snapshots: react: 17.0.2 tslib: 2.3.1 + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + unique-filename@1.1.1: dependencies: unique-slug: 2.0.2 @@ -54457,6 +56395,11 @@ snapshots: webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + untildify@4.0.0: {} update-browserslist-db@1.0.13(browserslist@4.23.0): @@ -54496,6 +56439,8 @@ snapshots: dependencies: punycode: 2.3.0 + urix@0.1.0: {} + url-join@4.0.1: {} url-loader@4.1.1(file-loader@6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): @@ -54583,6 +56528,8 @@ snapshots: dependencies: react: 17.0.2 + use@3.1.1: {} + utf8-byte-length@1.0.4: {} util-deprecate@1.0.2: {} @@ -55602,7 +57549,7 @@ snapshots: which-builtin-type@1.1.3: dependencies: - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 diff --git a/repo/graph.dot b/repo/graph.dot index efd2bb30d14..f94ed30c82c 100644 --- a/repo/graph.dot +++ b/repo/graph.dot @@ -164,6 +164,7 @@ digraph G { "@kie-tools/serverless-logic-web-tools-base-builder-image-env" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/serverless-logic-web-tools-swf-builder-image-env" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; + "@kie-tools/sonataflow-dev-app" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/serverless-logic-web-tools-base-builder-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/serverless-logic-web-tools-swf-builder-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/sonataflow-builder-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; @@ -182,6 +183,9 @@ digraph G { "swf-vscode-extension" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/sonataflow-image-common" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/sonataflow-devmode-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; + "@kie-tools/sonataflow-management-console-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; + "@kie-tools/sonataflow-management-console-image-env" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; + "@kie-tools/sonataflow-management-console-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/stunner-editors-dmn-loader" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/unitables" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "vscode-extension-dashbuilder-editor" [ color = "blue", fontcolor = "blue", style = "rounded" ]; @@ -514,6 +518,7 @@ digraph G { "@kie-tools/serverless-logic-web-tools" -> "@kie-tools/serverless-logic-web-tools-base-builder-image-env" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-logic-web-tools" -> "@kie-tools/serverless-logic-web-tools-swf-builder-image-env" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-logic-web-tools" -> "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env" [ style = "dashed", color = "black" ]; + "@kie-tools/serverless-logic-web-tools" -> "@kie-tools/sonataflow-dev-app" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-logic-web-tools-base-builder-image" -> "@kie-tools/serverless-logic-web-tools-base-builder-image-env" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-logic-web-tools-base-builder-image-env" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-logic-web-tools-swf-builder-image" -> "@kie-tools/serverless-logic-web-tools-swf-builder-image-env" [ style = "dashed", color = "black" ]; @@ -531,6 +536,7 @@ digraph G { "@kie-tools/serverless-workflow-dev-ui-webapp" -> "@kie-tools/runtime-tools-shared-webapp-components" [ style = "solid", color = "black" ]; "@kie-tools/serverless-workflow-dev-ui-webapp" -> "@kie-tools/runtime-tools-swf-webapp-components" [ style = "solid", color = "black" ]; "@kie-tools/serverless-workflow-dev-ui-webapp" -> "@kie-tools/serverless-workflow-dev-ui-monitoring-webapp" [ style = "solid", color = "black" ]; + "@kie-tools/serverless-workflow-dev-ui-webapp" -> "@kie-tools/sonataflow-dev-app" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-workflow-diagram-editor" -> "@kie-tools/maven-config-setup-helper" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-workflow-diagram-editor" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; "@kie-tools/serverless-workflow-diagram-editor-assets" -> "@kie-tools/serverless-workflow-diagram-editor" [ style = "dashed", color = "blue" ]; @@ -553,10 +559,23 @@ digraph G { "sonataflow-deployment-webapp" -> "@kie-tools-core/react-hooks" [ style = "solid", color = "blue" ]; "sonataflow-deployment-webapp" -> "@kie-tools/runtime-tools-shared-webapp-components" [ style = "solid", color = "blue" ]; "sonataflow-deployment-webapp" -> "@kie-tools/runtime-tools-swf-webapp-components" [ style = "solid", color = "blue" ]; + "sonataflow-deployment-webapp" -> "@kie-tools/sonataflow-dev-app" [ style = "dashed", color = "blue" ]; + "@kie-tools/sonataflow-dev-app" -> "@kie-tools/eslint" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-dev-app" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-devmode-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-devmode-image" -> "@kie-tools/sonataflow-quarkus-devui" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-image-common" -> "@kie-tools/python-venv" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-image-common" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-image" -> "@kie-tools/image-builder" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-image" -> "@kie-tools/image-env-to-json" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-image" -> "@kie-tools/sonataflow-management-console-image-env" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-image" -> "@kie-tools/sonataflow-management-console-webapp" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-image-env" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; + "@kie-tools/sonataflow-management-console-webapp" -> "@kie-tools-core/react-hooks" [ style = "solid", color = "blue" ]; + "@kie-tools/sonataflow-management-console-webapp" -> "@kie-tools/runtime-tools-process-webapp-components" [ style = "solid", color = "blue" ]; + "@kie-tools/sonataflow-management-console-webapp" -> "@kie-tools/runtime-tools-shared-webapp-components" [ style = "solid", color = "blue" ]; + "@kie-tools/sonataflow-management-console-webapp" -> "@kie-tools/runtime-tools-swf-webapp-components" [ style = "solid", color = "blue" ]; + "@kie-tools/sonataflow-management-console-webapp" -> "@kie-tools/sonataflow-dev-app" [ style = "dashed", color = "blue" ]; "@kie-tools/sonataflow-operator" -> "@kie-tools/sonataflow-builder-image" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-operator" -> "@kie-tools/sonataflow-devmode-image" [ style = "dashed", color = "black" ]; "@kie-tools/sonataflow-quarkus-devui" -> "@kie-tools/serverless-workflow-dev-ui-webapp" [ style = "dashed", color = "black" ]; diff --git a/repo/graph.json b/repo/graph.json index e4b48b3d7e2..9049d67f179 100644 --- a/repo/graph.json +++ b/repo/graph.json @@ -172,6 +172,7 @@ { "id": "@kie-tools/serverless-logic-web-tools-base-builder-image-env" }, { "id": "@kie-tools/serverless-logic-web-tools-swf-builder-image-env" }, { "id": "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env" }, + { "id": "@kie-tools/sonataflow-dev-app" }, { "id": "@kie-tools/yard-language-service" }, { "id": "@kie-tools/yard-validator" }, { "id": "@kie-tools/serverless-logic-web-tools-base-builder-image" }, @@ -189,6 +190,9 @@ { "id": "@kie-tools/serverless-workflow-jq-expressions" }, { "id": "@kie-tools/serverless-workflow-service-catalog" }, { "id": "swf-vscode-extension" }, + { "id": "@kie-tools/sonataflow-management-console-image" }, + { "id": "@kie-tools/sonataflow-management-console-image-env" }, + { "id": "@kie-tools/sonataflow-management-console-webapp" }, { "id": "vscode-extension-dashbuilder-editor" }, { "id": "vscode-extension-kie-ba-bundle" }, { "id": "vscode-extension-kogito-bundle" }, @@ -567,6 +571,11 @@ "target": "@kie-tools/serverless-workflow-dev-ui-monitoring-webapp", "weight": 1 }, + { + "source": "@kie-tools/serverless-workflow-dev-ui-webapp", + "target": "@kie-tools/sonataflow-dev-app", + "weight": 1 + }, { "source": "@kie-tools-examples/todo-list-view", "target": "@kie-tools-core/envelope", @@ -2117,6 +2126,11 @@ "target": "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env", "weight": 1 }, + { + "source": "@kie-tools/serverless-logic-web-tools", + "target": "@kie-tools/sonataflow-dev-app", + "weight": 1 + }, { "source": "@kie-tools/text-editor", "target": "@kie-tools-core/editor", @@ -2162,6 +2176,16 @@ "target": "@kie-tools/root-env", "weight": 1 }, + { + "source": "@kie-tools/sonataflow-dev-app", + "target": "@kie-tools/eslint", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-dev-app", + "target": "@kie-tools/root-env", + "weight": 1 + }, { "source": "@kie-tools/yard-language-service", "target": "@kie-tools/json-yaml-language-service", @@ -2212,6 +2236,11 @@ "target": "@kie-tools/runtime-tools-swf-webapp-components", "weight": 1 }, + { + "source": "sonataflow-deployment-webapp", + "target": "@kie-tools/sonataflow-dev-app", + "weight": 1 + }, { "source": "@kie-tools/sonataflow-image-common", "target": "@kie-tools/python-venv", @@ -2307,6 +2336,56 @@ "target": "@kie-tools/vscode-extension-common-test-helpers", "weight": 1 }, + { + "source": "@kie-tools/sonataflow-management-console-image", + "target": "@kie-tools/image-builder", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-image", + "target": "@kie-tools/image-env-to-json", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-image", + "target": "@kie-tools/sonataflow-management-console-image-env", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-image", + "target": "@kie-tools/sonataflow-management-console-webapp", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-image-env", + "target": "@kie-tools/root-env", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-webapp", + "target": "@kie-tools-core/react-hooks", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-webapp", + "target": "@kie-tools/runtime-tools-process-webapp-components", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-webapp", + "target": "@kie-tools/runtime-tools-shared-webapp-components", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-webapp", + "target": "@kie-tools/runtime-tools-swf-webapp-components", + "weight": 1 + }, + { + "source": "@kie-tools/sonataflow-management-console-webapp", + "target": "@kie-tools/sonataflow-dev-app", + "weight": 1 + }, { "source": "vscode-extension-dashbuilder-editor", "target": "@kie-tools-core/vscode-extension", @@ -2565,8 +2644,12 @@ ["swf-vscode-extension", "packages/serverless-workflow-vscode-extension"], ["@kie-tools/sonataflow-builder-image", "packages/sonataflow-builder-image"], ["sonataflow-deployment-webapp", "packages/sonataflow-deployment-webapp"], + ["@kie-tools/sonataflow-dev-app", "packages/sonataflow-dev-app"], ["@kie-tools/sonataflow-devmode-image", "packages/sonataflow-devmode-image"], ["@kie-tools/sonataflow-image-common", "packages/sonataflow-image-common"], + ["@kie-tools/sonataflow-management-console-image", "packages/sonataflow-management-console-image"], + ["@kie-tools/sonataflow-management-console-image-env", "packages/sonataflow-management-console-image-env"], + ["@kie-tools/sonataflow-management-console-webapp", "packages/sonataflow-management-console-webapp"], ["@kie-tools/sonataflow-operator", "packages/sonataflow-operator"], ["@kie-tools/sonataflow-quarkus-devui", "packages/sonataflow-quarkus-devui"], ["@kie-tools/storybook-base", "packages/storybook-base"],