From 38ffc53ee592f3541de678da7b80aa29364a89c9 Mon Sep 17 00:00:00 2001
From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com>
Date: Tue, 22 Mar 2022 14:17:31 -0700
Subject: [PATCH 01/10] START_WORKFLOW system task
---
.../common/metadata/tasks/TaskType.java | 2 +
.../mapper/StartWorkflowTaskMapper.java | 63 +++
.../core/execution/tasks/StartWorkflow.java | 168 +++++++
.../execution/tasks/StartWorkflowSpec.groovy | 119 +++++
.../test/integration/StartWorkflowSpec.groovy | 166 +++++++
.../utils/MockExternalPayloadStorage.java | 3 +
.../simple_workflow_1_integration_test.json | 24 +-
.../test/resources/start_workflow_input.json | 427 ++++++++++++++++++
...workflow_that_starts_another_workflow.json | 23 +
9 files changed, 974 insertions(+), 21 deletions(-)
create mode 100644 core/src/main/java/com/netflix/conductor/core/execution/mapper/StartWorkflowTaskMapper.java
create mode 100644 core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
create mode 100644 core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
create mode 100644 test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
create mode 100644 test-harness/src/test/resources/start_workflow_input.json
create mode 100644 test-harness/src/test/resources/workflow_that_starts_another_workflow.json
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
index 72b79f108a..9a3cbe416d 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
@@ -28,6 +28,7 @@ public enum TaskType {
JOIN,
DO_WHILE,
SUB_WORKFLOW,
+ START_WORKFLOW,
EVENT,
WAIT,
USER_DEFINED,
@@ -54,6 +55,7 @@ public enum TaskType {
public static final String TASK_TYPE_EVENT = "EVENT";
public static final String TASK_TYPE_WAIT = "WAIT";
public static final String TASK_TYPE_SUB_WORKFLOW = "SUB_WORKFLOW";
+ public static final String TASK_TYPE_START_WORKFLOW = "START_WORKFLOW";
public static final String TASK_TYPE_FORK_JOIN = "FORK_JOIN";
public static final String TASK_TYPE_SIMPLE = "SIMPLE";
public static final String TASK_TYPE_HTTP = "HTTP";
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/StartWorkflowTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/StartWorkflowTaskMapper.java
new file mode 100644
index 0000000000..696c8b1f37
--- /dev/null
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/StartWorkflowTaskMapper.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2022 Netflix, Inc.
+ *
+ * Licensed 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.
+ */
+package com.netflix.conductor.core.execution.mapper;
+
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.netflix.conductor.common.metadata.tasks.TaskType;
+import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
+import com.netflix.conductor.core.exception.TerminateWorkflowException;
+import com.netflix.conductor.model.TaskModel;
+import com.netflix.conductor.model.WorkflowModel;
+
+import static com.netflix.conductor.common.metadata.tasks.TaskType.START_WORKFLOW;
+import static com.netflix.conductor.common.metadata.tasks.TaskType.TASK_TYPE_START_WORKFLOW;
+
+@Component
+public class StartWorkflowTaskMapper implements TaskMapper {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StartWorkflowTaskMapper.class);
+
+ @Override
+ public TaskType getTaskType() {
+ return START_WORKFLOW;
+ }
+
+ @Override
+ public List getMappedTasks(TaskMapperContext taskMapperContext)
+ throws TerminateWorkflowException {
+ WorkflowTask taskToSchedule = taskMapperContext.getTaskToSchedule();
+ WorkflowModel workflowInstance = taskMapperContext.getWorkflowInstance();
+ String taskId = taskMapperContext.getTaskId();
+
+ TaskModel startWorkflowTask = new TaskModel();
+ startWorkflowTask.setTaskType(TASK_TYPE_START_WORKFLOW);
+ startWorkflowTask.setReferenceTaskName(taskToSchedule.getTaskReferenceName());
+ startWorkflowTask.setWorkflowInstanceId(workflowInstance.getWorkflowId());
+ startWorkflowTask.setWorkflowType(workflowInstance.getWorkflowName());
+ startWorkflowTask.setCorrelationId(workflowInstance.getCorrelationId());
+ startWorkflowTask.setScheduledTime(System.currentTimeMillis());
+ startWorkflowTask.setTaskId(taskId);
+ startWorkflowTask.addInput(taskMapperContext.getTaskInput());
+ startWorkflowTask.setStatus(TaskModel.Status.SCHEDULED);
+ startWorkflowTask.setWorkflowTask(taskToSchedule);
+ startWorkflowTask.setWorkflowPriority(workflowInstance.getPriority());
+ startWorkflowTask.setCallbackAfterSeconds(taskToSchedule.getStartDelay());
+ LOGGER.debug("{} created", startWorkflowTask);
+ return List.of(startWorkflowTask);
+ }
+}
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java b/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
new file mode 100644
index 0000000000..1b481f3712
--- /dev/null
+++ b/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2022 Netflix, Inc.
+ *
+ * Licensed 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.
+ */
+package com.netflix.conductor.core.execution.tasks;
+
+import java.util.Map;
+
+import javax.validation.Validator;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.netflix.conductor.common.metadata.workflow.StartWorkflowRequest;
+import com.netflix.conductor.core.exception.ApplicationException;
+import com.netflix.conductor.core.execution.WorkflowExecutor;
+import com.netflix.conductor.model.TaskModel;
+import com.netflix.conductor.model.WorkflowModel;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import static com.netflix.conductor.common.metadata.tasks.TaskType.TASK_TYPE_START_WORKFLOW;
+import static com.netflix.conductor.model.TaskModel.Status.COMPLETED;
+import static com.netflix.conductor.model.TaskModel.Status.FAILED;
+
+@Component(TASK_TYPE_START_WORKFLOW)
+public class StartWorkflow extends WorkflowSystemTask {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StartWorkflow.class);
+
+ private static final String WORKFLOW_ID = "workflowId";
+ private static final String START_WORKFLOW_PARAMETER = "start_workflow";
+
+ private final ObjectMapper objectMapper;
+ private final Validator validator;
+
+ public StartWorkflow(ObjectMapper objectMapper, Validator validator) {
+ super(TASK_TYPE_START_WORKFLOW);
+ this.objectMapper = objectMapper;
+ this.validator = validator;
+ }
+
+ @Override
+ public void start(
+ WorkflowModel workflow, TaskModel taskModel, WorkflowExecutor workflowExecutor) {
+ StartWorkflowRequest request = getRequest(taskModel);
+ if (request == null) {
+ return;
+ }
+
+ // set the correlation id of starter workflow, if its empty in the StartWorkflowRequest
+ request.setCorrelationId(
+ StringUtils.defaultIfBlank(
+ request.getCorrelationId(), workflow.getCorrelationId()));
+
+ try {
+ String workflowId = startWorkflow(request, workflowExecutor);
+ taskModel.addOutput(WORKFLOW_ID, workflowId);
+ taskModel.setStatus(COMPLETED);
+ } catch (ApplicationException ae) {
+ if (ae.isRetryable()) {
+ LOGGER.info(
+ "A transient backend error happened when task {} in {} tried to start workflow {}.",
+ taskModel.getTaskId(),
+ workflow.toShortString(),
+ request.getName());
+ } else {
+ taskModel.setStatus(FAILED);
+ taskModel.setReasonForIncompletion(ae.getMessage());
+ LOGGER.error(
+ "Error starting workflow: {} from workflow: {}",
+ request.getName(),
+ workflow.toShortString(),
+ ae);
+ }
+ } catch (Exception e) {
+ taskModel.setStatus(FAILED);
+ taskModel.setReasonForIncompletion(e.getMessage());
+ LOGGER.error(
+ "Error starting workflow: {} from workflow: {}",
+ request.getName(),
+ workflow.toShortString(),
+ e);
+ }
+ }
+
+ private StartWorkflowRequest getRequest(TaskModel taskModel) {
+ Map taskInput = taskModel.getInputData();
+
+ StartWorkflowRequest startWorkflowRequest = null;
+
+ if (taskInput.get(START_WORKFLOW_PARAMETER) == null) {
+ taskModel.setStatus(FAILED);
+ taskModel.setReasonForIncompletion(
+ "Missing '" + START_WORKFLOW_PARAMETER + "' in input data.");
+ } else {
+ try {
+ startWorkflowRequest =
+ objectMapper.convertValue(
+ taskInput.get(START_WORKFLOW_PARAMETER),
+ StartWorkflowRequest.class);
+
+ var violations = validator.validate(startWorkflowRequest);
+ if (!violations.isEmpty()) {
+ StringBuilder reasonForIncompletion =
+ new StringBuilder(START_WORKFLOW_PARAMETER)
+ .append(" validation failed. ");
+ for (var violation : violations) {
+ reasonForIncompletion
+ .append("'")
+ .append(violation.getPropertyPath().toString())
+ .append("' -> ")
+ .append(violation.getMessage())
+ .append(". ");
+ }
+ taskModel.setStatus(FAILED);
+ taskModel.setReasonForIncompletion(reasonForIncompletion.toString());
+ startWorkflowRequest = null;
+ }
+ } catch (IllegalArgumentException e) {
+ LOGGER.error("Error reading StartWorkflowRequest for {}", taskModel, e);
+ taskModel.setStatus(FAILED);
+ taskModel.setReasonForIncompletion(
+ "Error reading StartWorkflowRequest. " + e.getMessage());
+ }
+ }
+
+ return startWorkflowRequest;
+ }
+
+ private String startWorkflow(StartWorkflowRequest request, WorkflowExecutor workflowExecutor) {
+ if (request.getWorkflowDef() == null) {
+ return workflowExecutor.startWorkflow(
+ request.getName(),
+ request.getVersion(),
+ request.getCorrelationId(),
+ request.getPriority(),
+ request.getInput(),
+ request.getExternalInputPayloadStoragePath(),
+ null,
+ request.getTaskToDomain());
+ } else {
+ return workflowExecutor.startWorkflow(
+ request.getWorkflowDef(),
+ request.getInput(),
+ request.getExternalInputPayloadStoragePath(),
+ request.getCorrelationId(),
+ request.getPriority(),
+ null,
+ request.getTaskToDomain());
+ }
+ }
+
+ @Override
+ public boolean isAsync() {
+ return true;
+ }
+}
diff --git a/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
new file mode 100644
index 0000000000..5b734bee9f
--- /dev/null
+++ b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2022 Netflix, Inc.
+ *
+ * Licensed 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.
+ */
+package com.netflix.conductor.core.execution.tasks
+
+
+import javax.validation.ConstraintViolation
+import javax.validation.Validator
+
+import com.netflix.conductor.common.config.ObjectMapperProvider
+import com.netflix.conductor.core.exception.ApplicationException
+import com.netflix.conductor.core.execution.WorkflowExecutor
+import com.netflix.conductor.model.TaskModel
+import com.netflix.conductor.model.WorkflowModel
+
+import spock.lang.Specification
+import spock.lang.Subject
+
+import static com.netflix.conductor.core.execution.tasks.StartWorkflow.START_WORKFLOW_PARAMETER
+import static com.netflix.conductor.model.TaskModel.Status.FAILED
+import static com.netflix.conductor.model.TaskModel.Status.SCHEDULED
+
+/**
+ * Unit test for StartWorkflow. Success and Javax validation cases are covered by the StartWorkflowSpec in test-harness module.
+ */
+class StartWorkflowSpec extends Specification {
+
+ @Subject
+ StartWorkflow startWorkflow
+
+ WorkflowExecutor workflowExecutor
+ Validator validator
+ WorkflowModel workflowModel
+ TaskModel taskModel
+
+ def setup() {
+ workflowExecutor = Mock(WorkflowExecutor.class)
+ validator = Mock(Validator.class) {
+ validate(_) >> new HashSet>()
+ }
+
+ def inputData = [:]
+ inputData[START_WORKFLOW_PARAMETER] = ['name': 'some_workflow']
+ taskModel = new TaskModel(status: SCHEDULED, inputData: inputData)
+ workflowModel = new WorkflowModel()
+
+ startWorkflow = new StartWorkflow(new ObjectMapperProvider().getObjectMapper(), validator)
+ }
+
+ def "StartWorkflow task is asynchronous"() {
+ when:
+ def async = startWorkflow.isAsync()
+
+ then:
+ async
+ }
+
+ def "start_workflow parameter is missing"() {
+ given: "a task with no start_workflow in input"
+ taskModel.inputData = [:]
+
+ when:
+ startWorkflow.start(workflowModel, taskModel, workflowExecutor)
+
+ then:
+ taskModel.status == FAILED
+ taskModel.reasonForIncompletion != null
+ }
+
+ def "ObjectMapper throws an IllegalArgumentException"() {
+ given: "a task with no start_workflow in input"
+ taskModel.inputData[START_WORKFLOW_PARAMETER] = "I can't be converted to StartWorkflowRequest"
+
+ when:
+ startWorkflow.start(workflowModel, taskModel, workflowExecutor)
+
+ then:
+ taskModel.status == FAILED
+ taskModel.reasonForIncompletion != null
+ }
+
+ def "WorkflowExecutor throws a retryable exception"() {
+ when:
+ startWorkflow.start(workflowModel, taskModel, workflowExecutor)
+
+ then:
+ taskModel.status == SCHEDULED
+ 1 * workflowExecutor.startWorkflow(*_) >> { throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, "") }
+ }
+
+ def "WorkflowExecutor throws a non-retryable ApplicationException"() {
+ when:
+ startWorkflow.start(workflowModel, taskModel, workflowExecutor)
+
+ then:
+ taskModel.status == FAILED
+ taskModel.reasonForIncompletion != null
+ 1 * workflowExecutor.startWorkflow(*_) >> { throw new ApplicationException(ApplicationException.Code.NOT_FOUND, "") }
+ }
+
+ def "WorkflowExecutor throws a RuntimeException"() {
+ when:
+ startWorkflow.start(workflowModel, taskModel, workflowExecutor)
+
+ then:
+ taskModel.status == FAILED
+ taskModel.reasonForIncompletion != null
+ 1 * workflowExecutor.startWorkflow(*_) >> { throw new RuntimeException("I am an unexpected exception") }
+ }
+}
diff --git a/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
new file mode 100644
index 0000000000..3218ffc673
--- /dev/null
+++ b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2022 Netflix, Inc.
+ *
+ * Licensed 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.
+ */
+package com.netflix.conductor.test.integration
+
+import org.springframework.beans.factory.annotation.Autowired
+
+import com.netflix.conductor.common.metadata.tasks.Task
+import com.netflix.conductor.common.run.Workflow
+import com.netflix.conductor.core.execution.tasks.StartWorkflow
+import com.netflix.conductor.dao.QueueDAO
+import com.netflix.conductor.model.TaskModel
+import com.netflix.conductor.model.WorkflowModel
+import com.netflix.conductor.test.base.AbstractSpecification
+
+import spock.lang.Shared
+import spock.lang.Unroll
+
+import static com.netflix.conductor.model.TaskModel.Status.FAILED
+
+class StartWorkflowSpec extends AbstractSpecification {
+
+ @Autowired
+ QueueDAO queueDAO
+
+ @Autowired
+ StartWorkflow startWorkflowTask
+
+ @Shared
+ def WORKFLOW_THAT_STARTS_ANOTHER_WORKFLOW = 'workflow_that_starts_another_workflow'
+
+ def setup() {
+ workflowTestUtil.registerWorkflows('workflow_that_starts_another_workflow.json',
+ 'simple_workflow_1_integration_test.json')
+ }
+
+ @Unroll
+ def "start another workflow using #testCase.name"() {
+ setup: 'create the correlationId for the starter workflow'
+ def correlationId = UUID.randomUUID().toString()
+
+ when: "starter workflow is started"
+ def workflowInstanceId = workflowExecutor.startWorkflow(WORKFLOW_THAT_STARTS_ANOTHER_WORKFLOW, 1,
+ correlationId, testCase.workflowInput, testCase.workflowInputPath, null, null)
+
+ then: "verify that the starter workflow is in RUNNING state"
+ with(workflowExecutionService.getExecutionStatus(workflowInstanceId, true)) {
+ status == Workflow.WorkflowStatus.RUNNING
+ tasks.size() == 1
+ tasks[0].taskType == 'START_WORKFLOW'
+ tasks[0].status == Task.Status.SCHEDULED
+ }
+
+ when: "the START_WORKFLOW task is started"
+ List polledTaskIds = queueDAO.pop("START_WORKFLOW", 1, 200)
+ String startWorkflowTaskId = polledTaskIds.get(0)
+ asyncSystemTaskExecutor.execute(startWorkflowTask, startWorkflowTaskId)
+
+ then: "verify the START_WORKFLOW task and workflow are COMPLETED"
+ with(workflowExecutionService.getExecutionStatus(workflowInstanceId, true)) {
+ status == Workflow.WorkflowStatus.COMPLETED
+ tasks.size() == 1
+ tasks[0].taskType == 'START_WORKFLOW'
+ tasks[0].status == Task.Status.COMPLETED
+ }
+
+ when: "the started workflow is retrieved"
+ def startWorkflowTask = workflowExecutionService.getTask(startWorkflowTaskId)
+ String startedWorkflowId = startWorkflowTask.outputData['workflowId']
+
+ then: "verify that the started workflow is RUNNING"
+ with(workflowExecutionService.getExecutionStatus(startedWorkflowId, false)) {
+ status == Workflow.WorkflowStatus.RUNNING
+ it.correlationId == correlationId
+ // when the "starter" workflow is started with input from external payload storage,
+ // it sends a large input to the "started" workflow
+ // see start_workflow_input.json
+ if(testCase.workflowInputPath) {
+ externalInputPayloadStoragePath != null
+ } else {
+ input != null
+ }
+ }
+
+ where:
+ testCase << [workflowName(), workflowDef(), workflowRequestWithExternalPayloadStorage()]
+ }
+
+ def "start_workflow does not conform to StartWorkflowRequest"() {
+ given: "start_workflow that does not conform to StartWorkflowRequest"
+ def startWorkflowParam = ['param1': 'value1', 'param2': 'value2']
+ def workflowInput = ['start_workflow': startWorkflowParam]
+
+ when: "starter workflow is started"
+ def workflowInstanceId = workflowExecutor.startWorkflow(WORKFLOW_THAT_STARTS_ANOTHER_WORKFLOW, 1,
+ null, workflowInput, null, null, null)
+
+ then: "verify that the starter workflow is in RUNNING state"
+ with(workflowExecutionService.getExecutionStatus(workflowInstanceId, true)) {
+ status == Workflow.WorkflowStatus.RUNNING
+ tasks.size() == 1
+ tasks[0].taskType == 'START_WORKFLOW'
+ tasks[0].status == Task.Status.SCHEDULED
+ }
+
+ when: "the START_WORKFLOW task is started"
+ List polledTaskIds = queueDAO.pop("START_WORKFLOW", 1, 200)
+ String startWorkflowTaskId = polledTaskIds.get(0)
+ asyncSystemTaskExecutor.execute(startWorkflowTask, startWorkflowTaskId)
+
+ then: "verify the START_WORKFLOW task and workflow FAILED"
+ with(workflowExecutionService.getExecutionStatus(workflowInstanceId, true)) {
+ status == Workflow.WorkflowStatus.FAILED
+ tasks.size() == 1
+ tasks[0].taskType == 'START_WORKFLOW'
+ tasks[0].status == Task.Status.FAILED
+ tasks[0].reasonForIncompletion != null
+ }
+ }
+
+ /**
+ * Builds a TestCase for a StartWorkflowRequest with a WorkflowDef that contains two tasks.
+ */
+ static workflowDef() {
+ def task1 = ['name': 'integration_task_1', 'taskReferenceName': 't1', 'type': 'SIMPLE',
+ 'inputParameters': ['tp1': '${workflow.input.param1}', 'tp2': '${workflow.input.param2}', 'tp3': '${CPEWF_TASK_ID}']]
+ def task2 = ['name': 'integration_task_2', 'taskReferenceName': 't2', 'type': 'SIMPLE',
+ 'inputParameters': ['tp1': '${workflow.input.param1}', 'tp2': '${t1.output.op}', 'tp3': '${CPEWF_TASK_ID}']]
+ def workflowDef = ['name': 'dynamic_wf', 'version': 1, 'tasks': [task1, task2], 'ownerEmail': 'abc@abc.com']
+
+ def startWorkflow = ['name': 'dynamic_wf', 'workflowDef': workflowDef]
+
+ new TestCase(name: 'workflow definition', workflowInput: ['start_workflow': startWorkflow])
+ }
+
+ /**
+ * Builds a TestCase for a StartWorkflowRequest with a workflow name.
+ */
+ static workflowName() {
+ def startWorkflow = ['name': 'integration_test_wf', 'input': ['param1': 'value1', 'param2': 'value2']]
+
+ new TestCase(name: 'name and version', workflowInput: ['start_workflow': startWorkflow])
+ }
+
+ /**
+ * Builds a TestCase for a StartWorkflowRequest with a workflow name and input in external payload storage.
+ */
+ static workflowRequestWithExternalPayloadStorage() {
+ new TestCase(name: 'name and version with external input', workflowInputPath: '/start_workflow_input.json')
+ }
+
+ static class TestCase {
+ String name
+ Map workflowInput
+ String workflowInputPath
+ }
+}
diff --git a/test-harness/src/test/java/com/netflix/conductor/test/utils/MockExternalPayloadStorage.java b/test-harness/src/test/java/com/netflix/conductor/test/utils/MockExternalPayloadStorage.java
index 8aafde9b31..bca58dbacf 100644
--- a/test-harness/src/test/java/com/netflix/conductor/test/utils/MockExternalPayloadStorage.java
+++ b/test-harness/src/test/java/com/netflix/conductor/test/utils/MockExternalPayloadStorage.java
@@ -131,6 +131,9 @@ private Map getPayload(String path) {
InputStream ipStream =
MockExternalPayloadStorage.class.getResourceAsStream(TEMP_FILE_PATH);
return objectMapper.readValue(ipStream, Map.class);
+ default:
+ return objectMapper.readValue(
+ MockExternalPayloadStorage.class.getResourceAsStream(path), Map.class);
}
} catch (IOException e) {
// just handle this exception here and return empty map so that test will fail in case
diff --git a/test-harness/src/test/resources/simple_workflow_1_integration_test.json b/test-harness/src/test/resources/simple_workflow_1_integration_test.json
index 7336e4f9e9..202cb13058 100644
--- a/test-harness/src/test/resources/simple_workflow_1_integration_test.json
+++ b/test-harness/src/test/resources/simple_workflow_1_integration_test.json
@@ -12,16 +12,7 @@
"p3": "${CPEWF_TASK_ID}",
"someNullKey": null
},
- "type": "SIMPLE",
- "decisionCases": {},
- "defaultCase": [],
- "forkTasks": [],
- "startDelay": 0,
- "joinOn": [],
- "optional": false,
- "defaultExclusiveJoinTask": [],
- "asyncComplete": false,
- "loopOver": []
+ "type": "SIMPLE"
},
{
"name": "integration_task_2",
@@ -31,16 +22,7 @@
"tp2": "${t1.output.op}",
"tp3": "${CPEWF_TASK_ID}"
},
- "type": "SIMPLE",
- "decisionCases": {},
- "defaultCase": [],
- "forkTasks": [],
- "startDelay": 0,
- "joinOn": [],
- "optional": false,
- "defaultExclusiveJoinTask": [],
- "asyncComplete": false,
- "loopOver": []
+ "type": "SIMPLE"
}
],
"inputParameters": [
@@ -59,4 +41,4 @@
"timeoutPolicy": "ALERT_ONLY",
"timeoutSeconds": 0,
"ownerEmail": "test@harness.com"
-}
\ No newline at end of file
+}
diff --git a/test-harness/src/test/resources/start_workflow_input.json b/test-harness/src/test/resources/start_workflow_input.json
new file mode 100644
index 0000000000..8212c3111a
--- /dev/null
+++ b/test-harness/src/test/resources/start_workflow_input.json
@@ -0,0 +1,427 @@
+{
+ "start_workflow": {
+ "name": "integration_test_wf",
+ "input": {
+ "op": {
+ "TEST_SAMPLE": [
+ {
+ "sourceId": "1413900_10830",
+ "url": "file/location/a0bdc4d0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_50241",
+ "url": "file/location/cd4e00a0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "generated-55ee8663-85c2-42d3-aca2-4076707e6d4e",
+ "url": "file/sample/location/e008d018-63d7-44b2-b07e-c7435430ac71"
+ },
+ {
+ "sourceId": "generated-14056154-1544-4350-81db-b3751fe44777",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-0b0ae5ea-d5c5-410c-adc9-bf16d2909c2e",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-08869779-614d-417c-bfea-36a3f8f199da",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "generated-e117db45-1c48-45d0-b751-89386eb2d81d",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "f0221421-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/4a009209-002f-4b58-8b96-cb2198f8ba3c"
+ },
+ {
+ "sourceId": "f0252161-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/55b56298-5e7a-4949-b919-88c5c9557e8e"
+ },
+ {
+ "sourceId": "f038d070-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/3c4804f4-e826-436f-90c9-52b8d9266d52"
+ },
+ {
+ "sourceId": "f04e0621-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/689283a1-1816-48ef-83da-7f9ac874bf45"
+ },
+ {
+ "sourceId": "f04ddf10-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/586666ae-7321-445a-80b6-323c8c241ecd"
+ },
+ {
+ "sourceId": "f05950c0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/31795cc4-2590-4b20-a617-deaa18301f99"
+ },
+ {
+ "sourceId": "1413900_46819",
+ "url": "file/location/c74497a0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_11177",
+ "url": "file/location/a231c730-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_48713",
+ "url": "file/location/ca638ae0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_48525",
+ "url": "file/location/ca0c9140-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_73303",
+ "url": "file/location/d5943a40-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "1413900_55202",
+ "url": "file/location/d1a4d7a0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "generated-61413adf-3c10-4484-b25d-e238df898f45",
+ "url": "file/sample/location/e008d018-63d7-44b2-b07e-c7435430ac71"
+ },
+ {
+ "sourceId": "generated-addca397-f050-4339-ae86-9ba8c4e1b0d5",
+ "url": "file/sample/location/838a0ddb-a315-453a-8b8a-fa795f9d7691"
+ },
+ {
+ "sourceId": "generated-e4de9810-0f69-4593-8926-01ed82cbebcb",
+ "url": "file/sample/location/838a0ddb-a315-453a-8b8a-fa795f9d7691"
+ },
+ {
+ "sourceId": "generated-e16e2074-7af6-4700-ab05-ca41ba9c9ab4",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-341c86f8-57a5-40e1-8842-3eb41dd9f528",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-88c2ea9b-cef7-4120-8043-b92713d8fade",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-3f6a731f-3c92-4677-9923-f80b8a6be632",
+ "url": "file/sample/location/3881aea9-a731-4e22-9ead-2d6eccc51140"
+ },
+ {
+ "sourceId": "generated-1508b871-64de-47ce-8b07-76c5cb3f3e1e",
+ "url": "file/sample/location/a2e4195f-3900-45b4-9335-45f85fca6467"
+ },
+ {
+ "sourceId": "generated-1406dce8-7b9c-4956-a7e8-78721c476ce9",
+ "url": "file/sample/location/a2e4195f-3900-45b4-9335-45f85fca6467"
+ },
+ {
+ "sourceId": "f0206671-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/35ebee36-3072-44c5-abb5-702a5a3b1a91"
+ },
+ {
+ "sourceId": "f01f5501-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/d3a9133d-c681-4910-a769-8195526ae634"
+ },
+ {
+ "sourceId": "f022b060-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/8fc1413d-170e-4644-a554-5e0c596b225c"
+ },
+ {
+ "sourceId": "f02fa8b1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/35bed0a2-7def-457b-bded-4f4d7d94f76e"
+ },
+ {
+ "sourceId": "f031f2a0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/a5a2ea1f-8d13-429c-a44d-3057d21f608a"
+ },
+ {
+ "sourceId": "f0424650-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/1c599ffc-4f10-4c0b-8d9a-ae41c7256113"
+ },
+ {
+ "sourceId": "f04ec970-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/8404a421-e1a6-41cf-af63-a35ccb474457"
+ },
+ {
+ "sourceId": "1413900_47197",
+ "url": "file/location/c81b6fa0-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "generated-2a63c0c8-62ea-44a4-a33b-f0b3047e8b00",
+ "url": "file/sample/location/e008d018-63d7-44b2-b07e-c7435430ac71"
+ },
+ {
+ "sourceId": "generated-b27face7-3589-4209-944a-5153b20c5996",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-144675b3-9321-48d2-8b5b-e19a40d30ef2",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-8cbe821e-b1fb-48ce-beb5-735319af4db6",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-ecc4ea47-9bad-4b91-97c7-35f4ea6fb479",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-c1eb9ed0-8560-4e09-a748-f926edb7cdc2",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "generated-6bed81fd-c777-4c61-8da1-0bb7f7cf0082",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "generated-852e5510-dd5d-4900-a614-854148fcc716",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "generated-f4dedcb7-37c9-4ba9-ab37-64ec9be7c882",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "f0259691-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/721bc0de-e75f-4386-8b2e-ca84eb653596"
+ },
+ {
+ "sourceId": "f02b3be1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/d2043b17-8ce5-42ee-a5e4-81c68f0c4838"
+ },
+ {
+ "sourceId": "f02b62f0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/63931561-3b5b-4ffe-af47-da2c9de94684"
+ },
+ {
+ "sourceId": "f0315660-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/d99ed629-2885-4e4a-8a1b-22e487b875fa"
+ },
+ {
+ "sourceId": "f0306c00-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/6f8e673a-7003-44aa-96b9-e2ed8a4654ff"
+ },
+ {
+ "sourceId": "f033c760-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/627c00f9-14b3-4057-b6e2-0f962ad0308e"
+ },
+ {
+ "sourceId": "f03526f1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/fafabaf9-fe58-4a9a-b555-026521aeb2fe"
+ },
+ {
+ "sourceId": "f03acc41-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/6c9fed2c-558a-4db3-8360-659b5e8c46e4"
+ },
+ {
+ "sourceId": "f0463df1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/e9fb83d2-5f14-4442-92b5-67e613f2e35f"
+ },
+ {
+ "sourceId": "f04fb3d0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/e7a0f82f-be8d-4ada-a4b1-13e8165e08be"
+ },
+ {
+ "sourceId": "f05272f0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/9aba488a-22b3-4932-85a7-52c461203541"
+ },
+ {
+ "sourceId": "f0581841-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/457415f6-6d0c-4304-8533-0d5b43fac564"
+ },
+ {
+ "sourceId": "generated-8fefb48c-6fde-4fd6-8f33-a1f3f3b62105",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-30c61aa5-f5bd-4077-8c32-336b87acbe96",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-d5da37db-d486-46d4-8f7d-1e0710a77eb5",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-77af26fe-9e22-48af-99e3-f63f10fbe6de",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-2e807016-3d11-4b60-bec7-c380a608b67d",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-615d02e9-62c2-43ab-9df7-753b6b8e2c22",
+ "url": "file/sample/location/519f6c80-96ef-440f-9d37-ccf36c7d1e5d"
+ },
+ {
+ "sourceId": "generated-3e1600fd-a626-4ee6-972b-5f0187e96c38",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "generated-1dcb208c-6a58-4334-a60c-6fb54c8a2af5",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "f024ac30-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/0af2107b-4231-4d23-bef3-4e417ac6c5d3"
+ },
+ {
+ "sourceId": "f0282ea1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/0f592681-fd23-4194-ae43-42f61c664485"
+ },
+ {
+ "sourceId": "f02c4d50-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/ec46b9a3-99af-410a-af7d-726f8854909f"
+ },
+ {
+ "sourceId": "f02b8a00-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/aed7e5da-b524-4d41-b264-28ce615ec826"
+ },
+ {
+ "sourceId": "f02b14d1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/b88c9055-ab0d-4d27-a405-265ba2a15f0c"
+ },
+ {
+ "sourceId": "f03044f1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/fb8c4df9-d59e-4ac3-880e-4ea94cd880a4"
+ },
+ {
+ "sourceId": "f034ffe1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/59f3fbe8-b300-4861-9b2f-dac7b15aea7d"
+ },
+ {
+ "sourceId": "f03c2bd0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/19a06d54-41ed-419d-9947-f10cd5f0d85c"
+ },
+ {
+ "sourceId": "f03fae41-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/a9a48a62-7d62-4f67-b281-cc6fdc1e722c"
+ },
+ {
+ "sourceId": "f0455390-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/0aeffc0a-a5ad-46ff-abab-1b3bc6a5840a"
+ },
+ {
+ "sourceId": "f04b1ff1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/9a08aaed-c125-48f7-9d1d-fd11266c2b12"
+ },
+ {
+ "sourceId": "f04cf4b1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/17a6e0f9-aa64-411f-9af7-837c84f7443f"
+ },
+ {
+ "sourceId": "f0511360-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/fb633c73-cb33-4806-bc08-049024644856"
+ },
+ {
+ "sourceId": "f0538460-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/a7012248-6769-42da-a6c8-d4b831f6efce"
+ },
+ {
+ "sourceId": "f058db91-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/bcf71522-6168-48c4-86c9-995bca60ae51"
+ },
+ {
+ "sourceId": "generated-adf005c4-95c1-4904-9968-09cc19a26bfe",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-c4d367a4-4cdc-412e-af79-09b227f2e3ba",
+ "url": "file/sample/location/3d927190-1c4d-4af2-91cf-2968d3ccfe70"
+ },
+ {
+ "sourceId": "generated-48dba018-f884-49db-b87e-67274e244c8f",
+ "url": "file/sample/location/4bce4154-fb4b-4f0a-887d-a0cd12d4d214"
+ },
+ {
+ "sourceId": "generated-26700b83-4892-420e-8b46-1ee21eba75fb",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "generated-632f3198-c0dc-4348-974f-51684d4e443e",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "generated-86e2dd1d-1aa4-4dbe-b37b-b488f5dd1c70",
+ "url": "file/sample/location/e87da4d1-72da-47a3-801d-43e01c050c89"
+ },
+ {
+ "sourceId": "f04134e0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/ff8f59bf-7757-4d51-a7e4-619f3e8ffaf2"
+ },
+ {
+ "sourceId": "f04f65b0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/d66467d1-3ac6-4041-8d15-e722ee07231f"
+ },
+ {
+ "sourceId": "1413900_15255",
+ "url": "file/location/a9e20260-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "generated-e953493b-cbe3-4319-885e-00c82089c76c",
+ "url": "file/sample/location/ec16facd-86e3-4c3f-8dfb-7a2ad3a4e18c"
+ },
+ {
+ "sourceId": "generated-65c54676-3adb-4ef0-b65e-8e2a49533cbf",
+ "url": "file/sample/location/07ec28a1-189e-4f2a-9dd5-f3ca68ce977d"
+ },
+ {
+ "sourceId": "f02ac6b0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/21568877-07a5-411f-9715-5e92806c4448"
+ },
+ {
+ "sourceId": "f02fcfc1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/f3b1f1a2-48d3-475d-a607-2e5a1fe532e7"
+ },
+ {
+ "sourceId": "f03526f0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/84a40c66-d925-4a4a-ba62-8491d26e29e9"
+ },
+ {
+ "sourceId": "f03e75c1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/e84c00e8-a148-46cf-9a0b-431c4c2aeb08"
+ },
+ {
+ "sourceId": "f0429471-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/178de9fa-7cc8-457a-8fb6-5c080e6163ea"
+ },
+ {
+ "sourceId": "f047eba0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/18d153aa-e13b-4264-ae03-f3da75eb425b"
+ },
+ {
+ "sourceId": "f04fdae0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/7c843e53-8d87-47cf-bca5-1a02e7f5e33f"
+ },
+ {
+ "sourceId": "f0553210-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/26bacd65-9082-4d83-9506-90e5f1ccd16a"
+ },
+ {
+ "sourceId": "1413900_84904",
+ "url": "file/location/d8f7b090-5315-11e8-bf88-0efd527701fc"
+ },
+ {
+ "sourceId": "generated-84adc784-8d7d-4088-ba51-16fde57fbc21",
+ "url": "file/sample/location/3881aea9-a731-4e22-9ead-2d6eccc51140"
+ },
+ {
+ "sourceId": "generated-9e49c58b-0b33-4daf-a39a-8fc91e302328",
+ "url": "file/sample/location/4bce4154-fb4b-4f0a-887d-a0cd12d4d214"
+ },
+ {
+ "sourceId": "f02dd3f1-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/8937b328-8f0d-4762-8d1f-7d7bc80c3d2e"
+ },
+ {
+ "sourceId": "f03240c0-86e8-11e8-af77-0a2ba4eae3ec",
+ "url": "file/test/location/aab6e386-4d59-4b40-b257-9aed12a45446"
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/test-harness/src/test/resources/workflow_that_starts_another_workflow.json b/test-harness/src/test/resources/workflow_that_starts_another_workflow.json
new file mode 100644
index 0000000000..1ce302c663
--- /dev/null
+++ b/test-harness/src/test/resources/workflow_that_starts_another_workflow.json
@@ -0,0 +1,23 @@
+{
+ "name": "workflow_that_starts_another_workflow",
+ "description": "A workflow that uses START_WORKFLOW task to start another workflow",
+ "version": 1,
+ "tasks": [
+ {
+ "name": "start_workflow",
+ "taskReferenceName": "st",
+ "inputParameters": {
+ "start_workflow": "${workflow.input.start_workflow}"
+ },
+ "type": "START_WORKFLOW"
+ }
+ ],
+ "inputParameters": ["start_workflow"],
+ "outputParameters": {},
+ "schemaVersion": 2,
+ "restartable": true,
+ "workflowStatusListenerEnabled": false,
+ "timeoutPolicy": "ALERT_ONLY",
+ "timeoutSeconds": 0,
+ "ownerEmail": "test@harness.com"
+}
From 394e2798b5ce144facae03304421d9ba7cbf0f1d Mon Sep 17 00:00:00 2001
From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com>
Date: Tue, 22 Mar 2022 14:18:29 -0700
Subject: [PATCH 02/10] removed redundant call to MetadataService when starting
a workflow
---
.../netflix/conductor/service/WorkflowServiceImpl.java | 8 --------
1 file changed, 8 deletions(-)
diff --git a/core/src/main/java/com/netflix/conductor/service/WorkflowServiceImpl.java b/core/src/main/java/com/netflix/conductor/service/WorkflowServiceImpl.java
index 4af4b18312..f1a84a13dd 100644
--- a/core/src/main/java/com/netflix/conductor/service/WorkflowServiceImpl.java
+++ b/core/src/main/java/com/netflix/conductor/service/WorkflowServiceImpl.java
@@ -131,14 +131,6 @@ public String startWorkflow(
WorkflowDef workflowDef) {
if (workflowDef == null) {
- workflowDef = metadataService.getWorkflowDef(name, version);
- if (workflowDef == null) {
- throw new ApplicationException(
- ApplicationException.Code.NOT_FOUND,
- String.format(
- "No such workflow found by name: %s, version: %d", name, version));
- }
-
return workflowExecutor.startWorkflow(
name,
version,
From 5bd6dc5f1e649a5bc15e29036dc02c2f67a085b0 Mon Sep 17 00:00:00 2001
From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com>
Date: Tue, 22 Mar 2022 14:18:40 -0700
Subject: [PATCH 03/10] refactoring
---
.../java/com/netflix/conductor/common/utils/EnvUtils.java | 3 +--
.../core/execution/mapper/SubWorkflowTaskMapper.java | 2 +-
.../core/execution/tasks/StartWorkflowSpec.groovy | 7 ++-----
.../core/execution/mapper/SubWorkflowTaskMapperTest.java | 2 +-
4 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java b/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
index ec6a8d7f8e..202f1f31c6 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
@@ -29,8 +29,7 @@ public static boolean isEnvironmentVariable(String test) {
}
}
String value =
- Optional.ofNullable(System.getProperty(test))
- .orElseGet(() -> Optional.ofNullable(System.getenv(test)).orElse(null));
+ Optional.ofNullable(System.getProperty(test)).orElseGet(() -> System.getenv(test));
return value != null;
}
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapper.java
index a89aa464b0..fdd0a7efaa 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapper.java
@@ -105,7 +105,7 @@ SubWorkflowParams getSubWorkflowParams(WorkflowTask taskToSchedule) {
String reason =
String.format(
"Task %s is defined as sub-workflow and is missing subWorkflowParams. "
- + "Please check the blueprint",
+ + "Please check the workflow definition",
taskToSchedule.getName());
LOGGER.error(reason);
return new TerminateWorkflowException(reason);
diff --git a/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
index 5b734bee9f..cc41972a52 100644
--- a/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
+++ b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
@@ -57,11 +57,8 @@ class StartWorkflowSpec extends Specification {
}
def "StartWorkflow task is asynchronous"() {
- when:
- def async = startWorkflow.isAsync()
-
- then:
- async
+ expect:
+ startWorkflow.isAsync()
}
def "start_workflow parameter is missing"() {
diff --git a/core/src/test/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapperTest.java b/core/src/test/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapperTest.java
index 36e6fc076c..d638d830b5 100644
--- a/core/src/test/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapperTest.java
+++ b/core/src/test/java/com/netflix/conductor/core/execution/mapper/SubWorkflowTaskMapperTest.java
@@ -179,7 +179,7 @@ public void getExceptionWhenNoSubWorkflowParamsPassed() {
expectedException.expectMessage(
String.format(
"Task %s is defined as sub-workflow and is missing subWorkflowParams. "
- + "Please check the blueprint",
+ + "Please check the workflow definition",
workflowTask.getName()));
subWorkflowTaskMapper.getSubWorkflowParams(workflowTask);
From 931ec9b028cda9c475a368980be7903069879f0f Mon Sep 17 00:00:00 2001
From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com>
Date: Wed, 23 Mar 2022 17:46:57 -0700
Subject: [PATCH 04/10] start_workflow -> startWorkflow
---
.../core/execution/tasks/StartWorkflow.java | 2 +-
.../execution/tasks/StartWorkflowSpec.groovy | 2 +-
.../test/integration/StartWorkflowSpec.groovy | 18 +++++++++---------
.../test/resources/start_workflow_input.json | 2 +-
.../workflow_that_starts_another_workflow.json | 2 +-
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java b/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
index 1b481f3712..59abde2a82 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/tasks/StartWorkflow.java
@@ -39,7 +39,7 @@ public class StartWorkflow extends WorkflowSystemTask {
private static final Logger LOGGER = LoggerFactory.getLogger(StartWorkflow.class);
private static final String WORKFLOW_ID = "workflowId";
- private static final String START_WORKFLOW_PARAMETER = "start_workflow";
+ private static final String START_WORKFLOW_PARAMETER = "startWorkflow";
private final ObjectMapper objectMapper;
private final Validator validator;
diff --git a/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
index cc41972a52..7ef18baae1 100644
--- a/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
+++ b/core/src/test/groovy/com/netflix/conductor/core/execution/tasks/StartWorkflowSpec.groovy
@@ -61,7 +61,7 @@ class StartWorkflowSpec extends Specification {
startWorkflow.isAsync()
}
- def "start_workflow parameter is missing"() {
+ def "startWorkflow parameter is missing"() {
given: "a task with no start_workflow in input"
taskModel.inputData = [:]
diff --git a/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
index 3218ffc673..24be857533 100644
--- a/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
+++ b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
@@ -12,20 +12,16 @@
*/
package com.netflix.conductor.test.integration
-import org.springframework.beans.factory.annotation.Autowired
-
import com.netflix.conductor.common.metadata.tasks.Task
import com.netflix.conductor.common.run.Workflow
import com.netflix.conductor.core.execution.tasks.StartWorkflow
import com.netflix.conductor.dao.QueueDAO
-import com.netflix.conductor.model.TaskModel
-import com.netflix.conductor.model.WorkflowModel
import com.netflix.conductor.test.base.AbstractSpecification
-
+import org.springframework.beans.factory.annotation.Autowired
import spock.lang.Shared
import spock.lang.Unroll
-import static com.netflix.conductor.model.TaskModel.Status.FAILED
+import static com.netflix.conductor.core.execution.tasks.StartWorkflow.START_WORKFLOW_PARAMETER
class StartWorkflowSpec extends AbstractSpecification {
@@ -139,7 +135,10 @@ class StartWorkflowSpec extends AbstractSpecification {
def startWorkflow = ['name': 'dynamic_wf', 'workflowDef': workflowDef]
- new TestCase(name: 'workflow definition', workflowInput: ['start_workflow': startWorkflow])
+ def input = [:]
+ input[START_WORKFLOW_PARAMETER] = startWorkflow
+
+ new TestCase(name: 'workflow definition', workflowInput: input)
}
/**
@@ -147,8 +146,9 @@ class StartWorkflowSpec extends AbstractSpecification {
*/
static workflowName() {
def startWorkflow = ['name': 'integration_test_wf', 'input': ['param1': 'value1', 'param2': 'value2']]
-
- new TestCase(name: 'name and version', workflowInput: ['start_workflow': startWorkflow])
+ def input = [:]
+ input[START_WORKFLOW_PARAMETER] = startWorkflow
+ new TestCase(name: 'name and version', workflowInput: input)
}
/**
diff --git a/test-harness/src/test/resources/start_workflow_input.json b/test-harness/src/test/resources/start_workflow_input.json
index 8212c3111a..0abd4d3b33 100644
--- a/test-harness/src/test/resources/start_workflow_input.json
+++ b/test-harness/src/test/resources/start_workflow_input.json
@@ -1,5 +1,5 @@
{
- "start_workflow": {
+ "startWorkflow": {
"name": "integration_test_wf",
"input": {
"op": {
diff --git a/test-harness/src/test/resources/workflow_that_starts_another_workflow.json b/test-harness/src/test/resources/workflow_that_starts_another_workflow.json
index 1ce302c663..ba3cf9c99b 100644
--- a/test-harness/src/test/resources/workflow_that_starts_another_workflow.json
+++ b/test-harness/src/test/resources/workflow_that_starts_another_workflow.json
@@ -7,7 +7,7 @@
"name": "start_workflow",
"taskReferenceName": "st",
"inputParameters": {
- "start_workflow": "${workflow.input.start_workflow}"
+ "startWorkflow": "${workflow.input.startWorkflow}"
},
"type": "START_WORKFLOW"
}
From 79ae7f1dcd199c307bb29f467686550efabb7ab6 Mon Sep 17 00:00:00 2001
From: Aravindan Ramkumar <1028385+aravindanr@users.noreply.github.com>
Date: Wed, 23 Mar 2022 17:57:51 -0700
Subject: [PATCH 05/10] StartWorkflow system task documentation
---
docs/docs/configuration/workflowdef.md | 2 +-
docs/docs/gettingstarted/startworkflow.md | 20 ++++++------
.../reference-docs/start-workflow-task.md | 32 +++++++++++++++++++
docs/docs/reference-docs/sub-workflow-task.md | 26 +++++++--------
docs/mkdocs.yml | 5 +--
.../test/integration/StartWorkflowSpec.groovy | 16 ++++------
6 files changed, 65 insertions(+), 36 deletions(-)
create mode 100644 docs/docs/reference-docs/start-workflow-task.md
diff --git a/docs/docs/configuration/workflowdef.md b/docs/docs/configuration/workflowdef.md
index 62ca14d8cc..255652547a 100644
--- a/docs/docs/configuration/workflowdef.md
+++ b/docs/docs/configuration/workflowdef.md
@@ -5,7 +5,7 @@
At a high level, a workflow is the Conductor primitive that encompasses the definition and flow of your business logic.
A workflow is a collection (graph) of tasks and sub-workflows. A workflow definition specifies the order of execution of
these [Tasks](taskdef.md). It also specifies how data/state is passed from one task to the other (using the
-input/output parameters). These are then combined together to give you the final result. This orchestration of Tasks can
+input/output parameters). These are then combined to give you the final result. This orchestration of Tasks can
happen in a hybrid ecosystem that includes microservices, serverless functions, and monolithic applications. They can
also span across any public cloud and on-premise data center footprints. In addition, the orchestration of tasks can be
across any programming language since Conductor is also language agnostic.
diff --git a/docs/docs/gettingstarted/startworkflow.md b/docs/docs/gettingstarted/startworkflow.md
index 6de77843f7..55ecec04bb 100644
--- a/docs/docs/gettingstarted/startworkflow.md
+++ b/docs/docs/gettingstarted/startworkflow.md
@@ -2,16 +2,16 @@
When starting a Workflow execution with a registered definition, Workflow accepts following parameters:
-|field|description|Notes|
-|:-----|:---|:---|
-| name | Name of the Workflow. MUST be registered with Conductor before starting workflow | |
-| version | Workflow version | defaults to latest available version |
-| input | JSON object with key value params, that can be used by downstream tasks | See [Wiring Inputs and Outputs](../../configuration/workflowdef/#wiring-inputs-and-outputs) for details |
-| correlationId | Unique Id that correlates multiple Workflow executions | optional |
-| taskToDomain | See [Task Domains](../../configuration/taskdomains/#task-domains) for more information. | optional |
-| workflowDef | Provide adhoc Workflow definition to run, without registering. See Dynamic Workflows below. | optional |
-| externalInputPayloadStoragePath | This is taken care of by Java client. See [External Payload Storage](../../externalpayloadstorage/) for more info. | optional |
-| priority | Priority level for the tasks within this workflow execution. Possible values are between 0 - 99. | optional |
+|field| description |Notes|
+|:-----|:--------------------------------------------------------------------------------------------------------------------------------------------------|:---|
+| name | Name of the Workflow. MUST be registered with Conductor before starting workflow | |
+| version | Workflow version | defaults to latest available version |
+| input | JSON object with key value params, that can be used by downstream tasks | See [Wiring Inputs and Outputs](../../configuration/workflowdef/#wiring-inputs-and-outputs) for details |
+| correlationId | Unique Id that correlates multiple Workflow executions | optional |
+| taskToDomain | See [Task Domains](../../configuration/taskdomains/#task-domains) for more information. | optional |
+| workflowDef | An adhoc [Workflow Definition](../../configuration/workflowdef.md) to run, without registering. See [Dynamic Workflows](#dynamic-workflows). | optional |
+| externalInputPayloadStoragePath | This is taken care of by Java client. See [External Payload Storage](../../externalpayloadstorage/) for more info. | optional |
+| priority | Priority level for the tasks within this workflow execution. Possible values are between 0 - 99. | optional |
**Example:**
diff --git a/docs/docs/reference-docs/start-workflow-task.md b/docs/docs/reference-docs/start-workflow-task.md
new file mode 100644
index 0000000000..e7e2729232
--- /dev/null
+++ b/docs/docs/reference-docs/start-workflow-task.md
@@ -0,0 +1,32 @@
+---
+sidebar_position: 1
+---
+# Start Workflow
+```json
+"type" : "START_WORKFLOW"
+```
+### Introduction
+
+Start Workflow starts another workflow.
+
+### Use Cases
+
+When another workflow needs to be started from a workflow, `START_WORKFLOW` can be used.
+
+### Configuration
+
+Start Workflow task is defined directly inside the workflow with type `START_WORKFLOW`.
+
+#### Input
+
+**Parameters:**
+
+| name |type| description |
+|---------------|---|------------------------------------------------------------------------------------------------------------------------|
+| startWorkflow | Map[String, Any] | The value of this parameter is [Start Workflow Request](../../gettingstarted/startworkflow.md#start-workflow-request). |
+
+#### Output
+
+| name |type| description |
+|------------|---|--------------------------------|
+| workflowId | String | The id of the started workflow |
diff --git a/docs/docs/reference-docs/sub-workflow-task.md b/docs/docs/reference-docs/sub-workflow-task.md
index c730c546ef..315afcfb80 100644
--- a/docs/docs/reference-docs/sub-workflow-task.md
+++ b/docs/docs/reference-docs/sub-workflow-task.md
@@ -6,7 +6,7 @@ sidebar_position: 1
"type" : "SUB_WORKFLOW"
```
### Introduction
-Sub Workflow task allows for nesting a workflow within another workflow.
+Sub Workflow task allows for nesting a workflow within another workflow. Nested workflows contain a reference to their parent.
### Use Cases
@@ -15,9 +15,9 @@ case, Sub Workflow Task would be used.
### Configuration
-Sub Workflow task is defined directly inside the workflow with `"SUB_WORKFLOW"`.
+Sub Workflow task is defined directly inside the workflow with type `SUB_WORKFLOW`.
-#### Inputs
+#### Input
**Parameters:**
@@ -27,12 +27,12 @@ Sub Workflow task is defined directly inside the workflow with `"SUB_WORKFLOW"`.
**subWorkflowParam**
-|name|type|description|
-|---|---|---|
-| name | String | Name of the workflow to execute |
-| version | Integer | Version of the workflow to execute |
-| taskToDomain | Map[String, String] | Allows scheduling the sub workflow's tasks per given mappings. See [Task Domains](conductor/configuration/taskdomains/) for instructions to configure taskDomains. |
-| workflowDefinition | [WorkflowDefinition](conductor/configuration/workflowdef/) | Allows starting a subworkflow with a dynamic workflow definition. |
+|name| type |description|
+|---|----------------------------------------------------------|---|
+| name | String | Name of the workflow to execute |
+| version | Integer | Version of the workflow to execute |
+| taskToDomain | Map[String, String] | Allows scheduling the sub workflow's tasks per given mappings. See [Task Domains](conductor/configuration/taskdomains/) for instructions to configure taskDomains. |
+| workflowDefinition | [WorkflowDefinition](../../configuration/workflowdef.md) | Allows starting a subworkflow with a dynamic workflow definition. |
#### Output
@@ -44,11 +44,11 @@ Sub Workflow task is defined directly inside the workflow with `"SUB_WORKFLOW"`.
### Examples
-Imagine we have a workflow that has a fork in it.. In the example below, we inputting one image, but using a fork to create 2 images simultaneously:
+Imagine we have a workflow that has a fork in it. In the example below, we input one image, but using a fork to create 2 images simultaneously:
![](/img/workflow_fork.png)
-The left fork will create a JPG, and the right fork a WEBP image. Maintaining this workflow might be difficult, as changes made to one side of the fork do not automatically propagate the otehr. Rather than using 2 tasks, we can define a ```image_convert_resize``` workflow that we can call for both forks as a subworkflow:
+The left fork will create a JPG, and the right fork a WEBP image. Maintaining this workflow might be difficult, as changes made to one side of the fork do not automatically propagate the other. Rather than using 2 tasks, we can define a ```image_convert_resize``` workflow that we can call for both forks as a sub-workflow:
```json
@@ -145,7 +145,7 @@ Now our diagram will appear as:
![workflow with 2 subworkflows](../img/subworkflow_diagram.png)
-The inputs to both sides of the workflow are identical before and after - but we've abstraced the tasks into the subworkflow. nay change to the subworkflow will automatically occur in bth sides of the fork.
+The inputs to both sides of the workflow are identical before and after - but we've abstracted the tasks into the sub-workflow. Any change to the sub-workflow will automatically occur in bth sides of the fork.
Looking at the subworkflow (the WEBP version):
@@ -172,4 +172,4 @@ Looking at the subworkflow (the WEBP version):
```
The ```subWorkflowParam``` tells conductor which workflow to call. The task is marked as completed upon the completion of the spawned workflow.
-If the sub-workflow is terminated or fails the task is marked as failure and retried if configured.
\ No newline at end of file
+If the sub-workflow is terminated or fails the task is marked as failure and retried if configured.
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 826d5c264b..cfc68b2085 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -29,8 +29,9 @@ nav:
- Fork: reference-docs/fork-task.md
- Join: reference-docs/join-task.md
- Set Variable: reference-docs/set-variable-task.md
+ - Start Workflow: reference-docs/start-workflow-task.md
- Sub Workflow: reference-docs/sub-workflow-task.md
- - Switch: reference-docs/switch-task.md
+ - Switch: reference-docs/switch-task.md
- Terminate: reference-docs/terminate-task.md
- Wait: reference-docs/wait-task.md
- System Tasks:
@@ -62,7 +63,7 @@ nav:
- Task Inputs: how-tos/Tasks/task-inputs.md
- Task Timeouts: how-tos/Tasks/task-timeouts.md
- Updating Task Definitions: how-tos/Tasks/updating-tasks.md
- - Workers:
+ - Workers:
-Build a Go Task Worker: how-tos/Workers/build-a-golang-task-worker.md
-Build a Java Task Worker: how-tos/Workers/build-a-java-task-worker.md
-Build a Python Task Worker: how-tos/Workers/build-a-python-task-worker.md
diff --git a/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
index 24be857533..6686804db3 100644
--- a/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
+++ b/test-harness/src/test/groovy/com/netflix/conductor/test/integration/StartWorkflowSpec.groovy
@@ -12,17 +12,17 @@
*/
package com.netflix.conductor.test.integration
+import org.springframework.beans.factory.annotation.Autowired
+
import com.netflix.conductor.common.metadata.tasks.Task
import com.netflix.conductor.common.run.Workflow
import com.netflix.conductor.core.execution.tasks.StartWorkflow
import com.netflix.conductor.dao.QueueDAO
import com.netflix.conductor.test.base.AbstractSpecification
-import org.springframework.beans.factory.annotation.Autowired
+
import spock.lang.Shared
import spock.lang.Unroll
-import static com.netflix.conductor.core.execution.tasks.StartWorkflow.START_WORKFLOW_PARAMETER
-
class StartWorkflowSpec extends AbstractSpecification {
@Autowired
@@ -135,10 +135,7 @@ class StartWorkflowSpec extends AbstractSpecification {
def startWorkflow = ['name': 'dynamic_wf', 'workflowDef': workflowDef]
- def input = [:]
- input[START_WORKFLOW_PARAMETER] = startWorkflow
-
- new TestCase(name: 'workflow definition', workflowInput: input)
+ new TestCase(name: 'workflow definition', workflowInput: ['startWorkflow': startWorkflow])
}
/**
@@ -146,9 +143,8 @@ class StartWorkflowSpec extends AbstractSpecification {
*/
static workflowName() {
def startWorkflow = ['name': 'integration_test_wf', 'input': ['param1': 'value1', 'param2': 'value2']]
- def input = [:]
- input[START_WORKFLOW_PARAMETER] = startWorkflow
- new TestCase(name: 'name and version', workflowInput: input)
+
+ new TestCase(name: 'name and version', workflowInput: ['startWorkflow': startWorkflow])
}
/**
From 8b6ca04f6083a99021d133e0d3fa897f3e256125 Mon Sep 17 00:00:00 2001
From: peterlau
Date: Wed, 23 Mar 2022 23:49:00 -0700
Subject: [PATCH 06/10] Refactor data access hooks (react-query) for improved
encapsulation. Do not expose useFetch and useAction in view components. -
Upgrade dependencies and remove fontsource-roboto.
---
ui/package.json | 1 -
ui/src/data/actions.js | 43 +
ui/src/data/bulkactions.js | 27 +
ui/src/data/common.js | 37 +
ui/src/data/misc.js | 9 +
ui/src/data/task.js | 120 ++
ui/src/data/workflow.js | 137 +++
ui/src/pages/definition/EventHandler.jsx | 4 +-
ui/src/pages/definition/SaveTaskDialog.jsx | 2 +-
.../pages/definition/SaveWorkflowDialog.jsx | 6 +-
ui/src/pages/definition/TaskDefinition.jsx | 2 +-
.../pages/definition/WorkflowDefinition.jsx | 7 +-
ui/src/pages/definitions/EventHandler.jsx | 6 +-
ui/src/pages/definitions/Task.jsx | 5 +-
ui/src/pages/definitions/Workflow.jsx | 2 +-
ui/src/pages/execution/ActionModule.jsx | 47 +-
ui/src/pages/execution/Execution.jsx | 10 +-
ui/src/pages/execution/RightPanel.jsx | 1 -
ui/src/pages/execution/TaskLogs.jsx | 4 +-
ui/src/pages/executions/BulkActionModule.jsx | 44 +-
ui/src/pages/executions/TaskSearch.jsx | 8 +-
ui/src/pages/executions/WorkflowSearch.jsx | 3 +-
ui/src/pages/misc/TaskQueue.jsx | 3 +-
ui/src/setupProxy.js | 2 +-
ui/yarn.lock | 1018 +++++++++--------
25 files changed, 957 insertions(+), 591 deletions(-)
create mode 100644 ui/src/data/actions.js
create mode 100644 ui/src/data/bulkactions.js
create mode 100644 ui/src/data/common.js
create mode 100644 ui/src/data/misc.js
create mode 100644 ui/src/data/task.js
create mode 100644 ui/src/data/workflow.js
diff --git a/ui/package.json b/ui/package.json
index c50764238e..e328d4a31f 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -11,7 +11,6 @@
"d3": "^6.2.0",
"dagre-d3": "^0.6.4",
"date-fns": "^2.16.1",
- "fontsource-roboto": "^4.0.0",
"formik": "^2.2.9",
"http-proxy-middleware": "^2.0.1",
"immutability-helper": "^3.1.1",
diff --git a/ui/src/data/actions.js b/ui/src/data/actions.js
new file mode 100644
index 0000000000..46fdf9c0f0
--- /dev/null
+++ b/ui/src/data/actions.js
@@ -0,0 +1,43 @@
+import { useAction } from "./common";
+
+export const useRestartAction = ({ workflowId, onSuccess }) => {
+ return useAction(`/workflow/${workflowId}/restart`, "post", { onSuccess });
+};
+
+export const useRestartLatestAction = ({ workflowId, onSuccess }) => {
+ return useAction(
+ `/workflow/${workflowId}/restart?useLatestDefinitions=true`,
+ "post",
+ { onSuccess }
+ );
+};
+
+export const useRetryAction = ({ workflowId, onSuccess }) => {
+ return useAction(
+ `/workflow/${workflowId}/retry?resumeSubworkflowTasks=false`,
+ "post",
+ { onSuccess }
+ );
+};
+
+export const useRetryResumeSubworkflowTasksAction = ({
+ workflowId,
+ onSuccess,
+}) => {
+ return useAction(
+ `/workflow/${workflowId}/retry?resumeSubworkflowTasks=true`,
+ "post",
+ { onSuccess }
+ );
+};
+
+export const useTerminateAction = ({ workflowId, onSuccess }) => {
+ return useAction(`/workflow/${workflowId}`, "delete", { onSuccess });
+};
+export const useResumeAction = ({ workflowId, onSuccess }) => {
+ return useAction(`/workflow/${workflowId}/resume`, "put", { onSuccess });
+};
+
+export const usePauseAction = ({ workflowId, onSuccess }) => {
+ return useAction(`/workflow/${workflowId}/pause`, "put", { onSuccess });
+};
diff --git a/ui/src/data/bulkactions.js b/ui/src/data/bulkactions.js
new file mode 100644
index 0000000000..c8c9a6853a
--- /dev/null
+++ b/ui/src/data/bulkactions.js
@@ -0,0 +1,27 @@
+import { useAction } from "./common";
+
+export const useBulkPauseAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/pause", "put", { onSuccess });
+};
+
+export const useBulkResumeAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/resume", "put", { onSuccess });
+};
+
+export const useBulkRestartAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/restart", "post", { onSuccess });
+};
+
+export const useBulkRestartLatestAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/restart?useLatestDefinitions=true", "post", {
+ onSuccess,
+ });
+};
+
+export const useBulkRetryAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/retry", "post", { onSuccess });
+};
+
+export const useBulkTerminateAction = ({ onSuccess }) => {
+ return useAction("/workflow/bulk/terminate", "post", { onSuccess });
+};
diff --git a/ui/src/data/common.js b/ui/src/data/common.js
new file mode 100644
index 0000000000..b628e4c657
--- /dev/null
+++ b/ui/src/data/common.js
@@ -0,0 +1,37 @@
+import _ from "lodash";
+import { useQuery, useMutation } from "react-query";
+import { useFetchContext, fetchWithContext } from "../plugins/fetch";
+
+export function useFetch(path, reactQueryOptions, defaultResponse) {
+ const fetchContext = useFetchContext();
+ return useQuery(
+ [fetchContext.stack, path],
+ () => {
+ if (path) {
+ return fetchWithContext(path, fetchContext);
+ } else {
+ return Promise.resolve(defaultResponse);
+ }
+ },
+ {
+ enabled: fetchContext.ready,
+ keepPreviousData: true,
+ ...reactQueryOptions,
+ }
+ );
+}
+
+export function useAction(path, method = "post", callbacks) {
+ const fetchContext = useFetchContext();
+ return useMutation(
+ (mutateParams) =>
+ fetchWithContext(path, fetchContext, {
+ method,
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: _.get(mutateParams, "body"),
+ }),
+ callbacks
+ );
+}
diff --git a/ui/src/data/misc.js b/ui/src/data/misc.js
new file mode 100644
index 0000000000..8e0975bfab
--- /dev/null
+++ b/ui/src/data/misc.js
@@ -0,0 +1,9 @@
+import { useFetch } from "./common";
+
+export const useEventHandlers = () => {
+ return useFetch("/event");
+};
+
+export const useLogs = ({ taskId }) => {
+ return useFetch(`/tasks/${taskId}/log`);
+};
diff --git a/ui/src/data/task.js b/ui/src/data/task.js
new file mode 100644
index 0000000000..8a6c9f4912
--- /dev/null
+++ b/ui/src/data/task.js
@@ -0,0 +1,120 @@
+import _ from "lodash";
+import { useMemo } from "react";
+import {
+ useQuery,
+ useInfiniteQuery,
+ useQueryClient,
+ useMutation,
+} from "react-query";
+import qs from "qs";
+import { useFetchContext, fetchWithContext } from "../plugins/fetch";
+import { useFetch } from "./common";
+const STALE_TIME_DROPDOWN = 600000; // 10 mins
+
+export function useTask(taskName, defaultTask) {
+ let path;
+ if (taskName) {
+ path = `/metadata/taskdefs/${taskName}`;
+ }
+ return useFetch(path, {}, defaultTask);
+}
+
+export function useTaskSearch({ searchReady, ...searchObj }) {
+ const fetchContext = useFetchContext();
+ const queryClient = useQueryClient();
+
+ const pathRoot = "/workflow/search-by-tasks?";
+ const key = [fetchContext.stack, pathRoot, searchObj];
+
+ return {
+ ...useInfiniteQuery(
+ key,
+ ({ pageParam = 0 }) => {
+ const { rowsPerPage, sort, freeText, query } = searchObj;
+
+ if (!searchReady) {
+ console.log("blank query - returning empty result.");
+ return Promise.resolve({ results: [] });
+ }
+
+ const path =
+ pathRoot +
+ qs.stringify({
+ start: rowsPerPage * pageParam,
+ size: rowsPerPage,
+ sort: sort,
+ freeText: freeText,
+ query: query,
+ });
+ return fetchWithContext(path, fetchContext);
+ },
+ {
+ getNextPageParam: (lastPage, pages) => pages.length,
+ }
+ ),
+ refetch: () => {
+ queryClient.refetchQueries(key);
+ },
+ };
+}
+
+export function useTaskQueueInfo(taskName) {
+ const fetchContext = useFetchContext();
+
+ const pollDataPath = `/tasks/queue/polldata?taskType=${taskName}`;
+ const sizePath = `/tasks/queue/sizes?taskType=${taskName}`;
+
+ const { data: pollData, isFetching: pollDataFetching } = useQuery(
+ [fetchContext.stack, pollDataPath],
+ () => fetchWithContext(pollDataPath, fetchContext),
+ {
+ enabled: fetchContext.ready && !_.isEmpty(taskName),
+ }
+ );
+ const { data: size, isFetching: sizeFetching } = useQuery(
+ [fetchContext.stack, sizePath],
+ () => fetchWithContext(sizePath, fetchContext),
+ {
+ enabled: fetchContext.ready && !_.isEmpty(taskName),
+ }
+ );
+
+ const taskQueueInfo = useMemo(
+ () => ({ size: _.get(size, [taskName]), pollData: pollData }),
+ [taskName, pollData, size]
+ );
+
+ return {
+ data: taskQueueInfo,
+ isFetching: pollDataFetching || sizeFetching,
+ };
+}
+
+export function useTaskNames() {
+ const { data } = useFetch(`/metadata/taskdefs`, {
+ staleTime: STALE_TIME_DROPDOWN,
+ });
+ return useMemo(
+ () => (data ? Array.from(new Set(data.map((def) => def.name))).sort() : []),
+ [data]
+ );
+}
+
+export function useTaskDefs() {
+ return useFetch("/metadata/taskdefs");
+}
+
+export function useSaveTask(callbacks) {
+ const path = "/metadata/taskdefs";
+ const fetchContext = useFetchContext();
+
+ return useMutation(({ body, isNew }) => {
+ return fetchWithContext(path, fetchContext, {
+ method: isNew ? "post" : "put",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(isNew ? [body] : body), // Note: application of [] is opposite of workflow
+ });
+ }, callbacks);
+}
diff --git a/ui/src/data/workflow.js b/ui/src/data/workflow.js
new file mode 100644
index 0000000000..3aeffe2f3d
--- /dev/null
+++ b/ui/src/data/workflow.js
@@ -0,0 +1,137 @@
+import { useMemo } from "react";
+import { useQuery, useMutation } from "react-query";
+import qs from "qs";
+import { useFetchContext, fetchWithContext } from "../plugins/fetch";
+import { useFetch } from "./common";
+
+const STALE_TIME_WORKFLOW_DEFS = 600000; // 10 mins
+const STALE_TIME_SEARCH = 60000; // 1 min
+
+export function useWorkflowSearch(searchObj) {
+ const fetchContext = useFetchContext();
+ const pathRoot = "/workflow/search?";
+
+ return useQuery(
+ [fetchContext.stack, pathRoot, searchObj],
+ () => {
+ const { rowsPerPage, page, sort, freeText, query } = searchObj;
+ const path =
+ pathRoot +
+ qs.stringify({
+ start: (page - 1) * rowsPerPage,
+ size: rowsPerPage,
+ sort: sort,
+ freeText: freeText,
+ query: query,
+ });
+ return fetchWithContext(path, fetchContext);
+ // staletime to ensure stable view when paginating back and forth (even if underlying results change)
+ },
+ {
+ enabled: fetchContext.ready,
+ keepPreviousData: true,
+ staleTime: STALE_TIME_SEARCH,
+ }
+ );
+}
+
+export function useWorkflow(workflowId) {
+ return useFetch(`/workflow/${workflowId}`);
+}
+
+export function useWorkflowDef(workflowName, version, defaultWorkflow) {
+ let path;
+ if (workflowName) {
+ path = `/metadata/workflow/${workflowName}`;
+ if (version) path += `?version=${version}`;
+ }
+ return useFetch(path, {}, defaultWorkflow);
+}
+
+export function useWorkflowDefs() {
+ const { data, ...rest } = useFetch("/metadata/workflow", {
+ staleTime: STALE_TIME_WORKFLOW_DEFS,
+ });
+
+ // Filter latest versions only
+ const workflows = useMemo(() => {
+ if (data) {
+ const unique = new Map();
+ const types = new Set();
+ for (let workflowDef of data) {
+ if (!unique.has(workflowDef.name)) {
+ unique.set(workflowDef.name, workflowDef);
+ } else if (unique.get(workflowDef.name).version < workflowDef.version) {
+ unique.set(workflowDef.name, workflowDef);
+ }
+
+ for (let task of workflowDef.tasks) {
+ types.add(task.type);
+ }
+ }
+
+ return Array.from(unique.values());
+ }
+ }, [data]);
+
+ return {
+ data: workflows,
+ ...rest,
+ };
+}
+
+export function useSaveWorkflow(callbacks) {
+ const path = "/metadata/workflow";
+ const fetchContext = useFetchContext();
+
+ return useMutation(
+ ({ body, isNew }) =>
+ fetchWithContext(path, fetchContext, {
+ method: isNew ? "post" : "put",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(isNew ? body : [body]),
+ }),
+ callbacks
+ );
+}
+
+export function useWorkflowNames() {
+ const { data } = useWorkflowDefs();
+ return useMemo(() => (data ? data.map((def) => def.name) : []), [data]);
+}
+
+// Version numbers do not necessarily start, or run contiguously from 1. Could be arbitrary integers e.g. 52335678.
+// By convention they should be monotonic (ever increasing) wrt time.
+export function useWorkflowNamesAndVersions() {
+ const { data, ...rest } = useFetch("/metadata/workflow", {
+ staleTime: STALE_TIME_WORKFLOW_DEFS,
+ });
+
+ const newData = useMemo(() => {
+ const retval = new Map();
+ if (data) {
+ for (let def of data) {
+ let arr;
+ if (!retval.has(def.name)) {
+ arr = [];
+ retval.set(def.name, arr);
+ } else {
+ arr = retval.get(def.name);
+ }
+ arr.push({
+ version: def.version,
+ createTime: def.createTime,
+ updateTime: def.updateTime,
+ });
+ }
+
+ // Sort arrays in place
+ retval.forEach((val) => val.sort());
+ }
+ return retval;
+ }, [data]);
+
+ return { ...rest, data: newData };
+}
diff --git a/ui/src/pages/definition/EventHandler.jsx b/ui/src/pages/definition/EventHandler.jsx
index ea3d8e9e05..8012f36a71 100644
--- a/ui/src/pages/definition/EventHandler.jsx
+++ b/ui/src/pages/definition/EventHandler.jsx
@@ -1,10 +1,10 @@
import React, { useMemo } from "react";
import { useRouteMatch } from "react-router-dom";
import sharedStyles from "../styles";
-import { useFetch } from "../../utils/query";
import { makeStyles } from "@material-ui/styles";
import { Helmet } from "react-helmet";
import { ReactJson, LinearProgress, Heading } from "../../components";
+import { useEventHandlers } from "../../data/misc";
const useStyles = makeStyles(sharedStyles);
@@ -13,7 +13,7 @@ export default function EventHandlerDefinition() {
const match = useRouteMatch();
// TODO: Need API that returns individual event handler by name.
- const { data, isFetching } = useFetch("/event");
+ const { data, isFetching } = useEventHandlers();
const eventHandler = useMemo(
() => data && data.find((row) => row.name === match.params.name),
diff --git a/ui/src/pages/definition/SaveTaskDialog.jsx b/ui/src/pages/definition/SaveTaskDialog.jsx
index 0f48fb1dff..78793ec676 100644
--- a/ui/src/pages/definition/SaveTaskDialog.jsx
+++ b/ui/src/pages/definition/SaveTaskDialog.jsx
@@ -4,7 +4,7 @@ import Alert from "@material-ui/lab/Alert";
import { Text, Button, LinearProgress, Pill } from "../../components";
import { DiffEditor } from "@monaco-editor/react";
import { makeStyles } from "@material-ui/styles";
-import { useSaveTask, useTaskNames } from "../../utils/query";
+import { useSaveTask, useTaskNames } from "../../data/task";
import _ from "lodash";
const useStyles = makeStyles({
diff --git a/ui/src/pages/definition/SaveWorkflowDialog.jsx b/ui/src/pages/definition/SaveWorkflowDialog.jsx
index b7552181e1..e576a7052b 100644
--- a/ui/src/pages/definition/SaveWorkflowDialog.jsx
+++ b/ui/src/pages/definition/SaveWorkflowDialog.jsx
@@ -10,10 +10,12 @@ import Alert from "@material-ui/lab/Alert";
import { Text, Button, LinearProgress, Pill } from "../../components";
import { DiffEditor } from "@monaco-editor/react";
import { makeStyles } from "@material-ui/styles";
-import { useSaveWorkflow } from "../../utils/query";
+import {
+ useSaveWorkflow,
+ useWorkflowNamesAndVersions,
+} from "../../data/workflow";
import _ from "lodash";
import { useEffect } from "react";
-import { useWorkflowNamesAndVersions } from "../../utils/query";
const useStyles = makeStyles({
rightButtons: {
diff --git a/ui/src/pages/definition/TaskDefinition.jsx b/ui/src/pages/definition/TaskDefinition.jsx
index 2326286c3e..df01f226b8 100644
--- a/ui/src/pages/definition/TaskDefinition.jsx
+++ b/ui/src/pages/definition/TaskDefinition.jsx
@@ -10,7 +10,7 @@ import { configureMonaco } from "../../schema/task";
import { NEW_TASK_TEMPLATE } from "../../schema/task";
import ResetConfirmationDialog from "./ResetConfirmationDialog";
import SaveTaskDialog from "./SaveTaskDialog";
-import { useTask } from "../../utils/query";
+import { useTask } from "../../data/task";
import { usePushHistory } from "../../components/NavLink";
const useStyles = makeStyles({
diff --git a/ui/src/pages/definition/WorkflowDefinition.jsx b/ui/src/pages/definition/WorkflowDefinition.jsx
index b2aaf57187..7e3812bda3 100644
--- a/ui/src/pages/definition/WorkflowDefinition.jsx
+++ b/ui/src/pages/definition/WorkflowDefinition.jsx
@@ -7,7 +7,10 @@ import { makeStyles } from "@material-ui/styles";
import { Helmet } from "react-helmet";
import _ from "lodash";
import Editor from "@monaco-editor/react";
-import { useWorkflow, useWorkflowNamesAndVersions } from "../../utils/query";
+import {
+ useWorkflowDef,
+ useWorkflowNamesAndVersions,
+} from "../../data/workflow";
import WorkflowDAG from "../../components/diagram/WorkflowDAG";
import WorkflowGraph from "../../components/diagram/WorkflowGraph";
import ResetConfirmationDialog from "./ResetConfirmationDialog";
@@ -119,7 +122,7 @@ export default function Workflow() {
data: workflowDef,
isFetching,
refetch: refetchWorkflow,
- } = useWorkflow(workflowName, workflowVersion, NEW_WORKFLOW_TEMPLATE);
+ } = useWorkflowDef(workflowName, workflowVersion, NEW_WORKFLOW_TEMPLATE);
const workflowJson = useMemo(
() => (workflowDef ? JSON.stringify(workflowDef, null, 2) : ""),
diff --git a/ui/src/pages/definitions/EventHandler.jsx b/ui/src/pages/definitions/EventHandler.jsx
index 733d3b3340..275166bf12 100644
--- a/ui/src/pages/definitions/EventHandler.jsx
+++ b/ui/src/pages/definitions/EventHandler.jsx
@@ -1,10 +1,10 @@
import React from "react";
import { NavLink, DataTable } from "../../components";
import { makeStyles } from "@material-ui/styles";
-import { useFetch } from "../../utils/query";
import Header from "./Header";
import sharedStyles from "../styles";
import { Helmet } from "react-helmet";
+import { useEventHandlers } from "../../data/misc";
const useStyles = makeStyles(sharedStyles);
@@ -23,10 +23,10 @@ const columns = [
},
];
-export default function TaskDefinitions() {
+export default function EventHandlers() {
const classes = useStyles();
- const { data: eventHandlers, isFetching } = useFetch("/event");
+ const { data: eventHandlers, isFetching } = useEventHandlers();
return (
diff --git a/ui/src/pages/definitions/Task.jsx b/ui/src/pages/definitions/Task.jsx
index 12e2bcabc4..d543dbe950 100644
--- a/ui/src/pages/definitions/Task.jsx
+++ b/ui/src/pages/definitions/Task.jsx
@@ -1,11 +1,11 @@
import React from "react";
import { NavLink, DataTable, Button } from "../../components";
import { makeStyles } from "@material-ui/styles";
-import { useFetch } from "../../utils/query";
import Header from "./Header";
import sharedStyles from "../styles";
import { Helmet } from "react-helmet";
import AddIcon from "@material-ui/icons/Add";
+import { useTaskDefs } from "../../data/task";
const useStyles = makeStyles(sharedStyles);
@@ -47,8 +47,7 @@ const columns = [
export default function TaskDefinitions() {
const classes = useStyles();
-
- const { data: tasks, isFetching } = useFetch("/metadata/taskdefs");
+ const { data: tasks, isFetching } = useTaskDefs();
return (
diff --git a/ui/src/pages/definitions/Workflow.jsx b/ui/src/pages/definitions/Workflow.jsx
index 01d875cf40..cd4d5bfad1 100644
--- a/ui/src/pages/definitions/Workflow.jsx
+++ b/ui/src/pages/definitions/Workflow.jsx
@@ -3,7 +3,7 @@ import { NavLink, DataTable, Button } from "../../components";
import { makeStyles } from "@material-ui/styles";
import _ from "lodash";
import { useQueryState } from "react-router-use-location-state";
-import { useWorkflowDefs } from "../../utils/query";
+import { useWorkflowDefs } from "../../data/workflow";
import Header from "./Header";
import sharedStyles from "../styles";
import { Helmet } from "react-helmet";
diff --git a/ui/src/pages/execution/ActionModule.jsx b/ui/src/pages/execution/ActionModule.jsx
index 01debf99f6..8de1ee27b0 100644
--- a/ui/src/pages/execution/ActionModule.jsx
+++ b/ui/src/pages/execution/ActionModule.jsx
@@ -10,7 +10,15 @@ import ReplayIcon from "@material-ui/icons/Replay";
import ResumeIcon from "@material-ui/icons/PlayArrow";
import FlareIcon from "@material-ui/icons/Flare";
-import { useAction } from "../../utils/query";
+import {
+ useRestartAction,
+ useRestartLatestAction,
+ useResumeAction,
+ useRetryResumeSubworkflowTasksAction,
+ useRetryAction,
+ useTerminateAction,
+ usePauseAction,
+} from "../../data/actions";
const useStyles = makeStyles({
menuIcon: {
@@ -22,37 +30,18 @@ export default function ActionModule({ execution, triggerReload }) {
const classes = useStyles();
const { workflowId, workflowDefinition } = execution;
- const restartAction = useAction(`/workflow/${workflowId}/restart`, "post", {
- onSuccess,
- });
- const restartLatestAction = useAction(
- `/workflow/${workflowId}/restart?useLatestDefinitions=true`,
- "post",
- { onSuccess }
- );
- const retryAction = useAction(
- `/workflow/${workflowId}/retry?resumeSubworkflowTasks=false`,
- "post",
- { onSuccess }
- );
- const retryResumeSubworkflowTasksAction = useAction(
- `/workflow/${workflowId}/retry?resumeSubworkflowTasks=true`,
- "post",
- { onSuccess }
- );
- const terminateAction = useAction(`/workflow/${workflowId}`, "delete", {
- onSuccess,
- });
- const resumeAction = useAction(`/workflow/${workflowId}/resume`, "put", {
- onSuccess,
- });
- const pauseAction = useAction(`/workflow/${workflowId}/pause`, "put", {
- onSuccess,
- });
+ const restartAction = useRestartAction({ workflowId, onSuccess });
+ const restartLatestAction = useRestartLatestAction({ workflowId, onSuccess });
+ const retryAction = useRetryAction({ workflowId, onSuccess });
+ const retryResumeSubworkflowTasksAction =
+ useRetryResumeSubworkflowTasksAction({ workflowId, onSuccess });
+ const terminateAction = useTerminateAction({ workflowId, onSuccess });
+ const resumeAction = useResumeAction({ workflowId, onSuccess });
+ const pauseAction = usePauseAction({ workflowId, onSuccess });
const { restartable } = workflowDefinition;
- function onSuccess(data, variables, context) {
+ function onSuccess() {
triggerReload();
}
diff --git a/ui/src/pages/execution/Execution.jsx b/ui/src/pages/execution/Execution.jsx
index 8efa345731..1fac590761 100644
--- a/ui/src/pages/execution/Execution.jsx
+++ b/ui/src/pages/execution/Execution.jsx
@@ -25,10 +25,10 @@ import FullscreenExitIcon from "@material-ui/icons/FullscreenExit";
import RightPanel from "./RightPanel";
import WorkflowDAG from "../../components/diagram/WorkflowDAG";
import StatusBadge from "../../components/StatusBadge";
-import { useFetch } from "../../utils/query";
import { Helmet } from "react-helmet";
import sharedStyles from "../styles";
import rison from "rison";
+import { useWorkflow } from "../../data/workflow";
const maxWindowWidth = window.innerWidth;
const INIT_DRAWER_WIDTH = 650;
@@ -119,8 +119,12 @@ const useStyles = makeStyles({
export default function Execution() {
const match = useRouteMatch();
- const url = `/workflow/${match.params.id}`;
- const { data: execution, isFetching, refetch: refresh } = useFetch(url);
+
+ const {
+ data: execution,
+ isFetching,
+ refetch: refresh,
+ } = useWorkflow(match.params.id);
const [isFullWidth, setIsFullWidth] = useState(false);
const [isResizing, setIsResizing] = useState(false);
diff --git a/ui/src/pages/execution/RightPanel.jsx b/ui/src/pages/execution/RightPanel.jsx
index eb5be8bbb4..b952e0cec6 100644
--- a/ui/src/pages/execution/RightPanel.jsx
+++ b/ui/src/pages/execution/RightPanel.jsx
@@ -43,7 +43,6 @@ export default function RightPanel({ selectedTask, dag, onTaskChange }) {
if (node.taskResults.length > 1) {
retryOptions = node.taskResults;
}
- console.log(retryOptions);
if (taskId) {
taskResult = node.taskResults.find((task) => task.taskId === taskId);
diff --git a/ui/src/pages/execution/TaskLogs.jsx b/ui/src/pages/execution/TaskLogs.jsx
index 669ec57461..ecf8178246 100644
--- a/ui/src/pages/execution/TaskLogs.jsx
+++ b/ui/src/pages/execution/TaskLogs.jsx
@@ -1,10 +1,10 @@
import React from "react";
-import { useFetch } from "../../utils/query";
+import { useLogs } from "../../data/misc";
import { DataTable, Text, LinearProgress } from "../../components";
export default function TaskLogs({ task }) {
const { taskId } = task;
- const { data: log, isFetching } = useFetch(`/tasks/${taskId}/log`);
+ const { data: log, isFetching } = useLogs({ taskId });
if (isFetching) {
return
;
diff --git a/ui/src/pages/executions/BulkActionModule.jsx b/ui/src/pages/executions/BulkActionModule.jsx
index 4fc44ed980..16791ac647 100644
--- a/ui/src/pages/executions/BulkActionModule.jsx
+++ b/ui/src/pages/executions/BulkActionModule.jsx
@@ -6,7 +6,6 @@ import {
DialogTitle,
} from "@material-ui/core";
import { makeStyles } from "@material-ui/styles";
-import { useAction } from "../../utils/query";
import {
DataTable,
DropdownButton,
@@ -14,6 +13,13 @@ import {
PrimaryButton,
Heading,
} from "../../components";
+import {
+ useBulkRestartAction,
+ useBulkRestartLatestAction,
+ useBulkResumeAction,
+ useBulkTerminateAction,
+ useBulkPauseAction,
+} from "../../data/bulkactions";
const useStyles = makeStyles({
actionBar: {
@@ -33,32 +39,20 @@ export default function BulkActionModule({ selectedRows }) {
const [results, setResults] = useState();
const classes = useStyles();
- const { mutate: pauseAction, isLoading: pauseLoading } = useAction(
- `/workflow/bulk/pause`,
- "put",
- { onSuccess }
- );
- const { mutate: resumeAction, isLoading: resumeLoading } = useAction(
- `/workflow/bulk/resume`,
- "put",
- { onSuccess }
- );
+ const { mutate: pauseAction, isLoading: pauseLoading } = useBulkPauseAction({
+ onSuccess,
+ });
+ const { mutate: resumeAction, isLoading: resumeLoading } =
+ useBulkResumeAction({ onSuccess });
const { mutate: restartCurrentAction, isLoading: restartCurrentLoading } =
- useAction(`/workflow/bulk/restart`, "post", { onSuccess });
+ useBulkRestartAction({ onSuccess });
const { mutate: restartLatestAction, isLoading: restartLatestLoading } =
- useAction(`/workflow/bulk/restart?useLatestDefinitions=true`, "post", {
- onSuccess,
- });
- const { mutate: retryAction, isLoading: retryLoading } = useAction(
- `/workflow/bulk/retry`,
- "post",
- { onSuccess }
- );
- const { mutate: terminateAction, isLoading: terminateLoading } = useAction(
- `/workflow/bulk/terminate`,
- "post",
- { onSuccess }
- );
+ useBulkRestartLatestAction({ onSuccess });
+ const { mutate: retryAction, isLoading: retryLoading } = useBulkResumeAction({
+ onSuccess,
+ });
+ const { mutate: terminateAction, isLoading: terminateLoading } =
+ useBulkTerminateAction({ onSuccess });
const isLoading =
pauseLoading ||
diff --git a/ui/src/pages/executions/TaskSearch.jsx b/ui/src/pages/executions/TaskSearch.jsx
index b7b4f637a6..4e423aafcd 100644
--- a/ui/src/pages/executions/TaskSearch.jsx
+++ b/ui/src/pages/executions/TaskSearch.jsx
@@ -9,12 +9,8 @@ import {
Input,
} from "../../components";
-import {
- useTaskSearch,
- useTaskNames,
- useWorkflowNames,
-} from "../../utils/query";
-
+import { useTaskSearch, useTaskNames } from "../../data/task";
+import { useWorkflowNames } from "../../data/workflow";
import DateRangePicker from "../../components/DateRangePicker";
import { useQueryState } from "react-router-use-location-state";
import SearchTabs from "./SearchTabs";
diff --git a/ui/src/pages/executions/WorkflowSearch.jsx b/ui/src/pages/executions/WorkflowSearch.jsx
index 4ce1fd3fb3..f89c25edd3 100644
--- a/ui/src/pages/executions/WorkflowSearch.jsx
+++ b/ui/src/pages/executions/WorkflowSearch.jsx
@@ -15,7 +15,7 @@ import SearchTabs from "./SearchTabs";
import ResultsTable from "./ResultsTable";
import DateRangePicker from "../../components/DateRangePicker";
import { DEFAULT_ROWS_PER_PAGE } from "../../components/DataTable";
-import { useWorkflowSearch, useWorkflowNames } from "../../utils/query";
+import { useWorkflowSearch, useWorkflowNames } from "../../data/workflow";
import { makeStyles } from "@material-ui/styles";
import clsx from "clsx";
@@ -48,6 +48,7 @@ export default function WorkflowPanel() {
);
const [sort, setSort] = useQueryState("sort", DEFAULT_SORT);
const [queryFT, setQueryFT] = useState(buildQuery);
+
const {
data: resultObj,
error,
diff --git a/ui/src/pages/misc/TaskQueue.jsx b/ui/src/pages/misc/TaskQueue.jsx
index a8a9f2e538..5bf770884d 100644
--- a/ui/src/pages/misc/TaskQueue.jsx
+++ b/ui/src/pages/misc/TaskQueue.jsx
@@ -1,10 +1,9 @@
import React from "react";
import { useRouteMatch } from "react-router-dom";
import sharedStyles from "../styles";
-import { useTaskQueueInfo } from "../../utils/query";
+import { useTaskQueueInfo, useTaskNames } from "../../data/task";
import { makeStyles } from "@material-ui/styles";
import { Helmet } from "react-helmet";
-import { useTaskNames } from "../../utils/query";
import { usePushHistory } from "../../components/NavLink";
import {
diff --git a/ui/src/setupProxy.js b/ui/src/setupProxy.js
index 6ae5e79a43..a7c1ff10c1 100644
--- a/ui/src/setupProxy.js
+++ b/ui/src/setupProxy.js
@@ -6,7 +6,7 @@ module.exports = function (app) {
"/api",
createProxyMiddleware({
target: target,
- pathRewrite: { '^/api/': '/'},
+ pathRewrite: { "^/api/": "/" },
changeOrigin: true,
})
);
diff --git a/ui/yarn.lock b/ui/yarn.lock
index bcb45f5325..c127f74018 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -2,6 +2,13 @@
# yarn lockfile v1
+"@ampproject/remapping@^2.1.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
+ integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
"@babel/code-frame@7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
@@ -23,10 +30,10 @@
dependencies:
"@babel/highlight" "^7.16.7"
-"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60"
- integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2"
+ integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==
"@babel/core@7.12.3":
version "7.12.3"
@@ -51,32 +58,32 @@
source-map "^0.5.0"
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
- integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
+ integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
dependencies:
+ "@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.16.7"
- "@babel/helper-compilation-targets" "^7.16.7"
- "@babel/helper-module-transforms" "^7.16.7"
- "@babel/helpers" "^7.16.7"
- "@babel/parser" "^7.16.7"
+ "@babel/generator" "^7.17.7"
+ "@babel/helper-compilation-targets" "^7.17.7"
+ "@babel/helper-module-transforms" "^7.17.7"
+ "@babel/helpers" "^7.17.8"
+ "@babel/parser" "^7.17.8"
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.1.2"
semver "^6.3.0"
- source-map "^0.5.0"
-"@babel/generator@^7.12.1", "@babel/generator@^7.16.7", "@babel/generator@^7.16.8":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe"
- integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==
+"@babel/generator@^7.12.1", "@babel/generator@^7.17.3", "@babel/generator@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad"
+ integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==
dependencies:
- "@babel/types" "^7.16.8"
+ "@babel/types" "^7.17.0"
jsesc "^2.5.1"
source-map "^0.5.0"
@@ -95,20 +102,20 @@
"@babel/helper-explode-assignable-expression" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
- integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46"
+ integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==
dependencies:
- "@babel/compat-data" "^7.16.4"
+ "@babel/compat-data" "^7.17.7"
"@babel/helper-validator-option" "^7.16.7"
browserslist "^4.17.5"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba"
- integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==
+"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6":
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9"
+ integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7"
@@ -119,17 +126,17 @@
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-regexp-features-plugin@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
- integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1"
+ integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
- regexpu-core "^4.7.1"
+ regexpu-core "^5.0.1"
-"@babel/helper-define-polyfill-provider@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971"
- integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
dependencies:
"@babel/helper-compilation-targets" "^7.13.0"
"@babel/helper-module-imports" "^7.12.13"
@@ -178,11 +185,11 @@
"@babel/types" "^7.16.7"
"@babel/helper-member-expression-to-functions@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
- integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4"
+ integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.17.0"
"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7":
version "7.16.7"
@@ -191,19 +198,19 @@
dependencies:
"@babel/types" "^7.16.7"
-"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
- integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
+"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd"
+ integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==
dependencies:
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-module-imports" "^7.16.7"
- "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-simple-access" "^7.17.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-validator-identifier" "^7.16.7"
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
"@babel/helper-optimise-call-expression@^7.16.7":
version "7.16.7"
@@ -237,12 +244,12 @@
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/helper-simple-access@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
- integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+"@babel/helper-simple-access@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367"
+ integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.17.0"
"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
version "7.16.0"
@@ -278,28 +285,28 @@
"@babel/traverse" "^7.16.8"
"@babel/types" "^7.16.8"
-"@babel/helpers@^7.12.1", "@babel/helpers@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
- integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
+"@babel/helpers@^7.12.1", "@babel/helpers@^7.17.8":
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106"
+ integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==
dependencies:
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
- integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
+ integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
dependencies:
"@babel/helper-validator-identifier" "^7.16.7"
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.7.0":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17"
- integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0":
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240"
+ integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
version "7.16.7"
@@ -335,22 +342,24 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-proposal-class-static-block@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
- integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c"
+ integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.17.6"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
"@babel/plugin-proposal-decorators@^7.16.4":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz#922907d2e3e327f5b07d2246bcfc0bd438f360d2"
- integrity sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00"
+ integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.17.6"
"@babel/helper-plugin-utils" "^7.16.7"
- "@babel/plugin-syntax-decorators" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/plugin-syntax-decorators" "^7.17.0"
+ charcodes "^0.2.0"
"@babel/plugin-proposal-dynamic-import@^7.16.7":
version "7.16.7"
@@ -401,11 +410,11 @@
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
"@babel/plugin-proposal-object-rest-spread@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
- integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390"
+ integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==
dependencies:
- "@babel/compat-data" "^7.16.4"
+ "@babel/compat-data" "^7.17.0"
"@babel/helper-compilation-targets" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
@@ -428,12 +437,12 @@
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
-"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0"
- integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==
+"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.11":
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50"
+ integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.10"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-proposal-private-property-in-object@^7.16.7":
@@ -482,10 +491,10 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3"
- integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==
+"@babel/plugin-syntax-decorators@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d"
+ integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -646,9 +655,9 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-destructuring@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
- integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1"
+ integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -723,22 +732,22 @@
babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-commonjs@^7.16.8":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
- integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19"
+ integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==
dependencies:
- "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.17.7"
"@babel/helper-plugin-utils" "^7.16.7"
- "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-simple-access" "^7.17.7"
babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-systemjs@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
- integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859"
+ integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==
dependencies:
"@babel/helper-hoist-variables" "^7.16.7"
- "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.17.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-validator-identifier" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3"
@@ -788,9 +797,9 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-react-constant-elements@^7.12.1":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62"
- integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ==
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a"
+ integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -809,15 +818,15 @@
"@babel/plugin-transform-react-jsx" "^7.16.7"
"@babel/plugin-transform-react-jsx@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4"
- integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
+ integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-module-imports" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-jsx" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.17.0"
"@babel/plugin-transform-react-pure-annotations@^7.16.7":
version "7.16.7"
@@ -842,9 +851,9 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-runtime@^7.16.4":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz#3339368701103edae708f0fba9e4bfb70a3e5872"
- integrity sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70"
+ integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==
dependencies:
"@babel/helper-module-imports" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
@@ -914,9 +923,9 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.8.4":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.8.tgz#e682fa0bcd1cf49621d64a8956318ddfb9a05af9"
- integrity sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982"
+ integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==
dependencies:
"@babel/compat-data" "^7.16.8"
"@babel/helper-compilation-targets" "^7.16.7"
@@ -936,7 +945,7 @@
"@babel/plugin-proposal-object-rest-spread" "^7.16.7"
"@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
"@babel/plugin-proposal-optional-chaining" "^7.16.7"
- "@babel/plugin-proposal-private-methods" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.11"
"@babel/plugin-proposal-private-property-in-object" "^7.16.7"
"@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
"@babel/plugin-syntax-async-generators" "^7.8.4"
@@ -1026,24 +1035,17 @@
"@babel/plugin-transform-typescript" "^7.16.7"
"@babel/runtime-corejs3@^7.10.2":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7"
- integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284"
+ integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==
dependencies:
core-js-pure "^3.20.2"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
- integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.15.4":
- version "7.17.7"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825"
- integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA==
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
+ version "7.17.8"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
+ integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
dependencies:
regenerator-runtime "^0.13.4"
@@ -1056,26 +1058,26 @@
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c"
- integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
+ integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
dependencies:
"@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.16.8"
+ "@babel/generator" "^7.17.3"
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7"
"@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/parser" "^7.16.8"
- "@babel/types" "^7.16.8"
+ "@babel/parser" "^7.17.3"
+ "@babel/types" "^7.17.0"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
- version "7.16.8"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1"
- integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==
+"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
dependencies:
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
@@ -1153,9 +1155,9 @@
strip-json-comments "^3.1.1"
"@gar/promisify@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
- integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
+ integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
"@hapi/address@2.x.x":
version "2.1.4"
@@ -1409,6 +1411,24 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
+ integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.11"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
+ integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
+ integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
"@material-ui/core@^4.12.3":
version "4.12.3"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.3.tgz#80d665caf0f1f034e52355c5450c0e38b099d3ca"
@@ -1492,9 +1512,9 @@
react-is "^16.8.0 || ^17.0.0"
"@monaco-editor/loader@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.2.0.tgz#373fad69973384624e3d9b60eefd786461a76acd"
- integrity sha512-cJVCG/T/KxXgzYnjKqyAgsKDbH9mGLjcXxN6AmwumBwa2rVFkwvGcUj1RJtD0ko4XqLqJxwqsN/Z/KURB5f1OQ==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.0.tgz#659fbaf1d612ea67b2a0519a18612d1c4813e444"
+ integrity sha512-N3mGq1ktC3zh7WUx3NGO+PSDdNq9Vspk/41rEmRdrCqV9vNbBTRzAOplmUpNQsi+hmTs++ERMBobMERb8Kb+3g==
dependencies:
state-local "^1.0.6"
@@ -1528,9 +1548,9 @@
fastq "^1.6.0"
"@npmcli/fs@^1.0.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951"
- integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257"
+ integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==
dependencies:
"@gar/promisify" "^1.0.1"
semver "^7.3.5"
@@ -1589,9 +1609,9 @@
integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==
"@sindresorhus/is@^4.0.0":
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.1.tgz#b88b5724283db80b507cd612caee9a1947412a20"
- integrity sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w==
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
+ integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
"@sinonjs/commons@^1.7.0":
version "1.8.3"
@@ -1726,9 +1746,9 @@
defer-to-connect "^2.0.0"
"@testing-library/dom@*", "@testing-library/dom@^8.2.0":
- version "8.11.1"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753"
- integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg==
+ version "8.11.4"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.4.tgz#dc94d830b862e7a20686b0379eefd931baf0445b"
+ integrity sha512-7vZ6ZoBEbr6bfEM89W1nzl0vHbuI0g0kRrI0hwSXH3epnuqGO3KulFLQCKfmmW+60t7e4sevAkJPASSMmnNCRw==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
@@ -1792,9 +1812,9 @@
integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
- version "7.1.18"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
- integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
+ version "7.1.19"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
+ integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@@ -1848,9 +1868,9 @@
"@types/json-schema" "*"
"@types/estree@*":
- version "0.0.50"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
- integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
+ version "0.0.51"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
+ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
"@types/estree@0.0.39":
version "0.0.39"
@@ -1887,7 +1907,7 @@
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
-"@types/http-proxy@^1.17.5":
+"@types/http-proxy@^1.17.8":
version "1.17.8"
resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55"
integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==
@@ -1922,9 +1942,9 @@
"@types/istanbul-lib-report" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
- version "7.0.9"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
- integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+ version "7.0.10"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23"
+ integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==
"@types/json5@^0.0.29":
version "0.0.29"
@@ -1932,16 +1952,16 @@
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
"@types/keyv@*":
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41"
- integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
+ integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
dependencies:
"@types/node" "*"
"@types/lodash@^4.14.175":
- version "4.14.179"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.179.tgz#490ec3288088c91295780237d2497a3aa9dfb5c5"
- integrity sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==
+ version "4.14.180"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.180.tgz#4ab7c9ddfc92ec4a887886483bc14c79fb380670"
+ integrity sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==
"@types/minimatch@*":
version "3.0.5"
@@ -1949,9 +1969,9 @@
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
- version "17.0.8"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b"
- integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==
+ version "17.0.23"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
+ integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -1964,9 +1984,9 @@
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/prettier@^2.0.0":
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.3.tgz#a3c65525b91fca7da00ab1a3ac2b5a2a4afbffbf"
- integrity sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17"
+ integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==
"@types/prop-types@*":
version "15.7.4"
@@ -1979,9 +1999,9 @@
integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
"@types/react-dom@*":
- version "17.0.11"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466"
- integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==
+ version "17.0.14"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
+ integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
dependencies:
"@types/react" "*"
@@ -1993,9 +2013,9 @@
"@types/react" "*"
"@types/react@*":
- version "17.0.38"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd"
- integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==
+ version "17.0.42"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.42.tgz#8242b9219bf8a911c47f248e327206fea3f4ee5a"
+ integrity sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -2109,9 +2129,9 @@
source-map "^0.6.0"
"@types/yargs-parser@*":
- version "20.2.1"
- resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
- integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
+ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
"@types/yargs@^13.0.0":
version "13.0.12"
@@ -2564,13 +2584,13 @@ abab@^2.0.3, abab@^2.0.5:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
-accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
acorn-globals@^6.0.0:
version "6.0.0"
@@ -2600,7 +2620,7 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.2.4:
+acorn@^8.2.4, acorn@^8.5.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
@@ -2654,9 +2674,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
uri-js "^4.2.2"
ajv@^8.0.1:
- version "8.8.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb"
- integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
+ integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -2711,9 +2731,9 @@ ansi-regex@^3.0.0:
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
ansi-regex@^4.0.0, ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
ansi-regex@^5.0.0, ansi-regex@^5.0.1:
version "5.0.1"
@@ -3016,9 +3036,9 @@ aws4@^1.8.0:
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
axe-core@^4.3.5:
- version "4.3.5"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5"
- integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
+ integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==
axobject-query@^2.2.0:
version "2.2.0"
@@ -3112,38 +3132,39 @@ babel-plugin-named-asset-import@^0.3.7:
integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==
babel-plugin-polyfill-corejs2@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd"
- integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
dependencies:
"@babel/compat-data" "^7.13.11"
- "@babel/helper-define-polyfill-provider" "^0.3.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
semver "^6.1.1"
babel-plugin-polyfill-corejs3@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.0.tgz#f81371be3fe499d39e074e272a1ef86533f3d268"
- integrity sha512-Hcrgnmkf+4JTj73GbK3bBhlVPiLL47owUAnoJIf69Hakl3q+KfodbDXiZWGMM7iqCZTxCG3Z2VRfPNYES4rXqQ==
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
+ integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.0"
- core-js-compat "^3.20.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.21.0"
babel-plugin-polyfill-regenerator@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be"
- integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
"babel-plugin-styled-components@>= 1.12.0":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54"
- integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.6.tgz#6f76c7f7224b7af7edc24a4910351948c691fc90"
+ integrity sha512-Sk+7o/oa2HfHv3Eh8sxoz75/fFvEdHsXV4grdeHufX0nauCmymlnN0rGhIvfpMQSJMvGutJ85gvCGea4iqmDpg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.0"
"@babel/helper-module-imports" "^7.16.0"
babel-plugin-syntax-jsx "^6.18.0"
lodash "^4.17.11"
+ picomatch "^2.3.0"
babel-plugin-syntax-jsx@^6.18.0:
version "6.18.0"
@@ -3325,20 +3346,20 @@ bn.js@^5.0.0, bn.js@^5.1.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
-body-parser@1.19.1:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4"
- integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==
+body-parser@1.19.2:
+ version "1.19.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
+ integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==
dependencies:
- bytes "3.1.1"
+ bytes "3.1.2"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.2"
http-errors "1.8.1"
iconv-lite "0.4.24"
on-finished "~2.3.0"
- qs "6.9.6"
- raw-body "2.4.2"
+ qs "6.9.7"
+ raw-body "2.4.3"
type-is "~1.6.18"
bonjour@^3.5.0:
@@ -3490,14 +3511,14 @@ browserslist@4.14.2:
node-releases "^1.1.61"
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.2, browserslist@^4.6.4:
- version "4.19.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
- integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
+ version "4.20.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88"
+ integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==
dependencies:
- caniuse-lite "^1.0.30001286"
- electron-to-chromium "^1.4.17"
+ caniuse-lite "^1.0.30001317"
+ electron-to-chromium "^1.4.84"
escalade "^3.1.1"
- node-releases "^2.0.1"
+ node-releases "^2.0.2"
picocolors "^1.0.0"
bser@2.1.1:
@@ -3559,10 +3580,10 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-bytes@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a"
- integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
cac@^3.0.3:
version "3.0.4"
@@ -3733,10 +3754,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001286:
- version "1.0.30001299"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz#d753bf6444ed401eb503cbbe17aa3e1451b5a68c"
- integrity sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001317:
+ version "1.0.30001319"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f"
+ integrity sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==
capture-exit@^2.0.0:
version "2.0.0"
@@ -3783,7 +3804,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0, chalk@^4.1.0:
+chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -3796,6 +3817,11 @@ char-regex@^1.0.2:
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
+charcodes@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4"
+ integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==
+
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -3806,7 +3832,7 @@ check-types@^11.1.1:
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
-"chokidar@>=3.0.0 <4.0.0":
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.4.1:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -3840,21 +3866,6 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chokidar@^3.0.0, chokidar@^3.4.1:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
- integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
@@ -4176,10 +4187,10 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-cookie@0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
- integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+cookie@0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
copy-concurrently@^1.0.0:
version "1.0.5"
@@ -4198,18 +4209,18 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-core-js-compat@^3.20.0, core-js-compat@^3.20.2:
- version "3.20.2"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b"
- integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==
+core-js-compat@^3.20.2, core-js-compat@^3.21.0:
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82"
+ integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==
dependencies:
browserslist "^4.19.1"
semver "7.0.0"
core-js-pure@^3.20.2:
- version "3.20.2"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f"
- integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51"
+ integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==
core-js@^2.4.0:
version "2.6.12"
@@ -4217,9 +4228,9 @@ core-js@^2.4.0:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.6.5:
- version "3.20.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581"
- integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw==
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94"
+ integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==
core-util-is@1.0.2:
version "1.0.2"
@@ -4613,14 +4624,14 @@ cssstyle@^2.3.0:
cssom "~0.3.6"
csstype@^2.5.2:
- version "2.6.19"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa"
- integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==
+ version "2.6.20"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
+ integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
csstype@^3.0.2:
- version "3.0.10"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
- integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
+ integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
cyclist@^1.0.1:
version "1.0.1"
@@ -5191,13 +5202,13 @@ debug@3.2.6:
ms "^2.1.1"
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
- version "4.3.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
- integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
-debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
+debug@^3.1.1, debug@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
@@ -5442,9 +5453,9 @@ dom-accessibility-api@^0.3.0:
integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==
dom-accessibility-api@^0.5.9:
- version "0.5.10"
- resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c"
- integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g==
+ version "0.5.13"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b"
+ integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==
dom-converter@^0.2.0:
version "0.2.0"
@@ -5501,9 +5512,9 @@ domexception@^2.0.1:
webidl-conversions "^5.0.0"
domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
- integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
dependencies:
domelementtype "^2.2.0"
@@ -5598,10 +5609,10 @@ ejs@^3.0.1:
dependencies:
jake "^10.6.1"
-electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.17:
- version "1.4.46"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz#c88a6fedc766589826db0481602a888864ade1ca"
- integrity sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ==
+electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.84:
+ version "1.4.92"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz#88996e9aceb3a500710fd439abfa89b6cc1ac56c"
+ integrity sha512-YAVbvQIcDE/IJ/vzDMjD484/hsRbFPW2qXJPaYTfOhtligmfYEYOep+5QojpaEU9kq6bMvNeC2aG7arYvTHYsA==
elliptic@^6.5.3:
version "6.5.4"
@@ -5694,9 +5705,9 @@ error-ex@^1.2.0, error-ex@^1.3.1:
is-arrayish "^0.2.1"
error-stack-parser@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
- integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57"
+ integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==
dependencies:
stackframe "^1.1.1"
@@ -5736,15 +5747,15 @@ es-to-primitive@^1.2.1:
is-symbol "^1.0.2"
es5-ext@^0.10.35, es5-ext@^0.10.50:
- version "0.10.53"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
- integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
+ version "0.10.59"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.59.tgz#71038939730eb6f4f165f1421308fb60be363bc6"
+ integrity sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==
dependencies:
- es6-iterator "~2.0.3"
- es6-symbol "~3.1.3"
- next-tick "~1.0.0"
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.3"
+ next-tick "^1.1.0"
-es6-iterator@2.0.3, es6-iterator@~2.0.3:
+es6-iterator@2.0.3, es6-iterator@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
@@ -5753,7 +5764,7 @@ es6-iterator@2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-symbol@^3.1.1, es6-symbol@~3.1.3:
+es6-symbol@^3.1.1, es6-symbol@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
@@ -5814,9 +5825,9 @@ eslint-import-resolver-node@^0.3.6:
resolve "^1.20.0"
eslint-module-utils@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
- integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee"
+ integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==
dependencies:
debug "^3.2.7"
find-up "^2.1.0"
@@ -5879,21 +5890,21 @@ eslint-plugin-react-hooks@^4.2.0:
integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==
eslint-plugin-react@^7.21.5:
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf"
- integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==
+ version "7.29.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2"
+ integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==
dependencies:
array-includes "^3.1.4"
array.prototype.flatmap "^1.2.5"
doctrine "^2.1.0"
estraverse "^5.3.0"
jsx-ast-utils "^2.4.1 || ^3.0.0"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
object.entries "^1.1.5"
object.fromentries "^2.0.5"
object.hasown "^1.1.0"
object.values "^1.1.5"
- prop-types "^15.7.2"
+ prop-types "^15.8.1"
resolve "^2.0.0-next.3"
semver "^6.3.0"
string.prototype.matchall "^4.0.6"
@@ -6071,7 +6082,7 @@ events@^3.0.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-eventsource@^1.0.7:
+eventsource@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf"
integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==
@@ -6150,16 +6161,16 @@ expect@^26.6.0, expect@^26.6.2:
jest-regex-util "^26.0.0"
express@^4.17.1:
- version "4.17.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3"
- integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==
+ version "4.17.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
+ integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
dependencies:
- accepts "~1.3.7"
+ accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.19.1"
+ body-parser "1.19.2"
content-disposition "0.5.4"
content-type "~1.0.4"
- cookie "0.4.1"
+ cookie "0.4.2"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.2"
@@ -6174,7 +6185,7 @@ express@^4.17.1:
parseurl "~1.3.3"
path-to-regexp "0.1.7"
proxy-addr "~2.0.7"
- qs "6.9.6"
+ qs "6.9.7"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "0.17.2"
@@ -6283,7 +6294,7 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
-faye-websocket@^0.11.3:
+faye-websocket@^0.11.3, faye-websocket@^0.11.4:
version "0.11.4"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
@@ -6456,9 +6467,9 @@ flat@^4.1.0:
is-buffer "~2.0.3"
flatted@^3.1.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2"
- integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
+ integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
flatten@^1.0.2:
version "1.0.3"
@@ -6474,14 +6485,9 @@ flush-write-stream@^1.0.0:
readable-stream "^2.3.6"
follow-redirects@^1.0.0:
- version "1.14.7"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
- integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
-
-fontsource-roboto@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fontsource-roboto/-/fontsource-roboto-4.0.0.tgz#35eacd4fb8d90199053c0eec9b34a57fb79cd820"
- integrity sha512-zD6L8nvdWRcwSgp4ojxFchG+MPj8kXXQKDEAH9bfhbxy+lkpvpC1WgAK0lCa4dwobv+hvAe0uyHaawcgH7WH/g==
+ version "1.14.9"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
+ integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
for-in@^1.0.2:
version "1.0.2"
@@ -6792,9 +6798,9 @@ globals@^11.1.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.6.0, globals@^13.9.0:
- version "13.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
- integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
+ version "13.13.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b"
+ integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==
dependencies:
type-fest "^0.20.2"
@@ -6944,10 +6950,10 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
- integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has-tostringtag@^1.0.0:
version "1.0.0"
@@ -7166,9 +7172,9 @@ http-errors@~1.6.2:
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5"
- integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd"
+ integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==
http-proxy-agent@^4.0.1:
version "4.0.1"
@@ -7190,11 +7196,11 @@ http-proxy-middleware@0.19.1:
micromatch "^3.1.10"
http-proxy-middleware@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f"
- integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a"
+ integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==
dependencies:
- "@types/http-proxy" "^1.17.5"
+ "@types/http-proxy" "^1.17.8"
http-proxy "^1.18.1"
is-glob "^4.0.1"
is-plain-obj "^3.0.0"
@@ -7565,7 +7571,7 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
-is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.8.0:
+is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
@@ -7915,20 +7921,20 @@ istanbul-lib-source-maps@^4.0.0:
source-map "^0.6.1"
istanbul-reports@^3.0.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2"
- integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c"
+ integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
jake@^10.6.1:
- version "10.8.2"
- resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
- integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==
+ version "10.8.4"
+ resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a"
+ integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==
dependencies:
async "0.9.x"
- chalk "^2.4.2"
+ chalk "^4.0.2"
filelist "^1.0.1"
minimatch "^3.0.4"
@@ -8384,9 +8390,9 @@ jest-worker@^26.5.0, jest-worker@^26.6.2:
supports-color "^7.0.0"
jest-worker@^27.3.1:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e"
- integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
@@ -8520,11 +8526,6 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-json3@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
- integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
-
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
@@ -8533,11 +8534,9 @@ json5@^1.0.1:
minimist "^1.2.0"
json5@^2.1.2:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
- integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
- dependencies:
- minimist "^1.2.5"
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
jsonfile@^4.0.0:
version "4.0.0"
@@ -8659,9 +8658,9 @@ keycharm@^0.3.1:
integrity sha512-zn47Ti4FJT9zdF+YBBLWJsfKF/fYQHkrYlBeB5Ez5e2PjW7SoIxr43yehAne2HruulIoid4NKZZxO0dHBygCtQ==
keyv@^4.0.0:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.5.tgz#bb12b467aba372fab2a44d4420c00d3c4ebd484c"
- integrity sha512-531pkGLqV3BMg0eDqqJFI0R1mkK1Nm5xIP2mM6keP5P8WfFtCkg2IOwplTUmlGoTgIg9yQYZ/kdihhz89XH3vA==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a"
+ integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==
dependencies:
json-buffer "3.0.1"
@@ -9020,11 +9019,11 @@ lz-string@^1.4.4:
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
magic-string@^0.25.0, magic-string@^0.25.7:
- version "0.25.7"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
- integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
dependencies:
- sourcemap-codec "^1.4.4"
+ sourcemap-codec "^1.4.8"
make-dir@^2.0.0:
version "2.1.0"
@@ -9178,17 +9177,17 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-mime-db@1.51.0, "mime-db@>= 1.43.0 < 2":
- version "1.51.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
- integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
+mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
- version "2.1.34"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
- integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
- mime-db "1.51.0"
+ mime-db "1.52.0"
mime@1.6.0:
version "1.6.0"
@@ -9253,17 +9252,31 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2:
+minimatch@3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+minimatch@^3.0.4, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@~3.0.2:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
+ integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
minipass-collect@^1.0.2:
version "1.0.2"
@@ -9333,11 +9346,11 @@ mkdirp@0.5.4:
minimist "^1.2.5"
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
- minimist "^1.2.5"
+ minimist "^1.2.6"
mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
@@ -9450,10 +9463,10 @@ nanoid@^2.1.0:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
-nanoid@^3.1.30:
- version "3.1.32"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.32.tgz#8f96069e6239cc0a9ae8c0d3b41a3b4933a88c0a"
- integrity sha512-F8mf7R3iT9bvThBoW4tGXhXFHCctyCiUUPrWF8WaTqa3h96d9QybkSeba43XVOOE3oiLfkVDe4bT8MeGmkrTxw==
+nanoid@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
+ integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
nanomatch@^1.2.9:
version "1.2.13"
@@ -9484,20 +9497,20 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-next-tick@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
- integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
+next-tick@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
+ integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
nice-try@^1.0.4:
version "1.0.5"
@@ -9576,10 +9589,10 @@ node-releases@^1.1.61:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e"
integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==
-node-releases@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
- integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
+node-releases@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
+ integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
@@ -10181,7 +10194,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -10209,9 +10222,9 @@ pinkie@^2.0.0:
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
pirates@^4.0.1:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6"
- integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
+ integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
pkg-dir@^3.0.0:
version "3.0.0"
@@ -10856,9 +10869,9 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
uniq "^1.0.1"
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
- version "6.0.8"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914"
- integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==
+ version "6.0.9"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
+ integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -10918,13 +10931,13 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po
source-map "^0.6.1"
postcss@^8.1.0:
- version "8.4.5"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95"
- integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==
+ version "8.4.12"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
+ integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
dependencies:
- nanoid "^3.1.30"
+ nanoid "^3.3.1"
picocolors "^1.0.0"
- source-map-js "^1.0.1"
+ source-map-js "^1.0.2"
prelude-ls@^1.2.1:
version "1.2.1"
@@ -10942,9 +10955,9 @@ prepend-http@^1.0.0:
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
prettier@^2.2.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
- integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4"
+ integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==
pretty-bytes@^5.3.0:
version "5.6.0"
@@ -10990,9 +11003,9 @@ pretty-format@^26.6.0, pretty-format@^26.6.2:
react-is "^17.0.1"
pretty-format@^27.0.2:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7"
- integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
dependencies:
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
@@ -11048,7 +11061,7 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.6.2, prop-types@^15.7.2:
+prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -11149,10 +11162,10 @@ q@^1.1.2:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-qs@6.9.6:
- version "6.9.6"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
- integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==
+qs@6.9.7:
+ version "6.9.7"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
+ integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
qs@~6.5.2:
version "6.5.3"
@@ -11234,12 +11247,12 @@ range-parser@^1.2.1, range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-raw-body@2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32"
- integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==
+raw-body@2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
+ integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==
dependencies:
- bytes "3.1.1"
+ bytes "3.1.2"
http-errors "1.8.1"
iconv-lite "0.4.24"
unpipe "1.0.0"
@@ -11348,9 +11361,9 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-query@^3.19.4:
- version "3.34.8"
- resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.8.tgz#a3be8523fd95f766b04c32847a1b58d8231db03c"
- integrity sha512-pl9e2VmVbgKf29Qn/WpmFVtB2g17JPqLLyOQg3GfSs/S2WABvip5xlT464vfXtilLPcJVg9bEHHlqmC38/nvDw==
+ version "3.34.16"
+ resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.16.tgz#279ea180bcaeaec49c7864b29d1711ee9f152594"
+ integrity sha512-7FvBvjgEM4YQ8nPfmAr+lJfbW95uyW/TVjFoi2GwCkF33/S8ajx45tuPHPFGWs4qYwPy1mzwxD4IQfpUDrefNQ==
dependencies:
"@babel/runtime" "^7.5.5"
broadcast-channel "^3.4.1"
@@ -11600,10 +11613,10 @@ redent@^3.0.0:
indent-string "^4.0.0"
strip-indent "^3.0.0"
-regenerate-unicode-properties@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
- integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
+regenerate-unicode-properties@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
+ integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
dependencies:
regenerate "^1.4.2"
@@ -11642,7 +11655,7 @@ regex-parser@^2.2.11:
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58"
integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==
-regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
+regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
@@ -11655,27 +11668,27 @@ regexpp@^3.1.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
-regexpu-core@^4.7.1:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
- integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
+regexpu-core@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3"
+ integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
dependencies:
regenerate "^1.4.2"
- regenerate-unicode-properties "^9.0.0"
- regjsgen "^0.5.2"
- regjsparser "^0.7.0"
+ regenerate-unicode-properties "^10.0.1"
+ regjsgen "^0.6.0"
+ regjsparser "^0.8.2"
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.0.0"
-regjsgen@^0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
- integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+regjsgen@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d"
+ integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
-regjsparser@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
- integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
+regjsparser@^0.8.2:
+ version "0.8.4"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f"
+ integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
dependencies:
jsesc "~0.5.0"
@@ -11835,11 +11848,11 @@ resolve@1.18.1:
path-parse "^1.0.6"
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2:
- version "1.21.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
- integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
dependencies:
- is-core-module "^2.8.0"
+ is-core-module "^2.8.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -12345,9 +12358,9 @@ side-channel@^1.0.4:
object-inspect "^1.9.0"
signal-exit@^3.0.0, signal-exit@^3.0.2:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
- integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
simple-swizzle@^0.2.2:
version "0.2.2"
@@ -12406,16 +12419,15 @@ snapdragon@^0.8.1:
use "^3.1.0"
sockjs-client@^1.5.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3"
- integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.0.tgz#e0277b8974558edcb557eafc7d3027ef6128d865"
+ integrity sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==
dependencies:
- debug "^3.2.6"
- eventsource "^1.0.7"
- faye-websocket "^0.11.3"
+ debug "^3.2.7"
+ eventsource "^1.1.0"
+ faye-websocket "^0.11.4"
inherits "^2.0.4"
- json3 "^3.3.3"
- url-parse "^1.5.3"
+ url-parse "^1.5.10"
sockjs@^0.3.21:
version "0.3.24"
@@ -12438,16 +12450,11 @@ source-list-map@^2.0.0:
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-"source-map-js@>=0.6.2 <2.0.0":
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-source-map-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
- integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
-
source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
version "0.5.3"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
@@ -12487,7 +12494,7 @@ source-map@^0.7.3, source-map@~0.7.2:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-sourcemap-codec@^1.4.4:
+sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
@@ -12595,9 +12602,9 @@ stack-utils@^2.0.2:
escape-string-regexp "^2.0.0"
stackframe@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
- integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1"
+ integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==
state-local@^1.0.6:
version "1.0.7"
@@ -12699,17 +12706,17 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
strip-ansi "^6.0.1"
string.prototype.matchall@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa"
- integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
+ integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.19.1"
get-intrinsic "^1.1.1"
- has-symbols "^1.0.2"
+ has-symbols "^1.0.3"
internal-slot "^1.0.3"
- regexp.prototype.flags "^1.3.1"
+ regexp.prototype.flags "^1.4.1"
side-channel "^1.0.4"
string.prototype.trimend@^1.0.4:
@@ -13059,10 +13066,11 @@ terser@^4.1.2, terser@^4.6.2, terser@^4.6.3:
source-map-support "~0.5.12"
terser@^5.3.4:
- version "5.10.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc"
- integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==
+ version "5.12.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c"
+ integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==
dependencies:
+ acorn "^8.5.0"
commander "^2.20.0"
source-map "~0.7.2"
source-map-support "~0.5.20"
@@ -13225,13 +13233,13 @@ ts-pnp@1.2.0, ts-pnp@^1.1.6:
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
tsconfig-paths@^3.12.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
- integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
+ integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
dependencies:
"@types/json5" "^0.0.29"
json5 "^1.0.1"
- minimist "^1.2.0"
+ minimist "^1.2.6"
strip-bom "^3.0.0"
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
@@ -13326,9 +13334,9 @@ type@^1.0.1:
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
type@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d"
- integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f"
+ integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==
typedarray-to-buffer@^3.1.5:
version "3.1.5"
@@ -13478,10 +13486,10 @@ url-loader@4.1.1:
mime-types "^2.1.27"
schema-utils "^3.0.0"
-url-parse@^1.4.3, url-parse@^1.5.1, url-parse@^1.5.3:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.4.tgz#e4f645a7e2a0852cc8a66b14b292a3e9a11a97fd"
- integrity sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==
+url-parse@^1.4.3, url-parse@^1.5.1, url-parse@^1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
@@ -14174,9 +14182,9 @@ ws@^6.2.1:
async-limiter "~1.0.0"
ws@^7.4.6:
- version "7.5.6"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b"
- integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
xml-name-validator@^3.0.0:
version "3.0.0"
@@ -14194,9 +14202,9 @@ xmlchars@^2.2.0:
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
xss@^1.0.8:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.10.tgz#5cd63a9b147a755a14cb0455c7db8866120eb4d2"
- integrity sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw==
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.11.tgz#211cb82e95b5071d4c75d597283c021157ebe46a"
+ integrity sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==
dependencies:
commander "^2.20.3"
cssfilter "0.0.10"
From 0aa6af7115e21b8bba9da83b9e834582687f51f0 Mon Sep 17 00:00:00 2001
From: peterlau
Date: Wed, 23 Mar 2022 23:54:09 -0700
Subject: [PATCH 07/10] [UI] Fix event handler json display
---
ui/src/components/ReactJson.jsx | 9 ++++-----
ui/src/pages/definition/EventHandler.jsx | 21 +++++++++++++++++----
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/ui/src/components/ReactJson.jsx b/ui/src/components/ReactJson.jsx
index 5eb8f41501..a39688e8e0 100644
--- a/ui/src/components/ReactJson.jsx
+++ b/ui/src/components/ReactJson.jsx
@@ -60,11 +60,10 @@ export default function ReactJson({ className, label, src }) {
return (
- {label && (
-
- {label}
-
- )}
+
+ {label}
+
+
diff --git a/ui/src/pages/definition/EventHandler.jsx b/ui/src/pages/definition/EventHandler.jsx
index 8012f36a71..16aaad512f 100644
--- a/ui/src/pages/definition/EventHandler.jsx
+++ b/ui/src/pages/definition/EventHandler.jsx
@@ -3,10 +3,23 @@ import { useRouteMatch } from "react-router-dom";
import sharedStyles from "../styles";
import { makeStyles } from "@material-ui/styles";
import { Helmet } from "react-helmet";
-import { ReactJson, LinearProgress, Heading } from "../../components";
+import { ReactJson, LinearProgress, Heading, Paper } from "../../components";
import { useEventHandlers } from "../../data/misc";
-const useStyles = makeStyles(sharedStyles);
+const useStyles = makeStyles({
+ wrapper: {
+ display: "flex",
+ height: "100%",
+ alignItems: "stretch",
+ flexDirection: "column",
+ },
+ header: sharedStyles.header,
+ paper: {
+ flex: 1,
+ margin: 30,
+ paddingTop: 10
+ }
+});
export default function EventHandlerDefinition() {
const classes = useStyles();
@@ -32,9 +45,9 @@ export default function EventHandlerDefinition() {
{match.params.name}
{isFetching &&
}
-
+
);
}
From 9c8341eec8b14f5c80f7c0c98b69ebdc44b27ccb Mon Sep 17 00:00:00 2001
From: peterlau
Date: Thu, 24 Mar 2022 00:41:09 -0700
Subject: [PATCH 08/10] [UI] Ensure rewrite rule in setupProxy.js remains
commented out. OSS server endpoints are prefixed with /api
---
ui/src/setupProxy.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/src/setupProxy.js b/ui/src/setupProxy.js
index a7c1ff10c1..39896b4501 100644
--- a/ui/src/setupProxy.js
+++ b/ui/src/setupProxy.js
@@ -6,7 +6,7 @@ module.exports = function (app) {
"/api",
createProxyMiddleware({
target: target,
- pathRewrite: { "^/api/": "/" },
+ //pathRewrite: { "^/api/": "/" },
changeOrigin: true,
})
);
From 713ebf772821415e1ff967778c2d798a2bb930f1 Mon Sep 17 00:00:00 2001
From: peterlau
Date: Thu, 24 Mar 2022 00:44:04 -0700
Subject: [PATCH 09/10] [UI] query.js no longer needed after react-query hooks
refactor
---
ui/src/utils/query.js | 276 ------------------------------------------
1 file changed, 276 deletions(-)
delete mode 100644 ui/src/utils/query.js
diff --git a/ui/src/utils/query.js b/ui/src/utils/query.js
deleted file mode 100644
index 7ecf390d7f..0000000000
--- a/ui/src/utils/query.js
+++ /dev/null
@@ -1,276 +0,0 @@
-import _ from "lodash";
-import { useMemo } from "react";
-import {
- useQuery,
- useMutation,
- useInfiniteQuery,
- useQueryClient,
-} from "react-query";
-import qs from "qs";
-import { useFetchContext, fetchWithContext } from "../plugins/fetch";
-
-const STALE_TIME_DROPDOWN = 600000; // 10 mins
-const STALE_TIME_WORKFLOW_DEFS = 600000; // 10 mins
-const STALE_TIME_SEARCH = 60000; // 1 min
-
-export function useFetch(path, reactQueryOptions, defaultResponse) {
- const fetchContext = useFetchContext();
- return useQuery(
- [fetchContext.stack, path],
- () => {
- if (path) {
- return fetchWithContext(path, fetchContext);
- } else {
- return Promise.resolve(defaultResponse);
- }
- },
- {
- enabled: fetchContext.ready,
- keepPreviousData: true,
- ...reactQueryOptions,
- }
- );
-}
-
-export function useWorkflow(workflowName, version, defaultWorkflow) {
- let path;
- if (workflowName) {
- path = `/metadata/workflow/${workflowName}`;
- if (version) path += `?version=${version}`;
- }
- return useFetch(path, {}, defaultWorkflow);
-}
-
-export function useTask(taskName, defaultTask) {
- let path;
- if (taskName) {
- path = `/metadata/taskdefs/${taskName}`;
- }
- return useFetch(path, {}, defaultTask);
-}
-
-export function useWorkflowSearch(searchObj) {
- const fetchContext = useFetchContext();
- const pathRoot = "/workflow/search?";
-
- return useQuery(
- [fetchContext.stack, pathRoot, searchObj],
- () => {
- const { rowsPerPage, page, sort, freeText, query } = searchObj;
- const path =
- pathRoot +
- qs.stringify({
- start: (page - 1) * rowsPerPage,
- size: rowsPerPage,
- sort: sort,
- freeText: freeText,
- query: query,
- });
- return fetchWithContext(path, fetchContext);
- // staletime to ensure stable view when paginating back and forth (even if underlying results change)
- },
- {
- enabled: fetchContext.ready,
- keepPreviousData: true,
- staleTime: STALE_TIME_SEARCH,
- }
- );
-}
-
-export function useTaskSearch({ searchReady, ...searchObj }) {
- const fetchContext = useFetchContext();
- const queryClient = useQueryClient();
-
- const pathRoot = "/workflow/search-by-tasks?";
- const key = [fetchContext.stack, pathRoot, searchObj];
-
- return {
- ...useInfiniteQuery(
- key,
- ({ pageParam = 0 }) => {
- const { rowsPerPage, sort, freeText, query } = searchObj;
-
- if (!searchReady) {
- console.log("blank query - returning empty result.");
- return Promise.resolve({ results: [] });
- }
-
- const path =
- pathRoot +
- qs.stringify({
- start: rowsPerPage * pageParam,
- size: rowsPerPage,
- sort: sort,
- freeText: freeText,
- query: query,
- });
- return fetchWithContext(path, fetchContext);
- },
- {
- getNextPageParam: (lastPage, pages) => pages.length,
- }
- ),
- refetch: () => {
- queryClient.refetchQueries(key);
- },
- };
-}
-
-export function useTaskQueueInfo(taskName) {
- const fetchContext = useFetchContext();
-
- const pollDataPath = `/tasks/queue/polldata?taskType=${taskName}`;
- const sizePath = `/tasks/queue/sizes?taskType=${taskName}`;
-
- const { data: pollData, isFetching: pollDataFetching } = useQuery(
- [fetchContext.stack, pollDataPath],
- () => fetchWithContext(pollDataPath, fetchContext),
- {
- enabled: fetchContext.ready && !_.isEmpty(taskName),
- }
- );
- const { data: size, isFetching: sizeFetching } = useQuery(
- [fetchContext.stack, sizePath],
- () => fetchWithContext(sizePath, fetchContext),
- {
- enabled: fetchContext.ready && !_.isEmpty(taskName),
- }
- );
-
- const taskQueueInfo = useMemo(
- () => ({ size: _.get(size, [taskName]), pollData: pollData }),
- [taskName, pollData, size]
- );
-
- return {
- data: taskQueueInfo,
- isFetching: pollDataFetching || sizeFetching,
- };
-}
-export function useAction(path, method = "post", callbacks) {
- const fetchContext = useFetchContext();
- return useMutation(
- (mutateParams) =>
- fetchWithContext(path, fetchContext, {
- method,
- headers: {
- "Content-Type": "application/json",
- },
- body: _.get(mutateParams, "body"),
- }),
- callbacks
- );
-}
-
-export function useWorkflowDefs() {
- const { data, ...rest } = useFetch("/metadata/workflow", {
- staleTime: STALE_TIME_WORKFLOW_DEFS,
- });
-
- // Filter latest versions only
- const workflows = useMemo(() => {
- if (data) {
- const unique = new Map();
- const types = new Set();
- for (let workflowDef of data) {
- if (!unique.has(workflowDef.name)) {
- unique.set(workflowDef.name, workflowDef);
- } else if (unique.get(workflowDef.name).version < workflowDef.version) {
- unique.set(workflowDef.name, workflowDef);
- }
-
- for (let task of workflowDef.tasks) {
- types.add(task.type);
- }
- }
-
- return Array.from(unique.values());
- }
- }, [data]);
-
- return {
- data: workflows,
- ...rest,
- };
-}
-
-export function useWorkflowNames() {
- const { data } = useWorkflowDefs();
- return useMemo(() => (data ? data.map((def) => def.name) : []), [data]);
-}
-
-// Version numbers do not necessarily start, or run contiguously from 1. Could be arbitrary integers e.g. 52335678.
-// By convention they should be monotonic (ever increasing) wrt time.
-export function useWorkflowNamesAndVersions() {
- const { data, ...rest } = useFetch("/metadata/workflow", {
- staleTime: STALE_TIME_WORKFLOW_DEFS,
- });
-
- const newData = useMemo(() => {
- const retval = new Map();
- if (data) {
- for (let def of data) {
- let arr;
- if (!retval.has(def.name)) {
- arr = [];
- retval.set(def.name, arr);
- } else {
- arr = retval.get(def.name);
- }
- arr.push({
- version: def.version,
- createTime: def.createTime,
- updateTime: def.updateTime,
- });
- }
-
- // Sort arrays in place
- retval.forEach((val) => val.sort());
- }
- return retval;
- }, [data]);
-
- return { ...rest, data: newData };
-}
-
-export function useTaskNames() {
- const { data } = useFetch(`/metadata/taskdefs`, {
- staleTime: STALE_TIME_DROPDOWN,
- });
- return useMemo(
- () => (data ? Array.from(new Set(data.map((def) => def.name))).sort() : []),
- [data]
- );
-}
-
-export function useSaveWorkflow(callbacks) {
- const path = "/metadata/workflow";
- const fetchContext = useFetchContext();
-
- return useMutation(
- ({ body, isNew }) =>
- fetchWithContext(path, fetchContext, {
- method: isNew ? "post" : "put",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify(isNew ? body : [body]),
- }),
- callbacks
- );
-}
-
-export function useSaveTask(callbacks) {
- const path = "/metadata/taskdefs";
- const fetchContext = useFetchContext();
-
- return useMutation(({ body, isNew }) => {
- return fetchWithContext(path, fetchContext, {
- method: isNew ? "post" : "put",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify(isNew ? [body] : body), // Note: application of [] is opposite of workflow
- });
- }, callbacks);
-}
From a0e731432ab90798de14fa4257712ff8ea25e73b Mon Sep 17 00:00:00 2001
From: peterlau
Date: Thu, 24 Mar 2022 10:15:35 -0700
Subject: [PATCH 10/10] Remediate dependabot warnings with forced resolutions.
Note: Remove once able to upgrade from react-scripts 4.0.3
---
ui/package.json | 6 +++++-
ui/yarn.lock | 48 ++++++++++++++----------------------------------
2 files changed, 19 insertions(+), 35 deletions(-)
diff --git a/ui/package.json b/ui/package.json
index e328d4a31f..947650415f 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -65,7 +65,11 @@
]
},
"resolutions": {
- "vis-timeline": "7.3.6"
+ "vis-timeline": "7.3.6",
+ "immer": "^9.0.6",
+ "ansi-html": "^0.0.8",
+ "glob-parent": "^5.1.2",
+ "node-forge": "^1.3.0"
},
"devDependencies": {
"@testing-library/dom": "^8.2.0",
diff --git a/ui/yarn.lock b/ui/yarn.lock
index c127f74018..3d9cefa80e 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -2715,10 +2715,10 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
dependencies:
type-fest "^0.21.3"
-ansi-html@0.0.7, ansi-html@^0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
- integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
+ansi-html@0.0.7, ansi-html@^0.0.7, ansi-html@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.8.tgz#e969db193b12bcdfa6727b29ffd8882dc13cc501"
+ integrity sha512-QROYz1I1Kj+8bTYgx0IlMBpRSCIU+7GjbE0oH+KF7QKc+qSF8YAlIutN59Db17tXN70Ono9upT9Ht0iG93W7ug==
ansi-regex@^2.0.0:
version "2.1.1"
@@ -6725,15 +6725,7 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -7296,10 +7288,10 @@ ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
-immer@8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
- integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==
+immer@8.0.1, immer@^9.0.6:
+ version "9.0.12"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20"
+ integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==
immutability-helper@^3.1.1:
version "3.1.1"
@@ -7639,7 +7631,7 @@ is-extendable@^1.0.1:
dependencies:
is-plain-object "^2.0.4"
-is-extglob@^2.1.0, is-extglob@^2.1.1:
+is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
@@ -7659,13 +7651,6 @@ is-generator-fn@^2.0.0:
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
@@ -9533,10 +9518,10 @@ node-environment-flags@1.0.5:
object.getownpropertydescriptors "^2.0.3"
semver "^5.7.0"
-node-forge@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
- integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+node-forge@^0.10.0, node-forge@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.0.tgz#37a874ea723855f37db091e6c186e5b67a01d4b2"
+ integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==
node-int64@^0.4.0:
version "0.4.0"
@@ -10090,11 +10075,6 @@ path-browserify@0.0.1:
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
path-exists@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"